diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index f221492f6..000000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,1190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1584692398144 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index a7b2c9f4e..4a9d94652 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -19,7 +19,8 @@ const getClientEnvironment = require("./env"); let publicPath = "/react/build/"; const publicUrl = publicPath.slice(0, -1); -const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false"; +// const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false"; +const shouldUseSourceMap = process.env.NODE_ENV !== "production"; const env = getClientEnvironment(publicPath); // This is the production configuration. @@ -54,7 +55,8 @@ module.exports = { }, bail: true, mode: "production", - devtool: false, //测试版 + // devtool: false, //测试版 + devtool: shouldUseSourceMap?'source-map':false, entry: [require.resolve("./polyfills"), paths.appIndexJs], output: { path: paths.appBuild, diff --git a/package-lock.json b/package-lock.json index 2bb26e24a..628e5a3b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,35 +1,40 @@ { "name": "forge", - "version": "0.1.0", + "version": "3.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@ant-design/colors": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-3.2.2.tgz", - "integrity": "sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ==", + "resolved": "https://registry.npm.taobao.org/@ant-design/colors/download/@ant-design/colors-3.2.2.tgz?cache=0&sync_timestamp=1612935637470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Fcolors%2Fdownload%2F%40ant-design%2Fcolors-3.2.2.tgz", + "integrity": "sha1-WtQ9YZ6RHzSI66wwPWBuZqhCOQM=", "requires": { "tinycolor2": "^1.4.1" } }, "@ant-design/create-react-context": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@ant-design/create-react-context/-/create-react-context-0.2.5.tgz", - "integrity": "sha512-1rMAa4qgP2lfl/QBH9i78+Gjxtj9FTMpMyDGZsEBW5Kih72EuUo9958mV8PgpRkh4uwPSQ7vVZWXeyNZXVAFDg==", + "resolved": "https://registry.npm.taobao.org/@ant-design/create-react-context/download/@ant-design/create-react-context-0.2.5.tgz", + "integrity": "sha1-9fWpFjtHcgl3EoNzl60w4i55+Fg=", "requires": { "gud": "^1.0.0", "warning": "^4.0.3" } }, + "@ant-design/css-animation": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/@ant-design/css-animation/download/@ant-design/css-animation-1.7.3.tgz?cache=0&sync_timestamp=1596106749762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40ant-design%2Fcss-animation%2Fdownload%2F%40ant-design%2Fcss-animation-1.7.3.tgz", + "integrity": "sha1-YKHJcAFOhrKPlAUQ1p5QPkKPETY=" + }, "@ant-design/icons": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-2.1.1.tgz", - "integrity": "sha512-jCH+k2Vjlno4YWl6g535nHR09PwCEmTBKAG6VqF+rhkrSPRLfgpU2maagwbZPLjaHuU5Jd1DFQ2KJpQuI6uG8w==" + "resolved": "https://registry.npm.taobao.org/@ant-design/icons/download/@ant-design/icons-2.1.1.tgz", + "integrity": "sha1-e5wI3/1PXUHbZn2dvl4BB9C9mko=" }, "@ant-design/icons-react": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ant-design/icons-react/-/icons-react-2.0.1.tgz", - "integrity": "sha512-r1QfoltMuruJZqdiKcbPim3d8LNsVPB733U0gZEUSxBLuqilwsW28K2rCTWSMTjmFX7Mfpf+v/wdiFe/XCqThw==", + "resolved": "https://registry.npm.taobao.org/@ant-design/icons-react/download/@ant-design/icons-react-2.0.1.tgz", + "integrity": "sha1-F6JRNXGrMXrKKSfljOol3THlNvs=", "requires": { "@ant-design/colors": "^3.1.0", "babel-runtime": "^6.26.0" @@ -446,8 +451,8 @@ }, "@types/react-slick": { "version": "0.23.4", - "resolved": "https://registry.npmjs.org/@types/react-slick/-/react-slick-0.23.4.tgz", - "integrity": "sha512-vXoIy4GUfB7/YgqubR4H7RALo+pRdMYCeLgWwV3MPwl5pggTlEkFBTF19R7u+LJc85uMqC7RfsbkqPLMQ4ab+A==", + "resolved": "https://registry.npm.taobao.org/@types/react-slick/download/@types/react-slick-0.23.4.tgz", + "integrity": "sha1-yX4qnn49GTPGhZO46CdS+rHozlM=", "requires": { "@types/react": "*" } @@ -863,9 +868,9 @@ } }, "antd": { - "version": "3.26.16", - "resolved": "https://registry.npmjs.org/antd/-/antd-3.26.16.tgz", - "integrity": "sha512-EYRwlEf8FCPCVRk5yDcgjSZOC0exu+m75SwlSQU+Mh17f9wGhLeL2/DV7/Sra1r+BZlfiahFdkgrLY7UgMMBEQ==", + "version": "3.26.20", + "resolved": "https://registry.nlark.com/antd/download/antd-3.26.20.tgz", + "integrity": "sha1-8/Vw76qllQoUSULyHrKqqgiOlAc=", "requires": { "@ant-design/create-react-context": "^0.2.4", "@ant-design/icons": "~2.1.1", @@ -925,16 +930,16 @@ "dependencies": { "raf": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "resolved": "https://registry.npm.taobao.org/raf/download/raf-3.4.1.tgz", + "integrity": "sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=", "requires": { "performance-now": "^2.1.0" } }, "rc-pagination": { - "version": "1.20.14", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-1.20.14.tgz", - "integrity": "sha512-sNKwbFrxiqATqcIIShfrFs8BT03n4UUwTAMYae+JhHTmILQmXdvimEnZbVuWcno6G02DAJcLrFpmkn1h2tmEJw==", + "version": "1.20.15", + "resolved": "https://registry.npm.taobao.org/rc-pagination/download/rc-pagination-1.20.15.tgz", + "integrity": "sha1-zLTNDpvU5H9y8p6kMsA1C/ez2Ac=", "requires": { "babel-runtime": "6.x", "classnames": "^2.2.6", @@ -944,8 +949,8 @@ }, "rc-rate": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.5.1.tgz", - "integrity": "sha512-3iJkNJT8xlHklPCdeZtUZmJmRVUbr6AHRlfSsztfYTXVlHrv2TcPn3XkHsH+12j812WVB7gvilS2j3+ffjUHXg==", + "resolved": "https://registry.npm.taobao.org/rc-rate/download/rc-rate-2.5.1.tgz?cache=0&sync_timestamp=1605573559401&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-rate%2Fdownload%2Frc-rate-2.5.1.tgz", + "integrity": "sha1-Vfxf0j6p3MciULmoiYA0efSEKWE=", "requires": { "classnames": "^2.2.5", "prop-types": "^15.5.8", @@ -955,8 +960,8 @@ }, "rc-select": { "version": "9.2.3", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-9.2.3.tgz", - "integrity": "sha512-WhswxOMWiNnkXRbxyrj0kiIvyCfo/BaRPaYbsDetSIAU2yEDwKHF798blCP5u86KLOBKBvtxWLFCkSsQw1so5w==", + "resolved": "https://registry.nlark.com/rc-select/download/rc-select-9.2.3.tgz?cache=0&sync_timestamp=1618886345948&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frc-select%2Fdownload%2Frc-select-9.2.3.tgz", + "integrity": "sha1-ZDQOLW72TovDz8b0aP/ShiVYmsI=", "requires": { "babel-runtime": "^6.23.0", "classnames": "2.x", @@ -974,8 +979,8 @@ }, "rc-tree": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-2.1.4.tgz", - "integrity": "sha512-Xey794Iavgs8YldFlXcZLOhfcIhlX5Oz/yfKufknBXf2AlZCOkc7aHqSM9uTF7fBPtTGPhPxNEfOqHfY7b7xng==", + "resolved": "https://registry.npm.taobao.org/rc-tree/download/rc-tree-2.1.4.tgz?cache=0&sync_timestamp=1615350038621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-tree%2Fdownload%2Frc-tree-2.1.4.tgz", + "integrity": "sha1-73WfPnmaIbQ8Hs+ceU6hwU5wtZs=", "requires": { "@ant-design/create-react-context": "^0.2.4", "classnames": "2.x", @@ -985,6 +990,18 @@ "react-lifecycles-compat": "^3.0.4", "warning": "^4.0.3" } + }, + "react-slick": { + "version": "0.25.2", + "resolved": "https://registry.nlark.com/react-slick/download/react-slick-0.25.2.tgz", + "integrity": "sha1-VjMbZ9R9i8/i3OtqyrHI/VvR9rw=", + "requires": { + "classnames": "^2.2.5", + "enquire.js": "^2.1.6", + "json2mq": "^0.2.0", + "lodash.debounce": "^4.0.8", + "resize-observer-polyfill": "^1.5.0" + } } } }, @@ -1083,8 +1100,8 @@ }, "array-tree-filter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + "resolved": "https://registry.npm.taobao.org/array-tree-filter/download/array-tree-filter-2.1.0.tgz", + "integrity": "sha1-hzrAD+yDdJ8lWsjdCDgUtPYykZA=" }, "array-union": { "version": "1.0.2", @@ -1256,7 +1273,7 @@ }, "babel-cli": { "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-cli/download/babel-cli-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", "dev": true, "requires": { @@ -1279,7 +1296,7 @@ "dependencies": { "chokidar": { "version": "1.7.0", - "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-1.7.0.tgz?cache=0&sync_timestamp=1602585438968&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "optional": true, @@ -1297,7 +1314,7 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } @@ -1396,7 +1413,7 @@ }, "babel-helper-bindify-decorators": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-helper-bindify-decorators/download/babel-helper-bindify-decorators-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "dev": true, "requires": { @@ -1459,7 +1476,7 @@ }, "babel-helper-explode-class": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-helper-explode-class/download/babel-helper-explode-class-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "dev": true, "requires": { @@ -1659,7 +1676,7 @@ }, "babel-plugin-syntax-async-generators": { "version": "6.13.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-async-generators/download/babel-plugin-syntax-async-generators-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", "dev": true }, @@ -1670,7 +1687,7 @@ }, "babel-plugin-syntax-decorators": { "version": "6.13.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-decorators/download/babel-plugin-syntax-decorators-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", "dev": true }, @@ -1706,7 +1723,7 @@ }, "babel-plugin-transform-async-generator-functions": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-async-generator-functions/download/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "dev": true, "requires": { @@ -1738,7 +1755,7 @@ }, "babel-plugin-transform-decorators": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-decorators/download/babel-plugin-transform-decorators-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "dev": true, "requires": { @@ -2043,7 +2060,7 @@ }, "babel-plugin-transform-runtime": { "version": "6.23.0", - "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-runtime/download/babel-plugin-transform-runtime-6.23.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "requires": { "babel-runtime": "^6.22.0" @@ -2060,9 +2077,8 @@ }, "babel-polyfill": { "version": "6.26.0", - "resolved": "https://registry.npm.taobao.org/babel-polyfill/download/babel-polyfill-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "core-js": "^2.5.0", @@ -2071,9 +2087,8 @@ "dependencies": { "regenerator-runtime": { "version": "0.10.5", - "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.10.5.tgz?cache=0&sync_timestamp=1595456367497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" } } }, @@ -2116,7 +2131,7 @@ }, "babel-preset-es2015": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-preset-es2015/download/babel-preset-es2015-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { @@ -2164,7 +2179,7 @@ }, "babel-preset-react": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-preset-react/download/babel-preset-react-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "requires": { "babel-plugin-syntax-jsx": "^6.3.13", @@ -2197,7 +2212,7 @@ }, "babel-preset-stage-2": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-preset-stage-2/download/babel-preset-stage-2-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "dev": true, "requires": { @@ -2209,7 +2224,7 @@ }, "babel-preset-stage-3": { "version": "6.24.1", - "resolved": "https://registry.npm.taobao.org/babel-preset-stage-3/download/babel-preset-stage-3-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", "dev": true, "requires": { @@ -2362,6 +2377,12 @@ } } }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/base16/download/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=", + "dev": true + }, "base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", @@ -3486,7 +3507,7 @@ }, "code-prettify": { "version": "0.1.0", - "resolved": "https://registry.npm.taobao.org/code-prettify/download/code-prettify-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/code-prettify/-/code-prettify-0.1.0.tgz", "integrity": "sha1-RocMyMGlDQm61TmzOpg9vUqjSx4=" }, "codemirror": { @@ -3760,8 +3781,8 @@ }, "copy-to-clipboard": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "resolved": "https://registry.npm.taobao.org/copy-to-clipboard/download/copy-to-clipboard-3.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-to-clipboard%2Fdownload%2Fcopy-to-clipboard-3.3.1.tgz", + "integrity": "sha1-EVqhqZmP+rYZb5MHatbaO5E2Yq4=", "requires": { "toggle-selection": "^1.0.6" } @@ -3854,6 +3875,23 @@ "warning": "^4.0.3" } }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.nlark.com/cross-fetch/download/cross-fetch-3.1.4.tgz", + "integrity": "sha1-lyPzo6JHv4uJA586OAqSROj6Lzk=", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.nlark.com/node-fetch/download/node-fetch-2.6.1.tgz?cache=0&sync_timestamp=1626684741221&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnode-fetch%2Fdownload%2Fnode-fetch-2.6.1.tgz", + "integrity": "sha1-BFvTI2Mfdu0uK1VXM5RBa2OaAFI=", + "dev": true + } + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -4847,7 +4885,7 @@ }, "dom-closest": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-closest/-/dom-closest-0.2.0.tgz", + "resolved": "https://registry.npm.taobao.org/dom-closest/download/dom-closest-0.2.0.tgz", "integrity": "sha1-69n5HRvyLo1vR3h2u80+yQIWwM8=", "requires": { "dom-matches": ">=1.0.1" @@ -4891,7 +4929,7 @@ }, "dom-matches": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-matches/-/dom-matches-2.0.0.tgz", + "resolved": "https://registry.npm.taobao.org/dom-matches/download/dom-matches-2.0.0.tgz", "integrity": "sha1-0nKLQWqHUzmA6wibhI0lPPI6dYw=" }, "dom-scroll-into-view": { @@ -5013,8 +5051,8 @@ }, "draft-js": { "version": "0.10.5", - "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.10.5.tgz", - "integrity": "sha512-LE6jSCV9nkPhfVX2ggcRLA4FKs6zWq9ceuO/88BpXdNCS7mjRTgs0NsV6piUCJX9YxMsB9An33wnkMmU2sD2Zg==", + "resolved": "https://registry.npm.taobao.org/draft-js/download/draft-js-0.10.5.tgz", + "integrity": "sha1-v6m+sBj+BTPbsI1mdcNxprCPp0I=", "requires": { "fbjs": "^0.8.15", "immutable": "~3.7.4", @@ -5053,13 +5091,18 @@ } }, "echarts": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.7.0.tgz", - "integrity": "sha512-NlOTdUcAsIyCCG+N4uh0ZEvXtrPW2jvcuqf03RyqYeCKzyPbiOQ4I3MdKXMhxG3lBdqQNdNXVT71SB4KTQjN0A==", + "version": "4.9.0", + "resolved": "https://registry.nlark.com/echarts/download/echarts-4.9.0.tgz", + "integrity": "sha1-qbm6oD8Doqcx5jQMVb77V6nhNH0=", "requires": { - "zrender": "4.3.0" + "zrender": "4.3.2" } }, + "echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/echarts-wordcloud/download/echarts-wordcloud-2.0.0.tgz?cache=0&sync_timestamp=1610779172014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts-wordcloud%2Fdownload%2Fecharts-wordcloud-2.0.0.tgz", + "integrity": "sha1-Uu+BeJWAH/6emd0brKt2hrLewEo=" + }, "editor.md": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/editor.md/-/editor.md-1.5.0.tgz", @@ -5144,7 +5187,7 @@ }, "enquire.js": { "version": "2.1.6", - "resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz", + "resolved": "https://registry.npm.taobao.org/enquire.js/download/enquire.js-2.1.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenquire.js%2Fdownload%2Fenquire.js-2.1.6.tgz", "integrity": "sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ=" }, "entities": { @@ -5663,7 +5706,7 @@ }, "eventlistener": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/eventlistener/-/eventlistener-0.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/eventlistener/download/eventlistener-0.0.1.tgz", "integrity": "sha1-7Suqu4UiJ68rz4iRUscsY8pTLrg=" }, "events": { @@ -6194,6 +6237,41 @@ "bser": "2.1.1" } }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/fbemitter/download/fbemitter-3.0.0.tgz", + "integrity": "sha1-ALKhr1QRJUqrQWzXX55iib7kv/M=", + "dev": true, + "requires": { + "fbjs": "^3.0.0" + }, + "dependencies": { + "fbjs": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/fbjs/download/fbjs-3.0.0.tgz?cache=0&sync_timestamp=1602048313843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffbjs%2Fdownload%2Ffbjs-3.0.0.tgz", + "integrity": "sha1-CQcGf7P1enj0XZXx6s/8rNYjwWU=", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + } + } + }, "fbjs": { "version": "0.8.17", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", @@ -6223,6 +6301,12 @@ } } }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/fbjs-css-vars/download/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha1-IWVRE2rgL+JVkyw+yHdfGOLAeLg=", + "dev": true + }, "fecha": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", @@ -6667,6 +6751,42 @@ "readable-stream": "^2.3.6" } }, + "flux": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/flux/download/flux-4.0.1.tgz", + "integrity": "sha1-eENQKwKEHUqqU0rws3MDSh917lw=", + "dev": true, + "requires": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.0" + }, + "dependencies": { + "fbjs": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/fbjs/download/fbjs-3.0.0.tgz?cache=0&sync_timestamp=1602048313843&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffbjs%2Fdownload%2Ffbjs-3.0.0.tgz", + "integrity": "sha1-CQcGf7P1enj0XZXx6s/8rNYjwWU=", + "dev": true, + "requires": { + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + } + } + }, "flv.js": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.5.0.tgz", @@ -7920,7 +8040,7 @@ }, "hammerjs": { "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "resolved": "https://registry.npm.taobao.org/hammerjs/download/hammerjs-2.0.8.tgz", "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "handle-thing": { @@ -8761,7 +8881,7 @@ }, "immutable": { "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "resolved": "https://registry.npm.taobao.org/immutable/download/immutable-3.7.6.tgz", "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=" }, "import-fresh": { @@ -9175,9 +9295,9 @@ } }, "is-mobile": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-2.2.1.tgz", - "integrity": "sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA==" + "version": "2.2.2", + "resolved": "https://registry.nlark.com/is-mobile/download/is-mobile-2.2.2.tgz", + "integrity": "sha1-9snF1Q7gElTOBec5vdg18e1OmVQ=" }, "is-npm": { "version": "1.0.0", @@ -9883,6 +10003,11 @@ "esprima": "^4.0.0" } }, + "js2wordcloud": { + "version": "1.1.12", + "resolved": "https://registry.npm.taobao.org/js2wordcloud/download/js2wordcloud-1.1.12.tgz", + "integrity": "sha1-8BdC2k5qyzAAsoY1dmQWjvn8o64=" + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -10305,6 +10430,12 @@ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/lodash.curry/download/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -10315,6 +10446,12 @@ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.flow/download/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=", + "dev": true + }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -10349,7 +10486,7 @@ }, "lodash.throttle": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "resolved": "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz", "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" }, "lodash.uniq": { @@ -11404,8 +11541,8 @@ }, "omit.js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz", - "integrity": "sha512-/QPc6G2NS+8d4L/cQhbk6Yit1WTB6Us2g84A7A/1+w9d/eRGHyEqC5kkQtHVoHZ5NFWGG7tUGgrhVZwgZanKrQ==", + "resolved": "https://registry.npm.taobao.org/omit.js/download/omit.js-1.0.2.tgz", + "integrity": "sha1-kaFPDrqEBm36AVvzDkdMR/MLyFg=", "requires": { "babel-runtime": "^6.23.0" } @@ -11536,7 +11673,7 @@ }, "output-file-sync": { "version": "1.1.2", - "resolved": "https://registry.npm.taobao.org/output-file-sync/download/output-file-sync-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { @@ -13945,6 +14082,12 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/pure-color/download/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=", + "dev": true + }, "purgecss": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.1.2.tgz", @@ -14019,9 +14162,9 @@ "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" }, "qrcode.react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-1.0.0.tgz", - "integrity": "sha512-jBXleohRTwvGBe1ngV+62QvEZ/9IZqQivdwzo9pJM4LQMoCM2VnvNBnKdjvGnKyDZ/l0nCDgsPod19RzlPvm/Q==", + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/qrcode.react/download/qrcode.react-1.0.1.tgz", + "integrity": "sha1-KDS7UOXidf/lr2kG7/FTkf6eOKU=", "requires": { "loose-envify": "^1.4.0", "prop-types": "^15.6.0", @@ -14208,9 +14351,9 @@ } }, "rc-calendar": { - "version": "9.15.10", - "resolved": "https://registry.npmjs.org/rc-calendar/-/rc-calendar-9.15.10.tgz", - "integrity": "sha512-xh1A3rYejKskAvkjnd9BcHXFbBnAYsHMGHBdtoAkbwp43B6yEieNL0g0Tzz8s1gApDZV2j5vF1jJ9IIpPYFNLw==", + "version": "9.15.11", + "resolved": "https://registry.npm.taobao.org/rc-calendar/download/rc-calendar-9.15.11.tgz", + "integrity": "sha1-zh5eqOTXdDW+ZqjHfbEvHw+aNF8=", "requires": { "babel-runtime": "6.x", "classnames": "2.x", @@ -14223,8 +14366,8 @@ }, "rc-cascader": { "version": "0.17.5", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-0.17.5.tgz", - "integrity": "sha512-WYMVcxU0+Lj+xLr4YYH0+yXODumvNXDcVEs5i7L1mtpWwYkubPV/zbQpn+jGKFCIW/hOhjkU4J1db8/P/UKE7A==", + "resolved": "https://registry.npm.taobao.org/rc-cascader/download/rc-cascader-0.17.5.tgz?cache=0&sync_timestamp=1610107054432&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-cascader%2Fdownload%2Frc-cascader-0.17.5.tgz", + "integrity": "sha1-T96R0jt2CMQgJjw47unAaH+A99w=", "requires": { "array-tree-filter": "^2.1.0", "prop-types": "^15.5.8", @@ -14237,8 +14380,8 @@ }, "rc-checkbox": { "version": "2.1.8", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.1.8.tgz", - "integrity": "sha512-6qOgh0/by0nVNASx6LZnhRTy17Etcgav+IrI7kL9V9kcDZ/g7K14JFlqrtJ3NjDq/Kyn+BPI1st1XvbkhfaJeg==", + "resolved": "https://registry.npm.taobao.org/rc-checkbox/download/rc-checkbox-2.1.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-checkbox%2Fdownload%2Frc-checkbox-2.1.8.tgz", + "integrity": "sha1-7t2e+cLzr1s7jlzeUlSqia0aiAo=", "requires": { "babel-runtime": "^6.23.0", "classnames": "2.x", @@ -14248,8 +14391,8 @@ }, "rc-collapse": { "version": "1.11.8", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-1.11.8.tgz", - "integrity": "sha512-8EhfPyScTYljkbRuIoHniSwZagD5UPpZ3CToYgoNYWC85L2qCbPYF7+OaC713FOrIkp6NbfNqXsITNxmDAmxog==", + "resolved": "https://registry.npm.taobao.org/rc-collapse/download/rc-collapse-1.11.8.tgz?cache=0&sync_timestamp=1606217065785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-collapse%2Fdownload%2Frc-collapse-1.11.8.tgz", + "integrity": "sha1-ZqQAidRpUZ6UJACasckn4hQEHYA=", "requires": { "classnames": "2.x", "css-animation": "1.x", @@ -14262,8 +14405,8 @@ }, "rc-dialog": { "version": "7.6.1", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-7.6.1.tgz", - "integrity": "sha512-KUKf+2eZ4YL+lnXMG3hR4ZtIhC9glfH27NtTVz3gcoDIPAf3uUvaXVRNoDCiSi+OGKLyIb/b6EoidFh6nQC5Wg==", + "resolved": "https://registry.npm.taobao.org/rc-dialog/download/rc-dialog-7.6.1.tgz?cache=0&sync_timestamp=1614949683544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-dialog%2Fdownload%2Frc-dialog-7.6.1.tgz", + "integrity": "sha1-EVRczAuUWTT6dgeXJuDYU+UtcF8=", "requires": { "babel-runtime": "6.x", "rc-animate": "2.x", @@ -14272,8 +14415,8 @@ }, "rc-drawer": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-3.1.3.tgz", - "integrity": "sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg==", + "resolved": "https://registry.npm.taobao.org/rc-drawer/download/rc-drawer-3.1.3.tgz?cache=0&sync_timestamp=1614159639291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-drawer%2Fdownload%2Frc-drawer-3.1.3.tgz", + "integrity": "sha1-y8sE1MB/C2by7OEdhH9KG9gOoLc=", "requires": { "classnames": "^2.2.6", "rc-util": "^4.16.1", @@ -14282,8 +14425,8 @@ }, "rc-dropdown": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-2.4.1.tgz", - "integrity": "sha512-p0XYn0wrOpAZ2fUGE6YJ6U8JBNc5ASijznZ6dkojdaEfQJAeZtV9KMEewhxkVlxGSbbdXe10ptjBlTEW9vEwEg==", + "resolved": "https://registry.npm.taobao.org/rc-dropdown/download/rc-dropdown-2.4.1.tgz?cache=0&sync_timestamp=1600332782526&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-dropdown%2Fdownload%2Frc-dropdown-2.4.1.tgz", + "integrity": "sha1-qu9us6UVLN2ZgolcKnjZtfBGzew=", "requires": { "babel-runtime": "^6.26.0", "classnames": "^2.2.6", @@ -14294,8 +14437,8 @@ }, "rc-editor-core": { "version": "0.8.10", - "resolved": "https://registry.npmjs.org/rc-editor-core/-/rc-editor-core-0.8.10.tgz", - "integrity": "sha512-T3aHpeMCIYA1sdAI7ynHHjXy5fqp83uPlD68ovZ0oClTSc3tbHmyCxXlA+Ti4YgmcpCYv7avF6a+TIbAka53kw==", + "resolved": "https://registry.npm.taobao.org/rc-editor-core/download/rc-editor-core-0.8.10.tgz", + "integrity": "sha1-byFbxd+cM/+p9sWzDKc6favoq3w=", "requires": { "babel-runtime": "^6.26.0", "classnames": "^2.2.5", @@ -14308,8 +14451,8 @@ }, "rc-editor-mention": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/rc-editor-mention/-/rc-editor-mention-1.1.13.tgz", - "integrity": "sha512-3AOmGir91Fi2ogfRRaXLtqlNuIwQpvla7oUnGHS1+3eo7b+fUp5IlKcagqtwUBB5oDNofoySXkLBxzWvSYNp/Q==", + "resolved": "https://registry.npm.taobao.org/rc-editor-mention/download/rc-editor-mention-1.1.13.tgz", + "integrity": "sha1-nxyrEGX4awFSOEAyF5DCqxKsXos=", "requires": { "babel-runtime": "^6.23.0", "classnames": "^2.2.5", @@ -14337,9 +14480,9 @@ } }, "rc-hammerjs": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz", - "integrity": "sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==", + "version": "0.6.10", + "resolved": "https://registry.npm.taobao.org/rc-hammerjs/download/rc-hammerjs-0.6.10.tgz", + "integrity": "sha1-GDGjvY8hmXAL/MWtayCjVjCuteA=", "requires": { "babel-runtime": "6.x", "hammerjs": "^2.0.8", @@ -14347,9 +14490,9 @@ } }, "rc-input-number": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-4.5.6.tgz", - "integrity": "sha512-AXbL4gtQ1mSQnu6v/JtMv3UbGRCzLvQznmf0a7U/SAtZ8+dCEAqD4JpJhkjv73Wog53eRYhw4l7ApdXflc9ymg==", + "version": "4.5.9", + "resolved": "https://registry.nlark.com/rc-input-number/download/rc-input-number-4.5.9.tgz?cache=0&sync_timestamp=1619578110950&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frc-input-number%2Fdownload%2Frc-input-number-4.5.9.tgz", + "integrity": "sha1-HL9zXiT+I8TrmkMBAxcguV8qPj0=", "requires": { "babel-runtime": "6.x", "classnames": "^2.2.0", @@ -14360,8 +14503,8 @@ }, "rc-mentions": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-0.4.2.tgz", - "integrity": "sha512-DTZurQzacLXOfVuiHydGzqkq7cFMHXF18l2jZ9PhWUn2cqvOSY3W4osN0Pq29AOMOBpcxdZCzgc7Lb0r/bgkDw==", + "resolved": "https://registry.npm.taobao.org/rc-mentions/download/rc-mentions-0.4.2.tgz?cache=0&sync_timestamp=1610510822768&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-mentions%2Fdownload%2Frc-mentions-0.4.2.tgz", + "integrity": "sha1-wYq3Ae+55LdbOFGgwNLdaYZA4kY=", "requires": { "@ant-design/create-react-context": "^0.2.4", "classnames": "^2.2.6", @@ -14389,8 +14532,8 @@ }, "rc-notification": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-3.3.1.tgz", - "integrity": "sha512-U5+f4BmBVfMSf3OHSLyRagsJ74yKwlrQAtbbL5ijoA0F2C60BufwnOcHG18tVprd7iaIjzZt1TKMmQSYSvgrig==", + "resolved": "https://registry.npm.taobao.org/rc-notification/download/rc-notification-3.3.1.tgz?cache=0&sync_timestamp=1614675471156&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-notification%2Fdownload%2Frc-notification-3.3.1.tgz", + "integrity": "sha1-C6o+cPjUCrAVzo+njCYMSQ/HvrQ=", "requires": { "babel-runtime": "6.x", "classnames": "2.x", @@ -14411,9 +14554,9 @@ } }, "rc-progress": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-2.5.2.tgz", - "integrity": "sha512-ajI+MJkbBz9zYDuE9GQsY5gsyqPF7HFioZEDZ9Fmc+ebNZoiSeSJsTJImPFCg0dW/5WiRGUy2F69SX1aPtSJgA==", + "version": "2.5.3", + "resolved": "https://registry.npm.taobao.org/rc-progress/download/rc-progress-2.5.3.tgz", + "integrity": "sha1-APAblb2+GFbTpfgiQgUZAui3qOc=", "requires": { "babel-runtime": "6.x", "prop-types": "^15.5.8" @@ -14430,8 +14573,8 @@ }, "rc-resize-observer": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-0.1.3.tgz", - "integrity": "sha512-uzOQEwx83xdQSFOkOAM7x7GHIQKYnrDV4dWxtCxyG1BS1pkfJ4EvDeMfsvAJHSYkQXVBu+sgRHGbRtLG3qiuUg==", + "resolved": "https://registry.npm.taobao.org/rc-resize-observer/download/rc-resize-observer-0.1.3.tgz?cache=0&sync_timestamp=1608864858155&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-resize-observer%2Fdownload%2Frc-resize-observer-0.1.3.tgz", + "integrity": "sha1-CXGR+cOrGG7ZB7VTum71Zd8Rwkk=", "requires": { "classnames": "^2.2.1", "rc-util": "^4.13.0", @@ -14459,8 +14602,8 @@ }, "rc-slider": { "version": "8.7.1", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-8.7.1.tgz", - "integrity": "sha512-WMT5mRFUEcrLWwTxsyS8jYmlaMsTVCZIGENLikHsNv+tE8ThU2lCoPfi/xFNUfJFNFSBFP3MwPez9ZsJmNp13g==", + "resolved": "https://registry.npm.taobao.org/rc-slider/download/rc-slider-8.7.1.tgz?cache=0&sync_timestamp=1616675519253&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-slider%2Fdownload%2Frc-slider-8.7.1.tgz", + "integrity": "sha1-ntBzYtyTSJo45lSyG4EirXD9PEI=", "requires": { "babel-runtime": "6.x", "classnames": "^2.2.5", @@ -14474,8 +14617,8 @@ }, "rc-steps": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-3.5.0.tgz", - "integrity": "sha512-2Vkkrpa7PZbg7qPsqTNzVDov4u78cmxofjjnIHiGB9+9rqKS8oTLPzbW2uiWDr3Lk+yGwh8rbpGO1E6VAgBCOg==", + "resolved": "https://registry.npm.taobao.org/rc-steps/download/rc-steps-3.5.0.tgz", + "integrity": "sha1-NrKn8fSZB7DZA2OISxhiPK+ftgA=", "requires": { "babel-runtime": "^6.23.0", "classnames": "^2.2.3", @@ -14484,9 +14627,9 @@ } }, "rc-switch": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-1.9.0.tgz", - "integrity": "sha512-Isas+egaK6qSk64jaEw4GgPStY4umYDbT7ZY93bZF1Af+b/JEsKsJdNOU2qG3WI0Z6tXo2DDq0kJCv8Yhu0zww==", + "version": "1.9.2", + "resolved": "https://registry.npm.taobao.org/rc-switch/download/rc-switch-1.9.2.tgz?cache=0&sync_timestamp=1603791200779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-switch%2Fdownload%2Frc-switch-1.9.2.tgz", + "integrity": "sha1-eSHHZkEf6aZCZRDDQpAi1rpN/eI=", "requires": { "classnames": "^2.2.1", "prop-types": "^15.5.6", @@ -14495,8 +14638,8 @@ }, "rc-table": { "version": "6.10.15", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-6.10.15.tgz", - "integrity": "sha512-LAr0M/gqt+irOjvPNBLApmQ0CUHNOfKsEBhu1uIuB3OlN1ynA9z+sdoTQyNd9+8NSl0MYnQOOfhtLChAY7nU0A==", + "resolved": "https://registry.nlark.com/rc-table/download/rc-table-6.10.15.tgz", + "integrity": "sha1-GB9McMT9dPZX7o8jGW5+sIoDZco=", "requires": { "classnames": "^2.2.5", "component-classes": "^1.2.6", @@ -14510,8 +14653,8 @@ }, "rc-tabs": { "version": "9.7.0", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-9.7.0.tgz", - "integrity": "sha512-kvmgp8/MfLzFZ06hWHignqomFQ5nF7BqKr5O1FfhE4VKsGrep52YSF/1MvS5oe0NPcI9XGNS2p751C5v6cYDpQ==", + "resolved": "https://registry.npm.taobao.org/rc-tabs/download/rc-tabs-9.7.0.tgz?cache=0&sync_timestamp=1608866453009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-tabs%2Fdownload%2Frc-tabs-9.7.0.tgz", + "integrity": "sha1-rglpW+9ZY9bmTnvBBSHHbf3YRIs=", "requires": { "@ant-design/create-react-context": "^0.2.4", "babel-runtime": "6.x", @@ -14528,8 +14671,8 @@ "dependencies": { "raf": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "resolved": "https://registry.npm.taobao.org/raf/download/raf-3.4.1.tgz", + "integrity": "sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=", "requires": { "performance-now": "^2.1.0" } @@ -14538,8 +14681,8 @@ }, "rc-time-picker": { "version": "3.7.3", - "resolved": "https://registry.npmjs.org/rc-time-picker/-/rc-time-picker-3.7.3.tgz", - "integrity": "sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg==", + "resolved": "https://registry.npm.taobao.org/rc-time-picker/download/rc-time-picker-3.7.3.tgz?cache=0&sync_timestamp=1576572941972&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-time-picker%2Fdownload%2Frc-time-picker-3.7.3.tgz", + "integrity": "sha1-ZajekECTJQrpyCsCpJBeD5leI+I=", "requires": { "classnames": "2.x", "moment": "2.x", @@ -14551,8 +14694,8 @@ "dependencies": { "raf": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "resolved": "https://registry.npm.taobao.org/raf/download/raf-3.4.1.tgz", + "integrity": "sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=", "requires": { "performance-now": "^2.1.0" } @@ -14561,8 +14704,8 @@ }, "rc-tooltip": { "version": "3.7.3", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-3.7.3.tgz", - "integrity": "sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==", + "resolved": "https://registry.npm.taobao.org/rc-tooltip/download/rc-tooltip-3.7.3.tgz?cache=0&sync_timestamp=1614588684791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-tooltip%2Fdownload%2Frc-tooltip-3.7.3.tgz", + "integrity": "sha1-KArsavyqROjf8EgPuv+eh/wArsw=", "requires": { "babel-runtime": "6.x", "prop-types": "^15.5.8", @@ -14610,8 +14753,8 @@ }, "rc-tree-select": { "version": "2.9.4", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-2.9.4.tgz", - "integrity": "sha512-0HQkXAN4XbfBW20CZYh3G+V+VMrjX42XRtDCpyv6PDUm5vikC0Ob682ZBCVS97Ww2a5Hf6Ajmu0ahWEdIEpwhg==", + "resolved": "https://registry.nlark.com/rc-tree-select/download/rc-tree-select-2.9.4.tgz", + "integrity": "sha1-aqeU4fDmXGbEBqoKKg50/QpVewk=", "requires": { "classnames": "^2.2.1", "dom-scroll-into-view": "^1.2.1", @@ -14628,8 +14771,8 @@ "dependencies": { "rc-tree": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-2.1.4.tgz", - "integrity": "sha512-Xey794Iavgs8YldFlXcZLOhfcIhlX5Oz/yfKufknBXf2AlZCOkc7aHqSM9uTF7fBPtTGPhPxNEfOqHfY7b7xng==", + "resolved": "https://registry.npm.taobao.org/rc-tree/download/rc-tree-2.1.4.tgz?cache=0&sync_timestamp=1615350038621&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-tree%2Fdownload%2Frc-tree-2.1.4.tgz", + "integrity": "sha1-73WfPnmaIbQ8Hs+ceU6hwU5wtZs=", "requires": { "@ant-design/create-react-context": "^0.2.4", "classnames": "2.x", @@ -14642,8 +14785,8 @@ }, "rc-trigger": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-3.0.0.tgz", - "integrity": "sha512-hQxbbJpo23E2QnYczfq3Ec5J5tVl2mUDhkqxrEsQAqk16HfADQg+iKNWzEYXyERSncdxfnzYuaBgy764mNRzTA==", + "resolved": "https://registry.nlark.com/rc-trigger/download/rc-trigger-3.0.0.tgz?cache=0&sync_timestamp=1619590696046&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frc-trigger%2Fdownload%2Frc-trigger-3.0.0.tgz", + "integrity": "sha1-9tmx2oomsrLR2RKgaHbBpIb1mA8=", "requires": { "babel-runtime": "6.x", "classnames": "^2.2.6", @@ -14655,18 +14798,14 @@ }, "dependencies": { "rc-animate": { - "version": "3.0.0-rc.6", - "resolved": "https://registry.npmjs.org/rc-animate/-/rc-animate-3.0.0-rc.6.tgz", - "integrity": "sha512-oBLPpiT6Q4t6YvD/pkLcmofBP1p01TX0Otse8Q4+Mxt8J+VSDflLZGIgf62EwkvRwsQUkLPjZVFBsldnPKLzjg==", + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/rc-animate/download/rc-animate-3.1.1.tgz?cache=0&sync_timestamp=1601018005635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frc-animate%2Fdownload%2Frc-animate-3.1.1.tgz", + "integrity": "sha1-3v3YY/VoFsIiU05Nxo/t3s0IE4Y=", "requires": { - "babel-runtime": "6.x", - "classnames": "^2.2.5", - "component-classes": "^1.2.6", - "fbjs": "^0.8.16", - "prop-types": "15.x", + "@ant-design/css-animation": "^1.7.2", + "classnames": "^2.2.6", "raf": "^3.4.0", - "rc-util": "^4.5.0", - "react-lifecycles-compat": "^3.0.4" + "rc-util": "^4.15.3" } } } @@ -14720,6 +14859,18 @@ "prop-types": "^15.6.2" } }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/react-base16-styling/download/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "dev": true, + "requires": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, "react-beautiful-dnd": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-10.1.1.tgz", @@ -15085,6 +15236,18 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npm.taobao.org/react-json-view/download/react-json-view-1.21.3.tgz", + "integrity": "sha1-8YQgnujxvzdPsMQbCBPP9UVJxHU=", + "dev": true, + "requires": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + } + }, "react-jss": { "version": "8.6.1", "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-8.6.1.tgz", @@ -15105,9 +15268,9 @@ } }, "react-lazy-load": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/react-lazy-load/-/react-lazy-load-3.0.13.tgz", - "integrity": "sha1-OwqS0zbUPT8Nc8vm81sXBQsIuCQ=", + "version": "3.1.13", + "resolved": "https://registry.npm.taobao.org/react-lazy-load/download/react-lazy-load-3.1.13.tgz?cache=0&sync_timestamp=1593654792284&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-lazy-load%2Fdownload%2Freact-lazy-load-3.1.13.tgz", + "integrity": "sha1-I2lD92twhMyEWHFtljKhyYU+pc0=", "requires": { "eventlistener": "0.0.1", "lodash.debounce": "^4.0.0", @@ -15244,9 +15407,9 @@ } }, "react-slick": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", - "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", + "version": "0.28.1", + "resolved": "https://registry.nlark.com/react-slick/download/react-slick-0.28.1.tgz", + "integrity": "sha1-EsGNmRtZQy35w3V7pUCiJ7P7hbk=", "requires": { "classnames": "^2.2.5", "enquire.js": "^2.1.6", @@ -15273,6 +15436,34 @@ "prop-types": "^15.5.4" } }, + "react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.nlark.com/react-textarea-autosize/download/react-textarea-autosize-8.3.3.tgz?cache=0&sync_timestamp=1622628433420&other_urls=https%3A%2F%2Fregistry.nlark.com%2Freact-textarea-autosize%2Fdownload%2Freact-textarea-autosize-8.3.3.tgz", + "integrity": "sha1-9wkTlFNp2kU/1VTBaPa6rNH6BNg=", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.8", + "resolved": "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.8.tgz", + "integrity": "sha1-cRmlb0IQGIUmlCkLn5FICXORtEY=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz?cache=0&sync_timestamp=1626993001371&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.9.tgz", + "integrity": "sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=", + "dev": true + } + } + }, "react-transition-group": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", @@ -16090,8 +16281,8 @@ }, "rmc-feedback": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rmc-feedback/-/rmc-feedback-2.0.0.tgz", - "integrity": "sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==", + "resolved": "https://registry.npm.taobao.org/rmc-feedback/download/rmc-feedback-2.0.0.tgz", + "integrity": "sha1-y8bLOuY8emNe7w4l5PuvWsNm7qo=", "requires": { "babel-runtime": "6.x", "classnames": "^2.2.5" @@ -16674,8 +16865,8 @@ }, "shallow-equal": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + "resolved": "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.1.tgz", + "integrity": "sha1-TBar+lYEOqINBQMk76aJQLDaedo=" }, "shallowequal": { "version": "1.1.0", @@ -17029,6 +17220,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "slick-carousel": { + "version": "1.8.1", + "resolved": "https://registry.npm.taobao.org/slick-carousel/download/slick-carousel-1.8.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslick-carousel%2Fdownload%2Fslick-carousel-1.8.1.tgz", + "integrity": "sha1-pL+ykBSIe7Zs5Si5C9DNomLMj40=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -18363,6 +18559,12 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-essentials": { + "version": "2.0.12", + "resolved": "https://registry.nlark.com/ts-essentials/download/ts-essentials-2.0.12.tgz", + "integrity": "sha1-yTA/PXT3X6dSjD1JuA4ImrCdh0U=", + "dev": true + }, "tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", @@ -18872,9 +19074,33 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-composed-ref": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/use-composed-ref/download/use-composed-ref-1.1.0.tgz", + "integrity": "sha1-kiDk6UqXt7AtfSfq6rCzcDRDi7w=", + "dev": true, + "requires": { + "ts-essentials": "^2.0.3" + } + }, + "use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/use-isomorphic-layout-effect/download/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha1-e7ZYkXDNKYehUgQvkIT57/t1wiU=", + "dev": true + }, + "use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/use-latest/download/use-latest-1.2.0.tgz", + "integrity": "sha1-pE9lcrgojgly7EEb3QhAraNm8jI=", + "dev": true, + "requires": { + "use-isomorphic-layout-effect": "^1.0.0" + } + }, "user-home": { "version": "1.1.1", - "resolved": "https://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", "dev": true }, @@ -18931,7 +19157,7 @@ }, "v8flags": { "version": "2.1.1", - "resolved": "https://registry.npm.taobao.org/v8flags/download/v8flags-2.1.1.tgz?cache=0&sync_timestamp=1590964281452&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fv8flags%2Fdownload%2Fv8flags-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { @@ -20522,9 +20748,9 @@ } }, "zrender": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.0.tgz", - "integrity": "sha512-Dii6j2bDsPkxQayuVf2DXJeruIB/mKVxxcGRZQ9GExiBd4c3w7+oBuvo1O/JGHeFeA1nCmSDVDs/S7yKZG1nrA==" + "version": "4.3.2", + "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.3.2.tgz", + "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY=" } } } diff --git a/package.json b/package.json index 5ad750143..a78351cba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "forge", - "version": "0.1.0", + "version": "3.0.0", "private": true, "dependencies": { "@monaco-editor/react": "^2.3.0", @@ -14,6 +14,7 @@ "babel-jest": "20.0.3", "babel-loader": "7.1.2", "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-polyfill": "^6.26.0", "babel-preset-react-app": "^3.1.1", "babel-runtime": "6.26.0", "bizcharts": "^3.5.8", @@ -29,7 +30,8 @@ "dompurify": "^2.0.15", "dotenv": "4.0.0", "dotenv-expand": "4.2.0", - "echarts": "^4.7.0", + "echarts": "^4.9.0", + "echarts-wordcloud": "^2.0.0", "editor.md": "^1.5.0", "eslint": "4.10.0", "eslint-config-react-app": "^2.1.0", @@ -46,6 +48,7 @@ "install": "^0.12.2", "jest": "20.0.4", "js-base64": "^2.5.2", + "js2wordcloud": "^1.1.12", "katex": "^0.11.1", "lodash": "^4.17.15", "loglevel": "^1.6.8", @@ -62,7 +65,7 @@ "postcss-loader": "2.0.8", "promise": "8.0.1", "prop-types": "^15.6.1", - "qrcode.react": "^1.0.0", + "qrcode.react": "^1.0.1", "qs": "^6.9.3", "quill": "^1.3.7", "quill-delta-to-html": "^0.11.0", @@ -92,6 +95,7 @@ "react-resizable": "^1.10.1", "react-router": "^4.2.0", "react-router-dom": "^4.2.2", + "react-slick": "^0.28.1", "react-split-pane": "^0.1.91", "react-url-query": "^1.5.0", "react-zmage": "^0.8.5-beta.31", @@ -102,6 +106,7 @@ "scroll-into-view": "^1.14.2", "showdown": "^1.9.1", "showdown-katex": "^0.8.0", + "slick-carousel": "^1.8.1", "store": "^2.0.12", "style-loader": "0.19.0", "styled-components": "^4.4.1", @@ -188,6 +193,7 @@ "babel-core": "^6.26.0", "babel-plugin-import": "^1.13.0", "babel-plugin-transform-runtime": "^6.23.0", + "babel-polyfill": "^6.26.0", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-2": "^6.24.1", @@ -198,6 +204,7 @@ "node-sass": "^4.12.0", "optimize-css-assets-webpack-plugin": "^5.0.3", "purgecss": "^2.1.2", + "react-json-view": "^1.21.3", "reqwest": "^2.0.5", "resize-observer-polyfill": "^1.5.1", "terser-webpack-plugin": "^2.3.5", diff --git a/public/css/editormd.min.css b/public/css/editormd.min.css index 5e7388865..113ccc672 100755 --- a/public/css/editormd.min.css +++ b/public/css/editormd.min.css @@ -2,4 +2,4 @@ @charset "UTF-8";/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */.fa-ul,.markdown-body .task-list-item,li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}.editormd-form br,.markdown-body hr:after{clear:both}.editormd{width:90%;height:640px;margin:0 auto 15px;text-align:left;overflow:hidden;position:relative;border:1px solid #ddd;font-family:"Meiryo UI","Microsoft YaHei","Malgun Gothic","Segoe UI","Trebuchet MS",Helvetica,Monaco,monospace,Tahoma,STXihei,"华文细黑",STHeiti,"Helvetica Neue","Droid Sans","wenquanyi micro hei",FreeSans,Arimo,Arial,SimSun,"宋体",Heiti,"黑体",sans-serif}.editormd *,.editormd :after,.editormd :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.editormd a{text-decoration:none}.editormd img{border:none;vertical-align:middle}.editormd .editormd-html-textarea,.editormd .editormd-markdown-textarea,.editormd>textarea{width:0;height:0;outline:0;resize:none}.editormd .editormd-html-textarea,.editormd .editormd-markdown-textarea{display:none}.editormd button,.editormd input[type=text],.editormd input[type=button],.editormd input[type=submit],.editormd select,.editormd textarea{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none}.editormd ::-webkit-scrollbar{height:10px;width:7px;background:rgba(0,0,0,.1)}.editormd ::-webkit-scrollbar:hover{background:rgba(0,0,0,.2)}.editormd ::-webkit-scrollbar-thumb{background:rgba(0,0,0,.3);-webkit-border-radius:6px;-moz-border-radius:6px;-ms-border-radius:6px;-o-border-radius:6px;border-radius:6px}.editormd ::-webkit-scrollbar-thumb:hover{-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25);-moz-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25);-ms-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25);-o-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25);box-shadow:inset 1px 1px 1px rgba(0,0,0,.25);background-color:rgba(0,0,0,.4)}.editormd-user-unselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.editormd-toolbar{width:100%;min-height:37px;background:#fff;display:none;position:absolute;top:0;left:0;z-index:10;border-bottom:1px solid #ddd}.editormd-toolbar-container{padding:0 8px;min-height:35px;-o-user-select:none;user-select:none}.editormd-toolbar-container,.markdown-body .octicon{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.editormd-menu,.markdown-body ol,.markdown-body td,.markdown-body th,.markdown-body ul{padding:0}.editormd-menu{margin:0;list-style:none}.editormd-menu>li{margin:0;padding:5px 1px;display:inline-block;position:relative}.editormd-menu>li.divider{display:inline-block;text-indent:-9999px;margin:0 5px;height:65%;border-right:1px solid #ddd}.editormd-menu>li>a{outline:0;color:#666;display:inline-block;min-width:24px;font-size:16px;text-decoration:none;text-align:center;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;border:1px solid #fff;transition:all 300ms ease-out}.editormd-dropdown-menu>li>a:hover,.editormd-menu>li>a{-webkit-transition:all 300ms ease-out;-moz-transition:all 300ms ease-out}.editormd-menu>li>a.active,.editormd-menu>li>a:hover{border:1px solid #ddd;background:#eee}.editormd-menu>li>a>.fa{text-align:center;display:block;padding:5px}.editormd-menu>li>a>.editormd-bold{padding:5px 2px;display:inline-block;font-weight:700}.editormd-menu>li:hover .editormd-dropdown-menu{display:block}.editormd-menu>li+li>a{margin-left:3px}.editormd-dropdown-menu{display:none;background:#fff;border:1px solid #ddd;width:148px;list-style:none;position:absolute;top:33px;left:0;z-index:100;-webkit-box-shadow:1px 2px 6px rgba(0,0,0,.15);-moz-box-shadow:1px 2px 6px rgba(0,0,0,.15);-ms-box-shadow:1px 2px 6px rgba(0,0,0,.15);-o-box-shadow:1px 2px 6px rgba(0,0,0,.15);box-shadow:1px 2px 6px rgba(0,0,0,.15)}.editormd-dropdown-menu:after,.editormd-dropdown-menu:before{width:0;height:0;display:block;content:"";position:absolute;top:-11px;left:8px;border:5px solid transparent}.editormd-dropdown-menu:before{border-bottom-color:#ccc}.editormd-dropdown-menu:after{border-bottom-color:#fff;top:-10px}.editormd-dropdown-menu>li>a{color:#666;display:block;text-decoration:none;padding:8px 10px}.editormd-dropdown-menu>li>a:hover{background:#f6f6f6;transition:all 300ms ease-out}.editormd-dropdown-menu>li+li{border-top:1px solid #ddd}.editormd-container{margin:0;width:100%;height:100%;overflow:hidden;padding:35px 0 0;position:relative;background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.editormd-dialog{color:#666;position:fixed;z-index:99999;display:none;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 10px rgba(0,0,0,.3);-moz-box-shadow:0 0 10px rgba(0,0,0,.3);-ms-box-shadow:0 0 10px rgba(0,0,0,.3);-o-box-shadow:0 0 10px rgba(0,0,0,.3);box-shadow:0 0 10px rgba(0,0,0,.3);background:#fff;font-size:14px}.editormd-dialog-container{position:relative;padding:20px;line-height:1.4}.editormd-dialog-container h1{font-size:24px;margin-bottom:10px}.editormd-dialog-container h1 .fa{color:#2C7EEA;padding-right:5px}.editormd-dialog-container h1 small{padding-left:5px;font-weight:400;font-size:12px;color:#999}.editormd-dialog-container select{color:#999;padding:3px 8px;border:1px solid #ddd}.editormd-dialog-close{position:absolute;top:12px;right:15px;font-size:18px;color:#ccc;-webkit-transition:color 300ms ease-out;-moz-transition:color 300ms ease-out;transition:color 300ms ease-out}.editormd-dialog-close:hover{color:#999}.editormd-dialog-header{padding:11px 20px;border-bottom:1px solid #eee;-webkit-transition:background 300ms ease-out;-moz-transition:background 300ms ease-out;transition:background 300ms ease-out}.editormd-dialog-header:hover{background:#f6f6f6}.editormd-dialog-title{font-size:14px}.editormd-dialog-footer{padding:10px 0 0;text-align:right}.editormd-dialog-info{width:420px}.editormd-dialog-info h1{font-weight:400}.editormd-dialog-info .editormd-dialog-container{padding:20px 25px 25px}.editormd-dialog-info .editormd-dialog-close{top:10px;right:10px}.editormd-dialog-info .hover-link:hover,.editormd-dialog-info p>a{color:#2196F3}.editormd-dialog-info .hover-link{color:#666}.editormd-dialog-info a .fa-external-link{display:none}.editormd-dialog-info a:hover{color:#2196F3}.editormd-dialog-info a:hover .fa-external-link{display:inline-block}.editormd-container-mask,.editormd-dialog-mask,.editormd-mask{display:none;width:100%;height:100%;position:absolute;top:0;left:0}.editormd-dialog-mask-bg,.editormd-mask{background:#fff;opacity:.5;filter:alpha(opacity=50)}.editormd-mask{position:fixed;background:#000;opacity:.2;filter:alpha(opacity=20);z-index:99998}.editormd-container-mask,.editormd-dialog-mask-con{background:url(../images/loading.gif)center center no-repeat;-webkit-background-size:32px 32px;-moz-background-size:32px 32px;-o-background-size:32px 32px;background-size:32px 32px}.editormd-container-mask{z-index:20;display:block;background-color:#fff}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.editormd-container-mask,.editormd-dialog-mask-con{background-image:url(../images/loading@2x.gif)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-device-pixel-ratio:3){.editormd-container-mask,.editormd-dialog-mask-con{background-image:url(../images/loading@3x.gif)}}.editormd-code-block-dialog textarea,.editormd-preformatted-text-dialog textarea{width:100%;height:400px;margin-bottom:6px;overflow:auto;border:1px solid #eee;background:#fff;padding:15px;resize:none}.editormd-code-toolbar{color:#999;font-size:14px;margin:-5px 0 10px}.editormd-grid-table{width:99%;display:table;border:1px solid #ddd;border-collapse:collapse}.editormd-grid-table-row{width:100%;display:table-row}.editormd-grid-table-row a{font-size:1.4em;width:5%;height:36px;color:#999;text-align:center;display:table-cell;vertical-align:middle;border:1px solid #ddd;text-decoration:none;-webkit-transition:background-color 300ms ease-out,color 100ms ease-in;-moz-transition:background-color 300ms ease-out,color 100ms ease-in;transition:background-color 300ms ease-out,color 100ms ease-in}.editormd-grid-table-row a.selected{color:#666;background-color:#eee}.editormd-grid-table-row a:hover{color:#777;background-color:#f6f6f6}.editormd-tab-head{list-style:none;border-bottom:1px solid #ddd}.editormd-tab-head li{display:inline-block}.editormd-tab-head li a{color:#999;display:block;padding:6px 12px 5px;text-align:center;text-decoration:none;margin-bottom:-1px;border:1px solid #ddd;-webkit-border-top-left-radius:3px;-moz-border-top-left-radius:3px;-ms-border-top-left-radius:3px;-o-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-top-right-radius:3px;-ms-border-top-right-radius:3px;-o-border-top-right-radius:3px;border-top-right-radius:3px;background:#f6f6f6;-webkit-transition:all 300ms ease-out;-moz-transition:all 300ms ease-out;transition:all 300ms ease-out}.editormd-tab-head li a:hover{color:#666;background:#eee}.editormd-tab-head li.active a{color:#666;background:#fff;border-bottom-color:#fff}.editormd-tab-head li+li{margin-left:3px}.editormd-tab-box{padding:20px 0}.editormd-form{color:#666}.editormd-form label{float:left;display:block;width:75px;text-align:left;padding:7px 0 15px 5px;margin:0 0 2px;font-weight:400}.editormd-form iframe{display:none}.editormd-form input:focus{outline:0}.editormd-form input[type=text],.editormd-form input[type=number]{color:#999;padding:8px;border:1px solid #ddd}.editormd-form input[type=number]{width:40px;display:inline-block;padding:6px 8px}.editormd-form input[type=text]{display:inline-block;width:264px}.editormd-form .fa-btns{display:inline-block}.editormd-form .fa-btns a{color:#999;padding:7px 10px 0 0;display:inline-block;text-decoration:none;text-align:center}.editormd-form .fa-btns .fa{font-size:1.3em}.editormd-form .fa-btns label{float:none;display:inline-block;width:auto;text-align:left;padding:0 0 0 5px;cursor:pointer}.fa-fw,.fa-li{text-align:center}.editormd-dialog-container .editormd-btn,.editormd-dialog-container button,.editormd-dialog-container input[type=submit],.editormd-dialog-footer .editormd-btn,.editormd-dialog-footer button,.editormd-dialog-footer input[type=submit],.editormd-form .editormd-btn,.editormd-form button,.editormd-form input[type=submit]{color:#666;min-width:75px;cursor:pointer;background:#fff;padding:7px 10px;border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-transition:background 300ms ease-out;-moz-transition:background 300ms ease-out;transition:background 300ms ease-out}.editormd-dialog-container .editormd-btn:hover,.editormd-dialog-container button:hover,.editormd-dialog-container input[type=submit]:hover,.editormd-dialog-footer .editormd-btn:hover,.editormd-dialog-footer button:hover,.editormd-dialog-footer input[type=submit]:hover,.editormd-form .editormd-btn:hover,.editormd-form button:hover,.editormd-form input[type=submit]:hover{background:#eee}.editormd-dialog-container .editormd-btn+.editormd-btn,.editormd-dialog-footer .editormd-btn+.editormd-btn,.editormd-form .editormd-btn+.editormd-btn{margin-left:8px}.editormd-file-input{width:75px;height:32px;margin-left:8px;position:relative;display:inline-block}.editormd-file-input input[type=file]{width:75px;height:32px;opacity:0;cursor:pointer;background:#000;display:inline-block;position:absolute;top:0;right:0}.editormd-file-input input[type=file]::-webkit-file-upload-button{visibility:hidden}.editormd-file-input:hover input[type=submit]{background:#eee}.editormd .CodeMirror,.editormd-preview{display:inline-block;width:50%;height:100%;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}.editormd-preview{position:absolute;top:35px;right:0;overflow:auto;line-height:1.6;display:none;background:#fff}.fa,.fa-stack{display:inline-block}.editormd .CodeMirror{z-index:10;float:left;border-right:1px solid #ddd;font-size:14px;font-family:"YaHei Consolas Hybrid",Consolas,"微软雅黑","Meiryo UI","Malgun Gothic","Segoe UI","Trebuchet MS",Helvetica,Monaco,courier,monospace;line-height:1.6;margin-top:35px}.editormd .CodeMirror pre{font-size:14px;padding:0 12px}.editormd .CodeMirror-linenumbers{padding:0 5px}.editormd .CodeMirror-focused .CodeMirror-selected,.editormd .CodeMirror-selected{background:#70B7FF}.editormd .CodeMirror,.editormd .CodeMirror-scroll,.editormd .editormd-preview{-webkit-overflow-scrolling:touch}.editormd .styled-background{background-color:#ff7}.editormd .CodeMirror-focused .cm-matchhighlight{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);background-position:bottom;background-repeat:repeat-x}.editormd .CodeMirror-empty.CodeMirror-focused{outline:0}.editormd .CodeMirror pre.CodeMirror-placeholder{color:#999}.editormd .cm-trailingspace{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.editormd .cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=)right no-repeat}/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 *//*! * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0)format("embedded-opentype"),url(../fonts/fontawesome-webfont.woff2?v=4.3.0)format("woff2"),url(../fonts/fontawesome-webfont.woff?v=4.3.0)format("woff"),url(../fonts/fontawesome-webfont.ttf?v=4.3.0)format("truetype"),url(../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular)format("svg");font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@font-face{font-family:editormd-logo;src:url(../fonts/editormd-logo.eot?-5y8q6h);src:url(.../fonts/editormd-logo.eot?#iefix-5y8q6h)format("embedded-opentype"),url(../fonts/editormd-logo.woff?-5y8q6h)format("woff"),url(../fonts/editormd-logo.ttf?-5y8q6h)format("truetype"),url(../fonts/editormd-logo.svg?-5y8q6h#icomoon)format("svg");font-weight:400;font-style:normal}.editormd-logo,.editormd-logo-1x,.editormd-logo-2x,.editormd-logo-3x,.editormd-logo-4x,.editormd-logo-5x,.editormd-logo-6x,.editormd-logo-7x,.editormd-logo-8x{font-family:editormd-logo;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;font-size:inherit;line-height:1;display:inline-block;text-rendering:auto;vertical-align:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markdown-body hr:after,.markdown-body hr:before{content:"";display:table}.editormd-logo-1x:before,.editormd-logo-2x:before,.editormd-logo-3x:before,.editormd-logo-4x:before,.editormd-logo-5x:before,.editormd-logo-6x:before,.editormd-logo-7x:before,.editormd-logo-8x:before,.editormd-logo:before{content:"\e1987"}.editormd-logo-1x{font-size:1em}.editormd-logo-lg{font-size:1.2em}.editormd-logo-2x{font-size:2em}.editormd-logo-3x{font-size:3em}.editormd-logo-4x{font-size:4em}.editormd-logo-5x{font-size:5em}.editormd-logo-6x{font-size:6em}.editormd-logo-7x{font-size:7em}.editormd-logo-8x{font-size:8em}.editormd-logo-color{color:#2196F3}/*! github-markdown-css | The MIT License (MIT) | Copyright (c) Sindre Sorhus (sindresorhus.com) | https://github.com/sindresorhus/github-markdown-css */@font-face{font-family:octicons-anchor;src:url(data:font/woff;charset=utf-8;base64,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)format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:"Microsoft YaHei",Helvetica,"Meiryo UI","Malgun Gothic","Segoe UI","Trebuchet MS",Monaco,monospace,Tahoma,STXihei,"华文细黑",STHeiti,"Helvetica Neue","Droid Sans","wenquanyi micro hei",FreeSans,Arimo,Arial,SimSun,"宋体",Heiti,"黑体",sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body strong{font-weight:700}.markdown-body h1{margin:.67em 0}.markdown-body img{border:0}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}.markdown-body input{color:inherit;margin:0;line-height:normal;font:13px/1.4 Helvetica,arial,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"}.markdown-body html input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0;text-decoration:underline}.markdown-body hr{margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #ddd}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body blockquote{margin:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body pre{font:12px Consolas,"Liberation Mono",Menlo,Courier,monospace;word-wrap:normal}.markdown-body .octicon{font:normal normal 16px octicons-anchor;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none}.markdown-body .octicon-link:before{content:'\f05c'}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body .anchor{position:absolute;top:0;left:0;display:block;padding-right:6px;padding-left:30px;margin-left:-30px}.markdown-body .anchor:focus{outline:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{display:none;color:#000;vertical-align:middle}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{padding-left:8px;margin-left:-30px;text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{display:inline-block}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h1 .anchor{line-height:1}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h2 .anchor{line-height:1}.markdown-body h3{font-size:1.5em;line-height:1.43}.markdown-body h3 .anchor,.markdown-body h4 .anchor{line-height:1.2}.markdown-body h4{font-size:1.25em}.markdown-body h5 .anchor,.markdown-body h6 .anchor{line-height:1.1}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body blockquote{padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;background-color:#f7f7f7;border-radius:3px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-mdh,.markdown-body .pl-mm,.markdown-body .pl-mp,.markdown-body .pl-mr,.markdown-body .pl-s1 .pl-v,.markdown-body .pl-s3,.markdown-body .pl-sc,.markdown-body .pl-sv{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s1 .pl-s2,.markdown-body .pl-smi,.markdown-body .pl-smp,.markdown-body .pl-stj,.markdown-body .pl-vo,.markdown-body .pl-vpf{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k,.markdown-body .pl-s,.markdown-body .pl-st{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s1,.markdown-body .pl-s1 .pl-pse .pl-s2,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-src{color:#df5000}.markdown-body .pl-mo,.markdown-body .pl-v{color:#1d3e81}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{background-color:#b52a1d;color:#f8f8f8}.markdown-body .pl-sr .pl-cce{color:#63a35c;font-weight:700}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#1d3e81;font-weight:700}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{color:#333;font-style:italic}.markdown-body .pl-mb{color:#333;font-weight:700}.markdown-body .pl-md,.markdown-body .pl-mdhf{background-color:#ffecec;color:#bd2c00}.markdown-body .pl-mdht,.markdown-body .pl-mi1{background-color:#eaffea;color:#55a532}.markdown-body .pl-mdr{color:#795da3;font-weight:700}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{float:left;margin:.3em 0 .25em -1.6em;vertical-align:middle}.markdown-body :checked+.radio-label{z-index:1;position:relative;border-color:#4183c4}.editormd-html-preview,.editormd-preview-container{text-align:left;font-size:16px;line-height:1.6;padding:20px;overflow:auto;width:100%;background-color:#fff}.editormd-html-preview blockquote,.editormd-preview-container blockquote{color:#666;border-left:4px solid #ddd;padding-left:20px;margin-left:0;font-size:14px;font-style:italic}.editormd-html-preview p code,.editormd-preview-container p code{margin-left:5px;margin-right:4px}.editormd-html-preview abbr,.editormd-preview-container abbr{background:#ffd}.editormd-html-preview hr,.editormd-preview-container hr{height:1px;border:none;border-top:1px solid #ddd;background:0 0}.editormd-html-preview code,.editormd-preview-container code{border:0px solid #ddd;background:#f6f6f6;padding:3px;border-radius:3px;font-size:14px}.editormd-html-preview pre,.editormd-preview-container pre{border:1px solid #ddd;background:#f6f6f6;padding:10px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.editormd-html-preview pre code,.editormd-preview-container pre code{padding:0}.editormd-html-preview code,.editormd-html-preview kbd,.editormd-html-preview pre,.editormd-preview-container code,.editormd-preview-container kbd,.editormd-preview-container pre{font-family:"YaHei Consolas Hybrid",Consolas,"Meiryo UI","Malgun Gothic","Segoe UI","Trebuchet MS",Helvetica,monospace,monospace}.editormd-html-preview table thead tr,.editormd-preview-container table thead tr{background-color:#F8F8F8}.editormd-html-preview p.editormd-tex,.editormd-preview-container p.editormd-tex{text-align:center}.editormd-html-preview span.editormd-tex,.editormd-preview-container span.editormd-tex{margin:0 5px}.editormd-html-preview .emoji,.editormd-preview-container .emoji{width:24px;height:24px}.editormd-html-preview .katex,.editormd-preview-container .katex{font-size:1.4em}.editormd-html-preview .flowchart,.editormd-html-preview .sequence-diagram,.editormd-preview-container .flowchart,.editormd-preview-container .sequence-diagram{margin:0 auto;text-align:center}.editormd-html-preview .flowchart svg,.editormd-html-preview .sequence-diagram svg,.editormd-preview-container .flowchart svg,.editormd-preview-container .sequence-diagram svg{margin:0 auto}.editormd-html-preview .flowchart text,.editormd-html-preview .sequence-diagram text,.editormd-preview-container .flowchart text,.editormd-preview-container .sequence-diagram text{font-size:15px!important;font-family:"YaHei Consolas Hybrid",Consolas,"Microsoft YaHei","Malgun Gothic","Segoe UI",Helvetica,Arial!important}/*! Pretty printing styles. Used with prettify.js. */.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}.editormd-html-preview pre.prettyprint,.editormd-preview-container pre.prettyprint{padding:10px;border:0px solid #ddd;white-space:pre-wrap;word-wrap:break-word}.editormd-html-preview ol.linenums,.editormd-preview-container ol.linenums{color:#999;padding-left:2.5em}.editormd-html-preview ol.linenums li,.editormd-preview-container ol.linenums li{list-style-type:decimal}.editormd-html-preview ol.linenums li code,.editormd-preview-container ol.linenums li code{border:none;background:0 0;padding:0}.editormd-html-preview .editormd-toc-menu,.editormd-preview-container .editormd-toc-menu{margin:8px 0 12px;display:inline-block}.editormd-html-preview .editormd-toc-menu>.markdown-toc,.editormd-preview-container .editormd-toc-menu>.markdown-toc{position:relative;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;border:1px solid #ddd;display:inline-block;font-size:1em}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul{width:160%;min-width:180px;position:absolute;left:-1px;top:-2px;z-index:100;padding:0 10px 10px;display:none;background:#fff;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);-moz-box-shadow:0 3px 5px rgba(0,0,0,.2);-ms-box-shadow:0 3px 5px rgba(0,0,0,.2);-o-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li ul{width:100%;min-width:180px;border:1px solid #ddd;display:none;background:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.editormd-html-preview .editormd-toc-menu .toc-menu-btn:hover,.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li a:hover,.editormd-preview-container .editormd-toc-menu .toc-menu-btn:hover,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li a:hover{background-color:#f6f6f6}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li a,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li a{color:#666;padding:6px 10px;display:block;-webkit-transition:background-color 500ms ease-out;-moz-transition:background-color 500ms ease-out;transition:background-color 500ms ease-out}.editormd-html-preview .editormd-toc-menu>.markdown-toc li,.editormd-preview-container .editormd-toc-menu>.markdown-toc li{position:relative}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul{position:absolute;top:32px;left:10%;display:none;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);-moz-box-shadow:0 3px 5px rgba(0,0,0,.2);-ms-box-shadow:0 3px 5px rgba(0,0,0,.2);-o-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:before,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:before{pointer-events:pointer-events;position:absolute;left:15px;top:-6px;display:block;content:"";width:0;height:0;border:6px solid transparent;border-width:0 6px 6px;z-index:10}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:before,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:before{border-bottom-color:#ccc}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:after{border-bottom-color:#fff;top:-5px}.editormd-html-preview .editormd-toc-menu ul,.editormd-preview-container .editormd-toc-menu ul{list-style:none}.editormd-html-preview .editormd-toc-menu a,.editormd-preview-container .editormd-toc-menu a{text-decoration:none}.editormd-html-preview .editormd-toc-menu h1,.editormd-preview-container .editormd-toc-menu h1{font-size:16px;padding:5px 0 10px 10px;line-height:1;border-bottom:1px solid #eee}.editormd-html-preview .editormd-toc-menu h1 .fa,.editormd-preview-container .editormd-toc-menu h1 .fa{padding-left:10px}.editormd-html-preview .editormd-toc-menu .toc-menu-btn,.editormd-preview-container .editormd-toc-menu .toc-menu-btn{color:#666;min-width:180px;padding:5px 10px;border-radius:4px;display:inline-block;-webkit-transition:background-color 500ms ease-out;-moz-transition:background-color 500ms ease-out;transition:background-color 500ms ease-out}.editormd-html-preview textarea,.editormd-onlyread .editormd-toolbar{display:none}.editormd-html-preview .editormd-toc-menu .toc-menu-btn .fa,.editormd-preview-container .editormd-toc-menu .toc-menu-btn .fa{float:right;padding:3px 0 0 10px;font-size:1.3em}.markdown-body .editormd-toc-menu ul{padding-left:0}.markdown-body .highlight pre,.markdown-body pre{line-height:1.6}hr.editormd-page-break{border:1px dotted #ccc;font-size:0;height:2px}@media only print{hr.editormd-page-break{background:0 0;border:none;height:0}}.editormd-html-preview hr.editormd-page-break{background:0 0;border:none;height:0}.editormd-preview-close-btn{color:#fff;padding:4px 6px;font-size:18px;-webkit-border-radius:500px;-moz-border-radius:500px;-ms-border-radius:500px;-o-border-radius:500px;border-radius:500px;display:none;background-color:#ccc;position:absolute;top:25px;right:35px;z-index:19;-webkit-transition:background-color 300ms ease-out;-moz-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.editormd-preview-close-btn:hover{background-color:#999}.editormd-preview-active{width:100%;padding:40px}.editormd-preview-theme-dark{color:#777;background:#2C2827}.editormd-preview-theme-dark .editormd-preview-container{color:#888;background-color:#2C2827}.editormd-preview-theme-dark .editormd-preview-container pre.prettyprint{border:none}.editormd-preview-theme-dark .editormd-preview-container blockquote{color:#555;padding:.5em;background:#222;border-color:#333}.editormd-preview-theme-dark .editormd-preview-container abbr{color:#fff;padding:1px 3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background:#f90}.editormd-preview-theme-dark .editormd-preview-container code{color:#fff;border:none;padding:1px 3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background:#5A9600}.editormd-preview-theme-dark .editormd-preview-container table{border:none}.editormd-preview-theme-dark .editormd-preview-container .fa-emoji{color:#B4BF42}.editormd-preview-theme-dark .editormd-preview-container .katex{color:#FEC93F}.editormd-preview-theme-dark .editormd-toc-menu>.markdown-toc{background:#fff;border:none}.editormd-preview-theme-dark .editormd-toc-menu>.markdown-toc h1{border-color:#ddd}.editormd-preview-theme-dark .markdown-body h1,.editormd-preview-theme-dark .markdown-body h2,.editormd-preview-theme-dark .markdown-body hr{border-color:#222}.editormd-preview-theme-dark pre{color:#999;background-color:#111;background-color:rgba(0,0,0,.4)}.editormd-preview-theme-dark pre .pln{color:#999}.editormd-preview-theme-dark li.L1,.editormd-preview-theme-dark li.L3,.editormd-preview-theme-dark li.L5,.editormd-preview-theme-dark li.L7,.editormd-preview-theme-dark li.L9{background:0 0}.editormd-preview-theme-dark [class*=editormd-logo]{color:#2196F3}.editormd-preview-theme-dark .sequence-diagram text{fill:#fff}.editormd-preview-theme-dark .sequence-diagram path,.editormd-preview-theme-dark .sequence-diagram rect{color:#fff;fill:#64D1CB;stroke:#64D1CB}.editormd-preview-theme-dark .flowchart path,.editormd-preview-theme-dark .flowchart rect{stroke:#A6C6FF}.editormd-preview-theme-dark .flowchart rect{fill:#A6C6FF}.editormd-preview-theme-dark .flowchart text{fill:#5879B4}@media screen{.editormd-preview-theme-dark .str{color:#080}.editormd-preview-theme-dark .kwd{color:#f90}.editormd-preview-theme-dark .com{color:#444}.editormd-preview-theme-dark .typ{color:#606}.editormd-preview-theme-dark .lit{color:#066}.editormd-preview-theme-dark .clo,.editormd-preview-theme-dark .opn,.editormd-preview-theme-dark .pun{color:#660}.editormd-preview-theme-dark .tag{color:#f90}.editormd-preview-theme-dark .atn{color:#6C95F5}.editormd-preview-theme-dark .atv{color:#080}.editormd-preview-theme-dark .dec,.editormd-preview-theme-dark .var{color:#008BA7}.editormd-preview-theme-dark .fun{color:red}}.editormd-onlyread .CodeMirror{margin-top:0}.editormd-onlyread .editormd-preview{top:0}.editormd-fullscreen{position:fixed;top:0;left:0;border:none;margin:0 auto}.editormd-theme-dark{border-color:#1a1a17}.editormd-theme-dark .editormd-toolbar{background:#1A1A17;border-color:#1a1a17}.editormd-theme-dark .editormd-menu>li>a{color:#777;border-color:#1a1a17}.editormd-theme-dark .editormd-menu>li>a.active,.editormd-theme-dark .editormd-menu>li>a:hover{border-color:#333;background:#333}.editormd-theme-dark .editormd-menu>li.divider{border-right:1px solid #111}.editormd-theme-dark .CodeMirror{border-right:1px solid rgba(0,0,0,.1)} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0)format("embedded-opentype"),url(../fonts/fontawesome-webfont.woff2?v=4.3.0)format("woff2"),url(../fonts/fontawesome-webfont.woff?v=4.3.0)format("woff"),url(../fonts/fontawesome-webfont.ttf?v=4.3.0)format("truetype"),url(../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular)format("svg");font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}/*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@font-face{font-family:editormd-logo;src:url(../fonts/editormd-logo.eot?-5y8q6h);src:url(.../fonts/editormd-logo.eot?#iefix-5y8q6h)format("embedded-opentype"),url(../fonts/editormd-logo.woff?-5y8q6h)format("woff"),url(../fonts/editormd-logo.ttf?-5y8q6h)format("truetype"),url(../fonts/editormd-logo.svg?-5y8q6h#icomoon)format("svg");font-weight:400;font-style:normal}.editormd-logo,.editormd-logo-1x,.editormd-logo-2x,.editormd-logo-3x,.editormd-logo-4x,.editormd-logo-5x,.editormd-logo-6x,.editormd-logo-7x,.editormd-logo-8x{font-family:editormd-logo;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;font-size:inherit;line-height:1;display:inline-block;text-rendering:auto;vertical-align:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markdown-body hr:after,.markdown-body hr:before{content:"";display:table}.editormd-logo-1x:before,.editormd-logo-2x:before,.editormd-logo-3x:before,.editormd-logo-4x:before,.editormd-logo-5x:before,.editormd-logo-6x:before,.editormd-logo-7x:before,.editormd-logo-8x:before,.editormd-logo:before{content:"\e1987"}.editormd-logo-1x{font-size:1em}.editormd-logo-lg{font-size:1.2em}.editormd-logo-2x{font-size:2em}.editormd-logo-3x{font-size:3em}.editormd-logo-4x{font-size:4em}.editormd-logo-5x{font-size:5em}.editormd-logo-6x{font-size:6em}.editormd-logo-7x{font-size:7em}.editormd-logo-8x{font-size:8em}.editormd-logo-color{color:#2196F3}/*! github-markdown-css | The MIT License (MIT) | Copyright (c) Sindre Sorhus (sindresorhus.com) | https://github.com/sindresorhus/github-markdown-css */@font-face{font-family:octicons-anchor;src:url(data:font/woff;charset=utf-8;base64,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)format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:"Microsoft YaHei",Helvetica,"Meiryo UI","Malgun Gothic","Segoe UI","Trebuchet MS",Monaco,monospace,Tahoma,STXihei,"华文细黑",STHeiti,"Helvetica Neue","Droid Sans","wenquanyi micro hei",FreeSans,Arimo,Arial,SimSun,"宋体",Heiti,"黑体",sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body strong{font-weight:700}.markdown-body h1{margin:.67em 0}.markdown-body img{border:0}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}.markdown-body input{color:inherit;margin:0;line-height:normal;font:13px/1.4 Helvetica,arial,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"}.markdown-body html input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0;text-decoration:underline}.markdown-body hr{margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #ddd}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body blockquote{margin:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body pre{font:12px Consolas,"Liberation Mono",Menlo,Courier,monospace;word-wrap:normal}.markdown-body .octicon{font:normal normal 16px octicons-anchor;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none}.markdown-body .octicon-link:before{content:'\f05c'}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body .anchor{position:absolute;top:0;left:0;display:block;padding-right:6px;padding-left:30px;margin-left:-30px}.markdown-body .anchor:focus{outline:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{display:none;color:#000;vertical-align:middle}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{padding-left:8px;margin-left:-30px;text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{display:inline-block}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h1 .anchor{line-height:1}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h2 .anchor{line-height:1}.markdown-body h3{font-size:1.5em;line-height:1.43}.markdown-body h3 .anchor,.markdown-body h4 .anchor{line-height:1.2}.markdown-body h4{font-size:1.25em}.markdown-body h5 .anchor,.markdown-body h6 .anchor{line-height:1.1}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body blockquote{padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;background-color:#f7f7f7;border-radius:3px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-mdh,.markdown-body .pl-mm,.markdown-body .pl-mp,.markdown-body .pl-mr,.markdown-body .pl-s1 .pl-v,.markdown-body .pl-s3,.markdown-body .pl-sc,.markdown-body .pl-sv{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s1 .pl-s2,.markdown-body .pl-smi,.markdown-body .pl-smp,.markdown-body .pl-stj,.markdown-body .pl-vo,.markdown-body .pl-vpf{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k,.markdown-body .pl-s,.markdown-body .pl-st{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s1,.markdown-body .pl-s1 .pl-pse .pl-s2,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-src{color:#df5000}.markdown-body .pl-mo,.markdown-body .pl-v{color:#1d3e81}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{background-color:#b52a1d;color:#f8f8f8}.markdown-body .pl-sr .pl-cce{color:#63a35c;font-weight:700}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#1d3e81;font-weight:700}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{color:#333;font-style:italic}.markdown-body .pl-mb{color:#333;font-weight:700}.markdown-body .pl-md,.markdown-body .pl-mdhf{background-color:#ffecec;color:#bd2c00}.markdown-body .pl-mdht,.markdown-body .pl-mi1{background-color:#eaffea;color:#55a532}.markdown-body .pl-mdr{color:#795da3;font-weight:700}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{float:left;margin:.3em 0 .25em -1.6em;vertical-align:middle}.markdown-body :checked+.radio-label{z-index:1;position:relative;border-color:#4183c4}.editormd-html-preview,.editormd-preview-container{text-align:left;font-size:16px;line-height:1.6;padding:20px;overflow:auto;width:100%;background-color:#fff}.editormd-html-preview blockquote,.editormd-preview-container blockquote{color:#666;border-left:4px solid #ddd;padding-left:20px;margin-left:0;font-size:14px;font-style:italic}.editormd-html-preview p code,.editormd-preview-container p code{margin-left:5px;margin-right:4px}.editormd-html-preview abbr,.editormd-preview-container abbr{background:#ffd}.editormd-html-preview hr,.editormd-preview-container hr{height:1px;border:none;border-top:1px solid #ddd;background:0 0}.editormd-html-preview code,.editormd-preview-container code{border:0px solid #ddd;background:#f6f6f6;padding:3px;border-radius:3px;font-size:14px}.editormd-html-preview pre,.editormd-preview-container pre{border:1px solid #ddd;background:#f6f6f6;padding:10px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.editormd-html-preview pre code,.editormd-preview-container pre code{padding:0}.editormd-html-preview code,.editormd-html-preview kbd,.editormd-html-preview pre,.editormd-preview-container code,.editormd-preview-container kbd,.editormd-preview-container pre{font-family:"YaHei Consolas Hybrid",Consolas,"Meiryo UI","Malgun Gothic","Segoe UI","Trebuchet MS",Helvetica,monospace,monospace}.editormd-html-preview table thead tr,.editormd-preview-container table thead tr{background-color:#F8F8F8}.editormd-html-preview p.editormd-tex,.editormd-preview-container p.editormd-tex{text-align:center}.editormd-html-preview span.editormd-tex,.editormd-preview-container span.editormd-tex{margin:0 5px}.editormd-html-preview .emoji,.editormd-preview-container .emoji{width:24px;height:24px}.editormd-html-preview .katex,.editormd-preview-container .katex{font-size:1.4em}.editormd-html-preview .flowchart,.editormd-html-preview .sequence-diagram,.editormd-preview-container .flowchart,.editormd-preview-container .sequence-diagram{margin:0 auto;text-align:center}.editormd-html-preview .flowchart svg,.editormd-html-preview .sequence-diagram svg,.editormd-preview-container .flowchart svg,.editormd-preview-container .sequence-diagram svg{margin:0 auto}.editormd-html-preview .flowchart text,.editormd-html-preview .sequence-diagram text,.editormd-preview-container .flowchart text,.editormd-preview-container .sequence-diagram text{font-size:15px!important;font-family:"YaHei Consolas Hybrid",Consolas,"Microsoft YaHei","Malgun Gothic","Segoe UI",Helvetica,Arial!important}/*! Pretty printing styles. Used with prettify.js. */.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.clo,.opn,.pun{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.kwd,.tag,.typ{font-weight:700}.str{color:#060}.kwd{color:#006}.com{color:#600;font-style:italic}.typ{color:#404}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}.editormd-html-preview pre.prettyprint,.editormd-preview-container pre.prettyprint{padding:10px;border:0px solid #ddd;white-space:pre-wrap;word-wrap:break-word}.editormd-html-preview ol.linenums,.editormd-preview-container ol.linenums{color:#999;padding-left:2.5em}.editormd-html-preview ol.linenums li,.editormd-preview-container ol.linenums li{list-style-type:decimal}.editormd-html-preview ol.linenums li code,.editormd-preview-container ol.linenums li code{border:none;background:0 0;padding:0}.editormd-html-preview .editormd-toc-menu,.editormd-preview-container .editormd-toc-menu{margin:8px 0 12px;display:inline-block}.editormd-html-preview .editormd-toc-menu>.markdown-toc,.editormd-preview-container .editormd-toc-menu>.markdown-toc{position:relative;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;border:1px solid #ddd;display:inline-block;font-size:1em}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul{width:160%;min-width:180px;position:absolute;left:-1px;top:-2px;z-index:100;padding:0 10px 10px;display:none;background:#fff;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);-moz-box-shadow:0 3px 5px rgba(0,0,0,.2);-ms-box-shadow:0 3px 5px rgba(0,0,0,.2);-o-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li ul{width:100%;min-width:180px;border:1px solid #ddd;display:none;background:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.editormd-html-preview .editormd-toc-menu .toc-menu-btn:hover,.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li a:hover,.editormd-preview-container .editormd-toc-menu .toc-menu-btn:hover,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li a:hover{background-color:#f6f6f6}.editormd-html-preview .editormd-toc-menu>.markdown-toc>ul>li a,.editormd-preview-container .editormd-toc-menu>.markdown-toc>ul>li a{color:#666;padding:6px 10px;display:block;-webkit-transition:background-color 500ms ease-out;-moz-transition:background-color 500ms ease-out;transition:background-color 500ms ease-out}.editormd-html-preview .editormd-toc-menu>.markdown-toc li,.editormd-preview-container .editormd-toc-menu>.markdown-toc li{position:relative}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul{position:absolute;top:32px;left:10%;display:none;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);-moz-box-shadow:0 3px 5px rgba(0,0,0,.2);-ms-box-shadow:0 3px 5px rgba(0,0,0,.2);-o-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:before,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:before{pointer-events:pointer-events;position:absolute;left:15px;top:-6px;display:block;content:"";width:0;height:0;border:6px solid transparent;border-width:0 6px 6px;z-index:10}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:before,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:before{border-bottom-color:#ccc}.editormd-html-preview .editormd-toc-menu>.markdown-toc li>ul:after,.editormd-preview-container .editormd-toc-menu>.markdown-toc li>ul:after{border-bottom-color:#fff;top:-5px}.editormd-html-preview .editormd-toc-menu ul,.editormd-preview-container .editormd-toc-menu ul{list-style:none}.editormd-html-preview .editormd-toc-menu a,.editormd-preview-container .editormd-toc-menu a{text-decoration:none}.editormd-html-preview .editormd-toc-menu h1,.editormd-preview-container .editormd-toc-menu h1{font-size:16px;padding:5px 0 10px 10px;line-height:1;border-bottom:1px solid #eee}.editormd-html-preview .editormd-toc-menu h1 .fa,.editormd-preview-container .editormd-toc-menu h1 .fa{padding-left:10px}.editormd-html-preview .editormd-toc-menu .toc-menu-btn,.editormd-preview-container .editormd-toc-menu .toc-menu-btn{color:#666;min-width:180px;padding:5px 10px;border-radius:4px;display:inline-block;-webkit-transition:background-color 500ms ease-out;-moz-transition:background-color 500ms ease-out;transition:background-color 500ms ease-out}.editormd-html-preview textarea,.editormd-onlyread .editormd-toolbar{display:none}.editormd-html-preview .editormd-toc-menu .toc-menu-btn .fa,.editormd-preview-container .editormd-toc-menu .toc-menu-btn .fa{float:right;padding:3px 0 0 10px;font-size:1.3em}.markdown-body .editormd-toc-menu ul{padding-left:0}.markdown-body .highlight pre,.markdown-body pre{line-height:1.6}hr.editormd-page-break{border:1px dotted #ccc;font-size:0;height:2px}@media only print{hr.editormd-page-break{background:0 0;border:none;height:0}}.editormd-html-preview hr.editormd-page-break{background:0 0;border:none;height:0}.editormd-preview-close-btn{color:#fff;padding:4px 6px;font-size:18px;-webkit-border-radius:500px;-moz-border-radius:500px;-ms-border-radius:500px;-o-border-radius:500px;border-radius:500px;display:none;background-color:#ccc;position:absolute;top:25px;right:35px;z-index:19;-webkit-transition:background-color 300ms ease-out;-moz-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}.editormd-preview-close-btn:hover{background-color:#999}.editormd-preview-active{width:100%;padding:40px}.editormd-preview-theme-dark{color:#777;background:#2C2827}.editormd-preview-theme-dark .editormd-preview-container{color:#888;background-color:#2C2827}.editormd-preview-theme-dark .editormd-preview-container pre.prettyprint{border:none}.editormd-preview-theme-dark .editormd-preview-container blockquote{color:#555;padding:.5em;background:#222;border-color:#333}.editormd-preview-theme-dark .editormd-preview-container abbr{color:#fff;padding:1px 3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background:#f90}.editormd-preview-theme-dark .editormd-preview-container code{color:#fff;border:none;padding:1px 3px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background:#5A9600}.editormd-preview-theme-dark .editormd-preview-container table{border:none}.editormd-preview-theme-dark .editormd-preview-container .fa-emoji{color:#B4BF42}.editormd-preview-theme-dark .editormd-preview-container .katex{color:#FEC93F}.editormd-preview-theme-dark .editormd-toc-menu>.markdown-toc{background:#fff;border:none}.editormd-preview-theme-dark .editormd-toc-menu>.markdown-toc h1{border-color:#ddd}.editormd-preview-theme-dark .markdown-body h1,.editormd-preview-theme-dark .markdown-body h2,.editormd-preview-theme-dark .markdown-body hr{border-color:#222}.editormd-preview-theme-dark pre{color:#999;background-color:#111;background-color:rgba(0,0,0,.4)}.editormd-preview-theme-dark pre .pln{color:#999}.editormd-preview-theme-dark li.L1,.editormd-preview-theme-dark li.L3,.editormd-preview-theme-dark li.L5,.editormd-preview-theme-dark li.L7,.editormd-preview-theme-dark li.L9{background:0 0}.editormd-preview-theme-dark [class*=editormd-logo]{color:#2196F3}.editormd-preview-theme-dark .sequence-diagram text{fill:#fff}.editormd-preview-theme-dark .sequence-diagram path,.editormd-preview-theme-dark .sequence-diagram rect{color:#fff;fill:#64D1CB;stroke:#64D1CB}.editormd-preview-theme-dark .flowchart path,.editormd-preview-theme-dark .flowchart rect{stroke:#A6C6FF}.editormd-preview-theme-dark .flowchart rect{fill:#A6C6FF}.editormd-preview-theme-dark .flowchart text{fill:#5879B4}@media screen{.editormd-preview-theme-dark .str{color:#080}.editormd-preview-theme-dark .kwd{color:#f90}.editormd-preview-theme-dark .com{color:#444}.editormd-preview-theme-dark .typ{color:#606}.editormd-preview-theme-dark .lit{color:#066}.editormd-preview-theme-dark .clo,.editormd-preview-theme-dark .opn,.editormd-preview-theme-dark .pun{color:#660}.editormd-preview-theme-dark .tag{color:#f90}.editormd-preview-theme-dark .atn{color:#6C95F5}.editormd-preview-theme-dark .atv{color:#080}.editormd-preview-theme-dark .dec,.editormd-preview-theme-dark .var{color:#008BA7}.editormd-preview-theme-dark .fun{color:red}}.editormd-onlyread .CodeMirror{margin-top:0}.editormd-onlyread .editormd-preview{top:0}.editormd-fullscreen{position:fixed;top:0;left:0;border:none;margin:0 auto}.editormd-theme-dark{border-color:#1a1a17}.editormd-theme-dark .editormd-toolbar{background:#1A1A17;border-color:#1a1a17}.editormd-theme-dark .editormd-menu>li>a{color:#777;border-color:#1a1a17}.editormd-theme-dark .editormd-menu>li>a.active,.editormd-theme-dark .editormd-menu>li>a:hover{border-color:#333;background:#333}.editormd-theme-dark .editormd-menu>li.divider{border-right:1px solid #111}.editormd-theme-dark .CodeMirror{border-right:1px solid rgba(0,0,0,.1)} \ No newline at end of file diff --git a/public/css/edu-all.css b/public/css/edu-all.css index b8a558075..6485f2316 100644 --- a/public/css/edu-all.css +++ b/public/css/edu-all.css @@ -38,78 +38,6 @@ box-sizing: border-box; } -.head-nav ul#header-nav li { - float: left; - height: 60px; - line-height: 60px; - margin-right: 30px; - cursor: pointer; - position: relative; - font-size: 16px -} - -.head-nav ul#header-nav li a { - display: block; - height: 100%; - width: 100%; - color: #fff -} - -.head-nav ul#header-nav li a:hover { - color: #cccccc; -} - -.head-nav ul#header-nav li:last-child { - margin-right: 0px -} - -.head-nav ul#header-nav li.active a { - color: #459be5 !important; -} - -.head-nav ul#header-nav li.active p { - color: #459be5 !important; -} - -.head-nav ul#header-nav li p:hover { - color: #cccccc; -} - -.head-nav ul#header-nav li p { - display: block; - height: 100%; - width: 100%; - color: #fff -} - -.head-nav ul#header-nav li.active div ul li a { - color: #000 !important; -} - -.head-nav ul#header-nav li.active div ul li a:hover { - color: #FFF !important; -} - -.head-nav ul#header-nav li.active ul li a { - color: #000 !important; -} - -.head-nav ul#header-nav li.active ul li a:hover { - color: #FFF !important; -} - -.head-nav ul#header-nav li.active:after { - content: ''; - position: absolute; - left: 0px; - top: auto; - bottom: 10px; - right: auto; - height: 2px; - width: 14px; - background-color: #459be5; -} - .nav-img { position: absolute; top: 2px; diff --git a/public/css/edu-common.css b/public/css/edu-common.css index 96a8277df..56790f055 100755 --- a/public/css/edu-common.css +++ b/public/css/edu-common.css @@ -114,14 +114,6 @@ a:visited { color: #898989; } -a:hover { - color: #FF7500; -} - -a:hover.fa { - color: #FF7500; -} - input, textarea, select { diff --git a/public/css/edu-main.css b/public/css/edu-main.css index 3cbe5fcbb..1d9959033 100644 --- a/public/css/edu-main.css +++ b/public/css/edu-main.css @@ -97,10 +97,6 @@ a:visited { color: #05101a; } -a:hover { - color: #459be5; -} - ol, ul, li { diff --git a/public/css/edu-purge.css b/public/css/edu-purge.css index ac97837fc..a3a86a8ee 100644 --- a/public/css/edu-purge.css +++ b/public/css/edu-purge.css @@ -1,3 +1,4 @@ +@charset "utf-8"; /* 头部 */ .header { width: 100%; @@ -1271,7 +1272,7 @@ html body { font-size: 14px; line-height: 2.0; background: #fafafa; - font-family: "微软雅黑", "宋体"; + font-family: "Microsoft YaHei", "SimSun"; color: #05101a; height: 100%; position: relative; @@ -1307,6 +1308,7 @@ td, span { margin: 0; padding: 0; + margin-bottom: 0px!important; } table, @@ -1363,10 +1365,6 @@ a:visited { color: #05101a; } -a:hover { - color: #459be5; -} - ol, ul, li { @@ -1473,7 +1471,7 @@ a.edu-txt-w80, /*隐藏*/ .none { - display: none + display: none!important; } .block { @@ -1522,7 +1520,15 @@ a.edu-txt-w80, .font-16 { font-size: 16px !important; } - +.weight400{ + font-weight: 400; +} +.weight500{ + font-weight: 500; +} +.weight{ + font-weight: bold; +} .font-17 { font-size: 17px !important; } @@ -1542,6 +1548,9 @@ a.edu-txt-w80, .font-25 { font-size: 25px !important; } +.font-26 { + font-size: 26px !important; +} .font-24 { font-size: 24px !important; @@ -1563,6 +1572,9 @@ a.edu-txt-w80, font-size: 36px !important; } +.font-40 { + font-size: 40px !important; +} .font-50 { font-size: 50px !important; } @@ -1753,7 +1765,7 @@ a.decoration { } .mb15 { - margin-bottom: 15px; + margin-bottom: 15px!important; } .mb16 { @@ -2424,13 +2436,23 @@ input::-ms-clear { .color-grey-c { color: #ccc !important; } - +a.hoverLine:hover{ + text-decoration: underline; +} .color-grey-cd { color: #cdcdcd !important; } +.color-grey-d { + color: #ddd; +} + .color-grey-9 { - color: #999999 !important; + color: #333333 !important; +} + +a:hover{ + color: #466AFF !important; } .color-grey-98 { @@ -2452,7 +2474,7 @@ input::-ms-clear { .color-grey-B3 { color: #B3B3B3 !important; } - +` .color-grey-B4 { color: #B4B4B4 !important; } @@ -2465,33 +2487,23 @@ input::-ms-clear { a.color-grey-name:hover, a.color-dark:hover, a.color-grey-6:hover, -a.color-grey-3:hover { - color: #4cacff !important; -} - -a.color-grey-9:hover, -a.color-grey-8:hover, -a.color-grey-c:hover { - color: #111C24 !important; +a.color-grey-3:hover,a.color-ooo:hover { + color: #2A61FF !important; } /*蓝色*/ .color-blue { - color: #4CACFF !important; + color: #2A61FF !important; +} +.color-blue-file { + color: #4598FA!important; } /* 绿色 */ -.color-green-file{ - color: #28BD6C; -} /*主*/ .color-blue_4C { color: #4CACFF !important; } -a.color-blue:hover, -a.color-blue_4C:hover { - color: #459BE6 !important; -} /*橙色*/ .color-orange { @@ -3409,7 +3421,7 @@ a.user_bluebg_btn { } .cdefault { - cursor: default + cursor: default!important; } @@ -3584,42 +3596,6 @@ a.user_bluebg_btn { margin-right: 5px; } -/*-------------------个人主页:右侧提示区域--------------------------*/ -.-task-sidebar { - position: fixed; - width: 40px; - height: 180px; - right: 0; - bottom: 80px; - z-index: 10; -} - -.-task-sidebar div { - height: 40px; - line-height: 40px; - box-sizing: border-box; - width: 40px; - background: #4CACFF; - color: #fff; - font-size: 20px; - text-align: center; - margin-bottom: 5px; - border-radius: 4px; -} - -.-task-sidebar div i { - color: #fff; -} - -.-task-sidebar div i:hover { - color: #fff !important; -} - -.gotop { - background-color: rgba(208, 207, 207, 0.5) !important; - padding: 0px !important; -} - /***** loading ******/ /*****载入中******/ @@ -3944,11 +3920,21 @@ html>body #ajax-indicator { max-height: 340px; }/*头部导航条样式---2018-03-19--by-cs*/ +.privateTag{ + display: block; + padding:0px 6px; + border-radius: 12px; + border:1px solid #2FC25B; + height: 18px; + line-height: 18px; + font-size: 12px; + margin-left: 10px; + color: #2FC25B; +} .head-nav { text-align: center; height: 70px; box-sizing: border-box; - min-width: 780px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -3970,7 +3956,7 @@ html>body #ajax-indicator { cursor: pointer; position: relative; font-size: 16px; - padding:0px 20px; + padding-right:40px; } .head-nav ul#header-nav li a { @@ -6702,4 +6688,19 @@ ul.count_ul li:not(:last-child):after { } input.ant-input-lg::placeholder{ font-size: 14px !important; +} +p{ + margin-bottom: 0px!important; +} +.toprightNum{ + position: absolute; + right: 0px; + top:4px; + color: #999; +} +.ant-input, .ant-input .ant-input-suffix{ + background-color: #fff!important; +} +.has-error .ant-input{ + background-color: #FEF1F0!important; } \ No newline at end of file diff --git a/public/css/iconfont.css b/public/css/iconfont.css index dd2576a80..1b6e09a20 100644 --- a/public/css/iconfont.css +++ b/public/css/iconfont.css @@ -1,10 +1,8 @@ -@font-face {font-family: "iconfont"; - src: url('iconfont.eot?t=1615874335220'); /* IE9 */ - src: url('iconfont.eot?t=1615874335220#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('iconfont.woff?t=1615874335220') format('woff'), - url('iconfont.ttf?t=1615874335220') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1615874335220#iconfont') format('svg'); /* iOS 4.1- */ +@font-face { + font-family: "iconfont"; /* Project id 2340181 */ + src: url('iconfont.woff2?t=1631692103587') format('woff2'), + url('iconfont.woff?t=1631692103587') format('woff'), + url('iconfont.ttf?t=1631692103587') format('truetype'); } .iconfont { @@ -15,6 +13,498 @@ -moz-osx-font-smoothing: grayscale; } +.icon-icon:before { + content: "\e8ce"; +} + +.icon-tar:before { + content: "\e8cf"; +} + +.icon-a-fuzhi2:before { + content: "\e8d0"; +} + +.icon-fujian1:before { + content: "\e8d1"; +} + +.icon-a-bianji1:before { + content: "\e8d2"; +} + +.icon-banbenicon:before { + content: "\e8d3"; +} + +.icon-shanchuicon2:before { + content: "\e8d4"; +} + +.icon-a-lajitong_icon3x:before { + content: "\e8d5"; +} + +.icon-xialaanniu2:before { + content: "\e8d6"; +} + +.icon-xiazai-icon:before { + content: "\e8d7"; +} + +.icon-master_icon1:before { + content: "\e8d8"; +} + +.icon-shangchuanicon:before { + content: "\e8d9"; +} + +.icon-gerenziliao1:before { + content: "\e8c7"; +} + +.icon-lichengbeiicon:before { + content: "\e885"; +} + +.icon-cangkushezhiicon:before { + content: "\e889"; +} + +.icon-dongtaiicon:before { + content: "\e88a"; +} + +.icon-gongzuoliuicon:before { + content: "\e88b"; +} + +.icon-yixiuicon1:before { + content: "\e89b"; +} + +.icon-a-wikiicon1:before { + content: "\e8c6"; +} + +.icon-daimakuicon1:before { + content: "\e8c5"; +} + +.icon-wodetongzhi:before { + content: "\e8c8"; +} + +.icon-tongzhiguanli:before { + content: "\e8c9"; +} + +.icon-xuanzhong3:before { + content: "\e8ca"; +} + +.icon-xitongtongzhiicon:before { + content: "\e8cb"; +} + +.icon-xiaoxi2:before { + content: "\e8cc"; +} + +.icon-sshmiyue:before { + content: "\e8cd"; +} + +.icon-gerenziliao:before { + content: "\e8c4"; +} + +.icon-xinshouzhiyin:before { + content: "\e8e4"; +} + +.icon-xinjianxiangmu:before { + content: "\e8e6"; +} + +.icon-jiaruketang1:before { + content: "\e8e9"; +} + +.icon-xiangmugonggao:before { + content: "\e8c2"; +} + +.icon-chengguo:before { + content: "\e8c3"; +} + +.icon-chengjiaogonggao:before { + content: "\e8c0"; +} + +.icon-jishuzichan:before { + content: "\e8c1"; +} + +.icon-feibiaogonggao:before { + content: "\e8bc"; +} + +.icon-zhongbiaogonggao:before { + content: "\e8bd"; +} + +.icon-gengzhenggonggao:before { + content: "\e8be"; +} + +.icon-zhaobiaogonggao:before { + content: "\e8bf"; +} + +.icon-wenjian6:before { + content: "\e8ba"; +} + +.icon-wenjianjia4:before { + content: "\e8bb"; +} + +.icon-quxiaoguanzhu:before { + content: "\e89a"; +} + +.icon-dianzan_icon:before { + content: "\e8a2"; +} + +.icon-wenjian5:before { + content: "\e896"; +} + +.icon-wenjianjia3:before { + content: "\e8a9"; +} + +.icon-fuzhiicon:before { + content: "\e886"; +} + +.icon-zhuye-fill:before { + content: "\e876"; +} + +.icon-daimakuicon:before { + content: "\e884"; +} + +.icon-xinjian2:before { + content: "\e8b0"; +} + +.icon-xieyiicon:before { + content: "\e870"; +} + +.icon-neicunicon:before { + content: "\e891"; +} + +.icon-zishuwenjian_icon:before { + content: "\e8a6"; +} + +.icon-biaoqianicon:before { + content: "\e882"; +} + +.icon-a-bianji:before { + content: "\e883"; +} + +.icon-lianjieicon:before { + content: "\e887"; +} + +.icon-hebingqingqiuicon:before { + content: "\e888"; +} + +.icon-morendianzan_icon:before { + content: "\e88e"; +} + +.icon-muluicon:before { + content: "\e894"; +} + +.icon-a-shezhi:before { + content: "\e899"; +} + +.icon-tijiaoicon:before { + content: "\e89e"; +} + +.icon-morenguanzhu_ICON:before { + content: "\e89f"; +} + +.icon-xialaanniu1:before { + content: "\e8a4"; +} + +.icon-zuohuaicon:before { + content: "\e8b5"; +} + +.icon-master_icon:before { + content: "\e8b6"; +} + +.icon-morenfuke_icon:before { + content: "\e8b7"; +} + +.icon-a-wikiicon:before { + content: "\e8b8"; +} + +.icon-yixiuicon:before { + content: "\e8b9"; +} + +.icon-suofang:before { + content: "\e87f"; +} + +.icon-fangdaicon:before { + content: "\e881"; +} + +.icon-sousuo_icon1:before { + content: "\e873"; +} + +.icon-huanying_icon:before { + content: "\e878"; +} + +.icon-wenjianjia2:before { + content: "\e879"; +} + +.icon-shanchuicon1:before { + content: "\e87a"; +} + +.icon-qingqiuicon:before { + content: "\e871"; +} + +.icon-xiangyingicon:before { + content: "\e87c"; +} + +.icon-duoxuanxuanzhong:before { + content: "\e88f"; +} + +.icon-cuowuicon:before { + content: "\e890"; +} + +.icon-chenggongicon:before { + content: "\e892"; +} + +.icon-weixuanzhongxiangyingicon:before { + content: "\e893"; +} + +.icon-bitianicon:before { + content: "\e895"; +} + +.icon-weixuanzhongxiangmubiaoqianicon:before { + content: "\e897"; +} + +.icon-liebiaoicon:before { + content: "\e898"; +} + +.icon-xiezuozheguanliicon:before { + content: "\e8a1"; +} + +.icon-xuanzhongfenzhiicon:before { + content: "\e8a3"; +} + +.icon-xuanzhongjibenshezhiicon:before { + content: "\e8a5"; +} + +.icon-xuanzhongxiangmubiaoqianicon:before { + content: "\e8aa"; +} + +.icon-a-xuanzhongwebhookicon:before { + content: "\e8af"; +} + +.icon-shanchu_tc_icon:before { + content: "\e88c"; +} + +.icon-wiki_icon:before { + content: "\e88d"; +} + +.icon-daorumoban_icon:before { + content: "\e86f"; +} + +.icon-cuowu:before { + content: "\e872"; +} + +.icon-gengduo_icon:before { + content: "\e874"; +} + +.icon-fucengguanbi_icon:before { + content: "\e875"; +} + +.icon-shanchuicon:before { + content: "\e877"; +} + +.icon-sousuo_shanchuicon:before { + content: "\e87b"; +} + +.icon-sousuo_icon:before { + content: "\e87d"; +} + +.icon-wendangyulan_icon:before { + content: "\e87e"; +} + +.icon-xialaanniu:before { + content: "\e880"; +} + +.icon-erciqueren_icon:before { + content: "\e867"; +} + +.icon-xuanzhongssh_icon:before { + content: "\e868"; +} + +.icon-weixuanzhonganquanshezhi_icon:before { + content: "\e869"; +} + +.icon-weixuanzhongssh_icon:before { + content: "\e86a"; +} + +.icon-xuanzhonganquanshezhi_icon:before { + content: "\e86b"; +} + +.icon-shanchu_icon:before { + content: "\e86c"; +} + +.icon-liebiaossh_icon:before { + content: "\e86e"; +} + +.icon-file-submodule:before { + content: "\e866"; +} + +.icon-nv1:before { + content: "\e864"; +} + +.icon-nan1:before { + content: "\e865"; +} + +.icon-youxiang:before { + content: "\e8b2"; +} + +.icon-danwei:before { + content: "\e8a7"; +} + +.icon-daibanshixiang:before { + content: "\e8a8"; +} + +.icon-gailan:before { + content: "\e8ab"; +} + +.icon-nan:before { + content: "\e8ac"; +} + +.icon-nv:before { + content: "\e8ad"; +} + +.icon-gongzuoliu1:before { + content: "\e8ae"; +} + +.icon-shujutongji:before { + content: "\e8b1"; +} + +.icon-xiangmu:before { + content: "\e8b3"; +} + +.icon-zuzhi:before { + content: "\e8b4"; +} + +.icon-arrowRight:before { + content: "\e863"; +} + +.icon-jiantouloukong-zuo:before { + content: "\e861"; +} + +.icon-jiantouloukong-you:before { + content: "\e862"; +} + +.icon-fenxiang1:before { + content: "\e89c"; +} + +.icon-huidaodingbu1:before { + content: "\e89d"; +} + +.icon-bangzhu:before { + content: "\e8a0"; +} + .icon-tijiao:before { content: "\e860"; } @@ -2431,7 +2921,7 @@ content: "\e7f3"; } -.icon-dianzan1:before { +.icon-dianzaned:before { content: "\e639"; } diff --git a/public/css/iconfont.eot b/public/css/iconfont.eot deleted file mode 100644 index d13e3094f..000000000 Binary files a/public/css/iconfont.eot and /dev/null differ diff --git a/public/css/iconfont.js b/public/css/iconfont.js index fe265399e..fdaa5e328 100644 --- a/public/css/iconfont.js +++ b/public/css/iconfont.js @@ -1 +1 @@ -!function(c){var l,a,h,i,o,z,t='',p=(p=document.getElementsByTagName("script"))[p.length-1].getAttribute("data-injectcss");if(p&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function s(){o||(o=!0,h())}l=function(){var c,l,a,h;(h=document.createElement("div")).innerHTML=t,t=null,(a=h.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(l=document.body).firstChild?(h=c,(a=l.firstChild).parentNode.insertBefore(h,a)):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),l()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(h=l,i=c.document,o=!1,(z=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(z,50)}s()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,s())})}(window); \ No newline at end of file +!function(c){var a,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(c,a){a.parentNode.insertBefore(c,a)};if(t&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(m,50)}v()}a=function(){var c,a;(a=document.createElement("div")).innerHTML=z,z=null,(c=a.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",a=c,(c=document.body).firstChild?p(a,c.firstChild):c.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),a()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=a,i=c.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window); \ No newline at end of file diff --git a/public/css/iconfont.json b/public/css/iconfont.json index dc85bc21e..eb088c35c 100644 --- a/public/css/iconfont.json +++ b/public/css/iconfont.json @@ -5,6 +5,867 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "24368060", + "name": "icon", + "font_class": "icon", + "unicode": "e8ce", + "unicode_decimal": 59598 + }, + { + "icon_id": "24368061", + "name": "tar", + "font_class": "tar", + "unicode": "e8cf", + "unicode_decimal": 59599 + }, + { + "icon_id": "24289113", + "name": "复制 (2)", + "font_class": "a-fuzhi2", + "unicode": "e8d0", + "unicode_decimal": 59600 + }, + { + "icon_id": "24289114", + "name": "附件", + "font_class": "fujian1", + "unicode": "e8d1", + "unicode_decimal": 59601 + }, + { + "icon_id": "24289115", + "name": "编 辑", + "font_class": "a-bianji1", + "unicode": "e8d2", + "unicode_decimal": 59602 + }, + { + "icon_id": "24289116", + "name": "版本icon", + "font_class": "banbenicon", + "unicode": "e8d3", + "unicode_decimal": 59603 + }, + { + "icon_id": "24289117", + "name": "删除icon", + "font_class": "shanchuicon2", + "unicode": "e8d4", + "unicode_decimal": 59604 + }, + { + "icon_id": "24289118", + "name": "垃圾桶_icon@3x", + "font_class": "a-lajitong_icon3x", + "unicode": "e8d5", + "unicode_decimal": 59605 + }, + { + "icon_id": "24289119", + "name": "下拉按钮", + "font_class": "xialaanniu2", + "unicode": "e8d6", + "unicode_decimal": 59606 + }, + { + "icon_id": "24289120", + "name": "下载-icon", + "font_class": "xiazai-icon", + "unicode": "e8d7", + "unicode_decimal": 59607 + }, + { + "icon_id": "24289121", + "name": "master_icon", + "font_class": "master_icon1", + "unicode": "e8d8", + "unicode_decimal": 59608 + }, + { + "icon_id": "24289122", + "name": "上传icon", + "font_class": "shangchuanicon", + "unicode": "e8d9", + "unicode_decimal": 59609 + }, + { + "icon_id": "24059956", + "name": "个人资料", + "font_class": "gerenziliao1", + "unicode": "e8c7", + "unicode_decimal": 59591 + }, + { + "icon_id": "24059409", + "name": "里程碑icon", + "font_class": "lichengbeiicon", + "unicode": "e885", + "unicode_decimal": 59525 + }, + { + "icon_id": "24059410", + "name": "仓库设置icon", + "font_class": "cangkushezhiicon", + "unicode": "e889", + "unicode_decimal": 59529 + }, + { + "icon_id": "24059411", + "name": "动态icon", + "font_class": "dongtaiicon", + "unicode": "e88a", + "unicode_decimal": 59530 + }, + { + "icon_id": "24059412", + "name": "工作流icon", + "font_class": "gongzuoliuicon", + "unicode": "e88b", + "unicode_decimal": 59531 + }, + { + "icon_id": "24059413", + "name": "易修icon", + "font_class": "yixiuicon1", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "24059414", + "name": "wiki icon", + "font_class": "a-wikiicon1", + "unicode": "e8c6", + "unicode_decimal": 59590 + }, + { + "icon_id": "24047186", + "name": "代码库icon", + "font_class": "daimakuicon1", + "unicode": "e8c5", + "unicode_decimal": 59589 + }, + { + "icon_id": "24047189", + "name": "我的通知", + "font_class": "wodetongzhi", + "unicode": "e8c8", + "unicode_decimal": 59592 + }, + { + "icon_id": "24047190", + "name": "通知管理", + "font_class": "tongzhiguanli", + "unicode": "e8c9", + "unicode_decimal": 59593 + }, + { + "icon_id": "24047191", + "name": "选中", + "font_class": "xuanzhong3", + "unicode": "e8ca", + "unicode_decimal": 59594 + }, + { + "icon_id": "24047192", + "name": "系统通知icon", + "font_class": "xitongtongzhiicon", + "unicode": "e8cb", + "unicode_decimal": 59595 + }, + { + "icon_id": "24047193", + "name": "消息", + "font_class": "xiaoxi2", + "unicode": "e8cc", + "unicode_decimal": 59596 + }, + { + "icon_id": "24047194", + "name": "ssh密钥", + "font_class": "sshmiyue", + "unicode": "e8cd", + "unicode_decimal": 59597 + }, + { + "icon_id": "24014152", + "name": "个人资料", + "font_class": "gerenziliao", + "unicode": "e8c4", + "unicode_decimal": 59588 + }, + { + "icon_id": "23655968", + "name": "新手指引", + "font_class": "xinshouzhiyin", + "unicode": "e8e4", + "unicode_decimal": 59620 + }, + { + "icon_id": "23655969", + "name": "新建项目", + "font_class": "xinjianxiangmu", + "unicode": "e8e6", + "unicode_decimal": 59622 + }, + { + "icon_id": "23658111", + "name": "加入课堂", + "font_class": "jiaruketang1", + "unicode": "e8e9", + "unicode_decimal": 59625 + }, + { + "icon_id": "23791639", + "name": "项目公告", + "font_class": "xiangmugonggao", + "unicode": "e8c2", + "unicode_decimal": 59586 + }, + { + "icon_id": "23791640", + "name": "成果", + "font_class": "chengguo", + "unicode": "e8c3", + "unicode_decimal": 59587 + }, + { + "icon_id": "23791410", + "name": "成交公告", + "font_class": "chengjiaogonggao", + "unicode": "e8c0", + "unicode_decimal": 59584 + }, + { + "icon_id": "23791411", + "name": "技术资产", + "font_class": "jishuzichan", + "unicode": "e8c1", + "unicode_decimal": 59585 + }, + { + "icon_id": "23790928", + "name": "废标公告", + "font_class": "feibiaogonggao", + "unicode": "e8bc", + "unicode_decimal": 59580 + }, + { + "icon_id": "23790929", + "name": "中标公告", + "font_class": "zhongbiaogonggao", + "unicode": "e8bd", + "unicode_decimal": 59581 + }, + { + "icon_id": "23790930", + "name": "更正公告", + "font_class": "gengzhenggonggao", + "unicode": "e8be", + "unicode_decimal": 59582 + }, + { + "icon_id": "23790931", + "name": "招标公告", + "font_class": "zhaobiaogonggao", + "unicode": "e8bf", + "unicode_decimal": 59583 + }, + { + "icon_id": "23732532", + "name": "文件", + "font_class": "wenjian6", + "unicode": "e8ba", + "unicode_decimal": 59578 + }, + { + "icon_id": "23732533", + "name": "文件夹", + "font_class": "wenjianjia4", + "unicode": "e8bb", + "unicode_decimal": 59579 + }, + { + "icon_id": "23642443", + "name": "取消关注", + "font_class": "quxiaoguanzhu", + "unicode": "e89a", + "unicode_decimal": 59546 + }, + { + "icon_id": "23642444", + "name": "点赞_icon", + "font_class": "dianzan_icon", + "unicode": "e8a2", + "unicode_decimal": 59554 + }, + { + "icon_id": "23639530", + "name": "文件", + "font_class": "wenjian5", + "unicode": "e896", + "unicode_decimal": 59542 + }, + { + "icon_id": "23639533", + "name": "文件夹", + "font_class": "wenjianjia3", + "unicode": "e8a9", + "unicode_decimal": 59561 + }, + { + "icon_id": "23639440", + "name": "复制icon", + "font_class": "fuzhiicon", + "unicode": "e886", + "unicode_decimal": 59526 + }, + { + "icon_id": "23639422", + "name": "主页-fill", + "font_class": "zhuye-fill", + "unicode": "e876", + "unicode_decimal": 59510 + }, + { + "icon_id": "23639423", + "name": "代码库icon", + "font_class": "daimakuicon", + "unicode": "e884", + "unicode_decimal": 59524 + }, + { + "icon_id": "23572260", + "name": "新建", + "font_class": "xinjian2", + "unicode": "e8b0", + "unicode_decimal": 59568 + }, + { + "icon_id": "23567674", + "name": "协议icon", + "font_class": "xieyiicon", + "unicode": "e870", + "unicode_decimal": 59504 + }, + { + "icon_id": "23567675", + "name": "内存icon", + "font_class": "neicunicon", + "unicode": "e891", + "unicode_decimal": 59537 + }, + { + "icon_id": "23567676", + "name": "自述文件_icon", + "font_class": "zishuwenjian_icon", + "unicode": "e8a6", + "unicode_decimal": 59558 + }, + { + "icon_id": "23472253", + "name": "标签icon", + "font_class": "biaoqianicon", + "unicode": "e882", + "unicode_decimal": 59522 + }, + { + "icon_id": "23472254", + "name": "编 辑", + "font_class": "a-bianji", + "unicode": "e883", + "unicode_decimal": 59523 + }, + { + "icon_id": "23472258", + "name": "链接icon", + "font_class": "lianjieicon", + "unicode": "e887", + "unicode_decimal": 59527 + }, + { + "icon_id": "23472259", + "name": "合并请求icon", + "font_class": "hebingqingqiuicon", + "unicode": "e888", + "unicode_decimal": 59528 + }, + { + "icon_id": "23472263", + "name": "默认点赞_icon", + "font_class": "morendianzan_icon", + "unicode": "e88e", + "unicode_decimal": 59534 + }, + { + "icon_id": "23472265", + "name": "目录icon", + "font_class": "muluicon", + "unicode": "e894", + "unicode_decimal": 59540 + }, + { + "icon_id": "23472267", + "name": "设 置", + "font_class": "a-shezhi", + "unicode": "e899", + "unicode_decimal": 59545 + }, + { + "icon_id": "23472269", + "name": "提交icon", + "font_class": "tijiaoicon", + "unicode": "e89e", + "unicode_decimal": 59550 + }, + { + "icon_id": "23472270", + "name": "默认关注_ICON", + "font_class": "morenguanzhu_ICON", + "unicode": "e89f", + "unicode_decimal": 59551 + }, + { + "icon_id": "23472272", + "name": "下拉按钮", + "font_class": "xialaanniu1", + "unicode": "e8a4", + "unicode_decimal": 59556 + }, + { + "icon_id": "23472276", + "name": "左滑icon", + "font_class": "zuohuaicon", + "unicode": "e8b5", + "unicode_decimal": 59573 + }, + { + "icon_id": "23472277", + "name": "master_icon", + "font_class": "master_icon", + "unicode": "e8b6", + "unicode_decimal": 59574 + }, + { + "icon_id": "23472278", + "name": "默认复刻_icon", + "font_class": "morenfuke_icon", + "unicode": "e8b7", + "unicode_decimal": 59575 + }, + { + "icon_id": "23472279", + "name": "wiki icon", + "font_class": "a-wikiicon", + "unicode": "e8b8", + "unicode_decimal": 59576 + }, + { + "icon_id": "23472280", + "name": "易修icon", + "font_class": "yixiuicon", + "unicode": "e8b9", + "unicode_decimal": 59577 + }, + { + "icon_id": "23436350", + "name": "缩放", + "font_class": "suofang", + "unicode": "e87f", + "unicode_decimal": 59519 + }, + { + "icon_id": "23436351", + "name": "放大icon", + "font_class": "fangdaicon", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "23384231", + "name": "搜索_icon", + "font_class": "sousuo_icon1", + "unicode": "e873", + "unicode_decimal": 59507 + }, + { + "icon_id": "23384232", + "name": "欢迎_icon", + "font_class": "huanying_icon", + "unicode": "e878", + "unicode_decimal": 59512 + }, + { + "icon_id": "23384233", + "name": "文件夹", + "font_class": "wenjianjia2", + "unicode": "e879", + "unicode_decimal": 59513 + }, + { + "icon_id": "23384234", + "name": "删除icon", + "font_class": "shanchuicon1", + "unicode": "e87a", + "unicode_decimal": 59514 + }, + { + "icon_id": "23261798", + "name": "请求icon", + "font_class": "qingqiuicon", + "unicode": "e871", + "unicode_decimal": 59505 + }, + { + "icon_id": "23261799", + "name": "响应icon", + "font_class": "xiangyingicon", + "unicode": "e87c", + "unicode_decimal": 59516 + }, + { + "icon_id": "23144143", + "name": "多选选中", + "font_class": "duoxuanxuanzhong", + "unicode": "e88f", + "unicode_decimal": 59535 + }, + { + "icon_id": "23144144", + "name": "错误icon", + "font_class": "cuowuicon", + "unicode": "e890", + "unicode_decimal": 59536 + }, + { + "icon_id": "23144146", + "name": "成功icon", + "font_class": "chenggongicon", + "unicode": "e892", + "unicode_decimal": 59538 + }, + { + "icon_id": "23144147", + "name": "未选中响应icon", + "font_class": "weixuanzhongxiangyingicon", + "unicode": "e893", + "unicode_decimal": 59539 + }, + { + "icon_id": "23144149", + "name": "必填icon", + "font_class": "bitianicon", + "unicode": "e895", + "unicode_decimal": 59541 + }, + { + "icon_id": "23144151", + "name": "未选中项目标签icon", + "font_class": "weixuanzhongxiangmubiaoqianicon", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "23144152", + "name": "列表icon", + "font_class": "liebiaoicon", + "unicode": "e898", + "unicode_decimal": 59544 + }, + { + "icon_id": "23144158", + "name": "协作者管理icon", + "font_class": "xiezuozheguanliicon", + "unicode": "e8a1", + "unicode_decimal": 59553 + }, + { + "icon_id": "23144160", + "name": "选中分支icon", + "font_class": "xuanzhongfenzhiicon", + "unicode": "e8a3", + "unicode_decimal": 59555 + }, + { + "icon_id": "23144162", + "name": "选中基本设置icon", + "font_class": "xuanzhongjibenshezhiicon", + "unicode": "e8a5", + "unicode_decimal": 59557 + }, + { + "icon_id": "23144165", + "name": "选中项目标签icon", + "font_class": "xuanzhongxiangmubiaoqianicon", + "unicode": "e8aa", + "unicode_decimal": 59562 + }, + { + "icon_id": "23144167", + "name": "选中webhook icon", + "font_class": "a-xuanzhongwebhookicon", + "unicode": "e8af", + "unicode_decimal": 59567 + }, + { + "icon_id": "23046290", + "name": "shanchu_tc_icon", + "font_class": "shanchu_tc_icon", + "unicode": "e88c", + "unicode_decimal": 59532 + }, + { + "icon_id": "23046293", + "name": "wiki_icon", + "font_class": "wiki_icon", + "unicode": "e88d", + "unicode_decimal": 59533 + }, + { + "icon_id": "23046244", + "name": "导入模版_icon", + "font_class": "daorumoban_icon", + "unicode": "e86f", + "unicode_decimal": 59503 + }, + { + "icon_id": "23046252", + "name": "错误", + "font_class": "cuowu", + "unicode": "e872", + "unicode_decimal": 59506 + }, + { + "icon_id": "23046255", + "name": "更多_icon", + "font_class": "gengduo_icon", + "unicode": "e874", + "unicode_decimal": 59508 + }, + { + "icon_id": "23046258", + "name": "复层关闭_icon", + "font_class": "fucengguanbi_icon", + "unicode": "e875", + "unicode_decimal": 59509 + }, + { + "icon_id": "23046268", + "name": "删除icon", + "font_class": "shanchuicon", + "unicode": "e877", + "unicode_decimal": 59511 + }, + { + "icon_id": "23046273", + "name": "搜索_删除icon", + "font_class": "sousuo_shanchuicon", + "unicode": "e87b", + "unicode_decimal": 59515 + }, + { + "icon_id": "23046275", + "name": "搜索_icon", + "font_class": "sousuo_icon", + "unicode": "e87d", + "unicode_decimal": 59517 + }, + { + "icon_id": "23046276", + "name": "文档预览_icon", + "font_class": "wendangyulan_icon", + "unicode": "e87e", + "unicode_decimal": 59518 + }, + { + "icon_id": "23046278", + "name": "下拉按钮", + "font_class": "xialaanniu", + "unicode": "e880", + "unicode_decimal": 59520 + }, + { + "icon_id": "22906287", + "name": "二次确认_icon", + "font_class": "erciqueren_icon", + "unicode": "e867", + "unicode_decimal": 59495 + }, + { + "icon_id": "22906288", + "name": "选中ssh_icon", + "font_class": "xuanzhongssh_icon", + "unicode": "e868", + "unicode_decimal": 59496 + }, + { + "icon_id": "22906289", + "name": "未选中安全设置_icon", + "font_class": "weixuanzhonganquanshezhi_icon", + "unicode": "e869", + "unicode_decimal": 59497 + }, + { + "icon_id": "22906290", + "name": "未选中ssh_icon", + "font_class": "weixuanzhongssh_icon", + "unicode": "e86a", + "unicode_decimal": 59498 + }, + { + "icon_id": "22906291", + "name": "选中安全设置_icon", + "font_class": "xuanzhonganquanshezhi_icon", + "unicode": "e86b", + "unicode_decimal": 59499 + }, + { + "icon_id": "22906292", + "name": "删除_icon", + "font_class": "shanchu_icon", + "unicode": "e86c", + "unicode_decimal": 59500 + }, + { + "icon_id": "22906293", + "name": "列表ssh_icon", + "font_class": "liebiaossh_icon", + "unicode": "e86e", + "unicode_decimal": 59502 + }, + { + "icon_id": "17575494", + "name": "file-submodule", + "font_class": "file-submodule", + "unicode": "e866", + "unicode_decimal": 59494 + }, + { + "icon_id": "7539612", + "name": "nv", + "font_class": "nv1", + "unicode": "e864", + "unicode_decimal": 59492 + }, + { + "icon_id": "7539613", + "name": "nan", + "font_class": "nan1", + "unicode": "e865", + "unicode_decimal": 59493 + }, + { + "icon_id": "21936935", + "name": "邮箱", + "font_class": "youxiang", + "unicode": "e8b2", + "unicode_decimal": 59570 + }, + { + "icon_id": "21936924", + "name": "单位", + "font_class": "danwei", + "unicode": "e8a7", + "unicode_decimal": 59559 + }, + { + "icon_id": "21936925", + "name": "待办事项", + "font_class": "daibanshixiang", + "unicode": "e8a8", + "unicode_decimal": 59560 + }, + { + "icon_id": "21936928", + "name": "概览", + "font_class": "gailan", + "unicode": "e8ab", + "unicode_decimal": 59563 + }, + { + "icon_id": "21936929", + "name": "男", + "font_class": "nan", + "unicode": "e8ac", + "unicode_decimal": 59564 + }, + { + "icon_id": "21936930", + "name": "女", + "font_class": "nv", + "unicode": "e8ad", + "unicode_decimal": 59565 + }, + { + "icon_id": "21936931", + "name": "工作流", + "font_class": "gongzuoliu1", + "unicode": "e8ae", + "unicode_decimal": 59566 + }, + { + "icon_id": "21936934", + "name": "数据统计", + "font_class": "shujutongji", + "unicode": "e8b1", + "unicode_decimal": 59569 + }, + { + "icon_id": "21936936", + "name": "项目", + "font_class": "xiangmu", + "unicode": "e8b3", + "unicode_decimal": 59571 + }, + { + "icon_id": "21936937", + "name": "组织", + "font_class": "zuzhi", + "unicode": "e8b4", + "unicode_decimal": 59572 + }, + { + "icon_id": "14835599", + "name": "右箭头", + "font_class": "arrowRight", + "unicode": "e863", + "unicode_decimal": 59491 + }, + { + "icon_id": "21151489", + "name": "箭头镂空-左", + "font_class": "jiantouloukong-zuo", + "unicode": "e861", + "unicode_decimal": 59489 + }, + { + "icon_id": "21151557", + "name": "箭头镂空-右", + "font_class": "jiantouloukong-you", + "unicode": "e862", + "unicode_decimal": 59490 + }, + { + "icon_id": "21568989", + "name": "分享", + "font_class": "fenxiang1", + "unicode": "e89c", + "unicode_decimal": 59548 + }, + { + "icon_id": "21568990", + "name": "回到顶部", + "font_class": "huidaodingbu1", + "unicode": "e89d", + "unicode_decimal": 59549 + }, + { + "icon_id": "21568993", + "name": "帮助", + "font_class": "bangzhu", + "unicode": "e8a0", + "unicode_decimal": 59552 + }, { "icon_id": "991344", "name": "提交", @@ -4236,7 +5097,7 @@ { "icon_id": "1004630", "name": "点赞2", - "font_class": "dianzan1", + "font_class": "dianzaned", "unicode": "e639", "unicode_decimal": 58937 }, diff --git a/public/css/iconfont.svg b/public/css/iconfont.svg deleted file mode 100644 index d6d0adbc5..000000000 --- a/public/css/iconfont.svg +++ /dev/null @@ -1,1874 +0,0 @@ - - - - - -Created by iconfont - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf index 1c4e95e1f..d77665009 100644 Binary files a/public/css/iconfont.ttf and b/public/css/iconfont.ttf differ diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff index a0a7b4eda..a9ab654fb 100644 Binary files a/public/css/iconfont.woff and b/public/css/iconfont.woff differ diff --git a/public/css/iconfont.woff2 b/public/css/iconfont.woff2 index 4fa2bd6a1..4f43fc559 100644 Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ diff --git a/public/favicon.ico b/public/favicon.ico old mode 100755 new mode 100644 index 05b9d163e..75a4c3dfd Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/index.html b/public/index.html index f039d86ef..9489fe428 100755 --- a/public/index.html +++ b/public/index.html @@ -1,5 +1,5 @@ - + diff --git a/src/App.css b/src/App.css index 205c64f7d..8d916d390 100644 --- a/src/App.css +++ b/src/App.css @@ -60,12 +60,13 @@ body { .ant-progress-textno { color: #f5222d; } - +.CodeMirror pre.CodeMirror-line{ + font-size: 16px!important; +} /* md多空格 */ .markdown-body p { margin:10px 0px!important; font-size: 16px !important; - line-height: 2 !important; white-space: pre-wrap; } @@ -87,6 +88,10 @@ body { border-left: 1px solid rgb(221, 221, 221); /* 某些情况下,被cm盖住了 */ z-index: 99; + padding:8px 8px 50px; +} +.editormd-preview .markdown-body{ + padding:0px !important; } /* 图片点击放大的场景,隐藏图片链接 */ diff --git a/src/App.js b/src/App.js index 789c0af2f..442d4f323 100644 --- a/src/App.js +++ b/src/App.js @@ -3,7 +3,7 @@ import './App.css'; import { ConfigProvider } from 'antd' import zhCN from 'antd/lib/locale-provider/zh_CN'; import { - BrowserRouter as Router, + // BrowserRouter as Router, Route, Switch } from 'react-router-dom'; @@ -17,10 +17,9 @@ import marked from './common/marked'; import moment from 'moment' import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles'; +import SiderBar from './forge/Component/SiderBar' -import history from './history'; - -import { SnackbarHOC } from 'educoder' +import { SnackbarHOC } from 'educoder'; import { initAxiosInterceptors } from './AppConfig' import { Provider } from 'react-redux'; import configureStore from './redux/stores/configureStore'; @@ -40,6 +39,16 @@ const Projects = Loadable({ loader: () => import('./forge/Index'), loading: Loading, }) +// forge项目详情 +const ProjectDetail = Loadable({ + loader: () => import("./forge/Main/DetailAdaptor"), + loading: Loading, +}); +//forge安全设置 +const Security = Loadable({ + loader: () => import('./forge/SecuritySetting/Index'), + loading: Loading, +}) //forge项目-devOps详情 const OpsDetail = Loadable({ loader: () => import('./forge/DevOps/opsDetail'), @@ -74,6 +83,27 @@ const EducoderLogin = Loadable({ loader: () => import('./modules/login/EducoderLogin'), loading: Loading, }) +const Search = Loadable({ + loader: () => import('./modules/search/'), + loading: Loading, +}) +const WikiPreview = Loadable({ + loader: () => import('./forge/Wiki/Preview'), + loading: Loading, +}) + +const ProjectIndex = Loadable({ + loader: () => import("./forge/Index"), + loading: Loading, +}); + +const CreateMerge = Loadable({ + loader: () => import('./forge/Merge/NewMerge'), + loading: Loading, +}) + +// 此处仅维护前端可能的一级路由,不用进行项目或者组织判断的字段。 +const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize"]; class App extends Component { constructor(props) { @@ -84,6 +114,51 @@ class App extends Component { mydisplay: false, occupation: 0, mygetHelmetapi: null, + pathType: null, + pathName: null, + } + } + + UNSAFE_componentWillMount() { + initAxiosInterceptors(this.props); + let pathname = window.location.pathname ? window.location.pathname.split('/')[1] : ''; + pathname && this.getPathnameType(pathname); + + // 添加路由监听,决定组织还是个人 + this.unlisten = this.props.history.listen((location) => { + let newPathname = location.pathname.split('/')[1]; + if (this.state.pathName !== newPathname) { + // this.setState({ pathType: '' }); + newPathname && this.getPathnameType(newPathname); + } + }); + } + + shouldComponentUpdate(nextProps, nextState) { + // (!keyWord.includes(this.props.location.pathname.split('/')[1])) && + if (nextProps.location.pathname.split('/')[1] !== this.props.location.pathname.split('/')[1] && nextState.pathType === this.state.pathType) { + return false; + } else { + return true; + } + } + + getPathnameType = (pathname) => { + if (!keyWord.includes(pathname)) { + let url = `/owners/${pathname}.json`; + axios.get(url).then((response) => { + if (response && response.status === 200) { + this.setState({ + pathType: response.data.type || '404', + pathName: pathname, + }) + } + }); + }else{ + this.setState({ + pathType: pathname, + pathName: pathname, + }); } } @@ -100,43 +175,22 @@ class App extends Component { Addcoursestypes: false }) }; - ModalCancelsy = () => { - this.setState({ - mydisplay: false, - }) - window.location.href = "/"; - }; - ModalshowCancelsy = () => { - this.setState({ - mydisplay: true, - }) - }; - disableVideoContextMenu = () => { - window.$("body").on("mousedown", "video", function (event) { - if (event.which === 3) { - window.$('video').bind('contextmenu', function () { return false; }); - } else { - window.$('video').unbind('contextmenu'); - } - }); - } componentDidMount() { document.title = "loading..."; - this.disableVideoContextMenu(); - history.listen(() => { - this.forceUpdate() - const $ = window.$ - $("html").animate({ scrollTop: $('html').scrollTop() - 0 }) - }); - initAxiosInterceptors(this.props); this.getAppdata(); window.addEventListener('error', (event) => { const msg = `${event.type}: ${event.message}`; }); + } + + componentWillUnmount() { + this.unlisten && this.unlisten(); // 执行解绑 + } + //修改登录方法 Modifyloginvalue = () => { this.setState({ @@ -207,69 +261,139 @@ class App extends Component { }; render() { + const { mygetHelmetapi, pathType} = this.state; + let personal = mygetHelmetapi && mygetHelmetapi.personal; return ( this.Modifyloginvalue()}> - - - {/*项目*/} - { - return () - } - }> - - {/*项目*/} - { - return () - } - }> - - { - return () - } - } - /> - {/*403*/} - + + {/* */} + + {/* wiki预览 */} + { + return () + } + } /> - - { - return () - } - }> - - {/*404*/} - - {/* 个人主页 */} - { - return () - } - }> - ( - - ) + {/* 项目PR */} + () + } + > + + {/*项目*/} + { + return () } - /> - - - + }> + + { + return () + } + }> + + + { + return () + } + } + /> + {/*403*/} + + + + + {/*404*/} + + + {/* 查询 */} + + + ( + + ) + } + /> + + + {/* 组织 */} + { + return () + } + }> + + + {/*新建项目等*/} + { + return () + } + }> + + + {/* 判断为用户/组织,并进入对应页面 */} + { + pathType === 'User' ? + { + return () + } + } + /> : pathType === 'Organization' ? { + return () + } + }> + : pathType === '404' ? : + ( + personal && personal.length > 0 ? + + : + + ) + } + /> + // + // + } + + + + {/* 个人主页 */} + { + return () + } + }> + + + + + {/* */} diff --git a/src/AppConfig.js b/src/AppConfig.js index bd24bb7de..ea85a4e52 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -58,7 +58,7 @@ export function initAxiosInterceptors(props) { }, err => { return Promise.reject(err); - }); + }); axios.interceptors.response.use(function (response) { if (response === undefined) { @@ -85,7 +85,10 @@ export function initAxiosInterceptors(props) { } if (response.data.status === 404) { - locationurl('/nopage'); + let responseURL = response.request ? response.request.responseURL:''; + if (responseURL.indexOf('/api/users/') === -1 && responseURL.indexOf('/api/organizations/') === -1 ) { + locationurl('/nopage'); + } } if (response.data.status === 500) { diff --git a/src/Loading.js b/src/Loading.js index f99057471..8175b7df8 100644 --- a/src/Loading.js +++ b/src/Loading.js @@ -9,20 +9,7 @@ class Loading extends Component { } render() { - return ( -
- - -
- ); + return "" } } diff --git a/src/college/College.js b/src/college/College.js index 85d43fb7e..f7a3ab6c7 100644 --- a/src/college/College.js +++ b/src/college/College.js @@ -195,7 +195,7 @@ class College extends Component { align: 'center', className: "edu-txt-center font-14 maxnamewidth105", render: (text, record) => ( - { diff --git a/src/college/colleagecss/colleage.css b/src/college/colleagecss/colleage.css index 9220b8acc..65f32322a 100644 --- a/src/college/colleagecss/colleage.css +++ b/src/college/colleagecss/colleage.css @@ -218,7 +218,7 @@ a:hover { } .color-blue { - color: #4CACFF; + color: #2A61FF; } .color-huang { diff --git a/src/common/DateUtil.js b/src/common/DateUtil.js index 859182e18..8846d274c 100644 --- a/src/common/DateUtil.js +++ b/src/common/DateUtil.js @@ -1,4 +1,5 @@ import moment from "moment"; +import { number } from "prop-types"; // 处理整点 半点 // 取传入时间往后的第一个半点 @@ -97,3 +98,41 @@ export function formatDuring(mss){ } return days + "天" + hours + "小时" + minutes + "分"; } + +/* + 返回:多久以前 + backDate:以前的某个日期 +*/ +export function timeAgo(backDate) { + try { + moment(backDate); + } catch (e) { + return '刚刚'; + } + if(typeof backDate ==='number'){ + backDate=backDate*1000 + }else{ + backDate= moment(backDate); + } + let time = new Date() - backDate; + var days = Math.floor(time / (1000 * 60 * 60 * 24)); + var hours = Math.floor((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60)); + var seconds = Math.floor((time % (1000 * 60 * 60)) / 1000); + if (time <= 0) { + return "刚刚"; + } + if (days) { + return days + "天前"; + } + if (hours) { + return hours + "小时前"; + } + if (minutes) { + return minutes + "分前"; + } + if (seconds) { + return seconds + "秒前"; + } + return "刚刚"; +} \ No newline at end of file diff --git a/src/common/TextUtil.js b/src/common/TextUtil.js index 94e736314..d1aa0e9cd 100644 --- a/src/common/TextUtil.js +++ b/src/common/TextUtil.js @@ -69,7 +69,7 @@ export function appendFileSizeToUploadFile(item) { } export function appendFileSizeToUploadFileAll(fileList) { return fileList.map(item => { - if (item.name.indexOf(uploadNameSizeSeperator) == -1) { + if (item.name.indexOf(uploadNameSizeSeperator) === -1) { return Object.assign({}, item, { name: `${item.name}${uploadNameSizeSeperator}${bytesToSize(item.size)}` }) } return item diff --git a/src/common/UrlTool.js b/src/common/UrlTool.js index 07e141ebf..f1800a75d 100644 --- a/src/common/UrlTool.js +++ b/src/common/UrlTool.js @@ -18,6 +18,23 @@ export function getImageUrl(path) { return `${path}`; } +export function numFormat(num, digits){ + let d = digits || 1; + var si = [ + { value: 1, symbol: "" }, + { value: 1E3, symbol: "k" }, + { value: 1E4, symbol: "W" } + ]; + var rx = /\.0+$|(\.[0-9]*[1-9])0+$/; + var i; + for (i = si.length - 1; i > 0; i--) { + if (num >= si[i].value) { + break; + } + } + return (num / si[i].value).toFixed(d).replace(rx, "$1") + si[i].symbol; +} + export function getImage(path) { // https://www.educoder.net // https://testbdweb.trustie.net diff --git a/src/common/educoder.js b/src/common/educoder.js index 1fc868930..1a063d823 100644 --- a/src/common/educoder.js +++ b/src/common/educoder.js @@ -3,7 +3,7 @@ // export { default as OrderStateUtil } from '../routes/Order/components/OrderStateUtil'; export { - getUploadLogoActionUrl as getUploadLogoActionUrl, + getUploadLogoActionUrl as getUploadLogoActionUrl,numFormat as numFormat, getImageUrl as getImageUrl,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl , getUploadActionUrl as getUploadActionUrl, getUploadActionUrltwo as getUploadActionUrltwo, getUploadActionUrlthree as getUploadActionUrlthree, getUploadActionUrlOfAuth as getUploadActionUrlOfAuth , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl @@ -27,7 +27,7 @@ export { markdownToHTML, uploadNameSizeSeperator, appendFileSizeToUploadFile, appendFileSizeToUploadFileAll, isImageExtension, downloadFile, sortDirections, validateLength, mdJSONParse, exportMdtoHtml } from './TextUtil' -export { handleDateString, getNextHalfHourOfMoment, formatDuring, formatSeconds } from './DateUtil' +export { handleDateString, getNextHalfHourOfMoment, formatDuring, formatSeconds ,timeAgo} from './DateUtil' export { configShareForIndex, configShareForPaths, configShareForShixuns, configShareForCourses, configShareForCustom } from './util/ShareUtil' diff --git a/src/components/render-html.jsx b/src/components/render-html.jsx index 3601ea323..b24fc092a 100644 --- a/src/components/render-html.jsx +++ b/src/components/render-html.jsx @@ -46,18 +46,18 @@ export default ({ let id = decodeURIComponent(u.split("#")[1]); let ele = document.getElementById(id); if(ele){ - window.scrollTo(0, ele.offsetTop + 220); + window.scrollTo(0, ele.offsetTop + 120); } } } - },[url]) + },[url,html]) const el = useRef(); function onAncherHandler(e) { - let target = e.target + let target = e.target; if (target.tagName.toUpperCase() === 'A') { - let ancher = target.getAttribute('href') - if (ancher.startsWith('#')) { + let ancher = target.getAttribute('href'); + if (ancher && ancher.startsWith('#')) { e.preventDefault() let viewEl = document.getElementById(ancher.replace('#', '')) if (viewEl) { diff --git a/src/context/TPIContextProvider.js b/src/context/TPIContextProvider.js index 22b247272..f3ea3e0fd 100644 --- a/src/context/TPIContextProvider.js +++ b/src/context/TPIContextProvider.js @@ -435,11 +435,11 @@ class TPIContextProvider extends Component { image_url: "avatars/User/1" login: "innov" name: "Coder" - user_url: "/users/innov" + user_url: "/innov" */ let user = resData.user; user.username = resData.user.name; - user.user_url = `/users/${resData.user.login}`; + user.user_url = `/${resData.user.login}`; // user.image_url = resData.image_url; user.is_teacher = resData.is_teacher; resData.user = user; diff --git a/src/forge/About/Index.jsx b/src/forge/About/Index.jsx index ce3599667..b36b815cf 100644 --- a/src/forge/About/Index.jsx +++ b/src/forge/About/Index.jsx @@ -69,7 +69,7 @@ function Index(props){
- 项目简介 + 项目概览 { editOpration && !edit && 编辑 } { @@ -117,7 +117,7 @@ function Index(props){ {content ? : -
暂无简介~
+
暂无概览~
} {attachments && attachments.length > 0 && - {item.name} + {item.name} {item.trend_type}

: // 如果是任务 item.trend_type === "Issue" ?

- {item.name} + {item.name} {item.trend_type}

: // 如果是合并请求

- {item.name} + {item.name} {item.trend_type}

}

- + {item.user_name} diff --git a/src/forge/Branch/CloneAddress.js b/src/forge/Branch/CloneAddress.js index 89cd3f4e0..c2e6dd746 100644 --- a/src/forge/Branch/CloneAddress.js +++ b/src/forge/Branch/CloneAddress.js @@ -1,39 +1,27 @@ -import React, { Component } from 'react'; -import { Dropdown, Icon, Tooltip } from 'antd'; -import "./branch.css"; +import React, { useState } from 'react'; +import { Menu } from 'antd'; +import "./branch.scss"; +import CopyTool from '../Component/CopyTool'; -class CloneAddress extends Component { - // 点击按钮复制功能 - jsCopy = () => { - var e = document.getElementById("copy_rep_content"); - e.select(); - document.execCommand("Copy"); - } - - render() { - const { http_url, downloadUrl } = this.props; - return ( -

- {/*

版本库地址已变更,请基于新地址提交代码

*/} - { - http_url && HTTP - } - - - this.jsCopy()}> - - { - downloadUrl && - - - - - - - - } +function CloneAddress({http_url , ssh_url , zip_url , tar_url}) { + const [ key , setKey ] = useState("HTTP"); + return ( +
+
+ + {setKey(e.key)}}>HTTP + {setKey(e.key)}}>SSH + +
+ + +
- ) - } + + 下载 ZIP + 下载 TAR.GZ + +
+ ) } export default CloneAddress; \ No newline at end of file diff --git a/src/forge/Branch/Select.jsx b/src/forge/Branch/Select.jsx index f33a716fb..601b94e8b 100644 --- a/src/forge/Branch/Select.jsx +++ b/src/forge/Branch/Select.jsx @@ -1,116 +1,36 @@ import React , { useState , useEffect } from 'react'; -import { Popover , Input , Spin } from 'antd'; -import './branch.css'; +import { Popover , Dropdown , Input , Spin } from 'antd'; +import './branch.scss'; import { getBranch , getTag } from '../GetData/getData'; +import SelectOverlay from './SelectOverlay'; export default (({ projectsId , branch , owner , changeBranch , branchList , tagflag = true })=>{ const [ showValue , setShowValue ] = useState(branch); - const [ inputValue , setInputValue] = useState(undefined); - const [ nav , setNav ] = useState(0); - const [ isSpin , setIsSpin ] = useState(true); - const [ flag , setFlag ] = useState(false); - - const [ data , setData ] = useState(undefined); - const [ datas , setDatas ] = useState(undefined); useEffect(()=>{ setShowValue(branch); },[branch]) - useEffect(()=>{ - document.body.addEventListener('click', e => { - let name = e.target.className; - let turn = name === "ant-input OptionsInput" || name === "navli active"|| name === "navli" || name === "padding10 bor-bottom-greyE"; - if(turn){ - return; - }else{ - setFlag(false); - } - }) - }) - - useEffect(()=>{ - if(branchList){ - setData(branchList); - setDatas(branchList); - setIsSpin(false); - } - },[branchList]) - - - async function getBranchs(id,owner){ - let result = await getBranch(id,owner); - setData(result); - setDatas(result); - setIsSpin(false); - } - async function getTags(id,owner){ - let result = await getTag(id,owner); - setData(result); - setDatas(result); - setIsSpin(false); - } - - function changeInputValue(e){ - setInputValue(e.target.value); - let filter = e.target.value ? data && data.length>0 && data.filter(item=>item.name.indexOf(e.target.value)>-1) : data; - setDatas(filter); - } - - function changeNav(nav){ - setNav(nav); - setIsSpin(true); - if(nav === 0){ - getBranchs(projectsId,owner); - }else{ - getTags(projectsId,owner); - } - } - function chooseitem(value){ - // setShowValue(value); - changeBranch(value); - } - - const menu = ( -
-
- -
    -
  • changeNav(0)}>分支列表
  • - { tagflag &&
  • changeNav(1)}>标签列表
  • } -
-
- -
    - { - datas && datas.length>0 ? - datas.map((item,key)=>{ - return( -
  • chooseitem(item.name)}>{item.name}
  • - ) - }): -

    暂无{inputValue}{nav === 0 ?"分支":"标签"}~

    - } -
-
-
+ ); return( - setFlag(!flag)} overlayClassName="branch-tagBox-list"> +
{/* {nav === 0 ?"分支":"标签"} */} - + {showValue} - - + +
-
+ ) }) \ No newline at end of file diff --git a/src/forge/Branch/SelectOverlay.jsx b/src/forge/Branch/SelectOverlay.jsx new file mode 100644 index 000000000..bb1774daa --- /dev/null +++ b/src/forge/Branch/SelectOverlay.jsx @@ -0,0 +1,84 @@ +import React , { useState , useEffect } from 'react'; +import { Input , Spin , Menu } from 'antd'; +import { getBranch , getTag } from '../GetData/getData'; + +function SelectOverlay({ changeBranch , tagflag , branchList , projectsId , owner }) { + const [ inputValue , setInputValue] = useState(undefined); + const [ nav , setNav ] = useState(0); + const [ isSpin , setIsSpin ] = useState(true); + + const [ data , setData ] = useState(undefined); + const [ datas , setDatas ] = useState(undefined); + const [ keys ,setKeys] = useState("branch"); + + useEffect(()=>{ + if(branchList){ + setData(branchList); + setDatas(branchList); + setIsSpin(false); + } + },[branchList]) + + async function getBranchs(id,owner){ + let result = await getBranch(id,owner); + setData(result); + setDatas(result); + setIsSpin(false); + } + async function getTags(id,owner){ + let result = await getTag(id,owner); + setData(result); + setDatas(result); + setIsSpin(false); + } + function chooseitem(value){ + changeBranch(value); + } + function changeInputValue(e){ + setInputValue(e.target.value); + let filter = e.target.value ? data && data.length>0 && data.filter(item=>item.name.indexOf(e.target.value)>-1) : data; + setDatas(filter); + } + + function changeNav(e){ + setKeys(e.key); + setIsSpin(true); + if(e.key === "branch"){ + getBranchs(projectsId,owner); + }else{ + getTags(projectsId,owner); + } + } + + return( +
+
+ } + placeholder={`请输入分支${tagflag ? "或标签" :""}名称搜索`} + autocomplete="off" className="OptionsInput" + value={inputValue} + onChange={changeInputValue} + /> +
+ + 分支 + { tagflag && 标签 } + + +
    + { + datas && datas.length>0 ? + datas.map((item,key)=>{ + return( +
  • chooseitem(item.name)}>{item.name}
  • + ) + }): +

    暂无{inputValue}{nav === 0 ?"分支":"标签"}~

    + } +
