From c63b84e9616bed4770e841861ed12ebce4031578 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Wed, 4 Aug 2021 00:48:26 +0800 Subject: [PATCH] add --- package-lock.json | 198 ++++++++++++++++++++++++------ package.json | 3 + src/main/facilities/main/index.ts | 9 +- src/render/assets/style/common.scss | 6 + src/render/main.tsx | 2 +- src/render/route.tsx | 55 ++++++++- src/render/views/About/index.module.scss | 3 + src/render/views/About/index.tsx | 25 ++-- src/render/views/Home/index.module.scss | 12 ++ src/render/views/Home/index.tsx | 36 ++++-- src/render/views/Layout/index.module.scss | 13 +- src/render/views/Layout/index.tsx | 117 ++++++++---------- tsconfig.json | 2 +- types/global.d.ts | 3 + vite.config.ts | 4 +- 15 files changed, 359 insertions(+), 129 deletions(-) create mode 100644 src/render/views/About/index.module.scss diff --git a/package-lock.json b/package-lock.json index 4f0804d..87059e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1258,6 +1258,85 @@ } } }, + "@blueprintjs/table": { + "version": "3.9.0", + "resolved": "https://registry.nlark.com/@blueprintjs/table/download/@blueprintjs/table-3.9.0.tgz", + "integrity": "sha1-X8tw4o35HzFFYAmYpOJ5AqJk2NI=", + "requires": { + "@blueprintjs/core": "^3.47.0", + "classnames": "^2.2", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4", + "tslib": "~1.13.0" + }, + "dependencies": { + "@blueprintjs/core": { + "version": "3.47.0", + "resolved": "https://registry.nlark.com/@blueprintjs/core/download/@blueprintjs/core-3.47.0.tgz", + "integrity": "sha1-vzMVXSJLdCulHG4c9b5FIykDN6c=", + "requires": { + "@blueprintjs/icons": "^3.27.0", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.16.1", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "resize-observer-polyfill": "^1.5.1", + "tslib": "~1.13.0" + } + }, + "@blueprintjs/icons": { + "version": "3.27.0", + "resolved": "https://registry.nlark.com/@blueprintjs/icons/download/@blueprintjs/icons-3.27.0.tgz", + "integrity": "sha1-9MA+i8L5MQ9+rvqrJt2R9lk12kM=", + "requires": { + "classnames": "^2.2", + "tslib": "~1.13.0" + } + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.nlark.com/dom-helpers/download/dom-helpers-3.4.0.tgz", + "integrity": "sha1-6bNpcA+Vn2Ls3lprq95LzNkWmvg=", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npm.taobao.org/react-popper/download/react-popper-1.3.11.tgz", + "integrity": "sha1-osw/Cme3W2bPpi0sQJ+d0fzHH/0=", + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.nlark.com/react-transition-group/download/react-transition-group-2.9.0.tgz?cache=0&sync_timestamp=1622301030407&other_urls=https%3A%2F%2Fregistry.nlark.com%2Freact-transition-group%2Fdownload%2Freact-transition-group-2.9.0.tgz", + "integrity": "sha1-35zbAleWIRFRpDbGmo87l7WwfI0=", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.nlark.com/tslib/download/tslib-1.13.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-1.13.0.tgz", + "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=" + } + } + }, "@develar/schema-utils": { "version": "2.6.5", "resolved": "https://registry.npm.taobao.org/@develar/schema-utils/download/@develar/schema-utils-2.6.5.tgz", @@ -1473,7 +1552,6 @@ "version": "0.3.1", "resolved": "https://registry.npm.taobao.org/@hypnosphi/create-react-context/download/@hypnosphi/create-react-context-0.3.1.tgz", "integrity": "sha1-+L/r3HZl9dQmy6N1Pg6cfTFU18Y=", - "dev": true, "requires": { "gud": "^1.0.0", "warning": "^4.0.3" @@ -1825,8 +1903,7 @@ "@types/dom4": { "version": "2.0.2", "resolved": "https://registry.nlark.com/@types/dom4/download/@types/dom4-2.0.2.tgz", - "integrity": "sha1-ZJUwPwSWic6TbtMoo+Xt6cUUCO4=", - "dev": true + "integrity": "sha1-ZJUwPwSWic6TbtMoo+Xt6cUUCO4=" }, "@types/eslint": { "version": "7.28.0", @@ -1873,6 +1950,12 @@ "@types/node": "*" } }, + "@types/highlight.js": { + "version": "9.12.4", + "resolved": "https://registry.npm.taobao.org/@types/highlight.js/download/@types/highlight.js-9.12.4.tgz", + "integrity": "sha1-jDSWvRtQzASu79aRFAqlcdTb+jQ=", + "dev": true + }, "@types/history": { "version": "4.7.9", "resolved": "https://registry.nlark.com/@types/history/download/@types/history-4.7.9.tgz", @@ -1895,6 +1978,29 @@ "integrity": "sha1-7fG/Hb9OBEE8qOWxezt9fVS1mBg=", "dev": true }, + "@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.nlark.com/@types/linkify-it/download/@types/linkify-it-3.0.2.tgz", + "integrity": "sha1-/SzS7bqn6qx+fzwXSLUqGRQ4Rsk=", + "dev": true + }, + "@types/markdown-it": { + "version": "12.0.3", + "resolved": "https://registry.nlark.com/@types/markdown-it/download/@types/markdown-it-12.0.3.tgz", + "integrity": "sha1-YKCTY76714D6yBVEK0fYDxoXvvE=", + "dev": true, + "requires": { + "@types/highlight.js": "^9.7.0", + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.nlark.com/@types/mdurl/download/@types/mdurl-1.0.2.tgz", + "integrity": "sha1-4s6dg6YTus8oTHvn1JGUXjnh+Ok=", + "dev": true + }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.nlark.com/@types/minimatch/download/@types/minimatch-3.0.5.tgz?cache=0&sync_timestamp=1625616331953&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.5.tgz", @@ -3667,7 +3773,6 @@ "version": "1.0.2", "resolved": "https://registry.nlark.com/call-bind/download/call-bind-1.0.2.tgz", "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -3831,8 +3936,7 @@ "classnames": { "version": "2.3.1", "resolved": "https://registry.npm.taobao.org/classnames/download/classnames-2.3.1.tgz?cache=0&sync_timestamp=1617400318265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclassnames%2Fdownload%2Fclassnames-2.3.1.tgz", - "integrity": "sha1-38+jiR4wbsHa0QXQ6I9EF7hTXo4=", - "dev": true + "integrity": "sha1-38+jiR4wbsHa0QXQ6I9EF7hTXo4=" }, "clean-css": { "version": "4.2.3", @@ -4330,7 +4434,6 @@ "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&sync_timestamp=1606859714626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz", "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", - "dev": true, "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -4453,7 +4556,6 @@ "version": "1.1.3", "resolved": "https://registry.nlark.com/define-properties/download/define-properties-1.1.3.tgz", "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -4670,8 +4772,7 @@ "dom4": { "version": "2.1.6", "resolved": "https://registry.nlark.com/dom4/download/dom4-2.1.6.tgz", - "integrity": "sha1-yQ3wcTSqDb2B7U1roSN7NvwWR3A=", - "dev": true + "integrity": "sha1-yQ3wcTSqDb2B7U1roSN7NvwWR3A=" }, "dot-case": { "version": "3.0.4", @@ -5010,6 +5111,12 @@ "tapable": "^2.2.0" } }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.1.0.tgz", + "integrity": "sha1-mS0xKc999ocLlsV4WMJJoSD4uLU=", + "dev": true + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npm.taobao.org/env-paths/download/env-paths-2.2.1.tgz", @@ -5689,7 +5796,6 @@ "version": "1.1.1", "resolved": "https://registry.nlark.com/get-intrinsic/download/get-intrinsic-1.1.1.tgz", "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -5869,8 +5975,7 @@ "gud": { "version": "1.0.0", "resolved": "https://registry.nlark.com/gud/download/gud-1.0.0.tgz", - "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=", - "dev": true + "integrity": "sha1-pIlYGxfmpwvsqavjrlfeekmYUsA=" }, "handle-thing": { "version": "2.0.1", @@ -5912,8 +6017,7 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443484522&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz", - "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=", - "dev": true + "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=" }, "has-value": { "version": "1.0.0", @@ -6420,7 +6524,6 @@ "version": "1.1.0", "resolved": "https://registry.nlark.com/is-arguments/download/is-arguments-1.1.0.tgz", "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=", - "dev": true, "requires": { "call-bind": "^1.0.0" } @@ -6474,8 +6577,7 @@ "is-date-object": { "version": "1.0.4", "resolved": "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.4.tgz", - "integrity": "sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=", - "dev": true + "integrity": "sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=" }, "is-descriptor": { "version": "1.0.2", @@ -6603,7 +6705,6 @@ "version": "1.1.3", "resolved": "https://registry.nlark.com/is-regex/download/is-regex-1.1.3.tgz", "integrity": "sha1-0Cn5r/ZEi5Prvj8z2scVEf3L758=", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-symbols": "^1.0.2" @@ -6903,6 +7004,15 @@ "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/linkify-it/download/linkify-it-3.0.2.tgz", + "integrity": "sha1-9V7ri8HTrnVASeEkqzu1bZd5f7g=", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-4.2.0.tgz?cache=0&sync_timestamp=1610027918622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-4.2.0.tgz", @@ -6965,7 +7075,6 @@ "version": "1.4.0", "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", - "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -7033,6 +7142,19 @@ "object-visit": "^1.0.0" } }, + "markdown-it": { + "version": "12.2.0", + "resolved": "https://registry.nlark.com/markdown-it/download/markdown-it-12.2.0.tgz", + "integrity": "sha1-CR9yD9XbIG+A3nqNHxpwNf0NONs=", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, "matcher": { "version": "3.0.0", "resolved": "https://registry.npm.taobao.org/matcher/download/matcher-3.0.0.tgz", @@ -7043,6 +7165,12 @@ "escape-string-regexp": "^4.0.0" } }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz", @@ -7388,8 +7516,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -7463,7 +7590,6 @@ "version": "1.1.5", "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz?cache=0&sync_timestamp=1613857698573&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.5.tgz", "integrity": "sha1-ud7qpfx/GEag+uzc7sE45XePU6w=", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7472,8 +7598,7 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", - "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", - "dev": true + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" }, "object-visit": { "version": "1.0.1", @@ -7864,8 +7989,7 @@ "popper.js": { "version": "1.16.1", "resolved": "https://registry.npm.taobao.org/popper.js/download/popper.js-1.16.1.tgz", - "integrity": "sha1-KiI8s9x7YhPXQOQDcr5A3kPmWxs=", - "dev": true + "integrity": "sha1-KiI8s9x7YhPXQOQDcr5A3kPmWxs=" }, "portfinder": { "version": "1.0.28", @@ -7934,7 +8058,6 @@ "version": "15.7.2", "resolved": "https://registry.npm.taobao.org/prop-types/download/prop-types-15.7.2.tgz?cache=0&sync_timestamp=1615984425557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprop-types%2Fdownload%2Fprop-types-15.7.2.tgz", "integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -8093,12 +8216,11 @@ "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.nlark.com/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=", - "dev": true + "integrity": "sha1-TxonOv38jzSIqMUWv9p4+HI1I2I=" }, "react-popper": { "version": "1.3.11", - "resolved": "https://registry.npm.taobao.org/react-popper/download/react-popper-1.3.11.tgz?cache=0&sync_timestamp=1616674786422&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-popper%2Fdownload%2Freact-popper-1.3.11.tgz", + "resolved": "https://registry.npm.taobao.org/react-popper/download/react-popper-1.3.11.tgz", "integrity": "sha1-osw/Cme3W2bPpi0sQJ+d0fzHH/0=", "dev": true, "requires": { @@ -8313,7 +8435,6 @@ "version": "1.3.1", "resolved": "https://registry.nlark.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz", "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -8428,8 +8549,7 @@ "resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.nlark.com/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=", - "dev": true + "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" }, "resolve": { "version": "1.20.0", @@ -9789,8 +9909,7 @@ "typed-styles": { "version": "0.0.7", "resolved": "https://registry.npm.taobao.org/typed-styles/download/typed-styles-0.0.7.tgz", - "integrity": "sha1-kzkqAIeUxFlRGf9i3eaAnbxAo9k=", - "dev": true + "integrity": "sha1-kzkqAIeUxFlRGf9i3eaAnbxAo9k=" }, "typedarray": { "version": "0.0.6", @@ -9837,6 +9956,12 @@ "typescript-compare": "^0.0.2" } }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz", + "integrity": "sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw=", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.nlark.com/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10207,7 +10332,6 @@ "version": "4.0.3", "resolved": "https://registry.nlark.com/warning/download/warning-4.0.3.tgz", "integrity": "sha1-Fungd+uKhtavfWSqHgX9hbRnjKM=", - "dev": true, "requires": { "loose-envify": "^1.0.0" } diff --git a/package.json b/package.json index 11d5ad2..2457a99 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@rollup/plugin-node-resolve": "^13.0.4", "@rollup/plugin-replace": "^3.0.0", "@rollup/plugin-typescript": "^8.2.3", + "@types/markdown-it": "^12.0.3", "@types/minimist": "^1.2.2", "@types/node": "^15.14.3", "@types/react": "^17.0.0", @@ -60,6 +61,7 @@ "execa": "^5.1.1", "i18next": "^20.3.4", "i18next-browser-languagedetector": "^6.1.2", + "markdown-it": "^12.2.0", "node-loader": "^2.0.0", "react": "^17.0.0", "react-dom": "^17.0.0", @@ -85,6 +87,7 @@ "windicss": "^3.1.3" }, "dependencies": { + "@blueprintjs/table": "^3.9.0", "@emotion/react": "^11.4.0", "@emotion/styled": "^11.3.0", "framer-motion": "^4.1.17", diff --git a/src/main/facilities/main/index.ts b/src/main/facilities/main/index.ts index b15bfc9..f6af0a8 100644 --- a/src/main/facilities/main/index.ts +++ b/src/main/facilities/main/index.ts @@ -14,6 +14,7 @@ ipcMain.on("@func:main:hide", () => { } }) +let cur:string|null = null export default function showWindow(url?: string) { if (!Shared.data.mainWindow || Shared.data.mainWindow?.isDestroyed()) { /** @@ -73,10 +74,16 @@ export default function showWindow(url?: string) { } else { Shared.data.mainWindow?.showInactive() } - + url = url === undefined ? '': url + if (cur === url){ + return + } if(!url){ + cur = "" Shared.data.mainWindow.loadURL(getFileUrl("")) }else{ + cur = url Shared.data.mainWindow.loadURL(getFileUrl(url)) } + console.log(cur) } diff --git a/src/render/assets/style/common.scss b/src/render/assets/style/common.scss index e6bfdd3..f86dadf 100644 --- a/src/render/assets/style/common.scss +++ b/src/render/assets/style/common.scss @@ -2,6 +2,7 @@ @import "./reset.scss"; @import "./_font.scss"; @import "@blueprintjs/core/lib/css/blueprint.css"; +@import "@blueprintjs/table/lib/css/table.css"; @import "@blueprintjs/icons/lib/css/blueprint-icons.css"; :focus{ @@ -34,3 +35,8 @@ a { .clearfix { @include clearfix; } + +.container{ + max-width: 900px; + margin: 0 auto; +} diff --git a/src/render/main.tsx b/src/render/main.tsx index c39baa5..811fa6a 100644 --- a/src/render/main.tsx +++ b/src/render/main.tsx @@ -10,7 +10,7 @@ import Router from "./AppRouter"; // 静态资源地址变量请用"__static",在html中使用请用__static console.log(electron); -console.log(__staticVar); +console.log(__staticVar); ReactDOM.render( diff --git a/src/render/route.tsx b/src/render/route.tsx index 8f7d7b9..400f313 100644 --- a/src/render/route.tsx +++ b/src/render/route.tsx @@ -1,9 +1,33 @@ import Page404 from "@/views/Auth/Page404" import Login from "@/views/Login" import React, { lazy } from "react" +import { useLocation } from "react-router-dom" export const Loading = (props: any) =>
Lodeing.22..
+function foundRoute(route: any, name: string, arrIndex?: number[]): any { + if (!arrIndex) { + arrIndex = [] + } + for (let i = 0; i < route.length; i++) { + const element = route[i] + if (element.root) { + arrIndex = [] + } + arrIndex.push(i) + let lena = element.path.split("/").length + let lenb = name.split("/").length + if (element.path == name && lena == lenb) { + return arrIndex + } else if (element.children) { + let a = foundRoute(element.children, name, arrIndex) + if (a) { + return a + } + } + } +} + let delay = (Comp: any, duration = 1000) => () => @@ -21,7 +45,7 @@ let delay = }) ) -export default [ +const routes = [ { path: "/about", component: lazy(() => import("@/views/About")), @@ -84,3 +108,32 @@ export default [ component: Page404, }, ] + +export function useRoute(){ + const { pathname } = useLocation() + let oroute = JSON.parse(JSON.stringify(routes)) + let index = foundRoute(routes, pathname) + let isLayout = true + let curA = null + let curB = null + if (index && index.length) { + let res = oroute[index[0]] + let cur = res + for (let i = 1; i < index.length; i++) { + const element = index[i] + cur.children = [cur.children[element]] + cur = cur.children[element] + } + if (cur) { + cur.children = [] + } + if (cur.layout != undefined) { + isLayout = !!cur.layout + } + curA = cur + curB = res + } + return [curA,curB] +} + +export default routes diff --git a/src/render/views/About/index.module.scss b/src/render/views/About/index.module.scss new file mode 100644 index 0000000..7a004e8 --- /dev/null +++ b/src/render/views/About/index.module.scss @@ -0,0 +1,3 @@ +.about{ + padding: 20px; +} diff --git a/src/render/views/About/index.tsx b/src/render/views/About/index.tsx index b2cefad..ec9e866 100644 --- a/src/render/views/About/index.tsx +++ b/src/render/views/About/index.tsx @@ -1,5 +1,7 @@ import React from "react" +import style from "./index.module.scss" import { useLocation, Route, Switch, useHistory } from "react-router-dom" +import html from "./a.md" function Test() { return
test
@@ -10,18 +12,23 @@ export default function About(props: any) { // let location = useLocation() function back(){ console.log(1231); - history.replace("/about") } + + console.log(html) + return ( -
-
back()}>阿萨 阿松大asdasd
-
22{props.children}{location.href}
-

sadsa

-

sadsa

- - - +
+
+ {html} +
+ {/*
back()}>阿萨 阿松大asdasd
*/} + {/*
22{props.children}{location.href}
*/} + {/*

sadsa

*/} + {/*

sadsa

*/} + {/**/} + {/* */} + {/**/}
) } diff --git a/src/render/views/Home/index.module.scss b/src/render/views/Home/index.module.scss index e69de29..bfa0210 100644 --- a/src/render/views/Home/index.module.scss +++ b/src/render/views/Home/index.module.scss @@ -0,0 +1,12 @@ +.container{ + padding: 20px; + max-width: 100%; + margin: 0 auto; + .title{ + font-size: 25px; + font-weight: bolder; + } + .opeation{ + margin: 20px 0; + } +} diff --git a/src/render/views/Home/index.tsx b/src/render/views/Home/index.tsx index 8adb5aa..b9c4fb1 100644 --- a/src/render/views/Home/index.tsx +++ b/src/render/views/Home/index.tsx @@ -1,33 +1,53 @@ import { addTodo, removeTodo } from "@/store/action/todo" +import { Button, ButtonGroup } from "@blueprintjs/core" +import { Cell, Column, Table } from "@blueprintjs/table" import React from "react" -import { connect, useStore } from "react-redux" +import { connect } from "react-redux" import style from "./index.module.scss" -import { Icon } from "@blueprintjs/core" export interface HomeProps { add(text: string): void + todo: ITodo[] + remove(id: number): void } +function cellRenderer(rowIndex: number) { + return {`$${(rowIndex * 10).toFixed(2)}`} +} + function Home(props: HomeProps) { - const tabs = [ - {icon: "globe", title:"添加闹钟"} - ] + return ( -
sada
+
+
闹钟列表
+
+ + + + +
+ {/**/} + + + + +
+ {/*
*/} +
) } const mapStateToProps = (state: any) => { return { - todo: state.todo, + todo: state.todo } } const mapDispatchToProps = (dispatch: any) => ({ add: (text: string) => dispatch(addTodo(text)), - remove: (id: string | number) => dispatch(removeTodo(id)), + remove: (id: string | number) => dispatch(removeTodo(id)) }) export default connect(mapStateToProps, mapDispatchToProps)(Home) diff --git a/src/render/views/Layout/index.module.scss b/src/render/views/Layout/index.module.scss index 65c8dcf..c18f215 100644 --- a/src/render/views/Layout/index.module.scss +++ b/src/render/views/Layout/index.module.scss @@ -6,7 +6,7 @@ top: 0; bottom: 0; background-color: #2c2c2c; - width: 45px; + width: 55px; display: flex; flex-direction: column; overflow: hidden; @@ -20,6 +20,15 @@ &:hover { color: #f8ffff; } + position: relative; + .activeLine{ + position: absolute; + left: 0; + top: 6px; + bottom: 6px; + width: 3px; + background-color: white; + } } } .leftList{ @@ -28,6 +37,6 @@ } } .right{ - margin-left: 45px; + margin-left: 55px; } } diff --git a/src/render/views/Layout/index.tsx b/src/render/views/Layout/index.tsx index e4b9b67..5a83c53 100644 --- a/src/render/views/Layout/index.tsx +++ b/src/render/views/Layout/index.tsx @@ -1,85 +1,66 @@ -import React, { ReactElement } from "react" +import { Icon, IconName } from "@blueprintjs/core" +import route, {useRoute} from "@render/route" +import React from "react" +import { NavLink, useLocation } from "react-router-dom" import style from "./index.module.scss" -import { useLocation } from "react-router-dom" -import { Icon } from "@blueprintjs/core" -import route from "@render/route" // interface IProps { // render(): ReactElement // } -function foundRoute(route:any, name:string, arrIndex?: number[]):any{ - if(!arrIndex){ - arrIndex = [] +export default function Layout(props: any) { + let isLayout = true + let [curRoute, routeList] = useRoute() + if (curRoute.layout != undefined) { + isLayout = !!curRoute.layout } - for (let i = 0; i < route.length; i++) { - const element = route[i]; - if(element.root){ - arrIndex = [] - } - arrIndex.push(i); - let lena = element.path.split("/").length - let lenb =name.split("/").length - console.log(element.path, name,lena,lenb, element.path == name && lena==lenb); - if(element.path == name && lena==lenb){ - return arrIndex - } else if(element.children){ - let a = foundRoute(element.children, name, arrIndex); - if(a){ - return a - } - } - } -} -export default function (props: any) { - const {pathname} = useLocation() - - console.log(pathname); - console.log(route); - let oroute = JSON.parse(JSON.stringify(route)) - let index = foundRoute(route, pathname) - console.log(index); - let isLayout = true; - if(index&&index.length){ - let res = oroute[index[0]]; - let cur = res; - for (let i = 1; i < index.length; i++) { - const element = index[i]; - cur.children = [cur.children[element]] - cur = cur.children[element] - } - if(cur){ - cur.children = []; - } - console.log(cur); - if(cur.layout!=undefined){ - isLayout = !!cur.layout - } - console.log(res); + interface TList { + icon: IconName; + path: string; + title: string; + text: string; } - + const list: TList[]= [ + { + path: "/home", + icon: "time", + title: "添加闹钟", + text: "闹钟" + }, + { + path: "/about", + icon: "mugshot", + title: "添加闹钟", + text: "关于" + }, + ] + return ( - isLayout?( + isLayout ? (
-
-
-
- -
闹钟
+
+
+ {list.map((v,i)=>( + +
+ +
{v.text}
+ {v.path==curRoute.path&&(
)} +
+
+ ))}
-
-
-
- +
+
+ +
+
+ +
-
- -
-
sad
-
- ):() + ) : () ) } diff --git a/tsconfig.json b/tsconfig.json index 6e0b1ec..d308097 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ "@main/*": ["src/main/*"], "@src/*": ["src/*"], "@root/*": ["./*"] - }, + } }, "include": ["src", "types"], "exclude": ["node_modules"], diff --git a/types/global.d.ts b/types/global.d.ts index ef7c3c5..e8c51da 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -10,3 +10,6 @@ interface IAction extends IAny{ declare const __static: string; declare const __staticVar: string; + + +declare module "*.md" diff --git a/vite.config.ts b/vite.config.ts index d84ef9a..20a1ba4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,13 +5,14 @@ const { resolve, join } = require("path") import electron from "vitejs-plugin-electron" import { minifyHtml, injectHtml } from "vite-plugin-html" import replace from '@rollup/plugin-replace'; - +import md from './plugins/md'; let isDev = process.env.NODE_ENV === "development" let plugins = [] let staticPath = isDev? '/static': 'static' plugins.push( + md(), replace({ preventAssignment: true, "__static": staticPath, @@ -32,6 +33,7 @@ export default defineConfig({ }, }, server: { + // @ts-ignore port: +process.env.PORT, }, build: {