diff --git a/package-lock.json b/package-lock.json index c42aa688..5bfa38e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2761,6 +2761,21 @@ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2778,6 +2793,40 @@ "strip-ansi": "^7.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, "strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -2787,6 +2836,23 @@ "ansi-regex": "^6.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } + } + }, "wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -2797,6 +2863,60 @@ "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } } } }, @@ -3560,6 +3680,11 @@ "dev": true, "optional": true }, + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, "@probe.gl/env": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/@probe.gl/env/-/env-3.6.0.tgz", @@ -4028,6 +4153,11 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@tweenjs/tween.js": { + "version": "23.1.2", + "resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-23.1.2.tgz", + "integrity": "sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==" + }, "@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -4969,17 +5099,6 @@ "color-convert": "^2.0.1" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz", @@ -5023,26 +5142,12 @@ "universalify": "^0.1.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", @@ -5052,18 +5157,6 @@ "graceful-fs": "^4.1.6" } }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "minipass": { "version": "3.3.6", "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", @@ -5102,28 +5195,6 @@ "ansi-regex": "^5.0.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -5709,6 +5780,11 @@ "negotiator": "0.6.3" } }, + "accessor-fn": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/accessor-fn/-/accessor-fn-1.5.0.tgz", + "integrity": "sha512-dml7D96DY/K5lt4Ra2jMnpL9Bhw5HEGws4p1OAIxFFj9Utd/RxNfEO3T3f0QIWFNwQU7gNxH9snUfqF/zNkP/w==" + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", @@ -6552,6 +6628,11 @@ "tweetnacl": "^0.14.3" } }, + "bezier-js": { + "version": "6.1.4", + "resolved": "https://registry.npmmirror.com/bezier-js/-/bezier-js-6.1.4.tgz", + "integrity": "sha512-PA0FW9ZpcHbojUCMu28z9Vg/fNkwTj5YhusSAjHHDfHDGLxJ6YUKrAN2vk1fP2MMOxVw4Oko16FMlRGVBGqLKg==" + }, "bfj": { "version": "6.1.2", "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz", @@ -7093,6 +7174,14 @@ "integrity": "sha512-J/jkFgsQ3NEl4w2lCoM9ZPxrD+FoBNJ7uJUpGVjIg/j0OwJosWM36EPDv+Yyi0V4twBk9pPmlFS+PLykgEvUmg==", "dev": true }, + "canvas-color-tracker": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/canvas-color-tracker/-/canvas-color-tracker-1.2.1.tgz", + "integrity": "sha512-i5clg2pEdaWqHuEM/B74NZNLkHh5+OkXbA/T4iaBiaNDagkOCXkLNrhqUfdUugsRwuaNRU20e/OygzxWRor3yg==", + "requires": { + "tinycolor2": "^1.6.0" + } + }, "capture-exit": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/capture-exit/-/capture-exit-2.0.0.tgz", @@ -8779,6 +8868,43 @@ "type": "^1.0.1" } }, + "d3": { + "version": "7.9.0", + "resolved": "https://registry.npmmirror.com/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, "d3-array": { "version": "3.2.4", "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz", @@ -8787,21 +8913,94 @@ "internmap": "1 - 2" } }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-binarytree": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/d3-binarytree/-/d3-binarytree-1.0.2.tgz", + "integrity": "sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, "d3-color": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmmirror.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "requires": { + "delaunator": "5" + } + }, "d3-dispatch": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, "d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, "d3-force": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz", @@ -8812,6 +9011,23 @@ "d3-timer": "1 - 3" } }, + "d3-force-3d": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/d3-force-3d/-/d3-force-3d-3.0.5.tgz", + "integrity": "sha512-tdwhAhoTYZY/a6eo9nR7HP3xSW/C6XvJTbeRpR92nlPzH6OiE+4MliN9feuSFd0tPtEUo+191qOhCTWx3NYifg==", + "requires": { + "d3-binarytree": "1", + "d3-dispatch": "1 - 3", + "d3-octree": "1", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, "d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.0.tgz", @@ -8830,6 +9046,11 @@ "d3-geo": "1.12.0 - 3" } }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, "d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -8838,16 +9059,81 @@ "d3-color": "1 - 3" } }, + "d3-octree": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/d3-octree/-/d3-octree-1.0.2.tgz", + "integrity": "sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA==" + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, "d3-quadtree": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, "d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, "d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", @@ -8865,6 +9151,18 @@ "d3-timer": "1 - 3" } }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, "dagre": { "version": "0.8.5", "resolved": "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz", @@ -9164,6 +9462,14 @@ } } }, + "delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "requires": { + "robust-predicates": "^3.0.2" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -9589,13 +9895,6 @@ "lodash-unified": "^1.0.2", "memoize-one": "^6.0.0", "normalize-wheel-es": "^1.2.0" - }, - "dependencies": { - "@popperjs/core": { - "version": "npm:@sxzz/popperjs-es@2.11.7", - "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" - } } }, "element-resize-detector": { @@ -11087,6 +11386,27 @@ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, + "force-graph": { + "version": "1.43.5", + "resolved": "https://registry.npmmirror.com/force-graph/-/force-graph-1.43.5.tgz", + "integrity": "sha512-HveLELh9yhZXO/QOfaFS38vlwJZ/3sKu+jarfXzRmbmihSOH/BbRWnUvmg8wLFiYy6h4HlH4lkRfZRccHYmXgA==", + "requires": { + "@tweenjs/tween.js": "18 - 23", + "accessor-fn": "1", + "bezier-js": "3 - 6", + "canvas-color-tracker": "1", + "d3-array": "1 - 3", + "d3-drag": "2 - 3", + "d3-force-3d": "2 - 3", + "d3-scale": "1 - 4", + "d3-scale-chromatic": "1 - 3", + "d3-selection": "2 - 3", + "d3-zoom": "2 - 3", + "index-array-by": "1", + "kapsule": "^1.14", + "lodash-es": "4" + } + }, "foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.1.1.tgz", @@ -12378,6 +12698,11 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, + "index-array-by": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/index-array-by/-/index-array-by-1.4.1.tgz", + "integrity": "sha512-Zu6THdrxQdyTuT2uA5FjUoBEsFHPzHcPIj18FszN6yXKHxSfGcR4TPLabfuT//E25q1Igyx9xta2WMvD/x9P/g==" + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz", @@ -12779,6 +13104,12 @@ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -15152,6 +15483,14 @@ "verror": "1.10.0" } }, + "kapsule": { + "version": "1.14.5", + "resolved": "https://registry.npmmirror.com/kapsule/-/kapsule-1.14.5.tgz", + "integrity": "sha512-H0iSpTynUzZw3tgraDmReprpFRmH5oP5GPmaNsurSwLx2H5iCpOMIkp5q+sfhB4Tz/UJd1E1IbEE9Z6ksnJ6RA==", + "requires": { + "lodash-es": "4" + } + }, "kdbush": { "version": "4.0.2", "resolved": "https://registry.npmmirror.com/kdbush/-/kdbush-4.0.2.tgz", @@ -19030,6 +19369,11 @@ "inherits": "^2.0.1" } }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmmirror.com/rsvp/-/rsvp-4.8.5.tgz", @@ -20159,46 +20503,6 @@ } } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "string.prototype.trim": { "version": "1.2.8", "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", @@ -20248,23 +20552,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", @@ -22115,6 +22402,94 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-router": { "version": "4.2.5", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", @@ -23012,81 +23387,6 @@ } } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 4dbe3cac..5a2d05ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cn", - "version": "0.1.0", + "version": "24.4.0", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -18,10 +18,12 @@ "babel-plugin-lodash": "~3.3.0", "codemirror": "^5.65.1", "core-js": "~3.31.0", + "d3": "^7.9.0", "dayjs": "^1.10.5", "dexie": "~3.2.0", "echarts": "^5.1.1", "element-plus": "^2.5.1", + "force-graph": "^1.43.5", "h3-js": "~3.7.2", "lib-flexible": "^0.3.2", "lodash": "^4.17.21", diff --git a/public/images/entity-symbol/app-colored.svg b/public/images/entity-symbol/app-colored.svg new file mode 100644 index 00000000..ba0c71e8 --- /dev/null +++ b/public/images/entity-symbol/app-colored.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/app.svg b/public/images/entity-symbol/app.svg new file mode 100644 index 00000000..313b0268 --- /dev/null +++ b/public/images/entity-symbol/app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/domain-colored.svg b/public/images/entity-symbol/domain-colored.svg new file mode 100644 index 00000000..dd83f1db --- /dev/null +++ b/public/images/entity-symbol/domain-colored.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/domain-colored2.svg b/public/images/entity-symbol/domain-colored2.svg new file mode 100644 index 00000000..2bc41292 --- /dev/null +++ b/public/images/entity-symbol/domain-colored2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/domain.svg b/public/images/entity-symbol/domain.svg new file mode 100644 index 00000000..5944d4e1 --- /dev/null +++ b/public/images/entity-symbol/domain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/ip-colored.svg b/public/images/entity-symbol/ip-colored.svg new file mode 100644 index 00000000..9d5dcf23 --- /dev/null +++ b/public/images/entity-symbol/ip-colored.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/entity-symbol/ip.svg b/public/images/entity-symbol/ip.svg new file mode 100644 index 00000000..326dd5e3 --- /dev/null +++ b/public/images/entity-symbol/ip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/css/components/views/entityExplorer/entity-graph.scss b/src/assets/css/components/views/entityExplorer/entity-graph.scss index e23434f1..529f019c 100644 --- a/src/assets/css/components/views/entityExplorer/entity-graph.scss +++ b/src/assets/css/components/views/entityExplorer/entity-graph.scss @@ -1,6 +1,3 @@ -$color-business: var(--el-color-business); -$color-primary: var(--el-text-color-primary); -$color-regular: var(--el-text-color-regular); .graph-toolbar { position: fixed; top: 100px; @@ -18,13 +15,12 @@ $color-regular: var(--el-text-color-regular); cursor: pointer; i { - color: $color-regular; + color: #575757; font-size: 18px; } &.toolbar--unactivated { - cursor: default; - + cursor: not-allowed; i { opacity: .4; } @@ -32,24 +28,137 @@ $color-regular: var(--el-text-color-regular); } } } - .entity-graph { display: flex; - + background-color:'orange'; + border: 'solid 5px red'; .entity-graph__chart { width: 100%; + height:100%; + overflow: hidden; + .force-graph-container .graph-tooltip { + padding: 8px 10px; + //border-radius: 10px; + background-color: white; + box-shadow: -1px 1px 10px -1px rgba(205,205,205,0.85); + + .primary-node-tooltip { + padding: 5px; + + .tooltip__header { + display: flex; + align-items: center; + + i { + color: #717171; + font-size: 14px; + } + .tooltip__title { + padding-left: 6px; + font-size: 15px; + line-height: 15px; + color: #111; + } + } + .tooltip__content { + padding-top: 10px; + color: #222; + font-size: 12px; + + span:first-of-type { + padding-right: 20px; + } + } + } + .entity-node-tooltip { + width: 300px; + padding: 5px; + + .tooltip__header { + display: flex; + align-items: center; + margin-bottom: 20px; + + .tooltip__title { + font-size: 15px; + line-height: 15px; + color: #111; + } + } + + .tooltip__content { + display: flex; + flex-direction: column; + + .content-header { + display: flex; + align-items: center; + + .header-icon { + width: 3px !important; + height: 12px !important; + background: #38ACD2; + border-radius: 1px; + margin-right: 6px; + } + } + .content-tag-list { + display: flex; + align-items: flex-start; + flex-wrap: wrap; + + .entity-tag { + margin: 10px 9px 10px 0; + padding: 0 8px; + height: 20px; + font-size: 12px; + border: 1px solid; + border-radius: 2px; + + $normal-color: #778391; + $normal-light-color: #F7F8F9; + $negative-color: #E26154; + $negative-light-color: #FEF6F5; + $positive-color: #749F4D; + $positive-light-color: #F7FAF5; + &.entity-tag--level-two-normal { + border-color: $normal-color; + color: $normal-color; + background-color: $normal-light-color; + } + &.entity-tag--level-two-negative { + border-color: $negative-color; + color: $negative-color; + background-color: $negative-light-color; + } + &.entity-tag--level-two-positive { + border-color: $positive-color; + color: $positive-color; + background-color: $positive-light-color; + } + } + } + } + } + } + .force-graph-container { + //height:100% !important; + canvas { + //height:100% !important; + } + } .graph-node { display: flex; flex-direction: column; align-items: center; background-color: transparent !important; - transition: linear all var(--el-transition-duration-fast); + transition: linear all .2s; .graph-node__text { width: 120px; font-size: 12px; - color: $color-primary; + color: #353636; } &.graph-node--root { @@ -62,38 +171,30 @@ $color-regular: var(--el-text-color-regular); box-shadow: none; animation: none; } - &.graph-node--ip { - border-color: var(--el-color-success-light-5) !important; - box-shadow: 0 0 0 8px rgba(126, 159, 84, 0.14); - + border-color: #CBD9BB !important; + box-shadow: 0 0 0 8px rgba(126,159,84,0.14); i { - color: var(--el-color-success); + color: #7E9F54; } } - &.graph-node--domain { - border-color: var(--el-color-primary-light-7) !important; - box-shadow: 0 0 0 8px rgba(56, 172, 210, 0.14); - + border-color: #AFDEED !important; + box-shadow: 0 0 0 8px rgba(56,172,210,0.14); i { - color: $color-business; + color: #38ACD2; } } - &.graph-node--app { - border-color: var(--el-color-warning-light-5) !important; - box-shadow: 0 0 0 8px rgba(229, 162, 25, 0.14); - + border-color: #F5DAA3 !important; + box-shadow: 0 0 0 8px rgba(229,162,25,0.14); i { - color: var(--el-color-warning); + color: #E5A219; } } - i { font-size: 36px; } - .graph-node__text { padding-top: 30px; } @@ -103,21 +204,19 @@ $color-regular: var(--el-text-color-regular); padding-top: 20px; width: 66px; height: 66px; - border: 1px solid #A7B0B9 !important; // 该class并未使用到 + border: 1px solid #A7B0B9 !important; box-shadow: none; // 覆盖自带的node点击效果 &.rel-node-checked { - box-shadow: 0 0 0 5px rgba(151, 151, 151, 0.21); + box-shadow: 0 0 0 5px rgba(151,151,151,0.21); animation: none; - border-color: $color-regular !important; + border-color: #778391 !important; } - i { font-size: 24px; - color: $color-regular; + color: #778391; } - .graph-node__text { padding-top: 24px; } @@ -131,22 +230,19 @@ $color-regular: var(--el-text-color-regular); &.graph-node--ip { i { - color: var(--el-color-success); + color: #7E9F54; } } - &.graph-node--domain { i { - color: $color-business; + color: #38ACD2; } } - &.graph-node--app { i { - color: var(--el-color-warning); + color: #E5A219; } } - i { font-size: 21px; } @@ -159,7 +255,6 @@ $color-regular: var(--el-text-color-regular); left: unset !important; right: 0 !important; } - .entity-graph__detail { height: calc(100% - 100px) !important; top: 100px !important; @@ -170,7 +265,7 @@ $color-regular: var(--el-text-color-regular); } .g6-component-tooltip { - box-shadow: -1px 1px 10px -1px rgba(205, 205, 205, 0.85); + box-shadow: -1px 1px 10px -1px rgba(205,205,205,0.85); .primary-node-tooltip { padding: 5px; @@ -180,21 +275,19 @@ $color-regular: var(--el-text-color-regular); align-items: center; i { - color: $color-regular; + color: #717171; font-size: 14px; } - .tooltip__title { padding-left: 6px; font-size: 15px; line-height: 15px; - color: $color-primary; + color: #111; } } - .tooltip__content { padding-top: 10px; - color: $color-primary; + color: #222; font-size: 12px; span:first-of-type { @@ -202,7 +295,6 @@ $color-regular: var(--el-text-color-regular); } } } - .entity-node-tooltip { width: 300px; padding: 5px; @@ -215,7 +307,7 @@ $color-regular: var(--el-text-color-regular); .tooltip__title { font-size: 15px; line-height: 15px; - color: $color-primary; + color: #111; } } @@ -230,12 +322,11 @@ $color-regular: var(--el-text-color-regular); .header-icon { width: 3px !important; height: 12px !important; - background: $color-business; + background: #38ACD2; border-radius: 1px; margin-right: 6px; } } - .content-tag-list { display: flex; align-items: flex-start; @@ -249,25 +340,22 @@ $color-regular: var(--el-text-color-regular); border: 1px solid; border-radius: 2px; - $normal-color: $color-regular; - $normal-light-color: var(--el-fill-color-light); - $negative-color: var(--el-color-danger); - $negative-light-color: var(--el-color-danger-light-9); - $positive-color: var(--el-color-success); - $positive-light-color: var(--el-color-success-light-9); - + $normal-color: #778391; + $normal-light-color: #F7F8F9; + $negative-color: #E26154; + $negative-light-color: #FEF6F5; + $positive-color: #749F4D; + $positive-light-color: #F7FAF5; &.entity-tag--level-two-normal { border-color: $normal-color; color: $normal-color; background-color: $normal-light-color; } - &.entity-tag--level-two-negative { border-color: $negative-color; color: $negative-color; background-color: $negative-light-color; } - &.entity-tag--level-two-positive { border-color: $positive-color; color: $positive-color; diff --git a/src/assets/css/components/views/entityExplorer/graphRightListBlock.scss b/src/assets/css/components/views/entityExplorer/graphRightListBlock.scss index ed895195..5724b61a 100644 --- a/src/assets/css/components/views/entityExplorer/graphRightListBlock.scss +++ b/src/assets/css/components/views/entityExplorer/graphRightListBlock.scss @@ -19,7 +19,7 @@ $color-regular: var(--el-text-color-regular); .graph-list-header-icon { font-size: 21px; - color: $color-regular; + color: #778391; margin-right: 9px; } } @@ -50,13 +50,10 @@ $color-regular: var(--el-text-color-regular); border-radius: 3px; font-size: 12px; color: var(--el-color-white); - display: flex; - align-items: center; - justify-content: center; - font-weight: 500; - padding: 14px 10px; + padding: 8px 10px; cursor: pointer; - border: 1px solid rgba(46, 136, 166, 0.85); + border: 1px solid var(--el-color-business); + text-align: center; i { font-size: 16px; diff --git a/src/views/entityExplorer/EntityGraph.vue b/src/views/entityExplorer/EntityGraph.vue index cb18ab3e..a665d5f9 100644 --- a/src/views/entityExplorer/EntityGraph.vue +++ b/src/views/entityExplorer/EntityGraph.vue @@ -1,12 +1,10 @@ diff --git a/src/views/entityExplorer/entityGraph/GraphEntityDetail.vue b/src/views/entityExplorer/entityGraph/GraphEntityDetail.vue index dff3acbc..6d0c2502 100644 --- a/src/views/entityExplorer/entityGraph/GraphEntityDetail.vue +++ b/src/views/entityExplorer/entityGraph/GraphEntityDetail.vue @@ -8,7 +8,7 @@
{{entityTypeName}}
-
{{ $_.get(node, 'id', '') }}
+
{{ $_.get(node, 'realId', '') }}
@@ -75,7 +75,7 @@
-
+
@@ -85,7 +85,7 @@
-
+
{{ic.value}}
@@ -126,13 +126,13 @@ export default { computed: { iconClass () { let className - switch (_.get(this.node, 'myData.entityType', '')) { + switch (_.get(this.node, 'data.entityType', '')) { case ('ip'): { - className = 'cn-icon cn-icon-ip2' + className = 'cn-icon cn-icon-resolve-ip' break } case ('domain'): { - className = 'cn-icon cn-icon-domain2' + className = 'cn-icon cn-icon-subdomain' break } case ('app'): { @@ -145,7 +145,7 @@ export default { return className }, entityTypeName () { - const type = _.get(this.node, 'myData.entityType', '') + const type = _.get(this.node, 'data.entityType', '') let entityTypeName = '-' switch (type) { case ('ip'): { @@ -270,59 +270,59 @@ export default { }, handleDetailData (node) { const n = node - const type = _.get(n, 'myData.entityType', '') + const type = _.get(n, 'data.entityType', '') switch (type) { case 'ip': { this.detailCards = [ - { name: 'asn', label: this.$t('entities.asNumber'), value: _.get(n, 'myData.basicInfo.asn.asn', '-') }, + { name: 'asn', label: this.$t('entities.asNumber'), value: _.get(n, 'data.basicInfo.asn.asn', '-') }, { name: 'asOrg', label: this.$t('entities.asOrg'), - value: _.get(n.myData, 'basicInfo.asn.organization', '-') + value: _.get(n.data, 'basicInfo.asn.organization', '-') }, { name: 'isp', label: this.$t('entities.graph.isp'), - value: _.get(n.myData, 'basicInfo.location.isp', '-') + value: _.get(n.data, 'basicInfo.location.isp', '-') }, - { name: 'location', label: this.$t('overall.location'), value: this.location(n.myData) } + { name: 'location', label: this.$t('overall.location'), value: this.location(n.data) } ] this.relationList = [ { icon: 'cn-icon cn-icon-subdomain', name: 'domain', label: this.$t('entity.graph.resolveDomain'), - value: _.get(n.myData, 'relatedEntity.domain.list', []).length, - total: _.get(n.myData, 'relatedEntity.domain.total', 0) || 0 + value: _.get(n.data, 'relatedEntities.domain.list', []).length, + total: _.get(n.data, 'relatedEntities.domain.total', 0) || 0 }, { icon: 'cn-icon cn-icon-app-name', name: 'app', label: this.$t('entities.tab.relatedApp'), - value: _.get(n.myData, 'relatedEntity.app.list', []).length, - total: _.get(n.myData, 'relatedEntity.app.total', '0') || 0 + value: _.get(n.data, 'relatedEntities.app.list', []).length, + total: _.get(n.data, 'relatedEntities.app.total', '0') || 0 } ] break } case 'domain': { - const expireDate = _.get(n.myData, 'basicInfo.whois.expireDate', '') - const createDate = _.get(n.myData, 'basicInfo.whois.createDate', '') + const expireDate = _.get(n.data, 'basicInfo.whois.expireDate', '') + const createDate = _.get(n.data, 'basicInfo.whois.createDate', '') this.detailCards = [ { name: 'categoryName', label: this.$t('entities.category'), - value: _.get(n.myData, 'basicInfo.category.categoryName', '-') + value: _.get(n.data, 'basicInfo.category.categoryName', '-') }, { name: 'categoryGroup', label: this.$t('entities.group'), - value: _.get(n.myData, 'basicInfo.category.categoryGroup', '-') + value: _.get(n.data, 'basicInfo.category.categoryGroup', '-') }, { name: 'reputationLevel', label: this.$t('entities.creditLevel2'), - value: _.get(n.myData, 'basicInfo.category.reputationLevel', '-') + value: _.get(n.data, 'basicInfo.category.reputationLevel', '-') }, { name: 'expireDate', @@ -332,17 +332,17 @@ export default { { name: 'registrarName', label: this.$t('entities.registrar'), - value: _.get(n.myData, 'basicInfo.whois.registrarName', '-') + value: _.get(n.data, 'basicInfo.whois.registrarName', '-') }, { name: 'registrantOrg', label: this.$t('entities.registry'), - value: _.get(n.myData, 'basicInfo.whois.registrantOrg', '-') + value: _.get(n.data, 'basicInfo.whois.registrantOrg', '-') }, { name: 'registrantCountry', label: this.$t('entities.registrationCountry'), - value: _.get(n.myData, 'basicInfo.whois.registrantCountry', '-') + value: _.get(n.data, 'basicInfo.whois.registrantCountry', '-') }, { name: 'createDate', @@ -352,7 +352,7 @@ export default { { name: 'email', label: this.$t('entities.registryEmail'), - value: _.get(n.myData, 'basicInfo.whois.email', '-') + value: _.get(n.data, 'basicInfo.whois.email', '-') } ] this.relationList = [ @@ -360,22 +360,22 @@ export default { icon: 'cn-icon cn-icon-resolve-ip', name: 'ip', label: this.$t('entities.graph.resolveIp'), - value: _.get(n.myData, 'relatedEntity.ip.list', []).length, - total: _.get(n.myData, 'relatedEntity.ip.total', '0') || 0 + value: _.get(n.data, 'relatedEntities.ip.list', []).length, + total: _.get(n.data, 'relatedEntities.ip.total', '0') || 0 }, { icon: 'cn-icon cn-icon-subdomain', name: 'domain', label: this.$t('entities.subdomain'), - value: _.get(n.myData, 'relatedEntity.domain.list', []).length, - total: _.get(n.myData, 'relatedEntity.domain.total', '0') || 0 + value: _.get(n.data, 'relatedEntities.domain.list', []).length, + total: _.get(n.data, 'relatedEntities.domain.total', '0') || 0 }, { icon: 'cn-icon cn-icon-app-name', name: 'app', label: this.$t('entities.tab.relatedApp'), - value: _.get(n.myData, 'relatedEntity.app.list', []).length, - total: _.get(n.myData, 'relatedEntity.app.total', 0) || 0 + value: _.get(n.data, 'relatedEntities.app.list', []).length, + total: _.get(n.data, 'relatedEntities.app.total', 0) || 0 } ] break @@ -385,32 +385,32 @@ export default { { name: 'appCategory', label: this.$t('entities.category'), - value: _.get(n.myData, 'basicInfo.category.appCategory', '-') + value: _.get(n.data, 'basicInfo.category.appCategory', '-') }, { name: 'appSubcategory', label: this.$t('entities.subcategory'), - value: _.get(n.myData, 'basicInfo.category.appSubcategory', '-') + value: _.get(n.data, 'basicInfo.category.appSubcategory', '-') }, { name: 'appRisk', label: this.$t('entities.riskLevel'), - value: this.appRisk(_.get(n.myData, 'basicInfo.category.appRisk', '-')) + value: this.appRisk(_.get(n.data, 'basicInfo.category.appRisk', '-')) }, { name: 'appTechnology', label: this.$t('overall.technology'), - value: _.get(n.myData, 'basicInfo.category.appTechnology', '-') + value: _.get(n.data, 'basicInfo.category.appTechnology', '-') }, { name: 'appLongname', label: this.$t('overall.appFullName'), - value: _.get(n.myData, 'basicInfo.category.appLongname', '-') + value: _.get(n.data, 'basicInfo.category.appLongname', '-') }, { name: 'appDescription', label: this.$t('config.dataSource.description'), - value: _.get(n.myData, 'basicInfo.category.appDescription', '-') + value: _.get(n.data, 'basicInfo.category.appDescription', '-') } ] @@ -419,15 +419,15 @@ export default { icon: 'cn-icon cn-icon-resolve-ip', name: 'ip', label: this.$t('entities.tab.relatedIp'), - value: _.get(n.myData, 'relatedEntity.ip.list', []).length, - total: _.get(n.myData, 'relatedEntity.ip.total', '0') || 0 + value: _.get(n.data, 'relatedEntities.ip.list', []).length, + total: _.get(n.data, 'relatedEntities.ip.total', '0') || 0 }, { icon: 'cn-icon cn-icon-subdomain', name: 'domain', label: this.$t('entities.graph.relatedDomain'), - value: _.get(n.myData, 'relatedEntity.domain.list', []).length, - total: _.get(n.myData, 'relatedEntity.domain.total', '0') || 0 + value: _.get(n.data, 'relatedEntities.domain.list', []).length, + total: _.get(n.data, 'relatedEntities.domain.total', '0') || 0 } ] } diff --git a/src/views/entityExplorer/entityGraph/GraphEntityList.vue b/src/views/entityExplorer/entityGraph/GraphEntityList.vue index 1d377e7a..8b730671 100644 --- a/src/views/entityExplorer/entityGraph/GraphEntityList.vue +++ b/src/views/entityExplorer/entityGraph/GraphEntityList.vue @@ -4,11 +4,11 @@
- + {{ title }}
- {{ $t('entity.graph.associatedCount') }}: {{$_.get(node, 'sourceNode.myData.relatedEntity.' + $_.get(node, 'myData.entityType') + '.total', '-')}} + {{ $t('entity.graph.associatedCount') }}: {{$_.get(node, 'sourceNode.data.relatedEntities.' + $_.get(node, 'data.entityType') + '.total', '-')}}
@@ -16,10 +16,10 @@
-
+ {{ $t('entity.graph.continueToExpand') }} -
+
@@ -28,14 +28,14 @@
{{ $t('entity.graph.expandedEntityCount') }}:  - {{$_.get(node, 'sourceNode.myData.relatedEntity.' + $_.get(node, 'myData.entityType') + '.list', []).length}} + {{$_.get(node, 'sourceNode.data.relatedEntities.' + $_.get(node, 'data.entityType') + '.list', []).length}}
-
+
{{ item.vertex }}
-