+
+
+ ) +} +export default SelectOverlay; \ No newline at end of file diff --git a/src/forge/Branch/branch.css b/src/forge/Branch/branch.css deleted file mode 100644 index 962b01970..000000000 --- a/src/forge/Branch/branch.css +++ /dev/null @@ -1,84 +0,0 @@ -.branchDropdown{ - border:1px solid #eee; - border-radius: 4px; - display: flex; - justify-content: center; - height: 40px; - line-height: 40px; - min-width: 220px; -} -.branchDropdown .ant-dropdown-trigger{ - width: 100%; - padding:0px 15px; - display: flex; - justify-content: space-between; - align-items: center; - cursor: pointer; -} -.branchOptions{ - width: 220px; - box-shadow: 0px 0px 3px 1px rgba(134, 134, 134, 0.4); - border-radius: 3px; - background: #fff; - max-height: 300px; -} -.OptionsUl{ - max-height: 220px; - overflow-y: auto; -} -.OptionsUl li{ - height: 35px; - line-height: 35px; - cursor: pointer; - padding:0px 10px; -} -.OptionsUl li:hover{ - background-color: #F0F0F0; -} -.OptionsUl li a{ - display: block; -} -.OptionsInput{ - height: 32px; - padding-left: 4px; - line-height: 32px; - width: 100%; -} -.branch-tagBox{ - border:1px solid #eee; - border-radius: 3px; - height: 40px; - display: flex; - align-items: center; - cursor: pointer; - min-width: 140px; -} -.branch-tagBox-list .ant-popover-arrow{ - display: none; -} -.branch-tagBox-list.ant-popover.ant-popover-placement-bottom{ - padding-top:0px; -} -.branch-tagBox .ant-dropdown-link{ - display: block; - flex:1; -} -.branch-tagBox-list .ant-popover-inner-content{ - padding:0px; -} -.navUl{ - display: flex; - justify-content: space-between; - align-items: center; - margin-top: 5px; -} -.navUl li{ - cursor: pointer; -} -.navUl li.active{ - color:#5091FF; -} -.listTips{ - padding:20px 0px; - text-align: center; -} \ No newline at end of file diff --git a/src/forge/Branch/branch.scss b/src/forge/Branch/branch.scss new file mode 100644 index 000000000..b0f8ca2c9 --- /dev/null +++ b/src/forge/Branch/branch.scss @@ -0,0 +1,121 @@ +.branchDropdown{ + border:1px solid #eee; + border-radius: 4px; + display: flex; + justify-content: center; + height: 40px; + line-height: 40px; + min-width: 220px; +} +.branchDropdown .ant-dropdown-trigger{ + width: 100%; + padding:0px 15px; + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; +} +.branchOptions{ + width: 220px; + box-shadow: 0px 0px 3px 1px rgba(134, 134, 134, 0.4); + border-radius: 3px; + background: #fff; + max-height: 300px; +} +.OptionsUl{ + max-height: 220px; + overflow-y: auto; +} +.OptionsUl li{ + height: 30px; + line-height: 30px; + cursor: pointer; + padding:0px 20px; + margin:5px 0px; +} +.OptionsUl li:hover{ + background-color: #F0F0F0; +} +.OptionsUl li a{ + display: block; +} +.OptionsInput{ + height: 32px; + padding-left: 4px; + line-height: 32px; + width: 100%; +} +.branch-tagBox{ + border:1px solid #D0D0D0; + border-radius: 3px; + height: 32px; + display: flex; + align-items: center; + cursor: pointer; + min-width: 104px; +} +.branch-tagBox:hover{ + background-color: #F3F4F6; +} +.branch-tagBox-list{ + background: #FFFFFF; + box-shadow: 0px 4px 8px 2px rgba(212, 212, 212, 0.5); + border-radius: 4px; + .ant-popover-arrow{ + display: none; + } + &.ant-popover.ant-popover-placement-bottom{ + padding-top:0px; + } + .branch-tagBox .ant-dropdown-link{ + display: block; + flex:1; + max-width: 105px; + } + .ant-popover-inner-content{ + padding:0px; + } +} +.overlayBranch{ + width: 325px; + .navUl{ + margin-top: 8px; + height: 30px; + line-height: 30px; + li{ + height: 30px; + line-height: 30px; + padding:0px 5px; + margin-left: 20px!important; + } + } +} +.listTips{ + padding:20px 0px; + text-align: center; +} + +.urlMenu{ + line-height: 30px; + margin-bottom: 10px; + padding:15px 20px 0px 20px; + border-bottom: none; + li.ant-menu-item{ + height: 30px; + line-height: 30px; + padding:0px 5px; + margin-right: 20px!important; + &.ant-menu-item-selected,&.ant-menu-item-active{ + color: #333; + } + &.ant-menu-item-selected{ + border-color:#1890ff!important; + } + &.ant-menu-item-active{ + border-color:transparent ; + } + } +} +.copytool{ + margin:0px 10px; +} \ No newline at end of file diff --git a/src/forge/Component/AddGroup.jsx b/src/forge/Component/AddGroup.jsx index 656175d5f..feff6f372 100644 --- a/src/forge/Component/AddGroup.jsx +++ b/src/forge/Component/AddGroup.jsx @@ -55,6 +55,7 @@ function AddGroup({organizeId,getGroupID}){ function addCollaborator(){ getGroupID && getGroupID(id); + setID(undefined); } return( diff --git a/src/forge/Component/AddMember.jsx b/src/forge/Component/AddMember.jsx index 0548e52da..f927850c8 100644 --- a/src/forge/Component/AddMember.jsx +++ b/src/forge/Component/AddMember.jsx @@ -4,7 +4,7 @@ import axios from 'axios'; import { getImageUrl } from 'educoder'; const { Option } = AutoComplete; -function AddMember({getID,login}){ +function AddMember({getID,login,showNotification}){ const [ id , setID ] = useState(undefined); const [ source , setSource ] = useState(undefined); const [ searchKey , setSearchKey ] = useState(undefined); @@ -45,7 +45,7 @@ function AddMember({getID,login}){ src={getImageUrl(`/${item && item.image_url}`)} alt="" /> - + {item.username} ({item.login}) @@ -66,7 +66,12 @@ function AddMember({getID,login}){ }; function addCollaborator(){ - getID && getID(id); + if(source && source.length>0){ + getID && getID(id); + setSearchKey(undefined); + }else{ + showNotification("请选择存在的用户!"); + } } return( diff --git a/src/forge/Component/Cards.jsx b/src/forge/Component/Cards.jsx index 498b375c1..f9a3d52e9 100644 --- a/src/forge/Component/Cards.jsx +++ b/src/forge/Component/Cards.jsx @@ -3,7 +3,7 @@ import { getImageUrl } from 'educoder'; import { Link } from 'react-router-dom'; import './Component.scss'; -function Cards({img , title, desc , rightBtn , src}){ +function Cards({img , title, desc , rightBtn , src , bottomInfos}){ return(
{img &&
} @@ -15,6 +15,7 @@ function Cards({img , title, desc , rightBtn , src}){
{desc}
+ {bottomInfos}
) diff --git a/src/forge/Component/Component.scss b/src/forge/Component/Component.scss index 12a899d89..30a62005c 100644 --- a/src/forge/Component/Component.scss +++ b/src/forge/Component/Component.scss @@ -113,7 +113,14 @@ li.ant-menu-item{ z-index: 10000; } .laterest{ - color: #05690d; + background-color: #EF3131; + color: #fff; + font-size: 12px; + margin-left: 10px; + padding:0px 5px; + border-radius: 2px; + height: 18px; + line-height: 18px; } @media screen and (max-width: 1800px){ @@ -155,41 +162,280 @@ li.ant-menu-item{ margin:0px 20px!important; } } - +.hoverA{ + display:flex; + align-items: center; + max-width: 78px; + &:hover a{ + color:#2A61FF !important ; + } +} .menuPanels{ - width: 240px; - height: 180px; + width: 295px; + .leftline{ + position: relative; + color: #666; + height: 16px; + margin-left: 14px; + font-size: 12px; + &::before{ + position: absolute; + left: -7px; + top:3px; + height: 12px; + width: 1px; + background-color: #999; + content: ""; + } + } + .ant-btn{ + height: 36px; + line-height: 34px; + width: 83px; + text-align: center; + padding:0px ; + font-weight: 500; + font-size: 14px; + &.currentBtn{ + cursor: default; + color: #333; + &:hover{ + color: #333; + border-color: #d0d0d0; + } + } + } + .ant-btn-default{ + color: #333; + border-color: #d0d0d0; + &:hover{ + background: #F3F4F6; + } + } + .ant-btn{ + width: 102px; + height: 32px; + line-height: 30px; + } + .ant-btn-primary{ + color: #fff; + background-color: #466AFF; + border:none; + &:hover{ + background-color: rgba(70,106,255,0.85); + } + } + .focusPanelHeadInfo{ + padding:14px 16px; + border-bottom: 1px solid #eee; + } .ant-popover-content,.ant-popover-inner{ height: 100%; width: 100%; } + .ant-popover-inner-content{ + padding:0px; + } } .halfs{ margin-top: 24px; padding:24px 0px 0px 0px; border-top: 1px solid #e8e8e8; - .attrPerson{ - padding-bottom: 24px; - } +} +.aboutSubTitle{ + display: flex; + align-items: center; +} +.menuMaininfos{ + padding:10px 16px 14px; + border-bottom: 1px solid #eee; } .menuinfos{ - padding:15px 0px; + padding:10px 20px 16px; &>a{ display: flex; flex-direction: column; align-items: center; - border-right: 1px solid #eee; flex: 1; & >span:first-child{ - font-size: 18px; - font-weight: 400; + font-size: 16px; + font-weight: 500; color: #333; + line-height: 22px; } & >span:last-child{ color: #666; - } - &:last-child{ - border-right: none; + font-weight: 400; + line-height: 20px; + margin-top: 6px; } } -} \ No newline at end of file +} + +/*-------------------个人主页:右侧提示区域--------------------------*/ +.-task-sidebar { + position: fixed; + width: 40px; + right: 0; + bottom: 80px; + z-index: 10; +} + +@media screen and (max-width: 1920px){ + .-task-sidebar{ + right:220px; + } +} +@media screen and (max-width: 1750px){ + .-task-sidebar{ + right:160px; + } +} +@media screen and (max-width: 1650px){ + .-task-sidebar{ + right:115px; + } +} +@media screen and (max-width: 1550px){ + .-task-sidebar{ + right:90px; + } +} +@media screen and (max-width: 1450px){ + .-task-sidebar{ + right:45px; + } +} +@media screen and (max-width: 1200px){ + .-task-sidebar{ + right:0px; + display: none; + } +} +.-task-sidebar>div { + height: 40px; + line-height: 40px; + box-sizing: border-box; + width: 40px; + color: #999; + font-size: 20px; + text-align: center; + margin-bottom: 20px; + border-radius: 50%; + background: #FFFFFF; + box-shadow: 0px 0px 10px 1px #F1F1F1; +} + +.-task-sidebar>div i { + color: #999; +} + +.-task-sidebar>div:hover i { + color: #fff !important; +} +.-task-sidebar>div:hover{ + background: #1890FF; + box-shadow: 0px 0px 10px 2px #B6D0FC; +} +.helpBox{ + width: 260px; + z-index: 103; + &.shareContent{ + width: 200px; + } + .ant-popover-inner-content{ + padding:0px; + } + p.titlecontent{ + font-size: 18px; + color: #333; + line-height: 20px; + padding:15px 20px; + } + .faqUl{ + padding:0px 20px 10px; + max-height: 230px; + overflow-y: auto; + li{ + background: #F5F5F5; + border-radius: 20px; + padding:0px 20px; + color: #333; + height: 34px; + line-height: 34px; + margin-bottom: 10px; + a{ + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + &:hover{ + background-color: #D1E9FF; + a{ + color: #333!important; + } + } + } + } + .shareUl{ + padding:10px 0px; + display: flex; + align-items: center; + .titlecontent{ + margin-right: 20px; + } + li > i{ + font-size: 32px!important; + } + } +} + + + +.-task-desc { + background: #494949; + width: 90px; + line-height: 36px; + text-align: center; + position: absolute; + color: #fff; + font-size: 13px; + z-index: 999999; + opacity: 0; +} + +.-task-desc div { + position: absolute; + top: 10px; + right: -7px; + height: 13px; +} + +.-task-desc div img { + float: left +} + +.-task-sidebar .scan_ewm { + position: absolute !important; + right: 45px !important; + bottom: 0px !important; + background-color: #494949 !important; + -webkit-box-sizing: border-box !important; + box-sizing: border-box !important; + font-size: 14px !important; + line-height: 16px !important; + display: none; + height: 213px !important; +} + +.trangle_right { + position: absolute; + right: -5px; + bottom: 15px; + width: 0; + height: 0px; + border-top: 6px solid transparent; + border-left: 5px solid #494949; + border-bottom: 6px solid transparent +} diff --git a/src/forge/Component/Contributors.jsx b/src/forge/Component/Contributors.jsx index 1e26354a5..e88acc056 100644 --- a/src/forge/Component/Contributors.jsx +++ b/src/forge/Component/Contributors.jsx @@ -1,13 +1,13 @@ import React, { useEffect, useState } from 'react'; import { AlignCenter , FlexAJ } from '../Component/layout'; import { Link } from 'react-router-dom'; -import { Popover , Spin } from 'antd'; +import { Popover , Spin , Button } from 'antd'; import { getImageUrl } from 'educoder'; import './Component.scss'; import { getUser } from '../GetData/getData'; import axios from 'axios'; -function Contributors({contributors,owner,projectsId}){ +function Contributors({contributors,owner,projectsId,currentLogin}){ const [ menuList ,setMenuList ]= useState([]); const [ list , setList ]= useState(undefined); const [ total , setTotal ]= useState(0); @@ -46,46 +46,60 @@ function Contributors({contributors,owner,projectsId}){ } } + function renderOrganize(list) { + let str = ""; + list.map(i=>{ + str = str+i.name + "、"; + }) + return str && str.substr(0,str.length - 1); + } + function setMenusFunc(data){ if(data){ let ele = ( - + - - {data.name} - - { - data.is_watch ? FocusFunc(false,data.login)}>取消关注:FocusFunc(true,data.login)}>关注 - } - - - - {data.projects_count} - 项目数 - - - {data.followers_count} - 粉丝数 - - - {data.following_count} - 关注数 - - - { - data.organizations && data.organizations.length > 0 ? - - 所属组织: -
- {renderArray(data.organizations)} + + +
+ {data.name} + { data.location && {data.location} } + { + data.organizations && data.organizations.length>0&& +

+ 所属组织:{renderOrganize(data.organizations)} +

+ }
- :"" - } - { - data.location && 所在地址:{data.location} - } + + + + {data.projects_count} + 项目数 + + + {data.followers_count} + 粉丝数 + + + {data.following_count} + 关注数 + + +
+ { + currentLogin && (currentLogin === data.login) + ? + + : + data.is_watch ? + + : + + } +
) setMenu(ele); @@ -135,17 +149,17 @@ function Contributors({contributors,owner,projectsId}){ return(
- - 贡献者{ contributors && contributors.total_count > 0 && {contributors.total_count}} - 全部 - + + 贡献者 + { contributors && contributors.total_count > 0 && {contributors.total_count}} +
setVisibleFunc(false)}> { total > 0 ? list.map((item,key)=>{ return( - + setVisibleFunc(true,item.login,key)}/> diff --git a/src/forge/Component/CopyTool.jsx b/src/forge/Component/CopyTool.jsx new file mode 100644 index 000000000..36ed1d8c1 --- /dev/null +++ b/src/forge/Component/CopyTool.jsx @@ -0,0 +1,51 @@ +import React, { useState, useCallback, memo } from 'react'; +import { Tooltip } from 'antd'; + +CopyTool.defaultProps = { + beforeText: '复制链接', //浮动过去显示的文字 + afterText: '复制成功', //点击后显示的文字 + className: '', //传给svg的class + inputId: 'copyText', //要复制的文本的ID + timeOut:true, //复制后将浮动的文字改为beforeText +}; + + +function CopyTool({ beforeText, afterText, className , inputId , timeOut }) { + const [title, setTitle] = useState(() => { + return beforeText; + }); + + // 复制链接 + const copyUrl = useCallback(() => { + const copyEle = document.querySelector(`#${inputId}`); // 获取要复制的节点 + if (!copyEle) { + console.error("您的CopyTool未设置正确的inputId"); + return; + } + copyEle.select(); // 执行选中元素 + if (document.execCommand('copy')) { + document.execCommand('copy'); + } + document.getSelection().removeAllRanges(); + + setTitle(afterText); + if(timeOut){ + setTimeout(function(){ + setTitle(beforeText); + },1500) + } + }, []); + + return ( + { setTitle(beforeText) }} + > + + + ); +} + + +export default memo(CopyTool); \ No newline at end of file diff --git a/src/forge/Component/DeleteModal/Index.jsx b/src/forge/Component/DeleteModal/Index.jsx new file mode 100644 index 000000000..c3c136899 --- /dev/null +++ b/src/forge/Component/DeleteModal/Index.jsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { AlignCenter } from '../layout'; +import { Button } from 'antd'; +import Modals from '../PublicModal/Index'; + +function DeleteBox({ + visible , + onCancel , + onSuccess , + title , + subTitle, + content +}) { + return( + + + +
+ } + onCancel={onCancel} + visible={visible} + > +
+ {content} +

{subTitle}

+
+ + ) +} +export default DeleteBox; \ No newline at end of file diff --git a/src/forge/Component/DrawerPanel.jsx b/src/forge/Component/DrawerPanel.jsx index 8070f3fa3..fa99e6c6f 100644 --- a/src/forge/Component/DrawerPanel.jsx +++ b/src/forge/Component/DrawerPanel.jsx @@ -4,6 +4,12 @@ import './Component.scss'; import axios from 'axios'; const { TreeNode , DirectoryTree } = Tree; +function turnbar(str){ + if(str && str.length>0 && str.indexOf("/")>-1){ + return str.replaceAll('/','%2F'); + } + return str; +} function DrawerPanel({visible,onClose,branch,owner,projectsId,history, name , list}){ const [ treeData , setTreeData ] = useState(undefined); const [ isSpin , setIsSpin ] = useState(true); @@ -71,7 +77,8 @@ function DrawerPanel({visible,onClose,branch,owner,projectsId,history, name , li let dataref = event.node.props.dataRef; if(dataref.type==="file"){ onClose(); - history.push(`/projects/${owner}/${projectsId}/tree/${branch}/${dataref.path}`); + let value = turnbar(branch); + history.push(`/${owner}/${projectsId}/tree/${value}/${dataref.path}`); } } diff --git a/src/forge/Component/EAccount.scss b/src/forge/Component/EAccount.scss index 6f0bb97f9..6fe44ab3a 100644 --- a/src/forge/Component/EAccount.scss +++ b/src/forge/Component/EAccount.scss @@ -1,9 +1,6 @@ .ant-modal-mask{ - z-index: 10000; + z-index: 1031; } .ant-modal-wrap{ - z-index: 10001; - .ant-form-explain{ - position: absolute; - } + z-index: 1032; } \ No newline at end of file diff --git a/src/forge/Component/HeadSearch.jsx b/src/forge/Component/HeadSearch.jsx new file mode 100644 index 000000000..fb7c9f25a --- /dev/null +++ b/src/forge/Component/HeadSearch.jsx @@ -0,0 +1,41 @@ +import React, { useState } from "react"; +import { Input ,notification} from "antd"; + +const { Search } = Input; +export default ({history}) => { + const [openSearch, setOpenSearch] = useState(false); + + function onGlobalSearch(value) { + history.push('/search?value=' + value); + // window.location.href = `search?value=` + value; + // history.push({ + // pathname:'/search', + // state:value + // }) + } + return ( + + { + openSearch ? +
{ + setTimeout(() => { + setOpenSearch(false) + }, 500) + }} + > + +
+ : + { + setOpenSearch(true) + }} /> + } +
+ ) +}; diff --git a/src/forge/Component/LanguagePower.jsx b/src/forge/Component/LanguagePower.jsx index 3197309c4..8d3e361b5 100644 --- a/src/forge/Component/LanguagePower.jsx +++ b/src/forge/Component/LanguagePower.jsx @@ -25,7 +25,7 @@ function LanguagePower({languages}){ } return(
-

开发语言

+

开发语言

{ array && array.map((item,key)=>{ diff --git a/src/forge/Component/MemberCards.jsx b/src/forge/Component/MemberCards.jsx index 393ddbb17..48d90e136 100644 --- a/src/forge/Component/MemberCards.jsx +++ b/src/forge/Component/MemberCards.jsx @@ -45,15 +45,15 @@ const Div = styled.div`{ export default (({ user , img, name, time, focusStatus, is_current_user, login , successFunc }) => { return (
- +
- {name} + {name} { is_current_user ? : - + }
diff --git a/src/forge/Component/Monaco.jsx b/src/forge/Component/Monaco.jsx new file mode 100644 index 000000000..aa70d8031 --- /dev/null +++ b/src/forge/Component/Monaco.jsx @@ -0,0 +1,62 @@ +import React, {useEffect, useRef, useState} from 'react'; +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js'; +import './Component.scss'; + +function Monaco(props) { + const { + style = { // dom节点样式 + height: '400px', + }, + value = '', // 代码文本 + onChange = () => { // 改变的事件 + }, + fontSize = 14, // 代码字体大小 + monacoOptions = { + scrollBeyondLastLine: false, + lineNumbers: "off", + wordWrap: true, + overviewRulerBorder: true, + lineHeight: 24, + readOnly:true + }, // monaco 自定义属性 + language = 'html', // 语言 支持 js ts sql css json html等 + } = props; + const editOrRef = useRef(); + const ThisEditor = useRef(); + useEffect(() => { + ThisEditor.current = monaco.editor.create(editOrRef.current, { + value: value || '', + language, + theme: "vs-grey", + fontSize: fontSize + 'px', + minimap: { // 关闭代码缩略图 + enabled: false, + }, + ...monacoOptions, + }); + + ThisEditor.current.onDidChangeModelContent((e) => { + let newValue = ThisEditor.current.getValue(); + onChange(newValue); + }); + return () => { + ThisEditor.current.dispose(); + ThisEditor.current = undefined; // 清除编辑器对象 + } + }, []); + useEffect(() => { + if (ThisEditor.current) { + ThisEditor.current.updateOptions({ + fontSize: fontSize + 'px', + }) + } + }, [fontSize]); + + return ( +
+ +
+ ); +} + +export default Monaco; \ No newline at end of file diff --git a/src/forge/Component/ProfileModal/Index.jsx b/src/forge/Component/ProfileModal/Index.jsx new file mode 100644 index 000000000..7cead761b --- /dev/null +++ b/src/forge/Component/ProfileModal/Index.jsx @@ -0,0 +1,72 @@ +import React , { useEffect , useState } from 'react'; +import Modals from '../PublicModal/Index'; +import { Button } from 'antd'; +import axios from 'axios'; + +import ProfileImg from './images/profile.png'; +import './Index.scss'; + +function ProfileModal({visible,onCancel,history}) { + const [ modalVis , setModalVis ] = useState(visible); + const [ addMemberCheck , setAddMemberCheck ] = useState(false); + + useEffect(()=>{ + axios.interceptors.response.use((response) => { + if (response && (response.data.status === 411 || response.data.status === 412)) { + setModalVis(true); + if(response.data.status === 412){ + setAddMemberCheck(true); + } + } + return response; + }, (error) => { + }); + },[]) + + useEffect(()=>{ + setModalVis(visible); + },[visible]) + + function onOk(){ + onCancel(); + setModalVis(false); + setTimeout(function(){ + window.open(`/settings/profile`,"_blank"); + },200) + } + + function onNo() { + onCancel(); + setModalVis(false); + } + + return( + + +
+ : +
+ + +
+ } + > +
+ + { + addMemberCheck ? +

目标用户个人资料不完整,需提醒目标用户补充资料后以进行后续操作

+ : +

您目前的个人资料不完整,需要补充资料以进行后续操作。是否前往补充个人信息?

+ } +
+ + ) +} +export default ProfileModal; \ No newline at end of file diff --git a/src/forge/Component/ProfileModal/Index.scss b/src/forge/Component/ProfileModal/Index.scss new file mode 100644 index 000000000..cf13121ed --- /dev/null +++ b/src/forge/Component/ProfileModal/Index.scss @@ -0,0 +1,18 @@ +.contents{ + display: flex; + align-items: center; + justify-content: center; + margin:10px auto 0px; + img{ + margin-right: 13px; + width: 44px; + } + p{ + line-height: 29px; + max-width: 327px; + font-size: 16px!important; + } +} +.font-44{ + font-size: 44px!important; +} \ No newline at end of file diff --git a/src/forge/Component/ProfileModal/Profile.jsx b/src/forge/Component/ProfileModal/Profile.jsx new file mode 100644 index 000000000..e63c1286d --- /dev/null +++ b/src/forge/Component/ProfileModal/Profile.jsx @@ -0,0 +1,17 @@ +import React from 'react'; + +function Profile({children,sureFunc,showCompeleteDialog , completeProfile, className}) { + + function checkProfile() { + if(!completeProfile){ + showCompeleteDialog && showCompeleteDialog(); + }else{ + sureFunc(); + } + } + + return( + {children} + ) +} +export default Profile; \ No newline at end of file diff --git a/src/forge/Component/ProfileModal/images/profile.png b/src/forge/Component/ProfileModal/images/profile.png new file mode 100644 index 000000000..6dbed21fc Binary files /dev/null and b/src/forge/Component/ProfileModal/images/profile.png differ diff --git a/src/forge/Component/PublicModal/Index.jsx b/src/forge/Component/PublicModal/Index.jsx new file mode 100644 index 000000000..c12e12b18 --- /dev/null +++ b/src/forge/Component/PublicModal/Index.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Modal } from 'antd'; +import './Index.scss'; + +function Modals({title,children,btn,onCancel,visible}) { + return( + + {children} + + ) +} +export default Modals; \ No newline at end of file diff --git a/src/forge/Component/PublicModal/Index.scss b/src/forge/Component/PublicModal/Index.scss new file mode 100644 index 000000000..1a0fbf31a --- /dev/null +++ b/src/forge/Component/PublicModal/Index.scss @@ -0,0 +1,75 @@ +.deleteBox{ + z-index: 1033; + .ant-modal-close-x{ + font-size: 17px!important; + } + .ant-modal-header{ + background-color: #f8f8f8; + padding:10px 30px; + .ant-modal-title{ + text-align: left; + font-size: 16px; + font-weight: bold; + } + } + .ant-modal-close{ + top:0px !important; + font-size: 24px !important; + } + .ant-modal-body{ + padding:30px 50px; + p{ + font-size: 14px; + line-height: 26px; + color:#666; + word-break: break-all; + } + .desc{ + .descMain{ + align-items: center; + justify-content: center; + font-size: 20px; + margin-bottom: 10px; + i.red{ + color:#DF0002; + } + } + } + } + .ant-modal-footer{ + border-top: none; + text-align: center; + padding-bottom: 40px; + button,a{ + width: 96px; + height: 32px; + margin:0px 20px; + font-weight: 400; + font-size: 14px; + &.ant-btn{ + border-color: #D0D0D0; + color: #666; + &:hover,&:active,&:focus{ + background: #f3f4f6; + } + } + &.ant-btn-danger{ + background-color: #fff; + color: #DF0002; + border-color: #D0D0D0; + &:hover,&:active,&:focus{ + border-color: #DF0002; + background-color: #fff; + } + } + &.ant-btn.ant-btn-primary{ + background-color: #466AFF; + color: #fff; + border-color: #466AFF; + &:hover,&:focus,&:active{ + background-color: rgba(70,106,255,0.85); + } + } + } + } +} \ No newline at end of file diff --git a/src/forge/Component/Releases.jsx b/src/forge/Component/Releases.jsx index 3dc8cf024..6d4d0acf4 100644 --- a/src/forge/Component/Releases.jsx +++ b/src/forge/Component/Releases.jsx @@ -1,38 +1,34 @@ import React from 'react'; -import { AlignCenter , AlignTop , FlexAJ } from '../Component/layout'; +import { AlignTop } from '../Component/layout'; import { Link } from 'react-router-dom'; -function Releases({owner,projectsId,releaseVersions}){ +function Releases({owner,projectsId,releaseVersions , baseOperate , projectType}){ return(
- - 发行版 - { releaseVersions && releaseVersions.total_count > 0 && {releaseVersions.total_count}} - - { releaseVersions && releaseVersions.total_count > 0 ? - 全部 - : - 新建 - } - + + 发行版 + { releaseVersions && releaseVersions.total_count > 0 && {releaseVersions.total_count}} + { releaseVersions && releaseVersions.total_count>0 ? releaseVersions.list.map((item,key)=>{ return( key === 0 && -

- {item.name} + {item.name} 最新

-

{item.created_at}

+

{item.created_at}

) }) - :"" + : +
+ 您暂未发布任何版本{baseOperate && projectType !==2 && 创建新版本} +
}
diff --git a/src/forge/Component/SearchUser.jsx b/src/forge/Component/SearchUser.jsx index 0203d24f5..79d23fb65 100644 --- a/src/forge/Component/SearchUser.jsx +++ b/src/forge/Component/SearchUser.jsx @@ -1,45 +1,49 @@ -import React , { useState } from 'react'; +import React , { useState , useEffect } from 'react'; import { AutoComplete } from 'antd'; import { getImageUrl } from "educoder"; import axios from 'axios'; const Option = AutoComplete.Option; -export default ({ getUser })=>{ +export default ({ getUser , placeholder, width ,value })=>{ + const [ source , setSource ] = useState(undefined); const [ searchKey , setSearchKey ] = useState(undefined); - const [ userDataSource , setUserDataSource ] = useState(undefined); + + useEffect(()=>{ + if(!value){ + setSearchKey(undefined); + } + },[value]) + + useEffect(()=>{ + getUserList(); + },[searchKey]) function getUserList(e){ const url = `/users/list.json`; axios.get(url, { params: { - search: e, + search: searchKey, }, - }) - .then((result) => { + }).then((result) => { if (result) { - setUserDataSource(result.data.users); + sourceOptions(result.data.users); } }) .catch((error) => { console.log(error); }); }; - - function changeInputUser(value){ - setSearchKey(value); - getUserList(value); - } - function selectInputUser(id, option){ - setSearchKey(option.props.value); - getUserList(option.props.value); - getUser && getUser(id); - } - const source = - userDataSource && userDataSource.map((item, key) => { + function sourceOptions(userDataSource){ + const s = userDataSource && userDataSource.map((item, key) => { return ( - ); }); + setSource(s); + } + + function changeInputUser(e){ + setSearchKey(e); + }; + + // 选择用户 + function selectInputUser(e, option){ + setSearchKey(option.props.name); + getUser(option.props.login); + }; + return( - +
+ trigger.parentNode} + dataSource={source} + value={searchKey} + style={{ width: width || 300 }} + onChange={changeInputUser} + onSelect={selectInputUser} + placeholder={placeholder || "搜索需要添加的用户..."} + allowClear + /> +
) } \ No newline at end of file diff --git a/src/forge/Component/SiderBar.js b/src/forge/Component/SiderBar.js new file mode 100644 index 000000000..3d6b8acf8 --- /dev/null +++ b/src/forge/Component/SiderBar.js @@ -0,0 +1,91 @@ +import React, { useEffect, useState } from 'react'; +import { Popover , Tooltip } from 'antd'; +import './Component.scss'; +import axios from 'axios'; +import ShareModal from './SiderBarShareModal'; + +const $ = window.$; + +$(window).scroll(function () { + if ($(".gotop").length > 0) { + if ($(document).scrollTop() > 0) { + $(".-task-sidebar .gotop").show(); + $(".gotop").click(function () { + $("html,body").scrollTop(0); + }); + } + if ($(document).scrollTop() === 0) { + $(".-task-sidebar .gotop").hide(); + } + } +}); + +function SiderBar() { + const [ data , setData ] = useState([]); + const [ visible , setVisible ] = useState(false); + + useEffect(()=>{ + getFAQ(); + },[]) + + function getFAQ(){ + const url = `/faqs.json`; + axios.get(url).then(result=>{ + if(result && result.data){ + setData(result.data); + } + }).catch(error=>{}) + } + function content(list){ + return
+

帮助

+
    + { + list && list.map((i,k)=>{ + return( +
  • {i.question}
  • + ) + }) + } +
+
+ } + + function shareContent(){ + return
+
    +

    分享到

    +
  • setVisible(true)}>
  • +
+
+ } + return ( +
+ setVisible(false)}/> + { + data && data.length > 0 && (data[0] && data[0].question) ? + +
+ +
+
+ :"" + } + {/*
+ +
*/} + +
+ +
+
+
+ + + +
+
+ ) +} + +export default SiderBar; diff --git a/src/forge/Component/SiderBarShareModal.jsx b/src/forge/Component/SiderBarShareModal.jsx new file mode 100644 index 000000000..aa8db379e --- /dev/null +++ b/src/forge/Component/SiderBarShareModal.jsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { Modal } from 'antd'; +import QRCode from 'qrcode.react'; + +function SiderBarShareModal({visible,urlValue,onCancel}) { + return( + +
+ {urlValue &&} +

打开微信“扫一扫”,点击右上角菜单,即可将网页分享至朋友圈

+
+
+ ) +} +export default SiderBarShareModal; \ No newline at end of file diff --git a/src/forge/Component/Sort.jsx b/src/forge/Component/Sort.jsx index 58f8a5d2f..a15f04da9 100644 --- a/src/forge/Component/Sort.jsx +++ b/src/forge/Component/Sort.jsx @@ -2,9 +2,9 @@ import React from 'react'; import {Popover} from 'antd'; import './Component.scss'; -export default (({menu , children})=>{ +export default (({menu , children, overlayClassName})=>{ return( - + {children} ) diff --git a/src/forge/Component/User.jsx b/src/forge/Component/User.jsx index 4d22c77bf..bc652dcfb 100644 --- a/src/forge/Component/User.jsx +++ b/src/forge/Component/User.jsx @@ -20,7 +20,7 @@ export default ({ url , name , column , id , login })=>{ `; return( id? - + { url && } {name} diff --git a/src/forge/Component/layout.jsx b/src/forge/Component/layout.jsx index 57b20c1e1..adaf4dbf3 100644 --- a/src/forge/Component/layout.jsx +++ b/src/forge/Component/layout.jsx @@ -28,6 +28,11 @@ export const AlignTop = styled.div`{ display:flex; align-items: flex-start; }` +export const AlignAJBottom = styled.div`{ + display:flex; + justify-content: space-between; + align-items: flex-end; +}` // 左右结构 export const Box = styled.div`{ display:flex; diff --git a/src/forge/DevOps/About.jsx b/src/forge/DevOps/About.jsx index b9524d548..31ced2204 100644 --- a/src/forge/DevOps/About.jsx +++ b/src/forge/DevOps/About.jsx @@ -149,7 +149,7 @@ function About(props, ref) { axios.post(url).then(result=>{ setIsSpining(false); if(result && result.data.status === 0){ - props.history.push(`/projects/${owner}/${projectsId}/devops/dispose`); + props.history.push(`/${owner}/${projectsId}/devops`); // 需要将顶部的open_devops修改 let { changeOpenDevops } = props; changeOpenDevops && changeOpenDevops(true); diff --git a/src/forge/DevOps/Dispose.jsx b/src/forge/DevOps/Dispose.jsx index 2211dbb59..1e08cdab0 100644 --- a/src/forge/DevOps/Dispose.jsx +++ b/src/forge/DevOps/Dispose.jsx @@ -96,7 +96,7 @@ function Dispose(props){ setVisible(false); if(result && result.data){ props.showNotification("流水线新增成功,请进行工作流配置!"); - props.history.push(`/projects/${owner}/${projectsId}/devops/dispose/${result.data.id}`); + props.history.push(`/${owner}/${projectsId}/devops/${result.data.id}`); }else{ props.showNotification("流水线新增失败,请稍后再试!"); } @@ -134,12 +134,12 @@ function Dispose(props){ // 模板管理 function toModalManage(){ - props.history.push(`/projects/${owner}/${projectsId}/devops/mould`); + props.history.push(`/${owner}/${projectsId}/devops/mould`); } // 参数管理 function toparameter(){ - props.history.push(`/projects/${owner}/${projectsId}/devops/params`); + props.history.push(`/${owner}/${projectsId}/devops/params`); } const operate = current_user && (permission && permission !== "Reporter"); diff --git a/src/forge/DevOps/Dispose/List.jsx b/src/forge/DevOps/Dispose/List.jsx index 72a267853..297c5556d 100644 --- a/src/forge/DevOps/Dispose/List.jsx +++ b/src/forge/DevOps/Dispose/List.jsx @@ -10,6 +10,12 @@ import { Link } from 'react-router-dom'; // killed:"已撤销", // pending:"准备中" // } +function turnbar(str){ + if(str && str.length>0 && str.indexOf("/")>-1){ + return str.replaceAll('/','%2F'); + } + return str; +} function renderTableStatus(status) { switch (status) { case "running": @@ -65,8 +71,9 @@ function List({ list, operate , projectsId , owner , showModal , deleteFunc }){ width:"15%", ellipsis:true, render:(value,item)=>{ + let v = turnbar(item.branch); return( - {value} + {value} ) } }, @@ -110,7 +117,7 @@ function List({ list, operate , projectsId , owner , showModal , deleteFunc }){ return( { operate ? - + 编辑 :"" } { operate ? @@ -118,7 +125,7 @@ function List({ list, operate , projectsId , owner , showModal , deleteFunc }){ 删除 :"" } - 查看运行记录 + 查看运行记录 ) } diff --git a/src/forge/DevOps/Dispose/PipelineName.jsx b/src/forge/DevOps/Dispose/PipelineName.jsx index 3cf7f96ab..4acaa2068 100644 --- a/src/forge/DevOps/Dispose/PipelineName.jsx +++ b/src/forge/DevOps/Dispose/PipelineName.jsx @@ -42,7 +42,7 @@ function PipelineName({visible,onCancel,onOk,value ,branchList}){
触发条件: - setBranchValue(e)}> { branchList && branchList.length>0 && branchList.map((item,key)=>{ return( @@ -51,7 +51,7 @@ function PipelineName({visible,onCancel,onOk,value ,branchList}){ }) } - {console.log(e);setEventValue(e)}}> { EVENT.map((item,key)=>{ return( diff --git a/src/forge/DevOps/Index.jsx b/src/forge/DevOps/Index.jsx index c3a29a3ec..3302f603a 100644 --- a/src/forge/DevOps/Index.jsx +++ b/src/forge/DevOps/Index.jsx @@ -36,39 +36,37 @@ export default ((props)=>{ return( - () - } - > - () } > - () } > - () } > - () - } - > - () } > - () + (p) => () + } + > + {/* 原本的两种合为一个 */} + {return( p.location.state.open_devops?:)} } > diff --git a/src/forge/DevOps/Infos.jsx b/src/forge/DevOps/Infos.jsx index b5220138d..99029cdef 100644 --- a/src/forge/DevOps/Infos.jsx +++ b/src/forge/DevOps/Infos.jsx @@ -26,7 +26,7 @@ export default ((props)=>{ return(
- { permission !=="Reporter" && 工作流配置} + { permission !=="Reporter" && 工作流配置}
diff --git a/src/forge/DevOps/Manage/Params.jsx b/src/forge/DevOps/Manage/Params.jsx index 7cb55276e..6df62dd47 100644 --- a/src/forge/DevOps/Manage/Params.jsx +++ b/src/forge/DevOps/Manage/Params.jsx @@ -104,7 +104,7 @@ function Params(props){ 工作流 - 参数管理 - 返回 + 返回
diff --git a/src/forge/DevOps/Mould.jsx b/src/forge/DevOps/Mould.jsx index 933299d6b..204fd161d 100644 --- a/src/forge/DevOps/Mould.jsx +++ b/src/forge/DevOps/Mould.jsx @@ -126,7 +126,7 @@ function Mould(props){
childRef.current = f} ref={childRef} visible={visible} onCancel={()=>setVisible(false)} onOk={onOk}> - 工作流 - 模板管理返回 + 工作流 - 模板管理返回
diff --git a/src/forge/DevOps/Structure.jsx b/src/forge/DevOps/Structure.jsx index 5bfe00621..99040d386 100644 --- a/src/forge/DevOps/Structure.jsx +++ b/src/forge/DevOps/Structure.jsx @@ -2,7 +2,7 @@ import React, { useState, useEffect , useImperativeHandle ,forwardRef } from "re import { FlexAJ, AlignCenter , Banner } from "../Component/layout"; import { Table, Pagination, Popconfirm } from "antd"; import { truncateCommitId } from "../common/util"; -import {getUrl} from 'educoder'; +import { getImageUrl } from 'educoder'; import axios from "axios"; import { Link } from 'react-router-dom'; @@ -198,7 +198,7 @@ function Structure(props,ref){ } function clickRows(event,e){ - props.history.push(`/projects/${owner}/${projectsId}/devops/${e.number}/detail`); + props.history.push(`/${owner}/${projectsId}/devops/${e.number}/detail`); } const column = [ { @@ -245,7 +245,7 @@ function Structure(props,ref){ {meg.sha && {meg.sha}}
- +
{meg.message}
@@ -290,7 +290,7 @@ function Structure(props,ref){ 构建列表 - 返回 + 返回
diff --git a/src/forge/DevOps/disposePipeline.jsx b/src/forge/DevOps/disposePipeline.jsx index 1da142f64..deabc1495 100644 --- a/src/forge/DevOps/disposePipeline.jsx +++ b/src/forge/DevOps/disposePipeline.jsx @@ -275,7 +275,7 @@ function disposePipeline(props){ ...params }).then(result=>{ if(result){ - props.history.push(`/projects/${owner}/${projectsId}/devops/dispose`); + props.history.push(`/${owner}/${projectsId}/devops`); } setLoading(false); }).catch(error=>{ diff --git a/src/forge/DevOps/ops.scss b/src/forge/DevOps/ops.scss index 024d0aa60..94838095d 100644 --- a/src/forge/DevOps/ops.scss +++ b/src/forge/DevOps/ops.scss @@ -391,6 +391,9 @@ } } } +.chooseCon.ant-select-dropdown{ + z-index: 100001; +} .choosenList{ display: flex; diff --git a/src/forge/DevOps/opsDetail.jsx b/src/forge/DevOps/opsDetail.jsx index 6ac3dc449..1944dfe61 100644 --- a/src/forge/DevOps/opsDetail.jsx +++ b/src/forge/DevOps/opsDetail.jsx @@ -48,7 +48,7 @@ export default (props) => { axios.post(url).then((result) => { if (result && result.data) { props.showNotification("工作流正在重新构建!"); - props.history.push(`/projects/${owner}/${projectId}/devops/${result.data.number}/detail`); + props.history.push(`/${owner}/${projectId}/devops/${result.data.number}/detail`); } }) .catch((error) => { @@ -87,7 +87,7 @@ export default (props) => { 退出 diff --git a/src/forge/Divert/DivertModal.jsx b/src/forge/Divert/DivertModal.jsx new file mode 100644 index 000000000..d4c1f2014 --- /dev/null +++ b/src/forge/Divert/DivertModal.jsx @@ -0,0 +1,176 @@ +import React ,{ forwardRef, useEffect, useState } from 'react'; +import { Modal , Form , Input , Radio , Select } from 'antd'; +import SearchUser from '../Component/SearchUser'; +import './Index.scss'; +import Axios from 'axios'; + +const { Option } = Select; +function DivertModal({form , visible , onSuccess , onCancel,owner,repo}){ + const { getFieldDecorator, validateFields , setFieldsValue } = form; + const [ cate , setCate ] = useState(0); + const [ value , setValue ] = useState(undefined); + + const [ organizations , setOrganizations ] = useState(undefined); + + useEffect(()=>{ + setFieldsValue({goal:cate}) + },[]) + + useEffect(()=>{ + if(owner && repo && visible===true){ + getTeam(); + } + if(!visible){ + setFieldsValue({ + owner_name:undefined, + identifier:undefined + }) + setValue(undefined) + } + },[repo,owner,visible]) + + function getTeam(){ + const url = `/${owner}/${repo}/applied_transfer_projects/organizations.json`; + Axios.get(url).then(result=>{ + if(result){ + setOrganizations(result.data.organizations); + } + }).catch(error=>{}) + } + + // 确认转移 + function onOk(){ + validateFields((error,values)=>{ + if(!error){ + const url = `/${owner}/${repo}/applied_transfer_projects.json`; + Axios.post(url,{ + ...values + }).then(result=>{ + if(result && result.data.id){ + onSuccess(result.data && result.data.owner); + }else{ + onSuccess(); + } + }).catch(error=>{}) + } + }) + + } + function changeType(e){ + setCate(e.target.value); + setFieldsValue({ + owner_name:undefined + }) + } + + function checkIdentifier(rule, value, callback){ + if(!value){ + callback(); + } + if (repo && value !== repo) { + callback("请输入当前项目的标识!"); + } + callback(); + } + + const layout = { + labelCol: { span: 5 }, + wrapperCol: { span: 18 }, + }; + + function getUser(id){ + setValue(id); + setFieldsValue({ + owner_name:id + }) + } + return( + +
+ { + cate === 0 ? +
    +
  • 转移需对方确认接受,转移成功后你将被移出仓库,其他已有成员权限不变
  • +
  • 转移成功后,仓库的地址将变更至目标用户的命名空间下
  • +
  • 已有成员如需继续操作仓库,需更新本地仓库的remote,使之指向新的地址
  • +
+ : +
    +
  • 仓库仅可以转移到您具有管理权限的组织中
  • +
  • 涉及到仓库改名操作,请提前做好仓库备份并且在转移后对本地仓库的remote进行修改
  • +
  • 转移仓库到组织后,你和组织创建者/管理员同时拥有对该仓库的管理操作
  • +
+ } +
+ + {getFieldDecorator("goal",{ + rules:[] + })( + + 个人 + 组织 + + )} + + { + cate === 0 && + + {getFieldDecorator("owner_name",{ + rules:[{required:true,message:"请输入目标用户名"}] + })( + // + + )} + + } + { + cate === 1 && + + {getFieldDecorator("owner_name", + {rules:[{required:true,message:"请选择目标组织"}]} + )( + + )} + + } + + + {getFieldDecorator("identifier", + { + rules:[ + {required:true,message:"请输入仓库标识!"}, + { + validator:checkIdentifier + } + ] + } + )( + + )} + + 请输入当前项目的标识:{repo}进行确认! +
+
+
+ ) +} +export default Form.create()(forwardRef(DivertModal)); \ No newline at end of file diff --git a/src/forge/Divert/Index.scss b/src/forge/Divert/Index.scss new file mode 100644 index 000000000..0a39e4e2d --- /dev/null +++ b/src/forge/Divert/Index.scss @@ -0,0 +1,12 @@ +.diverModal{ + .descUl{ + background-color: #fffae6; + border-radius: 4px; + padding:10px 15px; + color: #efc16b; + border:1px solid #efc16b; + } + .ant-form-item-required::before{ + content: ""; + } +} \ No newline at end of file diff --git a/src/forge/Head/AddProjectModal.jsx b/src/forge/Head/AddProjectModal.jsx new file mode 100644 index 000000000..81f1d27cc --- /dev/null +++ b/src/forge/Head/AddProjectModal.jsx @@ -0,0 +1,85 @@ +import React, { useState , forwardRef, useEffect } from 'react'; +import { Form , Modal , Input , Radio } from 'antd'; +import Axios from 'axios'; +import CheckProfile from '../Component/ProfileModal/Profile'; + +export default Form.create()( + forwardRef((props)=>{ + const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form; + const [ visible , setVisible ] = useState(false); + + useEffect(()=>{ + if(!visible){ + setFieldsValue({ + code:undefined, + role:"developer" + }) + } + },[visible]) + + function onOk() { + validateFields((error,values)=>{ + if(!error){ + const url = `/applied_projects.json`; + Axios.post(url,{ + applied_project:{ + ...values + } + }).then(result=>{ + if(result && result.data){ + setVisible(false); + props.showNotification("申请加入项目成功,等待审核!"); + } + }).catch(error=>{}) + } + }) + } + function checkValue(rule, value, callback){ + if(!value){ + callback(); + } + if(value.length < 6 || value.length > 6){ + callback("请输入6位数的邀请码"); + } + callback(); + } + + return( + + setVisible(false)} + > +
+ + {getFieldDecorator("code",{ + rules:[ + {required:true,message:"请输入6位项目邀请码"}, + {validator:checkValue} + ] + })( + + )} + + + {getFieldDecorator("role",{ + rules:[{required:true,message:"请选择角色"}] + })( + + 管理员 + 开发者 + 报告者 + + )} + +
+
+ setVisible(true)}>加入项目 +
+ ) + }) +) \ No newline at end of file diff --git a/src/forge/Head/Footer.jsx b/src/forge/Head/Footer.jsx index 8a69c2ad1..568583ea5 100644 --- a/src/forge/Head/Footer.jsx +++ b/src/forge/Head/Footer.jsx @@ -19,7 +19,7 @@ function Footer(){ return(
-
+
{value && showhtml(value)} {/*
diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index 7260d1141..be36d6dbd 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -2,16 +2,16 @@ import React, { Component } from 'react'; import AccountProfile from "../../modules/user/AccountProfile"; import { getImageUrl } from 'educoder' import axios from 'axios'; -import { Modal, Input, message, notification , Dropdown , Menu ,Divider } from 'antd'; +import { Input , notification , Dropdown , Menu } from 'antd'; +import { Link } from 'react-router-dom'; import LoginDialog from '../../modules/login/LoginDialog'; -import GotoQQgroup from '../../modal/GotoQQgroup' -// import 'antd/lib/modal/style/index.css'; -// import 'antd/lib/checkbox/style/index.css'; -// import 'antd/lib/radio/style/index.css'; -// import 'antd/lib/input/style/index.css'; +import HeadSearch from '../Component/HeadSearch'; + +import AddProjectModal from './AddProjectModal'; import '../../modules/tpm/TPMIndex.css'; -import logo from '../../modules/tpm/images/logo.png'; +import CheckProfile from '../Component/ProfileModal/Profile'; + import './header.scss'; const $ = window.$ // TODO 这部分脚本从公共脚本中直接调用 @@ -35,11 +35,9 @@ class NewHeader extends Component { Checkboxteachertype: false, Checkboxteachingtype: false, code_notice: false, - checked_notice: false, RadioGroupvalue: undefined, submitapplications: false, isRender: false, - showSearchOpentype: false, showTrial: false, setevaluatinghides: false, occupation: 0, @@ -47,13 +45,11 @@ class NewHeader extends Component { headtypesonClickbool: false, headtypess: "/", settings: null, - goshowqqgtounp: false, visiblemyss: false, openSearch:false, } } componentDidMount() { - // this.getAppdata(); this.geturlsdata(); window._header_componentHandler = this; @@ -84,36 +80,6 @@ class NewHeader extends Component { } catch (e) {} } - SearchInput = (open,item)=>{ - if(open){ - return( -
{ - setTimeout(() => { - this.setState({ - openSearch:false - }) - }, 300) - }} - > - this.onGlobalSearch(value,item)} - autoFocus={true} - /> -
- ) - }else{ - return { - this.setState({openSearch:true}) - }} /> - } - } - - onGlobalSearch=(value,item)=>{ - window.location.href=`${item}?value=` + value; - } - openNotification = (messge) => { notification.open({ message: "提示", @@ -122,8 +88,6 @@ class NewHeader extends Component { }); }; - - componentWillReceiveProps(newProps, oldProps) { this.setState({ user: newProps.user @@ -132,158 +96,7 @@ class NewHeader extends Component { old_url = newProps.Headertop.old_url } } - getCookie = (key) => { - var arr, reg = RegExp('(^| )' + key + '=([^;]+)(;|$)'); - if (arr === document.cookie.match(reg)) - return decodeURIComponent(arr[2]); - else - return null; - } - delCookie = (name) => { - var exp = new Date(); - exp.setTime(exp.getTime() - 1); - var cval = this.getCookie(name); - if (cval != null) { - document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); - } - } - onLogout = () => { - const url = `/accounts/logout.json` - this.delCookie("autologin_trustie") - axios.get(url, { - }).then((response) => { - if (response.data.status === 1) { - this.setState({ - user: undefined - }) - window.location.href = "/login" - message.success('退出成功'); - } - }); - } - - tojoinclass = () => { - let { user } = this.state; - if (user === undefined) { - this.setState({ - isRender: true - }) - return - } - if (user && user.login === "") { - this.setState({ - isRender: true - }) - return; - } - if (user && user.profile_completed === false) { - this.setState({ - AccountProfiletype: true - }) - return; - } - this.setState({ - Addcoursestypes: true, - }) - } - - tojoinitem = () => { - if (this.props.user && this.props.user.email === undefined || this.props.user && this.props.user.email === null || this.props.user && this.props.user.email === "") { - this.openNotification("请先绑定邮箱,谢谢"); - return - } - let { user } = this.state; - if (user === undefined) { - this.setState({ - isRender: true - }) - return - } - if (user && user.login === "") { - this.setState({ - isRender: true - }) - return; - } - - if (user && user.profile_completed === false) { - this.setState({ - AccountProfiletype: true - }) - return; - } - - this.setState({ - tojoinitemtype: true - }) - } - - - submitstatevalue = (sum, value, data) => { - this.setState({ - Addcoursestypes: false, - tojoinitemtype: false, - tojoinclasstitle: undefined, - rolearr: ["", ""], - Checkboxteacherchecked: false, - Checkboxstudentchecked: false, - Checkboxteachingchecked: false, - Checkboxteachertype: false, - Checkboxteachingtype: false, - code_notice: false, - checked_notice: false, - submitapplicationssum: sum, - submitapplications: true, - submitapplicationsvalue: value, - submitapplicationsvaluedata: data, - RadioGroupvalue: undefined - }) - } - - onChangeRadioGroup = (e) => { - this.setState({ - RadioGroupvalue: e.target.value, - }); - } - - submitsubmitapplications = () => { - let { - submitapplicationssum, - submitapplicationsvaluedata - } = this.state; - this.setState({ - submitapplications: false, - RadioGroupvalue: undefined - }) - if (submitapplicationssum === 0) { - if (submitapplicationsvaluedata !== undefined) { - window.location.href = "/courses/" + submitapplicationsvaluedata; - } - } else if (submitapplicationssum === 1) { - if (submitapplicationsvaluedata !== undefined) { - window.location.href = "/projects/" + submitapplicationsvaluedata; - } - } - } - - hidesubmitapplications = () => { - this.setState({ - Addcoursestypes: false, - tojoinitemtype: false, - tojoinclasstitle: undefined, - rolearr: ["", ""], - Checkboxteacherchecked: false, - Checkboxstudentchecked: false, - Checkboxteachingchecked: false, - Checkboxteachertype: false, - Checkboxteachingtype: false, - code_notice: false, - checked_notice: false, - submitapplications: false, - RadioGroupvalue: undefined - }) - } educoderlogin = () => { //登录账号 this.setState({ @@ -321,30 +134,11 @@ class NewHeader extends Component { }) }; - - hidetojoinclass = () => { - this.setState({ - tojoinclasstype: false, - tojoinitemtype: false, - tojoinclasstitle: undefined, - rolearr: ["", ""], - Checkboxteacherchecked: false, - Checkboxstudentchecked: false, - Checkboxteachingchecked: false, - Checkboxteachertype: false, - Checkboxteachingtype: false, - code_notice: false, - checked_notice: false, - RadioGroupvalue: undefined - }) - } - // 关闭 cancelModulationModels = () => { this.setState({ isRenders: false }) } - setevaluatinghides = () => { this.setState({ setevaluatinghides: true @@ -404,39 +198,13 @@ class NewHeader extends Component { }) } - getAppdata = () => { - try { - var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting')); - var chromesettingresponseArray = JSON.parse(localStorage.getItem('chromesettingresponse')); - this.setState({ - settings: chromesettingArray - }); - if (chromesettingArray.tab_logo_url) { - this.gettablogourldata(chromesettingresponseArray); - } else { - this.gettablogourlnull(); - } - } catch (e) { - this.geturlsdata(); - } - }; - geturlsdata = () => { let url = "/setting.json"; axios.get(url).then((response) => { if (response && response.data) { this.setState({ settings: response.data.setting }); - // localStorage.setItem('chromesetting', JSON.stringify(response.data.setting)); - // localStorage.setItem('chromesettingresponse', JSON.stringify(response)); - try { - if (response.data.setting.tab_logo_url) { - this.gettablogourldata(response); - } else { - this.gettablogourlnull(); - } - } catch (e) { - this.gettablogourlnull(); - } + localStorage.setItem('chromesetting', JSON.stringify(response.data.setting)); + localStorage.setItem('chromesettingresponse', JSON.stringify(response)); } else { this.gettablogourlnull(); } @@ -455,13 +223,14 @@ class NewHeader extends Component { } } } - - - // 处理弹框 - setgoshowqqgtounp = (bool) => { - this.setState({ - goshowqqgtounp: bool - }) + + checkProfile=(url)=>{ + const { showCompeleteDialog , completeProfile } = this.props; + if(!completeProfile){ + showCompeleteDialog && showCompeleteDialog(); + }else{ + window.location.href(url); + } } addMenu=(list)=>{ @@ -472,34 +241,50 @@ class NewHeader extends Component { { list.map((item,key)=>{ return( - (item.name !=="加入课堂" && item.name !=="加入开发项目") && {item.name} + (item.name !=="加入课堂" && item.name !=="加入开发项目") && + + {window.location.href=item.url}}>{item.name} + ) }) } + + +
) } + renderMenu=(personal)=>{ + const { current_user } = this.props; + return( + + + {current_user && current_user.username} + + { + personal && personal.length > 0 && personal.map((item,key)=>{ + return( +
  • {item.name}
  • + ) + }) + } +
  • 设置
  • + this.educoderloginysl()}>退出 +
    + ) + } render() { const { match} = this.props; let current_user = this.props.user; - let { Addcoursestypes, - tojoinitemtype, - tojoinclasstitle, - code_notice, - checked_notice, + let { AccountProfiletype, - submitapplications, - submitapplicationsvalue, user, isRender, - showSearchOpentype, headtypesonClickbool, headtypess, settings, - goshowqqgtounp, - openSearch, } = this.state; /*用户名称 用户头像url*/ let activeIndex = false; @@ -557,7 +342,7 @@ class NewHeader extends Component { let shixun = "/shixuns"; let paths = "/paths"; let courses = "/courses"; - this.props.mygetHelmetapi.navbar.map((item, key) => { + this.props.mygetHelmetapi && this.props.mygetHelmetapi.navbar && this.props.mygetHelmetapi.navbar.map((item, key) => { var reg = RegExp(item.link); if (shixun.match(reg)) { if (item.hidden === true) { @@ -595,19 +380,14 @@ class NewHeader extends Component { {...this.props} {...this.state} /> : ""} - { - goshowqqgtounp === true ? - this.setgoshowqqgtounp(bool)}> - :"" - } - { settings && settings.nav_logo_url ? - 可控开源社区 + + 可控开源社区 + : - 可控开源社区 + "" } -
    { settings && settings.navbar && settings.navbar.length > 0 ? @@ -620,16 +400,16 @@ class NewHeader extends Component { if (new_link && (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1)) { if (user_login) { if (new_link.indexOf("courses") > -1) { - new_link = new_link.replace(/courses/g, "users/" + user_login + "/courses") + new_link = new_link.replace(/courses/g, user_login + "/courses") } else if (new_link.indexOf("contests") > -1) { - new_link = new_link.replace(/contests/g, "users/" + user_login + "/contests") + new_link = new_link.replace(/contests/g, user_login + "/contests") } } else { is_hidden = true } } if (user_login && (new_link && new_link.indexOf("homes") > -1)) { - new_link = new_link.replace(/homes/g, "users/" + user_login + "/user_activities") + new_link = new_link.replace(/homes/g, user_login + "/user_activities") } var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) ); @@ -646,7 +426,8 @@ class NewHeader extends Component { }
    - {search_url ? this.SearchInput(openSearch,search_url):""} + {/* {search_url ? this.SearchInput(openSearch,search_url):""} */} + { search_url && } { current_user && (current_user.main_site || current_user.login) && (settings && settings.add && settings.add.length>0)? @@ -665,32 +446,6 @@ class NewHeader extends Component { }
    :"" } - -
    -
    -
      -
      -

      - {submitapplicationsvalue} -

      -
      -
    • - 取消 - 确定 -
    • -
    -
    -
    -
    {!user || (user && !user.login) ? @@ -701,25 +456,11 @@ class NewHeader extends Component { } : -
    - - - + + + 头像 -
      -
    • {this.props.current_user.username}
    • - { - settings && settings.personal && settings.personal.length > 0 && settings.personal.map((item,key)=>{ - return( -
    • {item.name}
    • - ) - }) - } -
    • - this.educoderloginysl()}>退出 -
    • -
    -
    + }
    diff --git a/src/forge/Head/header.scss b/src/forge/Head/header.scss index 130df4ca8..fc8ca9d62 100644 --- a/src/forge/Head/header.scss +++ b/src/forge/Head/header.scss @@ -1,11 +1,69 @@ .dropdownFlex{ display:flex; - padding:5px; background:#fff; border-radius: 3px; .ant-menu-vertical > .ant-menu-item{ - border:none + border:none; + height: 35px; + line-height: 35px; + margin:0px; + &.ant-menu-item-selected{ + background-color: #fff; + a{color: rgba(0, 0, 0, 0.65)!important;} + } + &.ant-menu-item-active{ + a{color: #4cacff!important;} + } + } + .ant-menu-vertical{ + border:none; + } +} +.currentImg{ + width: 34px; + height: 34px; + border-radius: 50%; + margin-left: 30px; +} +.currentMenu{ + width: 120px; + text-align: center; + padding:0px; + .currentName{ + padding:0px 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + display: block; + } + li{ + height: 40px; + line-height: 40px; + padding:0px!important; + cursor: default; + &:hover{ + background-color: #fff; + } + &:first-child{ + border-bottom: 1px solid #eee; + } + &:last-child{ + border-top: 1px solid #eee; + a{ + border-radius: 0px 0px 4px 4px; + } + } + a{ + padding:0px; + margin:0px; + display: block; + color: #666; + &:hover{ + color: #fff; + background: #4CACFF; + } + } } } @@ -59,4 +117,13 @@ } } } +} +.inviteForm{ + .ant-form-item{ + margin-right: 0px; + } + .ant-form-item-label{ + width: 110px; + text-align: right; + } } \ No newline at end of file diff --git a/src/forge/Index.js b/src/forge/Index.js index aa0219aae..c2e369169 100644 --- a/src/forge/Index.js +++ b/src/forge/Index.js @@ -12,8 +12,9 @@ import Loadable from "react-loadable"; import Loading from "../Loading"; import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC"; + const ProjectNew = Loadable({ - loader: () => import("./New/Index"), + loader: () => import("./New/Index"), loading: Loading, }); const ProjectIndex = Loadable({ @@ -21,17 +22,23 @@ const ProjectIndex = Loadable({ loading: Loading, }); -const ProjectDetail = Loadable({ - loader: () => import("./Main/Detail"), - loading: Loading, -}); +// 项目详情放在用户和组织下作为二级菜单存在 +// const ProjectDetail = Loadable({ +// loader: () => import("./Main/Detail"), +// loading: Loading, +// }); -const Infos = Loadable({ - loader: () => import("./users/Infos"), - loading: Loading, -}); class Index extends Component { + + componentDidUpdate = () => { + this.props.history.listen(() => { + if (document.body.scrollTop || document.documentElement.scrollTop > 0) { + window.scrollTo(0, 0) + } + }) + } render() { + return (
    @@ -48,30 +55,27 @@ class Index extends Component { )} > ( )} > - ( )} - > + > */} ( )} > + ( - this.props.current_user && this.props.current_user.login ? - - : )} > @@ -86,3 +90,10 @@ export default withRouter( parentSelector: ".newMain", })(CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Index)))) ); + +// export default withRouter( +// ImageLayerOfCommentHOC({ +// imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget", +// parentSelector: ".newMain", +// })(Index) +// ); diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx index 86a332467..185f96e76 100644 --- a/src/forge/Main/CoderDepot.jsx +++ b/src/forge/Main/CoderDepot.jsx @@ -1,8 +1,9 @@ import React , { useEffect , useState } from 'react'; import { WhiteBack , Box , LongWidth , ShortWidth , Gap , AlignCenter , FlexAJ } from '../Component/layout'; -import { Dropdown , Menu , Divider , Spin, Button } from 'antd'; +import { Dropdown , Menu , Divider , Spin, Button , Typography } from 'antd'; import { getImageUrl } from "educoder"; import { Link } from 'react-router-dom'; +import { truncateCommitId } from "../common/util"; import CloneAddress from '../Branch/CloneAddress'; import SelectBranch from '../Branch/Select'; @@ -19,12 +20,28 @@ import LanguagePower from '../Component/LanguagePower'; import DrawerPanel from '../Component/DrawerPanel'; import UpdateDescModal from './sub/UpdateDescModal'; import Nodata from '../Nodata'; - +import Invite from './sub/Invite'; +import CheckProfile from '../Component/ProfileModal/Profile'; /** * projectDetail.type:0是托管项目,1是镜像项目,2是同步镜像项目(为2时不支持在线创建、在线上传、在线修改、在线删除、创建合并请求等功能) */ + const { Paragraph } = Typography; +function turnbar(str){ + if(str && str.length>0 && str.indexOf("/")>-1){ + return str.replaceAll('/','%2F'); + } + return str; +} +function returnbar(str){ + if(str && str.length>0 && str.indexOf("%2F")>-1){ + return str.replaceAll('%2F','/'); + } + return str; +} + function CoderDepot(props){ const [ projectDetail , setProjectDetail ]= useState(undefined); + const [ inviteCode , setInviteCode ] = useState(undefined); const [ treeValue , setTreeValue ] = useState(undefined); const [ treeValuePath , setTreeValuePath ] = useState(undefined); const [ lastCommit,setLastCommit ] = useState(undefined); @@ -45,19 +62,45 @@ function CoderDepot(props){ const [ desc , setDesc ] = useState(undefined); const [ website , setWebsite ] = useState(undefined); const [ lesson_url , setLessonUrl ] = useState(undefined); + const [ readme , setReadme ] = useState(undefined); + const [ defaultBranch , setDefaultBranch ] = useState(undefined); + const [ editReadme , setEditReadme ] = useState(false); + const [ pullsFlag , setPullsFlag ] = useState(true); + const [ issuesFlag , setIssuesFlag ] = useState(true); const owner = props.match.params.owner; const projectsId = props.match.params.projectsId; - const branchName = props.match.params.branchName; + let branchName = props.match.params.branchName; + branchName = returnbar(branchName); + const details = props.projectDetail; let pathname = props.history.location.pathname; + + const { bannerList } = props; + useEffect(()=>{ - if(props.projectDetail){ - setProjectDetail(props.projectDetail); - setDesc(props.projectDetail.description); - setWebsite(props.projectDetail.website); - setLessonUrl(props.projectDetail.lesson_url); + if(bannerList && bannerList.length>0){ + let a = bannerList.filter(i=>i.menu_name === "pulls"); + let i = bannerList.filter(i=>i.menu_name === "issues"); + if(a && a.length === 0){ + setPullsFlag(false); + } + if(i && i.length === 0){ + setIssuesFlag(false); + } } - },[props]) + },[bannerList]) + + + useEffect(()=>{ + if(details){ + setProjectDetail(details); + setDesc(details.description); + setWebsite(details.website); + setLessonUrl(details.lesson_url); + setDefaultBranch(details.default_branch); + setInviteCode(details.invite_code); + } + },[details]) useEffect(()=>{ if(treeValue){ @@ -67,23 +110,28 @@ function CoderDepot(props){ } },[treeValue]) + useEffect(()=>{ - if (pathname && projectDetail){ - if(pathname.indexOf(`/projects/${owner}/${projectsId}`) > -1 && pathname.indexOf(`/tree/${branchName}/`) > -1) { - let url = pathname.split(`/tree/${branchName}/`)[1]; + if (projectsId && owner && defaultBranch){ + let b = turnbar(branchName) ; + if(pathname.indexOf(`/${owner}/${projectsId}`) > -1 && pathname.indexOf(`/tree/${b}/`) > -1) { + let url = pathname.split(`/tree/${b}/`)[1]; setTreeValue(url); getFileInfo(url,branchName); + setType("file"); }else{ setTreeValue(undefined); - getDirInfo(branchName ||projectDetail.default_branch); + getDirInfo(branchName || defaultBranch); + setType("dir"); } } - },[pathname,projectDetail]) + },[projectsId,owner,pathname,defaultBranch]) // 获取主目录列表 function getDirInfo(branch){ setIsSpin(true); const url = `/${owner}/${projectsId}/entries.json`; + axios.get(url, { params: { ref: branch } }).then((result) => { @@ -98,6 +146,12 @@ function CoderDepot(props){ setLastCommitAuthor(c && c.committer); setMainFlag(true); setReadOnly(true); +<<<<<<< HEAD +======= + setReadme(result.data.readme); + setEditReadme(false); + setHide(true); +>>>>>>> 465ae57b071299c682f2c8d57d3380aa647c7d23 } setTimeout(function(){setIsSpin(false);},500); }).catch(error=>{setIsSpin(false);}) @@ -109,7 +163,7 @@ function CoderDepot(props){ let ele = document.getElementById("ptxt"); if(ele){ let h = ele.offsetHeight; - if( h > 18 ) setHideBtn(true) + if( h > 18 ) setHideBtn(true); } } },[projectDetail,lastCommit]) @@ -139,7 +193,12 @@ function CoderDepot(props){ setLastCommit(c && c.commit); setLastCommitAuthor(c && c.committer); setMainFlag(false); +<<<<<<< HEAD setReadOnly(true); +======= + setReadOnly(!editReadme); + setHide(true); +>>>>>>> 465ae57b071299c682f2c8d57d3380aa647c7d23 } setTimeout(function(){setIsSpin(false);},500) }).catch(error=>{setIsSpin(false);}) @@ -147,17 +206,26 @@ function CoderDepot(props){ // 切换分支或者标签 function changeBranch(value){ - let url = `/projects/${owner}/${projectsId}${value && `/tree/${value}`}${treeValue ? `/${treeValue}`:""}`; + let checkvalue = turnbar(value); + let url = `/${owner}/${projectsId}${value && `/tree/${checkvalue}`}${treeValue ? `/${treeValue}`:""}`; props.history.push(url); } // 文件相关的下拉项 - const fileMenu =( - - urlLink(`/projects/${owner}/${projectsId}/${branchName || (projectDetail && projectDetail.default_branch)}/uploadfile${treeValue === undefined ? "" : `/${treeValue}`}`)}>上传文件 - urlLink(`/projects/${owner}/${projectsId}/${branchName || (projectDetail && projectDetail.default_branch)}/newfile${treeValue === undefined ? "" : `/${treeValue}`}`)}>新建文件 + function fileMenu(){ + let b = branchName || defaultBranch; + let checkvalue = turnbar(b); + return ( + + + urlLink(`/${owner}/${projectsId}/${checkvalue}/uploadfile${treeValue === undefined ? "" : `/${treeValue}`}`)}>上传文件 + + + urlLink(`/${owner}/${projectsId}/${checkvalue}/newfile${treeValue === undefined ? "" : `/${treeValue}`}`)}>新建文件 + - ) + ) + } function getPathUrl(array,index){ if(array && array.length>0 && index){ @@ -171,27 +239,36 @@ function CoderDepot(props){ // 页面地址返回到主目录 function returnMain(){ setTreeValue(undefined); - let branch = branchName || (projectDetail && projectDetail.default_branch); - props.history.push(`/projects/${owner}/${projectsId}/tree/${branch}`); + let branch = branchName || defaultBranch; + let checkvalue = turnbar(branch); + props.history.push(`/${owner}/${projectsId}/tree/${checkvalue}`); }; // 子目录路径返回链接 function returnUlr(url){ - props.history.push(`/projects/${owner}/${projectsId}/tree${branchName?`/${branchName}`:""}/${url}`); + let enBranch = turnbar(branchName); + props.history.push(`/${owner}/${projectsId}/tree${enBranch?`/${enBranch}`:""}/${url}`); } // 点击跳转到子目录 function goToSubRoot(path,type,filename){ - setType(type); - props.history.push(`/projects/${owner}/${projectsId}${`/tree/${branchName || (projectDetail && projectDetail.default_branch)}`}${path?`/${path}`:""}`); + if(type!=="submodule"){ + let enBranch = branchName || defaultBranch; + let checkvalue = turnbar(enBranch); + setType(type); + props.history.push(`/${owner}/${projectsId}${`/tree/${checkvalue}`}${path?`/${path}`:""}`); + } } function onEdit(readOnly){ setReadOnly(readOnly); + setEditReadme(false); } function ChangeFile(path, readOnly){ //点击直接跳转页面 加载一次路由 - props.history.push(`/projects/${owner}/${projectsId}/tree/${branchName || (projectDetail && projectDetail.default_branch)}/${path}`); + let enBranch = branchName || defaultBranch; + let checkvalue = turnbar(enBranch); + props.history.push(`/${owner}/${projectsId}/tree/${checkvalue}/${path}`); setType("file"); - setReadOnly(readOnly); + setEditReadme(true); }; function changeHide(hide){ @@ -207,17 +284,12 @@ function CoderDepot(props){ } const downloadMenu = ( -
    -
    - -
    - - 下载 ZIP - 下载 TAR.GZ - -
    + ) // 确认修改简介、website、实践课程链接 function okUpdate(d,w,l){ @@ -232,10 +304,13 @@ function CoderDepot(props){ } }) } - let n = fileInfo && fileInfo.name; const mdFlag = n && n.substring(n.length-3,n.length) === ".md"; - + + const { current_user } = props; + const baseOperate = projectDetail && projectDetail.permission && projectDetail.permission !=="Reporter"; + const fileOperate = type === "dir" && projectDetail && projectDetail.type !== 2 && ((projectDetail.permission && projectDetail.permission !=="Reporter") || (current_user && current_user.admin)); + return( setOpenModal(false)} onOk={okUpdate}/> @@ -248,13 +323,13 @@ function CoderDepot(props){ owner={owner} projectsId={projectsId} name={projectDetail && projectDetail.name} - branch={branchName || (projectDetail && projectDetail.default_branch)} + branch={branchName || defaultBranch} visible={visible} onClose={()=>setVisible(false)} list = {mainFlag ? dirInfo : undefined} />
    setVisible(true)}> - + 目录
    @@ -267,66 +342,86 @@ function CoderDepot(props){
    -
    +
    { props && props.platform ? : - 分支:{branchName || (projectDetail && projectDetail.default_branch)} + 分支:{branchName || defaultBranch} }
    - - - {projectDetail && projectDetail.branches && projectDetail.branches.total_count}个分支 + + + 分支 + {projectDetail && projectDetail.branches && projectDetail.branches.total_count} - - - {projectDetail && projectDetail.tags && projectDetail.tags.total_count}个标签 + + + 标签 + {projectDetail && projectDetail.tags && projectDetail.tags.total_count} - - - { type === "dir" && projectDetail.type !== 2 && - - + + { + baseOperate && ((projectDetail.type !== 2 && pullsFlag) || issuesFlag )&& +
    + { + projectDetail.type !== 2 && pullsFlag && + urlLink(`/${owner}/${projectsId}/pulls/new`)} >+ 合并请求 + } + { + issuesFlag && + urlLink(`/${owner}/${projectsId}/issues/new`)} >+ 易修 + } +
    + } + { fileOperate && + + 文件 } - - + +
    { - dirInfo || fileInfo ? + (dirInfo && dirInfo.length>0) || fileInfo ?
    { lastCommit &&
    -

    {lastCommit && lastCommit.message}

    +
    props.history.push(`/${owner}/${projectsId}/commits/${truncateCommitId(lastCommit.sha)}`)} className={hideBtn && hide ? "ellipsistxt hidetxt" :"ellipsistxt"}> +
    {lastCommit.message}
    +
    { hideBtn && changeHide(hide)}> } - {lastCommit && lastCommit.time_from_now} - { commitCount ? {commitCount}次提交:"" } + {lastCommit.time_from_now} + { + commitCount ? + + {commitCount}次提交 + :"" + }
    }
      @@ -361,7 +456,7 @@ function CoderDepot(props){ readOnly={readOnly} md={mdFlag} onEdit={onEdit} - currentBranch={branchName || (projectDetail && projectDetail.default_branch)} + currentBranch={branchName || defaultBranch} type={projectDetail.type} > } @@ -370,10 +465,10 @@ function CoderDepot(props){ : "" } { - (dirInfo && dirInfo.length === 0) && (fileInfo && fileInfo.length === 0) ? :"" + (dirInfo && dirInfo.length === 0) && !fileInfo ? :"" } {/* readme文件显示(显示文件详情时不显示readme文件) */} - { dirInfo && (projectDetail && projectDetail.readme) ? :"" } + { dirInfo && (readme && readme.content) ? :"" }
    { @@ -381,39 +476,49 @@ function CoderDepot(props){
    - 简介 - {projectDetail.permission && (projectDetail.permission==="Admin" || projectDetail.permission==="Owner") && setOpenModal(true)} className="iconfont icon-anquanshezhi color-grey-9 font-15">} + 关于 + { + projectDetail.permission && (projectDetail.permission==="Admin" || projectDetail.permission==="Owner" || projectDetail.permission==="Manager") && + setOpenModal(true)} className="iconfont icon-a-shezhi color-grey-9 font-15"> + } - {desc &&

    {desc}

    } + {desc &&

    {desc}

    } { website && -

    - +

    + {website} -

    +
    } -

    - - README.md -

    -

    - +

    + + README.md +
    +
    + {projectDetail && projectDetail.size} -

    +
    { projectDetail && projectDetail.license_name && -

    - - {projectDetail.license_name} -

    +
    + + {projectDetail.license_name} +
    }
    + { + inviteCode && +
    + + +
    + } { lesson_url &&
    -

    实践课程

    - {lesson_url} +

    实践课程

    + {lesson_url}
    } {/* 发布 */} @@ -421,16 +526,23 @@ function CoderDepot(props){ projectDetail && projectDetail.release_versions && - + } {/* 贡献者 */} { - projectDetail && projectDetail.contributors && - + projectDetail && projectDetail.contributors && projectDetail.contributors.total_count >0 && + } {/* 语言 */} - { projectDetail && projectDetail.languages && + { projectDetail && projectDetail.languages && diff --git a/src/forge/Main/CoderDepotCatalogue.jsx b/src/forge/Main/CoderDepotCatalogue.jsx index f374da15c..4f5d86c1a 100644 --- a/src/forge/Main/CoderDepotCatalogue.jsx +++ b/src/forge/Main/CoderDepotCatalogue.jsx @@ -2,20 +2,26 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { truncateCommitId } from '../common/util'; +const typeIco = { + "submodule":"icon-file-submodule font-17", + "file":'icon-wenjian6 font-15 color-blue-file', + "dir":"icon-wenjianjia4 font-15 color-blue_4C" +} + function CoderDepotCatalogue({item , goToSubRoot , owner , projectsId }){ return(
  • - goToSubRoot(item.path,item.type,item.name)}> - {item.name} + goToSubRoot(item.path,item.type,item.name)} className={item.type === "submodule" && "submoduleStyle"}> + {item.name} - + {item.commit && item.commit.message} - {item.commit && item.commit.time_from_now} + {item.commit && item.commit.time_from_now}
  • ) } diff --git a/src/forge/Main/CoderDepotReadme.jsx b/src/forge/Main/CoderDepotReadme.jsx index da1435d55..315f70805 100644 --- a/src/forge/Main/CoderDepotReadme.jsx +++ b/src/forge/Main/CoderDepotReadme.jsx @@ -1,61 +1,74 @@ import React, { useEffect, useState } from 'react'; import RenderHtml from '../../components/render-html'; -import { Dropdown , Menu , Spin } from 'antd'; -import { Link } from 'react-router-dom'; +import { AlignCenter } from '../Component/layout'; +import { Dropdown , Anchor , Spin } from 'antd'; + +import ReadmeCatelogue from './sub/ReadmeCatelogue'; const $ = window.$; function CoderDepotReadme({ operate , history , readme , ChangeFile }){ const [ menuList ,setMenuList ] = useState(undefined); + const [ content ,setContent ] = useState(undefined); useEffect(()=>{ if(readme && readme.content){ - let path = history.location.pathname; - const items = $.map($("#readme").find("h1,h2,h3,h4,h5,h6"), function (el, _) { - const anchor = el.id; - const level = el.tagName.replace("H", ""); - const href = `#${anchor}`; - return { href:`${path}${href}`,text:el.textContent , level:level } - }); - setMenuList(items); + setContent(readme.content); + }else{ + setContent(undefined); } },[readme]) + useEffect(()=>{ + let path = history.location.pathname; + const items = $.map($("#readme").find("h1,h2,h3,h4,h5,h6"), function (el, _) { + const anchor = el.id; + const level = el.tagName.replace("H", ""); + const href = `#${anchor}`; + return { href:`${href}`,text:el.textContent , level:level } + }); + setMenuList(items); + },[content]) + function menu(){ if(menuList && menuList.length > 0){ - let hash = history.location.hash; return( - - { - menuList.map((item,key)=>{ - return( - -1 ?"active":""}>{item.text} - ) - }) - } - + ) }else{ return } } + return( -
    -
    - - - - README.md - { - operate ? - ChangeFile(readme && readme.path, false)}> - - - :"" - } -
    -
    - -
    +
    + +
    + + + + + 目录 + + + + README.md + + + { + operate ? + ChangeFile(readme && readme.path, false)}> + + + :"" + } +
    +
    + { + content && +
    + +
    + }
    ) } diff --git a/src/forge/Main/CoderRootBranch.js b/src/forge/Main/CoderRootBranch.js deleted file mode 100644 index 94411defa..000000000 --- a/src/forge/Main/CoderRootBranch.js +++ /dev/null @@ -1,82 +0,0 @@ -import React , { useState, useEffect } from 'react'; -import { Link } from "react-router-dom"; -import { Dropdown , Menu , Icon , Tooltip , Spin } from 'antd'; -import { truncateCommitId } from '../common/util'; -import { getBranch } from '../GetData/getData'; -import Nodata from '../Nodata'; -import './list.css'; - -export default ((props)=>{ - const [ data , setData ] =useState(undefined); - const [ isSpin , setIsSpin ] =useState(true); - - const { projectsId , owner } = props.match.params; - - useEffect(()=>{ - getBranchs(projectsId, owner); - },[projectsId]) - - async function getBranchs(id,owner){ - let result = await getBranch(id,owner); - setData(result); - setIsSpin(false); - } - - const list =()=>{ - if(data && data.length>0){ - return( - -
      - { - data.map((item,key)=>{ - return( -
    • -
      - {item.name} -

      - {item.last_commit && truncateCommitId(item.last_commit.sha)} - {item.last_commit && item.last_commit.message} - 最后更新于{item.last_commit && item.last_commit.time_from_now} -

      -
      - - 创建合并请求 - - - - - - -
    • - ) - }) - } -
    -
    - ) - }else if(data && data.length === 0){ - return ( ) - } - } - const menu =(zip_url,tar_url)=> ( - - ZIP - TAR.GZ - - ) - return( - -
    - -
    -

    分支列表

    -
    {list()}
    -
    -
    -
    -
    - ) -}) - - - diff --git a/src/forge/Main/CoderRootCommit.js b/src/forge/Main/CoderRootCommit.js index 5c509ecd0..a715fe74e 100644 --- a/src/forge/Main/CoderRootCommit.js +++ b/src/forge/Main/CoderRootCommit.js @@ -2,12 +2,19 @@ import React , { Component } from 'react'; import { Spin , Pagination } from 'antd'; import { getImageUrl } from 'educoder'; import { truncateCommitId } from '../common/util'; +import { AlignTop } from '../Component/layout'; import SelectBranch from '../Branch/Select'; import Nodata from '../Nodata'; import axios from 'axios'; import {Link} from "react-router-dom"; +function returnbar(str){ + if(str && str.length>0 && str.indexOf("%2F")>-1){ + return str.replaceAll('%2F','/'); + } + return str; +} class CoderRootCommit extends Component{ constructor(props){ super(props) @@ -56,11 +63,12 @@ class CoderRootCommit extends Component{ this.setState({ isSpining:true }) + console.log(returnbar(branch)); const { projectsId , owner } = this.props.match.params; const url = `/${owner}/${projectsId}/commits.json`; axios.get(url,{ params:{ - sha:branch, + sha:returnbar(branch), page, limit } @@ -93,7 +101,7 @@ class CoderRootCommit extends Component{ // 切换分支 search:tag为根据标签搜索 changeBranch=(value)=>{ const { projectsId , owner } = this.props.match.params; - this.props.history.push(`/projects/${owner}/${projectsId}/commits/branch/${value}`); + this.props.history.push(`/${owner}/${projectsId}/commits/branch/${value}`); } ChangePage=(page)=>{ @@ -105,10 +113,10 @@ class CoderRootCommit extends Component{ const { commitDatas , dataCount , limit , page , isSpining , branchList } = this.state; const { projectDetail, commit_class , defaultBranch } = this.props; const { projectsId , owner , branchName } = this.props.match.params; - let branch = branchName || defaultBranch; + let branch = returnbar(branchName || defaultBranch); return( -
    +
    0 && commitDatas.map((item,k)=>{ return(
    -

    - {truncateCommitId(`${item.sha}`)} - {item.message} -

    + + {truncateCommitId(`${item.sha}`)} + {item.message} +

    { item.id ? - + {item.image_url?:""} : diff --git a/src/forge/Main/CoderRootFileDetail.js b/src/forge/Main/CoderRootFileDetail.js index deb555a82..d5a9670c6 100644 --- a/src/forge/Main/CoderRootFileDetail.js +++ b/src/forge/Main/CoderRootFileDetail.js @@ -1,6 +1,6 @@ import React, { Component } from "react"; import { Popconfirm , Select } from "antd"; -import "./list.css"; +import "./list.scss"; import axios from "axios"; import Meditor from "../Newfile/m_editor"; import RenderHtml from "../../components/render-html"; @@ -149,7 +149,7 @@ class CoderRootFileDetail extends Component { .then((result) => { if (result) { this.props.showNotification("删除成功!"); - this.props.history.push(`/projects/${owner}/${projectsId}`); + this.props.history.push(`/${owner}/${projectsId}`); } }) .catch((error) => { @@ -285,6 +285,7 @@ class CoderRootFileDetail extends Component { readOnly={readOnly} editorType="update" currentBranch={currentBranch} + descName={detail && `Update ${detail.name}`} > )}

    diff --git a/src/forge/Main/CoderRootIndex.js b/src/forge/Main/CoderRootIndex.js index ceff9d9f2..b5d241968 100644 --- a/src/forge/Main/CoderRootIndex.js +++ b/src/forge/Main/CoderRootIndex.js @@ -1,9 +1,10 @@ import React , { Component } from 'react'; import { Route , Switch } from 'react-router-dom'; -import Top from './DetailTop'; +// import Top from './DetailTop'; import Loadable from 'react-loadable'; import Loading from '../../Loading'; import axios from 'axios'; +import './Index.scss'; const FileNew = Loadable({ loader: () => import('../Newfile/Index'), @@ -18,25 +19,25 @@ const CoderRootCommit = Loadable({ loading: Loading, }) const CoderRootBranch = Loadable({ - loader: () => import('./CoderRootBranch'), + loader: () => import('./tree/Index'), loading: Loading, }) const CoderRootTag = Loadable({ - loader: () => import('./CoderRootTag'), + loader: () => import('./tag/Index'), loading: Loading, }) const CoderRootVersion = Loadable({ - loader: () => import('../Version/version'), - loading: Loading, -}) -const CoderRootVersionNew = Loadable({ - loader: () => import('../Version/New'), - loading: Loading, -}) -const CoderRootVersionUpdate = Loadable({ - loader: () => import('../Version/New'), + loader: () => import('./version/Index'), loading: Loading, }) +// const CoderRootVersionNew = Loadable({ +// loader: () => import('./version/New'), +// loading: Loading, +// }) +// const CoderRootVersionUpdate = Loadable({ +// loader: () => import('./version/New'), +// loading: Loading, +// }) const Diff = Loadable({ loader: () => import('./Diff'), loading: Loading, @@ -83,56 +84,61 @@ class CoderRootIndex extends Component{ } render(){ return( -
    - +
    + {/* */} {/* 新建文件 */} - () } > - () } > - () } > - () - } - > - () } > - () + } + > + () + } + > + {/* () } > - () } - > - */} + () } > - () } > - () } diff --git a/src/forge/Main/CoderRootTag.js b/src/forge/Main/CoderRootTag.js deleted file mode 100644 index 6a5205abd..000000000 --- a/src/forge/Main/CoderRootTag.js +++ /dev/null @@ -1,70 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import axios from 'axios'; -import { Spin } from 'antd'; -import { truncateCommitId } from '../common/util'; -import Nodata from '../Nodata'; -import { Link } from 'react-router-dom' - -export default (( props, { projectDetail }) => { - const [isSpin, setSpin] = useState(true); - const [data, setData] = useState(undefined); - - const { projectsId , owner } = props.match.params; - - useEffect(() => { - if (projectsId) { - const url = `/${owner}/${projectsId}/tags.json`; - axios.get(url).then((result) => { - if (result) { - setSpin(false); - setData(result.data); - } - }).catch(error => { - console.log(error); - }) - } - }, [owner, projectsId]); - - return ( -
    - -
    - { - data && data.length > 0 && -
    -
      -
    • - 标签名 - 提交信息 - 下载 -
    • -
    -
      - { - data.map((item, key) => { - return ( -
    • - - - {item.name} - - - {truncateCommitId(`${item.id}`)} - - - TAR - ZIP - -
    • - ) - }) - } -
    -
    - } - { data && data.length === 0 && } -
    -
    -
    - ) -}) \ No newline at end of file diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index f991cc23f..560420a66 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -1,10 +1,13 @@ import React, { Component } from 'react'; import { Spin, Tooltip } from 'antd'; import { Link, Route, Switch } from 'react-router-dom'; -import { Content } from '../Component/layout'; +import { Content, AlignTop } from '../Component/layout'; import DetailBanner from './sub/DetailBanner'; import '../css/index.scss' -import './list.css'; +import './list.scss'; + +import { ImageLayerOfCommentHOC } from "../../modules/page/layers/ImageLayerOfCommentHOC"; + import Loadable from 'react-loadable'; import Loading from '../../Loading'; @@ -103,12 +106,12 @@ const Contribute = Loadable({ }) const CoderRootCommit = Loadable({ - loader: () => import('./CoderRootCommit'), - loading: Loading, + loader: () => import('./CoderRootCommit'), + loading: Loading, }) const CoderDepot = Loadable({ - loader: () => import('./CoderDepot'), - loading: Loading, + loader: () => import('./CoderDepot'), + loading: Loading, }) const TrendsIndex = Loadable({ @@ -127,30 +130,40 @@ const Source = Loadable({ const DevIndex = Loadable({ loader: () => import('../DevOps/Index'), loading: Loading, -}) +}); +const Wiki = Loadable({ + loader: () => import('../Wiki/Index'), + loading: Loading, +}); +const WikiEdit = Loadable({ + loader: () => import('../Wiki/EditWiki'), + loading: Loading, +}); /** * permission:Manager:管理员,Reporter:报告人员(只有读取权限),Developer:开发人员(除不能设置仓库信息外) */ -function checkPathname(projectsId,owner,pathname){ +function checkPathname(projectsId, owner, pathname) { let name = ""; - if(pathname && pathname !== `/projects/${owner}/${projectsId}`){ - let url = pathname.split(`/projects/${owner}/${projectsId}`)[1]; - if(url.indexOf("/about")>-1){ - name="about" - }else if(url.indexOf("/issues")>-1 ||url.indexOf("Milepost") > 0){ + if (pathname && pathname !== `/${owner}/${projectsId}`) { + let url = pathname.split(`/${owner}/${projectsId}`)[1] || ""; + if (url.indexOf("/about") > -1) { + name = "about" + } else if (url.indexOf("/issues") > -1 || url.indexOf("Milepost") > 0) { name = "issues"; - }else if(url.indexOf("/pulls")>-1){ - name="pulls" - }else if(url.indexOf("/milestones")>-1){ - name="milestones" - }else if(url.indexOf("/activity")>-1){ - name="activity" - }else if(url.indexOf("/setting")>-1){ - name="setting" - }else if(url.indexOf(`/devops`)>-1){ - name="devops" - }else if(url.indexOf(`/source`)>-1){ - name="source" + } else if (url.indexOf("/pulls") > -1) { + name = "pulls" + } else if (url.indexOf("/milestones") > -1) { + name = "milestones" + } else if (url.indexOf("/activity") > -1) { + name = "activity" + } else if (url.indexOf("/settings") > -1) { + name = "settings" + } else if (url.indexOf(`/devops`) > -1) { + name = "devops" + } else if (url.indexOf(`/source`) > -1) { + name = "source" + } else if (url.indexOf(`/wiki`) > -1) { + name = "wiki" } } return name; @@ -173,14 +186,15 @@ class Detail extends Component { branchs: undefined, branchList: undefined, project: null, - firstSync:false, - secondSync:false, - open_devops:false, + firstSync: false, + secondSync: false, + open_devops: false, + forkSpin: false, // 默认分支 - defaultBranch:undefined, + defaultBranch: undefined, // 非本平台项目 - platform:false + platform: false } } @@ -197,36 +211,38 @@ class Detail extends Component { } getProject = (num) => { - const { projectsId , owner } = this.props.match.params; + const { projectsId, owner } = this.props.match.params; const url = `/${owner}/${projectsId}/simple.json`; axios.get(url).then((result) => { if (result && result.data) { this.setState({ project: result.data, - open_devops:result.data.open_devops, - platform:result.data.platform && result.data.platform !== 'educoder' + open_devops: result.data.open_devops, + platform: result.data.platform && result.data.platform !== 'educoder' }) if (result.data.type !== 0 && result.data.mirror_status === 1) { console.log("--------start channel --------"); // 是镜像项目,且未完成迁移 this.canvasChannel(); - if(num){ + if (num) { this.setState({ - secondSync:true, - firsrtSync:false + secondSync: true, + firstSync: false }) - }else{ + } else { this.setState({ - firstSync:true, - secondSync:false + firstSync: true, + secondSync: false }) } - }else{ + } else if (result.data.mirror_status === 2) { + this.deleteProjectBack(); + } else { this.getDetail(); this.setState({ - firsrtSync:false, - secondSync:false + firstSync: false, + secondSync: false }) } } @@ -234,9 +250,9 @@ class Detail extends Component { } // 工作流激活后修改状态 - changeOpenDevops=(flag)=>{ + changeOpenDevops = (flag) => { this.setState({ - open_devops:flag + open_devops: flag }) } canvasChannel = () => { @@ -246,7 +262,7 @@ class Detail extends Component { var cable = actioncable.createConsumer(`wss://${name}/cable`); this.canvasChannel1 = cable.subscriptions.create({ channel: `MirrorProjectChannel`, - id: project && project.identifier + id: project && project.id }, { connected: () => { console.log("###### channel connected! ######"); @@ -254,16 +270,41 @@ class Detail extends Component { disconnected: () => { }, received: data => { console.log(`###### ---received data--- ######`); + console.log(data); if (data) { + if ( data.project && data.project.mirror_status === 2) { + this.deleteProjectBack(); + } this.getDetail(); + this.setState({ + firstSync: false, + secondSync: false + }); cable.subscriptions.consumer.disconnect(); } } }) } + deleteProjectBack = () => { + const { history } = this.props; + const { projectsId, owner } = this.props.match.params; + axios.delete(`/${owner}/${projectsId}.json`).then(res => { + let hash = '/projects/mirror/new'; + if (res && res.data) { + history.push({ + pathname: hash, + mirror_status: 2 + }); + } + else { + window.location.hash = hash; + } + }); + } + getDetail = () => { - const { projectsId , owner } = this.props.match.params; + const { projectsId, owner } = this.props.match.params; this.getBanner(); const url = `/${owner}/${projectsId}/detail.json`; axios.get(url).then((result) => { @@ -280,29 +321,29 @@ class Detail extends Component { watchers_count: result.data.watchers_count, praises_count: result.data.praises_count, forked_count: result.data.forked_count, - defaultBranch:result.data.default_branch + defaultBranch: result.data.default_branch }) } }).catch((error) => { }) } // 获取动态导航栏菜单 - getBanner(){ - const { projectsId , owner } = this.props.match.params; + getBanner() { + const { projectsId, owner } = this.props.match.params; const url = `/${owner}/${projectsId}/menu_list.json`; - axios.get(url).then(result=>{ - if(result){ + axios.get(url).then(result => { + if (result) { this.setState({ - bannerList:result.data + bannerList: result.data }) } - }).catch(error=>{}) + }).catch(error => { }) } // 关注和取消关注 focusFunc = (flag) => { const { platform } = this.state; - if(!platform)return; + if (!platform) return; const { project_id } = this.state; axios({ @@ -317,15 +358,15 @@ class Detail extends Component { this.setWatchersCount(result.data.watchers_count, result.data.watched); } }) - .catch(error => { - console.log(error); - }); + .catch(error => { + console.log(error); + }); } // 点赞和取消点赞 pariseFunc = (flag) => { const { platform } = this.state; - if(!platform)return; + if (!platform) return; const { project_id } = this.state; axios({ method: flag ? 'delete' : 'post', @@ -335,9 +376,9 @@ class Detail extends Component { this.setPraisesCount(result.data.praises_count, result.data.praised) } }) - .catch(error => { - console.log(error); - }); + .catch(error => { + console.log(error); + }); } setWatchersCount = (count, is_watched) => { @@ -357,25 +398,33 @@ class Detail extends Component { // fork项目 forkFunc = () => { const { platform } = this.state; - if(!platform)return; + if (!platform) return; + this.setState({ + forkSpin: true + }) const { current_user } = this.props - const { projectsId , owner } = this.props.match.params; + const { projectsId, owner } = this.props.match.params; const url = `/${owner}/${projectsId}/forks.json`; axios.post(url).then(result => { if (result && result.data.status === 0) { - this.props.history.push(`/projects/${current_user && current_user.login}/${result.data.identifier}`); + this.props.history.push(`/${current_user && current_user.login}/${result.data.identifier}`); this.props.showNotification(result.data.message); } + this.setState({ + forkSpin: false + }) }).catch(error => { - console.log(error); + this.setState({ + forkSpin: false + }) }) } // 同步镜像 synchronismMirror = () => { const { platform } = this.state; - if(!platform)return; - const { projectsId , owner } = this.props.match.params; + if (!platform) return; + const { projectsId, owner } = this.props.match.params; const url = `/${owner}/${projectsId}/sync_mirror.json`; axios.post(url).then(result => { if (result && result.data && result.data.status === 0) { @@ -389,330 +438,352 @@ class Detail extends Component { }) } - + textFunc = (forked_from_project_id, fork_info) => { + let type = fork_info && fork_info.fork_project_user_type; + return forked_from_project_id && fork_info ? +
    + 复刻自 + {fork_info.fork_project_user_name} + / + {fork_info.fork_form_name} +
    : "" + } + render() { - const { projectDetail, watchers_count, praises_count, - forked_count, firstSync , secondSync , - isManager, watched, praised, - project , open_devops , platform , defaultBranch , bannerList } = this.state; + const { projectDetail, watchers_count, praises_count, + forked_count, firstSync, secondSync, + isManager, watched, praised, + project, open_devops, platform, defaultBranch, bannerList, forkSpin } = this.state; const url = this.props.history.location.pathname; const urlArr = url.split("/"); const urlFlag = (urlArr.length === 3); - const { projectsId , owner } = this.props.match.params; - let pathname = checkPathname(projectsId,owner,url); + const { projectsId, owner } = this.props.match.params; + const { current_user } = this.props; + let pathname = checkPathname(projectsId, owner, url); const { state } = this.props.history.location; - - const text = ( - projectDetail && projectDetail.forked_from_project_id && projectDetail.fork_info ? - - forked from - {projectDetail.fork_info.fork_project_user_name} - / - {projectDetail.fork_info.fork_form_name} - : "" - ); - + const common = { getDetail: this.getDetail, - changeOpenDevops:this.changeOpenDevops, + changeOpenDevops: this.changeOpenDevops, defaultBranch } return (
    -
    -

    - {project && project.author && - - {project.author.name} - - } - / - - {project && project.name} + +

    + +
    + {project && project.author && + {project.author.name} + } + / + {projectDetail && projectDetail.name} +
    + {projectDetail && projectDetail.private && 私有} +
    +
    { projectDetail && projectDetail.forked_from_project_id && projectDetail.fork_info ? - - - - - : "" + this.textFunc(projectDetail.forked_from_project_id, projectDetail.fork_info) + : "" } { - projectDetail && projectDetail.type && projectDetail.type !== 0 ? - projectDetail.type === 2 ? - - - - : - - - - :"" + projectDetail && projectDetail.type && projectDetail.type !== 0 ? + 导入于 {projectDetail.mirror_url} + : "" } - -

    - { - firstSync ? "": - - { - projectDetail && projectDetail.type && projectDetail.type === 2 ? - 同步镜像 : "" - } - - this.focusFunc(watched)}> - - {watched ? '取消关注' : '关注'} - - { - watchers_count > 0 ? - platform ? - - {watchers_count} - - : - {watchers_count} - :"" - } - - - this.pariseFunc(praised)}> - - {praised ? '取消点赞' : '点赞'} - - { - praises_count > 0 ? - platform ? - - {praises_count} - : - {praises_count} - :"" - } - - - - - 复刻 - - - { - forked_count > 0 ? - platform ? - - {forked_count} - - : - {forked_count} - :"" - } - - - } -
    +
    +
    +
    + { + firstSync ? "" : + + { + ((current_user && current_user.admin) || isManager) && (projectDetail && projectDetail.type && projectDetail.type === 2) ? + 同步镜像 : "" + } + + this.focusFunc(watched)}> + + {watched ? '取消关注' : '关注'} + + { + watchers_count > 0 ? + platform ? + + {watchers_count} + + : + {watchers_count} + : "" + } + + + this.pariseFunc(praised)}> + + {praised ? '取消点赞' : '点赞'} + + { + praises_count > 0 ? + platform ? + + {praises_count} + : + {praises_count} + : "" + } + + + + + 复刻 + + + { + forked_count > 0 ? + platform ? + + {forked_count} + + : + {forked_count} + : "" + } + + + } +
    + { firstSync ? "" : - + }
    { firstSync ? - - - - : - - - {/* 资源 */} - () - } - > - {/* 主页 */} - () - } - > - {/* 工作流 */} - () - } - > - {/* 标签列表 */} - () - } - > - {/* 仓库设置 */} - () - } - > - {/* 任务详情 */} - () - } - > - {/*修改里程碑*/} - () - } - > - {/* 新建里程碑 */} - () - } - > - {/*里程碑详情*/} - () - } - > - {/* 里程碑 */} - () - } - > - {/* 里程碑页面新建任务 */} - () - } - > - {/* 新建任务 */} - () - } - > - {/* 修改详情 */} - () - } - > - {/* 复制详情 */} - () - } - > - {/* 动态 */} - () - } - > - {/* 代码Index */} - () - } - > - {/* 新建合并请求 */} - () - } - > - () - } - > - () - } - > - () - } - > + + + + : + + + {/* 资源 */} + () + } + > + {/* 主页 */} + () + } + > + {/* wiki新增文件 */} + () + } + > + {/* wiki编辑文件 */} + () + } + > + {/* wiki */} + () + } + > + {/* 工作流 */} + () + } + > + {/* 标签列表 */} + () + } + > + {/* 仓库设置 */} + () + } + > + + {/*修改里程碑*/} + () + } + > + {/* 新建里程碑 */} + () + } + > + {/*里程碑详情*/} + () + } + > + {/* 里程碑 */} + () + } + > + {/* 里程碑页面新建任务 */} + () + } + > + {/* 新建任务 */} + () + } + > + {/* 修改详情 */} + () + } + > + {/* 复制详情 */} + () + } + > + {/* 任务详情 */} + () + } + > + {/* 动态 */} + () + } + > + {/* 代码Index */} + () + } + > + {/* 新建合并请求 */} + () + } + > + () + } + > + () + } + > + () + } + > + () + } + > - () - } - > - () - } - > - () - } - > - () - } - > - {/* 贡献者列表 */} - () - } - > + () + } + > + () + } + > + () + } + > + () + } + > + {/* 贡献者列表 */} + () + } + > - {/* 代码库----详情页面 */} - () - } - > - () - } - > - () - } - > - () - } - > - - + {/* 代码库----详情页面 */} + () + } + > + () + } + > + () + } + > + () + } + > + + }
    ) } } -export default Detail; +export default ImageLayerOfCommentHOC({ + imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget", + parentSelector: ".newContainer", +})(Detail); diff --git a/src/forge/Main/DetailAdaptor.js b/src/forge/Main/DetailAdaptor.js new file mode 100644 index 000000000..d65f3bc3c --- /dev/null +++ b/src/forge/Main/DetailAdaptor.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { Route, Switch } from "react-router-dom"; +import { withRouter } from "react-router"; +import Loadable from "react-loadable"; +import Loading from "../../Loading"; +import { SnackbarHOC } from "educoder"; +import { CNotificationHOC } from "../../modules/courses/common/CNotificationHOC"; +import { TPMIndexHOC } from "../../modules/tpm/TPMIndexHOC"; + +// forge项目详情 +const ProjectDetail = Loadable({ + loader: () => import("../Main/Detail"), + loading: Loading, +}); +export default withRouter( + (CNotificationHOC()(SnackbarHOC()(TPMIndexHOC((props) => { + return ( + + ( + + )} + > + + ) + })))) +) \ No newline at end of file diff --git a/src/forge/Main/DetailTop.js b/src/forge/Main/DetailTop.js index 260ff1e61..ecd5ab9f5 100644 --- a/src/forge/Main/DetailTop.js +++ b/src/forge/Main/DetailTop.js @@ -12,19 +12,19 @@ class DetailTop extends Component { { platform ? - 0 ? "active" : ""}> + 0 ? "active" : ""}> {(coderCount && coderCount.commits_count) || 0}个提交 - 0 ? "active" : ""}> + 0 ? "active" : ""}> {(coderCount && coderCount.branches_count) || 0}个分支 - 0 ? "active" : ""}> + 0 ? "active" : ""}> {(coderCount && coderCount.tags_count) || 0}个标签 - 0 ? "active" : ""}> + 0 ? "active" : ""}> {(coderCount && coderCount.version_releasesed_count) || 0}个发行版 diff --git a/src/forge/Main/Diff.jsx b/src/forge/Main/Diff.jsx index d8db5f008..0daa63193 100644 --- a/src/forge/Main/Diff.jsx +++ b/src/forge/Main/Diff.jsx @@ -51,7 +51,7 @@ export default ({ match , history }) => { } }, [projectsId , owner, sha]); return ( -
    +
    @@ -59,7 +59,7 @@ export default ({ match , history }) => { {commit && commit.message &&
    {commit.message}
    } - +
    diff --git a/src/forge/Main/Index.js b/src/forge/Main/Index.js index 64a55ed26..3b1f66dba 100644 --- a/src/forge/Main/Index.js +++ b/src/forge/Main/Index.js @@ -1,15 +1,19 @@ import React, { Component } from 'react'; -import { Link } from 'react-router-dom'; import { Menu, Input , Spin, Pagination , Popover , Select } from 'antd'; +import Slider from "react-slick"; import { getImageUrl } from 'educoder'; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; import '../css/index.scss' -import './list.css'; +import './list.scss'; import './Index.scss'; import ListItem from './IndexItem' import axios from 'axios'; import img_new from '../Images/new.png'; import img_array from '../Images/array.png'; import banner from '../Images/banner_list.jpg'; +import CheckProfile from '../Component/ProfileModal/Profile'; + const Search = Input.Search; class Index extends Component { @@ -30,6 +34,8 @@ class Index extends Component { categoryList: undefined, recommendList:undefined, + recommendOriList:undefined, + languageList:undefined, languageId:undefined } @@ -47,6 +53,8 @@ class Index extends Component { this.getRecommand(); this.getLanguage(); + + // this.getRecommandOri(); } // 获取语言列表 @@ -72,6 +80,17 @@ class Index extends Component { }).catch(error=>{}) } + getRecommandOri=()=>{ + const url = `/organizations/recommend.json`; + axios.get(url).then(result=>{ + if(result){ + this.setState({ + recommendOriList:result.data.organizations + }) + } + }).catch(error=>{}) + } + // 获取列表 getListData = (page, limit, search, sort, project_type, category_id,languageId) => { const { current_user } = this.props; @@ -210,7 +229,7 @@ class Index extends Component { } getoDetail=(login,identifier)=>{ - this.props.history.push(`/projects/${login}/${identifier}`); + this.props.history.push(`/${login}/${identifier}`); } // 选择语言类别 @@ -236,10 +255,14 @@ class Index extends Component { newItem = ()=>{ return( - - 新建镜像项目 - 新建托管项目 - +
      +
    • + {this.props.history.push('/projects/deposit/new')}}>新建项目 +
    • +
    • + {this.props.history.push('/projects/mirror/new')}}>导入项目 +
    • +
    ) } @@ -256,22 +279,56 @@ class Index extends Component { const { current_user } = this.props; const { projectsList , recommendList , languageList , languageId , - isSpin, total, search, limit, page, typeList, categoryList } = this.state; + isSpin, total, search, limit, page, typeList, categoryList , recommendOriList } = this.state; + + const setting={ + dots: true, + infinite: true, + speed: 500, + slidesToShow: 5, + slidesToScroll: 5, + autoplay:false, + arrows:false, + adaptiveHeight:true + } + const settings={ + dots: true, + infinite: true, + speed: 500, + slidesToShow: 6, + slidesToScroll: 6, + autoplay:false, + arrows:false, + adaptiveHeight:true + } return (

    + {/* { + recommendOriList && recommendOriList.length>0? + + { + recommendOriList.map((i,k)=>{ + return( +
  • {i.name}
  • + ) + }) + } +
    + :"" + } */} { recommendList && recommendList.length>0 && -
    + 5 ? "recommandProjects":"recommandProjects mb20"}> { recommendList.map((item,key)=>{ return( -
    this.getoDetail(item.author && item.author.login,item.identifier)}> +
    this.getoDetail(item.author && item.author.login,item.identifier)}>
    - +

    {item.name}

    {item.author && item.author.name}

    @@ -283,9 +340,8 @@ class Index extends Component { ) }) } -
    + } -
      @@ -336,7 +392,13 @@ class Index extends Component {
      { current_user && current_user.login && - + 新建 diff --git a/src/forge/Main/Index.scss b/src/forge/Main/Index.scss index 8d074b653..1e2e55741 100644 --- a/src/forge/Main/Index.scss +++ b/src/forge/Main/Index.scss @@ -1,57 +1,68 @@ -/* recommandProjects */ -.recommandProjects{ - display: flex; - max-width: 1200px; - margin:20px auto; -} -.recommandProjects >div{ - background-color: #fff; - border-radius: 10px; - width: 220px; - margin-right: 25px; - cursor: pointer; - border: 1px solid #eee; - &:last-child{ - margin-right: 0px; +.recommandOri.slick-slider{ + width: 1300px; + margin:20px auto 40px; + .slick-track{ + margin-left: 0px; + } + .slick-slide{ + li > a{ + + display: flex; + align-items: center; + justify-content: center; + } } } -.recommandProjects > div:hover{ - box-shadow: 0px 2px 20px 0px rgba(0, 0, 0, 0.1); -} -.recommandProjects > div .mainInfo{ - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 160px; - border-bottom: 1px solid #eee; - padding:20px; - box-sizing: border-box; - img{ - height: 50px; - width:50px; - border-radius: 50%; - } - .name{ - font-size: 13px; +.iconBtn{ + i{ color: #666; - height: 18px; - line-height: 18px; - margin-top:12px; } - .school{ - margin-top:12px; - color: #333; - font-size: 16px; - height: 22px; - line-height: 22px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - max-width:100%; + span{ + margin-left: 4px; + color: #333!important; + &:last-child{ + font-weight: 500; + } + } + &:hover span,&:hover i{ + color: #466AFF!important; } } -.recommandProjects{ +/* recommandProjects */ +.recommandProjects.slick-slider{ + width: 1230px; + margin:20px auto 40px; + .slick-track{ + margin-left: 0px; + } + .slick-arrow.slick-prev,.slick-arrow.slick-next{ + &:before{ + color: #999; + } + li.slick-active button:before{ + color: #999; + } + } + .slick-dots{ + bottom: -29px; + li button:before{ + color: #909090; + } + } + .slick-slide{ + padding:0px 15px; + box-sizing: border-box; + & > div{ + background-color: #fff; + border-radius: 10px; + width: 100%; + cursor: pointer; + border: 1px solid #eee; + &:hover{ + box-shadow: 0px 2px 20px 0px rgba(0, 0, 0, 0.1); + } + } + } .baseInfo{ padding:18px 15px; display: flex; @@ -72,54 +83,117 @@ text-align: right; } } + .mainInfo{ + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 160px; + border-bottom: 1px solid #eee; + padding:20px; + box-sizing: border-box; + img{ + height: 50px; + width:50px; + border-radius: 50%; + } + .name{ + font-size: 13px; + color: #666; + height: 18px; + line-height: 18px; + margin-top:12px; + } + .school{ + margin-top:12px; + color: #333; + font-size: 16px; + height: 22px; + line-height: 22px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width:100%; + } + } } - // coderDepot .Panels{ max-width: 1200px; margin: 0 auto; .panelmenu{ padding-top:30px; + .depotBtn{ + .mr-5{ + margin-right: -5px; + } + .ant-btn{ + height: 32px; + line-height: 32px; + width: 83px; + text-align: center; + padding:0px ; + font-weight: 500; + font-size: 14px; + } + .ant-btn-default{ + color: #333; + border-color: #d0d0d0; + &:hover{ + background: #F3F4F6; + } + } + .ant-btn-primary{ + color: #fff; + background-color: #466AFF; + border: none; + &:hover{ + background-color: rgba(70,106,255,0.85); + } + } + } } - .addOptionBtn{ - height: 32px; - line-height: 30px; + .depotBtn,.addOptionBtn{ display: flex; - border:1px solid #d9d9d9; - border-radius: 2px; a{ - padding:0px 13px; - color: rgba(0, 0, 0, 0.65); - cursor: pointer; - } - & > a:first-child{ - border-right: 1px solid #d9d9d9; - } - & > a:last-child{ - border-right: none; + color: #333!important; + font-weight: 500!important; + border-radius: 5px; + width: 83px; + height: 32px; + line-height: 30px; + background: #fff; + border: 1px solid #D0D0D0; + margin-right: 10px; + text-align: center; + &:hover,&:active{ + background: #F3F4F6; + } } } .infoCount{ display: inline-block; - padding:0px 5px; - height: 16px; - line-height: 16px; - background-color: #eee; - color:#999; + width: 24px; + text-align: center; + height: 24px; + line-height: 24px; + background-color:rgba(153, 153, 153, 0.13);; + color:#666; border-radius: 12px; - margin-left: 10px; + margin-left: 6px; font-size: 12px; } .attrPerson{ - padding-top: 15px; + padding-top: 12px; display: flex; flex-wrap: wrap; + padding-bottom: 2px; a{ - margin: 10px 10px 0px 0px; + margin: 0px 17px 0px 0px; img{ border-radius: 50%; - width: 35px; - height: 35px; + width: 40px; + height: 40px; } &:nth-child(6){ margin-right: 0px; @@ -128,17 +202,15 @@ } .progress{ display: flex; - border-radius: 10px; - height: 7px; + border-radius: 2px; + height: 11px; margin-top: 12px; span{ - border-left: 1px solid #fff; &:first-child{ - border-left: none; - border-radius: 10px 0px 0px 10px; + border-radius: 2px 0px 0px 2px; } &:last-child{ - border-radius: 0px 10px 10px 0px; + border-radius: 0px 2px 2px 0px; } } } @@ -158,10 +230,11 @@ padding-left: 15px; position: relative; min-width: 33.5%; + font-size: 12px; + font-weight: 400; + color: #666; span{ - color: #666; &:last-child{ - color: #999; margin-left: 5px; } } @@ -169,71 +242,85 @@ } .listtable{ margin-top: 20px; - border:1px solid #d9d9d9; - border-radius: 4px; .listtablehead{ display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 1px solid #d9d9d9; - padding:7px 20px; + padding:12px 20px 11px; border-radius: 4px 4px 0px 0px; - background-color: #FAFBFC; + border: 1px solid rgba(42, 97, 255, 0.23); + background-color: #FAFCFF; .ellipsistxt{ + margin-top: 6px; + cursor: pointer; + #ptxt{ + margin-bottom: 0px; + word-break: break-all; + overflow: unset; + white-space:pre-wrap; /* css3.0 */ + white-space:-moz-pre-wrap; /* Firefox */ + white-space:-pre-wrap; /* Opera 4-6 */ + white-space:-o-pre-wrap; /* Opera 7 */ + word-wrap:break-word; + } margin-left: 13px; line-height:18px; - margin-top:6px; flex:1; width: 0; color: #666; - &>p{ - word-break:break-all; - } - &.hide{ + &.hidetxt{ height: 18px; overflow: hidden; position: relative; padding-right:8px; - } - &.hide::after{ - position: absolute; - right: 0px; - bottom: 0px; - content:"..."; - + // &::after{ + // position: absolute; + // right: 0px; + // bottom: 0px; + // content:"..."; + // } } } .ellipsis{ margin-left: 8px; cursor: pointer; border-radius: 2px; - background-color: #c1c1c1; + height: 16px; + background: rgba(153, 153, 153, 0.2); + border-radius: 2px; padding:0px 4px; height: 14px; line-height: 14px; margin-top: 9px; i{ font-size: 15px!important; - color: #fff; + color: #333; height: 14px; line-height: 14px; } } } .listtablebody{ + border-radius:0px 0px 4px 4px ; + border: 1px solid #D0D0D0; + border-top: none; li.listtablepath{ a{color: #40a9ff;} p{ margin-bottom: 0px!important; } } - li{ - height: 42px; + & > li{ + height: 38px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #d9d9d9; padding:0px 20px 0px 24px; + &:hover{ + background-color: #F3F4F6; + } & > span:first-child{ width: 30%; overflow: hidden; @@ -260,8 +347,10 @@ .drawerBtn{ position: fixed; left: -13px; - border:1px solid rgb(207,205,223); - width: 34px; + width: 33px; + background: #FFFFFF; + box-shadow: 0px 0px 8px 3px rgba(0, 0, 0, 0.09); + border: 1px solid #666666; border-radius: 0px 12px 12px 0px; height: 70px; top:50%; @@ -269,36 +358,51 @@ cursor: pointer; display: flex; flex-direction: column; - align-items: flex-end; + align-items: center; justify-content: center; + padding-left: 7px; &:hover{ - box-shadow: 1px 0px 7px rgba(0,0,0,0.1); + box-shadow: 0px 0px 8px 3px rgba(0, 0, 0, 0.09); } span{ writing-mode: vertical-lr; - color: #202429; + color: #333; width: 25px; + font-size: 14px; } i{ - color: #24292e; - height: 18px; - line-height: 18px; - width: 18px; + color: #333; + height: 14px; + line-height: 14px; + width: 14px; + margin-left: 2px; + margin-bottom: 3px; } } .downMenu{ - box-shadow: 0px 0px 9px rgba(134, 134, 134,0.4); + width: 329px; background-color: #fff; - .ant-menu-vertical .ant-menu-item:hover{ - background-color: #e6f7ff; + box-shadow: 0px 1px 8px 1px rgba(212, 212, 212, 0.5); + padding-bottom: 14px; + .ant-menu-item{ + height: 50px; + line-height: 50px; + } +} +.fileMenu{ + width: 83px; + li{ + padding:6px 0px!important; + text-align: center; + width: 100%; } } -.menuslist{ - max-height: 200px; - overflow-y: auto; - padding:10px 15px; +.catelogue{ + cursor: pointer; + background: #FAFBFC; border-radius: 4px; +<<<<<<< HEAD .ant-dropdown-menu-item{ border-radius: 8px; text-align: left!important; @@ -308,8 +412,55 @@ white-space: nowrap; text-overflow: ellipsis; } +======= + border: 1px solid #D0D0D0; + font-size: 15px; + font-weight: normal; + margin-right: 12px; + padding:0px 10px; + height: 30px; + line-height: 30px; + color: #666!important; + display: flex; + align-items: center; + &:hover{ + background-color: #F3F4F6; +>>>>>>> 465ae57b071299c682f2c8d57d3380aa647c7d23 } - .ant-dropdown-menu-item.active{ - background-color: #e6f7ff; + span{ + margin-top: 1px; } +} +.submoduleStyle{ + cursor: default; + i{ + cursor: default; + } + &:hover{ + color: #05101a; + } +} +.pinfos{ + i,a{color: #666;} + &:hover i,&:hover a{ + color: #2A61FF!important; + } +} +.graph{ + flex:1; + margin:0px 12px; + .ant-typography{ + white-space: pre-wrap; + margin-bottom: 0px; + } +} +.ant-anchor-wrapper{ + padding-left: 2px; + .ant-anchor-ink::before{ + background-color: #fff; + } +} +.coderSubPage{ + width: 1200px; + margin:0px auto; } \ No newline at end of file diff --git a/src/forge/Main/IndexItem.js b/src/forge/Main/IndexItem.js index b3ac2a50f..0cba9123e 100644 --- a/src/forge/Main/IndexItem.js +++ b/src/forge/Main/IndexItem.js @@ -1,10 +1,11 @@ import React, { Component } from 'react'; import { Tooltip } from 'antd'; import { getImageUrl } from 'educoder'; +import { AlignCenter } from '../Component/layout'; import { Link } from 'react-router-dom'; import '../css/index.scss'; import Nodata from '../Nodata'; -import './list.css'; +import './list.scss'; import img_parise from '../Images/parise.png'; class IndexItem extends Component { @@ -17,7 +18,7 @@ class IndexItem extends Component { render() { const { projects } = this.props; return ( -
      +
      { projects && projects.length > 0 ? projects.map((item, key) => { return (
      @@ -27,43 +28,56 @@ class IndexItem extends Component { : - + }
      - - {item.author.name}/{item.name} + + + {item.author.name}/{item.name} + + { !item.is_public && 私有 } { item.forked_from_project_id ? - + - + : "" } { - item.type && item.type !== 0 ? - item.type === 2 ? - + item.type && item.type === 2 ? + - : - + :"" + } + { + item.type && item.type === 1 ? + + :"" + } + + + { + item.praises_count && item.praises_count>0 ? + + 赞 {item.praises_count} + :"" + } + { + item.forked_count && item.forked_count>0 ? + + fork {item.forked_count} :"" } - - - 赞 {item.praises_count} - fork {item.forked_count}

      {item.description}

      - {/* {item.visits} */} - {/* {item.category && item.category.id && {item.category.name}} */} {item.last_update_time ? {item.time_ago} : ""} {item.language && item.language.id ? {item.language.name} : ""} diff --git a/src/forge/Main/NullData.js b/src/forge/Main/NullData.js index a550b5bcc..1621d657c 100644 --- a/src/forge/Main/NullData.js +++ b/src/forge/Main/NullData.js @@ -1,5 +1,5 @@ import React, { Component } from 'react'; -import "../Branch/branch.css" +import "../Branch/branch.scss" diff --git a/src/forge/Main/img/tree.png b/src/forge/Main/img/tree.png new file mode 100644 index 000000000..56247256c Binary files /dev/null and b/src/forge/Main/img/tree.png differ diff --git a/src/forge/Main/list.css b/src/forge/Main/list.scss similarity index 82% rename from src/forge/Main/list.css rename to src/forge/Main/list.scss index 9854a0a31..72c3437e9 100644 --- a/src/forge/Main/list.css +++ b/src/forge/Main/list.scss @@ -91,6 +91,7 @@ display: flex; border-bottom:1px solid rgba(238,238,238,1); padding:22px 0px; + justify-content: flex-start; } .boxShandow{ box-shadow:0px 2px 20px 10px rgba(0,0,0,0.03); @@ -100,6 +101,7 @@ height: 60px; border-radius: 50%; margin-right: 22px; + margin-top: 8px; } .p-r-Infos{ flex: 1; @@ -108,6 +110,7 @@ .p-r-name{ display: flex; justify-content: space-between; + align-items: center; } .p-r-name > p{ flex: 1; @@ -215,71 +218,92 @@ } /* -----------详情------------ */ .detailHeader-wrapper{ - background-color:#FAFBFC; - /* background: url(../Images/forgeBanner.jpg) no-repeat center; */ - /* background-size:cover; */ + background-color:#FBFCFF; + border-bottom:1px solid #e2e2e2; } .headerMenu-wrapper{ - font-size: 16px; display: flex; flex-direction: row; -} -.headerMenu-wrapper li{ - position: relative; - text-align: center; - height: 40px; - line-height: 28px; - margin-right: 40px; -} -.headerMenu-wrapper li a{ - color: #666; -} -.headerMenu-wrapper li a > img{ - margin-right: 8px; -} -.headerMenu-wrapper li a > span.num{ - height: 28px; - line-height: 29px; - margin-left: 8px; - font-size: 12px; - color: #2878FF; - float: right; -} -.headerMenu-wrapper li.active::after{ - position: absolute; - bottom:0px; - height:2px; - background-color: #5091FF; - content:''; - left: 0px; - width:100%; + cursor: pointer; + li{ + text-align: center; + padding:0px; + margin-right: 40px; + display: flex; + & > a{ + position: relative; + font-size: 14px; + height: 36px; + line-height: 24px; + display: block; + color: #000!important; + &> span.num{ + line-height: 24px; + margin-left: 5px; + font-size: 12px; + float: right; + color: #666!important; + background-color: rgba(153, 153, 153, 0.13);; + border-radius: 50%; + width: 24px; + height: 24px; + } + } + + &.active a::after,&:hover a::after{ + position: absolute; + bottom:0px; + height:2px; + background-color:rgba(153, 153, 153, 0.2); + content:''; + left: 0px; + width:100%; + } + &.active span{ + font-weight: 500; + } + &.active a::after{ + background-color: #466AFF; + } + } } .detail_tag_btn{ - height:26px; - line-height: 26px; + height:32px; + line-height: 32px; border-radius:5px; - border:1px solid #f1f1f1; + border:1px solid #D0D0D0; display: flex; align-items: center; - margin-left: 30px + margin-left: 10px; + padding:0px; + background-color:#FAFBFC; + box-shadow: none; + .detail_tag_btn_name{ + padding:0px 10px; + text-align: center; + height: 30px; + line-height: 30px; + border-radius:5px 0px 0px 5px; + &:hover + { + background-color: #F3F4F6; + } + span{ + color: #333!important; + } + } + .detail_tag_btn_count{ + width: 42px; + text-align: center; + background: #fff; + border-radius: 0px 4px 4px 0px; + height:100%; + border-left: 1px solid #D0D0D0; + } } .ant-tooltip { max-width: fit-content!important; } -.detail_tag_btn_name{ - padding:0px 10px; - color: #666!important; -} -.detail_tag_btn_name img{ - margin-right: 10px; -} -.detail_tag_btn_count{ - padding:0px 10px; - background: #fff; - border-radius: 0px 4px 4px 0px; - font-size: 12px; - height:100%; -} .files-md{ padding:20px; } @@ -330,6 +354,7 @@ .gitAddressClone{ + margin:14px 20px!important; display: flex; height: 40px; align-items: center; @@ -493,7 +518,7 @@ } .addFile a{ display: block; - background-color: rgb(76, 172, 255,0.8); + background-color: rgba(76, 172, 255,0.8); color: #fff; cursor: pointer; height: 32px; @@ -508,7 +533,7 @@ border-left: 1px solid rgba(247, 247, 247, 0.3); } .addFile a:active{ - background-color: rgb(76, 172, 255,1); + background-color: rgba(76, 172, 255,1); } @@ -547,7 +572,7 @@ } .commonBox{ border:1px solid #ddd; - margin-top: 30px; + margin-top: 18px; border-radius: 4px; } .commonBox .commonBox-title{ @@ -561,10 +586,28 @@ border-bottom: 1px solid #d9d9d9; border-radius: 4px 4px 0px 0px; } +.readBox{ + border:none; + &.commonBox .commonBox-info{ + border:1px solid #D0D0D0; + border-top: none; + border-radius: 0px 0px 4px 4px; + padding:20px 38px; + } +} +.commonBox .commonBox-title.boxTitle{ + display: flex; + justify-content: space-between; + height: 55px; + line-height: 55px; + background: #FAFCFF; + border-radius: 4px 4px 0px 0px; + border: 1px solid rgba(42, 97, 255, 0.23); +} .synchronism{ display: block; - height: 26px; - line-height: 26px; + height: 34px; + line-height: 34px; padding:0px 15px; color: #fff!important; background-color: #28BD6C; @@ -573,10 +616,19 @@ .files_info{ cursor: pointer; } -.commonBox .commonBox-info{ - padding:20px 15px; +.commonBox { + .commonBox-info{ + padding:20px 15px; + } +} +.commonBox-title-read{ + vertical-align: middle; + color: #000; + font-size: 14px; + &:hover { + color: #466AFF; + } } -.commonBox-title-read{vertical-align: middle;color: #666;} @media screen and (max-width: 370px){ .p-r-tags,.p-r-btn{ @@ -617,9 +669,7 @@ .item:last-child{ border-bottom:none; } -.gitAddressClone{ - margin: 0 !important; -} + .item_title small{ font-weight: 400; margin-left: 10px; @@ -722,4 +772,13 @@ a.color-grey-ccc:hover{ text-align: center; display: flex; justify-content: center; +} +.depotNum{ + color: #666!important; + span:last-child{ + color: #333; + } + &:hover span:last-child{ + color: #2A61FF; + } } \ No newline at end of file diff --git a/src/forge/Main/sub/Contribute.jsx b/src/forge/Main/sub/Contribute.jsx index a41cb3ed6..76d56dc89 100644 --- a/src/forge/Main/sub/Contribute.jsx +++ b/src/forge/Main/sub/Contribute.jsx @@ -42,7 +42,7 @@ function Contribute(props){
      -

      贡献者列表

      +

      贡献者列表

      { list && list.length > 0 ?
      @@ -52,7 +52,7 @@ function Contribute(props){
      - {item.name} + {item.name}

      提交{item.contributions}次

      diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx index aa801773d..5e3ab9440 100644 --- a/src/forge/Main/sub/DetailBanner.jsx +++ b/src/forge/Main/sub/DetailBanner.jsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from 'react'; import { Skeleton , Tooltip} from 'antd'; import { Link } from 'react-router-dom'; +import { numFormat } from 'educoder'; function DetailBanner({ history,list , owner , projectsId , isManager , url , pathname , state , urlFlag , projectDetail , platform ,open_devops }){ const [ menuName , setMenuName ] = useState(undefined); @@ -10,66 +11,76 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa if(pathname && pathname==="source"){ let a = list.filter(item=>item.menu_name === "resources"); if(a && a.length === 0){ - history.push(`/projects/${owner}/${projectsId}`); + history.push(`/${owner}/${projectsId}`); } } setMenuName(list); } },[list]); return( -
      +
      { menuName && projectDetail ?
        { - menuName.map((item,key)=>{ + Array.isArray(menuName)&& menuName.map((item,key)=>{ return( - + { item.menu_name === "home" &&
      • - - + + 主页 - +
      • } { item.menu_name === "code" &&
      • - - + + 代码库 - +
      • } { item.menu_name === "issues" &&
      • - - - - 易修 - {projectDetail && projectDetail.issues_count ? {projectDetail.issues_count} : ""} + + + + 易修 + + {projectDetail && projectDetail.issues_count ? {numFormat(projectDetail.issues_count)} : ""} -
      • } { item.menu_name === "pulls" && projectDetail && parseInt(projectDetail.type) !== 2 && platform ?
      • - - + + 合并请求 - {projectDetail && projectDetail.pull_requests_count ? {projectDetail.pull_requests_count} : ""} + {projectDetail && projectDetail.pull_requests_count ? {numFormat(projectDetail.pull_requests_count)} : ""}
      • :"" } + { + item.menu_name === "wiki" && +
      • + + + Wiki + +
      • + } { item.menu_name === "devops" && platform ?
      • - - 工作流(beta版) + {/* */} + + 工作流(beta版) {projectDetail && projectDetail.ops_count ? {projectDetail.ops_count} : ""}
      • @@ -78,37 +89,37 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa {/* { item.menu_name === "resources" &&
      • - - - 资源库 - {projectDetail && projectDetail.source_count ? {projectDetail.source_count} :""} + + + 资源库 + {projectDetail && projectDetail.source_count ? {projectDetail.source_count} :""}
      • } */} { item.menu_name === "versions" &&
      • - - - 里程碑 - {projectDetail && projectDetail.versions_count ? {projectDetail.versions_count} :""} + + + 里程碑 + {projectDetail && projectDetail.versions_count ? {numFormat(projectDetail.versions_count)} :""}
      • } { item.menu_name === "activity" &&
      • - - + + 动态
      • } { - item.menu_name === "setting" && -
      • - - 0 ? "iconfont icon-cangku color-grey-3 mr5 font-14":"iconfont icon-cangku color-grey-6 font-14 mr5"}> + item.menu_name === "settings" && +
      • + + 0 ? "iconfont icon-cangkushezhiicon color-grey-3 mr5 font-14":"iconfont icon-cangkushezhiicon color-grey-6 font-14 mr5"}> 仓库设置
      • diff --git a/src/forge/Main/sub/Invite.jsx b/src/forge/Main/sub/Invite.jsx new file mode 100644 index 000000000..201cee6dd --- /dev/null +++ b/src/forge/Main/sub/Invite.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import './sub.scss'; +import CopyTool from '../../Component/CopyTool'; + +function Invite({code,className}) { + + return( +
        + 邀请码 +
        + + 可以通过邀请码邀请成员加入项目
        点击复制邀请码。

        } className="ml8 font-16" inputId="devitecode"/> +
        +
        + ) +} +export default Invite; \ No newline at end of file diff --git a/src/forge/Main/sub/ReadmeCatelogue.jsx b/src/forge/Main/sub/ReadmeCatelogue.jsx new file mode 100644 index 000000000..d1e018bb6 --- /dev/null +++ b/src/forge/Main/sub/ReadmeCatelogue.jsx @@ -0,0 +1,57 @@ +import React , { useState , useEffect } from 'react'; +import { Anchor , Input } from 'antd'; +import './sub.scss'; +import { Base64 } from 'js-base64'; + +const { Link } = Anchor; + +function ReadmeCatelogue({ menuList , hash }) { + const [ goHref , setGoHref ] = useState(""); + const [ value , setValue ] = useState(""); + const [ menu , setMenu] = useState(menuList); + + + function onChange(link){ + setGoHref(link); + }; + + function changeValue(e) { + setValue(e.target.value); + if(e.target.value){ + let m = menuList.filter(i=>i.text.indexOf(e.target.value)>-1); + setMenu(m); + }else{ + setMenu(menuList); + } + } + return( +
        +
        + }/> +
        + { + menu && menu.length>0? +
        + + { + menu.map((item,key)=>{ + return( +
        + +
        + ) + }) + } +
        +
        + :"" + } + +
        + ) +} +export default ReadmeCatelogue; \ No newline at end of file diff --git a/src/forge/Main/sub/SubMenu.jsx b/src/forge/Main/sub/SubMenu.jsx new file mode 100644 index 000000000..78f37b4de --- /dev/null +++ b/src/forge/Main/sub/SubMenu.jsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import'./sub.scss' + +function SubMenu({tab,owner,projectsId}) { + return( +
          + 标签 + 发行版 +
        + ) +} +export default SubMenu; \ No newline at end of file diff --git a/src/forge/Main/sub/UpdateDescModal.jsx b/src/forge/Main/sub/UpdateDescModal.jsx index 766e18dd3..b0291f347 100644 --- a/src/forge/Main/sub/UpdateDescModal.jsx +++ b/src/forge/Main/sub/UpdateDescModal.jsx @@ -35,11 +35,11 @@ function UpdateDescModal({form , visible , onCancel , onOk,desc,website,lesson_u className={"descmodal"} >
        - + {getFieldDecorator("desc",{ rules:[] })( -