Browse Source

删除不符合eslint文件

release_v1.8.0
ahbmz 4 years ago
parent
commit
32c22d44ea
  1. 4
      .browserslistrc
  2. 15
      .editorconfig
  3. 2
      .env
  4. 1
      .env.development
  5. 2
      .env.preview
  6. 4
      .eslintignore
  7. 21
      .eslintrc.js
  8. 21
      .gitignore
  9. 4
      .prettierignore
  10. 3
      babel.config.js
  11. 13
      jsconfig.json
  12. 22226
      package-lock.json
  13. 63
      package.json
  14. 19
      prettier.config.js
  15. BIN
      public/favicon.ico
  16. 69
      public/index.html
  17. 1
      public/json/china-provinces.geo.json
  18. 1
      public/json/regions-data.json
  19. 389
      public/tinymce/langs/zh_CN.js
  20. 69
      public/tinymce/skins/content/dark/content.css
  21. 7
      public/tinymce/skins/content/dark/content.min.css
  22. 57
      public/tinymce/skins/content/default/content.css
  23. 7
      public/tinymce/skins/content/default/content.min.css
  24. 62
      public/tinymce/skins/content/document/content.css
  25. 7
      public/tinymce/skins/content/document/content.min.css
  26. 58
      public/tinymce/skins/content/writer/content.css
  27. 7
      public/tinymce/skins/content/writer/content.min.css
  28. 807
      public/tinymce/skins/ui/oxide-dark/content.css
  29. 819
      public/tinymce/skins/ui/oxide-dark/content.inline.css
  30. 7
      public/tinymce/skins/ui/oxide-dark/content.inline.min.css
  31. 7
      public/tinymce/skins/ui/oxide-dark/content.min.css
  32. 34
      public/tinymce/skins/ui/oxide-dark/content.mobile.css
  33. 7
      public/tinymce/skins/ui/oxide-dark/content.mobile.min.css
  34. BIN
      public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
  35. 3495
      public/tinymce/skins/ui/oxide-dark/skin.css
  36. 7
      public/tinymce/skins/ui/oxide-dark/skin.min.css
  37. 798
      public/tinymce/skins/ui/oxide-dark/skin.mobile.css
  38. 7
      public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
  39. 827
      public/tinymce/skins/ui/oxide/content.css
  40. 819
      public/tinymce/skins/ui/oxide/content.inline.css
  41. 7
      public/tinymce/skins/ui/oxide/content.inline.min.css
  42. 7
      public/tinymce/skins/ui/oxide/content.min.css
  43. 34
      public/tinymce/skins/ui/oxide/content.mobile.css
  44. 7
      public/tinymce/skins/ui/oxide/content.mobile.min.css
  45. BIN
      public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
  46. 3495
      public/tinymce/skins/ui/oxide/skin.css
  47. 7
      public/tinymce/skins/ui/oxide/skin.min.css
  48. 798
      public/tinymce/skins/ui/oxide/skin.mobile.css
  49. 7
      public/tinymce/skins/ui/oxide/skin.mobile.min.css
  50. 15
      src/App.vue
  51. 53
      src/api/dashboard/analysis/index.js
  52. 41
      src/api/dashboard/monitor/index.js
  53. 15
      src/api/example/choose/index.js
  54. 31
      src/api/example/document/index.js
  55. 11
      src/api/example/table/index.js
  56. 43
      src/api/extension/file/index.js
  57. 26
      src/api/form/advanced/index.js
  58. 115
      src/api/layout/index.js
  59. 18
      src/api/list/basic/index.js
  60. 26
      src/api/login/index.js
  61. 79
      src/api/system/dictionary-data/index.js
  62. 51
      src/api/system/dictionary/index.js
  63. 29
      src/api/system/file/index.js
  64. 29
      src/api/system/login-record/index.js
  65. 51
      src/api/system/menu/index.js
  66. 29
      src/api/system/operation-record/index.js
  67. 65
      src/api/system/organization/index.js
  68. 104
      src/api/system/role/index.js
  69. 154
      src/api/system/user/index.js
  70. 223
      src/api/user/message/index.js
  71. BIN
      src/assets/bg-login.jpg
  72. 480
      src/assets/ic-403.svg
  73. 299
      src/assets/ic-404.svg
  74. 191
      src/assets/ic-500.svg
  75. 24
      src/assets/logo.svg
  76. 21
      src/components/RedirectLayout/index.js
  77. 128
      src/components/RegionsSelect/index.vue
  78. 24
      src/components/RegionsSelect/load-data.js
  79. 17
      src/components/RouterLayout/index.vue
  80. 265
      src/components/TinymceEditor/index.vue
  81. 98
      src/components/VueQrCode/index.vue
  82. 57
      src/config/setting.js
  83. 29
      src/i18n/index.js
  84. 186
      src/i18n/lang/en.js
  85. 187
      src/i18n/lang/zh_CN.js
  86. 186
      src/i18n/lang/zh_TW.js
  87. 278
      src/layout/components/header-notice.vue
  88. 144
      src/layout/components/header-tools.vue
  89. 35
      src/layout/components/page-footer.vue
  90. 137
      src/layout/components/password-modal.vue
  91. 627
      src/layout/components/setting-drawer.vue
  92. 262
      src/layout/index.vue
  93. 33
      src/main.js
  94. 135
      src/router/index.js
  95. 7
      src/store/getters.js
  96. 21
      src/store/index.js
  97. 506
      src/store/modules/theme.js
  98. 91
      src/store/modules/user.js
  99. 9
      src/styles/index.scss
  100. 39
      src/utils/echarts-mixin.js

4
.browserslistrc

@ -1,4 +0,0 @@
> 1%
last 2 versions
Chrome >= 63
not dead

15
.editorconfig

@ -1,15 +0,0 @@
# https://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
insert_final_newline = false

2
.env

@ -1,2 +0,0 @@
VUE_APP_NAME=Ele Admin
VUE_APP_API_BASE_URL=https://v2.eleadmin.com/api

1
.env.development

@ -1 +0,0 @@
VUE_APP_API_BASE_URL=https://v2.eleadmin.com/api

2
.env.preview

@ -1,2 +0,0 @@
NODE_ENV=production
VUE_APP_API_BASE_URL=https://v2.eleadmin.com/api

4
.eslintignore

@ -1,4 +0,0 @@
public
src/assets
dist
node_modules

21
.eslintrc.js

@ -1,21 +0,0 @@
module.exports = {
root: true,
env: {
browser: true,
node: true,
es6: true
},
parser: 'vue-eslint-parser',
extends: [
'plugin:vue/essential',
'eslint:recommended',
'prettier',
'plugin:prettier/recommended'
],
parserOptions: {
parser: '@babel/eslint-parser',
ecmaVersion: 2020,
sourceType: 'module'
},
rules: {}
};

21
.gitignore

@ -1,21 +0,0 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

4
.prettierignore

@ -1,4 +0,0 @@
/public/*
/src/assets/*
/dist/*
/node_modules/*

3
babel.config.js

@ -1,3 +0,0 @@
module.exports = {
presets: ['@vue/cli-plugin-babel/preset']
};

13
jsconfig.json

@ -1,13 +0,0 @@
{
"compilerOptions": {
"target": "es6",
"module": "esnext",
"moduleResolution": "node",
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
},
"lib": ["esnext", "dom", "dom.iterable", "scripthost"]
},
"exclude": ["node_modules", "dist"]
}

22226
package-lock.json

File diff suppressed because it is too large

63
package.json

@ -1,63 +0,0 @@
{
"name": "ele-admin-template",
"version": "1.8.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build:preview": "vue-cli-service build --mode preview",
"build:report": "vue-cli-service build --report",
"lint": "vue-cli-service lint",
"clean:lib": "rimraf node_modules"
},
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@ant-design/colors": "^6.0.0",
"@bytemd/plugin-gfm": "^1.11.0",
"@bytemd/vue": "^1.11.0",
"@tinymce/tinymce-vue": "^3.2.8",
"@vue/composition-api": "^1.4.9",
"axios": "^0.26.0",
"core-js": "^3.21.1",
"countup.js": "^2.0.8",
"cropperjs": "^1.5.12",
"echarts": "^5.3.0",
"echarts-wordcloud": "^2.0.0",
"ele-admin": "1.8.0",
"element-ui": "^2.15.7",
"github-markdown-css": "^5.1.0",
"nprogress": "^0.2.0",
"qrcodejs2": "^0.0.2",
"tinymce": "^5.10.3",
"vue": "^2.6.14",
"vue-clipboard2": "^0.3.3",
"vue-countup-v2": "^4.0.0",
"vue-echarts": "^6.0.2",
"vue-i18n": "^8.27.0",
"vue-router": "^3.5.3",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2",
"xgplayer-vue": "^1.1.5",
"xlsx": "^0.18.2"
},
"devDependencies": {
"@babel/core": "^7.17.5",
"@babel/eslint-parser": "^7.17.0",
"@vue/cli-plugin-babel": "^5.0.1",
"@vue/cli-plugin-eslint": "^5.0.1",
"@vue/cli-plugin-router": "^5.0.1",
"@vue/cli-plugin-vuex": "^5.0.1",
"@vue/cli-service": "^5.0.1",
"compression-webpack-plugin": "^6.1.1",
"eslint": "^8.10.0",
"eslint-config-prettier": "^8.4.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.5.0",
"prettier": "^2.5.1",
"sass": "^1.49.9",
"sass-loader": "^12.6.0",
"vue-eslint-parser": "^8.3.0",
"vue-template-compiler": "^2.6.14",
"webpack": "^5.0.0"
}
}

19
prettier.config.js

@ -1,19 +0,0 @@
module.exports = {
printWidth: 80,
tabWidth: 2,
useTabs: false,
semi: true,
singleQuote: true,
quoteProps: 'as-needed',
jsxSingleQuote: false,
trailingComma: 'none',
bracketSpacing: true,
bracketSameLine: false,
arrowParens: 'always',
requirePragma: false,
insertPragma: false,
proseWrap: 'never',
htmlWhitespaceSensitivity: 'strict',
vueIndentScriptAndStyle: true,
endOfLine: 'lf'
};

BIN
public/favicon.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

69
public/index.html

@ -1,69 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= process.env.VUE_APP_NAME %></title>
<style>
.ele-admin-loading {
width: 36px;
font-size: 0;
display: inline-block;
transform: rotate(45deg);
animation: loadingRotate 1.2s infinite linear;
position: relative;
top: calc(50% - 18px);
left: calc(50% - 18px);
}
.ele-admin-loading span {
width: 10px;
height: 10px;
margin: 4px;
border-radius: 50%;
background: #1890ff;
display: inline-block;
opacity: .9;
}
.ele-admin-loading span:nth-child(2) {
opacity: .7;
}
.ele-admin-loading span:nth-child(3) {
opacity: .5;
}
.ele-admin-loading span:nth-child(4) {
opacity: .3;
}
@keyframes loadingRotate {
to {
transform: rotate(405deg);
}
}
#app > .ele-admin-loading {
position: fixed;
}
</style>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app">
<div class="ele-admin-loading">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
<!-- built files will be auto injected -->
</body>
</html>

1
public/json/china-provinces.geo.json

File diff suppressed because one or more lines are too long

1
public/json/regions-data.json

File diff suppressed because one or more lines are too long

389
public/tinymce/langs/zh_CN.js

@ -1,389 +0,0 @@
tinymce.addI18n('zh_CN', {
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u9500",
"Cut": "\u526a\u5207",
"Copy": "\u590d\u5236",
"Paste": "\u7c98\u8d34",
"Select all": "\u5168\u9009",
"New document": "\u65b0\u6587\u4ef6",
"Ok": "\u786e\u5b9a",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u7f51\u683c\u7ebf",
"Bold": "\u7c97\u4f53",
"Italic": "\u659c\u4f53",
"Underline": "\u4e0b\u5212\u7ebf",
"Strikethrough": "\u5220\u9664\u7ebf",
"Superscript": "\u4e0a\u6807",
"Subscript": "\u4e0b\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Close": "\u5173\u95ed",
"Formats": "\u683c\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
"Headers": "\u6807\u9898",
"Header 1": "\u6807\u98981",
"Header 2": "\u6807\u98982",
"Header 3": "\u6807\u98983",
"Header 4": "\u6807\u98984",
"Header 5": "\u6807\u98985",
"Header 6": "\u6807\u98986",
"Headings": "\u6807\u9898",
"Heading 1": "\u6807\u98981",
"Heading 2": "\u6807\u98982",
"Heading 3": "\u6807\u98983",
"Heading 4": "\u6807\u98984",
"Heading 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
"Div": "Div",
"Pre": "Pre",
"Code": "\u4ee3\u7801",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "\u5f15\u6587\u533a\u5757",
"Inline": "\u6587\u672c",
"Blocks": "\u57fa\u5757",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Fonts": "\u5b57\u4f53",
"Font Sizes": "\u5b57\u53f7",
"Class": "\u7c7b\u578b",
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
"OR": "\u6216",
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
"Upload": "\u4e0a\u4f20",
"Block": "\u5757",
"Align": "\u5bf9\u9f50",
"Default": "\u9ed8\u8ba4",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Square": "\u65b9\u5757",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Anchor...": "\u951a\u70b9...",
"Name": "\u540d\u79f0",
"Id": "\u6807\u8bc6\u7b26",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special characters...": "\u7279\u6b8a\u5b57\u7b26...",
"Source code": "\u6e90\u4ee3\u7801",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"Language": "\u8bed\u8a00",
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
"Color Picker": "\u9009\u8272\u5668",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Description": "\u63cf\u8ff0",
"Robots": "\u673a\u5668\u4eba",
"Author": "\u4f5c\u8005",
"Encoding": "\u7f16\u7801",
"Fullscreen": "\u5168\u5c4f",
"Action": "\u64cd\u4f5c",
"Shortcut": "\u5feb\u6377\u952e",
"Help": "\u5e2e\u52a9",
"Address": "\u5730\u5740",
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
"Plugins": "\u63d2\u4ef6",
"Handy Shortcuts": "\u5feb\u6377\u952e",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Source": "\u5730\u5740",
"Dimensions": "\u5927\u5c0f",
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Style": "\u6837\u5f0f",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Border": "\u8fb9\u6846",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image...": "\u56fe\u7247...",
"Image list": "\u56fe\u7247\u5217\u8868",
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Image options": "\u56fe\u7247\u9009\u9879",
"Zoom in": "\u653e\u5927",
"Zoom out": "\u7f29\u5c0f",
"Crop": "\u88c1\u526a",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Orientation": "\u65b9\u5411",
"Brightness": "\u4eae\u5ea6",
"Sharpen": "\u9510\u5316",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Gamma": "\u4f3d\u9a6c\u503c",
"Invert": "\u53cd\u8f6c",
"Apply": "\u5e94\u7528",
"Back": "\u540e\u9000",
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Url": "\u5730\u5740",
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
"Current window": "\u5f53\u524d\u7a97\u53e3",
"None": "\u65e0",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Anchors": "\u951a\u70b9",
"Link...": "\u94fe\u63a5...",
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"Link list": "\u94fe\u63a5\u5217\u8868",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Embed": "\u5185\u5d4c",
"Media...": "\u591a\u5a92\u4f53...",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print...": "\u6253\u5370...",
"Save": "\u4fdd\u5b58",
"Find": "\u67e5\u627e",
"Replace with": "\u66ff\u6362\u4e3a",
"Replace": "\u66ff\u6362",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Previous": "\u4e0a\u4e00\u4e2a",
"Next": "\u4e0b\u4e00\u4e2a",
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Find whole words only": "\u5168\u5b57\u5339\u914d",
"Spell check": "\u62fc\u5199\u68c0\u67e5",
"Ignore": "\u5ffd\u7565",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Finish": "\u5b8c\u6210",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Delete table": "\u5220\u9664\u8868\u683c",
"Cell": "\u5355\u5143\u683c",
"Row": "\u884c",
"Column": "\u5217",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Delete row": "\u5220\u9664\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Cut row": "\u526a\u5207\u884c",
"Copy row": "\u590d\u5236\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
"Delete column": "\u5220\u9664\u5217",
"Cols": "\u5217",
"Rows": "\u884c",
"Width": "\u5bbd",
"Height": "\u9ad8",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Show caption": "\u663e\u793a\u6807\u9898",
"Left": "\u5de6\u5bf9\u9f50",
"Center": "\u5c45\u4e2d",
"Right": "\u53f3\u5bf9\u9f50",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Scope": "\u8303\u56f4",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Row group": "\u884c\u7ec4",
"Column group": "\u5217\u7ec4",
"Row type": "\u884c\u7c7b\u578b",
"Header": "\u8868\u5934",
"Body": "\u8868\u4f53",
"Footer": "\u8868\u5c3e",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Insert template...": "\u63d2\u5165\u6a21\u677f...",
"Templates": "\u6a21\u677f",
"Template": "\u6a21\u677f",
"Text color": "\u6587\u5b57\u989c\u8272",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Remove color": "\u79fb\u9664\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Word count": "\u5b57\u6570",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"{0} words": "{0} \u5b57",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Insert": "\u63d2\u5165",
"View": "\u89c6\u56fe",
"Format": "\u683c\u5f0f",
"Table": "\u8868\u683c",
"Tools": "\u5de5\u5177",
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Image title": "\u56fe\u7247\u6807\u9898",
"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
"Border style": "\u8fb9\u6846\u6837\u5f0f",
"Error": "\u9519\u8bef",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u6548",
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
"System Font": "\u7cfb\u7edf\u5b57\u4f53",
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
"example": "\u793a\u4f8b",
"Search": "\u641c\u7d22",
"All": "\u5168\u90e8",
"Currency": "\u8d27\u5e01",
"Text": "\u6587\u5b57",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6570\u5b66",
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
"Symbols": "\u7b26\u53f7",
"Arrows": "\u7bad\u5934",
"User Defined": "\u81ea\u5b9a\u4e49",
"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
"currency sign": "\u8d27\u5e01\u7b26\u53f7",
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
"colon sign": "\u5192\u53f7",
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
"lira sign": "\u91cc\u62c9\u7b26\u53f7",
"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
"naira sign": "\u5948\u62c9\u7b26\u53f7",
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
"won sign": "\u97e9\u5143\u7b26\u53f7",
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
"austral sign": "\u6fb3\u5143\u7b26\u53f7",
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
"cedi sign": "\u585e\u5730\u7b26\u53f7",
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
"spesmilo sign": "spesmilo\u7b26\u53f7",
"tenge sign": "\u575a\u6208\u7b26\u53f7",
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
"ruble sign": "\u5362\u5e03\u7b26\u53f7",
"yen character": "\u65e5\u5143\u5b57\u6837",
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
"People": "\u4eba\u7c7b",
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
"Activity": "\u6d3b\u52a8",
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
"Objects": "\u7269\u4ef6",
"Flags": "\u65d7\u5e1c",
"Characters": "\u5b57\u7b26",
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u989c\u8272\u6837\u672c",
"Turquoise": "\u9752\u7eff\u8272",
"Green": "\u7eff\u8272",
"Blue": "\u84dd\u8272",
"Purple": "\u7d2b\u8272",
"Navy Blue": "\u6d77\u519b\u84dd",
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
"Dark Green": "\u6df1\u7eff\u8272",
"Medium Blue": "\u4e2d\u84dd\u8272",
"Medium Purple": "\u4e2d\u7d2b\u8272",
"Midnight Blue": "\u6df1\u84dd\u8272",
"Yellow": "\u9ec4\u8272",
"Orange": "\u6a59\u8272",
"Red": "\u7ea2\u8272",
"Light Gray": "\u6d45\u7070\u8272",
"Gray": "\u7070\u8272",
"Dark Yellow": "\u6697\u9ec4\u8272",
"Dark Orange": "\u6df1\u6a59\u8272",
"Dark Red": "\u6df1\u7ea2\u8272",
"Medium Gray": "\u4e2d\u7070\u8272",
"Dark Gray": "\u6df1\u7070\u8272",
"Black": "\u9ed1\u8272",
"White": "\u767d\u8272",
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
"history": "\u5386\u53f2",
"styles": "\u6837\u5f0f",
"formatting": "\u683c\u5f0f\u5316",
"alignment": "\u5bf9\u9f50",
"indentation": "\u7f29\u8fdb",
"permanent pen": "\u8bb0\u53f7\u7b14",
"comments": "\u5907\u6ce8",
"Anchor": "\u951a\u70b9",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
"Color": "\u989c\u8272",
"Emoticons": "\u8868\u60c5",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Image": "\u56fe\u7247",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"Link": "\u94fe\u63a5",
"Poster": "\u5c01\u9762",
"Media": "\u5a92\u4f53",
"Print": "\u6253\u5370",
"Prev": "\u4e0a\u4e00\u4e2a",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Caption": "\u6807\u9898",
"Insert template": "\u63d2\u5165\u6a21\u677f"
});

69
public/tinymce/skins/content/dark/content.css

@ -1,69 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
background-color: #2f3742;
color: #dfe0e4;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem;
}
a {
color: #4099ff;
}
table {
border-collapse: collapse;
}
table th,
table td {
border: 1px solid #6d737b;
padding: 0.4rem;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #8a8f97;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #6d737b;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #6d737b;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
/* Make text in selected cells in tables dark and readable */
td[data-mce-selected],
th[data-mce-selected] {
color: #333;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #6d737b;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #6d737b;
margin-right: 1.5rem;
padding-right: 1rem;
}

7
public/tinymce/skins/content/dark/content.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}

57
public/tinymce/skins/content/default/content.css

