From b4900b23e453fdd55ef13b603d704c43b6c6f21f Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 20 Dec 2024 14:05:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9F=BA=E6=9C=AC=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 425 +++++++++++++++++++++++++++++- package.json | 2 + public/index.html | 10 + public/test.json | 125 +++++++++ scripts/vscode-package.py | 4 +- src/App.vue | 21 +- src/assets/logo.png | Bin 6849 -> 0 bytes src/components/about/index.vue | 2 +- src/components/right-nav.vue | 8 +- src/components/setting/index.vue | 67 +++++ src/components/treeview/index.vue | 44 ++++ src/hook/color.js | 92 +++++++ src/hook/css.js | 48 ++++ src/hook/global.js | 29 +- src/hook/jsdoc.js | 81 ++++++ src/hook/render/index.js | 7 + src/i18n/ar.json | 7 +- src/i18n/de.json | 7 +- src/i18n/en.json | 7 +- src/i18n/fr.json | 8 +- src/i18n/ja.json | 8 +- src/i18n/ko.json | 8 +- src/i18n/ru.json | 8 +- src/i18n/zh-cn.json | 9 +- src/i18n/zh-tw.json | 9 +- 25 files changed, 1002 insertions(+), 34 deletions(-) create mode 100644 public/test.json delete mode 100644 src/assets/logo.png create mode 100644 src/hook/color.js create mode 100644 src/hook/css.js create mode 100644 src/hook/jsdoc.js create mode 100644 src/hook/render/index.js diff --git a/package-lock.json b/package-lock.json index 2f97977..ab4dfd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,9 @@ "version": "0.1.0", "dependencies": { "core-js": "^3.8.3", + "d3": "^7.9.0", "element-plus": "^2.9.1", + "elkjs": "^0.9.3", "mitt": "^3.0.1", "vue": "^3.2.13", "vue-i18n": "10.0.5" @@ -4662,6 +4664,395 @@ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", @@ -4890,6 +5281,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", @@ -5115,6 +5514,11 @@ "vue": "^3.2.0" } }, + "node_modules/elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6774,6 +7178,14 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -9497,6 +9909,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9520,6 +9937,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9543,8 +9965,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/schema-utils": { "version": "2.7.1", diff --git a/package.json b/package.json index 2f2cc37..c77471c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,9 @@ }, "dependencies": { "core-js": "^3.8.3", + "d3": "^7.9.0", "element-plus": "^2.9.1", + "elkjs": "^0.9.3", "mitt": "^3.0.1", "vue": "^3.2.13", "vue-i18n": "10.0.5" diff --git a/public/index.html b/public/index.html index 61495cd..ee3f957 100644 --- a/public/index.html +++ b/public/index.html @@ -8,9 +8,19 @@
Rz$KlnO_H2c< z(XX#lPuW_%H#Q+c&(nRyX1-Ia dKR-%$4FYC0fsCmL9ky3 zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#` z2QhvH5w&V;wER?mopu+nqu*n8p~(%Q kwSs&*0eJwa zMXR05`OSFpfyRb! Y_+H@O%Y z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6 zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o z$=#_=aBkhe(ifX}MLT()@5? OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{ z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX zoI=B}+$R22&IL`NCYUYjrdhwjnM x_v=-Qcx-jmtN>!Zqf|n1^SWrHy zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez z={AM*r-bQs6*z$!*V A4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz! z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K zXQr#6H}>a-GYs9^bG P2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9 zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#( LgacooD z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0 zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH; zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK =t# z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB zHBol OHYBas@&{PT=R+?d8pZu zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86 z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1 zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~ zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0F B z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72yd rFvm`R j-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc# z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S )4^*t8Va3HR zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOM lK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C z3HR9ssH7a&Vr<6waJrUzdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N zQUR>oadnG17#hNc$pkTp+9 lW+MBKHRZ~7 4XWUryd)4yd zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T z9rrj=?I H*qI5{G@Rn&}^Z{+TW}mQe b9=8b<_a`&Cm#n%n~ zU47MvCBsdXFB1+adOO)03+nczfWa#vwk #r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A zrRQ~(Ygh_ebltHo1VC bJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{ *ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16 zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^ 4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?- - +
diff --git a/src/components/right-nav.vue b/src/components/right-nav.vue index cbda8f7..63c3126 100644 --- a/src/components/right-nav.vue +++ b/src/components/right-nav.vue @@ -2,7 +2,7 @@-@@ -38,12 +38,6 @@ import { emitter } from '@/hook/global'; import { controlPanel } from './right-nav'; defineComponent({ name: 'right-nav' }); -const props = defineProps({ - topModules: { - type: Array, - required: true - } -}); emitter.on('right-nav', index => { diff --git a/src/components/setting/index.vue b/src/components/setting/index.vue index 2ade73c..315d46f 100644 --- a/src/components/setting/index.vue +++ b/src/components/setting/index.vue @@ -46,6 +46,73 @@ diff --git a/src/components/treeview/index.vue b/src/components/treeview/index.vue index e69de29..fa5772a 100644 --- a/src/components/treeview/index.vue +++ b/src/components/treeview/index.vue @@ -0,0 +1,44 @@ + + ++ + + + + \ No newline at end of file diff --git a/src/hook/color.js b/src/hook/color.js new file mode 100644 index 0000000..b7fa996 --- /dev/null +++ b/src/hook/color.js @@ -0,0 +1,92 @@ +/** + * @typedef {Object} RgbColor + * @property {number} r + * @property {number} g + * @property {number} b + */ + +/** + * @description 解析 rgb 字符串 + * @param {string} colorString 形如 #1e90ff 或者 rgba(0, 206, 209, 1) 这样的字符串 + * @returns {RgbColor | undefined} + */ +export function parseColor(colorString) { + // 检查是否是十六进制颜色 + if (colorString.startsWith('#')) { + let hex = colorString.slice(1); + if (hex.length === 3) { + hex = hex.split('').map(c => c + c).join(''); + } + const r = parseInt(hex.slice(0, 2), 16); + const g = parseInt(hex.slice(2, 4), 16); + const b = parseInt(hex.slice(4, 6), 16); + return { r, g, b }; + } + // 检查是否是 RGBA 颜色 + else if (colorString.startsWith('rgba')) { + const matches = colorString.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+(\.\d+)?)\)/); + if (matches) { + const r = parseInt(matches[1], 10); + const g = parseInt(matches[2], 10); + const b = parseInt(matches[3], 10); + return { r, g, b }; + } + } + // 检查是否是 RGB 颜色 + else if (colorString.startsWith('rgb')) { + const matches = colorString.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + if (matches) { + const r = parseInt(matches[1], 10); + const g = parseInt(matches[2], 10); + const b = parseInt(matches[3], 10); + return { r, g, b }; + } + } + + return undefined; +} + +/** + * @description 提升颜色的亮度 + * @param {RgbColor} rgb + * @param {number} percent 0 - 100 的数字,代表增强的亮度比例 + * @returns {RgbColor} + */ +export function increaseBrightness(rgb, percent) { + // 确保 percent 在 0 到 100 之间 + percent = Math.max(0, Math.min(100, percent)); + + // 计算每个颜色分量的增量 + const increment = (percent / 100) * 255; + + // 提升每个颜色分量的亮度 + const r = Math.min(255, Math.round(rgb.r + increment)); + const g = Math.min(255, Math.round(rgb.g + increment)); + const b = Math.min(255, Math.round(rgb.b + increment)); + + return { r, g, b }; +} + + +/** + * @description gamma 修正 + * @param {number} c 颜色通道值,取值范围为 0 - 255 + */ +function gammaCorrected(c) { + c /= 255; + return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4); +} + +/** + * @description 判断是否为亮色主题 + * @param {number} r + * @param {number} g + * @param {number} b + */ +export function isLightColorTheme(r, g, b) { + r = gammaCorrected(r); + g = gammaCorrected(g); + b = gammaCorrected(b); + const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b; + return luminance > 0.5; +} \ No newline at end of file diff --git a/src/hook/css.js b/src/hook/css.js new file mode 100644 index 0000000..2ad9ef1 --- /dev/null +++ b/src/hook/css.js @@ -0,0 +1,48 @@ +import { isLightColorTheme, parseColor } from "./color"; +import { globalSetting } from "./global"; + +export function setDefaultCss() { + // 改变默认颜色 + document.body.style.setProperty('--el-color-primary', 'var(--main-color)'); + document.body.style.setProperty('--el-color-primary-light-9', 'var(--main-color)'); + document.body.style.setProperty('--el-color-primary-light-3', 'var(--main-color)'); + document.body.style.setProperty('--el-text-color-secondary', 'var(--foreground)'); + document.body.style.setProperty('--el-text-color-regular', 'var(--foreground)'); + document.body.style.setProperty('--el-border-color', 'var(--vscode-focusBorder)'); + document.body.style.setProperty('--el-fill-color-blank', 'var(--sidebar)'); + document.body.style.setProperty('--el-fill-color-light', 'var(--vscode-button-hoverBackground)'); + document.body.style.setProperty('--el-switch-on-color', 'var(--main-color)'); + document.body.style.setProperty('--el-border', 'var(--sidebar)'); + document.body.style.setProperty('--el-border-color-light', 'var(--sidebar)'); + document.body.style.setProperty('--el-border-color-lighter', 'var(--sidebar)'); + document.body.style.setProperty('--el-bg-color-overlay', 'var(--sidebar)'); + document.body.style.setProperty('--el-color-info-light-9', 'var(--vscode-focusBorder)'); + document.body.style.setProperty('--el-color-info', 'var(--foreground)'); + document.body.style.setProperty('--el-color-info-light-8', 'var(--vscode-focusBorder)'); + // document.body.style.setProperty('--el-color-white', 'var(--background)'); + + // 设置全局宏 + document.body.style.setProperty('--vcd-render-padding', '30px'); + document.body.style.setProperty('--sidebar-width', '330px'); + document.body.style.setProperty('--toolbar-height', '60px'); + + // 下面是 get style + const style = getComputedStyle(document.documentElement); + // 根据颜色亮度来设置额外的宏 + const bgColorString = style.getPropertyValue('--background'); + + const { r, g, b } = parseColor(bgColorString); + if (isLightColorTheme(r, g, b)) { + setExtraLightColorCss(); + } else { + setExtraDarkColorCss(); + } +} + +function setExtraLightColorCss() { + document.body.style.setProperty('--vline-stroke-color', '#ddd'); +} + +function setExtraDarkColorCss() { + document.body.style.setProperty('--vline-stroke-color', '#333'); +} \ No newline at end of file diff --git a/src/hook/global.js b/src/hook/global.js index d92fdfd..e933a0e 100644 --- a/src/hook/global.js +++ b/src/hook/global.js @@ -1,3 +1,30 @@ import mitt from 'mitt'; +import { reactive } from 'vue'; + + +export const emitter = mitt(); + +export const globalSetting = reactive({ + language: 'zh' +}); + +function loadSetting() { + const settingString = localStorage.getItem('setting') + try { + const setting = JSON.parse(settingString); + return setting; + } catch (error) { + return undefined; + } +} + +export const storedSetting = loadSetting(); +if (storedSetting) { + for (const key of Reflect.ownKeys(storedSetting)) { + const value = storedSetting[key]; + if (value !== undefined) { + globalSetting[key] = value; + } + } +} -export const emitter = mitt(); \ No newline at end of file diff --git a/src/hook/jsdoc.js b/src/hook/jsdoc.js new file mode 100644 index 0000000..6a3bb4b --- /dev/null +++ b/src/hook/jsdoc.js @@ -0,0 +1,81 @@ +/** + * @typedef YosysRawNet + * @property {string} creator - JSON 的创建者信息,通常是 Yosys 的版本和构建详情。 + * @property {Record+ + Mirror the unknown ++} modules - 模块名称到模块定义的映射。 + * @property {Record } [models] - 模型定义的映射(仅在使用 `-aig` 选项时存在)。 + */ + +/** + * @typedef YosysNetModule + * @property {ModuleAttribute} attributes - 模块的属性,如是否为顶层模块及其源文件。 + * @property {Record } [parameter_default_values] - 参数的默认值。 + * @property {Record } ports - 端口名称到端口定义的映射。 + * @property {Record } cells - 单元名称到单元定义的映射。 + * @property {Record } [memories] - 内存名称到内存定义的映射。 + * @property {Record } netnames - 网络名称到网络定义的映射。 + */ + +/** + * @typedef ModuleAttribute + * @property {string} top - 表示该模块是否为顶层模块(1 表示是,0 表示否)。 + * @property {string} src - 模块定义的源文件和行号。 + * @property {string} [dynports] - 动态端口标志(1 表示是,0 表示否)。 + * @property {string} [hdlname] - HDL 名称。 + */ + +/** + * @typedef YosysPort + * @property {string} direction - 端口的方向(例如 "input"、"output" 或 "inout")。 + * @property {number[]} bits - 与端口关联的位索引。 + * @property {number} [offset] - 使用的最低位索引(如果非 0)。 + * @property {number} [upto] - 如果端口位索引是 MSB-first,则为 1。 + * @property {number} [signed] - 如果端口是有符号的,则为 1。 + */ + +/** + * @typedef YosysCell + * @property {number} hide_name - 是否隐藏单元名称(1 表示是,0 表示否)。 + * @property {string} type - 单元的类型(例如 "$_AND_" 或 "$_XOR_")。 + * @property {string} [model] - AIG 模型名称(仅在使用 `-aig` 选项时存在)。 + * @property {Record } [parameters] - 与单元关联的参数(如果有)。 + * @property {CellAttribute} attributes - 单元的属性,如源文件和行号。 + * @property {Record } port_directions - 端口名称到端口方向的映射(例如 "input"、"output" 或 "inout")。 + * @property {Record } connections - 端口名称到连接位索引的映射。 + */ + +/** + * @typedef CellAttribute + * @property {string} src - 单元定义的源文件和行号。 + */ + +/** + * @typedef YosysMemory + * @property {number} hide_name - 是否隐藏内存名称(1 表示是,0 表示否)。 + * @property {Record } attributes - 内存的属性。 + * @property {number} width - 内存的宽度。 + * @property {number} start_offset - 最低有效内存地址。 + * @property {number} size - 内存的大小。 + */ + +/** + * @typedef YosysNetname + * @property {number} hide_name - 是否隐藏网络名称(1 表示是,0 表示否)。 + * @property {number[]} bits - 与网络名称关联的位索引。 + * @property {number} [offset] - 使用的最低位索引(如果非 0)。 + * @property {number} [upto] - 如果端口位索引是 MSB-first,则为 1。 + * @property {number} [signed] - 如果端口是有符号的,则为 1。 + */ + +/** + * @typedef YosysModel + * @property {Array >} [model_name] - AIG 模型的节点列表。 + */ + +/** + * @typedef YosysAIGNode + * @property {string} type - 节点类型(例如 "port"、"nport"、"and"、"nand"、"true"、"false")。 + * @property {string} [portname] - 端口名称(如果节点类型为 "port" 或 "nport")。 + * @property {number} [bitindex] - 位索引(如果节点类型为 "port" 或 "nport")。 + * @property {number} [node_index] - 节点索引(如果节点类型为 "and" 或 "nand")。 + * @property {Array } [out_list] - 输出端口名称和位索引的列表。 + */ \ No newline at end of file diff --git a/src/hook/render/index.js b/src/hook/render/index.js new file mode 100644 index 0000000..3a5624e --- /dev/null +++ b/src/hook/render/index.js @@ -0,0 +1,7 @@ +import * as d3 from 'd3'; + +class NetlistRender { + constructor() { + + } +} \ No newline at end of file diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 8f5a496..d0b6329 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -3,5 +3,10 @@ "general-setting": "عام", "appearance-setting": "المظهر", "current-version": "الإصدار الحالي", - "copyright": "حقوق النشر مملوكة لفريق مشروع Digital-IDE، نرحب بـ Star." + "copyright": "حقوق النشر مملوكة لفريق مشروع Digital-IDE، نرحب بـ Star.", + "confirm": "تأكيد", + "cancel": "إلغاء", + "tips": "نصائح", + "language-setting": "اللغة", + "setting.language.change-dialog": "لقد قمت بتغيير اللغة إلى الصينية المبسطة، نوصي بإعادة تشغيل Netlist Viewer" } \ No newline at end of file diff --git a/src/i18n/de.json b/src/i18n/de.json index d640ed6..8cc2fa3 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -3,5 +3,10 @@ "general-setting": "Allgemein", "appearance-setting": "Aussehen", "current-version": "Aktuelle Version", - "copyright": "Dieses Software gehört dem Digital-IDE Projektteam, willkommen Star." + "copyright": "Dieses Software gehört dem Digital-IDE Projektteam, willkommen Star.", + "confirm": "Bestätigen", + "cancel": "Abbrechen", + "tips": "Tipps", + "language-setting": "Sprache", + "setting.language.change-dialog": "Sie haben die Sprache auf Chinesisch (vereinfacht) geändert, wir empfehlen Ihnen, Netlist Viewer neu zu starten" } \ No newline at end of file diff --git a/src/i18n/en.json b/src/i18n/en.json index 6365096..34f2c9f 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -3,5 +3,10 @@ "general-setting": "General", "appearance-setting": "Appearance", "current-version": "current version", - "copyright": "The copyright of this software belongs to Digital-IDE project team. Welcome to Star." + "copyright": "The copyright of this software belongs to Digital-IDE project team. Welcome to Star.", + "confirm": "confirm", + "cancel": "cancel", + "tips": "Tips", + "language-setting": "Language", + "setting.language.change-dialog": "You've switched language to English, we recommend you reload Netlist Viewer" } \ No newline at end of file diff --git a/src/i18n/fr.json b/src/i18n/fr.json index d833abb..51d87cc 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -1,8 +1,12 @@ { "info.common.hello-world": "bonjour le monde", "general-setting": "Général", - "appearance-setting": "Apparence", "current-version": "Version actuelle", - "copyright": "Les droits d'auteur appartiennent au groupe de projet Digital-IDE, bienvenue Star." + "copyright": "Les droits d'auteur appartiennent au groupe de projet Digital-IDE, bienvenue Star.", + "confirm": "Confirmer", + "cancel": "Annuler", + "tips": "Conseils", + "language-setting": "Langue", + "setting.language.change-dialog": "Vous avez changé la langue en chinois simplifié, nous vous recommandons de redémarrer Netlist Viewer" } \ No newline at end of file diff --git a/src/i18n/ja.json b/src/i18n/ja.json index 11f6d3b..1734ddb 100644 --- a/src/i18n/ja.json +++ b/src/i18n/ja.json @@ -1,8 +1,12 @@ { "info.common.hello-world": "こんにちは世界", "general-setting": "一般", - "appearance-setting": "外観", "current-version": "現在のバージョン", - "copyright": "このソフトウェアの著作権は Digital-IDE プロジェクトチームに帰属します。Star を歓迎します。" + "copyright": "このソフトウェアの著作権は Digital-IDE プロジェクトチームに帰属します。Star を歓迎します。", + "confirm": "確認", + "cancel": "キャンセル", + "tips": "ヒント", + "language-setting": "言語", + "setting.language.change-dialog": "言語を簡体字中国語に変更しました。Netlist Viewerを再起動することをお勧めします。" } \ No newline at end of file diff --git a/src/i18n/ko.json b/src/i18n/ko.json index 89446b4..30abfda 100644 --- a/src/i18n/ko.json +++ b/src/i18n/ko.json @@ -1,8 +1,12 @@ { "info.common.hello-world": "안녕하세요 세계", "general-setting": "일반", - "appearance-setting": "외관", "current-version": "현재 버전", - "copyright": "이 소프트웨어의 저작권은 Digital-IDE 프로젝트 팀에 있으며, Star를 환영합니다." + "copyright": "이 소프트웨어의 저작권은 Digital-IDE 프로젝트 팀에 있으며, Star를 환영합니다.", + "confirm": "확인", + "cancel": "취소", + "tips": "팁", + "language-setting": "언어", + "setting.language.change-dialog": "언어를 중국어 간체로 변경했습니다. Netlist Viewer를 다시 시작하는 것이 좋습니다." } \ No newline at end of file diff --git a/src/i18n/ru.json b/src/i18n/ru.json index 7d61af2..7c898d2 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -1,8 +1,12 @@ { "info.common.hello-world": "привет мир", "general-setting": "Общие", - "appearance-setting": "Внешний вид", "current-version": "Текущая версия", - "copyright": "Авторские права принадлежат проектной группе Digital-IDE, приветствуем Star." + "copyright": "Авторские права принадлежат проектной группе Digital-IDE, приветствуем Star.", + "confirm": "Подтвердить", + "cancel": "Отменить", + "tips": "Советы", + "language-setting": "Язык", + "setting.language.change-dialog": "Вы изменили язык на упрощенный китайский, мы рекомендуем вам перезапустить Netlist Viewer" } \ No newline at end of file diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index cb83711..33634b0 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -1,9 +1,12 @@ { "info.common.hello-world": "hello world", "general-setting": "通用", - "appearance-setting": "外观", - "current-version": "当前版本", - "copyright": "本软件版权归 Digital-IDE 项目组所有,欢迎 Star。" + "copyright": "本软件版权归 Digital-IDE 项目组所有,欢迎 Star。", + "confirm": "确定", + "cancel": "取消", + "tips": "提示", + "language-setting": "语言", + "setting.language.change-dialog": "您已经更换语言为简体中文,我们建议您重启 Netlist Viewer" } \ No newline at end of file diff --git a/src/i18n/zh-tw.json b/src/i18n/zh-tw.json index 923ad24..96ed200 100644 --- a/src/i18n/zh-tw.json +++ b/src/i18n/zh-tw.json @@ -1,9 +1,12 @@ { "info.common.hello-world": "你好,世界", "general-setting": "通用", - "appearance-setting": "外觀", - "current-version": "當前版本", - "copyright": "本軟件版權歸 Digital-IDE 項目組所有,歡迎 Star。" + "copyright": "本軟件版權歸 Digital-IDE 項目組所有,歡迎 Star。", + "confirm": "確定", + "cancel": "取消", + "tips": "提示", + "language-setting": "語言", + "setting.language.change-dialog": "您已經更換語言為簡體中文,我們建議您重啟 Netlist Viewer" } \ No newline at end of file