From 78ed03801231d47d0fee4d5b050a4af408197a8e Mon Sep 17 00:00:00 2001
From: wanglin2 <1013335014@qq.com>
Date: Tue, 7 Mar 2023 16:39:33 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1?=
=?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=9E=B6=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
web/dist_electron/index.js | 4 +-
web/dist_electron/package.json | 3 +-
web/dist_electron/preload.js | 122 ++
web/package-lock.json | 20 +-
web/src/assets/icon-font/demo.css | 539 ------
web/src/assets/icon-font/demo_index.html | 1522 -----------------
web/src/assets/icon-font/iconfont.css | 22 +-
web/src/assets/icon-font/iconfont.js | 1 -
web/src/assets/icon-font/iconfont.json | 415 -----
web/src/assets/icon-font/iconfont.ttf | Bin 16828 -> 17436 bytes
web/src/assets/icon-font/iconfont.woff | Bin 10660 -> 10988 bytes
web/src/assets/icon-font/iconfont.woff2 | Bin 9036 -> 9360 bytes
web/src/background.js | 64 +-
web/src/electron/preload.js | 12 +
web/src/main.js | 9 +
web/src/pages/Edit/components/Edit.vue | 2 +-
web/src/pages/Edit/components/Toolbar.vue | 8 +-
web/src/pages/Workbenche/Index.vue | 6 -
.../pages/Workbenche/components/Header.vue | 63 -
.../Workbenche/components/MacControl.vue | 15 +
.../pages/Workbenche/components/ScrollTab.vue | 227 ---
.../pages/Workbenche/components/Sidebar.vue | 75 -
.../Workbenche/components/WinControl.vue | 68 +
web/src/pages/Workbenche/views/Edit.vue | 34 +-
web/src/pages/Workbenche/views/Home.vue | 50 +-
web/src/pages/Workbenche/views/Local.vue | 20 -
web/src/router.js | 10 +-
web/vue.config.js | 37 +-
28 files changed, 392 insertions(+), 2956 deletions(-)
create mode 100644 web/dist_electron/preload.js
delete mode 100644 web/src/assets/icon-font/demo.css
delete mode 100644 web/src/assets/icon-font/demo_index.html
delete mode 100644 web/src/assets/icon-font/iconfont.js
delete mode 100644 web/src/assets/icon-font/iconfont.json
create mode 100644 web/src/electron/preload.js
delete mode 100644 web/src/pages/Workbenche/components/Header.vue
create mode 100644 web/src/pages/Workbenche/components/MacControl.vue
delete mode 100644 web/src/pages/Workbenche/components/ScrollTab.vue
delete mode 100644 web/src/pages/Workbenche/components/Sidebar.vue
create mode 100644 web/src/pages/Workbenche/components/WinControl.vue
delete mode 100644 web/src/pages/Workbenche/views/Local.vue
diff --git a/web/dist_electron/index.js b/web/dist_electron/index.js
index a2096060..4b9b9313 100644
--- a/web/dist_electron/index.js
+++ b/web/dist_electron/index.js
@@ -1776,7 +1776,7 @@ eval("/*\n Yaku v0.16.7\n (c) 2015 Yad Smood. http://ysmood.org\n License MIT\n*
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue_cli_plugin_electron_builder_lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-cli-plugin-electron-builder/lib */ \"./node_modules/vue-cli-plugin-electron-builder/lib/index.js\");\n/* harmony import */ var electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! electron-devtools-installer */ \"./node_modules/electron-devtools-installer/dist/index.js\");\n/* harmony import */ var electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n\nconst isDevelopment = \"development\" !== 'production'\n\n// Scheme must be registered before the app is ready\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"protocol\"].registerSchemesAsPrivileged([\n { scheme: 'app', privileges: { secure: true, standard: true } }\n])\n\nasync function createWindow() {\n // Create the browser window.\n const win = new electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"]({\n width: 1200,\n height: 800,\n frame: false,\n titleBarStyle: 'hiddenInset',\n webPreferences: {\n \n // Use pluginOptions.nodeIntegration, leave this alone\n // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info\n nodeIntegration: false,\n contextIsolation: !false\n }\n })\n\n if (true) {\n // Load the url of the dev server if in development mode\n await win.loadURL(\"http://localhost:8080\")\n if (!process.env.IS_TEST) win.webContents.openDevTools()\n } else {}\n}\n\n// Quit when all windows are closed.\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('window-all-closed', () => {\n // On macOS it is common for applications and their menu bar\n // to stay active until the user quits explicitly with Cmd + Q\n if (process.platform !== 'darwin') {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\n }\n})\n\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('activate', () => {\n // On macOS it's common to re-create a window in the app when the\n // dock icon is clicked and there are no other windows open.\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"].getAllWindows().length === 0) createWindow()\n})\n\n// This method will be called when Electron has finished\n// initialization and is ready to create browser windows.\n// Some APIs can only be used after this event occurs.\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('ready', async () => {\n // if (isDevelopment && !process.env.IS_TEST) {\n // // Install Vue Devtools\n // try {\n // await installExtension(VUEJS_DEVTOOLS)\n // } catch (e) {\n // console.error('Vue Devtools failed to install:', e.toString())\n // }\n // }\n createWindow()\n})\n\n// Exit cleanly on request from parent process in development mode.\nif (isDevelopment) {\n if (process.platform === 'win32') {\n process.on('message', (data) => {\n if (data === 'graceful-exit') {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\n }\n })\n } else {\n process.on('SIGTERM', () => {\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\n })\n }\n}\n\n\n//# sourceURL=webpack:///./src/background.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vue_cli_plugin_electron_builder_lib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-cli-plugin-electron-builder/lib */ \"./node_modules/vue-cli-plugin-electron-builder/lib/index.js\");\n/* harmony import */ var electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! electron-devtools-installer */ \"./node_modules/electron-devtools-installer/dist/index.js\");\n/* harmony import */ var electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(electron_devtools_installer__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);\n\r\n\r\n\r\n\r\n\r\n\r\nconst isDevelopment = \"development\" !== 'production'\r\n\r\n// Scheme must be registered before the app is ready\r\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"protocol\"].registerSchemesAsPrivileged([\r\n { scheme: 'app', privileges: { secure: true, standard: true } }\r\n])\r\n\r\nasync function createWindow() {\r\n // Create the browser window.\r\n const win = new electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"]({\r\n width: 1200,\r\n height: 800,\r\n frame: false,\r\n titleBarStyle: 'hiddenInset',\r\n webPreferences: {\r\n webSecurity: false,\r\n nodeIntegration: true,\r\n enableRemoteModule: true,\r\n contextIsolation: true,\r\n preload: path__WEBPACK_IMPORTED_MODULE_3___default.a.join(__dirname, 'preload.js')\r\n }\r\n })\r\n\r\n // 新建编辑页面\r\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].on('createNewEditPage', async id => {\r\n const win = new electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"]({\r\n width: 1200,\r\n height: 800,\r\n frame: false,\r\n titleBarStyle: 'hiddenInset',\r\n webPreferences: {\r\n webSecurity: false,\r\n nodeIntegration: true,\r\n enableRemoteModule: true,\r\n contextIsolation: true,\r\n preload: path__WEBPACK_IMPORTED_MODULE_3___default.a.join(__dirname, 'preload.js')\r\n }\r\n })\r\n if (true) {\r\n // Load the url of the dev server if in development mode\r\n win.loadURL(\r\n \"http://localhost:8080\" + '/#/workbenche/edit/' + id\r\n )\r\n // if (!process.env.IS_TEST) win.webContents.openDevTools()\r\n } else {}\r\n })\r\n ;['minimize', 'maximize', 'unmaximize', 'close'].forEach(item => {\r\n electron__WEBPACK_IMPORTED_MODULE_0__[\"ipcMain\"].on(item, event => {\r\n const webContents = event.sender\r\n const win = electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"].fromWebContents(webContents)\r\n win[item]()\r\n })\r\n })\r\n\r\n if (true) {\r\n // Load the url of the dev server if in development mode\r\n await win.loadURL(\"http://localhost:8080\" + '/#/workbenche')\r\n if (!process.env.IS_TEST) win.webContents.openDevTools()\r\n } else {}\r\n}\r\n\r\n// Quit when all windows are closed.\r\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('window-all-closed', () => {\r\n // On macOS it is common for applications and their menu bar\r\n // to stay active until the user quits explicitly with Cmd + Q\r\n if (process.platform !== 'darwin') {\r\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\r\n }\r\n})\r\n\r\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('activate', () => {\r\n // On macOS it's common to re-create a window in the app when the\r\n // dock icon is clicked and there are no other windows open.\r\n if (electron__WEBPACK_IMPORTED_MODULE_0__[\"BrowserWindow\"].getAllWindows().length === 0) createWindow()\r\n})\r\n\r\nelectron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].on('ready', async () => {\r\n createWindow()\r\n})\r\n\r\n// Exit cleanly on request from parent process in development mode.\r\nif (isDevelopment) {\r\n if (process.platform === 'win32') {\r\n process.on('message', data => {\r\n if (data === 'graceful-exit') {\r\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\r\n }\r\n })\r\n } else {\r\n process.on('SIGTERM', () => {\r\n electron__WEBPACK_IMPORTED_MODULE_0__[\"app\"].quit()\r\n })\r\n }\r\n}\r\n\n\n//# sourceURL=webpack:///./src/background.js?");
/***/ }),
@@ -1787,7 +1787,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var elec
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
-eval("module.exports = __webpack_require__(/*! /Users/lisa/wanglin/github/mind-map/web/src/background.js */\"./src/background.js\");\n\n\n//# sourceURL=webpack:///multi_./src/background.js?");
+eval("module.exports = __webpack_require__(/*! E:\\wanglin\\mind-map\\web\\src\\background.js */\"./src/background.js\");\n\n\n//# sourceURL=webpack:///multi_./src/background.js?");
/***/ }),
diff --git a/web/dist_electron/package.json b/web/dist_electron/package.json
index b54da2aa..1b0132ad 100644
--- a/web/dist_electron/package.json
+++ b/web/dist_electron/package.json
@@ -13,8 +13,7 @@
"electron:serve": "vue-cli-service electron:serve",
"format": "prettier --write src/* src/*/* src/*/*/* src/*/*/*/*",
"postinstall": "electron-builder install-app-deps",
- "postuninstall": "electron-builder install-app-deps",
- "start": "electron ."
+ "postuninstall": "electron-builder install-app-deps"
},
"main": "background.js",
"dependencies": {
diff --git a/web/dist_electron/preload.js b/web/dist_electron/preload.js
new file mode 100644
index 00000000..0512461d
--- /dev/null
+++ b/web/dist_electron/preload.js
@@ -0,0 +1,122 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = 0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/electron/preload.js":
+/*!*********************************!*\
+ !*** ./src/electron/preload.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("const { contextBridge, ipcRenderer } = __webpack_require__(/*! electron */ \"electron\")\r\n\r\ncontextBridge.exposeInMainWorld('platform', process.platform)\r\n\r\ncontextBridge.exposeInMainWorld('electronAPI', {\r\n minimize: () => ipcRenderer.send('minimize'),\r\n maximize: () => ipcRenderer.send('maximize'),\r\n unmaximize: () => ipcRenderer.send('unmaximize'),\r\n close: () => ipcRenderer.send('close'),\r\n createNewEditPage: (id) => ipcRenderer.send('createNewEditPage', id),\r\n activeEditPage: (id) => ipcRenderer.send('activeEditPage', id),\r\n})\n\n//# sourceURL=webpack:///./src/electron/preload.js?");
+
+/***/ }),
+
+/***/ 0:
+/*!***************************************!*\
+ !*** multi ./src/electron/preload.js ***!
+ \***************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("module.exports = __webpack_require__(/*! E:\\wanglin\\mind-map\\web\\src\\electron\\preload.js */\"./src/electron/preload.js\");\n\n\n//# sourceURL=webpack:///multi_./src/electron/preload.js?");
+
+/***/ }),
+
+/***/ "electron":
+/*!***************************!*\
+ !*** external "electron" ***!
+ \***************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("module.exports = require(\"electron\");\n\n//# sourceURL=webpack:///external_%22electron%22?");
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/web/package-lock.json b/web/package-lock.json
index 1b598c3f..63c8c75d 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -22380,7 +22380,6 @@
"integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==",
"dev": true,
"requires": {
- "@babel/core": "^7.11.0",
"@babel/helper-compilation-targets": "^7.9.6",
"@babel/helper-module-imports": "^7.8.3",
"@babel/plugin-proposal-class-properties": "^7.8.3",
@@ -22393,7 +22392,6 @@
"@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.2.4",
"babel-plugin-dynamic-import-node": "^2.3.3",
- "core-js": "^3.6.5",
"core-js-compat": "^3.6.5",
"semver": "^6.1.0"
}
@@ -22545,7 +22543,8 @@
"version": "4.5.19",
"resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz",
"integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@vue/cli-service": {
"version": "4.5.19",
@@ -22703,7 +22702,8 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
"integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"@vue/web-component-wrapper": {
"version": "1.3.0",
@@ -22924,7 +22924,8 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"acorn-walk": {
"version": "7.2.0",
@@ -22978,13 +22979,15 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"ajv-keywords": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"alphanum-sort": {
"version": "1.0.2",
@@ -35603,7 +35606,8 @@
"vuex": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
- "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw=="
+ "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==",
+ "requires": {}
},
"w3c-keyname": {
"version": "2.2.6",
diff --git a/web/src/assets/icon-font/demo.css b/web/src/assets/icon-font/demo.css
deleted file mode 100644
index a67054a0..00000000
--- a/web/src/assets/icon-font/demo.css
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Logo 字体 */
-@font-face {
- font-family: "iconfont logo";
- src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
- src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
-}
-
-.logo {
- font-family: "iconfont logo";
- font-size: 160px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-/* tabs */
-.nav-tabs {
- position: relative;
-}
-
-.nav-tabs .nav-more {
- position: absolute;
- right: 0;
- bottom: 0;
- height: 42px;
- line-height: 42px;
- color: #666;
-}
-
-#tabs {
- border-bottom: 1px solid #eee;
-}
-
-#tabs li {
- cursor: pointer;
- width: 100px;
- height: 40px;
- line-height: 40px;
- text-align: center;
- font-size: 16px;
- border-bottom: 2px solid transparent;
- position: relative;
- z-index: 1;
- margin-bottom: -1px;
- color: #666;
-}
-
-
-#tabs .active {
- border-bottom-color: #f00;
- color: #222;
-}
-
-.tab-container .content {
- display: none;
-}
-
-/* 页面布局 */
-.main {
- padding: 30px 100px;
- width: 960px;
- margin: 0 auto;
-}
-
-.main .logo {
- color: #333;
- text-align: left;
- margin-bottom: 30px;
- line-height: 1;
- height: 110px;
- margin-top: -50px;
- overflow: hidden;
- *zoom: 1;
-}
-
-.main .logo a {
- font-size: 160px;
- color: #333;
-}
-
-.helps {
- margin-top: 40px;
-}
-
-.helps pre {
- padding: 20px;
- margin: 10px 0;
- border: solid 1px #e7e1cd;
- background-color: #fffdef;
- overflow: auto;
-}
-
-.icon_lists {
- width: 100% !important;
- overflow: hidden;
- *zoom: 1;
-}
-
-.icon_lists li {
- width: 100px;
- margin-bottom: 10px;
- margin-right: 20px;
- text-align: center;
- list-style: none !important;
- cursor: default;
-}
-
-.icon_lists li .code-name {
- line-height: 1.2;
-}
-
-.icon_lists .icon {
- display: block;
- height: 100px;
- line-height: 100px;
- font-size: 42px;
- margin: 10px auto;
- color: #333;
- -webkit-transition: font-size 0.25s linear, width 0.25s linear;
- -moz-transition: font-size 0.25s linear, width 0.25s linear;
- transition: font-size 0.25s linear, width 0.25s linear;
-}
-
-.icon_lists .icon:hover {
- font-size: 100px;
-}
-
-.icon_lists .svg-icon {
- /* 通过设置 font-size 来改变图标大小 */
- width: 1em;
- /* 图标和文字相邻时,垂直对齐 */
- vertical-align: -0.15em;
- /* 通过设置 color 来改变 SVG 的颜色/fill */
- fill: currentColor;
- /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
- normalize.css 中也包含这行 */
- overflow: hidden;
-}
-
-.icon_lists li .name,
-.icon_lists li .code-name {
- color: #666;
-}
-
-/* markdown 样式 */
-.markdown {
- color: #666;
- font-size: 14px;
- line-height: 1.8;
-}
-
-.highlight {
- line-height: 1.5;
-}
-
-.markdown img {
- vertical-align: middle;
- max-width: 100%;
-}
-
-.markdown h1 {
- color: #404040;
- font-weight: 500;
- line-height: 40px;
- margin-bottom: 24px;
-}
-
-.markdown h2,
-.markdown h3,
-.markdown h4,
-.markdown h5,
-.markdown h6 {
- color: #404040;
- margin: 1.6em 0 0.6em 0;
- font-weight: 500;
- clear: both;
-}
-
-.markdown h1 {
- font-size: 28px;
-}
-
-.markdown h2 {
- font-size: 22px;
-}
-
-.markdown h3 {
- font-size: 16px;
-}
-
-.markdown h4 {
- font-size: 14px;
-}
-
-.markdown h5 {
- font-size: 12px;
-}
-
-.markdown h6 {
- font-size: 12px;
-}
-
-.markdown hr {
- height: 1px;
- border: 0;
- background: #e9e9e9;
- margin: 16px 0;
- clear: both;
-}
-
-.markdown p {
- margin: 1em 0;
-}
-
-.markdown>p,
-.markdown>blockquote,
-.markdown>.highlight,
-.markdown>ol,
-.markdown>ul {
- width: 80%;
-}
-
-.markdown ul>li {
- list-style: circle;
-}
-
-.markdown>ul li,
-.markdown blockquote ul>li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown>ul li p,
-.markdown>ol li p {
- margin: 0.6em 0;
-}
-
-.markdown ol>li {
- list-style: decimal;
-}
-
-.markdown>ol li,
-.markdown blockquote ol>li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown code {
- margin: 0 3px;
- padding: 0 5px;
- background: #eee;
- border-radius: 3px;
-}
-
-.markdown strong,
-.markdown b {
- font-weight: 600;
-}
-
-.markdown>table {
- border-collapse: collapse;
- border-spacing: 0px;
- empty-cells: show;
- border: 1px solid #e9e9e9;
- width: 95%;
- margin-bottom: 24px;
-}
-
-.markdown>table th {
- white-space: nowrap;
- color: #333;
- font-weight: 600;
-}
-
-.markdown>table th,
-.markdown>table td {
- border: 1px solid #e9e9e9;
- padding: 8px 16px;
- text-align: left;
-}
-
-.markdown>table th {
- background: #F7F7F7;
-}
-
-.markdown blockquote {
- font-size: 90%;
- color: #999;
- border-left: 4px solid #e9e9e9;
- padding-left: 0.8em;
- margin: 1em 0;
-}
-
-.markdown blockquote p {
- margin: 0;
-}
-
-.markdown .anchor {
- opacity: 0;
- transition: opacity 0.3s ease;
- margin-left: 8px;
-}
-
-.markdown .waiting {
- color: #ccc;
-}
-
-.markdown h1:hover .anchor,
-.markdown h2:hover .anchor,
-.markdown h3:hover .anchor,
-.markdown h4:hover .anchor,
-.markdown h5:hover .anchor,
-.markdown h6:hover .anchor {
- opacity: 1;
- display: inline-block;
-}
-
-.markdown>br,
-.markdown>p>br {
- clear: both;
-}
-
-
-.hljs {
- display: block;
- background: white;
- padding: 0.5em;
- color: #333333;
- overflow-x: auto;
-}
-
-.hljs-comment,
-.hljs-meta {
- color: #969896;
-}
-
-.hljs-string,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-strong,
-.hljs-emphasis,
-.hljs-quote {
- color: #df5000;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-type {
- color: #a71d5d;
-}
-
-.hljs-literal,
-.hljs-symbol,
-.hljs-bullet,
-.hljs-attribute {
- color: #0086b3;
-}
-
-.hljs-section,
-.hljs-name {
- color: #63a35c;
-}
-
-.hljs-tag {
- color: #333333;
-}
-
-.hljs-title,
-.hljs-attr,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
- color: #795da3;
-}
-
-.hljs-addition {
- color: #55a532;
- background-color: #eaffea;
-}
-
-.hljs-deletion {
- color: #bd2c00;
- background-color: #ffecec;
-}
-
-.hljs-link {
- text-decoration: underline;
-}
-
-/* 代码高亮 */
-/* PrismJS 1.15.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
- color: black;
- background: none;
- text-shadow: 0 1px white;
- font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-@media print {
-
- code[class*="language-"],
- pre[class*="language-"] {
- text-shadow: none;
- }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
- padding: 1em;
- margin: .5em 0;
- overflow: auto;
-}
-
-:not(pre)>code[class*="language-"],
-pre[class*="language-"] {
- background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre)>code[class*="language-"] {
- padding: .1em;
- border-radius: .3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: slategray;
-}
-
-.token.punctuation {
- color: #999;
-}
-
-.namespace {
- opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
- color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
- color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
- color: #9a6e3a;
- background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
- color: #07a;
-}
-
-.token.function,
-.token.class-name {
- color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
- color: #e90;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
diff --git a/web/src/assets/icon-font/demo_index.html b/web/src/assets/icon-font/demo_index.html
deleted file mode 100644
index e11ab1ad..00000000
--- a/web/src/assets/icon-font/demo_index.html
+++ /dev/null
@@ -1,1522 +0,0 @@
-
-
-
-
- iconfont Demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - Unicode
- - Font class
- - Symbol
-
-
-
查看项目
-
-
-
-
-
-
- -
-
-
电脑
- 
-
-
- -
-
-
主页
- 
-
-
- -
-
-
本地@1x
- 
-
-
- -
-
-
背景颜色
- 
-
-
- -
-
-
清除
- 
-
-
- -
-
-
case
- 
-
-
- -
-
-
形状-文字
- 
-
-
- -
-
-
字体加粗
- 
-
-
- -
-
-
字体下划线
- 
-
-
- -
-
-
字体斜体
- 
-
-
- -
-
-
删除线
- 
-
-
- -
-
-
字体颜色
- 
-
-
- -
-
-
github
- 
-
-
- -
-
-
选择
- 
-
-
- -
-
-
主题
- 
-
-
- -
-
-
导出
- 
-
-
- -
-
-
另存为
- 
-
-
- -
-
-
export
- 
-
-
- -
-
-
打开
- 
-
-
- -
-
-
新建
- 
-
-
- -
-
-
剪切
- 
-
-
- -
-
-
整理
- 
-
-
- -
-
-
复制
- 
-
-
- -
-
-
粘贴
- 
-
-
- -
-
-
上移
- 
-
-
- -
-
-
下移
- 
-
-
- -
-
-
概括总览
- 
-
-
- -
-
-
全选
- 
-
-
- -
-
-
导入
- 
-
-
- -
-
-
后退-实
- 
-
-
- -
-
-
前进
- 
-
-
- -
-
-
撤回
- 
-
-
- -
-
-
前进
- 
-
-
- -
-
-
恢复默认
- 
-
-
- -
-
-
换行
- 
-
-
- -
-
-
缩小
- 
-
-
- -
-
-
编辑
- 
-
-
- -
-
-
放大
- 
-
-
- -
-
-
全屏
- 
-
-
- -
-
-
定位
- 
-
-
- -
-
-
导航
- 
-
-
- -
-
-
键盘
- 
-
-
- -
-
-
全屏
- 
-
-
- -
-
-
导出
- 
-
-
- -
-
-
标签
- 
-
-
- -
-
-
流程-备注
- 
-
-
- -
-
-
超链接
- 
-
-
- -
-
-
主题
- 
-
-
- -
-
-
笑脸
- 
-
-
- -
-
-
图 片
- 
-
-
- -
-
-
结构
- 
-
-
- -
-
-
样式
- 
-
-
- -
-
-
符号-大纲树
- 
-
-
- -
-
-
添加子节点
- 
-
-
- -
-
-
节点
- 
-
-
- -
-
-
删 除
- 
-
-
- -
-
-
HTSCIT_展开
- 
-
-
- -
-
-
HTSCIT_展开2
- 
-
-
-
-
-
Unicode 引用
-
-
-
Unicode 是字体在网页端最原始的应用方式,特点是:
-
- - 支持按字体的方式去动态调整图标大小,颜色等等。
- - 默认情况下不支持多色,直接添加多色图标会自动去色。
-
-
- 注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)
-
-
Unicode 使用步骤如下:
-
第一步:拷贝项目下面生成的 @font-face
-
@font-face {
- font-family: 'iconfont';
- src: url('iconfont.woff2?t=1677915953390') format('woff2'),
- url('iconfont.woff?t=1677915953390') format('woff'),
- url('iconfont.ttf?t=1677915953390') format('truetype');
-}
-
-
第二步:定义使用 iconfont 的样式
-
.iconfont {
- font-family: "iconfont" !important;
- font-size: 16px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-
第三步:挑选相应图标并获取字体编码,应用于页面
-
-<span class="iconfont">3</span>
-
-
- "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
- 电脑
-
- .icondiannao
-
-
-
- -
-
-
- 主页
-
- .iconzhuye
-
-
-
- -
-
-
- 本地@1x
-
- .iconbendi1x
-
-
-
- -
-
-
- 背景颜色
-
- .iconbeijingyanse
-
-
-
- -
-
-
- 清除
-
- .iconqingchu
-
-
-
- -
-
-
- case
-
- .iconcase
-
-
-
- -
-
-
- 形状-文字
-
- .iconxingzhuang-wenzi
-
-
-
- -
-
-
- 字体加粗
-
- .iconzitijiacu
-
-
-
- -
-
-
- 字体下划线
-
- .iconzitixiahuaxian
-
-
-
- -
-
-
- 字体斜体
-
- .iconzitixieti
-
-
-
- -
-
-
- 删除线
-
- .iconshanchuxian
-
-
-
- -
-
-
- 字体颜色
-
- .iconzitiyanse
-
-
-
- -
-
-
- github
-
- .icongithub
-
-
-
- -
-
-
- 选择
-
- .iconchoose1
-
-
-
- -
-
-
- 主题
-
- .iconzhuti
-
-
-
- -
-
-
- 导出
-
- .icondaochu1
-
-
-
- -
-
-
- 另存为
-
- .iconlingcunwei
-
-
-
- -
-
-
- export
-
- .iconexport
-
-
-
- -
-
-
- 打开
-
- .icondakai
-
-
-
- -
-
-
- 新建
-
- .iconxinjian
-
-
-
- -
-
-
- 剪切
-
- .iconjianqie
-
-
-
- -
-
-
- 整理
-
- .iconzhengli
-
-
-
- -
-
-
- 复制
-
- .iconfuzhi
-
-
-
- -
-
-
- 粘贴
-
- .iconniantie
-
-
-
- -
-
-
- 上移
-
- .iconshangyi
-
-
-
- -
-
-
- 下移
-
- .iconxiayi
-
-
-
- -
-
-
- 概括总览
-
- .icongaikuozonglan
-
-
-
- -
-
-
- 全选
-
- .iconquanxuan
-
-
-
- -
-
-
- 导入
-
- .icondaoru
-
-
-
- -
-
-
- 后退-实
-
- .iconhoutui-shi
-
-
-
- -
-
-
- 前进
-
- .iconqianjin1
-
-
-
- -
-
-
- 撤回
-
- .iconwithdraw
-
-
-
- -
-
-
- 前进
-
- .iconqianjin
-
-
-
- -
-
-
- 恢复默认
-
- .iconhuifumoren
-
-
-
- -
-
-
- 换行
-
- .iconhuanhang
-
-
-
- -
-
-
- 缩小
-
- .iconsuoxiao
-
-
-
- -
-
-
- 编辑
-
- .iconbianji
-
-
-
- -
-
-
- 放大
-
- .iconfangda
-
-
-
- -
-
-
- 全屏
-
- .iconquanping1
-
-
-
- -
-
-
- 定位
-
- .icondingwei
-
-
-
- -
-
-
- 导航
-
- .icondaohang
-
-
-
- -
-
-
- 键盘
-
- .iconjianpan
-
-
-
- -
-
-
- 全屏
-
- .iconquanping
-
-
-
- -
-
-
- 导出
-
- .icondaochu
-
-
-
- -
-
-
- 标签
-
- .iconbiaoqian
-
-
-
- -
-
-
- 流程-备注
-
- .iconflow-Mark
-
-
-
- -
-
-
- 超链接
-
- .iconchaolianjie
-
-
-
- -
-
-
- 主题
-
- .iconjingzi
-
-
-
- -
-
-
- 笑脸
-
- .iconxiaolian
-
-
-
- -
-
-
- 图 片
-
- .iconimage
-
-
-
- -
-
-
- 结构
-
- .iconjiegou
-
-
-
- -
-
-
- 样式
-
- .iconyangshi
-
-
-
- -
-
-
- 符号-大纲树
-
- .iconfuhao-dagangshu
-
-
-
- -
-
-
- 添加子节点
-
- .icontianjiazijiedian
-
-
-
- -
-
-
- 节点
-
- .iconjiedian
-
-
-
- -
-
-
- 删 除
-
- .iconshanchu
-
-
-
- -
-
-
- HTSCIT_展开
-
- .iconzhankai
-
-
-
- -
-
-
- HTSCIT_展开2
-
- .iconzhankai1
-
-
-
-
-
-
font-class 引用
-
-
-
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
-
与 Unicode 使用方式相比,具有如下特点:
-
- - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
- - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 fontclass 代码:
-
<link rel="stylesheet" href="./iconfont.css">
-
-
第二步:挑选相应图标并获取类名,应用于页面:
-
<span class="iconfont iconxxx"></span>
-
-
- "
- iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
电脑
- #icondiannao
-
-
- -
-
-
主页
- #iconzhuye
-
-
- -
-
-
本地@1x
- #iconbendi1x
-
-
- -
-
-
背景颜色
- #iconbeijingyanse
-
-
- -
-
-
清除
- #iconqingchu
-
-
- -
-
-
case
- #iconcase
-
-
- -
-
-
形状-文字
- #iconxingzhuang-wenzi
-
-
- -
-
-
字体加粗
- #iconzitijiacu
-
-
- -
-
-
字体下划线
- #iconzitixiahuaxian
-
-
- -
-
-
字体斜体
- #iconzitixieti
-
-
- -
-
-
删除线
- #iconshanchuxian
-
-
- -
-
-
字体颜色
- #iconzitiyanse
-
-
- -
-
-
github
- #icongithub
-
-
- -
-
-
选择
- #iconchoose1
-
-
- -
-
-
主题
- #iconzhuti
-
-
- -
-
-
导出
- #icondaochu1
-
-
- -
-
-
另存为
- #iconlingcunwei
-
-
- -
-
-
export
- #iconexport
-
-
- -
-
-
打开
- #icondakai
-
-
- -
-
-
新建
- #iconxinjian
-
-
- -
-
-
剪切
- #iconjianqie
-
-
- -
-
-
整理
- #iconzhengli
-
-
- -
-
-
复制
- #iconfuzhi
-
-
- -
-
-
粘贴
- #iconniantie
-
-
- -
-
-
上移
- #iconshangyi
-
-
- -
-
-
下移
- #iconxiayi
-
-
- -
-
-
概括总览
- #icongaikuozonglan
-
-
- -
-
-
全选
- #iconquanxuan
-
-
- -
-
-
导入
- #icondaoru
-
-
- -
-
-
后退-实
- #iconhoutui-shi
-
-
- -
-
-
前进
- #iconqianjin1
-
-
- -
-
-
撤回
- #iconwithdraw
-
-
- -
-
-
前进
- #iconqianjin
-
-
- -
-
-
恢复默认
- #iconhuifumoren
-
-
- -
-
-
换行
- #iconhuanhang
-
-
- -
-
-
缩小
- #iconsuoxiao
-
-
- -
-
-
编辑
- #iconbianji
-
-
- -
-
-
放大
- #iconfangda
-
-
- -
-
-
全屏
- #iconquanping1
-
-
- -
-
-
定位
- #icondingwei
-
-
- -
-
-
导航
- #icondaohang
-
-
- -
-
-
键盘
- #iconjianpan
-
-
- -
-
-
全屏
- #iconquanping
-
-
- -
-
-
导出
- #icondaochu
-
-
- -
-
-
标签
- #iconbiaoqian
-
-
- -
-
-
流程-备注
- #iconflow-Mark
-
-
- -
-
-
超链接
- #iconchaolianjie
-
-
- -
-
-
主题
- #iconjingzi
-
-
- -
-
-
笑脸
- #iconxiaolian
-
-
- -
-
-
图 片
- #iconimage
-
-
- -
-
-
结构
- #iconjiegou
-
-
- -
-
-
样式
- #iconyangshi
-
-
- -
-
-
符号-大纲树
- #iconfuhao-dagangshu
-
-
- -
-
-
添加子节点
- #icontianjiazijiedian
-
-
- -
-
-
节点
- #iconjiedian
-
-
- -
-
-
删 除
- #iconshanchu
-
-
- -
-
-
HTSCIT_展开
- #iconzhankai
-
-
- -
-
-
HTSCIT_展开2
- #iconzhankai1
-
-
-
-
-
Symbol 引用
-
-
-
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
- 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
-
- - 支持多色图标了,不再受单色限制。
- - 通过一些技巧,支持像字体那样,通过
font-size, color 来调整样式。
- - 兼容性较差,支持 IE9+,及现代浏览器。
- - 浏览器渲染 SVG 的性能一般,还不如 png。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 symbol 代码:
-
<script src="./iconfont.js"></script>
-
-
第二步:加入通用 CSS 代码(引入一次就行):
-
<style>
-.icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
-}
-</style>
-
-
第三步:挑选相应图标并获取类名,应用于页面:
-
<svg class="icon" aria-hidden="true">
- <use xlink:href="#icon-xxx"></use>
-</svg>
-
-
-
-
-
-
-
-
-
diff --git a/web/src/assets/icon-font/iconfont.css b/web/src/assets/icon-font/iconfont.css
index 79d416f3..ee63560a 100644
--- a/web/src/assets/icon-font/iconfont.css
+++ b/web/src/assets/icon-font/iconfont.css
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2479351 */
- src: url('iconfont.woff2?t=1677915953390') format('woff2'),
- url('iconfont.woff?t=1677915953390') format('woff'),
- url('iconfont.ttf?t=1677915953390') format('truetype');
+ src: url('iconfont.woff2?t=1678168703777') format('woff2'),
+ url('iconfont.woff?t=1678168703777') format('woff'),
+ url('iconfont.ttf?t=1678168703777') format('truetype');
}
.iconfont {
@@ -13,6 +13,22 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon3zuidahua-3:before {
+ content: "\e692";
+}
+
+.iconzuixiaohua:before {
+ content: "\e650";
+}
+
+.iconzuidahua:before {
+ content: "\e651";
+}
+
+.iconguanbi:before {
+ content: "\e652";
+}
+
.icondiannao:before {
content: "\eac0";
}
diff --git a/web/src/assets/icon-font/iconfont.js b/web/src/assets/icon-font/iconfont.js
deleted file mode 100644
index 208b0788..00000000
--- a/web/src/assets/icon-font/iconfont.js
+++ /dev/null
@@ -1 +0,0 @@
-window._iconfont_svg_string_2479351='',function(l){var c=(c=document.getElementsByTagName("script"))[c.length-1],a=c.getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var h,i,t,o,s,z=function(c,a){a.parentNode.insertBefore(c,a)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}h=function(){var c,a=document.createElement("div");a.innerHTML=l._iconfont_svg_string_2479351,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(c=document.body).firstChild?z(a,c.firstChild):c.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),h()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(t=h,o=l.document,s=!1,d(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,v())})}function v(){s||(s=!0,t())}function d(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(d,50)}v()}}(window);
\ No newline at end of file
diff --git a/web/src/assets/icon-font/iconfont.json b/web/src/assets/icon-font/iconfont.json
deleted file mode 100644
index 1b39f9cf..00000000
--- a/web/src/assets/icon-font/iconfont.json
+++ /dev/null
@@ -1,415 +0,0 @@
-{
- "id": "2479351",
- "name": "思绪",
- "font_family": "iconfont",
- "css_prefix_text": "icon",
- "description": "思维导图",
- "glyphs": [
- {
- "icon_id": "5387383",
- "name": "电脑",
- "font_class": "diannao",
- "unicode": "eac0",
- "unicode_decimal": 60096
- },
- {
- "icon_id": "6940837",
- "name": "主页",
- "font_class": "zhuye",
- "unicode": "e65c",
- "unicode_decimal": 58972
- },
- {
- "icon_id": "17859315",
- "name": "本地@1x",
- "font_class": "bendi1x",
- "unicode": "e606",
- "unicode_decimal": 58886
- },
- {
- "icon_id": "1790495",
- "name": "背景颜色",
- "font_class": "beijingyanse",
- "unicode": "e6f8",
- "unicode_decimal": 59128
- },
- {
- "icon_id": "11321310",
- "name": "清除",
- "font_class": "qingchu",
- "unicode": "e605",
- "unicode_decimal": 58885
- },
- {
- "icon_id": "586787",
- "name": "case",
- "font_class": "case",
- "unicode": "e6c6",
- "unicode_decimal": 59078
- },
- {
- "icon_id": "4354254",
- "name": "形状-文字",
- "font_class": "xingzhuang-wenzi",
- "unicode": "eb99",
- "unicode_decimal": 60313
- },
- {
- "icon_id": "6337466",
- "name": "字体加粗",
- "font_class": "zitijiacu",
- "unicode": "ec83",
- "unicode_decimal": 60547
- },
- {
- "icon_id": "6337470",
- "name": "字体下划线",
- "font_class": "zitixiahuaxian",
- "unicode": "ec85",
- "unicode_decimal": 60549
- },
- {
- "icon_id": "6337471",
- "name": "字体斜体",
- "font_class": "zitixieti",
- "unicode": "ec86",
- "unicode_decimal": 60550
- },
- {
- "icon_id": "11975179",
- "name": "删除线",
- "font_class": "shanchuxian",
- "unicode": "e612",
- "unicode_decimal": 58898
- },
- {
- "icon_id": "34198316",
- "name": "字体颜色",
- "font_class": "zitiyanse",
- "unicode": "e854",
- "unicode_decimal": 59476
- },
- {
- "icon_id": "8760187",
- "name": "github",
- "font_class": "github",
- "unicode": "e64f",
- "unicode_decimal": 58959
- },
- {
- "icon_id": "1009019",
- "name": "选择",
- "font_class": "choose1",
- "unicode": "e6c5",
- "unicode_decimal": 59077
- },
- {
- "icon_id": "493507",
- "name": "主题",
- "font_class": "zhuti",
- "unicode": "e7aa",
- "unicode_decimal": 59306
- },
- {
- "icon_id": "1305460",
- "name": "导出",
- "font_class": "daochu1",
- "unicode": "e63e",
- "unicode_decimal": 58942
- },
- {
- "icon_id": "4784101",
- "name": "另存为",
- "font_class": "lingcunwei",
- "unicode": "e657",
- "unicode_decimal": 58967
- },
- {
- "icon_id": "9929033",
- "name": "export",
- "font_class": "export",
- "unicode": "e642",
- "unicode_decimal": 58946
- },
- {
- "icon_id": "4570294",
- "name": "打开",
- "font_class": "dakai",
- "unicode": "ebdf",
- "unicode_decimal": 60383
- },
- {
- "icon_id": "5086088",
- "name": "新建",
- "font_class": "xinjian",
- "unicode": "e64e",
- "unicode_decimal": 58958
- },
- {
- "icon_id": "1117",
- "name": "剪切",
- "font_class": "jianqie",
- "unicode": "e601",
- "unicode_decimal": 58881
- },
- {
- "icon_id": "1415523",
- "name": "整理",
- "font_class": "zhengli",
- "unicode": "e83b",
- "unicode_decimal": 59451
- },
- {
- "icon_id": "2815710",
- "name": "复制",
- "font_class": "fuzhi",
- "unicode": "e604",
- "unicode_decimal": 58884
- },
- {
- "icon_id": "11121506",
- "name": "粘贴",
- "font_class": "niantie",
- "unicode": "e63f",
- "unicode_decimal": 58943
- },
- {
- "icon_id": "11383392",
- "name": "上移",
- "font_class": "shangyi",
- "unicode": "e6be",
- "unicode_decimal": 59070
- },
- {
- "icon_id": "11383396",
- "name": "下移",
- "font_class": "xiayi",
- "unicode": "e6bf",
- "unicode_decimal": 59071
- },
- {
- "icon_id": "14843439",
- "name": "概括总览",
- "font_class": "gaikuozonglan",
- "unicode": "e609",
- "unicode_decimal": 58889
- },
- {
- "icon_id": "19738998",
- "name": "全选",
- "font_class": "quanxuan",
- "unicode": "f199",
- "unicode_decimal": 61849
- },
- {
- "icon_id": "17606306",
- "name": "导入",
- "font_class": "daoru",
- "unicode": "e6a3",
- "unicode_decimal": 59043
- },
- {
- "icon_id": "5110748",
- "name": "后退-实",
- "font_class": "houtui-shi",
- "unicode": "e656",
- "unicode_decimal": 58966
- },
- {
- "icon_id": "14420971",
- "name": "前进",
- "font_class": "qianjin1",
- "unicode": "e654",
- "unicode_decimal": 58964
- },
- {
- "icon_id": "1368553",
- "name": "撤回",
- "font_class": "withdraw",
- "unicode": "e603",
- "unicode_decimal": 58883
- },
- {
- "icon_id": "15006636",
- "name": "前进",
- "font_class": "qianjin",
- "unicode": "e600",
- "unicode_decimal": 58880
- },
- {
- "icon_id": "19980541",
- "name": "恢复默认",
- "font_class": "huifumoren",
- "unicode": "e60e",
- "unicode_decimal": 58894
- },
- {
- "icon_id": "1616783",
- "name": "换行",
- "font_class": "huanhang",
- "unicode": "e61e",
- "unicode_decimal": 58910
- },
- {
- "icon_id": "4777227",
- "name": "缩小",
- "font_class": "suoxiao",
- "unicode": "ec13",
- "unicode_decimal": 60435
- },
- {
- "icon_id": "18811980",
- "name": "编辑",
- "font_class": "bianji",
- "unicode": "e626",
- "unicode_decimal": 58918
- },
- {
- "icon_id": "21188137",
- "name": "放大",
- "font_class": "fangda",
- "unicode": "e663",
- "unicode_decimal": 58979
- },
- {
- "icon_id": "21189639",
- "name": "全屏",
- "font_class": "quanping1",
- "unicode": "e664",
- "unicode_decimal": 58980
- },
- {
- "icon_id": "397753",
- "name": "定位",
- "font_class": "dingwei",
- "unicode": "e616",
- "unicode_decimal": 58902
- },
- {
- "icon_id": "2605158",
- "name": "导航",
- "font_class": "daohang",
- "unicode": "e611",
- "unicode_decimal": 58897
- },
- {
- "icon_id": "6528451",
- "name": "键盘",
- "font_class": "jianpan",
- "unicode": "e64d",
- "unicode_decimal": 58957
- },
- {
- "icon_id": "7556170",
- "name": "全屏",
- "font_class": "quanping",
- "unicode": "e602",
- "unicode_decimal": 58882
- },
- {
- "icon_id": "788015",
- "name": "导出",
- "font_class": "daochu",
- "unicode": "e63d",
- "unicode_decimal": 58941
- },
- {
- "icon_id": "2678575",
- "name": "标签",
- "font_class": "biaoqian",
- "unicode": "e63c",
- "unicode_decimal": 58940
- },
- {
- "icon_id": "6265396",
- "name": "流程-备注",
- "font_class": "flow-Mark",
- "unicode": "e65b",
- "unicode_decimal": 58971
- },
- {
- "icon_id": "1790486",
- "name": "超链接",
- "font_class": "chaolianjie",
- "unicode": "e6f4",
- "unicode_decimal": 59124
- },
- {
- "icon_id": "4608986",
- "name": "主题",
- "font_class": "jingzi",
- "unicode": "e610",
- "unicode_decimal": 58896
- },
- {
- "icon_id": "11903017",
- "name": "笑脸",
- "font_class": "xiaolian",
- "unicode": "e60f",
- "unicode_decimal": 58895
- },
- {
- "icon_id": "19657962",
- "name": "图 片",
- "font_class": "image",
- "unicode": "e629",
- "unicode_decimal": 58921
- },
- {
- "icon_id": "20784489",
- "name": "结构",
- "font_class": "jiegou",
- "unicode": "e61d",
- "unicode_decimal": 58909
- },
- {
- "icon_id": "15969341",
- "name": "样式",
- "font_class": "yangshi",
- "unicode": "e631",
- "unicode_decimal": 58929
- },
- {
- "icon_id": "2967176",
- "name": "符号-大纲树",
- "font_class": "fuhao-dagangshu",
- "unicode": "e71f",
- "unicode_decimal": 59167
- },
- {
- "icon_id": "12316668",
- "name": "添加子节点",
- "font_class": "tianjiazijiedian",
- "unicode": "e622",
- "unicode_decimal": 58914
- },
- {
- "icon_id": "14435368",
- "name": "节点",
- "font_class": "jiedian",
- "unicode": "e655",
- "unicode_decimal": 58965
- },
- {
- "icon_id": "15765352",
- "name": "删 除",
- "font_class": "shanchu",
- "unicode": "e696",
- "unicode_decimal": 59030
- },
- {
- "icon_id": "9592600",
- "name": "HTSCIT_展开",
- "font_class": "zhankai",
- "unicode": "e64c",
- "unicode_decimal": 58956
- },
- {
- "icon_id": "9900009",
- "name": "HTSCIT_展开2",
- "font_class": "zhankai1",
- "unicode": "e673",
- "unicode_decimal": 58995
- }
- ]
-}
diff --git a/web/src/assets/icon-font/iconfont.ttf b/web/src/assets/icon-font/iconfont.ttf
index 3772b829bad315954fea693b496730837ecea3f8..75e905ec5481be4752b9d729ee1e5ad4e7ed1a0b 100644
GIT binary patch
delta 1973
zcmZ{lZA?>F7{~wT-u6-`lmew7jtVW5wjwB$`ZC}$f@U+Do5YvBkZeU1OngfK!;D!C
zW`^vOvx&*FWt%z^w@)r6W;1T$lDSOXqRGP7`C&d9WlLsU=G4Oew`clo_wYNOAiGghwf#;s5IQ_yfg6M{!4BLigh_YcrXi+=+lR1L4h#h1)-WW9
zrD1RoXHFO<#HV4vkWx*Cu|xbCW&u*BVLl+`8fFF()G$YoS`D)W32B%&NLa%RLY$8f
z<`VKB%qnD=hWUkbBI9&msv%t(CLQ8rgE0LNTf;&?dNnKwoqVbE9uv;u#gQJmKd^8!(u}=X;^m1W(@@Zc|$`fKn64v1!Rkc@_-C!
zC=|%3CSUF&9B0@$$3>26s3XV;4HX6XRzqz;E@-GS$oCrR4RT5295=bIp#~w;mIKv@
zTdcnWb%|SFXsA$RZZkRuiWRpRy#r;7JJT8p7S4ON$`dlr0Glc<@j`GqGL^V1pgqG|I0Ep`&G>cc)&;4>=A
z0wL92-`1^`cN-mL$rfb>tVn%0%5jSRU}Z(XDscRf`fg`ou+nUvOE&e!ji}ui>x-$Y
zPsf{5(Ya(am5QpX(bRjbk*2=*+@LGj;7m=sF=I!~SZ~u@GTztJ&=WP{y;1cO-;fJF
zd4|t_6G^(%$Mi;8Q_hic{x85BRi~VT$xTPQl-^gZ3Rvb_xgL+#>oKO;t5?0AxTm<7
z9cxGB&;MqAXf9;sBm5Dn54U6#W6H-6QViRtRM?^oGN=^qL?fn|dl+96=bvHaZSHy~
zkq8-<(=Uv#P8jaQ>Nsug5v_4E5z0NvFK~wv`42uYr_2H>s*b;O$_lrtXmYtqwJlP?
zKtZG07z~us+eEKTuQ{3Puu83v+ihIYHrHWXaZ?3;E7y^?#*bWL)mnbbxUB6;-tp68
zaiwE{GdDc1rIejrW$#_8x>UEaRS&%F`^L8qrANloOWKP#oY6E9L
z51qA!Pg;YE{CgKZJOJz`fcMj(?h{>+X-l^Og)e|5f94K$bk>{;+5s>|Q;shRKe{j3
zA0{=qp8kPP?*V=0}@OuU0sv{je2NRbv*8qck
zsP|}JtpEMZ*e#%i1MG`G56^CChQ+a@K6UZ0eeujYL|wk%7V3Vx{`EQWX2SRCoF5n$
z!ZvStnR(4Y+Ik$g_WO0ClQFCjIFr43d`7s)C|v6oj$DK9;K7xUge55{NlUfVO1&(W
z7HO5u(k6SPQ~H86&br`7r^~lEV+-33wq5_VcC@1l-8h2YFYOrm|EC@2s(3;umrQwggI!$Qq0FZBv64QzC{Dd5X)jFmLrW4EMUU5_y#Mn0y9vF
zsVGJW3*llJ;z*&0=@y_AHIydIl&4dfP;l4%6pUD2aK{VzEcoQL5)gI_+!%xc8n{IW
zMKy4<5J%y*A*_Xg2|zrBsX#&slY)d5rUxljm?$K!_{q_f^1e0<8!OR+Cg}%3|Q{7vt409A#Dmv3)!u($dEmX@wXgMSa?XM
zLJL6p6q*5YUZE`@mlPTVa$BKQAa{t*8(jmruh2h`QH4%|yjAEa$Onb)!YgKBpwIB?
zszS$MtXZM=Fvg4xbRk}kDCYQ$|EkcL@W-DsAT%lRU!Yx)KdI2T$e&hdVdT#!=KTK4
z9~q3TC$B1=zpGY*b=Z1sm)YCxL3`Kc4folRDAaCr4`3pWz2QTsC;Vk)2j
diff --git a/web/src/assets/icon-font/iconfont.woff b/web/src/assets/icon-font/iconfont.woff
index bf31abf73b938bdaae0d95973f88bddef1455287..b2736ae8f0793c1aa997770c7b3a7fb77f8a2045 100644
GIT binary patch
delta 10557
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
diff --git a/web/src/assets/icon-font/iconfont.woff2 b/web/src/assets/icon-font/iconfont.woff2
index 54f9ab8623e87bc94051743011f3b4b71f992fce..9e36b5c79fd12c73d7a5f84c7ef2dd536e06723d 100644
GIT binary patch
literal 9360
zcmV;BByZbyPew8T0RR9103?tA3jhEB07M)B03<;G0RR9100000000000000000000
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
K>ryQ(<8%X};PjpV
literal 9036
zcmV-SBeUFhPew8T0RR9103%EQ3jhEB071L}03!PU0RR9100000000000000000000
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
diff --git a/web/src/background.js b/web/src/background.js
index c91d3f05..f777befa 100644
--- a/web/src/background.js
+++ b/web/src/background.js
@@ -1,8 +1,9 @@
'use strict'
-import { app, protocol, BrowserWindow } from 'electron'
+import { app, protocol, BrowserWindow, ipcMain, BrowserView } from 'electron'
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
+import path from 'path'
const isDevelopment = process.env.NODE_ENV !== 'production'
// Scheme must be registered before the app is ready
@@ -18,22 +19,56 @@ async function createWindow() {
frame: false,
titleBarStyle: 'hiddenInset',
webPreferences: {
-
- // Use pluginOptions.nodeIntegration, leave this alone
- // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
- nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
- contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION
+ webSecurity: false,
+ nodeIntegration: true,
+ enableRemoteModule: true,
+ contextIsolation: true,
+ preload: path.join(__dirname, 'preload.js')
}
})
+ // 新建编辑页面
+ ipcMain.on('createNewEditPage', async id => {
+ const win = new BrowserWindow({
+ width: 1200,
+ height: 800,
+ frame: false,
+ titleBarStyle: 'hiddenInset',
+ webPreferences: {
+ webSecurity: false,
+ nodeIntegration: true,
+ enableRemoteModule: true,
+ contextIsolation: true,
+ preload: path.join(__dirname, 'preload.js')
+ }
+ })
+ if (process.env.WEBPACK_DEV_SERVER_URL) {
+ // Load the url of the dev server if in development mode
+ win.loadURL(
+ process.env.WEBPACK_DEV_SERVER_URL + '/#/workbenche/edit/' + id
+ )
+ // if (!process.env.IS_TEST) win.webContents.openDevTools()
+ } else {
+ // Load the index.html when not in development
+ win.loadURL('app://./index.html/#/workbenche/edit/' + id)
+ }
+ })
+ ;['minimize', 'maximize', 'unmaximize', 'close'].forEach(item => {
+ ipcMain.on(item, event => {
+ const webContents = event.sender
+ const win = BrowserWindow.fromWebContents(webContents)
+ win[item]()
+ })
+ })
+
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
- await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
+ await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL + '/#/workbenche')
if (!process.env.IS_TEST) win.webContents.openDevTools()
} else {
createProtocol('app')
// Load the index.html when not in development
- win.loadURL('app://./index.html')
+ win.loadURL('app://./index.html/#/workbenche')
}
}
@@ -52,25 +87,14 @@ app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
-// This method will be called when Electron has finished
-// initialization and is ready to create browser windows.
-// Some APIs can only be used after this event occurs.
app.on('ready', async () => {
- // if (isDevelopment && !process.env.IS_TEST) {
- // // Install Vue Devtools
- // try {
- // await installExtension(VUEJS_DEVTOOLS)
- // } catch (e) {
- // console.error('Vue Devtools failed to install:', e.toString())
- // }
- // }
createWindow()
})
// Exit cleanly on request from parent process in development mode.
if (isDevelopment) {
if (process.platform === 'win32') {
- process.on('message', (data) => {
+ process.on('message', data => {
if (data === 'graceful-exit') {
app.quit()
}
diff --git a/web/src/electron/preload.js b/web/src/electron/preload.js
new file mode 100644
index 00000000..8f0892d3
--- /dev/null
+++ b/web/src/electron/preload.js
@@ -0,0 +1,12 @@
+const { contextBridge, ipcRenderer } = require('electron')
+
+contextBridge.exposeInMainWorld('platform', process.platform)
+
+contextBridge.exposeInMainWorld('electronAPI', {
+ minimize: () => ipcRenderer.send('minimize'),
+ maximize: () => ipcRenderer.send('maximize'),
+ unmaximize: () => ipcRenderer.send('unmaximize'),
+ close: () => ipcRenderer.send('close'),
+ createNewEditPage: (id) => ipcRenderer.send('createNewEditPage', id),
+ activeEditPage: (id) => ipcRenderer.send('activeEditPage', id),
+})
\ No newline at end of file
diff --git a/web/src/main.js b/web/src/main.js
index 329bd7a1..95459721 100644
--- a/web/src/main.js
+++ b/web/src/main.js
@@ -14,6 +14,15 @@ Vue.config.productionTip = false
Vue.prototype.$bus = new Vue()
Vue.use(ElementUI)
Vue.use(VueViewer)
+Vue.mixin({
+ data () {
+ return {
+ IS_ELECTRON: process.env.IS_ELECTRON,
+ IS_MAC: window.platform === 'darwin',
+ IS_WIN: window.platform === 'win32'
+ }
+ }
+})
new Vue({
render: h => h(App),
diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue
index 80141975..b321f5d8 100644
--- a/web/src/pages/Edit/components/Edit.vue
+++ b/web/src/pages/Edit/components/Edit.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/web/src/pages/Edit/components/Toolbar.vue b/web/src/pages/Edit/components/Toolbar.vue
index fc7759cf..3be4ac44 100644
--- a/web/src/pages/Edit/components/Toolbar.vue
+++ b/web/src/pages/Edit/components/Toolbar.vue
@@ -1,6 +1,6 @@