@ -1,57 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem;
}
table {
border-collapse: collapse;
}
table th,
table td {
border: 1px solid #ccc;
padding: 0.4rem;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #999;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #e8e8e8;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

7
public/tinymce/skins/content/default/content.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

62
public/tinymce/skins/content/document/content.css

@ -1,62 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
@media screen {
html {
background: #f4f4f4;
min-height: 100%;
}
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
@media screen {
body {
background-color: #fff;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
box-sizing: border-box;
margin: 1rem auto 0;
max-width: 820px;
min-height: calc(100vh - 1rem);
padding: 4rem 6rem 6rem 6rem;
}
}
table {
border-collapse: collapse;
}
table th,
table td {
border: 1px solid #ccc;
padding: 0.4rem;
}
figure figcaption {
color: #999;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

7
public/tinymce/skins/content/document/content.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

58
public/tinymce/skins/content/writer/content.css

@ -1,58 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem auto;
max-width: 900px;
}
table {
border-collapse: collapse;
}
table th,
table td {
border: 1px solid #ccc;
padding: 0.4rem;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #999;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #e8e8e8;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

7
public/tinymce/skins/content/writer/content.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

807
public/tinymce/skins/ui/oxide-dark/content.css

@ -1,807 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
background-size: 100%;
content: '';
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* Dracula Theme originally by Zeno Rocha [@zenorocha]
* https://draculatheme.com/
*
* Ported for PrismJS by Albert Vallverdu [@byverdu]
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #282a36;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #6272a4;
}
.token.punctuation {
color: #f8f8f2;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #ff79c6;
}
.token.boolean,
.token.number {
color: #bd93f9;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #50fa7b;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #f1fa8c;
}
.token.keyword {
color: #8be9fd;
}
.token.regex,
.token.important {
color: #ffb86c;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 10000;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-clonedresizable {
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10000;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10001;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #4099ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #4099ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #4099ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #4099ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #4099ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #4099ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #4099ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
background-color: #b4d7ff !important;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #4099ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
.mce-item-table,
.mce-item-table td,
.mce-item-table th,
.mce-item-table caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

819
public/tinymce/skins/ui/oxide-dark/content.inline.css

@ -1,819 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
background-size: 100%;
content: '';
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 10000;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-clonedresizable {
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10000;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10001;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
background-color: #b4d7ff !important;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
.mce-item-table,
.mce-item-table td,
.mce-item-table th,
.mce-item-table caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}

7
public/tinymce/skins/ui/oxide-dark/content.inline.min.css

File diff suppressed because one or more lines are too long

7
public/tinymce/skins/ui/oxide-dark/content.min.css

File diff suppressed because one or more lines are too long

34
public/tinymce/skins/ui/oxide-dark/content.mobile.css

@ -1,34 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
/* Note: this file is used inside the content, so isn't part of theming */
background-color: green;
display: inline-block;
opacity: 0.5;
position: absolute;
}
body {
-webkit-text-size-adjust: none;
}
body img {
/* this is related to the content margin */
max-width: 96vw;
}
body table img {
max-width: 95%;
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

7
public/tinymce/skins/ui/oxide-dark/content.mobile.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

BIN
public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff

Binary file not shown.

3495
public/tinymce/skins/ui/oxide-dark/skin.css

File diff suppressed because it is too large

7
public/tinymce/skins/ui/oxide-dark/skin.min.css

File diff suppressed because one or more lines are too long

798
public/tinymce/skins/ui/oxide-dark/skin.mobile.css

@ -1,798 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
/* RESET all the things! */
.tinymce-mobile-outer-container {
all: initial;
display: block;
}
.tinymce-mobile-outer-container * {
border: 0;
box-sizing: initial;
cursor: inherit;
float: none;
line-height: 1;
margin: 0;
outline: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
/* TBIO-3691, stop the gray flicker on touch. */
text-shadow: none;
white-space: nowrap;
}
.tinymce-mobile-icon-arrow-back::before {
content: "\e5cd";
}
.tinymce-mobile-icon-image::before {
content: "\e412";
}
.tinymce-mobile-icon-cancel-circle::before {
content: "\e5c9";
}
.tinymce-mobile-icon-full-dot::before {
content: "\e061";
}
.tinymce-mobile-icon-align-center::before {
content: "\e234";
}
.tinymce-mobile-icon-align-left::before {
content: "\e236";
}
.tinymce-mobile-icon-align-right::before {
content: "\e237";
}
.tinymce-mobile-icon-bold::before {
content: "\e238";
}
.tinymce-mobile-icon-italic::before {
content: "\e23f";
}
.tinymce-mobile-icon-unordered-list::before {
content: "\e241";
}
.tinymce-mobile-icon-ordered-list::before {
content: "\e242";
}
.tinymce-mobile-icon-font-size::before {
content: "\e245";
}
.tinymce-mobile-icon-underline::before {
content: "\e249";
}
.tinymce-mobile-icon-link::before {
content: "\e157";
}
.tinymce-mobile-icon-unlink::before {
content: "\eca2";
}
.tinymce-mobile-icon-color::before {
content: "\e891";
}
.tinymce-mobile-icon-previous::before {
content: "\e314";
}
.tinymce-mobile-icon-next::before {
content: "\e315";
}
.tinymce-mobile-icon-large-font::before,
.tinymce-mobile-icon-style-formats::before {
content: "\e264";
}
.tinymce-mobile-icon-undo::before {
content: "\e166";
}
.tinymce-mobile-icon-redo::before {
content: "\e15a";
}
.tinymce-mobile-icon-removeformat::before {
content: "\e239";
}
.tinymce-mobile-icon-small-font::before {
content: "\e906";
}
.tinymce-mobile-icon-readonly-back::before,
.tinymce-mobile-format-matches::after {
content: "\e5ca";
}
.tinymce-mobile-icon-small-heading::before {
content: "small";
}
.tinymce-mobile-icon-large-heading::before {
content: "large";
}
.tinymce-mobile-icon-small-heading::before,
.tinymce-mobile-icon-large-heading::before {
font-family: sans-serif;
font-size: 80%;
}
.tinymce-mobile-mask-edit-icon::before {
content: "\e254";
}
.tinymce-mobile-icon-back::before {
content: "\e5c4";
}
.tinymce-mobile-icon-heading::before {
/* TODO: Translate */
content: "Headings";
font-family: sans-serif;
font-size: 80%;
font-weight: bold;
}
.tinymce-mobile-icon-h1::before {
content: "H1";
font-weight: bold;
}
.tinymce-mobile-icon-h2::before {
content: "H2";
font-weight: bold;
}
.tinymce-mobile-icon-h3::before {
content: "H3";
font-weight: bold;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
align-items: center;
display: flex;
justify-content: center;
background: rgba(51, 51, 51, 0.5);
height: 100%;
position: absolute;
top: 0;
width: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
align-items: center;
border-radius: 50%;
display: flex;
flex-direction: column;
font-family: sans-serif;
font-size: 1em;
justify-content: space-between;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
align-items: center;
display: flex;
justify-content: center;
flex-direction: column;
font-size: 1em;
}
@media only screen and (min-device-width: 700px) {
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
background-color: white;
color: #207ab7;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
content: "\e900";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
z-index: 2;
}
.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
background: #ffffff;
border: none;
bottom: 0;
display: flex;
flex-direction: column;
left: 0;
position: fixed;
right: 0;
top: 0;
}
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
position: relative;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
display: flex;
flex-grow: 1;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
display: flex !important;
flex-grow: 1;
height: auto !important;
}
.tinymce-mobile-android-scroll-reload {
overflow: hidden;
}
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
margin-top: 23px;
}
.tinymce-mobile-toolstrip {
background: #fff;
display: flex;
flex: 0 0 auto;
z-index: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
align-items: center;
background-color: #fff;
border-bottom: 1px solid #cccccc;
display: flex;
flex: 1;
height: 2.5em;
width: 100%;
/* Make it no larger than the toolstrip, so that it needs to scroll */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex-shrink: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
background: #f44336;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
flex-grow: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
align-items: center;
display: flex;
height: 80%;
margin-left: 2px;
margin-right: 2px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
background: #c8cbcf;
color: #cccccc;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
background: #207ab7;
color: #eceff1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex: 1;
padding-bottom: 0.4em;
padding-top: 0.4em;
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
/* For widgets like the colour picker, use the whole height */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
display: flex;
min-height: 1.5em;
overflow: hidden;
padding-left: 0;
padding-right: 0;
position: relative;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
display: flex;
height: 100%;
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
display: flex;
flex: 0 0 auto;
justify-content: space-between;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
font-family: Sans-serif;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
display: flex;
flex-grow: 1;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-ms-grid-row-align: center;
align-self: center;
background: inherit;
border: none;
border-radius: 50%;
color: #888;
font-size: 0.6em;
font-weight: bold;
height: 100%;
padding-right: 2px;
position: absolute;
right: 0;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
display: none;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
align-items: center;
display: flex;
font-weight: bold;
height: 100%;
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
visibility: hidden;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
color: #cccccc;
font-size: 10px;
line-height: 10px;
margin: 0 2px;
padding-top: 3px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
color: #c8cbcf;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
margin-left: 0.5em;
margin-right: 0.9em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
margin-left: 0.9em;
margin-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
display: flex;
flex: 1;
margin-left: 0;
margin-right: 0;
padding: 0.28em 0;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
background: #cccccc;
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
padding-left: 2em;
padding-right: 2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
/* Not part of theming */
background: black;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
/* Not part of theming */
background: white;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
* this approach.
*/
align-items: center;
background-clip: padding-box;
background-color: #455a64;
border: 0.5em solid rgba(136, 136, 136, 0);
border-radius: 3em;
bottom: 0;
color: #fff;
display: flex;
height: 0.5em;
justify-content: center;
left: -10px;
margin: auto;
position: absolute;
top: 0;
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
width: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
border: 0.5em solid rgba(136, 136, 136, 0.39);
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
flex-direction: column;
justify-content: center;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
background: #ffffff;
border: none;
border-radius: 0;
color: #455a64;
flex-grow: 1;
font-size: 0.85em;
padding-bottom: 0.1em;
padding-left: 5px;
padding-top: 0.1em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
/* dropup */
.tinymce-mobile-dropup {
background: white;
display: flex;
overflow: hidden;
width: 100%;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
transition: height 0.3s ease-out;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
transition: height 0.3s ease-in;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
flex-grow: 0;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
flex-grow: 1;
}
/* TODO min-height for device size and orientation */
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
@media only screen and (orientation: landscape) {
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
}
@media only screen and (min-device-width: 320px) and (max-device-width: 568px) and (orientation: landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 150px;
}
}
/* styles menu */
.tinymce-mobile-styles-menu {
font-family: sans-serif;
outline: 4px solid black;
overflow: hidden;
position: relative;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"] {
display: flex;
flex-direction: column;
height: 100%;
position: absolute;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"].transitioning {
transition: transform 0.5s ease-in-out;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
border-bottom: 1px solid #ddd;
color: #455a64;
cursor: pointer;
display: flex;
padding: 1em 1em;
position: relative;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
color: #455a64;
content: "\e314";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
color: #455a64;
content: "\e315";
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
align-items: center;
background: #fff;
border-top: #455a64;
color: #455a64;
display: flex;
min-height: 2.5em;
padding-left: 1em;
padding-right: 1em;
}
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
transform: translate(-100%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
transform: translate(0%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
transform: translate(100%);
}
@font-face {
font-family: 'tinymce-mobile';
font-style: normal;
font-weight: normal;
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
}
@media (min-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 25px;
}
}
@media (max-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 18px;
}
}
.tinymce-mobile-icon {
font-family: 'tinymce-mobile', sans-serif;
}
.mixin-flex-and-centre {
align-items: center;
display: flex;
justify-content: center;
}
.mixin-flex-bar {
align-items: center;
display: flex;
height: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
background-color: #fff;
width: 100%;
}
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
background-color: #207ab7;
border-radius: 50%;
bottom: 1em;
color: white;
font-size: 1em;
height: 2.1em;
position: fixed;
right: 2em;
width: 2.1em;
align-items: center;
display: flex;
justify-content: center;
}
@media only screen and (min-device-width: 700px) {
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
height: 300px;
overflow: hidden;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
height: 100%;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
display: none;
}
/*
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
increased and the whole body becomes scrollable. It's important!
*/
input[type="file"]::-webkit-file-upload-button {
display: none;
}
@media only screen and (min-device-width: 320px) and (max-device-width: 568px) and (orientation: landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
bottom: 50%;
}
}

7
public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css

File diff suppressed because one or more lines are too long

827
public/tinymce/skins/ui/oxide/content.css

@ -1,827 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
background-size: 100%;
content: '';
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 10000;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-clonedresizable {
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10000;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10001;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
background-color: #b4d7ff !important;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
.mce-item-table,
.mce-item-table td,
.mce-item-table th,
.mce-item-table caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

819
public/tinymce/skins/ui/oxide/content.inline.css

@ -1,819 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
background-size: 100%;
content: '';
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 10000;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-clonedresizable {
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10000;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10001;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
background-color: #b4d7ff !important;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
.mce-item-table,
.mce-item-table td,
.mce-item-table th,
.mce-item-table caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}

7
public/tinymce/skins/ui/oxide/content.inline.min.css

File diff suppressed because one or more lines are too long

7
public/tinymce/skins/ui/oxide/content.min.css

File diff suppressed because one or more lines are too long

34
public/tinymce/skins/ui/oxide/content.mobile.css

@ -1,34 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
/* Note: this file is used inside the content, so isn't part of theming */
background-color: green;
display: inline-block;
opacity: 0.5;
position: absolute;
}
body {
-webkit-text-size-adjust: none;
}
body img {
/* this is related to the content margin */
max-width: 96vw;
}
body table img {
max-width: 95%;
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

7
public/tinymce/skins/ui/oxide/content.mobile.min.css

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

BIN
public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff

Binary file not shown.

3495
public/tinymce/skins/ui/oxide/skin.css

File diff suppressed because it is too large

7
public/tinymce/skins/ui/oxide/skin.min.css

File diff suppressed because one or more lines are too long

798
public/tinymce/skins/ui/oxide/skin.mobile.css

@ -1,798 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
/* RESET all the things! */
.tinymce-mobile-outer-container {
all: initial;
display: block;
}
.tinymce-mobile-outer-container * {
border: 0;
box-sizing: initial;
cursor: inherit;
float: none;
line-height: 1;
margin: 0;
outline: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
/* TBIO-3691, stop the gray flicker on touch. */
text-shadow: none;
white-space: nowrap;
}
.tinymce-mobile-icon-arrow-back::before {
content: "\e5cd";
}
.tinymce-mobile-icon-image::before {
content: "\e412";
}
.tinymce-mobile-icon-cancel-circle::before {
content: "\e5c9";
}
.tinymce-mobile-icon-full-dot::before {
content: "\e061";
}
.tinymce-mobile-icon-align-center::before {
content: "\e234";
}
.tinymce-mobile-icon-align-left::before {
content: "\e236";
}
.tinymce-mobile-icon-align-right::before {
content: "\e237";
}
.tinymce-mobile-icon-bold::before {
content: "\e238";
}
.tinymce-mobile-icon-italic::before {
content: "\e23f";
}
.tinymce-mobile-icon-unordered-list::before {
content: "\e241";
}
.tinymce-mobile-icon-ordered-list::before {
content: "\e242";
}
.tinymce-mobile-icon-font-size::before {
content: "\e245";
}
.tinymce-mobile-icon-underline::before {
content: "\e249";
}
.tinymce-mobile-icon-link::before {
content: "\e157";
}
.tinymce-mobile-icon-unlink::before {
content: "\eca2";
}
.tinymce-mobile-icon-color::before {
content: "\e891";
}
.tinymce-mobile-icon-previous::before {
content: "\e314";
}
.tinymce-mobile-icon-next::before {
content: "\e315";
}
.tinymce-mobile-icon-large-font::before,
.tinymce-mobile-icon-style-formats::before {
content: "\e264";
}
.tinymce-mobile-icon-undo::before {
content: "\e166";
}
.tinymce-mobile-icon-redo::before {
content: "\e15a";
}
.tinymce-mobile-icon-removeformat::before {
content: "\e239";
}
.tinymce-mobile-icon-small-font::before {
content: "\e906";
}
.tinymce-mobile-icon-readonly-back::before,
.tinymce-mobile-format-matches::after {
content: "\e5ca";
}
.tinymce-mobile-icon-small-heading::before {
content: "small";
}
.tinymce-mobile-icon-large-heading::before {
content: "large";
}
.tinymce-mobile-icon-small-heading::before,
.tinymce-mobile-icon-large-heading::before {
font-family: sans-serif;
font-size: 80%;
}
.tinymce-mobile-mask-edit-icon::before {
content: "\e254";
}
.tinymce-mobile-icon-back::before {
content: "\e5c4";
}
.tinymce-mobile-icon-heading::before {
/* TODO: Translate */
content: "Headings";
font-family: sans-serif;
font-size: 80%;
font-weight: bold;
}
.tinymce-mobile-icon-h1::before {
content: "H1";
font-weight: bold;
}
.tinymce-mobile-icon-h2::before {
content: "H2";
font-weight: bold;
}
.tinymce-mobile-icon-h3::before {
content: "H3";
font-weight: bold;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
align-items: center;
display: flex;
justify-content: center;
background: rgba(51, 51, 51, 0.5);
height: 100%;
position: absolute;
top: 0;
width: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
align-items: center;
border-radius: 50%;
display: flex;
flex-direction: column;
font-family: sans-serif;
font-size: 1em;
justify-content: space-between;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
align-items: center;
display: flex;
justify-content: center;
flex-direction: column;
font-size: 1em;
}
@media only screen and (min-device-width: 700px) {
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
background-color: white;
color: #207ab7;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
content: "\e900";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
z-index: 2;
}
.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
background: #ffffff;
border: none;
bottom: 0;
display: flex;
flex-direction: column;
left: 0;
position: fixed;
right: 0;
top: 0;
}
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
position: relative;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
display: flex;
flex-grow: 1;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
display: flex !important;
flex-grow: 1;
height: auto !important;
}
.tinymce-mobile-android-scroll-reload {
overflow: hidden;
}
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
margin-top: 23px;
}
.tinymce-mobile-toolstrip {
background: #fff;
display: flex;
flex: 0 0 auto;
z-index: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
align-items: center;
background-color: #fff;
border-bottom: 1px solid #cccccc;
display: flex;
flex: 1;
height: 2.5em;
width: 100%;
/* Make it no larger than the toolstrip, so that it needs to scroll */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex-shrink: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
background: #f44336;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
flex-grow: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
align-items: center;
display: flex;
height: 80%;
margin-left: 2px;
margin-right: 2px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
background: #c8cbcf;
color: #cccccc;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
background: #207ab7;
color: #eceff1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex: 1;
padding-bottom: 0.4em;
padding-top: 0.4em;
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
/* For widgets like the colour picker, use the whole height */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
display: flex;
min-height: 1.5em;
overflow: hidden;
padding-left: 0;
padding-right: 0;
position: relative;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
display: flex;
height: 100%;
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
display: flex;
flex: 0 0 auto;
justify-content: space-between;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
font-family: Sans-serif;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
display: flex;
flex-grow: 1;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-ms-grid-row-align: center;
align-self: center;
background: inherit;
border: none;
border-radius: 50%;
color: #888;
font-size: 0.6em;
font-weight: bold;
height: 100%;
padding-right: 2px;
position: absolute;
right: 0;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
display: none;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
align-items: center;
display: flex;
font-weight: bold;
height: 100%;
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
visibility: hidden;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
color: #cccccc;
font-size: 10px;
line-height: 10px;
margin: 0 2px;
padding-top: 3px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
color: #c8cbcf;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
margin-left: 0.5em;
margin-right: 0.9em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
margin-left: 0.9em;
margin-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
display: flex;
flex: 1;
margin-left: 0;
margin-right: 0;
padding: 0.28em 0;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
background: #cccccc;
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
padding-left: 2em;
padding-right: 2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
/* Not part of theming */
background: black;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
/* Not part of theming */
background: white;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
* this approach.
*/
align-items: center;
background-clip: padding-box;
background-color: #455a64;
border: 0.5em solid rgba(136, 136, 136, 0);
border-radius: 3em;
bottom: 0;
color: #fff;
display: flex;
height: 0.5em;
justify-content: center;
left: -10px;
margin: auto;
position: absolute;
top: 0;
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
width: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
border: 0.5em solid rgba(136, 136, 136, 0.39);
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
flex-direction: column;
justify-content: center;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
background: #ffffff;
border: none;
border-radius: 0;
color: #455a64;
flex-grow: 1;
font-size: 0.85em;
padding-bottom: 0.1em;
padding-left: 5px;
padding-top: 0.1em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
/* dropup */
.tinymce-mobile-dropup {
background: white;
display: flex;
overflow: hidden;
width: 100%;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
transition: height 0.3s ease-out;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
transition: height 0.3s ease-in;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
flex-grow: 0;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
flex-grow: 1;
}
/* TODO min-height for device size and orientation */
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
@media only screen and (orientation: landscape) {
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
}
@media only screen and (min-device-width: 320px) and (max-device-width: 568px) and (orientation: landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 150px;
}
}
/* styles menu */
.tinymce-mobile-styles-menu {
font-family: sans-serif;
outline: 4px solid black;
overflow: hidden;
position: relative;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"] {
display: flex;
flex-direction: column;
height: 100%;
position: absolute;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"].transitioning {
transition: transform 0.5s ease-in-out;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
border-bottom: 1px solid #ddd;
color: #455a64;
cursor: pointer;
display: flex;
padding: 1em 1em;
position: relative;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
color: #455a64;
content: "\e314";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
color: #455a64;
content: "\e315";
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
align-items: center;
background: #fff;
border-top: #455a64;
color: #455a64;
display: flex;
min-height: 2.5em;
padding-left: 1em;
padding-right: 1em;
}
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
transform: translate(-100%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
transform: translate(0%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
transform: translate(100%);
}
@font-face {
font-family: 'tinymce-mobile';
font-style: normal;
font-weight: normal;
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
}
@media (min-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 25px;
}
}
@media (max-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 18px;
}
}
.tinymce-mobile-icon {
font-family: 'tinymce-mobile', sans-serif;
}
.mixin-flex-and-centre {
align-items: center;
display: flex;
justify-content: center;
}
.mixin-flex-bar {
align-items: center;
display: flex;
height: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
background-color: #fff;
width: 100%;
}
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
background-color: #207ab7;
border-radius: 50%;
bottom: 1em;
color: white;
font-size: 1em;
height: 2.1em;
position: fixed;
right: 2em;
width: 2.1em;
align-items: center;
display: flex;
justify-content: center;
}
@media only screen and (min-device-width: 700px) {
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
height: 300px;
overflow: hidden;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
height: 100%;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
display: none;
}
/*
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
increased and the whole body becomes scrollable. It's important!
*/
input[type="file"]::-webkit-file-upload-button {
display: none;
}
@media only screen and (min-device-width: 320px) and (max-device-width: 568px) and (orientation: landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
bottom: 50%;
}
}

7
public/tinymce/skins/ui/oxide/skin.mobile.min.css

File diff suppressed because one or more lines are too long

15
src/App.vue

@ -1,15 +0,0 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: 'App',
created() {
//
this.$store.dispatch('theme/recoverTheme');
}
};
</script>

53
src/api/dashboard/analysis/index.js

@ -1,53 +0,0 @@
import axios from '@/utils/request';
/**
* 获取支付笔数数据
*/
export async function getPayNumList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/analysis-pay-num.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取销售量数据
*/
export async function getSaleroomList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/analysis-saleroom.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取最近1小时访问情况数据
*/
export async function getVisitHourList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/analysis-visits.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取词云数据
*/
export async function getWordCloudList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/analysis-hot-search.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

41
src/api/dashboard/monitor/index.js

@ -1,41 +0,0 @@
import axios from '@/utils/request';
const BASE_URL = process.env.BASE_URL;
/**
* 获取中国地图geo数据
*/
export async function getChinaMapData() {
const res = await axios.get(BASE_URL + 'json/china-provinces.geo.json', {
baseURL: ''
});
if (res.data) {
return res.data;
}
return Promise.reject(new Error('获取地图数据失败'));
}
/**
* 获取用户分布数据
*/
export async function getUserCountList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/monitor-user-count.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取用户浏览器分布数据
*/
export async function getBrowserCountList() {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/monitor-browser-count.json'
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

15
src/api/example/choose/index.js

@ -1,15 +0,0 @@
import axios from '@/utils/request';
/**
* 获取全部的班级数据
*/
export async function getAllClasses(params) {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/classes.json',
{ params }
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

31
src/api/example/document/index.js

@ -1,31 +0,0 @@
import axios from '@/utils/request';
/**
* 获取案卷列表
* @param params
*/
export async function getPieceList(params) {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/document.json',
{ params }
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取卷内文件列表
* @param params
*/
export async function getArchiveList(params) {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/archive.json',
{ params }
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

11
src/api/example/table/index.js

@ -1,11 +0,0 @@
import request from '@/utils/request';
export async function pageUserScores() {
const res = await request.get(
'https://cdn.eleadmin.com/20200610/example-table-merge.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

43
src/api/extension/file/index.js

@ -1,43 +0,0 @@
import axios from '@/utils/request';
/**
* 获取文件列表数据
*/
export async function getFileList({ directory, sort, order } = {}) {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/extension-files.json',
{
params: {
directory,
sort,
order
}
}
);
if (res.data.code === 0) {
// 模拟按文件夹筛选
let data = res.data.data;
if (directory) {
directory.split('/').forEach((d) => {
data = data.filter((t) => t.name === d)[0]?.data ?? [];
});
}
// 模拟排序
if (sort) {
data.sort((a, b) => {
if (a[sort] == b[sort]) {
return 0;
}
if (order === 'desc') {
return a[sort] < b[sort] ? 1 : -1;
}
return a[sort] < b[sort] ? -1 : 1;
});
}
data.sort((a, b) => {
return b.isDirectory ?? false - a.isDirectory ?? false;
});
return data;
}
return Promise.reject(new Error(res.data.message));
}

26
src/api/form/advanced/index.js

@ -1,26 +0,0 @@
/**
* 获取数据
*/
export async function queryList() {
const data = [
{
key: '1',
number: '00001',
name: 'John Brown',
department: '研发部'
},
{
key: '2',
number: '00002',
name: 'Jim Green',
department: '产品部'
},
{
key: '3',
number: '00003',
name: 'Joe Black',
department: '产品部'
}
];
return data;
}

115
src/api/layout/index.js

@ -1,115 +0,0 @@
import request from '@/utils/request';
/**
* 获取当前登录的用户信息菜单权限角色
*/
export async function getUserInfo() {
const res = await request.get('/auth/user');
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改当前登录的用户密码
*/
export async function updatePassword(data) {
const res = await request.put('/auth/password', data);
if (res.data.code === 0) {
return res.data.message ?? '修改成功';
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询未读通知
*/
export async function getUnreadNotice() {
return {
notice: [
{
color: '#60B2FC',
icon: 'el-icon-s-comment',
title: '你收到了一封14份新周报',
time: '2020-07-27 18:30:18'
},
{
color: '#F5686F',
icon: 'el-icon-s-check',
title: '许经理同意了你的请假申请',
time: '2020-07-27 09:08:36'
},
{
color: '#7CD734',
icon: 'el-icon-video-camera',
title: '陈总邀请你参加视频会议',
time: '2020-07-26 18:30:01'
},
{
color: '#FAAD14',
icon: 'el-icon-s-claim',
title: '你推荐的刘诗雨已通过第三轮面试',
time: '2020-07-25 16:38:46'
},
{
color: '#2BCACD',
icon: 'el-icon-message-solid',
title: '你的6月加班奖金已发放',
time: '2020-07-25 11:03:31'
}
],
letter: [
{
avatar:
'https://cdn.eleadmin.com/20200609/c184eef391ae48dba87e3057e70238fb.jpg',
title: 'SunSmile 评论了你的日志',
content: '写的不错, 以后多多向你学习~',
time: '2020-07-27 18:30:18'
},
{
avatar:
'https://cdn.eleadmin.com/20200609/948344a2a77c47a7a7b332fe12ff749a.jpg',
title: '刘诗雨 点赞了你的日志',
content: '写的不错, 以后多多向你学习~',
time: '2020-07-27 09:08:36'
},
{
avatar:
'https://cdn.eleadmin.com/20200609/2d98970a51b34b6b859339c96b240dcd.jpg',
title: '酷酷的大叔 评论了你的周报',
content: '写的不错, 以后多多向你学习~',
time: '2020-07-26 18:30:01'
},
{
avatar:
'https://cdn.eleadmin.com/20200609/f6bc05af944a4f738b54128717952107.jpg',
title: 'Jasmine 点赞了你的周报',
content: '写的不错, 以后多多向你学习~',
time: '2020-07-25 11:03:31'
}
],
todo: [
{
status: 0,
title: '刘诗雨的请假审批',
description: '刘诗雨在 07-27 18:30 提交的请假申请'
},
{
status: 1,
title: '第三方代码紧急变更',
description: '需要在 2020-07-27 之前完成'
},
{
status: 2,
title: '信息安全考试',
description: '需要在 2020-07-26 18:30 前完成'
},
{
status: 2,
title: 'EleAdmin发布新版本',
description: '需要在 2020-07-25 11:03 前完成'
}
]
};
}

18
src/api/list/basic/index.js

@ -1,18 +0,0 @@
import axios from '@/utils/request';
/**
* 获取列表数据
*/
export async function queryList(params) {
const res = await axios.get(
'https://cdn.eleadmin.com/20200610/list-demo-basic.json',
{ params }
);
if (res.data.code === 0) {
return {
list: res.data.data,
count: res.data.count
};
}
return Promise.reject(new Error(res.data.message));
}

26
src/api/login/index.js

@ -1,26 +0,0 @@
import axios from '@/utils/request';
import { setToken } from '@/utils/token-util';
/**
* 登录
*/
export async function login(data) {
data.tenantId = 1; // 租户id
const res = await axios.post('/login', data);
if (res.data.code === 0) {
setToken(res.data.data.access_token, data.remember);
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取验证码
*/
export async function getCaptcha() {
const res = await axios.get('/captcha');
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

79
src/api/system/dictionary-data/index.js

@ -1,79 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询字典数据
* @param params 查询条件
*/
export async function pageDictionaryData(params) {
const res = await axios.get('/system/dictionary-data/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询字典数据列表
* @param params 查询条件
*/
export async function listDictionaryData(params) {
const res = await axios.get('/system/dictionary-data', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加字典数据
* @param data 字典数据信息
*/
export async function addDictionaryData(data) {
const res = await axios.post('/system/dictionary-data', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改字典数据
* @param data 字典数据信息
*/
export async function updateDictionaryData(data) {
const res = await axios.put('/system/dictionary-data', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除字典数据
* @param id 字典数据id
*/
export async function removeDictionaryData(id) {
const res = await axios.delete('/system/dictionary-data/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 批量删除字典数据
* @param data 字典数据id集合
*/
export async function removeDictionaryDataBatch(data) {
const res = await axios.delete('/system/dictionary-data/batch', {
data
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

51
src/api/system/dictionary/index.js

@ -1,51 +0,0 @@
import axios from '@/utils/request';
/**
* 查询字典列表
* @param params 查询条件
*/
export async function listDictionaries(params) {
const res = await axios.get('/system/dictionary', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加字典
* @param data 字典信息
*/
export async function addDictionary(data) {
const res = await axios.post('/system/dictionary', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改字典
* @param data 字典信息
*/
export async function updateDictionary(data) {
const res = await axios.put('/system/dictionary', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除字典
* @param id 字典id
*/
export async function removeDictionary(id) {
const res = await axios.delete('/system/dictionary/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

29
src/api/system/file/index.js

@ -1,29 +0,0 @@
import axios from '@/utils/request';
/**
* 上传文件
* @param file 文件
*/
export async function uploadFile(file) {
const formData = new FormData();
formData.append('file', file);
const res = await axios.post('/file/upload', formData);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 分页查询文件上传记录
* @param params 查询条件
*/
export async function pageFiles(params) {
const res = await axios.get('/file/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

29
src/api/system/login-record/index.js

@ -1,29 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询登录日志
* @param params 查询条件
*/
export async function pageLoginRecords(params) {
const res = await axios.get('/system/login-record/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询登录日志列表
* @param params 查询条件
*/
export async function listLoginRecords(params) {
const res = await axios.get('/system/login-record', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

51
src/api/system/menu/index.js

@ -1,51 +0,0 @@
import axios from '@/utils/request';
/**
* 查询菜单列表
* @param params 查询条件
*/
export async function listMenus(params) {
const res = await axios.get('/system/menu', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加菜单
* @param data 菜单信息
*/
export async function addMenu(data) {
const res = await axios.post('/system/menu', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改菜单
* @param data 菜单信息
*/
export async function updateMenu(data) {
const res = await axios.put('/system/menu', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除菜单
* @param id 菜单id
*/
export async function removeMenu(id) {
const res = await axios.delete('/system/menu/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

29
src/api/system/operation-record/index.js

@ -1,29 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询操作日志
* @param params 查询条件
*/
export async function pageOperationRecords(params) {
const res = await axios.get('/system/operation-record/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询操作日志列表
* @param params 查询条件
*/
export async function listOperationRecords(params) {
const res = await axios.get('/system/operation-record', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

65
src/api/system/organization/index.js

@ -1,65 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询机构
* @param params 查询条件
*/
export async function pageOrganizations(params) {
const res = await axios.get('/system/organization/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询机构列表
* @param params 查询条件
*/
export async function listOrganizations(params) {
const res = await axios.get('/system/organization', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加机构
* @param data 机构信息
*/
export async function addOrganization(data) {
const res = await axios.post('/system/organization', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改机构
* @param data 机构信息
*/
export async function updateOrganization(data) {
const res = await axios.put('/system/organization', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除机构
* @param id 机构id
*/
export async function removeOrganization(id) {
const res = await axios.delete('/system/organization/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

104
src/api/system/role/index.js

@ -1,104 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询角色
* @param params 查询条件
*/
export async function pageRoles(params) {
const res = await axios.get('/system/role/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询角色列表
* @param params 查询条件
*/
export async function listRoles(params) {
const res = await axios.get('/system/role', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加角色
* @param data 角色信息
*/
export async function addRole(data) {
const res = await axios.post('/system/role', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改角色
* @param data 角色信息
*/
export async function updateRole(data) {
const res = await axios.put('/system/role', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除角色
* @param id 角色id
*/
export async function removeRole(id) {
const res = await axios.delete('/system/role/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 批量删除角色
* @param ids 角色id集合
*/
export async function removeRoles(data) {
const res = await axios.delete('/system/role/batch', {
data
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取角色分配的菜单
* @param roleId 角色id
*/
export async function listRoleMenus(roleId) {
const res = await axios.get('/system/role-menu/' + roleId);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改角色菜单
* @param roleId 角色id
* @param data 菜单id集合
*/
export async function updateRoleMenus(roleId, data) {
const res = await axios.put('/system/role-menu/' + roleId, data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

154
src/api/system/user/index.js

@ -1,154 +0,0 @@
import axios from '@/utils/request';
/**
* 分页查询用户
* @param params 查询条件
*/
export async function pageUsers(params) {
const res = await axios.get('/system/user/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询用户列表
* @param params 查询条件
*/
export async function listUsers(params) {
const res = await axios.get('/system/user', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 根据id查询用户
* @param id 用户id
*/
export async function getUser(id) {
const res = await axios.get('/system/user/' + id);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加用户
* @param data 用户信息
*/
export async function addUser(data) {
const res = await axios.post('/system/user', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改用户
* @param data 用户信息
*/
export async function updateUser(data) {
const res = await axios.put('/system/user', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除用户
* @param id 用户id
*/
export async function removeUser(id) {
const res = await axios.delete('/system/user/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 批量删除用户
* @param data 用户id集合
*/
export async function removeUsers(data) {
const res = await axios.delete('/system/user/batch', {
data
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改用户状态
* @param userId 用户id
* @param status 状态
*/
export async function updateUserStatus(userId, status) {
const res = await axios.put('/system/user/status', {
userId,
status
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 重置用户密码
* @param userId 用户id
* @param password 密码
* @returns {Promise<string>}
*/
export async function updateUserPassword(userId, password = '123456') {
const res = await axios.put('/system/user/password', {
userId,
password
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导入用户
* @param file excel文件
*/
export async function importUsers(file) {
const formData = new FormData();
formData.append('file', file);
const res = await axios.post('/system/user/import', formData);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 检查用户是否存在
* @param field 检查的字段
* @param value 字段的值
* @param id 修改时的id
*/
export async function checkExistence(field, value, id) {
const res = await axios.get('/system/user/existence', {
params: { field, value, id }
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

223
src/api/user/message/index.js

@ -1,223 +0,0 @@
/**
* 分页查询通知
*/
export async function pageNotices() {
return {
count: 10,
list: [
{
id: 21,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 0
},
{
id: 22,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 0
},
{
id: 23,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 24,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 25,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 26,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 27,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 28,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 29,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
},
{
id: 30,
title: 'EleAdmin新版本发布,欢迎体验',
time: '2020-07-24 11:35',
status: 1
}
]
};
}
/**
* 分页查询私信
*/
export async function pageLetters() {
return {
count: 10,
list: [
{
id: 11,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 0
},
{
id: 12,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 0
},
{
id: 13,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 0
},
{
id: 14,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 15,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 16,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 17,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 18,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 19,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
},
{
id: 20,
title: 'Jasmine给你发来了一条私信',
time: '2020-07-24 11:35',
status: 1
}
]
};
}
/**
* 分页查询代办
*/
export async function pageTodos() {
return {
count: 10,
list: [
{
id: 1,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 0
},
{
id: 2,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 0
},
{
id: 3,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 0
},
{
id: 4,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 0
},
{
id: 5,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
},
{
id: 6,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
},
{
id: 7,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
},
{
id: 8,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
},
{
id: 9,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
},
{
id: 10,
title: '你有两条任务待完成,不要忘了哦~',
time: '2020-07-24 11:35',
status: 1
}
]
};
}
/**
* 查询未读数量
*/
export async function getUnReadNum() {
return {
notice: 2,
letter: 3,
todo: 4
};
}

BIN
src/assets/bg-login.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 KiB

480
src/assets/ic-403.svg

@ -1,480 +0,0 @@
<svg width="227" height="269" viewBox="0 0 227 269" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path d="M0 131.5c0-29.712 2.002-61.194 6.007-94.445 2.225-18.473 17.225-32.78 35.782-34.13C68.622.976 91.041 0 109.044 0c18.09 0 40.799.985 68.129 2.954 18.572 1.338 33.589 15.656 35.809 34.144C216.994 70.51 219 102.083 219 131.813c0 29.66-1.997 61.03-5.99 94.114-2.23 18.474-17.237 32.778-35.797 34.12-27.238 1.969-49.735 2.953-67.491 2.953-17.794 0-40.43-.989-67.91-2.966-18.569-1.336-33.585-15.649-35.81-34.133C2 192.666 0 161.2 0 131.5z" id="b" />
<filter x="-4.5%" y="-1.4%" width="106.2%" height="104.4%" filterUnits="objectBoundingBox" id="a">
<feMorphology radius=".81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dx="-6" dy="4" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path d="M39.654 130.992c0-20.899.881-41.798 2.643-62.697.97-11.504 9.9-20.738 21.366-22.091a388.15 388.15 0 0 1 45.531-2.687c15.167 0 30.333.895 45.5 2.684 11.47 1.353 20.403 10.593 21.368 22.103a755.378 755.378 0 0 1 2.657 63.124c0 20.88-.88 41.76-2.64 62.638-.97 11.505-9.903 20.74-21.369 22.091a389.034 389.034 0 0 1-45.598 2.693c-15.145 0-30.291-.894-45.437-2.682-11.468-1.355-20.4-10.593-21.365-22.101a754.09 754.09 0 0 1-2.656-63.075z" id="d" />
<filter x="-6%" y="-2.3%" width="108.6%" height="105.9%" filterUnits="objectBoundingBox" id="c">
<feMorphology radius=".81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dx="-5" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path d="M161.51 89.858h15.333v17.534H161.51a6.568 6.568 0 0 1-6.567-6.568v-4.398a6.568 6.568 0 0 1 6.567-6.568z" id="f" />
<filter x="-13.7%" y="-5.7%" width="118.3%" height="117.1%" filterUnits="objectBoundingBox" id="e">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path d="M183.958 89.858h15.332v17.534h-15.332a6.568 6.568 0 0 1-6.568-6.568v-4.398a6.568 6.568 0 0 1 6.568-6.568z" id="h" />
<filter x="-2.3%" y="-2.9%" width="109.1%" height="111.4%" filterUnits="objectBoundingBox" id="g">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<filter x="-55.5%" y="-9.3%" width="177.5%" height="148%" filterUnits="objectBoundingBox" id="i">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-55.5%" y="-9.3%" width="177.5%" height="148%" filterUnits="objectBoundingBox" id="j">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<path d="M8.865 17.248a1.754 1.754 0 0 1-.77-1.454 1.75 1.75 0 0 1 1.748-1.754 1.75 1.75 0 0 1 1.747 1.754c0 .605-.305 1.139-.77 1.454l.976 2.737a.615.615 0 0 1-.579.82H8.468a.615.615 0 0 1-.579-.82l.976-2.737z" id="k" />
<filter x="-12%" y="-7.4%" width="124.1%" height="114.8%" filterUnits="objectBoundingBox" id="l">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetInner1" />
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 1 0" in="shadowInnerInner1" />
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="m">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="n">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="o">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="p">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="q">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="r">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="s">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="t">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="u">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="v">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="w">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="x">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="y">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="z">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="A">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="B">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-44.4%" y="-20%" width="166.7%" height="160%" filterUnits="objectBoundingBox" id="C">
<feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<path id="E" d="M79.083 68.794h60.833v24.352H79.083z" />
<filter x="-2.5%" y="-2.1%" width="103.3%" height="108.2%" filterUnits="objectBoundingBox" id="D">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path id="F" d="M119.233 71.235h18.25v19.507h-18.25z" />
<path d="M6.692.215h8.762v30.683H6.692A6.568 6.568 0 0 1 .124 24.33V6.782A6.568 6.568 0 0 1 6.692.215z" id="H" />
<filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="G">
<feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" in="shadowOffsetOuter1" />
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="I">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="J">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<path d="M42.83 11.876v7.36c0 .69-.493 1.3-1.091 1.36l-24.095 2.083V8.433l24.095 2.084c.602.06 1.09.668 1.09 1.359z" id="K" />
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="L">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="M">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<rect id="O" x="12.23" y="6.79" width="7.117" height="17.533" rx="1.095" />
<filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="N">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path d="M6.692.215h8.762v30.683H6.692A6.568 6.568 0 0 1 .124 24.33V6.782A6.568 6.568 0 0 1 6.692.215z" id="Q" />
<filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="P">
<feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" in="shadowOffsetOuter1" />
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="R">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="S">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<path d="M42.83 11.876v7.36c0 .69-.493 1.3-1.091 1.36l-24.095 2.083V8.433l24.095 2.084c.602.06 1.09.668 1.09 1.359z" id="T" />
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="U">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter x="-50%" width="160%" height="160%" filterUnits="objectBoundingBox" id="V">
<feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" result="shadowMatrixOuter1" />
<feMerge>
<feMergeNode in="shadowMatrixOuter1" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<rect id="X" x="12.23" y="6.79" width="7.117" height="17.533" rx="1.095" />
<filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="W">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<path d="M24.598 18.916c-1.887-.225-4.41-.546-5.998-.826-2.828-.498-8.375-1.863-8.375-1.863l-.793 4.498s5.701.552 8.518 1.048c1.365.241 3.377.703 5.086 1.114-.964 1.487-2.121 3.236-2.943 4.366-1.688 2.324-5.346 6.71-5.346 6.71l3.695 2.685s2.995-4.882 4.677-7.196c.84-1.158 2.196-2.832 3.338-4.213.981 1.507 2.148 3.335 2.864 4.575 1.436 2.487 3.956 7.613 3.956 7.613l3.955-2.283s-3.241-4.722-4.672-7.2c-.752-1.303-1.795-3.358-2.613-5.01 1.788-.483 4.046-1.073 5.526-1.388 2.81-.597 8.463-1.409 8.463-1.409l-.95-4.468s-5.492 1.624-8.29 2.219c-1.553.33-4.001.71-5.868.98-.105-1.888-.225-4.382-.225-5.972 0-2.872.381-8.57.381-8.57h-4.567s.446 5.71.446 8.57c0 1.609-.142 4.128-.265 6.02z" id="Y" />
<filter x="-14.6%" y="-6.2%" width="120.9%" height="121.4%" filterUnits="objectBoundingBox" id="Z">
<feMorphology radius=".547" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dx="-3" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" in="shadowOffsetOuter1" />
</filter>
<ellipse id="ab" cx="26.803" cy="22.671" rx="4.38" ry="4.383" />
<filter x="-34.2%" y="-11.4%" width="145.7%" height="134.2%" filterUnits="objectBoundingBox" id="aa">
<feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1" />
<feColorMatrix values="0 0 0 0 0.596078431 0 0 0 0 0.647058824 0 0 0 0 0.701960784 0 0 0 1 0" in="shadowOffsetOuter1" />
</filter>
</defs>
<g fill="none" fill-rule="evenodd">
<g transform="translate(7 1)">
<use fill="#000" filter="url(#a)" xlink:href="#b" />
<use stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" xlink:href="#b" />
<use fill="#000" filter="url(#c)" xlink:href="#d" />
<use stroke="#A3B1BF" stroke-width="1.62" fill-opacity=".15" fill="#A3B1BF" xlink:href="#d" />
<use fill="#000" filter="url(#e)" xlink:href="#f" />
<use fill="#F0F2F5" xlink:href="#f" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M176.032 106.582V90.668H161.51a5.758 5.758 0 0 0-5.757 5.758v4.398a5.758 5.758 0 0 0 5.757 5.758h14.523z" />
<g transform="matrix(-1 0 0 1 376.68 0)">
<use fill="#000" filter="url(#g)" xlink:href="#h" />
<use fill="#F0F2F5" xlink:href="#h" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M198.48 106.582V90.668h-14.522a5.758 5.758 0 0 0-5.758 5.758v4.398a5.758 5.758 0 0 0 5.758 5.758h14.522z" />
</g>
<path d="M169.538 109.199h9.983v-2.882c.136.343-4.552 0-7.101 0l1.733-6.073c-2.547 0-4.615 2.05-4.615 4.579v4.376zm11.867-2.435l-.07-.935c-2.842.49-5.457 0-9.247 0l2.065-7.813c-3.787 0-6.861 3.048-6.861 6.807v1.941h-.422c-1.111 0-2.012.9-2.012 2.012v6.764a8.045 8.045 0 0 0 8.046 8.046h3.376a8.045 8.045 0 0 0 8.045-8.046v-6.764c0-1.111-.9-2.012-2.011-2.012h-.91z" fill="#D4DBE2" fill-rule="nonzero" />
<g filter="url(#i)" transform="translate(160.42 95.473)">
<ellipse stroke="#D9D9D9" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#D9D9D9" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#j)" transform="translate(189.26 95.473)">
<ellipse stroke="#D9D9D9" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#D9D9D9" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<path d="M169.117 106.147v-1.598c0-3.411 2.216-6.3 5.272-7.274v3.576a4.378 4.378 0 0 0-1.866 3.595v1.7h8.643v-1.7a4.38 4.38 0 0 0-1.262-3.085v-3.698a7.633 7.633 0 0 1 4.3 6.886v1.599a2.011 2.011 0 0 1 1.946 2.01v6.972a8.045 8.045 0 0 1-8.045 8.046h-3.376a8.045 8.045 0 0 1-8.046-8.046v-6.972c0-1.11.9-2.011 2.012-2.011h.422z" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" />
<g transform="translate(166.683 96.799)">
<use fill-opacity=".3" fill="#A3B1BF" xlink:href="#k" />
<use fill="#000" filter="url(#l)" xlink:href="#k" />
</g>
<g filter="url(#m)" transform="translate(64 75)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#n)" transform="translate(152 75)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#o)" transform="translate(57 120)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#p)" transform="translate(57 137)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#q)" transform="translate(64 186)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#r)" transform="translate(93 191)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#s)" transform="translate(122 191)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#t)" transform="translate(152 186)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#u)" transform="translate(160.42 95.473)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F5F5F5" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#v)" transform="translate(189.26 95.473)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#w)" transform="translate(25 38)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#x)" transform="translate(25 218)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#y)" transform="translate(106 237)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#z)" transform="translate(185 219)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#A)" transform="translate(14.42 129.699)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#B)" transform="translate(105.444 20.716)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F7FAFC" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<g filter="url(#C)" transform="translate(185.055 37.806)">
<ellipse stroke="#A3B1BF" stroke-width="1.642" fill="#F5F5F5" cx="4.38" cy="4.931" rx="4.38" ry="4.383" />
<path fill="#A3B1BF" d="M4.004 9.133l3.558-.9L2.343.445.446 3.63.79 7.806z" />
</g>
<use fill="#000" filter="url(#D)" xlink:href="#E" />
<use fill="#F0F2F5" xlink:href="#E" />
<path stroke="#A3B1BF" stroke-width="2.43" d="M80.298 70.009h58.403v21.922H80.298z" />
<use fill-opacity=".3" fill="#A3B1BF" xlink:href="#F" />
<rect fill="#A3B1BF" x="114.367" y="77.317" width="1.825" height="8.117" rx=".912" />
<rect fill="#A3B1BF" x="118.017" y="72.65" width="2.433" height="16.235" rx="1.217" />
<g>
<g transform="translate(25 88)">
<use fill="#000" filter="url(#G)" xlink:href="#H" />
<use fill="#EAEFF3" xlink:href="#H" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M14.644 30.088V1.025H6.692A5.758 5.758 0 0 0 .934 6.782V24.33a5.758 5.758 0 0 0 5.758 5.758h7.952z" />
</g>
<g filter="url(#I)" transform="translate(31.207 94.79)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#J)" transform="translate(31.543 107.182)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g transform="translate(25 88)">
<use fill="#F0F2F5" xlink:href="#K" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M18.454 9.316v12.48l23.203-2.006c.165-.017.362-.262.362-.553v-7.361c0-.294-.195-.537-.35-.552L18.454 9.316z" />
</g>
<g filter="url(#L)" transform="translate(48 101)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#M)" transform="translate(58 101)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g transform="translate(25 88)">
<use fill="#000" filter="url(#N)" xlink:href="#O" />
<use fill="#EAEFF3" xlink:href="#O" />
<rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.6" width="5.497" height="15.913" rx="1.095" />
</g>
<path d="M38.599 103.556h4.38" stroke="#A3B1BF" stroke-width="2.189" stroke-linecap="square" />
</g>
<g>
<g transform="translate(25 145)">
<use fill="#000" filter="url(#P)" xlink:href="#Q" />
<use fill="#EAEFF3" xlink:href="#Q" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M14.644 30.088V1.025H6.692A5.758 5.758 0 0 0 .934 6.782V24.33a5.758 5.758 0 0 0 5.758 5.758h7.952z" />
</g>
<g filter="url(#R)" transform="translate(31.207 151.79)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#S)" transform="translate(31.543 164.182)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g transform="translate(25 145)">
<use fill="#F0F2F5" xlink:href="#T" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M18.454 9.316v12.48l23.203-2.006c.165-.017.362-.262.362-.553v-7.361c0-.294-.195-.537-.35-.552L18.454 9.316z" />
</g>
<g filter="url(#U)" transform="translate(48 158)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g filter="url(#V)" transform="translate(58 158)">
<ellipse stroke="#A3B1BF" stroke-width="1.095" fill="#F7FAFC" cx="2.19" cy="2.74" rx="2.19" ry="2.192" />
<path fill="#A3B1BF" d="M3.781 4.39L1.171.497.224 2.09.101 4.39z" />
</g>
<g transform="translate(25 145)">
<use fill="#000" filter="url(#W)" xlink:href="#X" />
<use fill="#EAEFF3" xlink:href="#X" />
<rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.6" width="5.497" height="15.913" rx="1.095" />
</g>
<path d="M38.599 160.556h4.38" stroke="#A3B1BF" stroke-width="2.189" stroke-linecap="square" />
</g>
</g>
<path d="M164.669 178.731c-12.398 0-22.448-10.058-22.448-22.465 0-12.406 10.05-22.464 22.448-22.464 12.397 0 22.447 10.058 22.447 22.464 0 12.407-10.05 22.465-22.447 22.465zm0-6.575c8.769 0 15.877-7.114 15.877-15.89 0-8.775-7.108-15.89-15.877-15.89-8.77 0-15.878 7.115-15.878 15.89 0 8.776 7.109 15.89 15.878 15.89z" fill-opacity=".3" fill="#A3B1BF" />
<g transform="translate(142.185 132.5)">
<use fill="#000" filter="url(#Z)" xlink:href="#Y" />
<use stroke="#A3B1BF" stroke-width="1.095" fill="#A3B1BF" xlink:href="#Y" />
</g>
<path d="M163.11 133.506a22.515 22.515 0 0 1 4.803-.516c12.398 0 22.448 10.058 22.448 22.465 0 10.862-7.704 19.924-17.943 22.012l-2.403-6.26c7.776-1.03 13.776-7.69 13.776-15.752 0-8.776-7.109-15.89-15.878-15.89a15.796 15.796 0 0 0-8.976 2.781l-1.083-2.82 5.255-6.02z" fill="#98A5B3" />
<path d="M168.988 177.635c-12.398 0-22.448-10.058-22.448-22.464 0-12.407 10.05-22.465 22.448-22.465 12.397 0 22.447 10.058 22.447 22.465 0 12.406-10.05 22.464-22.447 22.464zm0-6.575c8.769 0 15.877-7.114 15.877-15.89 0-8.775-7.108-15.889-15.877-15.889-8.769 0-15.878 7.114-15.878 15.89 0 8.775 7.109 15.89 15.878 15.89z" fill="#A3B1BF" />
<path d="M179.754 138.974s2.787 1.59 5.432 6.022c2.644 4.432 2.986 8.99 2.986 8.99" stroke="#F7FAFC" stroke-width="1.62" stroke-linecap="round" />
<g transform="translate(142.185 132.5)">
<use fill="#000" filter="url(#aa)" xlink:href="#ab" />
<use fill="#A3B1BF" xlink:href="#ab" />
</g>
<path d="M171.213 156.862a2.434 2.434 0 0 0-3.321-3.562s1.204.368 2.12 1.351c.918.984 1.201 2.21 1.201 2.21z" fill="#F7FAFC" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

299
src/assets/ic-404.svg

@ -1,299 +0,0 @@
<svg width="423" height="341" viewBox="0 0 423 341" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<g stroke="#A3B1BF" stroke-width="1.62" opacity=".6" stroke-linejoin="round" stroke-dasharray="12.15">
<path d="M224.993 290.054c-65.929 0-119.375-53.434-119.375-119.35 0-65.915 53.446-119.35 119.375-119.35 65.928 0 119.374 53.435 119.374 119.35 0 65.916-53.446 119.35-119.374 119.35z" />
<path d="M224.823 339.72c-93.378 0-169.076-75.684-169.076-169.043 0-93.36 75.698-169.042 169.076-169.042s169.076 75.683 169.076 169.042c0 93.36-75.698 169.042-169.076 169.042z" />
</g>
<path fill="#F5F5F5" d="M78.617 196.401l20.278-1.052L84.052 209.2z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M78.617 196.401l20.278-1.052L84.052 209.2z" />
<path d="M22.038 208.972l20.251-8.594 13.665 32.184-20.251 8.594z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M22.038 208.972l20.251-8.594 13.665 32.184-20.251 8.594z" />
<path fill="#F5F5F5" d="M38.867 193.414l4.997-2.12 19.721 46.447-4.997 2.12z" />
<path stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" stroke-linejoin="round" d="M38.867 193.414l4.997-2.12 19.721 46.447-4.997 2.12z" />
<path d="M43.485 251.004l18.752-7.958 23.674 55.757-18.751 7.957z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M43.485 251.004l18.752-7.958 23.674 55.757-18.751 7.957z" />
<path d="M48.068 201.196l3.463-1.47 11.313 26.643-3.463 1.47z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M48.068 201.196l3.463-1.47 11.313 26.643-3.463 1.47z" />
<path fill="#F5F5F5" d="M53.783 204.42l8.022-3.405.765 1.802-8.022 3.404z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M53.783 204.42l8.022-3.405.765 1.802-8.022 3.404z" />
<path fill="#F5F5F5" d="M60.283 219.73l8.022-3.404.765 1.802-8.021 3.404z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M60.283 219.73l8.022-3.404.765 1.802-8.021 3.404z" />
<path d="M49.437 239.012l3.405 8.02-1.802.766-3.405-8.022z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M49.437 239.012l3.405 8.02-1.802.766-3.405-8.022z" />
<path d="M17.433 217.134l4.605-8.162 13.665 32.184-9.072-2.359z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M17.433 217.134l4.605-8.162 13.665 32.184-9.072-2.359z" />
<path d="M17.433 217.134l-5.653-3.81 13.666 32.185 1.185-6.712z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M17.433 217.134l-5.653-3.81 13.666 32.185 1.185-6.712z" />
<path d="M14.117 219.19l-5.772-1.165 4.074 9.596 3.171-4.96z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M14.117 219.19l-5.772-1.165 4.074 9.596 3.171-4.96z" />
<path d="M21.375 236.284l-5.772-1.165 4.074 9.595 3.171-4.96z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M21.375 236.284l-5.772-1.165 4.074 9.595 3.171-4.96z" />
<path fill="#F0F2F5" d="M52.498 201.393l2.41-1.023 3.3 7.77-2.41 1.024z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M52.498 201.393l2.41-1.023 3.3 7.77-2.41 1.024z" />
<path fill="#F0F2F5" d="M59.016 216.746l2.411-1.023 3.3 7.77-2.411 1.024z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M59.016 216.746l2.411-1.023 3.3 7.77-2.411 1.024z" />
<path d="M45.41 237.037l3.6-1.528 1.65 3.885-3.6 1.528z" />
<path stroke="#A3B1BF" stroke-width="1.62" fill="#F5F5F5" stroke-linejoin="round" d="M45.41 237.037l3.6-1.528 1.65 3.885-3.6 1.528z" />
<path d="M66.817 209.043c-6.095-14.354-5.144-28.946 1.659-35.517 1.125-1.086 3.702-2.908 5.748 1.91l21.773 51.281c1.864 4.389-.907 5.75-2.468 5.805-9.455.33-20.617-9.123-26.712-23.479z" fill="#F5F5F5" />
<path d="M66.817 209.043c-6.095-14.354-5.144-28.946 1.659-35.517 1.125-1.086 3.702-2.908 5.748 1.91l21.773 51.281c1.864 4.389-.907 5.75-2.468 5.805-9.455.33-20.617-9.123-26.712-23.479z" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" stroke-linejoin="round" />
<path fill="#F0F2F5" d="M61.153 199.48l2.41-1.022 8.552 20.139-2.411 1.023z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M61.153 199.48l2.41-1.022 8.552 20.139-2.411 1.023z" />
<path d="M100.73 197.68a2.863 2.863 0 1 1-2.237-5.272 2.863 2.863 0 0 1 2.237 5.272" fill="#A3B1BF" />
<path fill-opacity=".6" fill="#A3B1BF" d="M60.645 250.555l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M60.645 250.555l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M62.097 253.974l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M62.097 253.974l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M63.548 257.392l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M63.548 257.392l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M65 260.811l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M65 260.811l-.893-2.104 2.104-.892.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M57.49 251.894l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M57.49 251.894l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M58.94 255.313l-.893-2.104 2.104-.893.894 2.104z" />
<path d="M58.94 255.313l-.893-2.104 2.104-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M60.392 258.732l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M59.5 256.628l2.103-.893.893 2.104-2.104.893z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M61.844 262.15l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M61.844 262.15l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M54.333 253.233l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M54.333 253.233l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M55.785 256.652l-.894-2.104 2.104-.892.894 2.103z" />
<path d="M55.785 256.652l-.894-2.104 2.104-.892.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M57.236 260.07l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M57.236 260.07l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M58.688 263.49l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M58.688 263.49l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M51.177 254.573l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M51.177 254.573l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M52.629 257.991l-.894-2.103 2.104-.893.893 2.104z" />
<path d="M52.629 257.991l-.894-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M54.08 261.41l-.893-2.103 2.104-.893.893 2.103z" />
<path d="M54.08 261.41l-.893-2.103 2.104-.893.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M55.532 264.83l-.893-2.105 2.103-.892.894 2.103z" />
<path d="M55.532 264.83l-.893-2.105 2.103-.892.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M48.02 255.912l-.892-2.104 2.104-.893.893 2.104z" />
<path d="M48.02 255.912l-.892-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M49.472 259.33l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M49.472 259.33l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M50.924 262.75l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M50.924 262.75l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M52.376 266.168l-.894-2.103 2.104-.893.894 2.104z" />
<path d="M52.376 266.168l-.894-2.103 2.104-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M68.248 268.46l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M68.248 268.46l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M69.7 271.878l-.894-2.103 2.104-.893.893 2.104z" />
<path d="M69.7 271.878l-.894-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M71.15 275.297l-.892-2.103 2.103-.893.894 2.103z" />
<path d="M71.15 275.297l-.892-2.103 2.103-.893.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M72.602 278.716l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M72.602 278.716l-.893-2.104 2.104-.892.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M65.091 269.799l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M65.091 269.799l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M66.543 273.218l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M66.543 273.218l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M67.995 276.637l-.894-2.104 2.104-.893.894 2.104z" />
<path d="M67.995 276.637l-.894-2.104 2.104-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M69.446 280.055l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M69.446 280.055l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M61.935 271.138l-.893-2.103 2.104-.893.893 2.103z" />
<path d="M61.935 271.138l-.893-2.103 2.104-.893.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M63.387 274.557l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M63.387 274.557l-.893-2.104 2.104-.892.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M64.839 277.976l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M64.839 277.976l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M66.29 281.395l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M66.29 281.395l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M58.78 272.478l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M58.78 272.478l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M60.23 275.896l-.892-2.103 2.104-.893.893 2.104z" />
<path d="M60.23 275.896l-.892-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M61.682 279.315l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M61.682 279.315l-.893-2.104 2.104-.892.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M63.134 282.734l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M63.134 282.734l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M55.623 273.817l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M55.623 273.817l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M57.075 277.236l-.893-2.104 2.103-.893.894 2.104z" />
<path d="M57.075 277.236l-.893-2.104 2.103-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M58.526 280.654l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M58.526 280.654l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M59.978 284.073l-.893-2.103 2.104-.893.893 2.103z" />
<path d="M59.978 284.073l-.893-2.103 2.104-.893.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M75.85 286.365l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M75.85 286.365l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M77.302 289.783l-.894-2.103 2.104-.893.893 2.104z" />
<path d="M77.302 289.783l-.894-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M78.753 293.202l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M78.753 293.202l-.893-2.104 2.104-.892.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M80.205 296.621l-.893-2.104 2.103-.893.894 2.104z" />
<path d="M80.205 296.621l-.893-2.104 2.103-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M72.694 287.704L71.8 285.6l2.103-.893.894 2.104z" />
<path d="M72.694 287.704L71.8 285.6l2.103-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M74.145 291.123l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M74.145 291.123l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M75.597 294.541l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M75.597 294.541l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M77.049 297.96l-.894-2.103 2.104-.893.894 2.103z" />
<path d="M77.049 297.96l-.894-2.103 2.104-.893.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M69.538 289.043l-.894-2.104 2.104-.892.894 2.103z" />
<path d="M69.538 289.043l-.894-2.104 2.104-.892.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M70.99 292.462l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M70.99 292.462l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M72.44 295.88l-.892-2.103 2.104-.893.893 2.104z" />
<path d="M72.44 295.88l-.892-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M73.893 299.3l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M73.893 299.3l-.894-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M66.382 290.382l-.894-2.103 2.104-.893.893 2.104z" />
<path d="M66.382 290.382l-.894-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M67.833 293.801l-.893-2.103 2.104-.893.893 2.103z" />
<path d="M67.833 293.801l-.893-2.103 2.104-.893.893 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M69.285 297.22l-.893-2.104 2.103-.892.894 2.103z" />
<path d="M69.285 297.22l-.893-2.104 2.103-.892.894 2.103z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M70.736 300.639l-.893-2.104 2.104-.893.893 2.104z" />
<path d="M70.736 300.639l-.893-2.104 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M63.226 291.722l-.894-2.104 2.104-.893.893 2.104z" />
<path d="M62.332 289.618l2.104-.893.893 2.104-2.103.893z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M64.677 295.14l-.893-2.103 2.104-.893.893 2.104z" />
<path d="M64.677 295.14l-.893-2.103 2.104-.893.893 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M66.129 298.56l-.893-2.104 2.103-.893.894 2.104z" />
<path d="M66.129 298.56l-.893-2.104 2.103-.893.894 2.104z" />
<path fill-opacity=".6" fill="#A3B1BF" d="M67.58 301.978l-.893-2.104 2.104-.892.893 2.103z" />
<path d="M67.58 301.978l-.893-2.104 2.104-.892.893 2.103zM20.241 196.26l18.752-7.957-23.674-55.758-18.752 7.958z" />
<path d="M33.004 200.31l-3.406-8.02-1.802.764 3.406 8.021z" />
<path stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" d="M33.004 200.31l-3.406-8.02-1.802.764 3.406 8.021z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M31.628 204.578l3.6-1.528-1.649-3.885-3.6 1.528z" />
<path stroke="#A3B1BF" stroke-width="1.62" fill="#FFF" stroke-linejoin="round" d="M31.628 204.578l3.6-1.528-1.649-3.885-3.6 1.528z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M32.485 184.231l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M32.485 184.231l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M31.033 180.813l.893 2.103 2.104-.893-.893-2.103z" />
<path d="M31.033 180.813l.893 2.103 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M29.581 177.394l.894 2.103 2.104-.892-.894-2.104z" />
<path d="M29.581 177.394l.894 2.103 2.104-.892-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M28.13 173.975l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M28.13 173.975l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M29.329 185.57l.893 2.104 2.104-.892-.893-2.104z" />
<path d="M29.329 185.57l.893 2.104 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M27.877 182.152l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M27.877 182.152l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M26.425 178.733l.894 2.104 2.104-.893-.894-2.104z" />
<path d="M26.425 178.733l.894 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M24.974 175.314l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M24.974 175.314l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M26.173 186.91l.893 2.104 2.104-.893-.894-2.104z" />
<path d="M26.173 186.91l.893 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M24.72 183.491l.894 2.104 2.104-.893-.893-2.104z" />
<path d="M24.72 183.491l.894 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M23.27 180.072l.893 2.104 2.103-.893-.893-2.103z" />
<path d="M23.27 180.072l.893 2.104 2.103-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M21.818 176.654l.893 2.103 2.104-.893-.893-2.103z" />
<path d="M21.818 176.654l.893 2.103 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M23.016 188.25l.894 2.103 2.104-.893-.894-2.104z" />
<path d="M23.016 188.25l.894 2.103 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M21.565 184.83l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M21.565 184.83l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M20.113 181.412l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M20.113 181.412l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M18.662 177.993l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M18.662 177.993l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M19.86 189.589l.894 2.103 2.103-.893-.893-2.103z" />
<path d="M19.86 189.589l.894 2.103 2.103-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M18.409 186.17l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M18.409 186.17l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M16.957 182.75l.893 2.105 2.104-.893-.893-2.104z" />
<path d="M16.957 182.75l.893 2.105 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M15.505 179.332l.894 2.104 2.104-.893-.894-2.104z" />
<path d="M15.505 179.332l.894 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M24.882 166.326l.894 2.104 2.103-.893-.893-2.103z" />
<path d="M24.882 166.326l.894 2.104 2.103-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M23.43 162.908l.894 2.103 2.104-.892-.893-2.104z" />
<path d="M23.43 162.908l.894 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M21.98 159.489l.892 2.104 2.104-.893-.893-2.104z" />
<path d="M21.98 159.489l.892 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M20.528 156.07l.893 2.104 2.104-.893-.894-2.104z" />
<path d="M20.528 156.07l.893 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M21.726 167.666l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M21.726 167.666l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M20.275 164.247l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M20.275 164.247l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M18.823 160.828l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M18.823 160.828l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M17.371 157.41l.894 2.103 2.104-.893-.894-2.103z" />
<path d="M17.371 157.41l.894 2.103 2.104-.893-.894-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M18.57 169.005l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M18.57 169.005l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M17.119 165.586l.893 2.104 2.104-.893-.894-2.104z" />
<path d="M17.119 165.586l.893 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M15.667 162.167l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M15.667 162.167l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M14.215 158.749l.894 2.103 2.103-.892-.893-2.104z" />
<path d="M14.215 158.749l.894 2.103 2.103-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M15.414 170.344l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M15.414 170.344l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M13.963 166.926l.893 2.103 2.104-.893-.894-2.103z" />
<path d="M13.963 166.926l.893 2.103 2.104-.893-.894-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M12.51 163.507l.894 2.103 2.104-.892-.893-2.104z" />
<path d="M12.51 163.507l.894 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M11.06 160.088l.892 2.104 2.104-.893-.893-2.104z" />
<path d="M11.06 160.088l.892 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M12.258 171.684l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M12.258 171.684l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M10.806 168.265l.894 2.104 2.104-.893-.894-2.104z" />
<path d="M10.806 168.265l.894 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M9.355 164.846l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M9.355 164.846l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M7.903 161.427l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M7.903 161.427l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M17.28 148.422l.893 2.103 2.104-.893-.893-2.103z" />
<path d="M17.28 148.422l.893 2.103 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M15.828 145.003l.894 2.103 2.104-.892-.894-2.104z" />
<path d="M15.828 145.003l.894 2.103 2.104-.892-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M14.377 141.584l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M14.377 141.584l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M12.925 138.165l.893 2.104 2.104-.893-.893-2.104z" />
<path fill="#B2BECA" d="M13.818 140.269l2.104-.893-.893-2.104-2.104.893z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M14.124 149.76l.893 2.105 2.104-.893-.893-2.104z" />
<path d="M14.124 149.76l.893 2.105 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M12.672 146.342l.894 2.104 2.103-.893-.893-2.104z" />
<path d="M12.672 146.342l.894 2.104 2.103-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M11.22 142.923l.894 2.104 2.104-.893-.893-2.104z" />
<path d="M11.22 142.923l.894 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M9.77 139.504l.892 2.104 2.104-.893-.893-2.103z" />
<path d="M9.77 139.504l.892 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M10.968 151.1l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M10.968 151.1l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M9.516 147.681l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M9.516 147.681l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M8.065 144.262l.893 2.104 2.104-.893-.893-2.103z" />
<path d="M8.065 144.262l.893 2.104 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M6.613 140.844l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M6.613 140.844l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M7.812 152.44l.893 2.103 2.104-.893-.893-2.103z" />
<path d="M7.812 152.44l.893 2.103 2.104-.893-.893-2.103z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M6.36 149.02l.893 2.104 2.104-.892-.893-2.104z" />
<path d="M6.36 149.02l.893 2.104 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M4.909 145.602l.893 2.104 2.104-.893-.894-2.104z" />
<path d="M4.909 145.602l.893 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M3.457 142.183l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M3.457 142.183l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M4.656 153.779l.893 2.103 2.104-.892-.893-2.104z" />
<path d="M4.656 153.779l.893 2.103 2.104-.892-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M3.204 150.36l.893 2.104 2.104-.893-.893-2.104z" />
<path d="M3.204 150.36l.893 2.104 2.104-.893-.893-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M1.752 146.941l.894 2.104 2.104-.893-.894-2.104z" />
<path d="M1.752 146.941l.894 2.104 2.104-.893-.894-2.104z" />
<path fill-opacity=".8" fill="#A3B1BF" d="M.3 143.522l.894 2.104 2.104-.893-.893-2.104z" />
<path d="M.3 143.522l.894 2.104 2.104-.893-.893-2.104z" />
<path d="M108.976 190.44c-1.626-3.83-2.29-7.213-1.482-7.556.808-.343 2.781 2.484 4.408 6.314 1.625 3.83 2.29 7.213 1.481 7.555-.808.343-2.78-2.484-4.407-6.313z" fill="#F5F5F5" />
<path d="M108.976 190.44c-1.626-3.83-2.29-7.213-1.482-7.556.808-.343 2.781 2.484 4.408 6.314 1.625 3.83 2.29 7.213 1.481 7.555-.808.343-2.78-2.484-4.407-6.313z" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" />
<path d="M115.406 187.71c-3.249-7.652-4.575-14.41-2.96-15.096 1.614-.685 5.556 4.964 8.805 12.616 3.25 7.653 4.576 14.412 2.961 15.097-1.614.685-5.556-4.963-8.806-12.617z" fill="#F5F5F5" />
<path d="M115.406 187.71c-3.249-7.652-4.575-14.41-2.96-15.096 1.614-.685 5.556 4.964 8.805 12.616 3.25 7.653 4.576 14.412 2.961 15.097-1.614.685-5.556-4.963-8.806-12.617z" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" />
<path d="M125.79 183.305c-4.355-10.256-6.132-19.314-3.968-20.232 2.163-.918 7.446 6.652 11.8 16.908 4.355 10.255 6.132 19.313 3.969 20.231-2.164.918-7.447-6.652-11.802-16.907z" fill-opacity=".35" fill="#F5F5F5" />
<path d="M125.79 183.305c-4.355-10.256-6.132-19.314-3.968-20.232 2.163-.918 7.446 6.652 11.8 16.908 4.355 10.255 6.132 19.313 3.969 20.231-2.164.918-7.447-6.652-11.802-16.907z" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" />
<path d="M44.715 90.559c-2.536-1.139-4.219-2.494-3.935-3.273.283-.779 2.439-.736 5.11.02 1.131-2.535 2.462-4.223 3.214-3.95.751.274.686 2.422-.077 5.092 2.532 1.138 4.21 2.49 3.927 3.269-.284.78-2.443.736-5.119-.023-1.12 2.473-2.422 4.106-3.162 3.836-.741-.27-.688-2.357.042-4.971z" fill-opacity=".4" fill="#A3B1BF" opacity=".85" />
<path d="M98.776 330.14l-.351.386a2.43 2.43 0 0 1-4.19-1.201l-.092-.512-.474-.214a2.43 2.43 0 0 1-.152-4.356l.458-.246.057-.518a2.43 2.43 0 0 1 4.095-1.49l.377.36.51-.106a2.43 2.43 0 0 1 2.682 3.434l-.225.469.258.451a2.43 2.43 0 0 1-2.437 3.614l-.516-.07zM412.965 121.001a1.523 1.523 0 0 1-2.291-1.487 1.523 1.523 0 0 1 .707-2.639 1.523 1.523 0 0 1 2.728-.143 1.523 1.523 0 0 1 .98 2.55 1.523 1.523 0 0 1-2.123 1.72zM78.26 39.51l-.833.127a2.43 2.43 0 0 1-2.5-3.57l.405-.738-.378-.752a2.43 2.43 0 0 1 2.623-3.48l.827.156.599-.593a2.43 2.43 0 0 1 4.12 1.419l.107.836.748.386a2.43 2.43 0 0 1-.076 4.357l-.76.36-.136.83a2.43 2.43 0 0 1-4.168 1.275l-.578-.614zM376.631 306.744l-.533-.135a2.43 2.43 0 0 1-.906-4.263l.431-.34-.035-.548a2.43 2.43 0 0 1 3.774-2.179l.456.305.511-.204a2.43 2.43 0 0 1 3.239 2.916l-.15.53.352.422a2.43 2.43 0 0 1-1.773 3.981l-.548.022-.293.464a2.43 2.43 0 0 1-4.334-.455l-.19-.516zM420.263 147.294a1.523 1.523 0 0 1-2.496-1.11 1.523 1.523 0 0 1 .285-2.717 1.523 1.523 0 0 1 2.673-.568 1.523 1.523 0 0 1 1.366 2.365 1.523 1.523 0 0 1-1.828 2.03z" fill-opacity=".4" fill="#A3B1BF" />
<path d="M224.622 221.613c32.537 0 58.914-26.37 58.914-58.902 0-32.53-26.377-58.901-58.914-58.901-32.538 0-58.914 26.37-58.914 58.901 0 32.531 26.376 58.902 58.914 58.902z" fill-opacity=".66" fill="#A3B1BF" />
<path d="M225.346 142.06c-4.2 0-7.465 1.282-9.798 3.847-2.333 2.448-3.44 5.712-3.44 9.792h4.606c0-2.856.642-5.07 1.925-6.703 1.4-1.923 3.557-2.856 6.473-2.856 2.45 0 4.374.641 5.716 2.04 1.283 1.282 1.983 3.09 1.983 5.42 0 1.633-.584 3.148-1.75 4.605-.35.466-1.05 1.166-1.983 2.098-3.15 2.798-5.074 5.013-5.89 6.762-.7 1.457-1.05 3.147-1.05 5.07v1.341h4.666v-1.34c0-1.574.35-2.973 1.108-4.255.583-1.05 1.458-2.099 2.74-3.206 2.567-2.273 4.142-3.789 4.725-4.488 1.458-1.924 2.216-4.197 2.216-6.82 0-3.497-1.108-6.236-3.266-8.218-2.275-2.098-5.249-3.089-8.981-3.089zm-.875 35.496c-.992 0-1.808.291-2.508.99-.7.642-.991 1.458-.991 2.449 0 .99.291 1.807.991 2.506.7.641 1.516.991 2.508.991.991 0 1.808-.35 2.508-.99.7-.642 1.05-1.458 1.05-2.507 0-.99-.35-1.807-.992-2.448-.7-.7-1.575-.99-2.566-.99z" fill="#FFF" />
<path d="M203.262 134.14c5.815-3.357 16.37-7.312 13.012-13.126-3.358-5.815-15.708-4.97-21.524-1.613-5.815 3.357-12.02 13.223-8.662 19.037 3.357 5.815 11.358-.941 17.174-4.298M229.679 120.82a4.863 4.863 0 1 0 .001-9.726 4.863 4.863 0 0 0-.001 9.727z" fill="#FAFAFA" />
<path d="M401.5 322.5l1.5 1.5" stroke="#979797" stroke-linecap="square" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 30 KiB

191
src/assets/ic-500.svg

@ -1,191 +0,0 @@
<svg width="422" height="193" viewBox="0 0 422 193" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path fill-opacity=".25" fill="#A3B1BF" opacity=".9" d="M218.562 13.895v114.572h109.58V13.895z" />
<path stroke="#A3B1BF" stroke-width="1.62" d="M218.562 13.895v114.572h109.58V13.895z" />
<path d="M322.202 12.485c0-4.562 3.747-8.295 8.327-8.295h12.539c4.58 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.326 8.295h-12.54c-4.58 0-8.326-3.733-8.326-8.295V12.485z" fill="#F0F2F5" />
<path d="M322.202 12.485c0-4.562 3.747-8.295 8.327-8.295h12.539c4.58 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.326 8.295h-12.54c-4.58 0-8.326-3.733-8.326-8.295V12.485z" stroke="#A3B1BF" stroke-width="1.62" />
<path d="M343.897 15.047a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49l26.491-16.73 13.386-7.278" />
<path d="M343.957 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M343.957 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M343.957 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M343.957 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M343.957 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M343.957 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M343.957 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M343.957 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M343.957 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M343.957 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.827 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M343.957 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.827 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M327.904 13.589c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49a1.494 1.494 0 0 1-1.496-1.49z" fill="#FFF" />
<path d="M329.4 15.08a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M329.4 24.004a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M329.4 24.004a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M329.4 32.927a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M329.4 32.927a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M329.4 41.851a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M329.4 41.851a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M329.4 50.775a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M329.4 50.775a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M329.4 59.698a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M329.4 59.698a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M335.182 17.645c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491a1.494 1.494 0 0 1-1.497-1.49z" fill="#FFF" />
<path d="M336.679 19.136a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M336.679 28.06a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M336.679 28.06a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M336.679 36.984a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M336.679 36.984a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M336.679 45.907a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M336.679 45.907a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M336.679 54.83a1.494 1.494 0 0 1-1.497-1.49c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M336.679 54.83a1.494 1.494 0 0 1-1.497-1.49c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M336.679 63.755a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M336.679 63.755a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M332.747 122.705c0-2.39 1.944-4.326 4.342-4.326 2.399 0 4.343 1.937 4.343 4.326 0 2.388-1.944 4.325-4.343 4.325-2.398 0-4.342-1.937-4.342-4.325z" fill="#A3B1BF" />
<path d="M308.374 114.052a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#F5F5F5" />
<path d="M308.374 114.052a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M294.626 114.052a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#F5F5F5" />
<path d="M294.626 114.052a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M308.374 31.305a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#F5F5F5" />
<path d="M308.374 31.305a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M294.626 31.305a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#F5F5F5" />
<path d="M294.626 31.305a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M251.844 12.485c0-4.562 3.747-8.295 8.327-8.295h12.54c4.579 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.327 8.295h-12.539c-4.58 0-8.327-3.733-8.327-8.295V12.485z" fill="#F0F2F5" />
<path d="M251.844 12.485c0-4.562 3.747-8.295 8.327-8.295h12.54c4.579 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.327 8.295h-12.539c-4.58 0-8.327-3.733-8.327-8.295V12.485z" stroke="#A3B1BF" stroke-width="1.62" />
<path d="M273.6 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" fill="#FFF" />
<path d="M273.6 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M273.6 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49" fill="#FFF" />
<path d="M273.6 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M273.6 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491" fill="#FFF" />
<path d="M273.6 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M273.6 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491" fill="#FFF" />
<path d="M273.6 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M273.6 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" fill="#FFF" />
<path d="M273.6 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M272.103 58.207c0-.824.67-1.491 1.497-1.491.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491a1.494 1.494 0 0 1-1.497-1.49z" fill="#FFF" />
<path d="M273.6 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M259.043 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M259.043 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M259.043 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M259.043 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M259.043 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M259.043 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M259.043 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.497.667 1.497 1.491 0 .824-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 19.136a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M266.321 19.136a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 28.06a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M266.321 28.06a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 36.984a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M266.321 36.984a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 45.907a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" fill="#FFF" />
<path d="M266.321 45.907a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 54.83a1.494 1.494 0 0 1-1.496-1.49c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M266.321 54.83a1.494 1.494 0 0 1-1.496-1.49c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M266.321 63.755a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" fill="#FFF" />
<path d="M266.321 63.755a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M261.58 122.705c0-2.39 1.945-4.326 4.343-4.326 2.398 0 4.343 1.937 4.343 4.326 0 2.388-1.945 4.325-4.343 4.325-2.398 0-4.342-1.937-4.342-4.325z" fill="#A3B1BF" />
<path d="M216.261 12.485c0-4.562 3.747-8.295 8.327-8.295h12.54c4.579 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.327 8.295h-12.539c-4.58 0-8.327-3.733-8.327-8.295V12.485z" fill="#F0F2F5" />
<path d="M216.261 12.485c0-4.562 3.747-8.295 8.327-8.295h12.54c4.579 0 8.326 3.733 8.326 8.295v117.488c0 4.562-3.747 8.295-8.327 8.295h-12.539c-4.58 0-8.327-3.733-8.327-8.295V12.485z" stroke="#A3B1BF" stroke-width="1.62" />
<path d="M238.017 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M238.017 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M238.017 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M238.017 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M238.017 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491" />
<path d="M238.017 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M238.017 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491" />
<path d="M238.017 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M238.017 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M238.017 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke-opacity=".85" stroke="#A3B1BF" stroke-width=".81" />
<path d="M238.017 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491" />
<path d="M238.017 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M224.269 15.08a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M224.269 24.004a1.494 1.494 0 0 1-1.497-1.491c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491" />
<path d="M224.269 32.927a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492s-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491" />
<path d="M224.269 41.851a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.493 1.497-1.493.826 0 1.496.668 1.496 1.492 0 .823-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49" />
<path d="M224.269 50.775a1.494 1.494 0 0 1-1.497-1.491c0-.824.67-1.492 1.497-1.492.826 0 1.496.668 1.496 1.492 0 .823-.67 1.49-1.496 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M224.269 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491" />
<path d="M224.269 59.698a1.494 1.494 0 0 1-1.497-1.49c0-.825.67-1.492 1.497-1.492.826 0 1.496.667 1.496 1.491 0 .824-.67 1.491-1.496 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 19.136a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491" />
<path d="M230.738 19.136a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492 0 .823-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 28.06a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" />
<path d="M230.738 28.06a1.494 1.494 0 0 1-1.496-1.491c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 36.984a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" />
<path d="M230.738 36.984a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 45.907a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491" />
<path d="M230.738 45.907a1.494 1.494 0 0 1-1.496-1.49c0-.825.67-1.493 1.496-1.493.827 0 1.497.668 1.497 1.492s-.67 1.491-1.497 1.491z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 54.83a1.494 1.494 0 0 1-1.496-1.49c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49" />
<path d="M230.738 54.83a1.494 1.494 0 0 1-1.496-1.49c0-.824.67-1.492 1.496-1.492.827 0 1.497.668 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M230.738 63.755a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49" />
<path d="M230.738 63.755a1.494 1.494 0 0 1-1.496-1.491c0-.825.67-1.492 1.496-1.492.827 0 1.497.667 1.497 1.492 0 .823-.67 1.49-1.497 1.49z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M231.149 127.03c-2.398 0-4.342-1.937-4.342-4.325 0-2.39 1.944-4.326 4.342-4.326 2.398 0 4.342 1.937 4.342 4.326 0 2.388-1.944 4.325-4.342 4.325v-6.665" fill="#A3B1BF" />
<path d="M153.138 11.025l11.888-3.975c4.342-1.452 9.086.9 10.544 5.224a17757910638.196 17757910638.196 0 0 0 37.532 111.381c1.458 4.326-.902 9.051-5.243 10.503l-11.888 3.975c-4.342 1.451-9.086-.899-10.544-5.225l-37.532-111.38c-1.458-4.325.902-9.051 5.243-10.503z" stroke="#A3B1BF" stroke-width="1.62" />
<path d="M171.093 27.043a1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887 1.498 1.498 0 0 1-1.896-.939z" />
<path d="M171.093 27.043a1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887 1.498 1.498 0 0 1-1.896-.939z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M175.415 36.906a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.939 1.49 1.49 0 0 1-.943 1.888" />
<path d="M173.52 35.967a1.489 1.489 0 0 1 .942-1.888 1.498 1.498 0 0 1 1.896.939 1.49 1.49 0 0 1-.943 1.888 1.498 1.498 0 0 1-1.896-.94z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M178.65 45.018a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M176.754 44.08a1.489 1.489 0 0 1 .943-1.889 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887 1.498 1.498 0 0 1-1.896-.939z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M181.076 53.942a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M181.076 53.942a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M184.31 62.055a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.888" />
<path d="M184.31 62.055a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.888z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M186.737 70.978a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M186.737 70.978a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M169.754 32.85a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.888" />
<path d="M157.069 31.91a1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.888 1.498 1.498 0 0 1-1.895-.94z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M172.18 40.962a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .944-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M161.39 40.962a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M175.415 49.886a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.939 1.49 1.49 0 0 1-.943 1.888" />
<path d="M164.625 49.886a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.939 1.49 1.49 0 0 1-.943 1.888z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M167.328 57.998a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M167.328 57.998a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M170.562 66.922a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M170.562 66.922a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M173.797 75.035a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.888" />
<path d="M173.797 75.035a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.888z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M167.328 34.472a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M167.328 34.472a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M170.562 43.396a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.939 1.49 1.49 0 0 1-.943 1.888" />
<path d="M170.562 43.396a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.939 1.49 1.49 0 0 1-.943 1.888z" stroke-opacity=".85" stroke="#A3B1BF" stroke-width=".81" />
<path d="M172.989 51.508a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M172.989 51.508a1.498 1.498 0 0 1-1.896-.939 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M176.223 60.432a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M176.223 60.432a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M178.65 68.545a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.888" />
<path d="M178.65 68.545a1.498 1.498 0 0 1-1.896-.94 1.489 1.489 0 0 1 .943-1.888 1.498 1.498 0 0 1 1.896.94 1.49 1.49 0 0 1-.943 1.888z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M181.884 77.468a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887" />
<path d="M181.884 77.468a1.498 1.498 0 0 1-1.895-.94 1.489 1.489 0 0 1 .943-1.887 1.498 1.498 0 0 1 1.895.94 1.49 1.49 0 0 1-.943 1.887z" stroke="#A3B1BF" stroke-width=".81" />
<path d="M198.567 126.807a4.347 4.347 0 0 1-5.5-2.725 4.32 4.32 0 0 1 2.736-5.477 4.346 4.346 0 0 1 5.499 2.724 4.322 4.322 0 0 1-2.735 5.478" fill="#A3B1BF" />
<path stroke="#A3B1BF" stroke-width=".81" d="M193.655 2.255l2.626-1.51 2.626 1.51v3.02l-2.626 1.51-2.626-1.51z" />
<path d="M263.204 183.163l2.626-1.51 2.626 1.51v3.02l-2.626 1.51-2.626-1.51z" />
<path stroke="#A3B1BF" stroke-width=".81" d="M263.204 183.163l2.626-1.51 2.626 1.51v3.02l-2.626 1.51-2.626-1.51zM201.942 33.194l2.626 1.51v3.021l-2.626 1.51-2.626-1.51v-3.02zM205.177 23.46l2.626 1.51v3.02l-2.626 1.51-2.626-1.51v-3.02z" />
<path d="M30.71 140.675H410.8" stroke="#A3B1BF" stroke-width="2.43" />
<path d="M128.737 148.382h281.659s-60.248 47.052-134.245 44.212c-73.996-2.839-98.258-15.008-116.858-21.916-18.6-6.909-55.37-9.722-80.881-4.043-25.511 5.678-48.107-18.253-48.107-18.253h98.432z" fill-opacity=".25" fill="#A3B1BF" />
<g transform="translate(2 66.851)">
<ellipse stroke="#A3B1BF" stroke-width="2.43" fill-opacity=".25" fill="#A3B1BF" cx="35.583" cy="35.695" rx="35.583" ry="35.695" />
<ellipse fill="#F0F2F5" cx="35.853" cy="35.965" rx="30.461" ry="30.557" />
</g>
<path d="M41.627 98.896l38.817 11.357M67.91 131.751l-33.157-25.149" stroke="#A3B1BF" stroke-width=".81" />
<g fill="#A3B1BF">
<path d="M70.31 119.831c-1.096 3.183.447 6.611 3.44 7.642 2.993 1.03 6.32-.721 7.416-3.904s-.448-6.61-3.44-7.641c-2.994-1.03-6.32.72-7.416 3.903m-2.422-.834c1.585-4.602 6.396-7.135 10.724-5.645 4.329 1.49 6.56 6.449 4.976 11.05-1.585 4.604-6.396 7.136-10.725 5.646-4.328-1.49-6.56-6.448-4.975-11.05l12.93 5.459" fill-opacity=".4" />
<path d="M65.796 118.038c-1.93 5.602.787 11.636 6.056 13.45 5.268 1.815 11.124-1.268 13.053-6.87 1.93-5.603-.787-11.637-6.056-13.451-5.268-1.814-11.124 1.268-13.053 6.87m-2.422-.833c2.418-7.023 9.758-10.887 16.362-8.613 6.604 2.274 10.01 9.838 7.592 16.86-2.419 7.024-9.76 10.887-16.363 8.613-6.604-2.273-10.01-9.837-7.591-16.86M33.648 100.545c-.872 2.53.293 5.235 2.597 6.028 2.303.793 4.886-.62 5.758-3.151.871-2.53-.294-5.235-2.598-6.028-2.303-.793-4.886.62-5.757 3.15m-1.06-.364c1.093-3.172 4.33-4.944 7.218-3.95 2.887.995 4.348 4.384 3.256 7.556-1.092 3.173-4.33 4.944-7.218 3.95-2.887-.994-4.348-4.384-3.255-7.556" />
<path d="M40.45 102.82l40.58-25.097 47.72 11.062-55.428 28.205.495 1.142L40.45 102.82zm-4.505 1.928l37.263 17.098c.812.289 1.543.052 2.004-.498l1.153 2.656 55.493-28.238 1.764 40.685c.046 1.059.702 1.913 1.597 2.22.294.102.614.144.948.116 1.344-.118 2.384-1.354 2.323-2.76l-2.803-64.639 3.695 1.273-2.395 6.957c-.272.79.11 1.638.853 1.894l13.86 4.773c.364.125.768.088 1.117-.103l9.903-5.416a4.23 4.23 0 0 1 .486 2.775c-.336 2.046-2.286 5.3-9.671 9.188a1.581 1.581 0 0 0-.697 2.024c.166.37.463.629.807.747.344.119.737.098 1.096-.092 6.875-3.619 10.677-7.5 11.3-11.538.576-3.723-1.807-6.042-1.909-6.139a1.364 1.364 0 0 0-1.61-.197l-10.406 5.692-11.945-4.113 1.903-5.526 1.704.587c1.264.435 2.663-.301 3.125-1.645.463-1.343-.186-2.785-1.45-3.22l-11.528-3.97c-.766-.263-1.62-.102-2.278.43a2.71 2.71 0 0 0-.993 2.216l.767 17.692L83.325 74.53 85.42 62.11c.074-.995-.633-1.835-1.582-1.874-.947-.04-1.774.736-1.847 1.732l-2.09 12.333-44.048 27.242a1.905 1.905 0 0 0-.888 1.669c.019.676.397 1.268.98 1.536z" />
</g>
<path d="M122.093 124.044s-2.83 0-2.83 1.217 10.917 10.14 10.917 10.14l-8.087-11.357zM148.376 124.044s2.83 0 2.83 1.217-10.917 10.14-10.917 10.14l8.087-11.357zM116.922 128.687s-2.624 1.06-2.168 2.189c.455 1.128 13.92 5.312 13.92 5.312l-11.752-7.5zM152.029 129.517s2.624 1.063 2.17 2.191c-.455 1.129-13.91 5.3-13.91 5.3l11.74-7.491z" fill="#A3B1BF" />
<path d="M76.4 50.627c-1.426-.358-6.03-1.67-6.469.81-.356 2.015 2.58 8.016 5.661 8.924 6.874 2.029 14.557-.81 21.43 1.217 6.875 2.028 6.478-1.615 5.258-2.839-2.427-2.434-22.644-7.301-25.88-8.112z" stroke="#A3B1BF" stroke-width="2.43" />
<g transform="translate(348.684 67.257)">
<ellipse stroke="#A3B1BF" stroke-width="2.43" fill="#DCE1E7" cx="35.583" cy="35.695" rx="35.583" ry="35.695" />
<ellipse fill="#F0F2F5" cx="35.853" cy="35.965" rx="30.461" ry="30.557" />
</g>
<path d="M366.901 84.293c-1.334.748-2.97 2.594-4.488 6.146-4.852 11.358-3.639 21.498-3.639 21.498s1.617-19.47 8.087-23.12M402.135 122.483c1.334-.748 2.97-2.594 4.487-6.146 4.853-11.357 3.64-21.498 3.64-21.498s-1.618 19.47-8.087 23.12" fill="#A3B1BF" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 32 KiB

24
src/assets/logo.svg

@ -1,24 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="280" height="280" viewBox="-18.75 0 280 280">
<defs xmlns="http://www.w3.org/2000/svg">
<linearGradient x1="60%" y1="0%" x2="50%" y2="120%" id="linearGradient-1">
<stop stop-color="#29CDFF" offset="0%"/>
<stop stop-color="#148EFF" offset="60%"/>
<stop stop-color="#0A60FF" offset="100%"/>
</linearGradient>
<linearGradient x1="20%" y1="0%" x2="100%" y2="80%" id="linearGradient-2">
<stop stop-color="#4285EB" offset="0%"/>
<stop stop-color="#2EC7FF" offset="100%"/>
</linearGradient>
<linearGradient x1="120%" y1="60%" x2="20%" y2="40%" id="linearGradient-3">
<stop stop-color="#FA816E" offset="0%"/>
<stop stop-color="#F74A5C" offset="60%"/>
<stop stop-color="#F51D2C" offset="100%"/>
</linearGradient>
</defs>
<path d="M173.2050808 170 L121.2435565 200 L69.2820323 170 L69.2820323 110 L121.2435565 80 L155.8845727 100 L103.9230485 130 L103.9230485 150 L121.2435565 160 L173.2050808 130 Z"
fill="url(#linearGradient-3)"/>
<path d="M121.2435565 0 L242.4871131 70 L242.4871131 130 L173.2050808 170 L173.2050808 130 L207.8460969 110 L207.8460969 90 L121.2435565 40 Z"
fill="url(#linearGradient-2)"/>
<path d="M242.4871131 210 L121.2435565 280 L0 210 L0 70 L121.2435565 0 L181.8653348 35 Q 155.5544457 23.5 121.2435565 40 L34.64101615 90 L34.64101615 190 L121.2435565 240 L242.4871131 170 Z"
fill="url(#linearGradient-1)"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

21
src/components/RedirectLayout/index.js

@ -1,21 +0,0 @@
/** 用于刷新的路由组件 */
import { setRouteReload } from '@/utils/page-tab-util';
export default {
name: 'RedirectLayout',
created() {
const { params, query } = this.$route;
const from = Array.isArray(params.path)
? params.path.join('/')
: params.path;
const path = '/' + from;
setTimeout(() => {
setRouteReload(null).then(() => {
this.$router.replace({ path, query });
});
}, 100);
},
render(h) {
return h('div');
}
};

128
src/components/RegionsSelect/index.vue

@ -1,128 +0,0 @@
<!-- 省市区选择组件 -->
<template>
<el-cascader
clearable
:value="value"
:options="regionsData"
:placeholder="placeholder"
popper-class="ele-pop-wrap-higher"
:props="props"
@input="updateValue"
/>
</template>
<script>
import { getRegionsData } from './load-data';
export default {
name: 'RegionsSelect',
props: {
value: Array,
placeholder: String,
options: Array,
valueField: {
type: String,
validator: (val) => {
return !val || val === 'label';
}
},
type: {
type: String,
validator: (type) => {
return !type || ['provinceCity', 'province'].includes(type);
}
},
props: Object
},
data() {
return {
//
regionsData: []
};
},
methods: {
// value
updateValue(value) {
this.$emit('input', value);
},
// value
formatData(data) {
if (this.valueField === 'label') {
return data.map((d) => {
const item = {
label: d.label,
value: d.label
};
if (d.children) {
item.children = d.children.map((c) => {
const cItem = {
label: c.label,
value: c.label
};
if (c.children) {
cItem.children = c.children.map((cc) => {
return {
label: cc.label,
value: cc.label
};
});
}
return cItem;
});
}
return item;
});
} else {
return data;
}
},
//
filterData(data) {
if (this.type === 'provinceCity') {
return this.formatData(
data.map((d) => {
const item = {
label: d.label,
value: d.value
};
if (d.children) {
item.children = d.children.map((c) => {
return {
label: c.label,
value: c.value
};
});
}
return item;
})
);
} else if (this.type === 'province') {
return this.formatData(
data.map((d) => {
return {
label: d.label,
value: d.value
};
})
);
} else {
return this.formatData(data);
}
}
},
watch: {
options: {
handler(options) {
this.regionsData = this.filterData(options ?? []);
if (!options) {
getRegionsData().then((data) => {
this.regionsData = this.filterData(data ?? []);
this.$emit('load-data-done', data);
});
}
},
immediate: true
}
}
};
</script>

24
src/components/RegionsSelect/load-data.js

@ -1,24 +0,0 @@
import request from '@/utils/request';
const BASE_URL = process.env.BASE_URL;
let reqPromise;
/**
* 获取省市区数据
*/
export function getRegionsData() {
if (!reqPromise) {
reqPromise = new Promise((resolve, reject) => {
request
.get(BASE_URL + 'json/regions-data.json', {
baseURL: ''
})
.then((res) => {
resolve(res.data ?? []);
})
.catch((e) => {
reject(e);
});
});
}
return reqPromise;
}

17
src/components/RouterLayout/index.vue

@ -1,17 +0,0 @@
<!-- router-view 结合 keep-alive 组件 -->
<template>
<keep-alive :include="include">
<router-view />
</keep-alive>
</template>
<script>
export default {
name: 'RouterLayout',
computed: {
include() {
return this.$store.getters['theme/keepAliveInclude'] ?? [];
}
}
};
</script>

265
src/components/TinymceEditor/index.vue

@ -1,265 +0,0 @@
<!-- tinymce富文本编辑器组件 -->
<template>
<editor
:init="config"
:value="value"
:disabled="disabled"
@input="updateValue"
/>
</template>
<script>
const BASE_URL = process.env.BASE_URL;
import Editor from '@tinymce/tinymce-vue';
import tinymce from 'tinymce/tinymce';
import 'tinymce/icons/default';
import 'tinymce/themes/silver';
import 'tinymce/plugins/code';
import 'tinymce/plugins/print';
import 'tinymce/plugins/preview';
import 'tinymce/plugins/fullscreen';
import 'tinymce/plugins/paste';
import 'tinymce/plugins/searchreplace';
import 'tinymce/plugins/save';
import 'tinymce/plugins/autosave';
import 'tinymce/plugins/link';
import 'tinymce/plugins/autolink';
import 'tinymce/plugins/image';
//import 'tinymce/plugins/imagetools';
import 'tinymce/plugins/media';
import 'tinymce/plugins/table';
import 'tinymce/plugins/codesample';
import 'tinymce/plugins/lists';
import 'tinymce/plugins/advlist';
import 'tinymce/plugins/hr';
import 'tinymce/plugins/charmap';
import 'tinymce/plugins/emoticons';
import 'tinymce/plugins/anchor';
import 'tinymce/plugins/directionality';
import 'tinymce/plugins/pagebreak';
import 'tinymce/plugins/quickbars';
import 'tinymce/plugins/nonbreaking';
import 'tinymce/plugins/visualblocks';
import 'tinymce/plugins/visualchars';
import 'tinymce/plugins/wordcount';
import 'tinymce/plugins/emoticons/js/emojis';
//
const DEFAULT_CONFIG = {
height: 300,
branding: false,
skin_url: BASE_URL + 'tinymce/skins/ui/oxide',
content_css: BASE_URL + 'tinymce/skins/content/default/content.min.css',
language_url: BASE_URL + 'tinymce/langs/zh_CN.js',
language: 'zh_CN',
plugins: [
'code',
'print',
'preview',
'fullscreen',
'paste',
'searchreplace',
'save',
'autosave',
'link',
'autolink',
'image',
//'imagetools',
'media',
'table',
'codesample',
'lists',
'advlist',
'hr',
'charmap',
'emoticons',
'anchor',
'directionality',
'pagebreak',
'quickbars',
'nonbreaking',
'visualblocks',
'visualchars',
'wordcount'
].join(' '),
toolbar: [
'fullscreen',
'preview',
'code',
'|',
'undo',
'redo',
'|',
'forecolor',
'backcolor',
'|',
'bold',
'italic',
'underline',
'strikethrough',
'|',
'alignleft',
'aligncenter',
'alignright',
'alignjustify',
'|',
'outdent',
'indent',
'|',
'numlist',
'bullist',
'|',
'formatselect',
'fontselect',
'fontsizeselect',
'|',
'link',
'image',
'media',
'emoticons',
'charmap',
'anchor',
'pagebreak',
'codesample',
'|',
'ltr',
'rtl'
].join(' '),
draggable_modal: true,
toolbar_mode: 'sliding',
images_upload_handler: (blobInfo, success) => {
success('data:image/jpeg;base64,' + blobInfo.base64());
},
file_picker_types: 'media',
file_picker_callback: () => {}
};
//
const DARK_CONFIG = {
skin_url: BASE_URL + 'tinymce/skins/ui/oxide-dark',
content_css: BASE_URL + 'tinymce/skins/content/dark/content.min.css'
};
/**
* 切换编辑器主题
* @param dark 是否是暗黑主题
*/
function changeEditorTheme(dark) {
[].forEach.call(document.head.querySelectorAll('[id^="mce-"]'), (elem) => {
let href = elem.getAttribute('href');
if (href.includes('/oxide-dark/')) {
if (!dark) {
href = href.replace('/oxide-dark/', '/oxide/');
elem.setAttribute('href', href);
}
} else if (dark) {
href = href.replace('/oxide/', '/oxide-dark/');
elem.setAttribute('href', href);
}
});
//
[].forEach.call(
document.body.querySelectorAll('iframe[id^="tiny-vue_"]'),
(frame) => {
const win = frame.contentWindow;
if (win) {
const doc = win.document;
if (doc) {
[].forEach.call(
doc.head.querySelectorAll('[id^="mce-"]'),
(elem) => {
let href = elem.getAttribute('href');
if (href.includes('/skins/ui/')) {
if (href.includes('/oxide-dark/')) {
if (!dark) {
href = href.replace('/oxide-dark/', '/oxide/');
elem.setAttribute('href', href);
}
} else if (dark) {
href = href.replace('/oxide/', '/oxide-dark/');
elem.setAttribute('href', href);
}
} else if (href.includes('/skins/content/')) {
if (href.includes('/dark/')) {
if (!dark) {
href = href.replace('/dark/', '/default/');
elem.setAttribute('href', href);
}
} else if (dark) {
href = href.replace('/default/', '/dark/');
elem.setAttribute('href', href);
}
}
}
);
}
}
}
);
}
export default {
name: 'TinymceEditor',
components: { Editor },
props: {
// (v-model)
value: String,
//
init: Object,
//
disabled: Boolean,
//
autoTheme: {
type: Boolean,
default: true
},
// 使
darkTheme: Boolean
},
data() {
const darkMode = this.$store?.state?.theme?.darkMode;
const isDark = this.autoTheme ? darkMode : this.darkTheme;
return {
//
config: Object.assign(
{},
DEFAULT_CONFIG,
isDark ? DARK_CONFIG : {},
this.init
)
};
},
computed: {
//
darkMode() {
return this.$store?.state?.theme?.darkMode;
}
},
created() {
tinymce.init({});
},
methods: {
/* 更新value */
updateValue(value) {
this.$emit('input', value);
}
},
watch: {
darkMode(darkMode) {
if (this.autoTheme) {
changeEditorTheme(darkMode);
}
}
},
activated() {
if (this.autoTheme) {
changeEditorTheme(this.darkMode);
}
}
};
</script>
<style>
body .tox-tinymce-aux {
z-index: 19990000;
}
</style>

98
src/components/VueQrCode/index.vue

@ -1,98 +0,0 @@
<!-- 二维码组件 -->
<template>
<div ref="root"></div>
</template>
<script>
import QRCode from 'qrcodejs2';
export default {
name: 'VueQrCode',
props: {
text: String,
width: {
type: Number,
default: 256
},
height: {
type: Number,
default: 256
},
colorDark: {
type: String,
default: '#000000'
},
colorLight: {
type: String,
default: '#ffffff'
},
correctLevel: {
type: Number,
default: QRCode.CorrectLevel.H
}
},
data() {
return {
instance: undefined
};
},
mounted() {
if (this.text) {
this.render();
}
},
methods: {
render() {
this.clear();
this.instance = new QRCode(this.getEl(), {
text: this.text,
width: this.width,
height: this.height,
colorDark: this.colorDark,
colorLight: this.colorLight,
correctLevel: this.correctLevel
});
},
makeCode(value) {
if (this.instance) {
this.instance.makeCode(value);
} else {
this.render();
}
},
clear() {
this.instance?.clear();
this.instance = undefined;
this.getEl().innerHTML = '';
this.getEl().title = '';
},
getEl() {
return this.$refs.root;
}
},
watch: {
text(text) {
if (text) {
this.makeCode(text);
} else {
this.clear();
}
},
width() {
this.render();
},
height() {
this.render();
},
colorDark() {
this.render();
},
colorLight() {
this.render();
},
correctLevel() {
this.render();
}
}
};
</script>

57
src/config/setting.js

@ -1,57 +0,0 @@
// 接口地址
export const API_BASE_URL = process.env.VUE_APP_API_BASE_URL;
// 项目名称
export const PROJECT_NAME = process.env.VUE_APP_NAME;
// 不显示侧栏的路由
export const HIDE_SIDEBARS = [];
// 不显示页脚的路由
export const HIDE_FOOTERS = [
'/system/dictionary',
'/system/organization',
'/form/advanced',
'/example/choose'
];
// 页签同路由不同参数可重复打开的路由
export const REPEATABLE_TABS = ['/system/user-info'];
// 不需要登录的路由
export const WHITE_LIST = ['/login', '/forget'];
// 直接指定菜单数据
export const USER_MENUS = null;
// 首页名称, 为空则取第一个菜单的名称
export const HOME_TITLE = null;
// 首页路径, 为空则取第一个菜单的地址
export const HOME_PATH = null;
// 开启多页签是否缓存组件
//export const TAB_KEEP_ALIVE = process.env.NODE_ENV !== 'development';
export const TAB_KEEP_ALIVE = true;
// token传递的header名称
export const TOKEN_HEADER_NAME = 'Authorization';
// token存储的名称
export const TOKEN_STORE_NAME = 'access_token';
// 主题配置存储的名称
export const THEME_STORE_NAME = 'theme';
// i18n缓存的名称
export const I18N_CACHE_NAME = 'i18n-lang';
// 刷新路由的路由地址
export const REDIRECT_PATH = '/redirect';
// 高德地图key
export const MAP_KEY = '006d995d433058322319fa797f2876f5';
// EleAdmin授权码
export const LICENSE_CODE =
'dk9mcwJyetRWQlxWRiojIqJWdzJCLi4Wam2q5iojI0NWZRqL5Tip5JGr5Aqo5Re656mp5sWY5QmZ6Jyp5t9GZiwiI4+Y5tVGZiojIulWYp1GZhVGbl5ybpJCLi02bj5ibtFGRtEjI6ICZ2JCLiw2cnVkViojIu9WazJXZQfiAjL44SM0NW==';

29
src/i18n/index.js

@ -1,29 +0,0 @@
/**
* 国际化配置
*/
import Vue from 'vue';
import VueI18n from 'vue-i18n';
import eleZhCNLocale from 'ele-admin/es/lang/zh-CN';
import eleZhTWLocale from 'ele-admin/es/lang/zh-TW';
import eleEnLocale from 'ele-admin/es/lang/en';
import zhCNLocale from './lang/zh_CN';
import zhTWLocale from './lang/zh_TW';
import enLocale from './lang/en';
import { I18N_CACHE_NAME } from '@/config/setting';
Vue.use(VueI18n);
const messages = {
zh_CN: { ...eleZhCNLocale, ...zhCNLocale },
zh_TW: { ...eleZhTWLocale, ...zhTWLocale },
en: { ...eleEnLocale, ...enLocale }
};
const i18n = new VueI18n({
messages: messages,
silentTranslationWarn: true,
// 默认语言
locale: localStorage.getItem(I18N_CACHE_NAME) || 'zh_CN'
});
export default i18n;

186
src/i18n/lang/en.js

@ -1,186 +0,0 @@
/**
* 英语
*/
export default {
// 菜单路由
route: {
dashboard: {
_name: 'Dashboard',
workplace: { _name: 'Workplace' },
analysis: { _name: 'Analysis' },
monitor: { _name: 'Monitor' }
},
system: {
_name: 'System',
user: {
_name: 'User'
},
role: { _name: 'Role' },
menu: { _name: 'Menu' },
dictionary: { _name: 'Dictionary' },
organization: { _name: 'Organization' },
loginRecord: { _name: 'LoginRecord' },
operationRecord: { _name: 'OperationRecord' },
userInfo: { _name: '' }
},
form: {
_name: 'Form',
basic: { _name: 'Basic Form' },
advanced: { _name: 'Advanced Form' },
step: { _name: 'Step Form' }
},
list: {
_name: 'List',
basic: { _name: 'Basic List' },
advanced: { _name: 'Advanced List' },
card: {
_name: 'Card List',
project: { _name: 'Project' },
application: { _name: 'Application' },
article: { _name: 'Article' }
}
},
result: {
_name: 'Result',
success: { _name: 'Success' },
fail: { _name: 'Fail' }
},
exception: {
_name: 'Exception',
403: { _name: '403' },
404: { _name: '404' },
500: { _name: '500' }
},
user: {
_name: 'User',
profile: { _name: 'Profile' },
message: { _name: 'Message' }
},
extension: {
_name: 'Extension',
icon: { _name: 'Icon' },
file: { _name: 'File' },
printer: { _name: 'Printer' },
excel: { _name: 'Excel' },
dragsort: { _name: 'DragSort' },
message: { _name: 'Message' },
map: { _name: 'Map' },
player: { _name: 'Player' },
editor: { _name: 'Editor' },
tag: { _name: 'Tags' },
colorPicker: { _name: 'ColorPicker' },
regions: { _name: 'CitySelect' },
countUp: { _name: 'CountUp' },
empty: { _name: 'Empty' },
steps: { _name: 'Steps' },
menu: { _name: 'Menu' },
treeSelect: { _name: 'TreeSelect' },
tableSelect: { _name: 'TableSelect' },
qrCode: { _name: 'QRCode' },
dialog: { _name: 'DragDialog' }
},
example: {
_name: 'Example',
table: { _name: 'ProTable' },
menuBadge: { _name: 'MenuBadge' },
document: { _name: 'Document' },
choose: { _name: 'Choose' },
eleadmin: { _name: 'IFrame' }
},
'https://eleadminCom/goods/8': { _name: 'Authorization' }
},
// 主框架
layout: {
home: 'Home',
header: {
profile: 'Profile',
password: 'Password',
logout: 'SignOut'
},
footer: {
website: 'Website',
document: 'Document',
authorization: 'Authorization',
copyright: 'Copyright © 2022 Wuhan EClouds Technology Co., Ltd'
},
logout: {
title: 'Confirm',
message: 'Are you sure you want to log out?'
},
setting: {
title: 'Theme Setting',
sideStyles: {
dark: 'Dark Sidebar',
light: 'Light Sidebar'
},
headStyles: {
light: 'Light Header',
dark: 'Dark Header',
primary: 'Primary Header'
},
layoutStyles: {
side: 'Side Menu Layout',
top: 'Top Menu Layout',
mix: 'Mix Menu Layout'
},
colors: {
default: 'Daybreak Blue',
dust: 'Dust Blue',
sunset: 'Sunset Orange',
volcano: 'Volcano',
purple: 'Golden Purple',
cyan: 'Cyan',
green: 'Polar Green',
geekblue: 'Geek Blue'
},
darkMode: 'Dark Mode',
layoutStyle: 'Navigation Mode',
sideMenuStyle: 'Sidebar Double Menu',
bodyFull: 'Body Fullscreen',
other: 'Other Setting',
fixedHeader: 'Fixed Header',
fixedSidebar: 'Fixed Sidebar',
fixedBody: 'Fixed Body',
logoAutoSize: 'Logo Adaptation',
colorfulIcon: 'Colorful Icon',
sideUniqueOpen: 'Menu Unique Open',
weakMode: 'Weak Mode',
showFooter: 'Show Footer',
showTabs: 'Show Tabs',
tabStyle: 'Tab Style',
tabStyles: {
default: 'Default',
dot: 'Dot',
card: 'Card'
},
reset: 'Reset',
tips: 'It will remember your configuration the next time you open it.'
}
},
// 登录界面
login: {
title: 'User Login',
username: 'please input username',
password: 'please input password',
code: 'please input code',
remember: 'remember',
forget: 'forget',
login: 'login',
loading: 'loading'
},
// 基础列表
list: {
basic: {
table: {
username: 'Username',
nickname: 'Nickname',
organizationName: 'OrganizationName',
phone: 'Phone',
sexName: 'SexName',
createTime: 'CreateTime',
status: 'Status',
action: 'Action'
}
}
}
};

187
src/i18n/lang/zh_CN.js

@ -1,187 +0,0 @@
/**
* 简体中文
*/
export default {
// 菜单路由
route: {
dashboard: {
_name: 'Dashboard',
workplace: { _name: '工作台' },
analysis: { _name: '分析页' },
monitor: { _name: '监控页' }
},
system: {
_name: '系统管理',
user: {
_name: '用户管理'
},
role: { _name: '角色管理' },
menu: { _name: '菜单管理' },
dictionary: { _name: '字典管理' },
organization: { _name: '机构管理' },
loginRecord: { _name: '登录日志' },
operationRecord: { _name: '操作日志' },
userInfo: { _name: '' }
},
form: {
_name: '表单页面',
basic: { _name: '基础表单' },
advanced: { _name: '复杂表单' },
step: { _name: '分步表单' }
},
list: {
_name: '列表页面',
basic: { _name: '基础列表' },
advanced: { _name: '复杂列表' },
card: {
_name: '卡片列表',
project: { _name: '项目列表' },
application: { _name: '应用列表' },
article: { _name: '文章列表' }
}
},
result: {
_name: '结果页面',
success: { _name: '成功页' },
fail: { _name: '失败页' }
},
exception: {
_name: '异常页面',
403: { _name: '403' },
404: { _name: '404' },
500: { _name: '500' }
},
user: {
_name: '个人中心',
profile: { _name: '个人资料' },
message: { _name: '我的消息' }
},
extension: {
_name: '扩展组件',
icon: { _name: '图标扩展' },
file: { _name: '文件列表' },
printer: { _name: '打印插件' },
excel: { _name: 'excel插件' },
dragsort: { _name: '拖拽排序' },
message: { _name: '消息提示' },
map: { _name: '地图组件' },
player: { _name: '视频播放' },
editor: { _name: '富文本框' },
tag: { _name: '标签组件' },
colorPicker: { _name: '颜色选择' },
regions: { _name: '城市选择' },
countUp: { _name: '滚动数字' },
empty: { _name: '空状态' },
steps: { _name: '步骤条' },
menu: { _name: '菜单导航' },
treeSelect: { _name: '树形下拉' },
tableSelect: { _name: '表格下拉' },
qrCode: { _name: '二维码' },
dialog: { _name: '拖拽弹窗' }
},
example: {
_name: '常用实例',
table: { _name: '表格实例' },
menuBadge: { _name: '菜单徽章' },
document: { _name: '案卷调整' },
choose: { _name: '批量选择' },
eleadmin: { _name: '内嵌页面' }
},
'https://eleadminCom/goods/8': { _name: '获取授权' }
},
// 外层布局
layout: {
home: '主页',
header: {
profile: '个人中心',
password: '修改密码',
logout: '退出登录'
},
footer: {
website: '官网',
document: '文档',
authorization: '授权',
copyright: 'Copyright © 2022 武汉易云智科技有限公司'
},
logout: {
title: '提示',
message: '确定要退出登录吗?'
},
// 设置抽屉
setting: {
title: '整体风格设置',
sideStyles: {
dark: '暗色侧边栏',
light: '亮色侧边栏'
},
headStyles: {
light: '亮色顶栏',
dark: '暗色顶栏',
primary: '主色顶栏'
},
layoutStyles: {
side: '左侧菜单布局',
top: '顶部菜单布局',
mix: '混合菜单布局'
},
colors: {
default: '拂晓蓝',
dust: '薄暮',
sunset: '日暮',
volcano: '火山',
purple: '酱紫',
cyan: '明青',
green: '极光绿',
geekblue: '极客蓝'
},
darkMode: '开启暗黑模式',
layoutStyle: '导航模式',
sideMenuStyle: '侧栏双排菜单',
bodyFull: '内容区域铺满',
other: '其它配置',
fixedHeader: '固定顶栏区域',
fixedSidebar: '固定侧栏区域',
fixedBody: '固定主体区域',
logoAutoSize: 'Logo宽度自动',
colorfulIcon: '侧栏彩色图标',
sideUniqueOpen: '侧栏排他展开',
weakMode: '开启色弱模式',
showFooter: '开启全局页脚',
showTabs: '开启多页签栏',
tabStyle: '页签显示风格',
tabStyles: {
default: '默认',
dot: '圆点',
card: '卡片'
},
reset: '重置',
tips: '该功能可实时预览各种布局效果, 修改后会缓存在本地, 下次打开会记忆主题配置.'
}
},
// 登录界面
login: {
title: '用户登录',
username: '请输入登录账号',
password: '请输入登录密码',
code: '请输入验证码',
remember: '记住密码',
forget: '忘记密码',
login: '登录',
loading: '登录中'
},
// 基础列表
list: {
basic: {
table: {
username: '用户账号',
nickname: '用户名',
organizationName: '组织机构',
phone: '手机号',
sexName: '性别',
createTime: '创建时间',
status: '状态',
action: '操作'
}
}
}
};

186
src/i18n/lang/zh_TW.js

@ -1,186 +0,0 @@
/**
* 繁体中文
*/
export default {
// 菜单路由
route: {
dashboard: {
_name: 'Dashboard',
workplace: { _name: '工作臺' },
analysis: { _name: '分析頁' },
monitor: { _name: '監控頁' }
},
system: {
_name: '系統管理',
user: {
_name: '用戶管理'
},
role: { _name: '角色管理' },
menu: { _name: '選單管理' },
dictionary: { _name: '字典管理' },
organization: { _name: '機构管理' },
loginRecord: { _name: '登入日誌' },
operationRecord: { _name: '操作日誌' },
userInfo: { _name: '' }
},
form: {
_name: '表單頁面',
basic: { _name: '基礎表單' },
advanced: { _name: '複雜表單' },
step: { _name: '分步表單' }
},
list: {
_name: '清單頁面',
basic: { _name: '基礎清單' },
advanced: { _name: '複雜清單' },
card: {
_name: '卡片清單',
project: { _name: '項目清單' },
application: { _name: '應用清單' },
article: { _name: '文章清單' }
}
},
result: {
_name: '結果頁面',
success: { _name: '成功頁' },
fail: { _name: '失敗頁' }
},
exception: {
_name: '异常頁面',
403: { _name: '403' },
404: { _name: '404' },
500: { _name: '500' }
},
user: {
_name: '個人中心',
profile: { _name: '個人資料' },
message: { _name: '我的消息' }
},
extension: {
_name: '擴展組件',
icon: { _name: '圖標擴展' },
file: { _name: '檔案清單' },
printer: { _name: '列印挿件' },
excel: { _name: 'excel挿件' },
dragsort: { _name: '拖拽排序' },
message: { _name: '消息提示' },
map: { _name: '地圖組件' },
player: { _name: '視頻播放' },
editor: { _name: '富文本框' },
tag: { _name: '標籤組件' },
colorPicker: { _name: '顏色選擇' },
regions: { _name: '城市選擇' },
countUp: { _name: '滾動數字' },
empty: { _name: '空狀態' },
steps: { _name: '步驟條' },
menu: { _name: '菜單導航' },
treeSelect: { _name: '樹形下拉' },
tableSelect: { _name: '表格下拉' },
qrCode: { _name: '二維碼' },
dialog: { _name: '拖拽彈窗' }
},
example: {
_name: '常用實例',
table: { _name: '表格實例' },
menuBadge: { _name: '菜單徽章' },
document: { _name: '案卷調整' },
choose: { _name: '批量選擇' },
eleadmin: { _name: '內嵌頁面' }
},
'https://eleadminCom/goods/8': { _name: '獲取授權' }
},
// 主框架
layout: {
home: '主頁',
header: {
profile: '個人中心',
password: '修改密碼',
logout: '安全登出'
},
footer: {
website: '官網',
document: '檔案',
authorization: '授權',
copyright: 'Copyright © 2022 武漢易雲智科技有限公司'
},
logout: {
title: '詢問',
message: '確定要登出嗎?'
},
setting: {
title: '整體風格設定',
sideStyles: {
dark: '暗色側邊欄',
light: '亮色側邊欄'
},
headStyles: {
light: '亮色頂欄',
dark: '暗色頂欄',
primary: '主色頂欄'
},
layoutStyles: {
side: '左側選單佈局',
top: '頂部選單佈局',
mix: '混合選單佈局'
},
colors: {
default: '拂曉藍',
dust: '薄暮',
sunset: '日暮',
volcano: '火山',
purple: '醬紫',
cyan: '明青',
green: '極光綠',
geekblue: '極客藍'
},
darkMode: '開啟暗黑模式',
layoutStyle: '導航模式',
sideMenuStyle: '側欄雙排選單',
bodyFull: '內容區域鋪滿',
other: '其它配寘',
fixedHeader: '固定頂欄區域',
fixedSidebar: '固定側欄區域',
fixedBody: '固定主體區域',
logoAutoSize: 'Logo寬度自動',
colorfulIcon: '側欄彩色圖標',
sideUniqueOpen: '側欄排他展開',
weakMode: '開啟色弱模式',
showFooter: '開啟全域頁腳',
showTabs: '開啟多頁簽欄',
tabStyle: '頁簽顯示風格',
tabStyles: {
default: '默認',
dot: '圓點',
card: '卡片'
},
reset: '重置',
tips: '該功能可實时預覽各種佈局效果,修改後會緩存在本地,下次打開會記憶主題配寘.'
}
},
// 登录界面
login: {
title: '用戶登錄',
username: '請輸入登入帳號',
password: '請輸入登入密碼',
code: '請輸入驗證碼',
remember: '記住密碼',
forget: '忘記密碼',
login: '登入',
loading: '登入中'
},
// 基础列表
list: {
basic: {
table: {
username: '用戶賬號',
nickname: '用戶名',
organizationName: '組織機構',
phone: '手機號',
sexName: '性別',
createTime: '創建時間',
status: '狀態',
action: '操作'
}
}
}
};

278
src/layout/components/header-notice.vue

@ -1,278 +0,0 @@
<!-- 顶栏消息通知 -->
<template>
<el-popover
:width="330"
trigger="click"
v-model="visible"
class="ele-notice-group"
transition="el-zoom-in-top"
popper-class="ele-notice-pop"
>
<div slot="reference" class="ele-notice-group">
<el-badge :value="unreadNum" :hidden="!unreadNum">
<i class="el-icon-bell"></i>
</el-badge>
</div>
<el-tabs v-model="active">
<el-tab-pane name="notice" :label="noticeTitle">
<div class="ele-notice-list ele-scrollbar-mini">
<div
v-for="(item, index) in notice"
:key="index"
class="ele-notice-item"
>
<div class="ele-cell ele-notice-item-wrapper">
<i :class="[item.icon, 'ele-notice-item-icon']"></i>
<div class="ele-cell-content">
<div class="ele-elip">{{ item.title }}</div>
<div class="ele-text-secondary ele-elip">{{ item.time }}</div>
</div>
</div>
<el-divider />
</div>
</div>
<div v-if="notice.length" class="ele-cell ele-notice-actions">
<div class="ele-cell-content" @click="clearNotice">清空通知</div>
<el-divider direction="vertical" class="line-color-light" />
<router-link to="/user/message?type=notice" class="ele-cell-content">
查看更多
</router-link>
</div>
<ele-empty v-if="!notice.length" text="已查看所有通知" />
</el-tab-pane>
<el-tab-pane name="letter" :label="letterTitle">
<div class="ele-notice-list ele-scrollbar-mini">
<div
v-for="(item, index) in letter"
:key="index"
class="ele-notice-item"
>
<div class="ele-cell ele-notice-item-wrapper ele-cell-align-top">
<el-avatar :src="item.avatar" size="medium" />
<div class="ele-cell-content">
<div class="ele-elip">{{ item.title }}</div>
<div class="ele-text-secondary ele-elip">
{{ item.content }}
</div>
<div class="ele-cell-desc ele-elip">{{ item.time }}</div>
</div>
</div>
<el-divider />
</div>
</div>
<div v-if="letter.length" class="ele-cell ele-notice-actions">
<div class="ele-cell-content" @click="clearLetter">清空私信</div>
<el-divider direction="vertical" class="line-color-light" />
<router-link to="/user/message?type=letter" class="ele-cell-content">
查看更多
</router-link>
</div>
<ele-empty v-if="!letter.length" text="已读完所有私信" />
</el-tab-pane>
<el-tab-pane :label="todoTitle" name="todo">
<div class="ele-notice-list ele-scrollbar-mini">
<div
v-for="(item, index) in todo"
:key="index"
class="ele-notice-item"
>
<div class="ele-notice-item-wrapper">
<div class="ele-cell ele-cell-align-top">
<div class="ele-cell-content ele-elip">{{ item.title }}</div>
<el-tag size="mini" :type="['info', 'danger', ''][item.status]">
{{ ['未开始', '即将到期', '进行中'][item.status] }}
</el-tag>
</div>
<div class="ele-text-secondary ele-elip">
{{ item.description }}
</div>
</div>
<el-divider />
</div>
</div>
<div v-if="todo.length" class="ele-cell ele-notice-actions">
<div class="ele-cell-content" @click="clearTodo">清空待办</div>
<el-divider direction="vertical" class="line-color-light" />
<router-link to="/user/message?type=todo" class="ele-cell-content">
查看更多
</router-link>
</div>
<ele-empty v-if="!todo.length" text="已完成所有任务" />
</el-tab-pane>
</el-tabs>
</el-popover>
</template>
<script>
import { getUnreadNotice } from '@/api/layout';
export default {
name: 'HeaderNotice',
data() {
return {
//
visible: false,
//
active: 'notice',
//
notice: [],
//
letter: [],
//
todo: []
};
},
computed: {
//
noticeTitle() {
return '通知' + (this.notice.length ? `(${this.notice.length})` : '');
},
//
letterTitle() {
return '私信' + (this.letter.length ? `(${this.letter.length})` : '');
},
//
todoTitle() {
return '待办' + (this.todo.length ? `(${this.todo.length})` : '');
},
//
unreadNum() {
return this.notice.length + this.letter.length + this.todo.length;
}
},
created() {
this.query();
},
methods: {
/* 查询数据 */
query() {
getUnreadNotice()
.then((result) => {
this.notice = result.notice;
this.letter = result.letter;
this.todo = result.todo;
})
.catch((e) => {
this.$message.error(e.message);
});
},
/* 清空通知 */
clearNotice() {
this.notice = [];
},
/* 清空通知 */
clearLetter() {
this.letter = [];
},
/* 清空通知 */
clearTodo() {
this.todo = [];
}
}
};
</script>
<style lang="scss">
.ele-notice-group {
display: block;
.el-badge {
line-height: 1;
display: block;
}
}
/* 消息通知pop */
.ele-notice-pop {
padding: 0 !important;
/* tab */
.el-tabs__nav-scroll {
text-align: center;
}
.el-tabs__nav {
float: none;
display: inline-block;
}
.el-tabs__item {
height: 44px;
line-height: 44px;
padding: 0 20px !important;
}
/* 空视图 */
.ele-empty {
padding: 100px 0;
}
}
/* 列表 */
.ele-notice-list {
padding-top: 8px;
max-height: 360px;
overflow: auto;
}
.ele-notice-item {
.ele-notice-item-wrapper {
padding: 12px 15px;
transition: background-color 0.2s;
cursor: pointer;
&:hover {
background-color: hsla(0, 0%, 60%, 0.05);
}
}
.ele-text-secondary {
margin-top: 5px;
font-size: 13px;
}
.ele-cell-desc {
margin-top: 3px !important;
font-size: 12px !important;
}
}
.ele-notice-item-icon {
width: 32px;
height: 32px;
line-height: 32px !important;
color: #fff;
font-size: 16px;
background-color: #60b2fc;
border-radius: 50%;
text-align: center;
&.el-icon-s-check {
background-color: #f5686f;
}
&.el-icon-video-camera {
background-color: #7cd734;
}
&.el-icon-s-claim {
background-color: #faad14;
}
&.el-icon-message-solid {
background-color: #2bcacd;
}
}
/* 操作按钮 */
.ele-notice-actions > .ele-cell-content {
line-height: 42px;
text-align: center;
cursor: pointer;
color: inherit;
&:hover {
background-color: hsla(0, 0%, 60%, 0.05);
}
}
</style>

144
src/layout/components/header-tools.vue

@ -1,144 +0,0 @@
<!-- 顶栏右侧区域 -->
<template>
<div class="ele-admin-header-tool">
<!-- 全屏切换 -->
<div
class="ele-admin-header-tool-item hidden-xs-only"
@click="toggleFullscreen"
>
<i v-if="fullscreen" class="el-icon-_screen-restore"></i>
<i v-else class="el-icon-_screen-full"></i>
</div>
<!-- 语言切换 -->
<div class="ele-admin-header-tool-item">
<el-dropdown placement="bottom" @command="changeLanguage">
<i class="el-icon-_language"></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="en">
<span :class="{ 'ele-text-primary': language === 'en' }">
English
</span>
</el-dropdown-item>
<el-dropdown-item command="zh_CN">
<span :class="{ 'ele-text-primary': language === 'zh_CN' }">
简体中文
</span>
</el-dropdown-item>
<el-dropdown-item command="zh_TW">
<span :class="{ 'ele-text-primary': language === 'zh_TW' }">
繁體中文
</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<!-- 消息通知 -->
<div class="ele-admin-header-tool-item">
<header-notice />
</div>
<!-- 用户信息 -->
<div class="ele-admin-header-tool-item">
<el-dropdown @command="onUserDropClick">
<div class="ele-admin-header-avatar">
<el-avatar :src="loginUser.avatar" />
<span class="hidden-xs-only">{{ loginUser.nickname }}</span>
<i class="el-icon-arrow-down"></i>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="profile" icon="el-icon-user">
{{ $t('layout.header.profile') }}
</el-dropdown-item>
<el-dropdown-item command="password" icon="el-icon-key">
{{ $t('layout.header.password') }}
</el-dropdown-item>
<el-dropdown-item
command="logout"
icon="el-icon-switch-button"
divided
>
{{ $t('layout.header.logout') }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<!-- 主题设置 -->
<div class="ele-admin-header-tool-item" @click="openSetting">
<i class="el-icon-_more"></i>
</div>
<!-- 修改密码弹窗 -->
<password-modal :visible.sync="passwordVisible" />
<!-- 主题设置抽屉 -->
<setting-drawer :visible.sync="settingVisible" />
</div>
</template>
<script>
import HeaderNotice from './header-notice.vue';
import PasswordModal from './password-modal.vue';
import SettingDrawer from './setting-drawer.vue';
import { logout } from '@/utils/page-tab-util';
import { I18N_CACHE_NAME } from '@/config/setting';
export default {
name: 'HeaderTools',
components: { HeaderNotice, PasswordModal, SettingDrawer },
props: {
//
fullscreen: Boolean
},
data() {
return {
//
passwordVisible: false,
//
settingVisible: false
};
},
computed: {
//
loginUser() {
return this.$store.state.user.info;
},
//
language() {
return this.$i18n.locale;
}
},
methods: {
/* 用户信息下拉点击事件 */
onUserDropClick(command) {
if (command === 'password') {
this.passwordVisible = true;
} else if (command === 'profile') {
if (this.$route.fullPath !== '/user/profile') {
this.$router.push('/user/profile');
}
} else if (command === 'logout') {
// 退
this.$confirm(
this.$t('layout.logout.message'),
this.$t('layout.logout.title'),
{ type: 'warning' }
)
.then(() => {
logout();
})
.catch(() => {});
}
},
/* 全屏切换 */
toggleFullscreen() {
this.$emit('fullscreen');
},
/* 打开设置抽屉 */
openSetting() {
this.settingVisible = true;
},
/* 切换语言 */
changeLanguage(key) {
this.$i18n.locale = key;
localStorage.setItem(I18N_CACHE_NAME, key);
}
}
};
</script>

35
src/layout/components/page-footer.vue

@ -1,35 +0,0 @@
<!-- 全局页脚 -->
<template>
<div class="ele-text-center" style="padding: 16px 0">
<div>
<a target="_blank" class="ele-text-secondary" href="https://eleadmin.com">
{{ $t('layout.footer.website') }}
</a>
<em></em>
<a
target="_blank"
class="ele-text-secondary"
href="https://eleadmin.com/doc/eleadmin/"
>
{{ $t('layout.footer.document') }}
</a>
<em></em>
<a
target="_blank"
class="ele-text-secondary"
href="https://eleadmin.com/goods/8"
>
{{ $t('layout.footer.authorization') }}
</a>
</div>
<div class="ele-text-secondary" style="margin-top: 8px">
{{ $t('layout.footer.copyright') }}
</div>
</div>
</template>
<script>
export default {
name: 'PageFooter'
};
</script>

137
src/layout/components/password-modal.vue

@ -1,137 +0,0 @@
<!-- 修改密码弹窗 -->
<template>
<ele-modal
width="420px"
title="修改密码"
:visible="visible"
:append-to-body="true"
:close-on-click-modal="true"
@update:visible="updateVisible"
@closed="onClose"
>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="82px"
@keyup.enter.native="save"
>
<el-form-item label="旧密码:" prop="oldPassword">
<el-input
show-password
v-model="form.oldPassword"
placeholder="请输入旧密码"
/>
</el-form-item>
<el-form-item label="新密码:" prop="password">
<el-input
show-password
v-model="form.password"
placeholder="请输入新密码"
/>
</el-form-item>
<el-form-item label="确认密码:" prop="password2">
<el-input
show-password
v-model="form.password2"
placeholder="请再次输入新密码"
/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="updateVisible(false)">取消</el-button>
<el-button type="primary" @click="save">确定</el-button>
</div>
</ele-modal>
</template>
<script>
import { updatePassword } from '@/api/layout';
export default {
name: 'PasswordModal',
props: {
visible: Boolean
},
data() {
return {
// loading
loading: false,
//
form: {
oldPassword: '',
password: '',
password2: ''
},
//
rules: {
oldPassword: [
{
required: true,
message: '请输入旧密码',
trigger: 'blur'
}
],
password: [
{
required: true,
message: '请输入新密码',
trigger: 'blur'
}
],
password2: [
{
required: true,
trigger: 'blur',
validator: (_rule, value, callback) => {
if (!value) {
return callback(new Error('请再次输入新密码'));
}
if (value !== this.form.password) {
return callback(new Error('两次输入密码不一致'));
}
callback();
}
}
]
}
};
},
methods: {
/* 修改visible */
updateVisible(value) {
this.$emit('update:visible', value);
},
/* 保存修改 */
save() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.loading = true;
updatePassword(this.form)
.then((msg) => {
this.loading = false;
this.$message.success(msg);
this.updateVisible(false);
})
.catch((e) => {
this.loading = false;
this.$message.error(e.message);
});
} else {
return false;
}
});
},
/* 关闭回调 */
onClose() {
this.form = {
oldPassword: '',
password: '',
password2: ''
};
this.$refs['form'].resetFields();
this.loading = false;
}
}
};
</script>

627
src/layout/components/setting-drawer.vue

@ -1,627 +0,0 @@
<!-- 主题设置抽屉 -->
<template>
<el-drawer
size="300px"
:visible="visible"
:append-to-body="true"
:title="$t('layout.setting.title')"
@update:visible="updateVisible"
>
<div
:class="['ele-setting-wrapper', { 'ele-setting-dark': theme.darkMode }]"
>
<!-- 侧栏风格 -->
<div class="ele-setting-theme ele-text-primary">
<el-tooltip
:content="$t('layout.setting.sideStyles.dark')"
placement="top"
>
<div
class="ele-bg-base ele-side-dark"
@click="updateSideStyle('dark')"
>
<i class="el-icon-check" v-if="theme.sideStyle === 'dark'"></i>
</div>
</el-tooltip>
<el-tooltip
:content="$t('layout.setting.sideStyles.light')"
placement="top"
>
<div class="ele-bg-base" @click="updateSideStyle('light')">
<i class="el-icon-check" v-if="theme.sideStyle === 'light'"></i>
</div>
</el-tooltip>
</div>
<!-- 顶栏风格 -->
<div class="ele-setting-theme ele-text-primary">
<el-tooltip
:content="$t('layout.setting.headStyles.light')"
placement="top"
>
<div
class="ele-bg-base ele-head-light"
@click="updateHeadStyle('light')"
>
<i class="el-icon-check" v-if="theme.headStyle === 'light'"></i>
</div>
</el-tooltip>
<el-tooltip
:content="$t('layout.setting.headStyles.dark')"
placement="top"
>
<div
class="ele-bg-base ele-head-dark"
@click="updateHeadStyle('dark')"
>
<i class="el-icon-check" v-if="theme.headStyle === 'dark'"></i>
</div>
</el-tooltip>
<el-tooltip
:content="$t('layout.setting.headStyles.primary')"
placement="top"
>
<div
class="ele-bg-base ele-head-primary"
@click="updateHeadStyle('primary')"
>
<div class="ele-bg-primary"></div>
<i class="el-icon-check" v-if="theme.headStyle === 'primary'"></i>
</div>
</el-tooltip>
</div>
<!-- 主题色 -->
<div class="ele-setting-colors">
<el-tooltip
v-for="item in themes"
:key="item.name"
:content="$t('layout.setting.colors.' + item.name)"
placement="top"
>
<div
class="ele-setting-color-item"
:style="{ 'background-color': item.color || item.value }"
@click="updateColor(item.value)"
>
<i
class="el-icon-check"
v-if="item.value ? item.value === theme.color : !theme.color"
>
</i>
</div>
</el-tooltip>
<!-- 颜色选择器 -->
<el-color-picker
v-model="colorValue"
:predefine="predefineColors"
class="ele-setting-color-picker"
@change="updateColor"
/>
</div>
<!-- 暗黑模式 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.darkMode') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.darkMode" @change="updateDarkMode" />
</div>
</div>
<el-divider />
<!-- 导航布局 -->
<div class="ele-setting-title ele-text-secondary">
{{ $t('layout.setting.layoutStyle') }}
</div>
<div class="ele-setting-theme ele-text-primary">
<el-tooltip
:content="$t('layout.setting.layoutStyles.side')"
placement="top"
>
<div
class="ele-bg-base ele-side-dark"
@click="updateLayoutStyle('side')"
>
<i class="el-icon-check" v-if="theme.layoutStyle === 'side'"></i>
</div>
</el-tooltip>
<el-tooltip
:content="$t('layout.setting.layoutStyles.top')"
placement="top"
>
<div
class="ele-bg-base ele-head-dark"
@click="updateLayoutStyle('top')"
>
<i class="el-icon-check" v-if="theme.layoutStyle === 'top'"></i>
</div>
</el-tooltip>
<el-tooltip
:content="$t('layout.setting.layoutStyles.mix')"
placement="top"
>
<div
class="ele-bg-base ele-layout-mix"
@click="updateLayoutStyle('mix')"
>
<i class="el-icon-check" v-if="theme.layoutStyle === 'mix'"></i>
</div>
</el-tooltip>
</div>
<!-- 侧栏菜单布局 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.sideMenuStyle') }}
</div>
<div class="setting-item-control">
<el-switch
:value="theme.sideMenuStyle === 'mix'"
@change="updateSideMenuStyle"
/>
</div>
</div>
<!-- 内容区域铺满 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.bodyFull') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.bodyFull" @change="updateBodyFull" />
</div>
</div>
<el-divider />
<div class="ele-setting-title ele-text-secondary">
{{ $t('layout.setting.other') }}
</div>
<!-- 固定顶栏 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.fixedHeader') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.fixedHeader" @change="updateFixedHeader" />
</div>
</div>
<!-- 固定侧栏 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.fixedSidebar') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.fixedSidebar" @change="updateFixedSidebar" />
</div>
</div>
<!-- 固定主体 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.fixedBody') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.fixedBody" @change="updateFixedBody" />
</div>
</div>
<!-- LOGO自适应宽度 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.logoAutoSize') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.logoAutoSize" @change="updateLogoAutoSize" />
</div>
</div>
<!-- 侧栏彩色图标 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.colorfulIcon') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.colorfulIcon" @change="updateColorfulIcon" />
</div>
</div>
<!-- 侧栏排他展开 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.sideUniqueOpen') }}
</div>
<div class="setting-item-control">
<el-switch
:value="theme.sideUniqueOpen"
@change="updateSideUniqueOpen"
/>
</div>
</div>
<!-- 全局页脚 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.showFooter') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.showFooter" @change="updateShowFooter" />
</div>
</div>
<!-- 色弱模式 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.weakMode') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.weakMode" @change="updateWeakMode" />
</div>
</div>
<!-- 页签 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.showTabs') }}
</div>
<div class="setting-item-control">
<el-switch :value="theme.showTabs" @change="updateShowTabs" />
</div>
</div>
<!-- 页签风格 -->
<div class="ele-setting-item">
<div class="setting-item-title">
{{ $t('layout.setting.tabStyle') }}
</div>
<div class="setting-item-control">
<el-select
size="mini"
:value="theme.tabStyle"
@change="updateTabStyle"
>
<el-option
:label="$t('layout.setting.tabStyles.default')"
value="default"
/>
<el-option
:label="$t('layout.setting.tabStyles.dot')"
value="dot"
/>
<el-option
:label="$t('layout.setting.tabStyles.card')"
value="card"
/>
</el-select>
</div>
</div>
<el-divider />
<!-- 提示 -->
<el-alert
type="warning"
:closable="false"
class="ele-alert-border"
:title="$t('layout.setting.tips')"
/>
<!-- 重置 -->
<div class="ele-setting-button-group">
<el-button
size="small"
class="ele-fluid"
icon="el-icon-refresh-left"
@click="resetSetting"
>
{{ $t('layout.setting.reset') }}
</el-button>
</div>
</div>
</el-drawer>
</template>
<script>
import { mapGetters } from 'vuex';
import { messageLoading } from 'ele-admin';
//
const themes = [
{
name: 'default',
color: '#1890ff'
},
{
name: 'dust',
value: '#5f80c7'
},
{
name: 'sunset',
value: '#faad14'
},
{
name: 'volcano',
value: '#f5686f'
},
{
name: 'purple',
value: '#9266f9'
},
{
name: 'green',
value: '#33cc99'
},
{
name: 'geekblue',
value: '#32a2d4'
}
];
//
const predefineColors = [
'#f5222d',
'#fa541c',
'#fa8c16',
'#faad14',
'#a0d911',
'#52c41a',
'#13c2c2',
'#2f54eb',
'#722ed1',
'#eb2f96'
];
export default {
name: 'SettingDrawer',
props: {
// , .sync
visible: Boolean
},
data() {
const color = this.$store.state.theme.color;
//
const colorValue =
color && !themes.some((t) => t.value === color) ? color : undefined;
return {
themes,
predefineColors,
colorValue
};
},
computed: {
...mapGetters(['theme'])
},
methods: {
updateVisible(value) {
this.$emit('update:visible', value);
},
updateShowTabs(value) {
this.$store.dispatch('theme/setShowTabs', value);
},
updateShowFooter(value) {
this.$store.dispatch('theme/setShowFooter', value);
},
updateHeadStyle(value) {
this.$store.dispatch('theme/setHeadStyle', value);
},
updateSideStyle(value) {
this.$store.dispatch('theme/setSideStyle', value);
},
updateLayoutStyle(value) {
this.$store.dispatch('theme/setLayoutStyle', value);
},
updateSideMenuStyle(value) {
this.$store.dispatch(
'theme/setSideMenuStyle',
value ? 'mix' : 'default'
);
},
updateTabStyle(value) {
this.$store.dispatch('theme/setTabStyle', value);
},
updateFixedHeader(value) {
this.$store.dispatch('theme/setFixedHeader', value);
},
updateFixedSidebar(value) {
this.$store.dispatch('theme/setFixedSidebar', value);
},
updateFixedBody(value) {
this.$store.dispatch('theme/setFixedBody', value);
},
updateBodyFull(value) {
this.$store.dispatch('theme/setBodyFull', value);
},
updateLogoAutoSize(value) {
this.$store.dispatch('theme/setLogoAutoSize', value);
},
updateColorfulIcon(value) {
this.$store.dispatch('theme/setColorfulIcon', value);
},
updateSideUniqueOpen(value) {
this.$store.dispatch('theme/setSideUniqueOpen', value);
},
updateWeakMode(value) {
this.$store.dispatch('theme/setWeakMode', value);
},
updateDarkMode(value) {
this.doWithLoading(() =>
this.$store.dispatch('theme/setDarkMode', value)
);
},
updateColor(value) {
this.colorValue = undefined;
this.doWithLoading(() => this.$store.dispatch('theme/setColor', value));
},
resetSetting() {
this.doWithLoading(() => this.$store.dispatch('theme/resetSetting'));
},
doWithLoading(fun) {
const loading = messageLoading('正在加载主题..');
fun()
.then(() => {
loading.close();
})
.catch((e) => {
loading.close();
console.error(e);
this.$message.error('主题加载失败');
});
}
}
};
</script>
<style lang="scss">
.ele-setting-wrapper {
padding: 20px 18px;
.ele-setting-title {
font-size: 13px;
margin-bottom: 15px;
}
/* 主题风格 */
.ele-setting-theme > div {
width: 52px;
height: 36px;
line-height: 1;
font-size: 18px;
border-radius: 3px;
margin: 0 20px 30px 0;
padding: 14px 0 0 24px;
box-sizing: border-box;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
display: inline-block;
vertical-align: top;
position: relative;
overflow: hidden;
cursor: pointer;
transition: background-color 0.2s;
&:before,
&:after,
& > .ele-bg-primary {
content: '';
width: 100%;
height: 10px;
background: #fff;
position: absolute;
left: 0;
top: 0;
transition: background-color 0.2s;
}
&:after {
width: 14px;
height: 100%;
}
&.ele-side-dark:after,
&.ele-head-dark:before,
&.ele-layout-mix:before,
&.ele-layout-mix:after {
background: #001529;
}
&.ele-head-light:before,
&.ele-head-dark:before,
& > .ele-bg-primary {
z-index: 1;
}
}
/* 主题色选择 */
.ele-setting-colors {
color: #fff;
margin-bottom: 20px;
.ele-setting-color-item {
width: 20px;
height: 20px;
line-height: 22px;
border-radius: 2px;
margin: 8px 8px 0 0;
display: inline-block;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
vertical-align: top;
position: relative;
text-align: center;
cursor: pointer;
}
}
/* 主题配置项 */
.ele-setting-item {
display: flex;
align-items: center;
margin-bottom: 20px;
.setting-item-title {
flex: 1;
line-height: 28px;
}
.setting-item-control {
line-height: 1;
max-width: 95px;
}
}
.el-divider {
margin-bottom: 20px;
}
.el-alert + .ele-setting-button-group {
margin-top: 15px;
}
}
/* 适配暗黑模式 */
.ele-setting-dark .ele-setting-theme > div {
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.55);
&:before,
&:after,
& > .ele-bg-primary {
background: #1f1f1f;
}
&.ele-side-dark:after,
&.ele-head-dark:before,
&.ele-layout-mix:before,
&.ele-layout-mix:after {
background: #262626;
}
}
/* 颜色选择器 */
.ele-setting-color-picker.el-color-picker {
height: auto;
margin-top: 8px;
.el-color-picker__trigger {
padding: 0;
width: 20px;
height: 20px;
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
}
.el-color-picker__color {
border: none;
}
.el-color-picker__color-inner {
border-radius: 2px;
}
.el-color-picker__empty {
background: conic-gradient(
from 90deg at 50% 50%,
rgb(255, 0, 0) -19.41deg,
rgb(255, 0, 0) 18.76deg,
rgb(255, 138, 0) 59.32deg,
rgb(255, 230, 0) 99.87deg,
rgb(20, 255, 0) 141.65deg,
rgb(0, 163, 255) 177.72deg,
rgb(5, 0, 255) 220.23deg,
rgb(173, 0, 255) 260.13deg,
rgb(255, 0, 199) 300.69deg,
rgb(255, 0, 0) 340.59deg,
rgb(255, 0, 0) 378.76deg
);
top: 0;
left: 0;
right: 0;
bottom: 0;
transform: none;
border-radius: 2px;
font-size: 0;
}
.el-color-picker__icon {
font-size: 14px;
}
}
</style>

262
src/layout/index.vue

@ -1,262 +0,0 @@
<!-- 框架布局 -->
<template>
<ele-pro-layout
:menus="menus"
:tabs="theme.tabs"
:collapse="theme.collapse"
:side-nav-collapse="theme.sideNavCollapse"
:body-fullscreen="theme.bodyFullscreen"
:show-tabs="theme.showTabs"
:show-footer="theme.showFooter"
:head-style="theme.headStyle"
:side-style="theme.sideStyle"
:layout-style="theme.layoutStyle"
:side-menu-style="theme.sideMenuStyle"
:tab-style="theme.tabStyle"
:fixed-header="theme.fixedHeader"
:fixed-sidebar="theme.fixedSidebar"
:fixed-body="theme.fixedBody"
:body-full="theme.bodyFull"
:logo-auto-size="theme.logoAutoSize"
:colorful-icon="theme.colorfulIcon"
:side-unique-open="theme.sideUniqueOpen"
:project-name="PROJECT_NAME"
:hide-footers="HIDE_FOOTERS"
:hide-sidebars="HIDE_SIDEBARS"
:repeatable-tabs="REPEATABLE_TABS"
:home-title="homeTitle"
:locale="locale"
:i18n="i18n"
@update:collapse="updateCollapse"
@update:side-nav-collapse="updateSideNavCollapse"
@update:body-fullscreen="updateBodyFullscreen"
@tab-add="addPageTab"
@tab-remove="removePageTab"
@tab-remove-all="removeAllPageTab"
@tab-remove-left="removeLeftPageTab"
@tab-remove-right="removeRightPageTab"
@tab-remove-other="removeOtherPageTab"
@reload-page="reloadPageTab"
@logo-click="onLogoClick"
@screen-size-change="screenSizeChange"
@set-home-components="setHomeComponents"
>
<!-- 路由出口 -->
<router-layout />
<!-- logo图标 -->
<template slot="logo">
<img src="@/assets/logo.svg" alt="logo" />
</template>
<!-- 顶栏右侧区域 -->
<template slot="right">
<header-tools :fullscreen="fullscreen" @fullscreen="onFullscreen" />
</template>
<!-- 全局页脚 -->
<template slot="footer">
<page-footer />
</template>
<!-- 自定义菜单标题增加徽章小红点 -->
<template slot="title" slot-scope="{ title, item }">
<span>{{ title }} </span>
<div v-if="item.meta && item.meta.badge" class="ele-menu-badge">
<el-badge :value="item.meta.badge" :type="item.meta.badgeColor" />
</div>
</template>
<template slot="top-title" slot-scope="{ title, item }">
<span>{{ title }} </span>
<div v-if="item.meta && item.meta.badge" class="ele-menu-badge">
<el-badge :value="item.meta.badge" :type="item.meta.badgeColor" />
</div>
</template>
<template slot="nav-title" slot-scope="{ title, item }">
<span>{{ title }} </span>
<div v-if="item.meta && item.meta.badge" class="ele-menu-badge">
<el-badge :value="item.meta.badge" :type="item.meta.badgeColor" />
</div>
</template>
</ele-pro-layout>
</template>
<script>
import { mapGetters } from 'vuex';
import { toggleFullscreen, isFullscreen } from 'ele-admin';
import RouterLayout from '@/components/RouterLayout/index.vue';
import HeaderTools from './components/header-tools.vue';
import PageFooter from './components/page-footer.vue';
import {
PROJECT_NAME,
HIDE_SIDEBARS,
HIDE_FOOTERS,
REPEATABLE_TABS,
HOME_TITLE
} from '@/config/setting';
import {
addPageTab,
removePageTab,
removeAllPageTab,
removeLeftPageTab,
removeRightPageTab,
removeOtherPageTab,
reloadPageTab,
setHomeComponents
} from '@/utils/page-tab-util';
export default {
name: 'EleLayout',
components: {
RouterLayout,
HeaderTools,
PageFooter
},
data() {
return {
PROJECT_NAME,
HIDE_SIDEBARS,
HIDE_FOOTERS,
REPEATABLE_TABS,
//
fullscreen: false
};
},
computed: {
//
locale() {
return this.$i18n.locale;
},
//
homeTitle() {
return HOME_TITLE ?? this.$t('layout.home');
},
//
menus() {
return this.$store.state.user.menus;
},
//
...mapGetters(['theme'])
},
methods: {
updateCollapse(value) {
this.$store.dispatch('theme/setCollapse', value);
},
updateSideNavCollapse(value) {
this.$store.dispatch('theme/setSideNavCollapse', value);
},
updateBodyFullscreen(value) {
this.$store.dispatch('theme/setBodyFullscreen', value);
},
onLogoClick(isHome) {
isHome || this.$router.push('/');
},
screenSizeChange() {
this.$store.dispatch('theme/updateScreenSize');
this.fullscreen = isFullscreen();
},
onFullscreen() {
try {
this.fullscreen = toggleFullscreen();
} catch (e) {
this.$message.error('您的浏览器不支持全屏模式');
}
},
/* 菜单标题国际化 */
i18n(_path, key) {
const k = 'route.' + key + '._name';
const title = this.$t(k);
return title === k ? undefined : title;
},
//
addPageTab,
removePageTab,
removeAllPageTab,
removeLeftPageTab,
removeRightPageTab,
removeOtherPageTab,
reloadPageTab,
setHomeComponents
}
};
</script>
<style lang="scss">
//
.ele-menu-badge {
position: absolute;
top: 50%;
right: 14px;
line-height: 1;
margin-top: -9px;
font-size: 0;
.el-badge__content {
height: 18px;
line-height: 18px;
border-radius: 9px;
border: none;
min-width: 18px;
padding: 0 4px;
box-sizing: border-box;
}
}
//
.el-submenu > .el-submenu__title .ele-menu-badge {
right: 36px;
}
//
.el-menu--popup {
.el-submenu > .el-submenu__title .ele-menu-badge {
right: 20px;
}
}
//
.ele-admin-collapse .ele-admin-sidebar-menus > .el-menu {
& > .el-menu-item,
& > .el-submenu > .el-submenu__title {
.ele-menu-badge {
top: 6px;
right: 6px;
margin: 0;
}
}
}
//
.ele-admin-header-nav.el-menu {
& > .el-menu-item,
& > .el-submenu > .el-submenu__title {
.ele-menu-badge {
position: static;
right: auto;
top: auto;
display: inline-block;
vertical-align: 6px;
margin: 0 0 0 2px;
}
}
}
//
.ele-admin-sidebar-nav-menu > .el-menu {
& > .el-menu-item,
& > .el-submenu > .el-submenu__title {
.ele-menu-badge {
top: 2px;
right: 4px;
margin: 0;
}
}
}
//
.ele-admin-nav-collapse .ele-admin-sidebar-nav-menu > .el-menu {
& > .el-menu-item,
& > .el-submenu > .el-submenu__title {
.ele-menu-badge {
top: -2px;
right: -2px;
}
}
}
</style>

33
src/main.js

@ -1,33 +0,0 @@
/** 主入口js */
import Vue from 'vue';
import App from './App.vue';
import store from './store';
import router from './router';
import permission from './utils/permission';
import './styles/index.scss';
import EleAdmin from 'ele-admin';
import VueClipboard from 'vue-clipboard2';
import i18n from './i18n';
import { MAP_KEY, LICENSE_CODE } from '@/config/setting';
Vue.config.productionTip = false;
Vue.use(EleAdmin, {
response: {
dataName: 'list'
},
mapKey: MAP_KEY,
license: LICENSE_CODE,
i18n: (key, value) => i18n.t(key, value)
});
Vue.use(permission);
Vue.use(VueClipboard);
new Vue({
router,
store,
i18n,
render: (h) => h(App)
}).$mount('#app');

135
src/router/index.js

@ -1,135 +0,0 @@
/**
* 路由配置
*/
import Vue from 'vue';
import VueRouter from 'vue-router';
import { menuToRoutes } from 'ele-admin';
import {
PROJECT_NAME,
WHITE_LIST,
HOME_PATH,
REDIRECT_PATH
} from '@/config/setting';
import { getToken } from '@/utils/token-util';
import store from '@/store';
import EleLayout from '@/layout/index.vue';
import RedirectLayout from '@/components/RedirectLayout';
import RouterLayout from '@/components/RouterLayout/index.vue';
import NProgress from 'nprogress';
Vue.use(VueRouter);
// 静态路由
const routes = [
{
path: '/login',
component: () => import('@/views/login'),
meta: { title: '登录' }
},
{
path: '/forget',
component: () => import('@/views/forget'),
meta: { title: '忘记密码' }
},
// 404
{
path: '*',
component: () => import('@/views/exception/404')
}
];
const router = new VueRouter({
routes,
mode: 'history',
base: process.env.BASE_URL
});
// 路由守卫
router.beforeEach((to, from, next) => {
if (!from.path.includes(REDIRECT_PATH)) {
NProgress.start();
}
updateTitle(to);
// 判断是否登录
if (getToken()) {
// 还未注册动态路由则先获取
if (!store.state.user.menus) {
store
.dispatch('user/fetchUserInfo')
.then(({ menus, homePath }) => {
addMenuRoutes(menus, homePath);
next({ ...to, replace: true });
})
.catch(() => {
next();
});
} else {
next();
}
} else if (WHITE_LIST.includes(to.path)) {
next();
} else {
next({
path: '/login',
query: to.path === '/' ? {} : { from: to.path }
});
}
});
router.afterEach((to) => {
if (!to.path.includes(REDIRECT_PATH)) {
setTimeout(() => {
NProgress.done(true);
}, 300);
}
});
/**
* 添加动态路由
* @param menus 菜单数据
* @param homePath 菜单数据的第一个页面地址
*/
function addMenuRoutes(menus, homePath) {
router.addRoute({
path: '/',
component: EleLayout,
redirect: HOME_PATH ?? homePath,
children: menuToRoutes(
menus,
getComponent,
[],
REDIRECT_PATH,
RedirectLayout
)
});
}
/**
* 更新浏览器标题
* @param route 路由信息
*/
function updateTitle(route) {
if (route && !route.path?.includes(REDIRECT_PATH)) {
const names = [];
if (route.meta?.title) {
names.push(route.meta.title);
}
if (PROJECT_NAME) {
names.push(PROJECT_NAME);
}
document.title = names.join(' - ');
}
}
/**
* 获取路由组件
* @param component 组件名称
*/
function getComponent(component) {
if (!component) {
return RouterLayout;
}
return () => import('@/views/' + component);
}
export default router;

7
src/store/getters.js

@ -1,7 +0,0 @@
/**
* vuex getter
*/
export default {
user: (state) => state.user,
theme: (state) => state.theme
};

21
src/store/index.js

@ -1,21 +0,0 @@
/**
* vuex状态管理
*/
import Vue from 'vue';
import Vuex from 'vuex';
import getters from './getters';
import user from './modules/user';
import theme from './modules/theme';
Vue.use(Vuex);
export default new Vuex.Store({
state: {},
mutations: {},
actions: {},
modules: {
user,
theme
},
getters
});

506
src/store/modules/theme.js

@ -1,506 +0,0 @@
/**
* 主题状态管理
*/
import {
screenWidth,
screenHeight,
contentWidth,
contentHeight
} from 'ele-admin';
import { changeColor } from 'ele-admin/es/utils/theme-util';
import { TAB_KEEP_ALIVE, THEME_STORE_NAME } from '@/config/setting';
// state默认值
const DEFAULT_STATE = Object.freeze({
// 多页签数据
tabs: [],
// 是否折叠侧边栏
collapse: false,
// 是否折叠侧栏一级菜单
sideNavCollapse: false,
// 内容区域是否全屏
bodyFullscreen: false,
// 是否开启多页签
showTabs: true,
// 是否开启页脚
showFooter: true,
// 顶栏风格: light(亮色), dark(暗色), primary(主色)
headStyle: 'light',
// 侧边栏风格: light(亮色), dark(暗色)
sideStyle: 'dark',
// 布局风格: side(默认), top(顶栏菜单), mix(混合菜单)
layoutStyle: 'side',
// 侧边栏菜单风格: default(默认), mix(双排菜单)
sideMenuStyle: 'default',
// 标签页风格: default(默认), dot(圆点), card(卡片)
tabStyle: 'default',
// 是否固定顶栏
fixedHeader: false,
// 是否固定侧栏
fixedSidebar: true,
// 是否固定主体
fixedBody: true,
// 内容区域宽度铺满
bodyFull: true,
// logo是否自适应宽度
logoAutoSize: false,
// 侧栏是否彩色图标
colorfulIcon: false,
// 侧栏是否只保持一个子菜单展开
sideUniqueOpen: true,
// 是否是色弱模式
weakMode: false,
// 是否是暗黑模式
darkMode: false,
// 主题色
color: null,
// 主页的组件
homeComponents: [],
// 刷新路由时的参数
routeReload: null,
// 屏幕宽度
screenWidth: screenWidth(),
// 屏幕高度
screenHeight: screenHeight(),
// 内容区域宽度
contentWidth: contentWidth(),
// 内容区域高度
contentHeight: contentHeight()
});
// 延时操作定时器
let disableTransitionTimer, updateContentSizeTimer;
const weakClass = 'ele-admin-weak';
const disabledClass = 'ele-transition-disabled';
/**
* 读取缓存配置
*/
function getCacheSetting() {
try {
const value = localStorage.getItem(THEME_STORE_NAME);
if (value) {
const cache = JSON.parse(value);
if (typeof cache === 'object' && cache !== null) {
return cache;
}
}
} catch (e) {
console.error(e);
}
return {};
}
/**
* 缓存配置
*/
function cacheSetting(key, value) {
const cache = getCacheSetting();
if (cache[key] !== value) {
cache[key] = value;
localStorage.setItem(THEME_STORE_NAME, JSON.stringify(cache));
}
}
/**
* 切换色弱模式
*/
function changeWeakMode(weakMode) {
if (weakMode) {
document.body.classList.add(weakClass);
} else {
document.body.classList.remove(weakClass);
}
}
/**
* 切换主题
*/
function changeTheme(value, dark) {
return new Promise((resolve, reject) => {
try {
changeColor(value, dark);
resolve();
} catch (e) {
reject(e);
}
});
}
/**
* 切换布局时禁用过渡动画
*/
function disableTransition() {
disableTransitionTimer && clearTimeout(disableTransitionTimer);
document.body.classList.add(disabledClass);
disableTransitionTimer = setTimeout(() => {
document.body.classList.remove(disabledClass);
}, 100);
}
/**
* 获取含本地缓存的state值
*/
function getState() {
const state = Object.assign({}, DEFAULT_STATE);
const cache = getCacheSetting();
Object.keys(state).forEach((key) => {
if (typeof cache[key] !== 'undefined') {
state[key] = cache[key];
}
});
return state;
}
export default {
namespaced: true,
state: getState(),
getters: {
// 需要keep-alive的组件
keepAliveInclude(state) {
if (!TAB_KEEP_ALIVE || !state.showTabs) {
return [];
}
const components = new Set();
const { reloadPath, reloadHome } = state.routeReload || {};
state.tabs?.forEach((t) => {
const isReload = reloadPath && reloadPath === t.fullPath;
if (!isReload && t.components) {
t.components.forEach((c) => {
if (typeof c === 'string' && c) {
components.add(c);
}
});
}
});
if (!reloadHome) {
state.homeComponents?.forEach((c) => {
if (typeof c === 'string' && c) {
components.add(c);
}
});
}
return Array.from(components);
}
},
mutations: {
SET(state, { key, value }) {
state[key] = value;
}
},
actions: {
setTabs({ commit }, value) {
commit('SET', { key: 'tabs', value });
//cacheSetting('tabs', value);
},
setCollapse({ commit, dispatch }, value) {
commit('SET', { key: 'collapse', value });
dispatch('delayUpdateContentSize', 800);
},
setSideNavCollapse({ commit, dispatch }, value) {
commit('SET', { key: 'sideNavCollapse', value });
dispatch('delayUpdateContentSize', 800);
},
setBodyFullscreen({ commit, dispatch }, value) {
disableTransition();
commit('SET', { key: 'bodyFullscreen', value });
dispatch('delayUpdateContentSize', 800);
},
setShowTabs({ commit, dispatch }, value) {
commit('SET', { key: 'showTabs', value });
cacheSetting('showTabs', value);
dispatch('delayUpdateContentSize');
},
setShowFooter({ commit, dispatch }, value) {
commit('SET', { key: 'showFooter', value });
cacheSetting('showFooter', value);
dispatch('delayUpdateContentSize');
},
setHeadStyle({ commit }, value) {
commit('SET', { key: 'headStyle', value });
cacheSetting('headStyle', value);
},
setSideStyle({ commit }, value) {
commit('SET', { key: 'sideStyle', value });
cacheSetting('sideStyle', value);
},
setLayoutStyle({ commit, dispatch }, value) {
disableTransition();
commit('SET', { key: 'layoutStyle', value });
cacheSetting('layoutStyle', value);
dispatch('delayUpdateContentSize');
},
setSideMenuStyle({ commit, dispatch }, value) {
disableTransition();
commit('SET', { key: 'sideMenuStyle', value });
cacheSetting('sideMenuStyle', value);
dispatch('delayUpdateContentSize');
},
setTabStyle({ commit }, value) {
commit('SET', { key: 'tabStyle', value });
cacheSetting('tabStyle', value);
},
setFixedHeader({ commit }, value) {
disableTransition();
commit('SET', { key: 'fixedHeader', value });
cacheSetting('fixedHeader', value);
},
setFixedSidebar({ commit }, value) {
disableTransition();
commit('SET', { key: 'fixedSidebar', value });
cacheSetting('fixedSidebar', value);
},
setFixedBody({ commit }, value) {
disableTransition();
commit('SET', { key: 'fixedBody', value });
cacheSetting('fixedBody', value);
},
setBodyFull({ commit, dispatch }, value) {
commit('SET', { key: 'bodyFull', value });
cacheSetting('bodyFull', value);
dispatch('delayUpdateContentSize');
},
setLogoAutoSize({ commit }, value) {
disableTransition();
commit('SET', { key: 'logoAutoSize', value });
cacheSetting('logoAutoSize', value);
},
setColorfulIcon({ commit }, value) {
commit('SET', { key: 'colorfulIcon', value });
cacheSetting('colorfulIcon', value);
},
setSideUniqueOpen({ commit }, value) {
commit('SET', { key: 'sideUniqueOpen', value });
cacheSetting('sideUniqueOpen', value);
},
setWeakMode({ commit }, value) {
return new Promise((resolve) => {
changeWeakMode(value);
commit('SET', { key: 'weakMode', value });
cacheSetting('weakMode', value);
resolve();
});
},
setDarkMode({ commit, state }, value) {
return new Promise((resolve, reject) => {
changeTheme(state.color, value)
.then(() => {
commit('SET', { key: 'darkMode', value });
cacheSetting('darkMode', value);
resolve();
})
.catch((e) => {
reject(e);
});
});
},
setColor({ commit, state }, value) {
return new Promise((resolve, reject) => {
changeTheme(value, state.darkMode)
.then(() => {
commit('SET', { key: 'color', value });
cacheSetting('color', value);
resolve();
})
.catch((e) => {
reject(e);
});
});
},
// 设置主页对应的组件
setHomeComponents({ commit }, value) {
commit('SET', { key: 'homeComponents', value });
},
// 设置刷新路由信息
setRouteReload({ commit }, value) {
commit('SET', { key: 'routeReload', value });
},
// 更新屏幕尺寸
updateScreenSize({ commit, dispatch }) {
commit('SET', { key: 'screenWidth', value: screenWidth() });
commit('SET', { key: 'screenHeight', value: screenHeight() });
dispatch('updateContentSize');
},
// 更新内容区域尺寸
updateContentSize({ commit }) {
commit('SET', { key: 'contentWidth', value: contentWidth() });
commit('SET', { key: 'contentHeight', value: contentHeight() });
},
// 延时更新内容区域尺寸
delayUpdateContentSize({ dispatch }, delay) {
updateContentSizeTimer && clearTimeout(updateContentSizeTimer);
updateContentSizeTimer = setTimeout(() => {
dispatch('updateContentSize');
}, delay ?? 100);
},
// 重置配置
resetSetting({ commit, state }) {
return new Promise((resolve, reject) => {
disableTransition();
[
'showTabs',
'showFooter',
'headStyle',
'sideStyle',
'layoutStyle',
'sideMenuStyle',
'tabStyle',
'fixedHeader',
'fixedSidebar',
'fixedBody',
'bodyFull',
'logoAutoSize',
'colorfulIcon',
'sideUniqueOpen',
'weakMode',
'darkMode',
'color'
].forEach((key) => {
commit('SET', { key, value: DEFAULT_STATE[key] });
});
localStorage.removeItem(THEME_STORE_NAME);
changeWeakMode(state.weakMode);
changeTheme(state.color, state.darkMode)
.then(() => {
resolve();
})
.catch((e) => {
reject(e);
});
});
},
// 恢复主题
recoverTheme({ state }) {
// 恢复色弱模式
if (state.weakMode) {
changeWeakMode(true);
}
// 恢复主题色
if (state.color || state.darkMode) {
changeTheme(state.color, state.darkMode).catch((e) => {
console.error(e);
});
}
},
// 添加页签
tabAdd({ dispatch, state }, data) {
if (Array.isArray(data)) {
data.forEach((d) => {
dispatch('tabAdd', d);
});
return;
}
const i = state.tabs.findIndex((d) => d.key === data.key);
if (i === -1) {
dispatch('setTabs', state.tabs.concat([data]));
} else if (data.fullPath !== state.tabs[i].fullPath) {
dispatch(
'setTabs',
state.tabs
.slice(0, i)
.concat([data])
.concat(state.tabs.slice(i + 1))
);
}
},
// 关闭页签
tabRemove({ dispatch, state }, key) {
return new Promise((resolve) => {
let index = -1;
let lastIndex = -1;
let last;
let lastPath;
for (let i = 0; i < state.tabs.length; i++) {
const t = state.tabs[i];
if (t.closable && (t.key === key || t.fullPath === key)) {
index = i;
break;
}
lastIndex = i;
last = state.tabs[i];
lastPath = last.fullPath;
}
dispatch(
'setTabs',
state.tabs.filter((_d, i) => i !== index)
);
resolve({ lastIndex, lastPath, last });
});
},
// 关闭全部页签
tabRemoveAll({ dispatch, state }, active) {
return new Promise((resolve) => {
const tab = state.tabs.find((d) => d.key === active);
const stay = active ? !!(tab && tab.closable === false) : false;
dispatch(
'setTabs',
state.tabs.filter((d) => !d.closable)
);
resolve(stay);
});
},
// 关闭左侧页签
tabRemoveLeft({ dispatch, state }, key) {
for (let i = 0; i < state.tabs.length; i++) {
if (state.tabs[i].key === key) {
dispatch(
'setTabs',
state.tabs
.filter((d, j) => !d.closable && j < i)
.concat(state.tabs.slice(i))
);
break;
}
}
},
// 关闭右侧页签
tabRemoveRight({ dispatch, state }, key) {
for (let i = 0; i < state.tabs.length; i++) {
if (state.tabs[i].key === key) {
dispatch(
'setTabs',
state.tabs
.slice(0, i + 1)
.concat(state.tabs.filter((d, j) => !d.closable && j > i))
);
break;
}
}
},
// 关闭其它页签
tabRemoveOther({ dispatch, state }, key) {
dispatch(
'setTabs',
state.tabs.filter((d) => !d.closable || d.key === key)
);
},
// 修改页签
tabSetItem({ dispatch, state }, data) {
let i = -1;
if (data.key) {
i = state.tabs.findIndex((d) => d.key === data.key);
} else if (data.fullPath) {
i = state.tabs.findIndex((d) => d.fullPath === data.fullPath);
} else if (data.path) {
i = state.tabs.findIndex((d) => d.path === data.path);
}
if (i !== -1) {
const item = Object.assign({}, state.tabs[i]);
if (data.title) {
item.title = data.title;
}
if (typeof data.closable === 'boolean') {
item.closable = data.closable;
}
if (data.components) {
item.components = data.components;
}
dispatch(
'setTabs',
state.tabs
.slice(0, i)
.concat([item])
.concat(state.tabs.slice(i + 1))
);
}
}
}
};

91
src/store/modules/user.js

@ -1,91 +0,0 @@
/**
* 登录状态管理
*/
import { formatMenus, toTreeData, formatTreeData } from 'ele-admin';
import { USER_MENUS } from '@/config/setting';
import { getUserInfo } from '@/api/layout';
export default {
namespaced: true,
state: {
// 当前登录用户信息
info: null,
// 当前登录用户的菜单
menus: null,
// 当前登录用户的权限
authorities: [],
// 当前登录用户的角色
roles: []
},
mutations: {
// 设置登录用户的信息
setUserInfo(state, info) {
state.info = info;
},
// 设置登录用户的菜单
setMenus(state, menus) {
state.menus = menus;
},
// 设置登录用户的权限
setAuthorities(state, authorities) {
state.authorities = authorities;
},
// 设置登录用户的角色
setRoles(state, roles) {
state.roles = roles;
}
},
actions: {
/**
* 请求用户信息权限角色菜单
*/
async fetchUserInfo({ commit }) {
const result = await getUserInfo();
// 用户信息
commit('setUserInfo', result);
// 用户权限
const authorities =
result.authorities
?.filter((d) => !!d.authority)
?.map((d) => d.authority) ?? [];
commit('setAuthorities', authorities);
// 用户角色
const roles = result.roles?.map((d) => d.roleCode) ?? [];
commit('setRoles', roles);
// 用户菜单, 过滤掉按钮类型并转为children形式
const { menus, homePath } = formatMenus(
USER_MENUS ??
toTreeData({
data: result.authorities?.filter((d) => d.menuType === 0),
idField: 'menuId',
parentIdField: 'parentId'
})
);
commit('setMenus', menus);
return { menus, homePath };
},
/**
* 更新用户信息
*/
setInfo({ commit }, value) {
commit('setUserInfo', value);
},
/**
* 更新菜单的badge
*/
setMenuBadge({ commit, state }, { path, value, color }) {
const menus = formatTreeData(state.menus, (m) => {
if (path === m.path) {
return Object.assign({}, m, {
meta: Object.assign({}, m.meta, {
badge: value,
badgeColor: color
})
});
}
return m;
});
commit('setMenus', menus);
}
}
};

9
src/styles/index.scss

@ -1,9 +0,0 @@
/** 全局样式 */
// 如果需要覆盖更多样式变量请查看文档
$--ele-font-path: '~ele-admin/es/style/fonts';
// 如果不需要切换主题固定为夜间主题使用这个
//@import "~ele-admin/es/style/themes/dark.scss";
// 需要在线切换主题使用这个
@import '~ele-admin/es/style/themes/dynamic.scss';
// 全局引入样式
@import '~ele-admin/es/style/index.scss';

39
src/utils/echarts-mixin.js

@ -1,39 +0,0 @@
/**
* echarts混入
*/
import store from '@/store';
import { THEME_KEY } from 'vue-echarts';
import { ChartTheme } from 'ele-admin';
export function echartsMixin(refs) {
return {
provide: {
// 主题设置
[THEME_KEY]: ChartTheme
},
computed: {
// 内容区域宽度
layoutContentWidth() {
return store?.state?.theme?.contentWidth;
}
},
watch: {
// 监听内容区域宽度变化
layoutContentWidth() {
this.resizeAllCharts();
}
},
// 适配keep-alive
activated() {
this.resizeAllCharts();
},
methods: {
// 重置echarts尺寸
resizeAllCharts() {
refs.forEach((ref) => {
this.$refs[ref]?.resize();
});
}
}
};
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save