commit 377e2fcbc566c471f00b7591670e1beea9e0c12d
Author: liangjiami <2249412933@qq.com>
Date: Fri Jul 4 09:46:43 2025 +0800
第一次提交
diff --git a/.env.test b/.env.test
new file mode 100644
index 0000000..a7ed6ca
--- /dev/null
+++ b/.env.test
@@ -0,0 +1,5 @@
+NODE_ENV = 'test'
+VUE_APP_API_VERSION = 'admin'
+VUE_APP_API_BASEURL = 'https://api.tco211.com/'
+VUE_APP_SSO_LOGINURL = 'http://dev.uc.f2b211.com/index.php/uc/user/login.html'
+VUE_APP_SSO_APPID = '20211117000001117'
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..f31c17b
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,23 @@
+module.export = {
+ rout: true,
+ env: {
+ browser: true,
+ node: true
+ },
+ parserOptions: {
+ ecmaVersion: 6,
+ sourceType: "module",
+ parser: 'babel-eslint'
+ },
+ eslintConfig: {
+ "parser": "babel-eslint"
+ },
+ extends: [
+ 'plugin:vue/recommended'
+ ],
+ plugins: [
+ "prettier"
+ ],
+ // 添加自定义规则
+ rules: {}
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1aac81e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+.env.development
+.env.production
+package-lock.json
+vue.config
+/.history
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c951a64
--- /dev/null
+++ b/README.md
@@ -0,0 +1,391 @@
+# orico_vue3_demo
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
+
+
+### [vee-validate](https://vee-validate.logaretm.com/v4/) 验证
+
+
+ | alpha |
+ alpha_dash |
+ alpha_num |
+ alpha_spaces |
+
+
+ | between |
+ confirmed |
+ dimensions |
+ email |
+
+
+ | excluded |
+ ext |
+ image |
+ one_of |
+
+
+ | integer |
+ is |
+ is_not |
+ length |
+
+
+ | max |
+ max_value |
+ mimes |
+ min |
+
+
+ | max |
+ max_value |
+ mimes |
+ min |
+
+
+ | min_value |
+ numeric |
+ regex |
+ required |
+
+
+ | size |
+ url |
+ mobile |
+ tel |
+
+
+ | identify |
+ decimal |
+ letter_upper |
+ letter_lower |
+
+
+ | character_cn |
+ zipcode |
+ fax |
+ |
+
+
+
+>1. alpha:包含字母字符
+```
+
+
+
+
+
+```
+
+>2. alpha_dash:包含字母字符、数字、破折号或下划线
+```
+
+
+
+
+
+```
+
+>3. alpha_num:包含字母字符或数字
+```
+
+
+
+
+
+```
+
+>4. alpha_spaces:包含字母字符或空格
+```
+
+
+
+
+
+```
+
+>5. between:字段必须具有由最小值和最大值限定的数值
+```
+
+
+
+
+
+
+
+
+```
+
+>6. confirmed:验证的字段必须具有与确认字段相同的值
+```
+
+```
+
+>7. digits:字段必须是数字并且具有指定的位数
+```
+
+
+
+
+
+```
+
+>8. dimensions:字段的文件必须是具有确切指定维度的图像(jpg、 svg、 jpeg、 png、 bmp、 gif)。
+```
+
+
+
+
+
+
+
+
+```
+
+>9. email:字段必须是有效的电子邮件
+```
+
+
+
+
+
+```
+
+>10. excluded:正在验证的字段必须有一个不在指定列表中的值
+```
+
+
+
+
+
+```
+
+>11. ext:字段的文件必须具有指定的扩展名之一
+```
+
+
+
+
+
+```
+
+>12. image:验证字段中的文件必须具有图像 mime 类型(image/*)
+```
+
+
+
+
+
+```
+
+>13. integer:验证下的字段必须是有效的整数值。不接受指数表示法
+```
+
+
+
+
+
+```
+
+>14. is:验证下的字段必须匹配给定的值,并使用严格的相等性
+```
+
+
+
+
+
+```
+
+>15. is_not:验证下的字段必须与给定的值不匹配,并使用严格相等
+```
+
+
+
+
+
+```
+
+>16. length:验证下的字段必须具有指定的项数,只能用于迭代对象,允许的迭代值包括字符串、数组和任何可以与 Array.from 一起使用的对象
+```
+
+
+
+
+
+```
+
+>17. max:验证长度下的字段不能超过指定的长度
+```
+
+
+
+
+
+```
+
+>18. max_value:正在验证的字段必须是一个数值,并且不能大于指定的值
+```
+
+
+
+
+
+```
+
+>19. mimes:在验证下添加到字段的文件类型应该具有指定的 mime 类型之一
+```
+
+
+
+
+
+```
+
+>20. min:验证长度下的字段不应小于指定的长度
+```
+
+
+
+
+
+```
+
+>21. min_value:正在验证的字段必须是一个数值,并且不能小于指定的值
+```
+
+
+
+
+
+```
+
+>22. numeric:正在验证的字段必须只包含数字
+```
+
+
+
+
+
+```
+
+>23. one_of:正在验证的字段必须具有指定列表中的值
+```
+
+
+
+
+
+```
+
+>24. regex:验证下的字段必须与指定的正则表达式匹配
+```
+
+
+
+
+```
+
+>25. required:正在验证的字段必须有一个非空值。默认情况下,如果验证器具有“空值”,则所有验证器都通过验证,除非它们是必需的。这些空值是空字符串、未定义、 null、 false 和空数组。
+```
+
+
+
+
+
+```
+
+>26. size:字段的文件大小不得超过指定的大小(单位为千字节)
+```
+
+
+
+
+
+```
+
+>27. url:验证下的字段必须是有效的 url。如果你需要更多的限制,你可以传递一个模式。
+```
+
+
+
+
+
+```
+
+>29. mobile:验证是否为手机号
+```
+
+
+```
+
+>30. tel:验证是否为电话
+```
+
+
+```
+
+>31. identify:
+```
+
+
+```
+
+>32. decimal:验证小数位数
+```
+
+
+```
+
+>33. letter_upper:是否为大写字母
+```
+
+
+```
+
+>34. letter_lower:是否为小写字母
+```
+
+
+```
+
+>35. character_cn:是否为中文字符
+```
+
+
+```
+
+>36. zipcode:邮政编码格式验证
+```
+
+
+```
+
+>37. fax:传真格式验证
+```
+
+
+```
\ No newline at end of file
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..e955840
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset'
+ ]
+}
diff --git a/dist7.3.rar b/dist7.3.rar
new file mode 100644
index 0000000..7e11444
Binary files /dev/null and b/dist7.3.rar differ
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..7f7c35a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,89 @@
+{
+ "name": "tco211",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service serve --open --mode=development",
+ "build:dev": "vue-cli-service build --mode=development",
+ "build:pro": "vue-cli-service build --mode=production",
+ "build:test": "vue-cli-service build --mode test",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "@element-plus/icons": "0.0.11",
+ "@tinymce/tinymce-vue": "^4.0.5",
+ "@vee-validate/i18n": "^4.4.7",
+ "@vee-validate/rules": "^4.4.7",
+ "@vue/composition-api": "^1.7.0",
+ "axios": "^0.21.4",
+ "browser-md5-file": "^1.1.1",
+ "core-js": "^3.17.3",
+ "decimal.js": "^10.4.3",
+ "downloadjs": "^1.4.7",
+ "element-plus": "^1.1.0-beta.9",
+ "exceljs": "^4.3.0",
+ "file-saver": "^2.0.5",
+ "js-md5": "^0.7.3",
+ "jx-orico-com-table": "^0.1.3",
+ "moment": "^2.29.1",
+ "node-sass": "^4.14.1",
+ "script-loader": "^0.7.2",
+ "sortablejs": "^1.14.0",
+ "tinymce": "^5.10.2",
+ "uglifyjs-webpack-plugin": "^2.2.0",
+ "unplugin-vue-components": "^0.15.3",
+ "vee-validate": "^4.4.11",
+ "vue": "^3.2.36",
+ "vue-draggable-next": "^2.1.1",
+ "vue-loader-plugin": "^1.3.0",
+ "vue-router": "^4.0.0-0",
+ "vuex": "^4.0.0-0",
+ "vxe-table": "^4.1.0",
+ "vxe-table-plugin-export-xlsx": "^2.2.1",
+ "xe-utils": "^3.4.0",
+ "xlsx": "^0.17.3"
+ },
+ "devDependencies": {
+ "@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
+ "@vue/cli-plugin-vuex": "~4.5.0",
+ "@vue/cli-service": "~4.5.0",
+ "@vue/compiler-sfc": "^3.2.37",
+ "babel-eslint": "^10.1.0",
+ "babel-plugin-import": "^1.13.3",
+ "compression-webpack-plugin": "^6.1.1",
+ "eslint-plugin-vue": "^7.0.0",
+ "js-cookie": "^3.0.1",
+ "sass-loader": "^8.0.2",
+ "vue-loader": "^17.0.0",
+ "vue-loader-v16": "^16.0.0-beta.5.4",
+ "vue-template-compiler": "^2.7.10"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/essential",
+ "eslint:recommended"
+ ],
+ "parserOptions": {
+ "parser": "babel-eslint"
+ },
+ "rules": {
+ "vue/html-closing-bracket-spacing": "warn",
+ "vue/html-end-tags": "error",
+ "vue/jsx-uses-vars": "warn",
+ "vue/match-component-file-name": "error",
+ "vue/mustache-interpolation-spacing": "warn",
+ "vue/vue-unused-vars": "off",
+ "vue-unused-vars": "off"
+ }
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not dead"
+ ]
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..9b6d8e1
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..39d8a99
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/tinymce/axupimgs/index.js b/public/tinymce/axupimgs/index.js
new file mode 100644
index 0000000..0b3480f
--- /dev/null
+++ b/public/tinymce/axupimgs/index.js
@@ -0,0 +1,7 @@
+// Exports the "autosave" plugin for usage with module loaders
+// Usage:
+// CommonJS:
+// require('tinymce/plugins/autosave')
+// ES2015:
+// import 'tinymce/plugins/autosave'
+require('./plugin.js');
diff --git a/public/tinymce/axupimgs/loading.gif b/public/tinymce/axupimgs/loading.gif
new file mode 100644
index 0000000..3fcefe7
Binary files /dev/null and b/public/tinymce/axupimgs/loading.gif differ
diff --git a/public/tinymce/axupimgs/plugin.js b/public/tinymce/axupimgs/plugin.js
new file mode 100644
index 0000000..3a9ea5a
--- /dev/null
+++ b/public/tinymce/axupimgs/plugin.js
@@ -0,0 +1,77 @@
+tinymce.PluginManager.add('axupimgs', function (editor, url) {
+ var pluginName = '多图上传';
+ window.axupimgs = {}; //扔外部公共变量,也可以扔一个自定义的位置
+
+ // var baseURL = tinymce.baseURL;
+ // var baseURL = "http://swt.usuc.f2b211.com:8081"
+ // var iframe1 = baseURL + '/plugins/axupimgs/upfiles.html';
+ var iframe1 = '../tinymce/axupimgs/upfiles.html';
+ axupimgs.images_upload_handler = editor.getParam('images_upload_handler', undefined, 'function');
+ axupimgs.images_upload_base_path = editor.getParam('images_upload_base_path', '', 'string');
+ axupimgs.axupimgs_filetype = editor.getParam('axupimgs_filetype', '.png,.gif,.jpg,.jpeg', 'string');
+ axupimgs.res = [];
+ var openDialog = function () {
+ return editor.windowManager.openUrl({
+ title: pluginName,
+ size: 'large',
+ url: iframe1,
+ buttons: [
+ {
+ type: 'cancel',
+ text: 'Close'
+ },
+ {
+ type: 'custom',
+ text: 'Save',
+ name: 'save',
+ primary: true
+ },
+ ],
+ onAction: function (api, details) {
+ switch (details.name) {
+ case 'save':
+ var html = '';
+ var imgs = axupimgs.res;
+ var len = imgs.length;
+ for (let i = 0; i < len; i++) {
+ if (imgs[i].url) {
+ html += '
';
+ }
+ }
+ editor.insertContent(html);
+ axupimgs.res = [];
+ api.close();
+ break;
+ default:
+ break;
+ }
+
+ }
+ });
+ };
+
+ editor.ui.registry.getAll().icons.axupimgs || editor.ui.registry.addIcon('axupimgs', '');
+
+ editor.ui.registry.addButton('axupimgs', {
+ icon: 'axupimgs',
+ tooltip: pluginName,
+ onAction: function () {
+ openDialog();
+ }
+ });
+ editor.ui.registry.addMenuItem('axupimgs', {
+ icon: 'axupimgs',
+ text: '图片批量上传...',
+ onAction: function () {
+ openDialog();
+ }
+ });
+ return {
+ getMetadata: function () {
+ return {
+ name: pluginName,
+ url: "http://tinymce.ax-z.cn/more-plugins/axupimgs.php",
+ };
+ }
+ };
+});
diff --git a/public/tinymce/axupimgs/plugin.min.js b/public/tinymce/axupimgs/plugin.min.js
new file mode 100644
index 0000000..db7a3cc
--- /dev/null
+++ b/public/tinymce/axupimgs/plugin.min.js
@@ -0,0 +1,75 @@
+tinymce.PluginManager.add('axupimgs', function(editor, url) {
+ var pluginName='Ax多图片上传';
+ window.axupimgs={}; //扔外部公共变量,也可以扔一个自定义的位置
+
+ var baseURL=tinymce.baseURL;
+ var iframe1 = baseURL+'/plugins/axupimgs/upfiles.html';
+ axupimgs.images_upload_handler = editor.getParam('images_upload_handler', undefined, 'function');
+ axupimgs.images_upload_base_path = editor.getParam('images_upload_base_path', '', 'string');
+ axupimgs.axupimgs_filetype = editor.getParam('axupimgs_filetype', '.png,.gif,.jpg,.jpeg', 'string');
+ axupimgs.res=[];
+ var openDialog = function() {
+ return editor.windowManager.openUrl({
+ title: pluginName,
+ size: 'large',
+ url:iframe1,
+ buttons: [
+ {
+ type: 'cancel',
+ text: 'Close'
+ },
+ {
+ type: 'custom',
+ text: 'Save',
+ name: 'save',
+ primary: true
+ },
+ ],
+ onAction: function (api, details) {
+ switch (details.name) {
+ case 'save':
+ var html = '';
+ var imgs = axupimgs.res;
+ var len = imgs.length;
+ for(let i=0;i';
+ }
+ }
+ editor.insertContent(html);
+ axupimgs.res=[];
+ api.close();
+ break;
+ default:
+ break;
+ }
+
+ }
+ });
+ };
+
+ editor.ui.registry.getAll().icons.axupimgs || editor.ui.registry.addIcon('axupimgs','');
+
+ editor.ui.registry.addButton('axupimgs', {
+ icon: 'axupimgs',
+ tooltip: pluginName,
+ onAction: function() {
+ openDialog();
+ }
+ });
+ editor.ui.registry.addMenuItem('axupimgs', {
+ icon: 'axupimgs',
+ text: '图片批量上传...',
+ onAction: function() {
+ openDialog();
+ }
+ });
+ return {
+ getMetadata: function() {
+ return {
+ name: pluginName,
+ url: "http://tinymce.ax-z.cn/more-plugins/axupimgs.php",
+ };
+ }
+ };
+});
diff --git a/public/tinymce/axupimgs/upfiles.html b/public/tinymce/axupimgs/upfiles.html
new file mode 100644
index 0000000..7f8f62c
--- /dev/null
+++ b/public/tinymce/axupimgs/upfiles.html
@@ -0,0 +1,203 @@
+
+
+
+
+axupimgs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/tinymce/langs/zh_CN.js b/public/tinymce/langs/zh_CN.js
new file mode 100644
index 0000000..2a784f5
--- /dev/null
+++ b/public/tinymce/langs/zh_CN.js
@@ -0,0 +1,462 @@
+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 character...": "\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",
+"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",
+"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0",
+"Accessibility": "\u8f85\u52a9\u529f\u80fd",
+"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684",
+"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",
+"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",
+"Open link": "\u6253\u5f00\u94fe\u63a5",
+"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",
+"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \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\u548c\u66ff\u6362",
+"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",
+"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e",
+"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
+"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00",
+"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef",
+"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",
+"Caption": "\u6807\u9898",
+"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",
+"Count": "\u8ba1\u6570",
+"Document": "\u6587\u6863",
+"Selection": "\u9009\u62e9",
+"Words": "\u5355\u8bcd",
+"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)",
+"{0} characters": "{0} \u4e2a\u5b57\u7b26",
+"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",
+"Light Green": "\u6d45\u7eff\u8272",
+"Light Yellow": "\u6d45\u9ec4\u8272",
+"Light Red": "\u6d45\u7ea2\u8272",
+"Light Purple": "\u6d45\u7d2b\u8272",
+"Light Blue": "\u6d45\u84dd\u8272",
+"Dark Purple": "\u6df1\u7d2b\u8272",
+"Dark Blue": "\u6df1\u84dd\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",
+"Font": "\u5b57\u4f53",
+"Size": "\u5b57\u53f7",
+"More...": "\u66f4\u591a...",
+"Select...": "\u9009\u62e9...",
+"Preferences": "\u9996\u9009\u9879",
+"Yes": "\u662f",
+"No": "\u5426",
+"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15",
+"Version": "\u7248\u672c",
+"Code view": "\u4ee3\u7801\u89c6\u56fe",
+"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae",
+"List Properties": "\u5217\u8868\u5c5e\u6027",
+"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027",
+"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868",
+"Line height": "\u884c\u9ad8",
+"comments": "\u5907\u6ce8",
+"Format Painter": "\u683c\u5f0f\u5237",
+"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6",
+"Capitalization": "\u5927\u5199",
+"lowercase": "\u5c0f\u5199",
+"UPPERCASE": "\u5927\u5199",
+"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199",
+"permanent pen": "\u8bb0\u53f7\u7b14",
+"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027",
+"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...",
+"case change": "\u6848\u4f8b\u66f4\u6539",
+"page embed": "\u9875\u9762\u5d4c\u5165",
+"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...",
+"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f",
+"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868",
+"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868",
+"Sort": "\u6392\u5e8f",
+"Order": "\u6392\u5e8f",
+"Sort by": "\u6392\u5e8f\u65b9\u5f0f",
+"Ascending": "\u5347\u5e8f",
+"Descending": "\u964d\u5e8f",
+"Column {0}": "\u5217{0}",
+"Row {0}": "\u884c{0}",
+"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...",
+"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd",
+"Suggestions": "\u5efa\u8bae",
+"Change": "\u66f4\u6539",
+"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae",
+"Success": "\u6210\u529f",
+"Repair": "\u4fee\u590d",
+"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}",
+"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0",
+"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002",
+"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a",
+"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a",
+"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684",
+"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c",
+"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6",
+"Remove this ID": "\u5220\u9664\u6b64 ID",
+"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs",
+"Checklist": "\u6e05\u5355",
+"Anchor": "\u951a\u70b9",
+"Special character": "\u7279\u6b8a\u7b26\u53f7",
+"Code sample": "\u4ee3\u7801\u793a\u4f8b",
+"Color": "\u989c\u8272",
+"Document properties": "\u6587\u6863\u5c5e\u6027",
+"Image description": "\u56fe\u7247\u63cf\u8ff0",
+"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",
+"Insert template": "\u63d2\u5165\u6a21\u677f"
+});
\ No newline at end of file
diff --git a/public/tinymce/skins/content/dark/content.css b/public/tinymce/skins/content/dark/content.css
new file mode 100644
index 0000000..bae7923
--- /dev/null
+++ b/public/tinymce/skins/content/dark/content.css
@@ -0,0 +1,72 @@
+/**
+ * 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;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #6d737b;
+}
+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;
+}
+.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;
+}
diff --git a/public/tinymce/skins/content/dark/content.min.css b/public/tinymce/skins/content/dark/content.min.css
new file mode 100644
index 0000000..07d40c2
--- /dev/null
+++ b/public/tinymce/skins/content/dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}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}.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}
diff --git a/public/tinymce/skins/content/default/content.css b/public/tinymce/skins/content/default/content.css
new file mode 100644
index 0000000..dd6a5c1
--- /dev/null
+++ b/public/tinymce/skins/content/default/content.css
@@ -0,0 +1,67 @@
+/**
+ * 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;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+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;
+}
diff --git a/public/tinymce/skins/content/default/content.min.css b/public/tinymce/skins/content/default/content.min.css
new file mode 100644
index 0000000..29cd987
--- /dev/null
+++ b/public/tinymce/skins/content/default/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}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}
diff --git a/public/tinymce/skins/content/document/content.css b/public/tinymce/skins/content/document/content.css
new file mode 100644
index 0000000..75f637a
--- /dev/null
+++ b/public/tinymce/skins/content/document/content.css
@@ -0,0 +1,72 @@
+/**
+ * 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;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+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;
+}
diff --git a/public/tinymce/skins/content/document/content.min.css b/public/tinymce/skins/content/document/content.min.css
new file mode 100644
index 0000000..a1feef4
--- /dev/null
+++ b/public/tinymce/skins/content/document/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}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}
diff --git a/public/tinymce/skins/content/writer/content.css b/public/tinymce/skins/content/writer/content.css
new file mode 100644
index 0000000..ceee359
--- /dev/null
+++ b/public/tinymce/skins/content/writer/content.css
@@ -0,0 +1,68 @@
+/**
+ * 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;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+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;
+}
diff --git a/public/tinymce/skins/content/writer/content.min.css b/public/tinymce/skins/content/writer/content.min.css
new file mode 100644
index 0000000..0d8f5d3
--- /dev/null
+++ b/public/tinymce/skins/content/writer/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}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}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.css b/public/tinymce/skins/ui/oxide-dark/content.css
new file mode 100644
index 0000000..9c0e3a8
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.css
@@ -0,0 +1,714 @@
+/**
+ * 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 {
+ content: 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");
+ 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 {
+ content: 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: 1298;
+}
+.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-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.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: 10002;
+}
+.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 video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[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] {
+ position: relative;
+}
+.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] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid transparent;
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: lighten;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.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;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] 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;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.css b/public/tinymce/skins/ui/oxide-dark/content.inline.css
new file mode 100644
index 0000000..8e7521d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.inline.css
@@ -0,0 +1,726 @@
+/**
+ * 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 {
+ content: 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");
+ 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 {
+ content: 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: 1298;
+}
+.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-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.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: 10002;
+}
+.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 video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[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] {
+ position: relative;
+}
+.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] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.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;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] 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: '-';
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.min.css b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css
new file mode 100644
index 0000000..b4ab9a3
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content: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");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content: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}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;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}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;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--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{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--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 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,.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:1298}.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-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.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:700;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 audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[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:0}.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]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.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:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{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]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.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]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.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] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.min.css b/public/tinymce/skins/ui/oxide-dark/content.min.css
new file mode 100644
index 0000000..e27b8a0
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content: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");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content: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}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(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}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;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--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{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--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 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,.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:1298}.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-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.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:700;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 audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[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:0}.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]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.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:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{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]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.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]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.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] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{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}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.css
new file mode 100644
index 0000000..4bdb8ba
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.css
@@ -0,0 +1,29 @@
+/**
+ * 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;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css
new file mode 100644
index 0000000..35f7dc0
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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}
diff --git a/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
new file mode 100644
index 0000000..1e3be03
Binary files /dev/null and b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff differ
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.css b/public/tinymce/skins/ui/oxide-dark/skin.css
new file mode 100644
index 0000000..d34b9c1
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.css
@@ -0,0 +1,3047 @@
+/**
+ * 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/
+ */
+.tox {
+ box-shadow: none;
+ box-sizing: content-box;
+ color: #2A3746;
+ cursor: auto;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ -webkit-tap-highlight-color: transparent;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ vertical-align: initial;
+ white-space: normal;
+}
+.tox *:not(svg):not(rect) {
+ box-sizing: inherit;
+ color: inherit;
+ cursor: inherit;
+ direction: inherit;
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ -webkit-tap-highlight-color: inherit;
+ text-align: inherit;
+ text-decoration: inherit;
+ text-shadow: inherit;
+ text-transform: inherit;
+ vertical-align: inherit;
+ white-space: inherit;
+}
+.tox *:not(svg):not(rect) {
+ /* stylelint-disable-line no-duplicate-selectors */
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ float: none;
+ height: auto;
+ margin: 0;
+ max-width: none;
+ outline: 0;
+ padding: 0;
+ position: static;
+ width: auto;
+}
+.tox:not([dir=rtl]) {
+ direction: ltr;
+ text-align: left;
+}
+.tox[dir=rtl] {
+ direction: rtl;
+ text-align: right;
+}
+.tox-tinymce {
+ border: 1px solid #000000;
+ border-radius: 0;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ overflow: hidden;
+ position: relative;
+ visibility: inherit !important;
+}
+.tox-tinymce-inline {
+ border: none;
+ box-shadow: none;
+}
+.tox-tinymce-inline .tox-editor-header {
+ background-color: transparent;
+ border: 1px solid #000000;
+ border-radius: 0;
+ box-shadow: none;
+}
+.tox-tinymce-aux {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ z-index: 1300;
+}
+.tox-tinymce *:focus,
+.tox-tinymce-aux *:focus {
+ outline: none;
+}
+button::-moz-focus-inner {
+ border: 0;
+}
+.tox[dir=rtl] .tox-icon--flip svg {
+ transform: rotateY(180deg);
+}
+.tox .accessibility-issue__header {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description {
+ align-items: stretch;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .accessibility-issue__description > div {
+ padding-bottom: 4px;
+}
+.tox .accessibility-issue__description > div > div {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description > *:last-child:not(:only-child) {
+ border-color: #000000;
+ border-style: solid;
+}
+.tox .accessibility-issue__repair {
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: #207ab7;
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {
+ border-color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {
+ background-color: rgba(255, 165, 0, 0.5);
+ border-color: rgba(255, 165, 0, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {
+ border-color: rgba(255, 165, 0, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {
+ background-color: rgba(204, 0, 0, 0.5);
+ border-color: rgba(204, 0, 0, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {
+ border-color: rgba(204, 0, 0, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {
+ background-color: rgba(120, 171, 70, 0.5);
+ border-color: rgba(120, 171, 70, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {
+ border-color: rgba(120, 171, 70, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue__header h1,
+.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
+ margin-top: 0;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-left: auto;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 4px 4px 8px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-left-width: 1px;
+ padding-left: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-right: auto;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 8px 4px 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-right-width: 1px;
+ padding-right: 4px;
+}
+.tox .tox-anchorbar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-bar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-button {
+ background-color: #207ab7;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #207ab7;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ line-height: 24px;
+ margin: 0;
+ outline: none;
+ padding: 4px 16px;
+ text-align: center;
+ text-decoration: none;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-button[disabled] {
+ background-color: #207ab7;
+ background-image: none;
+ border-color: #207ab7;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-button:focus:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:hover:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:active:not(:disabled) {
+ background-color: #185d8c;
+ background-image: none;
+ border-color: #185d8c;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary {
+ background-color: #3d546f;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #3d546f;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ color: #fff;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ outline: none;
+ padding: 4px 16px;
+ text-decoration: none;
+ text-transform: none;
+}
+.tox .tox-button--secondary[disabled] {
+ background-color: #3d546f;
+ background-image: none;
+ border-color: #3d546f;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-button--secondary:focus:not(:disabled) {
+ background-color: #34485f;
+ background-image: none;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary:hover:not(:disabled) {
+ background-color: #34485f;
+ background-image: none;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary:active:not(:disabled) {
+ background-color: #2b3b4e;
+ background-image: none;
+ border-color: #2b3b4e;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--icon,
+.tox .tox-button.tox-button--icon,
+.tox .tox-button.tox-button--secondary.tox-button--icon {
+ padding: 4px;
+}
+.tox .tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
+ display: block;
+ fill: currentColor;
+}
+.tox .tox-button-link {
+ background: 0;
+ border: none;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.tox .tox-button-link--sm {
+ font-size: 14px;
+}
+.tox .tox-button--naked {
+ background-color: transparent;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #fff;
+}
+.tox .tox-button--naked[disabled] {
+ background-color: #3d546f;
+ border-color: #3d546f;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-button--naked:hover:not(:disabled) {
+ background-color: #34485f;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked:focus:not(:disabled) {
+ background-color: #34485f;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked:active:not(:disabled) {
+ background-color: #2b3b4e;
+ border-color: #2b3b4e;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked .tox-icon svg {
+ fill: currentColor;
+}
+.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
+ color: #fff;
+}
+.tox .tox-checkbox {
+ align-items: center;
+ border-radius: 3px;
+ cursor: pointer;
+ display: flex;
+ height: 36px;
+ min-width: 36px;
+}
+.tox .tox-checkbox__input {
+ /* Hide from view but visible to screen readers */
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ top: auto;
+ width: 1px;
+}
+.tox .tox-checkbox__icons {
+ align-items: center;
+ border-radius: 3px;
+ box-shadow: 0 0 0 2px transparent;
+ box-sizing: content-box;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ padding: calc(4px - 1px);
+ width: 24px;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: block;
+ fill: rgba(255, 255, 255, 0.2);
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox--disabled {
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
+ border-radius: 3px;
+ box-shadow: inset 0 0 0 1px #207ab7;
+ padding: calc(4px - 1px);
+}
+.tox:not([dir=rtl]) .tox-checkbox__label {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-checkbox__input {
+ left: -10000px;
+}
+.tox:not([dir=rtl]) .tox-bar .tox-checkbox {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__label {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__input {
+ right: -10000px;
+}
+.tox[dir=rtl] .tox-bar .tox-checkbox {
+ margin-right: 4px;
+}
+.tox {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox .tox-collection--toolbar .tox-collection__group {
+ display: flex;
+ padding: 0;
+}
+.tox .tox-collection--grid .tox-collection__group {
+ display: flex;
+ flex-wrap: wrap;
+ max-height: 208px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+.tox .tox-collection--list .tox-collection__group {
+ border-bottom-width: 0;
+ border-color: #1a1a1a;
+ border-left-width: 0;
+ border-right-width: 0;
+ border-style: solid;
+ border-top-width: 1px;
+ padding: 4px 0;
+}
+.tox .tox-collection--list .tox-collection__group:first-child {
+ border-top-width: 0;
+}
+.tox .tox-collection__group-heading {
+ background-color: #333333;
+ color: #fff;
+ cursor: default;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ margin-bottom: 4px;
+ margin-top: -4px;
+ padding: 4px 8px;
+ text-transform: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection__item {
+ align-items: center;
+ color: #fff;
+ cursor: pointer;
+ display: flex;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection--list .tox-collection__item {
+ padding: 4px 8px;
+}
+.tox .tox-collection--toolbar .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--grid .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--list .tox-collection__item--enabled {
+ background-color: #2b3b4e;
+ color: #fff;
+}
+.tox .tox-collection--list .tox-collection__item--active {
+ background-color: #4a5562;
+}
+.tox .tox-collection--toolbar .tox-collection__item--enabled {
+ background-color: #757d87;
+ color: #fff;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active {
+ background-color: #4a5562;
+}
+.tox .tox-collection--grid .tox-collection__item--enabled {
+ background-color: #757d87;
+ color: #fff;
+}
+.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ background-color: #4a5562;
+ color: #fff;
+}
+.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #fff;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #fff;
+}
+.tox .tox-collection__item-icon,
+.tox .tox-collection__item-checkmark {
+ align-items: center;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ width: 24px;
+}
+.tox .tox-collection__item-icon svg,
+.tox .tox-collection__item-checkmark svg {
+ fill: currentColor;
+}
+.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
+ height: 48px;
+ width: 48px;
+}
+.tox .tox-collection__item-label {
+ color: currentColor;
+ display: inline-block;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 24px;
+ text-transform: none;
+ word-break: break-all;
+}
+.tox .tox-collection__item-accessory {
+ color: rgba(255, 255, 255, 0.5);
+ display: inline-block;
+ font-size: 14px;
+ height: 24px;
+ line-height: 24px;
+ text-transform: none;
+}
+.tox .tox-collection__item-caret {
+ align-items: center;
+ display: flex;
+ min-height: 24px;
+}
+.tox .tox-collection__item-caret::after {
+ content: '';
+ font-size: 0;
+ min-height: inherit;
+}
+.tox .tox-collection__item-caret svg {
+ fill: #fff;
+}
+.tox .tox-collection__item--state-disabled {
+ background-color: transparent;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
+ display: none;
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {
+ display: none;
+}
+.tox .tox-collection--horizontal {
+ background-color: #2b3b4e;
+ border: 1px solid #1a1a1a;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+ margin-bottom: 0;
+ overflow-x: auto;
+ padding: 0;
+}
+.tox .tox-collection--horizontal .tox-collection__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: nowrap;
+ margin: 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item {
+ height: 34px;
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item-label {
+ white-space: nowrap;
+}
+.tox .tox-collection--horizontal .tox-collection__item-caret {
+ margin-left: 4px;
+}
+.tox .tox-collection__item-container {
+ display: flex;
+}
+.tox .tox-collection__item-container--row {
+ align-items: center;
+ flex: 1 1 auto;
+ flex-direction: row;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {
+ margin-right: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {
+ justify-content: flex-end;
+ margin-left: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {
+ align-items: flex-start;
+ margin-bottom: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {
+ align-items: center;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {
+ align-items: flex-end;
+ margin-top: auto;
+}
+.tox .tox-collection__item-container--column {
+ -ms-grid-row-align: center;
+ align-self: center;
+ flex: 1 1 auto;
+ flex-direction: column;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {
+ align-items: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {
+ align-items: flex-end;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {
+ align-self: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {
+ -ms-grid-row-align: center;
+ align-self: center;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {
+ align-self: flex-end;
+}
+.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-right: 1px solid #000000;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-collection__item-accessory {
+ margin-left: 16px;
+ text-align: right;
+}
+.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {
+ margin-left: 16px;
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-left: 1px solid #000000;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-collection__item-accessory {
+ margin-right: 16px;
+ text-align: left;
+}
+.tox[dir=rtl] .tox-collection .tox-collection__item-caret {
+ margin-right: 16px;
+ transform: rotateY(180deg);
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {
+ margin-right: 4px;
+}
+.tox .tox-color-picker-container {
+ display: flex;
+ flex-direction: row;
+ height: 225px;
+ margin: 0;
+}
+.tox .tox-sv-palette {
+ box-sizing: border-box;
+ display: flex;
+ height: 100%;
+}
+.tox .tox-sv-palette-spectrum {
+ height: 100%;
+}
+.tox .tox-sv-palette,
+.tox .tox-sv-palette-spectrum {
+ width: 225px;
+}
+.tox .tox-sv-palette-thumb {
+ background: none;
+ border: 1px solid black;
+ border-radius: 50%;
+ box-sizing: content-box;
+ height: 12px;
+ position: absolute;
+ width: 12px;
+}
+.tox .tox-sv-palette-inner-thumb {
+ border: 1px solid white;
+ border-radius: 50%;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox .tox-hue-slider {
+ box-sizing: border-box;
+ height: 100%;
+ width: 25px;
+}
+.tox .tox-hue-slider-spectrum {
+ background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
+ height: 100%;
+ width: 100%;
+}
+.tox .tox-hue-slider,
+.tox .tox-hue-slider-spectrum {
+ width: 20px;
+}
+.tox .tox-hue-slider-thumb {
+ background: white;
+ border: 1px solid black;
+ box-sizing: content-box;
+ height: 4px;
+ width: 100%;
+}
+.tox .tox-rgb-form {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+.tox .tox-rgb-form div {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 5px;
+ width: inherit;
+}
+.tox .tox-rgb-form input {
+ width: 6em;
+}
+.tox .tox-rgb-form input.tox-invalid {
+ /* Need !important to override Chrome's focus styling unfortunately */
+ border: 1px solid red !important;
+}
+.tox .tox-rgb-form .tox-rgba-preview {
+ border: 1px solid black;
+ flex-grow: 2;
+ margin-bottom: 0;
+}
+.tox:not([dir=rtl]) .tox-sv-palette {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider-thumb {
+ margin-left: -1px;
+}
+.tox:not([dir=rtl]) .tox-rgb-form label {
+ margin-right: 0.5em;
+}
+.tox[dir=rtl] .tox-sv-palette {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider-thumb {
+ margin-right: -1px;
+}
+.tox[dir=rtl] .tox-rgb-form label {
+ margin-left: 0.5em;
+}
+.tox .tox-toolbar .tox-swatches,
+.tox .tox-toolbar__primary .tox-swatches,
+.tox .tox-toolbar__overflow .tox-swatches {
+ margin: 2px 0 3px 4px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
+ border: 0;
+ margin: -4px 0;
+}
+.tox .tox-swatches__row {
+ display: flex;
+}
+.tox .tox-swatch {
+ height: 30px;
+ transition: transform 0.15s, box-shadow 0.15s;
+ width: 30px;
+}
+.tox .tox-swatch:hover,
+.tox .tox-swatch:focus {
+ box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
+ transform: scale(0.8);
+}
+.tox .tox-swatch--remove {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-swatch--remove svg path {
+ stroke: #e74c3c;
+}
+.tox .tox-swatches__picker-btn {
+ align-items: center;
+ background-color: transparent;
+ border: 0;
+ cursor: pointer;
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ outline: none;
+ padding: 0;
+ width: 30px;
+}
+.tox .tox-swatches__picker-btn svg {
+ height: 24px;
+ width: 24px;
+}
+.tox .tox-swatches__picker-btn:hover {
+ background: #4a5562;
+}
+.tox:not([dir=rtl]) .tox-swatches__picker-btn {
+ margin-left: auto;
+}
+.tox[dir=rtl] .tox-swatches__picker-btn {
+ margin-right: auto;
+}
+.tox .tox-comment-thread {
+ background: #2b3b4e;
+ position: relative;
+}
+.tox .tox-comment-thread > *:not(:first-child) {
+ margin-top: 8px;
+}
+.tox .tox-comment {
+ background: #2b3b4e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
+ padding: 8px 8px 16px 8px;
+ position: relative;
+}
+.tox .tox-comment__header {
+ align-items: center;
+ color: #fff;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .tox-comment__date {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 12px;
+}
+.tox .tox-comment__body {
+ color: #fff;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin-top: 8px;
+ position: relative;
+ text-transform: initial;
+}
+.tox .tox-comment__body textarea {
+ resize: none;
+ white-space: normal;
+ width: 100%;
+}
+.tox .tox-comment__expander {
+ padding-top: 8px;
+}
+.tox .tox-comment__expander p {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 14px;
+ font-style: normal;
+}
+.tox .tox-comment__body p {
+ margin: 0;
+}
+.tox .tox-comment__buttonspacing {
+ padding-top: 16px;
+ text-align: center;
+}
+.tox .tox-comment-thread__overlay::after {
+ background: #2b3b4e;
+ bottom: 0;
+ content: "";
+ display: flex;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__reply {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 8px;
+}
+.tox .tox-comment__reply > *:first-child {
+ margin-bottom: 8px;
+ width: 100%;
+}
+.tox .tox-comment__edit {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 16px;
+}
+.tox .tox-comment__gradient::after {
+ background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e);
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5em;
+ margin-top: -40px;
+ position: absolute;
+ width: 100%;
+}
+.tox .tox-comment__overlay {
+ background: #2b3b4e;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__loading-text {
+ align-items: center;
+ color: #fff;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+.tox .tox-comment__loading-text > div {
+ padding-bottom: 16px;
+}
+.tox .tox-comment__overlaytext {
+ bottom: 0;
+ flex-direction: column;
+ font-size: 14px;
+ left: 0;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+}
+.tox .tox-comment__overlaytext p {
+ background-color: #2b3b4e;
+ box-shadow: 0 0 8px 8px #2b3b4e;
+ color: #fff;
+ text-align: center;
+}
+.tox .tox-comment__overlaytext div:nth-of-type(2) {
+ font-size: 0.8em;
+}
+.tox .tox-comment__busy-spinner {
+ align-items: center;
+ background-color: #2b3b4e;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 20;
+}
+.tox .tox-comment__scroll {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 1;
+ overflow: auto;
+}
+.tox .tox-conversations {
+ margin: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__edit {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-comment__edit {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,
+.tox[dir=rtl] .tox-comment__edit > *:last-child,
+.tox[dir=rtl] .tox-comment__reply > *:last-child {
+ margin-right: 8px;
+}
+.tox .tox-user {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-user__avatar svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-user__name {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+.tox:not([dir=rtl]) .tox-user__avatar svg {
+ margin-right: 8px;
+}
+.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar svg {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar + .tox-user__name {
+ margin-right: 8px;
+}
+.tox .tox-dialog-wrap {
+ align-items: center;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1100;
+}
+.tox .tox-dialog-wrap__backdrop {
+ background-color: rgba(34, 47, 62, 0.75);
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+.tox .tox-dialog-wrap__backdrop--opaque {
+ background-color: #222f3e;
+}
+.tox .tox-dialog {
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15);
+ display: flex;
+ flex-direction: column;
+ max-height: 100%;
+ max-width: 480px;
+ overflow: hidden;
+ position: relative;
+ width: 95vw;
+ z-index: 2;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog {
+ align-self: flex-start;
+ margin: 8px auto;
+ width: calc(100vw - 16px);
+ }
+}
+.tox .tox-dialog-inline {
+ z-index: 1100;
+}
+.tox .tox-dialog__header {
+ align-items: center;
+ background-color: #2b3b4e;
+ border-bottom: none;
+ color: #fff;
+ display: flex;
+ font-size: 16px;
+ justify-content: space-between;
+ padding: 8px 16px 0 16px;
+ position: relative;
+}
+.tox .tox-dialog__header .tox-button {
+ z-index: 1;
+}
+.tox .tox-dialog__draghandle {
+ cursor: grab;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tox .tox-dialog__draghandle:active {
+ cursor: grabbing;
+}
+.tox .tox-dialog__dismiss {
+ margin-left: auto;
+}
+.tox .tox-dialog__title {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ text-transform: none;
+}
+.tox .tox-dialog__body {
+ color: #fff;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ min-width: 0;
+ text-align: left;
+ text-transform: none;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body {
+ flex-direction: column;
+ }
+}
+.tox .tox-dialog__body-nav {
+ align-items: flex-start;
+ display: flex;
+ flex-direction: column;
+ padding: 16px 16px;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
+ flex-direction: row;
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ padding-bottom: 0;
+ }
+}
+.tox .tox-dialog__body-nav-item {
+ border-bottom: 2px solid transparent;
+ color: rgba(255, 255, 255, 0.5);
+ display: inline-block;
+ font-size: 14px;
+ line-height: 1.3;
+ margin-bottom: 8px;
+ text-decoration: none;
+ white-space: nowrap;
+}
+.tox .tox-dialog__body-nav-item:focus {
+ background-color: rgba(32, 122, 183, 0.1);
+}
+.tox .tox-dialog__body-nav-item--active {
+ border-bottom: 2px solid #207ab7;
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content {
+ box-sizing: border-box;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+ max-height: 650px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ padding: 16px 16px;
+}
+.tox .tox-dialog__body-content > * {
+ margin-bottom: 0;
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content > *:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content a {
+ color: #207ab7;
+ cursor: pointer;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:hover,
+.tox .tox-dialog__body-content a:focus {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:active {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content ul {
+ display: block;
+ list-style-type: disc;
+ margin-bottom: 16px;
+ -webkit-margin-end: 0;
+ margin-inline-end: 0;
+ -webkit-margin-start: 0;
+ margin-inline-start: 0;
+ -webkit-padding-start: 2.5rem;
+ padding-inline-start: 2.5rem;
+}
+.tox .tox-dialog__body-content .tox-form__group h1 {
+ color: #fff;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group h2 {
+ color: #fff;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group p {
+ margin-bottom: 16px;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:first-child,
+.tox .tox-dialog__body-content .tox-form__group h2:first-child,
+.tox .tox-dialog__body-content .tox-form__group p:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:last-child,
+.tox .tox-dialog__body-content .tox-form__group h2:last-child,
+.tox .tox-dialog__body-content .tox-form__group p:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:only-child,
+.tox .tox-dialog__body-content .tox-form__group h2:only-child,
+.tox .tox-dialog__body-content .tox-form__group p:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog--width-lg {
+ height: 650px;
+ max-width: 1200px;
+}
+.tox .tox-dialog--width-md {
+ max-width: 800px;
+}
+.tox .tox-dialog--width-md .tox-dialog__body-content {
+ overflow: auto;
+}
+.tox .tox-dialog__body-content--centered {
+ text-align: center;
+}
+.tox .tox-dialog__footer {
+ align-items: center;
+ background-color: #2b3b4e;
+ border-top: 1px solid #000000;
+ display: flex;
+ justify-content: space-between;
+ padding: 8px 16px;
+}
+.tox .tox-dialog__footer-start,
+.tox .tox-dialog__footer-end {
+ display: flex;
+}
+.tox .tox-dialog__busy-spinner {
+ align-items: center;
+ background-color: rgba(34, 47, 62, 0.75);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 3;
+}
+.tox .tox-dialog__table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.tox .tox-dialog__table thead th {
+ font-weight: bold;
+ padding-bottom: 8px;
+}
+.tox .tox-dialog__table tbody tr {
+ border-bottom: 1px solid #000000;
+}
+.tox .tox-dialog__table tbody tr:last-child {
+ border-bottom: none;
+}
+.tox .tox-dialog__table td {
+ padding-bottom: 8px;
+ padding-top: 8px;
+}
+.tox .tox-dialog__popups {
+ position: absolute;
+ width: 100%;
+ z-index: 1100;
+}
+.tox .tox-dialog__body-iframe {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox .tox-dialog-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox .tox-dialog-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox .tox-dialog-dock-transition {
+ transition: visibility 0s linear 0.3s, opacity 0.3s ease;
+}
+.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
+ transition-delay: 0s;
+}
+.tox.tox-platform-ie {
+ /* IE11 CSS styles go here */
+}
+.tox.tox-platform-ie .tox-dialog-wrap {
+ position: -ms-device-fixed;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {
+ margin-right: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {
+ margin-left: 8px;
+ }
+}
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-dialog__body {
+ text-align: right;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {
+ margin-left: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {
+ margin-right: 8px;
+ }
+}
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-right: 8px;
+}
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox .tox-dropzone-container {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dropzone {
+ align-items: center;
+ background: #fff;
+ border: 2px dashed #000000;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ justify-content: center;
+ min-height: 100px;
+ padding: 10px;
+}
+.tox .tox-dropzone p {
+ color: rgba(255, 255, 255, 0.5);
+ margin: 0 0 16px 0;
+}
+.tox .tox-edit-area {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ overflow: hidden;
+ position: relative;
+}
+.tox .tox-edit-area__iframe {
+ background-color: #fff;
+ border: 0;
+ box-sizing: border-box;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tox.tox-inline-edit-area {
+ border: 1px dotted #000000;
+}
+.tox .tox-editor-container {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ overflow: hidden;
+}
+.tox .tox-editor-header {
+ z-index: 1;
+}
+.tox:not(.tox-tinymce-inline) .tox-editor-header {
+ box-shadow: none;
+ transition: box-shadow 0.5s;
+}
+.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
+.tox.tox-tinymce-inline .tox-editor-header {
+ margin-bottom: -1px;
+}
+.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
+ background-color: transparent;
+ box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
+}
+.tox-editor-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox-editor-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox-editor-dock-transition {
+ transition: visibility 0s linear 0.25s, opacity 0.25s ease;
+}
+.tox-editor-dock-transition.tox-editor-dock-fadein {
+ transition-delay: 0s;
+}
+.tox .tox-control-wrap {
+ flex: 1;
+ position: relative;
+}
+.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
+ display: none;
+}
+.tox .tox-control-wrap svg {
+ display: block;
+}
+.tox .tox-control-wrap__status-icon-wrap {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-control-wrap__status-icon-invalid svg {
+ fill: #c00;
+}
+.tox .tox-control-wrap__status-icon-unknown svg {
+ fill: orange;
+}
+.tox .tox-control-wrap__status-icon-valid svg {
+ fill: green;
+}
+.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {
+ padding-right: 32px;
+}
+.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {
+ right: 4px;
+}
+.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {
+ padding-left: 32px;
+}
+.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {
+ left: 4px;
+}
+.tox .tox-autocompleter {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-menu {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-autocompleter-highlight {
+ font-weight: bold;
+}
+.tox .tox-color-input {
+ display: flex;
+ position: relative;
+ z-index: 1;
+}
+.tox .tox-color-input .tox-textfield {
+ z-index: -1;
+}
+.tox .tox-color-input span {
+ border-color: rgba(42, 55, 70, 0.2);
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ height: 24px;
+ position: absolute;
+ top: 6px;
+ width: 24px;
+}
+.tox .tox-color-input span:hover:not([aria-disabled=true]),
+.tox .tox-color-input span:focus:not([aria-disabled=true]) {
+ border-color: #207ab7;
+ cursor: pointer;
+}
+.tox .tox-color-input span::before {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%);
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
+ background-size: 12px 12px;
+ border: 1px solid #2b3b4e;
+ border-radius: 3px;
+ box-sizing: border-box;
+ content: '';
+ height: 24px;
+ left: -1px;
+ position: absolute;
+ top: -1px;
+ width: 24px;
+ z-index: -1;
+}
+.tox .tox-color-input span[aria-disabled=true] {
+ cursor: not-allowed;
+}
+.tox:not([dir=rtl]) .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-color-input .tox-textfield {
+ padding-left: 36px;
+}
+.tox:not([dir=rtl]) .tox-color-input span {
+ left: 6px;
+}
+.tox[dir="rtl"] .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir="rtl"] .tox-color-input .tox-textfield {
+ padding-right: 36px;
+}
+.tox[dir="rtl"] .tox-color-input span {
+ right: 6px;
+}
+.tox .tox-label,
+.tox .tox-toolbar-label {
+ color: rgba(255, 255, 255, 0.5);
+ display: block;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ padding: 0 8px 0 0;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-toolbar-label {
+ padding: 0 8px;
+}
+.tox[dir=rtl] .tox-label {
+ padding: 0 0 0 8px;
+}
+.tox .tox-form {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group {
+ box-sizing: border-box;
+ margin-bottom: 4px;
+}
+.tox .tox-form-group--maximize {
+ flex: 1;
+}
+.tox .tox-form__group--error {
+ color: #c00;
+}
+.tox .tox-form__group--collection {
+ display: flex;
+}
+.tox .tox-form__grid {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+.tox .tox-form__grid--2col > .tox-form__group {
+ width: calc(50% - (8px / 2));
+}
+.tox .tox-form__grid--3col > .tox-form__group {
+ width: calc(100% / 3 - (8px / 2));
+}
+.tox .tox-form__grid--4col > .tox-form__group {
+ width: calc(25% - (8px / 2));
+}
+.tox .tox-form__controls-h-stack {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--inline {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--stretched {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-textarea {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
+.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
+ display: none;
+}
+.tox .tox-textfield,
+.tox .tox-toolbar-textfield,
+.tox .tox-listboxfield .tox-listbox--select,
+.tox .tox-textarea {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-textfield[disabled],
+.tox .tox-textarea[disabled] {
+ background-color: #222f3e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-textfield:focus,
+.tox .tox-listboxfield .tox-listbox--select:focus,
+.tox .tox-textarea:focus {
+ background-color: #2b3b4e;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-toolbar-textfield {
+ border-width: 0;
+ margin-bottom: 3px;
+ margin-top: 2px;
+ max-width: 250px;
+}
+.tox .tox-naked-btn {
+ background-color: transparent;
+ border: 0;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #207ab7;
+ cursor: pointer;
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+.tox .tox-naked-btn svg {
+ display: block;
+ fill: #fff;
+}
+.tox:not([dir=rtl]) .tox-toolbar-textfield + * {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-toolbar-textfield + * {
+ margin-right: 4px;
+}
+.tox .tox-listboxfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-listboxfield .tox-listbox--select[disabled] {
+ background-color: #19232e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-listbox__select-label {
+ cursor: default;
+ flex: 1;
+ margin: 0 4px;
+}
+.tox .tox-listbox__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-listbox__select-chevron svg {
+ fill: #fff;
+}
+.tox .tox-listboxfield .tox-listbox--select {
+ align-items: center;
+ display: flex;
+}
+.tox:not([dir=rtl]) .tox-listboxfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-listboxfield svg {
+ left: 8px;
+}
+.tox .tox-selectfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-selectfield select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-selectfield select[disabled] {
+ background-color: #19232e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-selectfield select::-ms-expand {
+ display: none;
+}
+.tox .tox-selectfield select:focus {
+ background-color: #2b3b4e;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-selectfield svg {
+ pointer-events: none;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox:not([dir=rtl]) .tox-selectfield select[size="0"],
+.tox:not([dir=rtl]) .tox-selectfield select[size="1"] {
+ padding-right: 24px;
+}
+.tox:not([dir=rtl]) .tox-selectfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-selectfield select[size="0"],
+.tox[dir=rtl] .tox-selectfield select[size="1"] {
+ padding-left: 24px;
+}
+.tox[dir=rtl] .tox-selectfield svg {
+ left: 8px;
+}
+.tox .tox-textarea {
+ -webkit-appearance: textarea;
+ -moz-appearance: textarea;
+ appearance: textarea;
+ white-space: pre-wrap;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen,
+.tox-shadowhost.tox-fullscreen {
+ left: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1200;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
+.tox .tox-help__more-link {
+ list-style: none;
+ margin-top: 1em;
+}
+.tox .tox-image-tools {
+ width: 100%;
+}
+.tox .tox-image-tools__toolbar {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-image-tools__image {
+ background-color: #666;
+ height: 380px;
+ overflow: auto;
+ position: relative;
+ width: 100%;
+}
+.tox .tox-image-tools__image,
+.tox .tox-image-tools__image + .tox-image-tools__toolbar {
+ margin-top: 8px;
+}
+.tox .tox-image-tools__image-bg {
+ background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
+}
+.tox .tox-image-tools__toolbar > .tox-spacer {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-croprect-block {
+ background: black;
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ position: absolute;
+ zoom: 1;
+}
+.tox .tox-croprect-handle {
+ border: 2px solid white;
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 20px;
+}
+.tox .tox-croprect-handle-move {
+ border: 0;
+ cursor: move;
+ position: absolute;
+}
+.tox .tox-croprect-handle-nw {
+ border-width: 2px 0 0 2px;
+ cursor: nw-resize;
+ left: 100px;
+ margin: -2px 0 0 -2px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-ne {
+ border-width: 2px 2px 0 0;
+ cursor: ne-resize;
+ left: 200px;
+ margin: -2px 0 0 -20px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-sw {
+ border-width: 0 0 2px 2px;
+ cursor: sw-resize;
+ left: 100px;
+ margin: -20px 2px 0 -2px;
+ top: 200px;
+}
+.tox .tox-croprect-handle-se {
+ border-width: 0 2px 2px 0;
+ cursor: se-resize;
+ left: 200px;
+ margin: -20px 0 0 -20px;
+ top: 200px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-left: 32px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-left: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-right: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-right: 32px;
+}
+.tox .tox-insert-table-picker {
+ display: flex;
+ flex-wrap: wrap;
+ width: 170px;
+}
+.tox .tox-insert-table-picker > div {
+ border-color: #000000;
+ border-style: solid;
+ border-width: 0 1px 1px 0;
+ box-sizing: border-box;
+ height: 17px;
+ width: 17px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
+ margin: -4px 0;
+}
+.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: rgba(32, 122, 183, 0.5);
+}
+.tox .tox-insert-table-picker__label {
+ color: #fff;
+ display: block;
+ font-size: 14px;
+ padding: 4px;
+ text-align: center;
+ width: 100%;
+}
+.tox:not([dir=rtl]) {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {
+ border-right: 0;
+}
+.tox[dir=rtl] {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {
+ border-right: 0;
+}
+.tox {
+ /* stylelint-disable */
+ /* stylelint-enable */
+}
+.tox .tox-menu {
+ background-color: #2b3b4e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: top;
+ z-index: 1150;
+}
+.tox .tox-menu.tox-collection.tox-collection--list {
+ padding: 0;
+}
+.tox .tox-menu.tox-collection.tox-collection--toolbar {
+ padding: 4px;
+}
+.tox .tox-menu.tox-collection.tox-collection--grid {
+ padding: 4px;
+}
+.tox .tox-menu__label h1,
+.tox .tox-menu__label h2,
+.tox .tox-menu__label h3,
+.tox .tox-menu__label h4,
+.tox .tox-menu__label h5,
+.tox .tox-menu__label h6,
+.tox .tox-menu__label p,
+.tox .tox-menu__label blockquote,
+.tox .tox-menu__label code {
+ margin: 0;
+}
+.tox .tox-menubar {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
+ background-color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 4px 0 4px;
+}
+.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
+ border-top: 1px solid #000000;
+}
+/* Deprecated. Remove in next major release */
+.tox .tox-mbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0 4px;
+ text-transform: none;
+ width: auto;
+}
+.tox .tox-mbtn[disabled] {
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-mbtn:focus:not(:disabled) {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn--active {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
+ cursor: not-allowed;
+}
+.tox .tox-mbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+ display: none;
+}
+.tox .tox-notification {
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: -ms-grid;
+ display: grid;
+ font-size: 14px;
+ font-weight: normal;
+ -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ margin-top: 4px;
+ opacity: 0;
+ padding: 4px;
+ transition: transform 100ms ease-in, opacity 150ms ease-in;
+}
+.tox .tox-notification p {
+ font-size: 14px;
+ font-weight: normal;
+}
+.tox .tox-notification a {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-notification--in {
+ opacity: 1;
+}
+.tox .tox-notification--success {
+ background-color: #e4eeda;
+ border-color: #d7e6c8;
+ color: #fff;
+}
+.tox .tox-notification--success p {
+ color: #fff;
+}
+.tox .tox-notification--success a {
+ color: #547831;
+}
+.tox .tox-notification--success svg {
+ fill: #fff;
+}
+.tox .tox-notification--error {
+ background-color: #f8dede;
+ border-color: #f2bfbf;
+ color: #fff;
+}
+.tox .tox-notification--error p {
+ color: #fff;
+}
+.tox .tox-notification--error a {
+ color: #c00;
+}
+.tox .tox-notification--error svg {
+ fill: #fff;
+}
+.tox .tox-notification--warn,
+.tox .tox-notification--warning {
+ background-color: #fffaea;
+ border-color: #ffe89d;
+ color: #fff;
+}
+.tox .tox-notification--warn p,
+.tox .tox-notification--warning p {
+ color: #fff;
+}
+.tox .tox-notification--warn a,
+.tox .tox-notification--warning a {
+ color: #fff;
+}
+.tox .tox-notification--warn svg,
+.tox .tox-notification--warning svg {
+ fill: #fff;
+}
+.tox .tox-notification--info {
+ background-color: #d9edf7;
+ border-color: #779ecb;
+ color: #fff;
+}
+.tox .tox-notification--info p {
+ color: #fff;
+}
+.tox .tox-notification--info a {
+ color: #fff;
+}
+.tox .tox-notification--info svg {
+ fill: #fff;
+}
+.tox .tox-notification__body {
+ -ms-grid-row-align: center;
+ align-self: center;
+ color: #fff;
+ font-size: 14px;
+ -ms-grid-column-span: 1;
+ grid-column-end: 3;
+ -ms-grid-column: 2;
+ grid-column-start: 2;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ text-align: center;
+ white-space: normal;
+ word-break: break-all;
+ word-break: break-word;
+}
+.tox .tox-notification__body > * {
+ margin: 0;
+}
+.tox .tox-notification__body > * + * {
+ margin-top: 1rem;
+}
+.tox .tox-notification__icon {
+ -ms-grid-row-align: center;
+ align-self: center;
+ -ms-grid-column-span: 1;
+ grid-column-end: 2;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification__icon svg {
+ display: block;
+}
+.tox .tox-notification__dismiss {
+ -ms-grid-row-align: start;
+ align-self: start;
+ -ms-grid-column-span: 1;
+ grid-column-end: 4;
+ -ms-grid-column: 3;
+ grid-column-start: 3;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification .tox-progress-bar {
+ -ms-grid-column-span: 3;
+ grid-column-end: 4;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 3;
+ -ms-grid-row: 2;
+ grid-row-start: 2;
+ -ms-grid-column-align: center;
+ justify-self: center;
+}
+.tox .tox-pop {
+ display: inline-block;
+ position: relative;
+}
+.tox .tox-pop--resizing {
+ transition: width 0.1s ease;
+}
+.tox .tox-pop--resizing .tox-toolbar,
+.tox .tox-pop--resizing .tox-toolbar__group {
+ flex-wrap: nowrap;
+}
+.tox .tox-pop--transition {
+ transition: 0.15s ease;
+ transition-property: left, right, top, bottom;
+}
+.tox .tox-pop--transition::before,
+.tox .tox-pop--transition::after {
+ transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s;
+}
+.tox .tox-pop__dialog {
+ background-color: #222f3e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ min-width: 0;
+ overflow: hidden;
+}
+.tox .tox-pop__dialog > *:not(.tox-toolbar) {
+ margin: 4px 4px 4px 8px;
+}
+.tox .tox-pop__dialog .tox-toolbar {
+ background-color: transparent;
+ margin-bottom: -1px;
+}
+.tox .tox-pop::before,
+.tox .tox-pop::after {
+ border-style: solid;
+ content: '';
+ display: block;
+ height: 0;
+ opacity: 1;
+ position: absolute;
+ width: 0;
+}
+.tox .tox-pop.tox-pop--inset::before,
+.tox .tox-pop.tox-pop--inset::after {
+ opacity: 0;
+ transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease;
+}
+.tox .tox-pop.tox-pop--bottom::before,
+.tox .tox-pop.tox-pop--bottom::after {
+ left: 50%;
+ top: 100%;
+}
+.tox .tox-pop.tox-pop--bottom::after {
+ border-color: #222f3e transparent transparent transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: -1px;
+}
+.tox .tox-pop.tox-pop--bottom::before {
+ border-color: #000000 transparent transparent transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--top::before,
+.tox .tox-pop.tox-pop--top::after {
+ left: 50%;
+ top: 0;
+ transform: translateY(-100%);
+}
+.tox .tox-pop.tox-pop--top::after {
+ border-color: transparent transparent #222f3e transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: 1px;
+}
+.tox .tox-pop.tox-pop--top::before {
+ border-color: transparent transparent #000000 transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--left::before,
+.tox .tox-pop.tox-pop--left::after {
+ left: 0;
+ top: calc(50% - 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--left::after {
+ border-color: transparent #222f3e transparent transparent;
+ border-width: 8px;
+ margin-left: -15px;
+}
+.tox .tox-pop.tox-pop--left::before {
+ border-color: transparent #000000 transparent transparent;
+ border-width: 10px;
+ margin-left: -19px;
+}
+.tox .tox-pop.tox-pop--right::before,
+.tox .tox-pop.tox-pop--right::after {
+ left: 100%;
+ top: calc(50% + 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--right::after {
+ border-color: transparent transparent transparent #222f3e;
+ border-width: 8px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--right::before {
+ border-color: transparent transparent transparent #000000;
+ border-width: 10px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--align-left::before,
+.tox .tox-pop.tox-pop--align-left::after {
+ left: 20px;
+}
+.tox .tox-pop.tox-pop--align-right::before,
+.tox .tox-pop.tox-pop--align-right::after {
+ left: calc(100% - 20px);
+}
+.tox .tox-sidebar-wrap {
+ display: flex;
+ flex-direction: row;
+ flex-grow: 1;
+ -ms-flex-preferred-size: 0;
+ min-height: 0;
+}
+.tox .tox-sidebar {
+ background-color: #222f3e;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+}
+.tox .tox-sidebar__slider {
+ display: flex;
+ overflow: hidden;
+}
+.tox .tox-sidebar__pane-container {
+ display: flex;
+}
+.tox .tox-sidebar__pane {
+ display: flex;
+}
+.tox .tox-sidebar--sliding-closed {
+ opacity: 0;
+}
+.tox .tox-sidebar--sliding-open {
+ opacity: 1;
+}
+.tox .tox-sidebar--sliding-growing,
+.tox .tox-sidebar--sliding-shrinking {
+ transition: width 0.5s ease, opacity 0.5s ease;
+}
+.tox .tox-selector {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ display: inline-block;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox.tox-platform-touch .tox-selector {
+ height: 12px;
+ width: 12px;
+}
+.tox .tox-slider {
+ align-items: center;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 24px;
+ justify-content: center;
+ position: relative;
+}
+.tox .tox-slider__rail {
+ background-color: transparent;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ height: 10px;
+ min-width: 120px;
+ width: 100%;
+}
+.tox .tox-slider__handle {
+ background-color: #207ab7;
+ border: 2px solid #185d8c;
+ border-radius: 3px;
+ box-shadow: none;
+ height: 24px;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ width: 14px;
+}
+.tox .tox-source-code {
+ overflow: auto;
+}
+.tox .tox-spinner {
+ display: flex;
+}
+.tox .tox-spinner > div {
+ animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
+ background-color: rgba(255, 255, 255, 0.5);
+ border-radius: 100%;
+ height: 8px;
+ width: 8px;
+}
+.tox .tox-spinner > div:nth-child(1) {
+ animation-delay: -0.32s;
+}
+.tox .tox-spinner > div:nth-child(2) {
+ animation-delay: -0.16s;
+}
+@keyframes tam-bouncing-dots {
+ 0%,
+ 80%,
+ 100% {
+ transform: scale(0);
+ }
+ 40% {
+ transform: scale(1);
+ }
+}
+.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-spinner > div:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-statusbar {
+ align-items: center;
+ background-color: #222f3e;
+ border-top: 1px solid #000000;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 12px;
+ font-weight: normal;
+ height: 18px;
+ overflow: hidden;
+ padding: 0 8px;
+ position: relative;
+ text-transform: uppercase;
+}
+.tox .tox-statusbar__text-container {
+ display: flex;
+ flex: 1 1 auto;
+ justify-content: flex-end;
+ overflow: hidden;
+}
+.tox .tox-statusbar__path {
+ display: flex;
+ flex: 1 1 auto;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__path > * {
+ display: inline;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__wordcount {
+ flex: 0 0 auto;
+ margin-left: 1ch;
+}
+.tox .tox-statusbar a,
+.tox .tox-statusbar__path-item,
+.tox .tox-statusbar__wordcount {
+ color: #fff;
+ text-decoration: none;
+}
+.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-statusbar__resize-handle {
+ align-items: flex-end;
+ align-self: stretch;
+ cursor: nwse-resize;
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: flex-end;
+ margin-left: auto;
+ margin-right: -8px;
+ padding-left: 1ch;
+}
+.tox .tox-statusbar__resize-handle svg {
+ display: block;
+ fill: #fff;
+}
+.tox .tox-statusbar__resize-handle:focus svg {
+ background-color: #4a5562;
+ border-radius: 1px;
+ box-shadow: 0 0 0 2px #4a5562;
+}
+.tox:not([dir=rtl]) .tox-statusbar__path > * {
+ margin-right: 4px;
+}
+.tox:not([dir=rtl]) .tox-statusbar__branding {
+ margin-left: 1ch;
+}
+.tox[dir=rtl] .tox-statusbar {
+ flex-direction: row-reverse;
+}
+.tox[dir=rtl] .tox-statusbar__path > * {
+ margin-left: 4px;
+}
+.tox .tox-throbber {
+ z-index: 1299;
+}
+.tox .tox-throbber__busy-spinner {
+ align-items: center;
+ background-color: rgba(34, 47, 62, 0.6);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.tox .tox-tbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0;
+ text-transform: none;
+ width: 34px;
+}
+.tox .tox-tbtn svg {
+ display: block;
+ fill: #fff;
+}
+.tox .tox-tbtn.tox-tbtn-more {
+ padding-left: 5px;
+ padding-right: 5px;
+ width: inherit;
+}
+.tox .tox-tbtn:focus {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+}
+.tox .tox-tbtn:hover {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn:hover svg {
+ fill: #fff;
+}
+.tox .tox-tbtn:active {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn:active svg {
+ fill: #fff;
+}
+.tox .tox-tbtn--disabled,
+.tox .tox-tbtn--disabled:hover,
+.tox .tox-tbtn:disabled,
+.tox .tox-tbtn:disabled:hover {
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-tbtn--disabled svg,
+.tox .tox-tbtn--disabled:hover svg,
+.tox .tox-tbtn:disabled svg,
+.tox .tox-tbtn:disabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-tbtn--enabled,
+.tox .tox-tbtn--enabled:hover {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn--enabled > *,
+.tox .tox-tbtn--enabled:hover > * {
+ transform: none;
+}
+.tox .tox-tbtn--enabled svg,
+.tox .tox-tbtn--enabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: #fff;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
+ color: #fff;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
+ fill: #fff;
+}
+.tox .tox-tbtn:active > * {
+ transform: none;
+}
+.tox .tox-tbtn--md {
+ height: 51px;
+ width: 51px;
+}
+.tox .tox-tbtn--lg {
+ flex-direction: column;
+ height: 68px;
+ width: 68px;
+}
+.tox .tox-tbtn--return {
+ -ms-grid-row-align: stretch;
+ align-self: stretch;
+ height: unset;
+ width: 16px;
+}
+.tox .tox-tbtn--labeled {
+ padding: 0 4px;
+ width: unset;
+}
+.tox .tox-tbtn__vlabel {
+ display: block;
+ font-size: 10px;
+ font-weight: normal;
+ letter-spacing: -0.025em;
+ margin-bottom: 4px;
+ white-space: nowrap;
+}
+.tox .tox-tbtn--select {
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+ width: auto;
+}
+.tox .tox-tbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-tbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-tbtn__select-chevron svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 7em;
+}
+.tox .tox-split-button {
+ border: 0;
+ border-radius: 3px;
+ box-sizing: border-box;
+ display: flex;
+ margin: 2px 0 3px 0;
+ overflow: hidden;
+}
+.tox .tox-split-button:hover {
+ box-shadow: 0 0 0 1px #4a5562 inset;
+}
+.tox .tox-split-button:focus {
+ background: #4a5562;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-split-button > * {
+ border-radius: 0;
+}
+.tox .tox-split-button__chevron {
+ width: 16px;
+}
+.tox .tox-split-button__chevron svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-split-button .tox-tbtn {
+ margin: 0;
+}
+.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
+ width: 30px;
+}
+.tox.tox-platform-touch .tox-split-button__chevron {
+ width: 20px;
+}
+.tox .tox-split-button.tox-tbtn--disabled:hover,
+.tox .tox-split-button.tox-tbtn--disabled:focus,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
+ background: transparent;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-toolbar-overlord {
+ background-color: #222f3e;
+}
+.tox .tox-toolbar,
+.tox .tox-toolbar__primary,
+.tox .tox-toolbar__overflow {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
+ background-color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 0;
+}
+.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
+ height: 0;
+ opacity: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ visibility: hidden;
+}
+.tox .tox-toolbar__overflow--growing {
+ transition: height 0.3s ease, opacity 0.2s linear 0.1s;
+}
+.tox .tox-toolbar__overflow--shrinking {
+ transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
+}
+.tox .tox-menubar + .tox-toolbar,
+.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
+ border-top: 1px solid #000000;
+ margin-top: -1px;
+}
+.tox .tox-toolbar--scrolling {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+}
+.tox .tox-pop .tox-toolbar {
+ border-width: 0;
+}
+.tox .tox-toolbar--no-divider {
+ background-image: none;
+}
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
+ border-top: 1px solid #000000;
+}
+.tox.tox-tinymce-aux .tox-toolbar__overflow {
+ background-color: #222f3e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+}
+.tox .tox-toolbar__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 0;
+ padding: 0 4px 0 4px;
+}
+.tox .tox-toolbar__group--pull-right {
+ margin-left: auto;
+}
+.tox .tox-toolbar--scrolling .tox-toolbar__group {
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+}
+.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {
+ border-right: 1px solid #000000;
+}
+.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {
+ border-left: 1px solid #000000;
+}
+.tox .tox-tooltip {
+ display: inline-block;
+ padding: 8px;
+ position: relative;
+}
+.tox .tox-tooltip__body {
+ background-color: #3d546f;
+ border-radius: 3px;
+ box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3);
+ color: rgba(255, 255, 255, 0.75);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ padding: 4px 8px;
+ text-transform: none;
+}
+.tox .tox-tooltip__arrow {
+ position: absolute;
+}
+.tox .tox-tooltip--down .tox-tooltip__arrow {
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 8px solid #3d546f;
+ bottom: 0;
+ left: 50%;
+ position: absolute;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--up .tox-tooltip__arrow {
+ border-bottom: 8px solid #3d546f;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ left: 50%;
+ position: absolute;
+ top: 0;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--right .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-left: 8px solid #3d546f;
+ border-top: 8px solid transparent;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-tooltip--left .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-right: 8px solid #3d546f;
+ border-top: 8px solid transparent;
+ left: 0;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-well {
+ border: 1px solid #000000;
+ border-radius: 3px;
+ padding: 8px;
+ width: 100%;
+}
+.tox .tox-well > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-well > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-well > *:only-child {
+ margin: 0;
+}
+.tox .tox-custom-editor {
+ border: 1px solid #000000;
+ border-radius: 3px;
+ display: flex;
+ flex: 1;
+ position: relative;
+}
+/* stylelint-disable */
+.tox {
+ /* stylelint-enable */
+}
+.tox .tox-dialog-loading::before {
+ background-color: rgba(0, 0, 0, 0.5);
+ content: "";
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ z-index: 1000;
+}
+.tox .tox-tab {
+ cursor: pointer;
+}
+.tox .tox-dialog__content-js {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-content .tox-collection {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-image-tools-edit-panel {
+ height: 60px;
+}
+.tox .tox-image-tools__sidebar {
+ height: 60px;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.min.css b/public/tinymce/skins/ui/oxide-dark/skin.min.css
new file mode 100644
index 0000000..e71f6f0
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css
new file mode 100644
index 0000000..875721a
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css
@@ -0,0 +1,673 @@
+/**
+ * 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%;
+ }
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
new file mode 100644
index 0000000..3a45cac
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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-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;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-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-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{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.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:#fff;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:#fff;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 #ccc;display:flex;flex:1;height:2.5em;width:100%}.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:.5em;padding-right:.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:#ccc}.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 .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.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(.4,0,1,1) .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:.6em;font-weight:700;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-next,.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{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-next::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-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.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-next.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-previous.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:#ccc;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:.5em;margin-right:.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:.9em;margin-right:.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:.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:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.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,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.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{background:#000;height:.2em;margin-bottom:.3em;margin-top:.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{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.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{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.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:.5em solid rgba(136,136,136,.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:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .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}.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}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;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 .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-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{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:400;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{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;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}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%}}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css
new file mode 100644
index 0000000..d2adc4d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css
@@ -0,0 +1,37 @@
+/**
+ * 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.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen,
+.tox-shadowhost.tox-fullscreen {
+ left: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1200;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
new file mode 100644
index 0000000..a0893b9
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/public/tinymce/skins/ui/oxide/content.css b/public/tinymce/skins/ui/oxide/content.css
new file mode 100644
index 0000000..2ac0cca
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.css
@@ -0,0 +1,732 @@
+/**
+ * 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 {
+ content: 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");
+ 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 {
+ content: 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: 1298;
+}
+.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-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.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: 10002;
+}
+.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 video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[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] {
+ position: relative;
+}
+.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] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.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;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] 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;
+}
diff --git a/public/tinymce/skins/ui/oxide/content.inline.css b/public/tinymce/skins/ui/oxide/content.inline.css
new file mode 100644
index 0000000..8e7521d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.inline.css
@@ -0,0 +1,726 @@
+/**
+ * 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 {
+ content: 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");
+ 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 {
+ content: 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: 1298;
+}
+.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-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.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: 10002;
+}
+.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 video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[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] {
+ position: relative;
+}
+.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] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.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;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] 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: '-';
+}
diff --git a/public/tinymce/skins/ui/oxide/content.inline.min.css b/public/tinymce/skins/ui/oxide/content.inline.min.css
new file mode 100644
index 0000000..b4ab9a3
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content: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");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content: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}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;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}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;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--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{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--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 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,.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:1298}.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-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.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:700;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 audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[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:0}.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]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.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:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{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]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.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]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.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] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/public/tinymce/skins/ui/oxide/content.min.css b/public/tinymce/skins/ui/oxide/content.min.css
new file mode 100644
index 0000000..844858d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content: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");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content: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}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;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}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;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--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{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--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 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,.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:1298}.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-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.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:700;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 audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[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:0}.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]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.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:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{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]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.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]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.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] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{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}
diff --git a/public/tinymce/skins/ui/oxide/content.mobile.css b/public/tinymce/skins/ui/oxide/content.mobile.css
new file mode 100644
index 0000000..4bdb8ba
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.mobile.css
@@ -0,0 +1,29 @@
+/**
+ * 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;
+}
diff --git a/public/tinymce/skins/ui/oxide/content.mobile.min.css b/public/tinymce/skins/ui/oxide/content.mobile.min.css
new file mode 100644
index 0000000..35f7dc0
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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}
diff --git a/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
new file mode 100644
index 0000000..1e3be03
Binary files /dev/null and b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff differ
diff --git a/public/tinymce/skins/ui/oxide/skin.css b/public/tinymce/skins/ui/oxide/skin.css
new file mode 100644
index 0000000..d4975f8
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.css
@@ -0,0 +1,3055 @@
+/**
+ * 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/
+ */
+.tox {
+ box-shadow: none;
+ box-sizing: content-box;
+ color: #222f3e;
+ cursor: auto;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ -webkit-tap-highlight-color: transparent;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ vertical-align: initial;
+ white-space: normal;
+}
+.tox *:not(svg):not(rect) {
+ box-sizing: inherit;
+ color: inherit;
+ cursor: inherit;
+ direction: inherit;
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ -webkit-tap-highlight-color: inherit;
+ text-align: inherit;
+ text-decoration: inherit;
+ text-shadow: inherit;
+ text-transform: inherit;
+ vertical-align: inherit;
+ white-space: inherit;
+}
+.tox *:not(svg):not(rect) {
+ /* stylelint-disable-line no-duplicate-selectors */
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ float: none;
+ height: auto;
+ margin: 0;
+ max-width: none;
+ outline: 0;
+ padding: 0;
+ position: static;
+ width: auto;
+}
+.tox:not([dir='rtl']) {
+ direction: ltr;
+ text-align: left;
+}
+.tox[dir='rtl'] {
+ direction: rtl;
+ text-align: right;
+}
+.tox-tinymce {
+ border: 1px solid #cccccc;
+ border-radius: 0;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ overflow: hidden;
+ position: relative;
+ visibility: inherit !important;
+}
+.tox-tinymce-inline {
+ border: none;
+ box-shadow: none;
+}
+.tox-tinymce-inline .tox-editor-header {
+ background-color: transparent;
+ border: 1px solid #cccccc;
+ border-radius: 0;
+ box-shadow: none;
+}
+.tox-tinymce-aux {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ z-index: 1300;
+}
+.tox-tinymce *:focus,
+.tox-tinymce-aux *:focus {
+ outline: none;
+}
+button::-moz-focus-inner {
+ border: 0;
+}
+.tox[dir='rtl'] .tox-icon--flip svg {
+ transform: rotateY(180deg);
+}
+.tox .accessibility-issue__header {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description {
+ align-items: stretch;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .accessibility-issue__description > div {
+ padding-bottom: 4px;
+}
+.tox .accessibility-issue__description > div > div {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description > *:last-child:not(:only-child) {
+ border-color: #cccccc;
+ border-style: solid;
+}
+.tox .accessibility-issue__repair {
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {
+ background-color: rgba(32, 122, 183, 0.1);
+ border-color: rgba(32, 122, 183, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {
+ border-color: rgba(32, 122, 183, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {
+ fill: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {
+ background-color: rgba(255, 165, 0, 0.1);
+ border-color: rgba(255, 165, 0, 0.5);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {
+ border-color: rgba(255, 165, 0, 0.5);
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {
+ color: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {
+ fill: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {
+ color: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {
+ background-color: rgba(204, 0, 0, 0.1);
+ border-color: rgba(204, 0, 0, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {
+ border-color: rgba(204, 0, 0, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {
+ color: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {
+ fill: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {
+ color: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {
+ background-color: rgba(120, 171, 70, 0.1);
+ border-color: rgba(120, 171, 70, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {
+ border-color: rgba(120, 171, 70, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {
+ color: #78ab46;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {
+ fill: #78ab46;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {
+ color: #78ab46;
+}
+.tox .tox-dialog__body-content .accessibility-issue__header h1,
+.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
+ margin-top: 0;
+}
+.tox:not([dir='rtl']) .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-left: 4px;
+}
+.tox:not([dir='rtl']) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-left: auto;
+}
+.tox:not([dir='rtl']) .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 4px 4px 8px;
+}
+.tox:not([dir='rtl']) .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-left-width: 1px;
+ padding-left: 4px;
+}
+.tox[dir='rtl'] .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-right: 4px;
+}
+.tox[dir='rtl'] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-right: auto;
+}
+.tox[dir='rtl'] .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 8px 4px 4px;
+}
+.tox[dir='rtl'] .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-right-width: 1px;
+ padding-right: 4px;
+}
+.tox .tox-anchorbar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-bar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-button {
+ background-color: #207ab7;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #207ab7;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ line-height: 24px;
+ margin: 0;
+ outline: none;
+ padding: 4px 16px;
+ text-align: center;
+ text-decoration: none;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-button[disabled] {
+ background-color: #207ab7;
+ background-image: none;
+ border-color: #207ab7;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-button:focus:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:hover:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:active:not(:disabled) {
+ background-color: #185d8c;
+ background-image: none;
+ border-color: #185d8c;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary {
+ background-color: #f0f0f0;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #f0f0f0;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ color: #222f3e;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ outline: none;
+ padding: 4px 16px;
+ text-decoration: none;
+ text-transform: none;
+}
+.tox .tox-button--secondary[disabled] {
+ background-color: #f0f0f0;
+ background-image: none;
+ border-color: #f0f0f0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-button--secondary:focus:not(:disabled) {
+ background-color: #e3e3e3;
+ background-image: none;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--secondary:hover:not(:disabled) {
+ background-color: #e3e3e3;
+ background-image: none;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--secondary:active:not(:disabled) {
+ background-color: #d6d6d6;
+ background-image: none;
+ border-color: #d6d6d6;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--icon,
+.tox .tox-button.tox-button--icon,
+.tox .tox-button.tox-button--secondary.tox-button--icon {
+ padding: 4px;
+}
+.tox .tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
+ display: block;
+ fill: currentColor;
+}
+.tox .tox-button-link {
+ background: 0;
+ border: none;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.tox .tox-button-link--sm {
+ font-size: 14px;
+}
+.tox .tox-button--naked {
+ background-color: transparent;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #222f3e;
+}
+.tox .tox-button--naked[disabled] {
+ background-color: #f0f0f0;
+ border-color: #f0f0f0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-button--naked:hover:not(:disabled) {
+ background-color: #e3e3e3;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked:focus:not(:disabled) {
+ background-color: #e3e3e3;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked:active:not(:disabled) {
+ background-color: #d6d6d6;
+ border-color: #d6d6d6;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked .tox-icon svg {
+ fill: currentColor;
+}
+.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
+ color: #222f3e;
+}
+.tox .tox-checkbox {
+ align-items: center;
+ border-radius: 3px;
+ cursor: pointer;
+ display: flex;
+ height: 36px;
+ min-width: 36px;
+}
+.tox .tox-checkbox__input {
+ /* Hide from view but visible to screen readers */
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ top: auto;
+ width: 1px;
+}
+.tox .tox-checkbox__icons {
+ align-items: center;
+ border-radius: 3px;
+ box-shadow: 0 0 0 2px transparent;
+ box-sizing: content-box;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ padding: calc(4px - 1px);
+ width: 24px;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: block;
+ fill: rgba(34, 47, 62, 0.3);
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox--disabled {
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
+ border-radius: 3px;
+ box-shadow: inset 0 0 0 1px #207ab7;
+ padding: calc(4px - 1px);
+}
+.tox:not([dir='rtl']) .tox-checkbox__label {
+ margin-left: 4px;
+}
+.tox:not([dir='rtl']) .tox-checkbox__input {
+ left: -10000px;
+}
+.tox:not([dir='rtl']) .tox-bar .tox-checkbox {
+ margin-left: 4px;
+}
+.tox[dir='rtl'] .tox-checkbox__label {
+ margin-right: 4px;
+}
+.tox[dir='rtl'] .tox-checkbox__input {
+ right: -10000px;
+}
+.tox[dir='rtl'] .tox-bar .tox-checkbox {
+ margin-right: 4px;
+}
+.tox {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox .tox-collection--toolbar .tox-collection__group {
+ display: flex;
+ padding: 0;
+}
+.tox .tox-collection--grid .tox-collection__group {
+ display: flex;
+ flex-wrap: wrap;
+ max-height: 208px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+.tox .tox-collection--list .tox-collection__group {
+ border-bottom-width: 0;
+ border-color: #cccccc;
+ border-left-width: 0;
+ border-right-width: 0;
+ border-style: solid;
+ border-top-width: 1px;
+ padding: 4px 0;
+}
+.tox .tox-collection--list .tox-collection__group:first-child {
+ border-top-width: 0;
+}
+.tox .tox-collection__group-heading {
+ background-color: #e6e6e6;
+ color: rgba(34, 47, 62, 0.7);
+ cursor: default;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ margin-bottom: 4px;
+ margin-top: -4px;
+ padding: 4px 8px;
+ text-transform: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection__item {
+ align-items: center;
+ color: #222f3e;
+ cursor: pointer;
+ display: flex;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection--list .tox-collection__item {
+ padding: 4px 8px;
+}
+.tox .tox-collection--toolbar .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--grid .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--list .tox-collection__item--enabled {
+ background-color: #fff;
+ color: #222f3e;
+}
+.tox .tox-collection--list .tox-collection__item--active {
+ background-color: #dee0e2;
+}
+.tox .tox-collection--toolbar .tox-collection__item--enabled {
+ background-color: #c8cbcf;
+ color: #222f3e;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active {
+ background-color: #dee0e2;
+}
+.tox .tox-collection--grid .tox-collection__item--enabled {
+ background-color: #c8cbcf;
+ color: #222f3e;
+}
+.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ background-color: #dee0e2;
+ color: #222f3e;
+}
+.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #222f3e;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #222f3e;
+}
+.tox .tox-collection__item-icon,
+.tox .tox-collection__item-checkmark {
+ align-items: center;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ width: 24px;
+}
+.tox .tox-collection__item-icon svg,
+.tox .tox-collection__item-checkmark svg {
+ fill: currentColor;
+}
+.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
+ height: 48px;
+ width: 48px;
+}
+.tox .tox-collection__item-label {
+ color: currentColor;
+ display: inline-block;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 24px;
+ text-transform: none;
+ word-break: break-all;
+}
+.tox .tox-collection__item-accessory {
+ color: rgba(34, 47, 62, 0.7);
+ display: inline-block;
+ font-size: 14px;
+ height: 24px;
+ line-height: 24px;
+ text-transform: none;
+}
+.tox .tox-collection__item-caret {
+ align-items: center;
+ display: flex;
+ min-height: 24px;
+}
+.tox .tox-collection__item-caret::after {
+ content: '';
+ font-size: 0;
+ min-height: inherit;
+}
+.tox .tox-collection__item-caret svg {
+ fill: #222f3e;
+}
+.tox .tox-collection__item--state-disabled {
+ background-color: transparent;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
+ display: none;
+}
+.tox
+ .tox-collection--list
+ .tox-collection__item:not(.tox-collection__item--enabled)
+ .tox-collection__item-accessory
+ + .tox-collection__item-checkmark {
+ display: none;
+}
+.tox .tox-collection--horizontal {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+ margin-bottom: 0;
+ overflow-x: auto;
+ padding: 0;
+}
+.tox .tox-collection--horizontal .tox-collection__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: nowrap;
+ margin: 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item {
+ height: 34px;
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item-label {
+ white-space: nowrap;
+}
+.tox .tox-collection--horizontal .tox-collection__item-caret {
+ margin-left: 4px;
+}
+.tox .tox-collection__item-container {
+ display: flex;
+}
+.tox .tox-collection__item-container--row {
+ align-items: center;
+ flex: 1 1 auto;
+ flex-direction: row;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {
+ margin-right: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {
+ justify-content: flex-end;
+ margin-left: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {
+ align-items: flex-start;
+ margin-bottom: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {
+ align-items: center;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {
+ align-items: flex-end;
+ margin-top: auto;
+}
+.tox .tox-collection__item-container--column {
+ -ms-grid-row-align: center;
+ align-self: center;
+ flex: 1 1 auto;
+ flex-direction: column;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {
+ align-items: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {
+ align-items: flex-end;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {
+ align-self: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {
+ -ms-grid-row-align: center;
+ align-self: center;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {
+ align-self: flex-end;
+}
+.tox:not([dir='rtl']) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-right: 1px solid #cccccc;
+}
+.tox:not([dir='rtl']) .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-left: 8px;
+}
+.tox:not([dir='rtl']) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-left: 4px;
+}
+.tox:not([dir='rtl']) .tox-collection__item-accessory {
+ margin-left: 16px;
+ text-align: right;
+}
+.tox:not([dir='rtl']) .tox-collection .tox-collection__item-caret {
+ margin-left: 16px;
+}
+.tox[dir='rtl'] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-left: 1px solid #cccccc;
+}
+.tox[dir='rtl'] .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-right: 8px;
+}
+.tox[dir='rtl'] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-right: 4px;
+}
+.tox[dir='rtl'] .tox-collection__item-accessory {
+ margin-right: 16px;
+ text-align: left;
+}
+.tox[dir='rtl'] .tox-collection .tox-collection__item-caret {
+ margin-right: 16px;
+ transform: rotateY(180deg);
+}
+.tox[dir='rtl'] .tox-collection--horizontal .tox-collection__item-caret {
+ margin-right: 4px;
+}
+.tox .tox-color-picker-container {
+ display: flex;
+ flex-direction: row;
+ height: 225px;
+ margin: 0;
+}
+.tox .tox-sv-palette {
+ box-sizing: border-box;
+ display: flex;
+ height: 100%;
+}
+.tox .tox-sv-palette-spectrum {
+ height: 100%;
+}
+.tox .tox-sv-palette,
+.tox .tox-sv-palette-spectrum {
+ width: 225px;
+}
+.tox .tox-sv-palette-thumb {
+ background: none;
+ border: 1px solid black;
+ border-radius: 50%;
+ box-sizing: content-box;
+ height: 12px;
+ position: absolute;
+ width: 12px;
+}
+.tox .tox-sv-palette-inner-thumb {
+ border: 1px solid white;
+ border-radius: 50%;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox .tox-hue-slider {
+ box-sizing: border-box;
+ height: 100%;
+ width: 25px;
+}
+.tox .tox-hue-slider-spectrum {
+ background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
+ height: 100%;
+ width: 100%;
+}
+.tox .tox-hue-slider,
+.tox .tox-hue-slider-spectrum {
+ width: 20px;
+}
+.tox .tox-hue-slider-thumb {
+ background: white;
+ border: 1px solid black;
+ box-sizing: content-box;
+ height: 4px;
+ width: 100%;
+}
+.tox .tox-rgb-form {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+.tox .tox-rgb-form div {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 5px;
+ width: inherit;
+}
+.tox .tox-rgb-form input {
+ width: 6em;
+}
+.tox .tox-rgb-form input.tox-invalid {
+ /* Need !important to override Chrome's focus styling unfortunately */
+ border: 1px solid red !important;
+}
+.tox .tox-rgb-form .tox-rgba-preview {
+ border: 1px solid black;
+ flex-grow: 2;
+ margin-bottom: 0;
+}
+.tox:not([dir='rtl']) .tox-sv-palette {
+ margin-right: 15px;
+}
+.tox:not([dir='rtl']) .tox-hue-slider {
+ margin-right: 15px;
+}
+.tox:not([dir='rtl']) .tox-hue-slider-thumb {
+ margin-left: -1px;
+}
+.tox:not([dir='rtl']) .tox-rgb-form label {
+ margin-right: 0.5em;
+}
+.tox[dir='rtl'] .tox-sv-palette {
+ margin-left: 15px;
+}
+.tox[dir='rtl'] .tox-hue-slider {
+ margin-left: 15px;
+}
+.tox[dir='rtl'] .tox-hue-slider-thumb {
+ margin-right: -1px;
+}
+.tox[dir='rtl'] .tox-rgb-form label {
+ margin-left: 0.5em;
+}
+.tox .tox-toolbar .tox-swatches,
+.tox .tox-toolbar__primary .tox-swatches,
+.tox .tox-toolbar__overflow .tox-swatches {
+ margin: 2px 0 3px 4px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
+ border: 0;
+ margin: -4px 0;
+}
+.tox .tox-swatches__row {
+ display: flex;
+}
+.tox .tox-swatch {
+ height: 30px;
+ transition: transform 0.15s, box-shadow 0.15s;
+ width: 30px;
+}
+.tox .tox-swatch:hover,
+.tox .tox-swatch:focus {
+ box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
+ transform: scale(0.8);
+}
+.tox .tox-swatch--remove {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-swatch--remove svg path {
+ stroke: #e74c3c;
+}
+.tox .tox-swatches__picker-btn {
+ align-items: center;
+ background-color: transparent;
+ border: 0;
+ cursor: pointer;
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ outline: none;
+ padding: 0;
+ width: 30px;
+}
+.tox .tox-swatches__picker-btn svg {
+ height: 24px;
+ width: 24px;
+}
+.tox .tox-swatches__picker-btn:hover {
+ background: #dee0e2;
+}
+.tox:not([dir='rtl']) .tox-swatches__picker-btn {
+ margin-left: auto;
+}
+.tox[dir='rtl'] .tox-swatches__picker-btn {
+ margin-right: auto;
+}
+.tox .tox-comment-thread {
+ background: #fff;
+ position: relative;
+}
+.tox .tox-comment-thread > *:not(:first-child) {
+ margin-top: 8px;
+}
+.tox .tox-comment {
+ background: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
+ padding: 8px 8px 16px 8px;
+ position: relative;
+}
+.tox .tox-comment__header {
+ align-items: center;
+ color: #222f3e;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .tox-comment__date {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 12px;
+}
+.tox .tox-comment__body {
+ color: #222f3e;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin-top: 8px;
+ position: relative;
+ text-transform: initial;
+}
+.tox .tox-comment__body textarea {
+ resize: none;
+ white-space: normal;
+ width: 100%;
+}
+.tox .tox-comment__expander {
+ padding-top: 8px;
+}
+.tox .tox-comment__expander p {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 14px;
+ font-style: normal;
+}
+.tox .tox-comment__body p {
+ margin: 0;
+}
+.tox .tox-comment__buttonspacing {
+ padding-top: 16px;
+ text-align: center;
+}
+.tox .tox-comment-thread__overlay::after {
+ background: #fff;
+ bottom: 0;
+ content: '';
+ display: flex;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__reply {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 8px;
+}
+.tox .tox-comment__reply > *:first-child {
+ margin-bottom: 8px;
+ width: 100%;
+}
+.tox .tox-comment__edit {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 16px;
+}
+.tox .tox-comment__gradient::after {
+ background: linear-gradient(rgba(255, 255, 255, 0), #fff);
+ bottom: 0;
+ content: '';
+ display: block;
+ height: 5em;
+ margin-top: -40px;
+ position: absolute;
+ width: 100%;
+}
+.tox .tox-comment__overlay {
+ background: #fff;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__loading-text {
+ align-items: center;
+ color: #222f3e;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+.tox .tox-comment__loading-text > div {
+ padding-bottom: 16px;
+}
+.tox .tox-comment__overlaytext {
+ bottom: 0;
+ flex-direction: column;
+ font-size: 14px;
+ left: 0;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+}
+.tox .tox-comment__overlaytext p {
+ background-color: #fff;
+ box-shadow: 0 0 8px 8px #fff;
+ color: #222f3e;
+ text-align: center;
+}
+.tox .tox-comment__overlaytext div:nth-of-type(2) {
+ font-size: 0.8em;
+}
+.tox .tox-comment__busy-spinner {
+ align-items: center;
+ background-color: #fff;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 20;
+}
+.tox .tox-comment__scroll {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 1;
+ overflow: auto;
+}
+.tox .tox-conversations {
+ margin: 8px;
+}
+.tox:not([dir='rtl']) .tox-comment__edit {
+ margin-left: 8px;
+}
+.tox:not([dir='rtl']) .tox-comment__buttonspacing > *:last-child,
+.tox:not([dir='rtl']) .tox-comment__edit > *:last-child,
+.tox:not([dir='rtl']) .tox-comment__reply > *:last-child {
+ margin-left: 8px;
+}
+.tox[dir='rtl'] .tox-comment__edit {
+ margin-right: 8px;
+}
+.tox[dir='rtl'] .tox-comment__buttonspacing > *:last-child,
+.tox[dir='rtl'] .tox-comment__edit > *:last-child,
+.tox[dir='rtl'] .tox-comment__reply > *:last-child {
+ margin-right: 8px;
+}
+.tox .tox-user {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-user__avatar svg {
+ fill: rgba(34, 47, 62, 0.7);
+}
+.tox .tox-user__name {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+.tox:not([dir='rtl']) .tox-user__avatar svg {
+ margin-right: 8px;
+}
+.tox:not([dir='rtl']) .tox-user__avatar + .tox-user__name {
+ margin-left: 8px;
+}
+.tox[dir='rtl'] .tox-user__avatar svg {
+ margin-left: 8px;
+}
+.tox[dir='rtl'] .tox-user__avatar + .tox-user__name {
+ margin-right: 8px;
+}
+.tox .tox-dialog-wrap {
+ align-items: center;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1100;
+}
+.tox .tox-dialog-wrap__backdrop {
+ background-color: rgba(255, 255, 255, 0.75);
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+.tox .tox-dialog-wrap__backdrop--opaque {
+ background-color: #fff;
+}
+.tox .tox-dialog {
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);
+ display: flex;
+ flex-direction: column;
+ max-height: 100%;
+ max-width: 480px;
+ overflow: hidden;
+ position: relative;
+ width: 95vw;
+ z-index: 2;
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog {
+ align-self: flex-start;
+ margin: 8px auto;
+ width: calc(100vw - 16px);
+ }
+}
+.tox .tox-dialog-inline {
+ z-index: 1100;
+}
+.tox .tox-dialog__header {
+ align-items: center;
+ background-color: #fff;
+ border-bottom: none;
+ color: #222f3e;
+ display: flex;
+ font-size: 16px;
+ justify-content: space-between;
+ padding: 8px 16px 0 16px;
+ position: relative;
+}
+.tox .tox-dialog__header .tox-button {
+ z-index: 1;
+}
+.tox .tox-dialog__draghandle {
+ cursor: grab;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tox .tox-dialog__draghandle:active {
+ cursor: grabbing;
+}
+.tox .tox-dialog__dismiss {
+ margin-left: auto;
+}
+.tox .tox-dialog__title {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ text-transform: none;
+}
+.tox .tox-dialog__body {
+ color: #222f3e;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ min-width: 0;
+ text-align: left;
+ text-transform: none;
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body {
+ flex-direction: column;
+ }
+}
+.tox .tox-dialog__body-nav {
+ align-items: flex-start;
+ display: flex;
+ flex-direction: column;
+ padding: 16px 16px;
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
+ flex-direction: row;
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ padding-bottom: 0;
+ }
+}
+.tox .tox-dialog__body-nav-item {
+ border-bottom: 2px solid transparent;
+ color: rgba(34, 47, 62, 0.7);
+ display: inline-block;
+ font-size: 14px;
+ line-height: 1.3;
+ margin-bottom: 8px;
+ text-decoration: none;
+ white-space: nowrap;
+}
+.tox .tox-dialog__body-nav-item:focus {
+ background-color: rgba(32, 122, 183, 0.1);
+}
+.tox .tox-dialog__body-nav-item--active {
+ border-bottom: 2px solid #207ab7;
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content {
+ box-sizing: border-box;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+ max-height: 650px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ padding: 16px 16px;
+}
+.tox .tox-dialog__body-content > * {
+ margin-bottom: 0;
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content > *:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content a {
+ color: #207ab7;
+ cursor: pointer;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:hover,
+.tox .tox-dialog__body-content a:focus {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:active {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content svg {
+ fill: #222f3e;
+}
+.tox .tox-dialog__body-content ul {
+ display: block;
+ list-style-type: disc;
+ margin-bottom: 16px;
+ -webkit-margin-end: 0;
+ margin-inline-end: 0;
+ -webkit-margin-start: 0;
+ margin-inline-start: 0;
+ -webkit-padding-start: 2.5rem;
+ padding-inline-start: 2.5rem;
+}
+.tox .tox-dialog__body-content .tox-form__group h1 {
+ color: #222f3e;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group h2 {
+ color: #222f3e;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group p {
+ margin-bottom: 16px;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:first-child,
+.tox .tox-dialog__body-content .tox-form__group h2:first-child,
+.tox .tox-dialog__body-content .tox-form__group p:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:last-child,
+.tox .tox-dialog__body-content .tox-form__group h2:last-child,
+.tox .tox-dialog__body-content .tox-form__group p:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:only-child,
+.tox .tox-dialog__body-content .tox-form__group h2:only-child,
+.tox .tox-dialog__body-content .tox-form__group p:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog--width-lg {
+ height: 650px;
+ max-width: 1200px;
+}
+.tox .tox-dialog--width-md {
+ max-width: 800px;
+}
+.tox .tox-dialog--width-md .tox-dialog__body-content {
+ overflow: auto;
+}
+.tox .tox-dialog__body-content--centered {
+ text-align: center;
+}
+.tox .tox-dialog__footer {
+ align-items: center;
+ background-color: #fff;
+ border-top: 1px solid #cccccc;
+ display: flex;
+ justify-content: space-between;
+ padding: 8px 16px;
+}
+.tox .tox-dialog__footer-start,
+.tox .tox-dialog__footer-end {
+ display: flex;
+}
+.tox .tox-dialog__busy-spinner {
+ align-items: center;
+ background-color: rgba(255, 255, 255, 0.75);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 3;
+}
+.tox .tox-dialog__table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.tox .tox-dialog__table thead th {
+ font-weight: bold;
+ padding-bottom: 8px;
+}
+.tox .tox-dialog__table tbody tr {
+ border-bottom: 1px solid #cccccc;
+}
+.tox .tox-dialog__table tbody tr:last-child {
+ border-bottom: none;
+}
+.tox .tox-dialog__table td {
+ padding-bottom: 8px;
+ padding-top: 8px;
+}
+.tox .tox-dialog__popups {
+ position: absolute;
+ width: 100%;
+ z-index: 1100;
+}
+.tox .tox-dialog__body-iframe {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox .tox-dialog-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox .tox-dialog-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox .tox-dialog-dock-transition {
+ transition: visibility 0s linear 0.3s, opacity 0.3s ease;
+}
+.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
+ transition-delay: 0s;
+}
+.tox.tox-platform-ie {
+ /* IE11 CSS styles go here */
+}
+.tox.tox-platform-ie .tox-dialog-wrap {
+ position: -ms-device-fixed;
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox:not([dir='rtl']) .tox-dialog__body-nav {
+ margin-right: 0;
+ }
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox:not([dir='rtl']) .tox-dialog__body-nav-item:not(:first-child) {
+ margin-left: 8px;
+ }
+}
+.tox:not([dir='rtl']) .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox:not([dir='rtl']) .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-left: 8px;
+}
+.tox[dir='rtl'] .tox-dialog__body {
+ text-align: right;
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox[dir='rtl'] .tox-dialog__body-nav {
+ margin-left: 0;
+ }
+}
+@media only screen and (max-width: 767px) {
+ body:not(.tox-force-desktop) .tox[dir='rtl'] .tox-dialog__body-nav-item:not(:first-child) {
+ margin-right: 8px;
+ }
+}
+.tox[dir='rtl'] .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox[dir='rtl'] .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-right: 8px;
+}
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox .tox-dropzone-container {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dropzone {
+ align-items: center;
+ background: #fff;
+ border: 2px dashed #cccccc;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ justify-content: center;
+ min-height: 100px;
+ padding: 10px;
+}
+.tox .tox-dropzone p {
+ color: rgba(34, 47, 62, 0.7);
+ margin: 0 0 16px 0;
+}
+.tox .tox-edit-area {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ overflow: hidden;
+ position: relative;
+}
+.tox .tox-edit-area__iframe {
+ background-color: #fff;
+ border: 0;
+ box-sizing: border-box;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tox.tox-inline-edit-area {
+ border: 1px dotted #cccccc;
+}
+.tox .tox-editor-container {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ overflow: hidden;
+}
+.tox .tox-editor-header {
+ z-index: 1;
+}
+.tox:not(.tox-tinymce-inline) .tox-editor-header {
+ box-shadow: none;
+ transition: box-shadow 0.5s;
+}
+.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
+.tox.tox-tinymce-inline .tox-editor-header {
+ margin-bottom: -1px;
+}
+.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
+ background-color: transparent;
+ box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
+}
+.tox-editor-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox-editor-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox-editor-dock-transition {
+ transition: visibility 0s linear 0.25s, opacity 0.25s ease;
+}
+.tox-editor-dock-transition.tox-editor-dock-fadein {
+ transition-delay: 0s;
+}
+.tox .tox-control-wrap {
+ flex: 1;
+ position: relative;
+}
+.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
+ display: none;
+}
+.tox .tox-control-wrap svg {
+ display: block;
+}
+.tox .tox-control-wrap__status-icon-wrap {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-control-wrap__status-icon-invalid svg {
+ fill: #c00;
+}
+.tox .tox-control-wrap__status-icon-unknown svg {
+ fill: orange;
+}
+.tox .tox-control-wrap__status-icon-valid svg {
+ fill: green;
+}
+.tox:not([dir='rtl']) .tox-control-wrap--status-invalid .tox-textfield,
+.tox:not([dir='rtl']) .tox-control-wrap--status-unknown .tox-textfield,
+.tox:not([dir='rtl']) .tox-control-wrap--status-valid .tox-textfield {
+ padding-right: 32px;
+}
+.tox:not([dir='rtl']) .tox-control-wrap__status-icon-wrap {
+ right: 4px;
+}
+.tox[dir='rtl'] .tox-control-wrap--status-invalid .tox-textfield,
+.tox[dir='rtl'] .tox-control-wrap--status-unknown .tox-textfield,
+.tox[dir='rtl'] .tox-control-wrap--status-valid .tox-textfield {
+ padding-left: 32px;
+}
+.tox[dir='rtl'] .tox-control-wrap__status-icon-wrap {
+ left: 4px;
+}
+.tox .tox-autocompleter {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-menu {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-autocompleter-highlight {
+ font-weight: bold;
+}
+.tox .tox-color-input {
+ display: flex;
+ position: relative;
+ z-index: 1;
+}
+.tox .tox-color-input .tox-textfield {
+ z-index: -1;
+}
+.tox .tox-color-input span {
+ border-color: rgba(34, 47, 62, 0.2);
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ height: 24px;
+ position: absolute;
+ top: 6px;
+ width: 24px;
+}
+.tox .tox-color-input span:hover:not([aria-disabled='true']),
+.tox .tox-color-input span:focus:not([aria-disabled='true']) {
+ border-color: #207ab7;
+ cursor: pointer;
+}
+.tox .tox-color-input span::before {
+ background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%),
+ linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%),
+ linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
+ background-size: 12px 12px;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ box-sizing: border-box;
+ content: '';
+ height: 24px;
+ left: -1px;
+ position: absolute;
+ top: -1px;
+ width: 24px;
+ z-index: -1;
+}
+.tox .tox-color-input span[aria-disabled='true'] {
+ cursor: not-allowed;
+}
+.tox:not([dir='rtl']) .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir='rtl']) .tox-color-input .tox-textfield {
+ padding-left: 36px;
+}
+.tox:not([dir='rtl']) .tox-color-input span {
+ left: 6px;
+}
+.tox[dir='rtl'] .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir='rtl'] .tox-color-input .tox-textfield {
+ padding-right: 36px;
+}
+.tox[dir='rtl'] .tox-color-input span {
+ right: 6px;
+}
+.tox .tox-label,
+.tox .tox-toolbar-label {
+ color: rgba(34, 47, 62, 0.7);
+ display: block;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ padding: 0 8px 0 0;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-toolbar-label {
+ padding: 0 8px;
+}
+.tox[dir='rtl'] .tox-label {
+ padding: 0 0 0 8px;
+}
+.tox .tox-form {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group {
+ box-sizing: border-box;
+ margin-bottom: 4px;
+}
+.tox .tox-form-group--maximize {
+ flex: 1;
+}
+.tox .tox-form__group--error {
+ color: #c00;
+}
+.tox .tox-form__group--collection {
+ display: flex;
+}
+.tox .tox-form__grid {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+.tox .tox-form__grid--2col > .tox-form__group {
+ width: calc(50% - (8px / 2));
+}
+.tox .tox-form__grid--3col > .tox-form__group {
+ width: calc(100% / 3 - (8px / 2));
+}
+.tox .tox-form__grid--4col > .tox-form__group {
+ width: calc(25% - (8px / 2));
+}
+.tox .tox-form__controls-h-stack {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--inline {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--stretched {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-textarea {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox:not([dir='rtl']) .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir='rtl'] .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
+.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
+ display: none;
+}
+.tox .tox-textfield,
+.tox .tox-toolbar-textfield,
+.tox .tox-listboxfield .tox-listbox--select,
+.tox .tox-textarea {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #222f3e;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-textfield[disabled],
+.tox .tox-textarea[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-textfield:focus,
+.tox .tox-listboxfield .tox-listbox--select:focus,
+.tox .tox-textarea:focus {
+ background-color: #fff;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-toolbar-textfield {
+ border-width: 0;
+ margin-bottom: 3px;
+ margin-top: 2px;
+ max-width: 250px;
+}
+.tox .tox-naked-btn {
+ background-color: transparent;
+ border: 0;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #207ab7;
+ cursor: pointer;
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+.tox .tox-naked-btn svg {
+ display: block;
+ fill: #222f3e;
+}
+.tox:not([dir='rtl']) .tox-toolbar-textfield + * {
+ margin-left: 4px;
+}
+.tox[dir='rtl'] .tox-toolbar-textfield + * {
+ margin-right: 4px;
+}
+.tox .tox-listboxfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-listboxfield .tox-listbox--select[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-listbox__select-label {
+ cursor: default;
+ flex: 1;
+ margin: 0 4px;
+}
+.tox .tox-listbox__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-listbox__select-chevron svg {
+ fill: #222f3e;
+}
+.tox .tox-listboxfield .tox-listbox--select {
+ align-items: center;
+ display: flex;
+}
+.tox:not([dir='rtl']) .tox-listboxfield svg {
+ right: 8px;
+}
+.tox[dir='rtl'] .tox-listboxfield svg {
+ left: 8px;
+}
+.tox .tox-selectfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-selectfield select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #222f3e;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-selectfield select[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-selectfield select::-ms-expand {
+ display: none;
+}
+.tox .tox-selectfield select:focus {
+ background-color: #fff;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-selectfield svg {
+ pointer-events: none;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox:not([dir='rtl']) .tox-selectfield select[size='0'],
+.tox:not([dir='rtl']) .tox-selectfield select[size='1'] {
+ padding-right: 24px;
+}
+.tox:not([dir='rtl']) .tox-selectfield svg {
+ right: 8px;
+}
+.tox[dir='rtl'] .tox-selectfield select[size='0'],
+.tox[dir='rtl'] .tox-selectfield select[size='1'] {
+ padding-left: 24px;
+}
+.tox[dir='rtl'] .tox-selectfield svg {
+ left: 8px;
+}
+.tox .tox-textarea {
+ -webkit-appearance: textarea;
+ -moz-appearance: textarea;
+ appearance: textarea;
+ white-space: pre-wrap;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen,
+.tox-shadowhost.tox-fullscreen {
+ left: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1200;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
+.tox .tox-help__more-link {
+ list-style: none;
+ margin-top: 1em;
+}
+.tox .tox-image-tools {
+ width: 100%;
+}
+.tox .tox-image-tools__toolbar {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-image-tools__image {
+ background-color: #666;
+ height: 380px;
+ overflow: auto;
+ position: relative;
+ width: 100%;
+}
+.tox .tox-image-tools__image,
+.tox .tox-image-tools__image + .tox-image-tools__toolbar {
+ margin-top: 8px;
+}
+.tox .tox-image-tools__image-bg {
+ background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
+}
+.tox .tox-image-tools__toolbar > .tox-spacer {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-croprect-block {
+ background: black;
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ position: absolute;
+ zoom: 1;
+}
+.tox .tox-croprect-handle {
+ border: 2px solid white;
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 20px;
+}
+.tox .tox-croprect-handle-move {
+ border: 0;
+ cursor: move;
+ position: absolute;
+}
+.tox .tox-croprect-handle-nw {
+ border-width: 2px 0 0 2px;
+ cursor: nw-resize;
+ left: 100px;
+ margin: -2px 0 0 -2px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-ne {
+ border-width: 2px 2px 0 0;
+ cursor: ne-resize;
+ left: 200px;
+ margin: -2px 0 0 -20px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-sw {
+ border-width: 0 0 2px 2px;
+ cursor: sw-resize;
+ left: 100px;
+ margin: -20px 2px 0 -2px;
+ top: 200px;
+}
+.tox .tox-croprect-handle-se {
+ border-width: 0 2px 2px 0;
+ cursor: se-resize;
+ left: 200px;
+ margin: -20px 0 0 -20px;
+ top: 200px;
+}
+.tox:not([dir='rtl']) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-left: 8px;
+}
+.tox:not([dir='rtl']) .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-left: 32px;
+}
+.tox:not([dir='rtl']) .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-left: 32px;
+}
+.tox[dir='rtl'] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-right: 8px;
+}
+.tox[dir='rtl'] .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-right: 32px;
+}
+.tox[dir='rtl'] .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-right: 32px;
+}
+.tox .tox-insert-table-picker {
+ display: flex;
+ flex-wrap: wrap;
+ width: 170px;
+}
+.tox .tox-insert-table-picker > div {
+ border-color: #cccccc;
+ border-style: solid;
+ border-width: 0 1px 1px 0;
+ box-sizing: border-box;
+ height: 17px;
+ width: 17px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
+ margin: -4px 0;
+}
+.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: rgba(32, 122, 183, 0.5);
+}
+.tox .tox-insert-table-picker__label {
+ color: rgba(34, 47, 62, 0.7);
+ display: block;
+ font-size: 14px;
+ padding: 4px;
+ text-align: center;
+ width: 100%;
+}
+.tox:not([dir='rtl']) {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir='rtl']) .tox-insert-table-picker > div:nth-child(10n) {
+ border-right: 0;
+}
+.tox[dir='rtl'] {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir='rtl'] .tox-insert-table-picker > div:nth-child(10n + 1) {
+ border-right: 0;
+}
+.tox {
+ /* stylelint-disable */
+ /* stylelint-enable */
+}
+.tox .tox-menu {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: top;
+ z-index: 1150;
+}
+.tox .tox-menu.tox-collection.tox-collection--list {
+ padding: 0;
+}
+.tox .tox-menu.tox-collection.tox-collection--toolbar {
+ padding: 4px;
+}
+.tox .tox-menu.tox-collection.tox-collection--grid {
+ padding: 4px;
+}
+.tox .tox-menu__label h1,
+.tox .tox-menu__label h2,
+.tox .tox-menu__label h3,
+.tox .tox-menu__label h4,
+.tox .tox-menu__label h5,
+.tox .tox-menu__label h6,
+.tox .tox-menu__label p,
+.tox .tox-menu__label blockquote,
+.tox .tox-menu__label code {
+ margin: 0;
+}
+.tox .tox-menubar {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E")
+ left 0 top 0 #fff;
+ background-color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 4px 0 4px;
+}
+.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
+ border-top: 1px solid #cccccc;
+}
+/* Deprecated. Remove in next major release */
+.tox .tox-mbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0 4px;
+ text-transform: none;
+ width: auto;
+}
+.tox .tox-mbtn[disabled] {
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-mbtn:focus:not(:disabled) {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn--active {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
+ cursor: not-allowed;
+}
+.tox .tox-mbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+ display: none;
+}
+.tox .tox-notification {
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: -ms-grid;
+ display: grid;
+ font-size: 14px;
+ font-weight: normal;
+ -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ margin-top: 4px;
+ opacity: 0;
+ padding: 4px;
+ transition: transform 100ms ease-in, opacity 150ms ease-in;
+}
+.tox .tox-notification p {
+ font-size: 14px;
+ font-weight: normal;
+}
+.tox .tox-notification a {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-notification--in {
+ opacity: 1;
+}
+.tox .tox-notification--success {
+ background-color: #e4eeda;
+ border-color: #d7e6c8;
+ color: #222f3e;
+}
+.tox .tox-notification--success p {
+ color: #222f3e;
+}
+.tox .tox-notification--success a {
+ color: #547831;
+}
+.tox .tox-notification--success svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--error {
+ background-color: #f8dede;
+ border-color: #f2bfbf;
+ color: #222f3e;
+}
+.tox .tox-notification--error p {
+ color: #222f3e;
+}
+.tox .tox-notification--error a {
+ color: #c00;
+}
+.tox .tox-notification--error svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--warn,
+.tox .tox-notification--warning {
+ background-color: #fffaea;
+ border-color: #ffe89d;
+ color: #222f3e;
+}
+.tox .tox-notification--warn p,
+.tox .tox-notification--warning p {
+ color: #222f3e;
+}
+.tox .tox-notification--warn a,
+.tox .tox-notification--warning a {
+ color: #222f3e;
+}
+.tox .tox-notification--warn svg,
+.tox .tox-notification--warning svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--info {
+ background-color: #d9edf7;
+ border-color: #779ecb;
+ color: #222f3e;
+}
+.tox .tox-notification--info p {
+ color: #222f3e;
+}
+.tox .tox-notification--info a {
+ color: #222f3e;
+}
+.tox .tox-notification--info svg {
+ fill: #222f3e;
+}
+.tox .tox-notification__body {
+ -ms-grid-row-align: center;
+ align-self: center;
+ color: #222f3e;
+ font-size: 14px;
+ -ms-grid-column-span: 1;
+ grid-column-end: 3;
+ -ms-grid-column: 2;
+ grid-column-start: 2;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ text-align: center;
+ white-space: normal;
+ word-break: break-all;
+ word-break: break-word;
+}
+.tox .tox-notification__body > * {
+ margin: 0;
+}
+.tox .tox-notification__body > * + * {
+ margin-top: 1rem;
+}
+.tox .tox-notification__icon {
+ -ms-grid-row-align: center;
+ align-self: center;
+ -ms-grid-column-span: 1;
+ grid-column-end: 2;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification__icon svg {
+ display: block;
+}
+.tox .tox-notification__dismiss {
+ -ms-grid-row-align: start;
+ align-self: start;
+ -ms-grid-column-span: 1;
+ grid-column-end: 4;
+ -ms-grid-column: 3;
+ grid-column-start: 3;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification .tox-progress-bar {
+ -ms-grid-column-span: 3;
+ grid-column-end: 4;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 3;
+ -ms-grid-row: 2;
+ grid-row-start: 2;
+ -ms-grid-column-align: center;
+ justify-self: center;
+}
+.tox .tox-pop {
+ display: inline-block;
+ position: relative;
+}
+.tox .tox-pop--resizing {
+ transition: width 0.1s ease;
+}
+.tox .tox-pop--resizing .tox-toolbar,
+.tox .tox-pop--resizing .tox-toolbar__group {
+ flex-wrap: nowrap;
+}
+.tox .tox-pop--transition {
+ transition: 0.15s ease;
+ transition-property: left, right, top, bottom;
+}
+.tox .tox-pop--transition::before,
+.tox .tox-pop--transition::after {
+ transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s;
+}
+.tox .tox-pop__dialog {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ min-width: 0;
+ overflow: hidden;
+}
+.tox .tox-pop__dialog > *:not(.tox-toolbar) {
+ margin: 4px 4px 4px 8px;
+}
+.tox .tox-pop__dialog .tox-toolbar {
+ background-color: transparent;
+ margin-bottom: -1px;
+}
+.tox .tox-pop::before,
+.tox .tox-pop::after {
+ border-style: solid;
+ content: '';
+ display: block;
+ height: 0;
+ opacity: 1;
+ position: absolute;
+ width: 0;
+}
+.tox .tox-pop.tox-pop--inset::before,
+.tox .tox-pop.tox-pop--inset::after {
+ opacity: 0;
+ transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease;
+}
+.tox .tox-pop.tox-pop--bottom::before,
+.tox .tox-pop.tox-pop--bottom::after {
+ left: 50%;
+ top: 100%;
+}
+.tox .tox-pop.tox-pop--bottom::after {
+ border-color: #fff transparent transparent transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: -1px;
+}
+.tox .tox-pop.tox-pop--bottom::before {
+ border-color: #cccccc transparent transparent transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--top::before,
+.tox .tox-pop.tox-pop--top::after {
+ left: 50%;
+ top: 0;
+ transform: translateY(-100%);
+}
+.tox .tox-pop.tox-pop--top::after {
+ border-color: transparent transparent #fff transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: 1px;
+}
+.tox .tox-pop.tox-pop--top::before {
+ border-color: transparent transparent #cccccc transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--left::before,
+.tox .tox-pop.tox-pop--left::after {
+ left: 0;
+ top: calc(50% - 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--left::after {
+ border-color: transparent #fff transparent transparent;
+ border-width: 8px;
+ margin-left: -15px;
+}
+.tox .tox-pop.tox-pop--left::before {
+ border-color: transparent #cccccc transparent transparent;
+ border-width: 10px;
+ margin-left: -19px;
+}
+.tox .tox-pop.tox-pop--right::before,
+.tox .tox-pop.tox-pop--right::after {
+ left: 100%;
+ top: calc(50% + 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--right::after {
+ border-color: transparent transparent transparent #fff;
+ border-width: 8px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--right::before {
+ border-color: transparent transparent transparent #cccccc;
+ border-width: 10px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--align-left::before,
+.tox .tox-pop.tox-pop--align-left::after {
+ left: 20px;
+}
+.tox .tox-pop.tox-pop--align-right::before,
+.tox .tox-pop.tox-pop--align-right::after {
+ left: calc(100% - 20px);
+}
+.tox .tox-sidebar-wrap {
+ display: flex;
+ flex-direction: row;
+ flex-grow: 1;
+ -ms-flex-preferred-size: 0;
+ min-height: 0;
+}
+.tox .tox-sidebar {
+ background-color: #fff;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+}
+.tox .tox-sidebar__slider {
+ display: flex;
+ overflow: hidden;
+}
+.tox .tox-sidebar__pane-container {
+ display: flex;
+}
+.tox .tox-sidebar__pane {
+ display: flex;
+}
+.tox .tox-sidebar--sliding-closed {
+ opacity: 0;
+}
+.tox .tox-sidebar--sliding-open {
+ opacity: 1;
+}
+.tox .tox-sidebar--sliding-growing,
+.tox .tox-sidebar--sliding-shrinking {
+ transition: width 0.5s ease, opacity 0.5s ease;
+}
+.tox .tox-selector {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ display: inline-block;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox.tox-platform-touch .tox-selector {
+ height: 12px;
+ width: 12px;
+}
+.tox .tox-slider {
+ align-items: center;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 24px;
+ justify-content: center;
+ position: relative;
+}
+.tox .tox-slider__rail {
+ background-color: transparent;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ height: 10px;
+ min-width: 120px;
+ width: 100%;
+}
+.tox .tox-slider__handle {
+ background-color: #207ab7;
+ border: 2px solid #185d8c;
+ border-radius: 3px;
+ box-shadow: none;
+ height: 24px;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ width: 14px;
+}
+.tox .tox-source-code {
+ overflow: auto;
+}
+.tox .tox-spinner {
+ display: flex;
+}
+.tox .tox-spinner > div {
+ animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
+ background-color: rgba(34, 47, 62, 0.7);
+ border-radius: 100%;
+ height: 8px;
+ width: 8px;
+}
+.tox .tox-spinner > div:nth-child(1) {
+ animation-delay: -0.32s;
+}
+.tox .tox-spinner > div:nth-child(2) {
+ animation-delay: -0.16s;
+}
+@keyframes tam-bouncing-dots {
+ 0%,
+ 80%,
+ 100% {
+ transform: scale(0);
+ }
+ 40% {
+ transform: scale(1);
+ }
+}
+.tox:not([dir='rtl']) .tox-spinner > div:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir='rtl'] .tox-spinner > div:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-statusbar {
+ align-items: center;
+ background-color: #fff;
+ border-top: 1px solid #cccccc;
+ color: rgba(34, 47, 62, 0.7);
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 12px;
+ font-weight: normal;
+ height: 18px;
+ overflow: hidden;
+ padding: 0 8px;
+ position: relative;
+ text-transform: uppercase;
+}
+.tox .tox-statusbar__text-container {
+ display: flex;
+ flex: 1 1 auto;
+ justify-content: flex-end;
+ overflow: hidden;
+}
+.tox .tox-statusbar__path {
+ display: flex;
+ flex: 1 1 auto;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__path > * {
+ display: inline;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__wordcount {
+ flex: 0 0 auto;
+ margin-left: 1ch;
+}
+.tox .tox-statusbar a,
+.tox .tox-statusbar__path-item,
+.tox .tox-statusbar__wordcount {
+ color: rgba(34, 47, 62, 0.7);
+ text-decoration: none;
+}
+.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled='true']),
+.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled='true']),
+.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled='true']),
+.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled='true']),
+.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled='true']),
+.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled='true']) {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-statusbar__resize-handle {
+ align-items: flex-end;
+ align-self: stretch;
+ cursor: nwse-resize;
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: flex-end;
+ margin-left: auto;
+ margin-right: -8px;
+ padding-left: 1ch;
+}
+.tox .tox-statusbar__resize-handle svg {
+ display: block;
+ fill: rgba(34, 47, 62, 0.7);
+}
+.tox .tox-statusbar__resize-handle:focus svg {
+ background-color: #dee0e2;
+ border-radius: 1px;
+ box-shadow: 0 0 0 2px #dee0e2;
+}
+.tox:not([dir='rtl']) .tox-statusbar__path > * {
+ margin-right: 4px;
+}
+.tox:not([dir='rtl']) .tox-statusbar__branding {
+ margin-left: 1ch;
+}
+.tox[dir='rtl'] .tox-statusbar {
+ flex-direction: row-reverse;
+}
+.tox[dir='rtl'] .tox-statusbar__path > * {
+ margin-left: 4px;
+}
+.tox .tox-throbber {
+ z-index: 1299;
+}
+.tox .tox-throbber__busy-spinner {
+ align-items: center;
+ background-color: rgba(255, 255, 255, 0.6);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.tox .tox-tbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0;
+ text-transform: none;
+ width: 34px;
+}
+.tox .tox-tbtn svg {
+ display: block;
+ fill: #222f3e;
+}
+.tox .tox-tbtn.tox-tbtn-more {
+ padding-left: 5px;
+ padding-right: 5px;
+ width: inherit;
+}
+.tox .tox-tbtn:focus {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+}
+.tox .tox-tbtn:hover {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn:hover svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn:active {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn:active svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn--disabled,
+.tox .tox-tbtn--disabled:hover,
+.tox .tox-tbtn:disabled,
+.tox .tox-tbtn:disabled:hover {
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-tbtn--disabled svg,
+.tox .tox-tbtn--disabled:hover svg,
+.tox .tox-tbtn:disabled svg,
+.tox .tox-tbtn:disabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-tbtn--enabled,
+.tox .tox-tbtn--enabled:hover {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn--enabled > *,
+.tox .tox-tbtn--enabled:hover > * {
+ transform: none;
+}
+.tox .tox-tbtn--enabled svg,
+.tox .tox-tbtn--enabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: #222f3e;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
+ color: #222f3e;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn:active > * {
+ transform: none;
+}
+.tox .tox-tbtn--md {
+ height: 51px;
+ width: 51px;
+}
+.tox .tox-tbtn--lg {
+ flex-direction: column;
+ height: 68px;
+ width: 68px;
+}
+.tox .tox-tbtn--return {
+ -ms-grid-row-align: stretch;
+ align-self: stretch;
+ height: unset;
+ width: 16px;
+}
+.tox .tox-tbtn--labeled {
+ padding: 0 4px;
+ width: unset;
+}
+.tox .tox-tbtn__vlabel {
+ display: block;
+ font-size: 10px;
+ font-weight: normal;
+ letter-spacing: -0.025em;
+ margin-bottom: 4px;
+ white-space: nowrap;
+}
+.tox .tox-tbtn--select {
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+ width: auto;
+}
+.tox .tox-tbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-tbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-tbtn__select-chevron svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 7em;
+}
+.tox .tox-split-button {
+ border: 0;
+ border-radius: 3px;
+ box-sizing: border-box;
+ display: flex;
+ margin: 2px 0 3px 0;
+ overflow: hidden;
+}
+.tox .tox-split-button:hover {
+ box-shadow: 0 0 0 1px #dee0e2 inset;
+}
+.tox .tox-split-button:focus {
+ background: #dee0e2;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-split-button > * {
+ border-radius: 0;
+}
+.tox .tox-split-button__chevron {
+ width: 16px;
+}
+.tox .tox-split-button__chevron svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-split-button .tox-tbtn {
+ margin: 0;
+}
+.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
+ width: 30px;
+}
+.tox.tox-platform-touch .tox-split-button__chevron {
+ width: 20px;
+}
+.tox .tox-split-button.tox-tbtn--disabled:hover,
+.tox .tox-split-button.tox-tbtn--disabled:focus,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
+ background: transparent;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-toolbar-overlord {
+ background-color: #fff;
+}
+.tox .tox-toolbar,
+.tox .tox-toolbar__primary,
+.tox .tox-toolbar__overflow {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E")
+ left 0 top 0 #fff;
+ background-color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 0;
+}
+.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
+ height: 0;
+ opacity: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ visibility: hidden;
+}
+.tox .tox-toolbar__overflow--growing {
+ transition: height 0.3s ease, opacity 0.2s linear 0.1s;
+}
+.tox .tox-toolbar__overflow--shrinking {
+ transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
+}
+.tox .tox-menubar + .tox-toolbar,
+.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
+ border-top: 1px solid #cccccc;
+ margin-top: -1px;
+}
+.tox .tox-toolbar--scrolling {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+}
+.tox .tox-pop .tox-toolbar {
+ border-width: 0;
+}
+.tox .tox-toolbar--no-divider {
+ background-image: none;
+}
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
+ border-top: 1px solid #cccccc;
+}
+.tox.tox-tinymce-aux .tox-toolbar__overflow {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+}
+.tox .tox-toolbar__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 0;
+ padding: 0 4px 0 4px;
+}
+.tox .tox-toolbar__group--pull-right {
+ margin-left: auto;
+}
+.tox .tox-toolbar--scrolling .tox-toolbar__group {
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+}
+.tox:not([dir='rtl']) .tox-toolbar__group:not(:last-of-type) {
+ border-right: 1px solid #cccccc;
+}
+.tox[dir='rtl'] .tox-toolbar__group:not(:last-of-type) {
+ border-left: 1px solid #cccccc;
+}
+.tox .tox-tooltip {
+ display: inline-block;
+ padding: 8px;
+ position: relative;
+}
+.tox .tox-tooltip__body {
+ background-color: #222f3e;
+ border-radius: 3px;
+ box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);
+ color: rgba(255, 255, 255, 0.75);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ padding: 4px 8px;
+ text-transform: none;
+}
+.tox .tox-tooltip__arrow {
+ position: absolute;
+}
+.tox .tox-tooltip--down .tox-tooltip__arrow {
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 8px solid #222f3e;
+ bottom: 0;
+ left: 50%;
+ position: absolute;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--up .tox-tooltip__arrow {
+ border-bottom: 8px solid #222f3e;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ left: 50%;
+ position: absolute;
+ top: 0;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--right .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-left: 8px solid #222f3e;
+ border-top: 8px solid transparent;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-tooltip--left .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-right: 8px solid #222f3e;
+ border-top: 8px solid transparent;
+ left: 0;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-well {
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ padding: 8px;
+ width: 100%;
+}
+.tox .tox-well > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-well > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-well > *:only-child {
+ margin: 0;
+}
+.tox .tox-custom-editor {
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ display: flex;
+ flex: 1;
+ position: relative;
+}
+/* stylelint-disable */
+.tox {
+ /* stylelint-enable */
+}
+.tox .tox-dialog-loading::before {
+ background-color: rgba(0, 0, 0, 0.5);
+ content: '';
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ z-index: 1000;
+}
+.tox .tox-tab {
+ cursor: pointer;
+}
+.tox .tox-dialog__content-js {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-content .tox-collection {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-image-tools-edit-panel {
+ height: 60px;
+}
+.tox .tox-image-tools__sidebar {
+ height: 60px;
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.min.css b/public/tinymce/skins/ui/oxide/skin.min.css
new file mode 100644
index 0000000..f570b8e
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.css b/public/tinymce/skins/ui/oxide/skin.mobile.css
new file mode 100644
index 0000000..875721a
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.mobile.css
@@ -0,0 +1,673 @@
+/**
+ * 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%;
+ }
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.min.css b/public/tinymce/skins/ui/oxide/skin.mobile.min.css
new file mode 100644
index 0000000..3a45cac
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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-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;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-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-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{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.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:#fff;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:#fff;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 #ccc;display:flex;flex:1;height:2.5em;width:100%}.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:.5em;padding-right:.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:#ccc}.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 .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.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(.4,0,1,1) .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:.6em;font-weight:700;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-next,.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{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-next::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-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.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-next.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-previous.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:#ccc;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:.5em;margin-right:.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:.9em;margin-right:.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:.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:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.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,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.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{background:#000;height:.2em;margin-bottom:.3em;margin-top:.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{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.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{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.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:.5em solid rgba(136,136,136,.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:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .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}.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}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;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 .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-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{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:400;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{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;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}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%}}
diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.css
new file mode 100644
index 0000000..d2adc4d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.css
@@ -0,0 +1,37 @@
+/**
+ * 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.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen,
+.tox-shadowhost.tox-fullscreen {
+ left: 0;
+ position: fixed;
+ top: 0;
+ z-index: 1200;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css
new file mode 100644
index 0000000..a0893b9
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * 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.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..2f981b3
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
diff --git a/src/assets/daochu.png b/src/assets/daochu.png
new file mode 100644
index 0000000..6c30158
Binary files /dev/null and b/src/assets/daochu.png differ
diff --git a/src/assets/defaulImg.jpg b/src/assets/defaulImg.jpg
new file mode 100644
index 0000000..57b0920
Binary files /dev/null and b/src/assets/defaulImg.jpg differ
diff --git a/src/assets/default.png b/src/assets/default.png
new file mode 100644
index 0000000..a41f8e7
Binary files /dev/null and b/src/assets/default.png differ
diff --git a/src/assets/diagram.png b/src/assets/diagram.png
new file mode 100644
index 0000000..7b828de
Binary files /dev/null and b/src/assets/diagram.png differ
diff --git a/src/assets/empty.png b/src/assets/empty.png
new file mode 100644
index 0000000..eb7b429
Binary files /dev/null and b/src/assets/empty.png differ
diff --git a/src/assets/excel/Blob.js b/src/assets/excel/Blob.js
new file mode 100644
index 0000000..6e8c495
--- /dev/null
+++ b/src/assets/excel/Blob.js
@@ -0,0 +1,141 @@
+/* eslint-disable */
+require('script-loader!file-saver');
+require('script-loader!./Blob');
+require('script-loader!xlsx/dist/xlsx.core.min');
+function generateArray(table) {
+ var out = [];
+ var rows = table.querySelectorAll('tr');
+ var ranges = [];
+ for (var R = 0; R < rows.length; ++R) {
+ var outRow = [];
+ var row = rows[R];
+ var columns = row.querySelectorAll('td');
+ for (var C = 0; C < columns.length; ++C) {
+ var cell = columns[C];
+ var colspan = cell.getAttribute('colspan');
+ var rowspan = cell.getAttribute('rowspan');
+ var cellValue = cell.innerText;
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+ //Skip ranges
+ ranges.forEach(function (range) {
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+ for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+ }
+ });
+
+ //Handle Row Span
+ if (rowspan || colspan) {
+ rowspan = rowspan || 1;
+ colspan = colspan || 1;
+ ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}});
+ }
+ ;
+
+ //Handle Value
+ outRow.push(cellValue !== "" ? cellValue : null);
+
+ //Handle Colspan
+ if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+ }
+ out.push(outRow);
+ }
+ return [out, ranges];
+};
+
+function datenum(v, date1904) {
+ if (date1904) v += 1462;
+ var epoch = Date.parse(v);
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+ var ws = {};
+ var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}};
+ for (var R = 0; R != data.length; ++R) {
+ for (var C = 0; C != data[R].length; ++C) {
+ if (range.s.r > R) range.s.r = R;
+ if (range.s.c > C) range.s.c = C;
+ if (range.e.r < R) range.e.r = R;
+ if (range.e.c < C) range.e.c = C;
+ var cell = {v: data[R][C]};
+ if (cell.v == null) continue;
+ var cell_ref = XLSX.utils.encode_cell({c: C, r: R});
+
+ if (typeof cell.v === 'number') cell.t = 'n';
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
+ else if (cell.v instanceof Date) {
+ cell.t = 'n';
+ cell.z = XLSX.SSF._table[14];
+ cell.v = datenum(cell.v);
+ }
+ else cell.t = 's';
+
+ ws[cell_ref] = cell;
+ }
+ }
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+ return ws;
+}
+
+function Workbook() {
+ if (!(this instanceof Workbook)) return new Workbook();
+ this.SheetNames = [];
+ this.Sheets = {};
+}
+
+function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+}
+
+export function export_table_to_excel(id) {
+ var theTable = document.getElementById(id);
+ console.log('a')
+ var oo = generateArray(theTable);
+ var ranges = oo[1];
+
+ /* original data */
+ var data = oo[0];
+ var ws_name = "SheetJS";
+ console.log(data);
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+ /* add ranges to worksheet */
+ // ws['!cols'] = ['apple', 'banan'];
+ ws['!merges'] = ranges;
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx")
+}
+
+function formatJson(jsonData) {
+ console.log(jsonData)
+}
+export function export_json_to_excel(th, jsonData, defaultTitle) {
+
+ /* original data */
+
+ var data = jsonData;
+ data.unshift(th);
+ var ws_name = "SheetJS";
+
+ var wb = new Workbook(), ws = sheet_from_array_of_arrays(data);
+
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
+ var title = defaultTitle || '列表'
+ saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
+}
\ No newline at end of file
diff --git a/src/assets/excel/Export2Excel.js b/src/assets/excel/Export2Excel.js
new file mode 100644
index 0000000..38c6c97
--- /dev/null
+++ b/src/assets/excel/Export2Excel.js
@@ -0,0 +1,219 @@
+import { saveAs } from 'file-saver'
+import XLSX from 'xlsx'
+
+function generateArray(table) {
+ var out = [];
+ var rows = table.querySelectorAll('tr');
+ var ranges = [];
+ for (var R = 0; R < rows.length; ++R) {
+ var outRow = [];
+ var row = rows[R];
+ var columns = row.querySelectorAll('td');
+ for (var C = 0; C < columns.length; ++C) {
+ var cell = columns[C];
+ var colspan = cell.getAttribute('colspan');
+ var rowspan = cell.getAttribute('rowspan');
+ var cellValue = cell.innerText;
+ if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
+
+ //Skip ranges
+ ranges.forEach(function (range) {
+ if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
+ for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
+ }
+ });
+
+ //Handle Row Span
+ if (rowspan || colspan) {
+ rowspan = rowspan || 1;
+ colspan = colspan || 1;
+ ranges.push({
+ s: {
+ r: R,
+ c: outRow.length
+ },
+ e: {
+ r: R + rowspan - 1,
+ c: outRow.length + colspan - 1
+ }
+ });
+ };
+
+ //Handle Value
+ outRow.push(cellValue !== "" ? cellValue : null);
+
+ //Handle Colspan
+ if (colspan)
+ for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
+ }
+ out.push(outRow);
+ }
+ return [out, ranges];
+};
+
+function datenum(v, date1904) {
+ if (date1904) v += 1462;
+ var epoch = Date.parse(v);
+ return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
+}
+
+function sheet_from_array_of_arrays(data, opts) {
+ var ws = {};
+ var range = {
+ s: {
+ c: 10000000,
+ r: 10000000
+ },
+ e: {
+ c: 0,
+ r: 0
+ }
+ };
+ for (var R = 0; R != data.length; ++R) {
+ for (var C = 0; C != data[R].length; ++C) {
+ if (range.s.r > R) range.s.r = R;
+ if (range.s.c > C) range.s.c = C;
+ if (range.e.r < R) range.e.r = R;
+ if (range.e.c < C) range.e.c = C;
+ var cell = {
+ v: data[R][C]
+ };
+ if (cell.v == null) continue;
+ var cell_ref = XLSX.utils.encode_cell({
+ c: C,
+ r: R
+ });
+
+ if (typeof cell.v === 'number') cell.t = 'n';
+ else if (typeof cell.v === 'boolean') cell.t = 'b';
+ else if (cell.v instanceof Date) {
+ cell.t = 'n';
+ cell.z = XLSX.SSF._table[14];
+ cell.v = datenum(cell.v);
+ } else cell.t = 's';
+
+ ws[cell_ref] = cell;
+ }
+ }
+ if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
+ return ws;
+}
+
+function Workbook() {
+ if (!(this instanceof Workbook)) return new Workbook();
+ this.SheetNames = [];
+ this.Sheets = {};
+}
+
+function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+}
+
+export function export_table_to_excel(id) {
+ var theTable = document.getElementById(id);
+ var oo = generateArray(theTable);
+ var ranges = oo[1];
+
+ /* original data */
+ var data = oo[0];
+ var ws_name = "SheetJS";
+
+ var wb = new Workbook(),
+ ws = sheet_from_array_of_arrays(data);
+
+ /* add ranges to worksheet */
+ // ws['!cols'] = ['apple', 'banan'];
+ ws['!merges'] = ranges;
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {
+ bookType: 'xlsx',
+ bookSST: false,
+ type: 'binary'
+ });
+
+ saveAs(new Blob([s2ab(wbout)], {
+ type: "application/octet-stream"
+ }), "test.xlsx")
+}
+
+export function export_json_to_excel({
+ multiHeader = [],
+ header,
+ data,
+ filename,
+ merges = [],
+ autoWidth = true,
+ bookType = 'xlsx'
+} = {}) {
+ /* original data */
+ filename = filename || 'excel-list'
+ data = [...data]
+ data.unshift(header);
+
+ for (let i = multiHeader.length - 1; i > -1; i--) {
+ data.unshift(multiHeader[i])
+ }
+
+ var ws_name = "SheetJS";
+ var wb = new Workbook(),
+ ws = sheet_from_array_of_arrays(data);
+
+ if (merges.length > 0) {
+ if (!ws['!merges']) ws['!merges'] = [];
+ merges.forEach(item => {
+ ws['!merges'].push(XLSX.utils.decode_range(item))
+ })
+ }
+
+ if (autoWidth) {
+ /*设置worksheet每列的最大宽度*/
+ const colWidth = data.map(row => row.map(val => {
+ /*先判断是否为null/undefined*/
+ if (val == null) {
+ return {
+ 'wch': 10
+ };
+ }
+ /*再判断是否为中文*/
+ else if (val.toString().charCodeAt(0) > 255) {
+ return {
+ 'wch': val.toString().length * 2
+ };
+ } else {
+ return {
+ 'wch': val.toString().length
+ };
+ }
+ }))
+ /*以第一行为初始值*/
+ let result = colWidth[0];
+ for (let i = 1; i < colWidth.length; i++) {
+ for (let j = 0; j < colWidth[i].length; j++) {
+ if (result[j]['wch'] < colWidth[i][j]['wch']) {
+ result[j]['wch'] = colWidth[i][j]['wch'];
+ }
+ }
+ }
+ ws['!cols'] = result;
+ }
+
+ /* add worksheet to workbook */
+ wb.SheetNames.push(ws_name);
+ wb.Sheets[ws_name] = ws;
+
+ var wbout = XLSX.write(wb, {
+ bookType: bookType,
+ bookSST: false,
+ type: 'binary'
+ });
+ saveAs(new Blob([s2ab(wbout)], {
+ type: "application/octet-stream"
+ }), `${filename}.${bookType}`);
+}
\ No newline at end of file
diff --git a/src/assets/ico-xl.png b/src/assets/ico-xl.png
new file mode 100644
index 0000000..bca12eb
Binary files /dev/null and b/src/assets/ico-xl.png differ
diff --git a/src/assets/icon/iconfont.ttf b/src/assets/icon/iconfont.ttf
new file mode 100644
index 0000000..f2d0a59
Binary files /dev/null and b/src/assets/icon/iconfont.ttf differ
diff --git a/src/assets/icon/iconfont.woff b/src/assets/icon/iconfont.woff
new file mode 100644
index 0000000..ebfb238
Binary files /dev/null and b/src/assets/icon/iconfont.woff differ
diff --git a/src/assets/icon/iconfont.woff2 b/src/assets/icon/iconfont.woff2
new file mode 100644
index 0000000..277531a
Binary files /dev/null and b/src/assets/icon/iconfont.woff2 differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..89e9ab1
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/open.png b/src/assets/open.png
new file mode 100644
index 0000000..6c96520
Binary files /dev/null and b/src/assets/open.png differ
diff --git a/src/assets/style/common.scss b/src/assets/style/common.scss
new file mode 100644
index 0000000..ce8ae08
--- /dev/null
+++ b/src/assets/style/common.scss
@@ -0,0 +1,43 @@
+// 表格
+.btn-group{
+ display: flex;
+}
+.btn-group span{
+ color: #409eff;
+ margin-right: 10px;
+ font-size: 14px;
+ cursor: pointer;
+}
+.router-links{
+ color: #409eff;
+ cursor: pointer;
+}
+::v-deep(.avatar) {
+ width: 40px;
+ height: 40px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+::v-deep(.el-icon-plus) {
+ width: 40px;
+ height: 40px;
+ border-radius: 2px;
+ line-height: 40px;
+ border: 1px dashed rgba(0, 0, 0, 0.1);
+}
+.img-show {
+ width: 150px;
+ height: 150px;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ z-index: 9;
+ background-color: #fff;
+ vertical-align: middle;
+ margin-top: -60px;
+ text-align: center;
+}
+.img-show img {
+ z-index: 10;
+ max-width: 150px;
+ vertical-align: middle;
+}
\ No newline at end of file
diff --git a/src/assets/style/global.scss b/src/assets/style/global.scss
new file mode 100644
index 0000000..923d6ea
--- /dev/null
+++ b/src/assets/style/global.scss
@@ -0,0 +1,380 @@
+html,
+body {
+ margin: 0;
+ padding: 0;
+ color: #333;
+ box-sizing: border-box;
+}
+
+a {
+ text-decoration: none;
+}
+
+/*去掉项目标签*/
+ul {
+ list-style-type: none;
+}
+
+.el-main {
+ padding: 0px !important;
+ height: 100%!important;
+}
+
+.main-container {
+ width: -moz-available;
+ width: -webkit-fill-available;
+ width: stretch;
+ height: -moz-available;
+ height: -webkit-fill-available;
+ height: stretch;
+ height: 100% !important;
+}
+
+.min-height-fill4parent {
+ height: -moz-available;
+ height: -webkit-fill-available;
+ height: stretch;
+}
+
+/*成本管理样式*/
+.bg_white {
+ background-color: #FFF
+}
+
+.m-t-20 {
+ margin-top: 20px
+}
+
+.m-t-10 {
+ margin-top: 10px
+}
+
+.table_90 {
+ width: -moz-calc(100% - 24px);
+ width: -webkit-calc(100% - 24px);
+ width: calc(100% - 24px);
+ margin-left: 12px;
+ margin-right: 12px;
+}
+
+.table_80 {
+ width: 1180px;
+ overflow: hidden;
+ margin-left: 12px;
+ margin-right: 12px;
+}
+
+
+.p-t-10 {
+ padding-top: 10px;
+}
+
+.p-b-10 {
+ padding-bottom: 10px;
+}
+
+.border-r-10 {
+ border-radius: 10px;
+}
+
+.text-black {
+ color: #606266;
+}
+
+.text-red {
+ color: #e73235;
+}
+
+.text-green {
+ color: #38b48b;
+}
+
+.m-b-90 {
+ margin-bottom: 90px;
+}
+
+.m-t-10 {
+ margin-top: 10px;
+}
+
+.m-b-20 {
+ margin-bottom: 20px;
+}
+
+.p-t-20 {
+ padding-top: 20px;
+}
+
+.p-b-20 {
+ padding-bottom: 20px;
+}
+
+/*字体居中*/
+.text-l {
+ text-align: left;
+}
+
+.text-c {
+ text-align: center;
+}
+
+.text-r {
+ text-align: right;
+}
+
+.f-12 {
+ font-size: 12px;
+}
+
+.header-title {
+ height: 0;
+}
+
+.svg-icon-custom {
+ width: 16px;
+ height: 16px;
+ fill: currentColor;
+ overflow: hidden;
+ margin-right: 10px
+}
+
+label {
+ font-weight: bold;
+}
+
+/*图片放大样式*/
+/*定位*/
+.position-r {
+ position: relative
+}
+
+.position-a {
+ position: absolute;
+}
+
+.position-f {
+ position: fixed;
+}
+
+/*知识产权样式*/
+.m-20 {
+ margin: 20px;
+}
+
+.p-20 {
+ padding: 20px;
+}
+
+.m-l-10 {
+ margin-left: 10px;
+}
+
+.m-r-10 {
+ margin-right: 10px;
+}
+
+.p-t-20 {
+ padding-top: 20px;
+}
+.p-l-24 {
+ padding-left: 24px;
+}
+.p-t-24 {
+ padding-top: 24px;
+}
+.p-r-24 {
+ padding-right: 24px;
+}
+
+.p-b-20 {
+ padding-bottom: 20px;
+}
+
+.p-l-40 {
+ padding-left: 40px;
+}
+
+.p-r-40 {
+ padding-right: 40px;
+}
+
+.m-l-40 {
+ margin-left: 40px;
+}
+
+.m-r-20 {
+ margin-right: 20px;
+}
+
+.m-r-40 {
+ margin-right: 40px;
+}
+
+.text_blue {
+ color: #2c74fa;
+}
+
+.fr {
+ float: right;
+}
+
+.fl {
+ float: left;
+}
+
+.Cursor {
+ cursor: pointer;
+}
+
+.footer {
+ position: fixed;
+ bottom: 0;
+ z-index: 5;
+ text-align: right;
+ right: 0;
+ box-shadow: -1px 0px 15px 0px #c9ccd4;
+}
+
+.search_button {
+ float: right;
+ margin-right: 60px;
+}
+
+.tips {
+ // margin-left: 120px;
+ font-size: 12px;
+ line-height: 24px;
+ color: #999999;
+ margin: 0 !important;
+}
+
+.msgbox {
+ width: 25%;
+ max-height: 70%;
+}
+
+.el-table__body-wrapper::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+.el-table__body-wrapper::-webkit-scrollbar-thumb {
+ border-radius: 6px;
+}
+
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: #a1a3a9;
+ border-radius: 6px;
+}
+
+.el-table--fluid-height .el-table__fixed,
+.el-table--fluid-height .el-table__fixed-right {
+ bottom: 8px !important;
+}
+/***产品目录公共样式***/
+.table {
+ width: -moz-calc(100% - 48px);
+ width: -webkit-calc(100% - 48px);
+ width: calc(100% - 48px);
+ padding: 24px;
+}
+.table_width {
+ width: 95.6%;
+ margin-left: auto;
+ margin-right: auto;
+}
+.m-top {
+ margin-top: 24px; //上边距
+}
+.m-bottom {
+ margin-bottom: 24px; //下边距
+}
+.title_box{
+ margin: 24px 24px 0 24px;
+}
+.title_box .title{
+ font-size: 16px;
+ font-weight: bold;
+ line-height: 24px;
+ color: #2D2E38;
+ padding-left: 10px;
+ position: relative;
+}
+.title_box .title::before{
+ content: '';
+ width: 4px;
+ height: 16px;
+ background: #4178D5;
+ position: absolute;
+ left: 0;
+ top: 4px;
+}
+.title_box1 .title{
+ font-size: 14px;
+ font-weight: bold;
+ line-height: 24px;
+ color: #2D2E38;
+}
+.bottom_box{
+ box-shadow: 0px 0px 15px #E4E7ED;
+ position: fixed;
+ bottom:0;
+ left:0;
+ padding-top:16px;
+ padding-bottom: 16px;
+ z-index: 99;
+ background-color:#ffffff;
+ width: -moz-calc(100vw - 16px);
+ width: -webkit-calc(100vw - 16px);
+ width: calc(100vw - 16px);
+}
+.el-cascader {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ line-height: 28px !important;
+ height: 28px;
+ width: 100%;
+}
+
+.el-cascader-panel .el-radio {
+ position: absolute;
+ z-index: 10;
+ padding: 0 10px;
+ width: 132px;
+ height: 28px;
+ line-height: 28px;
+}
+
+.el-cascader-panel .el-radio__input {
+ visibility: hidden;
+}
+
+.el-cascader-panel .el-input-node__postfix {
+ top: 10px;
+}
+
+.el-date-editor .el-range-input{
+ font-size: 12px!important;
+}
+
+::v-deep(.el-message-box__container){
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+::v-deep(.el-overlay){
+ background-color: rgba(237, 230, 230, 0.01)!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+::v-deep(.el-message-box__status.el-message-box-icon--warning){
+ --el-messagebox-color:#e6a23c;
+ color: #e6a23c;
+}
diff --git a/src/assets/style/icon.scss b/src/assets/style/icon.scss
new file mode 100644
index 0000000..80b8fd3
--- /dev/null
+++ b/src/assets/style/icon.scss
@@ -0,0 +1,13 @@
+@font-face {
+ font-family: 'icon-font';
+ src: url('../icon/iconfont.woff2') format('woff2'),
+ url('../icon/iconfont.woff') format('woff'),
+ url('../icon/iconfont.ttf') format('truetype');
+}
+.icon-font {
+ font-family: "icon-font" !important;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
diff --git a/src/assets/style/lc.scss b/src/assets/style/lc.scss
new file mode 100644
index 0000000..87449f5
--- /dev/null
+++ b/src/assets/style/lc.scss
@@ -0,0 +1,439 @@
+$bgcolor: #409EFF;
+$ftcolor: #EBEEF5;
+$yj: 3px;
+$fontcolor: #303133;
+$fontsize12: 12px;
+$fontsize14: 14px;
+
+.lc_gxpljbt{
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+}
+.lc_title1{
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 16px;
+ margin-top: 24px;
+
+}
+.lc_bz{
+ width: 100%;
+ background: #F7F8FC;
+ border-radius: 5px;
+ font-weight: bold;
+ margin-bottom: 50px;
+ ::v-deep(.el-textarea__inner){
+ min-height: 233px !important;
+ }
+
+}
+.lc_bzt{
+ font-size: $fontsize14;
+ color:$fontcolor;
+ margin-bottom: 16px;
+}
+.lc_ttop{
+ margin-top: 40px;
+}
+::v-deep(.el-overlay) {
+ background-color: rgba(0, 0, 0, .3) !important;
+}
+.lc_title{
+ color:$fontcolor ;
+ font-size: $fontsize14;
+ border-left: 2px solid #4178D5;
+ padding-left: 8px;
+ height: 14px;
+ line-height: 14px;
+ font-weight: bold;
+ margin-bottom: 18px;
+}
+.lc_add_ggdyb{
+ .span_color_n{
+ font-size: $fontsize12 !important;
+ }
+}
+
+.lc-bsinfo{
+ padding: 0 16px;
+ ::v-deep(.el-dialog){
+ // width: 430px;
+ }
+ .lc_bsmain{
+ display: flex;
+ flex-direction: row;
+ .avatar-uploader-icon{
+ font-size: 24px;
+ color: #C0C4CC;
+ }
+ ::v-deep(.el-input){
+ width: 158px !important;
+ }
+ ::v-deep(.el-form-item) {
+ margin-bottom: 18px;
+ }
+ .lc_lcselect{
+ ::v-deep(.el-input){
+ width: 437px !important;
+ }
+ }
+ .lcse2{
+ ::v-deep(.el-input){
+ width: 995px !important;
+ }
+ }
+ }
+ .lc_taskmain{
+ ::v-deep(.el-form-item) {
+ margin-bottom: 0px;
+ }
+ ::v-deep( .el-input__icon) {
+ line-height: 28px ;
+ }
+ }
+ .avatar-uploader{
+ width: 160px;
+ height: 160px;
+ line-height: 160px;
+ border-radius: 5px;
+ border: 1 px;
+ border: 1px solid #DCDFE6;
+ text-align: center;
+ overflow: hidden;
+ .el-icon-plu{font-size: 24px;color: #C0C4CC;}
+ ::v-deep(.el-upload){
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+}
+.lc-taskbsinfo{
+ padding: 0px !important;
+}
+.l-button2 {
+ padding: 7px 16px;
+ font-size: 12px;
+ background: $ftcolor;
+ border-radius: $yj;
+ color: $bgcolor;
+ border: 1px solid $bgcolor;
+ display: inline-block;
+ margin-right: 16px;
+ cursor: pointer;
+}
+::v-deep(.el-button:focus,
+ .el-button:hover) {
+ background-color: $bgcolor;
+}
+
+.ico-xl {
+ display: block;
+ margin-left: 8px;
+}
+.l_bts {
+ margin-bottom: 16px;
+}
+
+.l-bt-flex {
+ display: flex;
+ align-items: center;
+}
+
+.d_bts {
+ float: right;
+ margin-top: 5px;
+}
+
+
+::v-deep(.el-dialog) {
+ border-radius: 5px;
+ display: flex;
+ flex-direction: column;
+ margin: 0 !important;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ max-height: calc(100% - 30px);
+ max-width: calc(100% - 30px);
+}
+
+.el-dialog .el-dialog__body {
+ flex: 1;
+ overflow: auto;
+}
+
+::v-deep(.el-dialog__title) {
+ font-size: $fontsize14 !important;
+ color: $fontcolor;
+ font-weight: bold;
+}
+
+
+.s-item {
+ height: 44px;
+}
+
+.s-bts {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+ .l-button {
+ margin-left: 10px;
+ margin-right: 0px;
+
+ }
+}
+
+.l-button {
+ padding: 6px 16px;
+ font-size: 12px;
+ background: $bgcolor;
+ border-radius: $yj;
+ color: $ftcolor;
+ display: inline-block;
+ margin-right: 16px;
+ cursor: pointer;
+}
+
+::v-deep(.el-button:focus,
+ .el-button:hover) {
+ background-color: $bgcolor;
+}
+
+.ico-xl {
+ display: block;
+ margin-left: 8px;
+}
+
+.wrap_box {
+ padding: 16px !important;
+ font-size: $fontsize12 !important;
+}
+@mixin theheight {
+ height: 27px ;
+ line-height: 28px !important;
+}
+.lc_rw {
+ padding: 0 16px;
+ padding-top: 26px;
+ ::v-deep(.span_color_n) {
+ font-size: 12px !important;
+ }
+ .lc_cdlj{
+
+ display: flex;flex-direction: row;
+ .title{
+ margin-right: 10px;width: 50px;
+ }
+ .el-textarea__inner{
+ min-height: 98px !important;
+ }
+ }
+}
+.lcpg {
+ .block{
+ text-align: center;
+ margin-top: 26px;
+ ::v-deep( .el-input){
+ width: 100px !important;
+ }
+ }
+ .t_top{
+ margin-top: 16px;
+
+ }
+ .lcS {
+ margin-bottom: 10px;
+ }
+ ::v-deep(.el-textarea__inner){
+ min-height: 200px !important;
+ }
+ ::v-deep(.el-input__inner) {
+ font-size: $fontsize12;
+ }
+
+ ::v-deep(.el-form-item__label) {
+ font-size: $fontsize12 !important;
+ line-height: 28px;
+ }
+
+ ::v-deep(.el-input__inner) {
+ @include theheight
+ }
+
+ ::v-deep(.el-input__icon) {
+ @include theheight
+ }
+ ::v-deep(.el-form-item__content) {
+ line-height: inherit;
+ }
+ ::v-deep(.el-date-editor){
+ width: 200px;
+ }
+ ::v-deep(.el-range-separator){
+ line-height: 17px;
+ }
+}
+
+::v-deep(.el-input__inner) {
+ font-size: $fontsize12 !important;
+ @include theheight
+}
+
+::v-deep(.el-input) {
+ width: 150px !important;
+ font-size: $fontsize12;
+ @include theheight
+}
+
+::v-deep(.vxe-cell){
+ font-size: 12px !important;
+}
+::v-deep(.el-form-item__label) {
+ font-size: $fontsize12 !important;
+}
+// 弹框
+.pq_content {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ margin-top: -18px;
+
+ label {
+ margin-right: 20px;
+ font-size: 12px;
+ min-width: 48px;
+ }
+
+ .pqbt {
+ margin-right: 0;
+ margin-left: 15px;
+ color: #409EFF;
+ background: #fff;
+ border: 1px solid #409EFF;
+ }
+
+ ::v-deep(.el-input__icon) {
+ line-height: 28px;
+ }
+}
+.lc_gxpljbt{
+ margin-top: -20px;
+}
+::v-eddp(.btn-group>.span_color_drag){
+ font-size: 12px !important;
+ padding: 6px 10px !important;
+}
+.rzlx {
+ display: flex;
+ align-items: center;
+
+ ::v-deep(.el-input__icon) {
+ height: 28px !important;
+ line-height: 28px !important;
+ }
+
+ ::v-deep(.el-input) {
+ width: 840px !important;
+ }
+}
+
+.ggdy-bts {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+
+ .l-button {
+ cursor: pointer;
+ padding: 4px 8px;
+ border: 1px solid #409eff;
+ border-radius: 3px;
+ background: #fff;
+ color: #409eff;
+ font-size: 12px;
+ margin-right: 10px;
+ }
+
+ .l-button:hover {
+ color: #fff;
+ background: #409eff;
+ }
+}
+
+.expand-wrapper {
+ padding: 20px;
+}
+
+.ggdycss {
+ ::v-deep(.vxe-input) {
+ width: auto !important;
+ }
+}
+.avatar{
+ width: 40px;
+ height: 40px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ ::v-deep(.el-image__inner){
+ width: 40px;
+ height: 40px;
+ }
+}
+.img-show {
+ width: 150px;
+ height: 150px;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ z-index: 9;
+ background-color: #fff;
+ vertical-align: middle;
+ margin-top: -60px;
+ text-align: center;
+}
+.img-show img {
+ z-index: 10;
+ max-width: 150px;
+ vertical-align: middle;
+}
+.position-f {
+ position: fixed;
+}
+.lcrw{
+ ::v-deep(.el-input) {
+ width: 214px !important;
+ }
+ .rwfy{
+ ::v-deep(.el-input) {
+ width: 90px !important;
+ }
+ }
+}
+.rzselect{
+ ::v-deep(.el-input) {
+ height: auto !important;
+ }
+
+}
+
+.lcbhcontent {
+ padding: 16px;
+}
+
+.lcbhbt {
+ line-height: 16px;
+ margin-left: 28px;
+ height: 16px;
+ margin-top: 5px;
+ color: #409EFF;
+ background: #fff;
+ border: 1px solid #409EFF;
+}
+
+.lc_bhitem{
+ display: flex;
+ flex-direction: column;
+ padding-bottom: 10px;
+}
diff --git a/src/assets/style/lc_jx_style/lc_jx_bom.scss b/src/assets/style/lc_jx_style/lc_jx_bom.scss
new file mode 100644
index 0000000..23fe323
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_bom.scss
@@ -0,0 +1,3 @@
+.search_group{
+ width: 340px;
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_bzljxz.scss b/src/assets/style/lc_jx_style/lc_jx_bzljxz.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_bzljxz.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_bzyx.scss b/src/assets/style/lc_jx_style/lc_jx_bzyx.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_bzyx.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_com.scss b/src/assets/style/lc_jx_style/lc_jx_com.scss
new file mode 100644
index 0000000..796669d
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_com.scss
@@ -0,0 +1,522 @@
+/**
+* @Description : 流程管理 - 任务列表 - 负责详情 - 样式
+* @Author : jinxin
+* @Date : 2023-02-17 17:03:54
+*/
+.mg-t{
+ margin-top: 16px;
+}
+.mg-t24{
+ margin-top: 24px;
+}
+.mg-b{
+ margin-bottom: 16px;
+}
+.mg-b24{
+ margin-bottom: 24px;
+}
+.mg-l{
+ margin-left: 16px;
+}
+.mg-r{
+ margin-right: 16px;
+}
+.mg-tb{
+ margin:16px 0;
+}
+.pd-t{
+ padding-top: 16px;
+}
+.pd-b{
+ padding-bottom: 16px;
+}
+.pd-l{
+ padding-left: 16px;
+}
+.pd-r{
+ padding-right: 16px;
+}
+.pd-bt{
+ padding: 16px 0;
+}
+.pd-lr{
+ padding: 0 16px;
+}
+.bg_com{
+ background: #F7F8FC;
+}
+
+::v-deep(.btns_box .btn-flex){
+ margin-bottom: 0px!important;
+}
+
+.btn-flex{
+ margin-bottom: 0px!important;
+ align-items: center;
+}
+
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+
+.base_info{
+ padding: 0 16px;
+}
+.base_table_width{
+ width: 1648px;
+ margin-top: 16px;
+}
+
+// 清除全局影响样式
+::v-deep(.el-form-item){
+ margin-bottom: 0px!important;
+}
+
+// vxe-table style
+::v-deep(.vxe-button){
+ font-size: 12px!important;
+}
+
+// element-plus style
+::v-deep(.el-textarea__inner){
+ font-size: 12px!important;
+ font-family:"微软雅黑"!important;
+}
+
+::v-deep(.el-dialog__header .el-dialog__title){
+ font-size: 14px!important;
+ font-weight: 900;
+}
+
+::v-deep(.el-dialog__header){
+ padding-bottom: 18px!important;
+ text-align: left;
+}
+
+::v-deep(.el-dialog__body .el-input__inner){
+ height: 28px!important;
+}
+
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0!important;
+}
+
+::v-deep(.el-dialog__body .el-form-item__label){
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.el-dialog__body .el-input__inner){
+ font-size: 12px!important;
+}
+
+::v-deep(.el-dialog__body .el-input__suffix-inner){
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 28px;
+}
+
+::v-deep(.el-dialog__body .el-form-item){
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+::v-deep(.el-dialog__body .el-form-item__content){
+ height: 28px!important;
+ line-height: 28px!important;
+ min-height: 28px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+::v-deep(.el-dialog__body){
+ padding: 0 16px!important;
+}
+
+::v-deep(.write-link-body .el-form-item__content){
+ height: 100px!important;
+ min-height: 100px!important;
+ line-height: 100px!important;
+}
+::v-deep(.write-link-many .el-form-item__content){
+ height: 100px!important;
+ min-height: 100px!important;
+ line-height: 100px!important;
+ margin-bottom: 10px!important;
+}
+
+::v-deep(.el-dialog__footer .el-button){
+ font-size: 12px!important;
+ min-height: 28px!important;
+ height: 28px!important;
+}
+
+::v-deep(.el-dialog__footer .dialog-footer){
+ display: flex;
+ justify-content: right;
+}
+::v-deep(.el-dialog__footer){
+ padding-top: 10px!important;
+ text-align:right;
+}
+
+::v-deep(.write-link-footer){
+ padding-top: 10px!important;
+}
+
+::v-deep(.el-button){
+ height: 28px!important;
+ min-height: 28px!important;
+ font-size: 12px!important;
+ font-weight: 500;
+ padding:6px 10px !important;
+}
+
+// 基础信息、输出内容、备注、BOX公共样式
+.base_info,.base_table,.base_remarks,.base_chexkbox{
+ background: #FFFFFF;
+ padding: 16px 16px!important;
+ margin: 0 16px!important;
+ border-radius: 5px 5px 5px 5px;
+}
+
+.base_table,.base_remarks,.base_chexkbox{
+ margin-top: 16px!important;
+}
+
+// 搜索
+ ::v-deep(.search-group){
+ padding: 16px!important;
+ }
+
+ ::v-deep(.search-group .el-form .el-form-item__label){
+ width: inherit!important;
+ }
+
+ ::v-deep(.search-group .el-form-item__label){
+ font-size: 12px!important;
+ font-weight: 500;
+ }
+ ::v-deep(.search-group .el-form){
+ padding-top: 0px!important;
+ }
+
+ ::v-deep(.search-group .el-form-item__label){
+ height: 28px!important;
+ min-height: 28px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ ::v-deep(.search-group .el-input__inner){
+ font-size: 12px!important;
+ }
+ ::v-deep(.search-group .el-form-item__content){
+ height: 28px!important;
+ min-height: 28px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ ::v-deep(.search-group .el-input__inner){
+ height: 28px!important;
+ min-height: 28px!important;
+ }
+
+ ::v-deep(.search-group .el-input){
+ display: flex;
+ height: 28px!important;
+ }
+
+ ::v-deep(.search-group .el-form .c-b-f-1-item){
+ display: flex!important;
+ margin-bottom: 16px!important;
+ }
+
+ ::v-deep(.search-group .el-form .c-b-f-1-item:last-child){
+ margin-bottom: 0px!important;
+ }
+
+ ::v-deep(.search-group .el-form .c-b-f-1-item .c-b-f-2-item){
+ margin-right: 16px;
+ flex: 1;
+ }
+
+ ::v-deep(.search-group .el-form .c-b-f-1-item .c-b-f-2-item:last-child){
+ margin-right: 0!important;
+ }
+
+ ::v-deep(.search-group .el-input__prefix){
+ display: flex;
+ height: 28px!important;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+::v-deep(.search-group .el-input__suffix-inner){
+ display: flex;
+ height: 28px!important;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.task-index .btn-flex){
+ height: 18px!important;
+ line-height: 18px!important;
+ display: flex;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.task-index .text-r){
+ margin-top: 14px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.task-index .btn_div){
+ height: 28px!important;
+ min-height: 28px!important;
+ display: flex;
+ padding: 0 8px;
+}
+
+::v-deep(.task-index .btn-group){
+ height: 18px!important;
+ line-height: 18px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.task-index .btn-group span){
+ font-size: 12px!important;
+}
+
+// 按钮组
+::v-deep(.btns_box .btn-group span){
+ font-size: 12px!important;
+ display: flex;
+}
+
+::v-deep(.btns_box .btn-group .span_color_drag){
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+// 基础信息
+::v-deep(.base_info_box_content .el-form .el-row .el-col:nth-child(n+6)){
+ margin-bottom: 0!important;
+}
+
+::v-deep(.base_info_box_content .el-form .el-row .el-col:nth-child(n+6)){
+ height: 28px;
+}
+
+::v-deep(.base_info .el-input__prefix){
+ display: flex;
+ height: 28px!important;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+::v-deep(.base_info .el-input__suffix-inner){
+ display: flex;
+ height: 28px!important;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.base_info .el-select__caret){
+ display: flex;
+ height: 28px!important;
+ vertical-align:middle;
+ justify-content: center;
+ align-items: center;
+}
+
+::v-deep(.base_info .el-form-item){
+ height: 28px!important;
+}
+
+::v-deep(.base_info .el-input__inner){
+ height: 28px!important;
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.base_info .el-input){
+ height: 28px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+::v-deep(.base_info .el-form-item__content){
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+::v-deep(.base_info .el-col){
+ height: 28px!important;
+ line-height: 28px!important;
+ margin-bottom: 16px!important;
+}
+
+::v-deep(.base_info .el-col:nth-child(6+n)){
+ margin-bottom: 16px!important;
+}
+
+::v-deep(.base_info .el-form-item__label){
+ font-size: 12px!important;
+ font-weight:500;
+ height: 28px!important;
+ display: flex;
+ align-items: center;
+}
+
+::v-deep(.base_info .el-select-dropdown__item){
+ font-size: 12px!important;
+ font-weight:500;
+}
+
+// 复选框组
+::v-deep(.base_chexkbox .checkbox_group>span){
+ margin-right: 40px!important;
+}
+
+::v-deep(.base_chexkbox .checkbox_group>span:last-child){
+ margin-right: 0px!important;
+}
+
+::v-deep(.base_chexkbox .vxe-checkbox .vxe-checkbox--label){
+ font-size: 12px!important;
+ font-weight: 500!important;
+ color:#606266!important;
+}
+
+::v-deep(.base_chexkbox .lc_title_box_title p){
+ margin: 0!important;
+ font-size: 18px!important;
+}
+
+::v-deep(.base_chexkbox){
+ margin: 16px!important;
+ padding: 16px!important;
+}
+
+// 多选选择框
+::v-deep(.manySelect .lc_title_box .el-input__inner){
+ height: 28px!important;
+}
+
+::v-deep(.manySelect .lc_title_box .el-input){
+ height: 28px!important;
+
+}
+
+::v-deep(.manySelect .lc_title_box .el-form-item__content){
+ height: 28px!important;
+ line-height: 28px!important;
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.manySelect .lc_title_box .el-form-item__label){
+ height: 28px!important;
+ line-height: 28px!important;
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.manySelect .lc_title_box .el-select-dropdown__item){
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.manySelect .lc_title_box .el-select){
+ font-size: 12px!important;
+ font-weight: 500;
+}
+
+::v-deep(.manySelect .lc_title_box .el-input__suffix-inner){
+ display: flex;
+ height: 28px!important;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+// 表格
+// .base_table{
+// height: 456px;
+// }
+
+::v-deep(.base_table .base_table_width .upload_span){
+ height: 18px!important;
+ line-height: 18px!important;
+ display: flex;
+ align-items: center;
+ vertical-align: middle;
+}
+::v-deep(.base_table .base_table_width .btn-flex){
+ height: 18px!important;
+ line-height: 18px!important;
+ display: flex;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.base_table .base_table_width .btn-group){
+ height: 18px!important;
+ line-height: 18px!important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ vertical-align: middle;
+}
+
+::v-deep(.base_table .btn-group span){
+ font-size: 12px!important;
+}
+
+::v-deep(.vxe-table--body){
+ font-size: 12px!important;
+}
+::v-deep(.vxe-header--row .operation_div .vxe-button){
+ font-size: 12px!important;
+}
+::v-deep(.vxe-header--row){
+ font-size: 12px!important;
+ font-weight: 600;
+}
+
+::v-deep(.base_table_width .el-dialog){
+ width: 430px!important;
+}
+
+// 分页
+::v-deep(.el-pagination){
+ text-align: center;
+}
+
+// 备注
+.base_remarks{
+ height: 248px;
+ margin-bottom: 48px!important;
+}
+
+// 弹出
+::v-deep(.dialogTable){
+ margin-top:12px!important;
+ padding-bottom: 16px!important;
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_cpplfb.scss b/src/assets/style/lc_jx_style/lc_jx_cpplfb.scss
new file mode 100644
index 0000000..93be904
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_cpplfb.scss
@@ -0,0 +1,46 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ width: 100%;
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_dzsj.scss b/src/assets/style/lc_jx_style/lc_jx_dzsj.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_dzsj.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_ggdy.scss b/src/assets/style/lc_jx_style/lc_jx_ggdy.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_ggdy.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_gysj.scss b/src/assets/style/lc_jx_style/lc_jx_gysj.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_gysj.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_jgsj.scss b/src/assets/style/lc_jx_style/lc_jx_jgsj.scss
new file mode 100644
index 0000000..ac3df91
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_jgsj.scss
@@ -0,0 +1,45 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+.base_table{
+ padding-right: 32px;
+}
+.base_table_width_c{
+ width: 800px;
+ margin-top: 16px;
+}
+.base_table_width{
+ width: 100%;
+ margin-top: 16px;
+}
+
+
+
+::v-deep(.el-dialog){
+ width: 430px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 16px!important;
+}
+
+::v-deep(.dialogTable){
+ margin:16px 0!important;
+}
+
diff --git a/src/assets/style/lc_jx_style/lc_jx_rzxq.scss b/src/assets/style/lc_jx_style/lc_jx_rzxq.scss
new file mode 100644
index 0000000..4227e41
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_rzxq.scss
@@ -0,0 +1,11 @@
+::v-deep(.el-form-item__label){
+ width: auto!important;
+}
+
+.base_info{
+
+}
+
+.base_remarks{
+
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_scfx.scss b/src/assets/style/lc_jx_style/lc_jx_scfx.scss
new file mode 100644
index 0000000..31661ba
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_scfx.scss
@@ -0,0 +1,42 @@
+.btn-flex{
+ margin-bottom: 0px!important;
+}
+.btns_box{
+ padding: 16px;
+ vertical-align: middle;
+}
+.base_info{
+ padding: 0 16px;
+}
+.base_table_width{
+ width: 1648px;
+ margin-top: 16px;
+}
+.btn-flex{
+ align-items: center;
+}
+::v-deep(.el-range-editor.el-input__inner){
+ width: 100%;
+}
+::v-deep(.el-form-item){
+ margin-bottom: 16px!important;
+}
+::v-deep(.el-dialog__body .el-form-item){
+ margin-bottom: 0px!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top: 0px!important;
+ padding-bottom: 25px!important;
+}
+
+::v-deep(.dialogTable){
+ margin-top:16px!important;
+}
+
+::v-deep(.el-upload .el-button){
+ padding:6px 10px !important;
+}
+
+::v-deep(.el-button){
+ padding:6px 10px !important;
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_task.scss b/src/assets/style/lc_jx_style/lc_jx_task.scss
new file mode 100644
index 0000000..9842c8f
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_task.scss
@@ -0,0 +1,49 @@
+/* single dialog */
+::v-deep(header){
+ text-align: center!important;
+}
+::v-deep(.el-dialog__header){
+ text-align: center!important;
+}
+::v-deep(.el-dialog__body .el-form .el-form-item){
+ margin-bottom: 0!important;
+}
+::v-deep(.el-dialog__body){
+ padding-top:10px!important;
+ padding-bottom: 10px!important;
+}
+::v-deep(.el-dialog__footer){
+ text-align:right!important;
+}
+::v-deep(.el-dialog__body .el-form .el-form-item__label){
+ font-size: 16px!important;
+}
+::v-deep(.el-dialog__body .el-form .text-r .el-button){
+ padding: 0 10px!important;
+}
+.el-pagination{
+ text-align: center;
+}
+.el-form-item {
+ margin-bottom: 15px;
+}
+.el-button {
+ min-height: 34px;
+ padding: 0 10px;
+ font-size: 12px;
+}
+.el-button--text {
+ padding: 0!important;
+}
+::v-deep(.el-form-item__label) {
+ font-size: 12px;
+}
+::v-deep(.el-date-editor--date){
+width: 208px!important;
+}
+::v-deep(label){
+font-weight:500!important;
+}
+::v-deep(.el-dialog){
+width: 440px!important;
+}
diff --git a/src/assets/style/lc_jx_style/lc_jx_template.scss b/src/assets/style/lc_jx_style/lc_jx_template.scss
new file mode 100644
index 0000000..cb554ed
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_template.scss
@@ -0,0 +1,7 @@
+::v-deep(.el-form-item__label){
+ width: auto!important;
+}
+
+.base_table{
+ width: 1000px;
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_zscqsq.scss b/src/assets/style/lc_jx_style/lc_jx_zscqsq.scss
new file mode 100644
index 0000000..4227e41
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_zscqsq.scss
@@ -0,0 +1,11 @@
+::v-deep(.el-form-item__label){
+ width: auto!important;
+}
+
+.base_info{
+
+}
+
+.base_remarks{
+
+}
\ No newline at end of file
diff --git a/src/assets/style/lc_jx_style/lc_jx_zscqxq.scss b/src/assets/style/lc_jx_style/lc_jx_zscqxq.scss
new file mode 100644
index 0000000..4227e41
--- /dev/null
+++ b/src/assets/style/lc_jx_style/lc_jx_zscqxq.scss
@@ -0,0 +1,11 @@
+::v-deep(.el-form-item__label){
+ width: auto!important;
+}
+
+.base_info{
+
+}
+
+.base_remarks{
+
+}
\ No newline at end of file
diff --git a/src/assets/tianjia.png b/src/assets/tianjia.png
new file mode 100644
index 0000000..498c556
Binary files /dev/null and b/src/assets/tianjia.png differ
diff --git a/src/assets/white.png b/src/assets/white.png
new file mode 100644
index 0000000..7693997
Binary files /dev/null and b/src/assets/white.png differ
diff --git a/src/components/index.js b/src/components/index.js
new file mode 100644
index 0000000..e98d632
--- /dev/null
+++ b/src/components/index.js
@@ -0,0 +1,4 @@
+import Layout from './layout/index'
+export {
+ Layout
+}
diff --git a/src/components/layout/index.vue b/src/components/layout/index.vue
new file mode 100644
index 0000000..aa6d0c6
--- /dev/null
+++ b/src/components/layout/index.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/layout/libs/index.js b/src/components/layout/libs/index.js
new file mode 100644
index 0000000..96e21ca
--- /dev/null
+++ b/src/components/layout/libs/index.js
@@ -0,0 +1,8 @@
+import LayoutAside from './layout-aside/index.vue'
+import LayoutHeader from './layout-header/index.vue'
+import LayoutFooter from './layout-footer/index.vue'
+export {
+ LayoutAside,
+ LayoutHeader,
+ LayoutFooter
+}
diff --git a/src/components/layout/libs/layout-aside/index.vue b/src/components/layout/libs/layout-aside/index.vue
new file mode 100644
index 0000000..7d948c4
--- /dev/null
+++ b/src/components/layout/libs/layout-aside/index.vue
@@ -0,0 +1,92 @@
+
+
+
+
+ {{ settingsTitle }}
+
+
Cost
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/layout/libs/layout-aside/item.vue b/src/components/layout/libs/layout-aside/item.vue
new file mode 100644
index 0000000..f946891
--- /dev/null
+++ b/src/components/layout/libs/layout-aside/item.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+
diff --git a/src/components/layout/libs/layout-footer/index.vue b/src/components/layout/libs/layout-footer/index.vue
new file mode 100644
index 0000000..4ba268c
--- /dev/null
+++ b/src/components/layout/libs/layout-footer/index.vue
@@ -0,0 +1,6 @@
+
+ footer
+
+
diff --git a/src/components/layout/libs/layout-header/index.vue b/src/components/layout/libs/layout-header/index.vue
new file mode 100644
index 0000000..ea27a18
--- /dev/null
+++ b/src/components/layout/libs/layout-header/index.vue
@@ -0,0 +1,298 @@
+
+
+
+
+
diff --git a/src/components/lcProject/LcWriteLinks.vue b/src/components/lcProject/LcWriteLinks.vue
new file mode 100644
index 0000000..8f8c11c
--- /dev/null
+++ b/src/components/lcProject/LcWriteLinks.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/index.js b/src/components/lcProject/index.js
new file mode 100644
index 0000000..ebc04a2
--- /dev/null
+++ b/src/components/lcProject/index.js
@@ -0,0 +1,14 @@
+// 全局组件注册 需要到coms这个目录下注册
+
+export default {
+ install(app) {
+ const req = require.context('.', true, /\.vue$/);
+ req.keys().forEach((item) => {
+ const defaultObj = req(item).default;
+
+ let name = item.split('/')[1];
+ let newname = name.substring(0, name.indexOf("."))
+ app.component(newname, defaultObj)
+ });
+ }
+};
\ No newline at end of file
diff --git a/src/components/lcProject/lcBaseInfo.vue b/src/components/lcProject/lcBaseInfo.vue
new file mode 100644
index 0000000..7dac480
--- /dev/null
+++ b/src/components/lcProject/lcBaseInfo.vue
@@ -0,0 +1,338 @@
+
+
+
基本信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全选
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看任务审核驳回明细
+
+
+
+ 查看任务审核驳回明细
+
+
+
+
+
+
+
+
+
+
驳回时间:{{ it.create_time_text }}
+
驳回人:{{ it.create_user_name }}
+
{{ it.msg }}
+
+
+
+
+ 暂无记录
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcBom.vue b/src/components/lcProject/lcBom.vue
new file mode 100644
index 0000000..67145fe
--- /dev/null
+++ b/src/components/lcProject/lcBom.vue
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcButtons.vue b/src/components/lcProject/lcButtons.vue
new file mode 100644
index 0000000..780d4ef
--- /dev/null
+++ b/src/components/lcProject/lcButtons.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
{{ it.name }}
+
{{ it.name }}
+
+ {{ it.name }}
+
+
+ {{
+ its.name
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogPQ.vue b/src/components/lcProject/lcDailogPQ.vue
new file mode 100644
index 0000000..5b9d9cd
--- /dev/null
+++ b/src/components/lcProject/lcDailogPQ.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogZP.vue b/src/components/lcProject/lcDailogZP.vue
new file mode 100644
index 0000000..41572ae
--- /dev/null
+++ b/src/components/lcProject/lcDailogZP.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogrybg.vue b/src/components/lcProject/lcDailogrybg.vue
new file mode 100644
index 0000000..c420fc7
--- /dev/null
+++ b/src/components/lcProject/lcDailogrybg.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogrybh.vue b/src/components/lcProject/lcDailogrybh.vue
new file mode 100644
index 0000000..eb00e0f
--- /dev/null
+++ b/src/components/lcProject/lcDailogrybh.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogxt.vue b/src/components/lcProject/lcDailogxt.vue
new file mode 100644
index 0000000..9908a2c
--- /dev/null
+++ b/src/components/lcProject/lcDailogxt.vue
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.name }}
+ {{ scope.row.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 任务负责人
+
+
+
+
+
+
+
+
+ {{ fullName(scope.row.leader_user_id)
+ }}
+ {{ fullName(scope.row.leader_user_id) }}
+
+
+
+
+
+
+
+
+
+ 要求完成时间
+
+
+
+
+
+
+ {{ scope.row.required_time }}
+ {{ scope.row.required_time }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcDailogzl.vue b/src/components/lcProject/lcDailogzl.vue
new file mode 100644
index 0000000..8f13db5
--- /dev/null
+++ b/src/components/lcProject/lcDailogzl.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 下载
+ 复制
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcSearch.vue b/src/components/lcProject/lcSearch.vue
new file mode 100644
index 0000000..bcb58cd
--- /dev/null
+++ b/src/components/lcProject/lcSearch.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/lcProject/lcbzljtable.vue b/src/components/lcProject/lcbzljtable.vue
new file mode 100644
index 0000000..41d104b
--- /dev/null
+++ b/src/components/lcProject/lcbzljtable.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.bom_code }}
+
+
+
+
+
+
+
+
+
+ {{ row.bom_name }}
+
+
+
+
+ {{ row.spec }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcbzyxtable.vue b/src/components/lcProject/lcbzyxtable.vue
new file mode 100644
index 0000000..ec2792e
--- /dev/null
+++ b/src/components/lcProject/lcbzyxtable.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.type }}
+
+
+
+
+
+ {{ row.structure }}
+
+
+
+
+
+ {{ row.size }}
+
+
+
+
+
+ {{ row.transport_size }}
+
+
+
+
+
+ {{ row.layout }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lcggdytab.vue b/src/components/lcProject/lcggdytab.vue
new file mode 100644
index 0000000..f2f892d
--- /dev/null
+++ b/src/components/lcProject/lcggdytab.vue
@@ -0,0 +1,1093 @@
+
+
+
+
+
+
+
选择显示字段
+
+ 导入SKU
+
+
导出SKU
+
+ 导入结构BOM表
+
+
导出结构BOM表
+
+ 导入包装BOM表
+
+
导出包装BOM表
+
sku检测
+
+
同步到产品目录
+
同步到成本系统
+
+
新增行
+
删除行
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.package }}
+
+
+
+
+
+
+
+
+
+ {{ row.safe }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.order_num ? row.order_num : 0 }}
+ {{ row.order_num ? row.order_num : 0 }}
+
+
+
+
+
+ ¥{{ row.mould_fare_sj ? row.mould_fare_sj : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.mould_fare_wj ? row.mould_fare_wj : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.electron_fare ? row.electron_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.structure_fare ? row.structure_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.power_fare ? row.power_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.line_fare ? row.line_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.package_fare ? row.package_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.parts_fare ? row.parts_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.other_fare ? row.other_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.process_fare ? row.process_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.auth_test_fare ? row.auth_test_fare : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.total_cost ? row.total_cost : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.mould_cost ? row.mould_cost : '0.000' }}
+
+
+
+
+
+
+
+
+ ¥{{
+ setNums83((
+ parseFloat(row.structure_fare ? row.structure_fare : 0) +
+ parseFloat(row.power_fare ? row.power_fare : 0) +
+ parseFloat(row.line_fare ? row.line_fare : 0) +
+ parseFloat(row.parts_fare ? row.parts_fare : 0) +
+ parseFloat(row.other_fare ? row.other_fare : 0) +
+ parseFloat(row.process_fare ? row.process_fare : 0) +
+ parseFloat(row.package_fare ? row.package_fare : 0) +
+ parseFloat(row.electron_fare ? row.electron_fare : 0)) || 0, 8, 4, row.indextb, 'tco_cost') }}
+
+
+
+
+
+ {{
+ setNums83(((parseFloat(row.mould_cost ? row.mould_cost : 0) -
+ (parseFloat(row.structure_fare ? row.structure_fare : 0) +
+ parseFloat(row.power_fare ? row.power_fare : 0) +
+ parseFloat(row.line_fare ? row.line_fare : 0) +
+ parseFloat(row.parts_fare ? row.parts_fare : 0) +
+ parseFloat(row.other_fare ? row.other_fare : 0) +
+ parseFloat(row.process_fare ? row.process_fare : 0) +
+ parseFloat(row.package_fare ? row.package_fare : 0) +
+ parseFloat(row.electron_fare ? row.electron_fare : 0))) / (parseFloat(row.mould_cost ? row.mould_cost :
+ 0)) * 100) || 0, 8, 4, row.indextb, 'tco_rate')
+ }}%
+
+
+
+
+ ¥{{ row.agent_price ? row.agent_price : '0.000' }}
+
+
+
+
+
+
+
+
+ 0%
+ {{ setNums83((((parseFloat(row.agent_price) ? parseFloat(row.agent_price) : 0) -
+ parseFloat(row.mould_cost ? row.mould_cost : 0)) / (parseFloat(row.agent_price) ?
+ parseFloat(row.agent_price)
+ : 0) * 100) || 0, 8, 4, row.indextb, 'channel_rate') }} %
+
+
+
+
+ ¥{{ row.distribution_price ? row.distribution_price : '0.000' }}
+
+
+
+
+
+
+
+
+ {{
+ setNums83(((parseFloat(row.min_retail_price ? row.min_retail_price : 0) -
+ parseFloat(row.distribution_price ? row.distribution_price :
+ 0)) / parseFloat(row.min_retail_price ? row.min_retail_price : 0)) * 100, 8, 4, row.indextb,
+ 'distribution_rate')
+ }}%
+
+
+
+
+ ¥{{ row.retail_price ? row.retail_price : '0.000' }}
+
+
+
+
+
+
+
+ ¥{{ row.min_retail_price ? row.min_retail_price : '0.000' }}
+
+
+
+
+
+
+
+
+ {{ setNums83(((parseFloat(row.min_retail_price ? row.min_retail_price : 0) - parseFloat(row.mould_cost ?
+ row.mould_cost : 0)) / parseFloat(row.min_retail_price ? row.min_retail_price
+ : 0) * 100) || 0, 8, 4, row.indextb, 'b2c_rate')
+ }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/lcProject/lctinymce.vue b/src/components/lcProject/lctinymce.vue
new file mode 100644
index 0000000..5c06fd4
--- /dev/null
+++ b/src/components/lcProject/lctinymce.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/lcProject/lcwjsc.vue b/src/components/lcProject/lcwjsc.vue
new file mode 100644
index 0000000..649f6ed
--- /dev/null
+++ b/src/components/lcProject/lcwjsc.vue
@@ -0,0 +1,689 @@
+
+
+
+
+ {{
+ item.name
+ }}
+ {{ item.name }}
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ row[item.field] }}
+
+
+
+
+
+ {{ row[item.field] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 下载
+ 删除
+
+
+ 删除
+
+
+
+
+
+
+ 下载
+
+
+ 复制
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/lcProject/lcwlbjtable.vue b/src/components/lcProject/lcwlbjtable.vue
new file mode 100644
index 0000000..e939122
--- /dev/null
+++ b/src/components/lcProject/lcwlbjtable.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/m-button/index.vue b/src/components/m-button/index.vue
new file mode 100644
index 0000000..c8bb9b2
--- /dev/null
+++ b/src/components/m-button/index.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
diff --git a/src/components/m-chunk-upload.vue b/src/components/m-chunk-upload.vue
new file mode 100644
index 0000000..9f09b31
--- /dev/null
+++ b/src/components/m-chunk-upload.vue
@@ -0,0 +1,244 @@
+
+
+
+
+
diff --git a/src/components/tinymce.vue b/src/components/tinymce.vue
new file mode 100644
index 0000000..3c006dd
--- /dev/null
+++ b/src/components/tinymce.vue
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/hooks/test.js b/src/hooks/test.js
new file mode 100644
index 0000000..2d18783
--- /dev/null
+++ b/src/hooks/test.js
@@ -0,0 +1,27 @@
+/**
+ * @Description : hooks 测试 - 鼠标点击坐标
+ * @Author : jinxin
+ * @Date : 2023-2-03 17:10:43
+ */
+import { ref, onMounted, onUnmounted } from 'vue'
+
+function useMousePosition() {
+ const x = ref(0)
+ const y = ref(0)
+
+ const updateMouse = e => {
+ x.value = e.pageX
+ y.value = e.pageY
+ }
+
+ onMounted(() => {
+ document.addEventListener('click', updateMouse)
+ })
+ onUnmounted(() => {
+ document.removeEventListener('click', updateMouse)
+ })
+
+ return { x, y }
+}
+
+export default useMousePosition
diff --git a/src/hooks/valueChangeName.js b/src/hooks/valueChangeName.js
new file mode 100644
index 0000000..69b536a
--- /dev/null
+++ b/src/hooks/valueChangeName.js
@@ -0,0 +1,34 @@
+/**
+ * @Description : 固定值转换
+ * @Author : jinxin
+ * @Date : 2023-2-03 17:36:43
+ */
+
+function getFixedName(val, type, list) {
+ let name = ''
+ let templist = []
+
+ if (type == 'whether') {
+ if (val) name = '是'
+ else name = '否'
+ } else if (type == 'switch') {
+ if (val) name = '开'
+ else name = '关'
+ } else if (type == 'select') {
+ templist = list.filter(it => it.id == val)
+ if (templist.length > 0) name = templist[0].name
+ else name = ''
+ } else if (type == 'mh_sel') {
+ if (val) {
+ templist = list.filter(it => it.id == val)
+ if (templist.length > 0) name = templist[0].name
+ else name = ''
+ } else {
+ name = ''
+ }
+ }
+
+ return name
+}
+
+export default getFixedName
diff --git a/src/icons/index.js b/src/icons/index.js
new file mode 100644
index 0000000..2c6b309
--- /dev/null
+++ b/src/icons/index.js
@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg component
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const req = require.context('./svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+requireAll(req)
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..68f8930
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,86 @@
+import {
+ createApp
+} from 'vue'
+import JxOricoTable from 'jx-orico-com-table'
+import 'jx-orico-com-table/lib/jx-orico-com-table.css'
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+import App from './App.vue'
+import router from './router'
+import store from './store'
+import Request from '@/utils/request'
+import '@/router/permission.js'
+import {
+ ElMessage,
+ ElLoading,
+ ElMessageBox
+} from 'element-plus'
+import locale from 'element-plus/lib/locale/lang/zh-cn' //需要新加的代码
+import {
+ defineRule,
+ configure
+} from 'vee-validate'
+// import all from '@vee-validate/rules'
+// import allValid from '@/utils/validate'
+import '@/assets/style/global.scss'
+import '@/assets/style/icon.scss'
+import '@/utils/iconfont.js'
+import 'xe-utils'
+import VXETable from 'vxe-table'
+import 'vxe-table/lib/style.css'
+import lcProject from './components/lcProject/index'
+import debounce from './utils/debounce'
+configure({
+ validateOnBlur: true, // controls if `blur` events should trigger validation with `handleChange` handler
+ validateOnChange: true, // controls if `change` events should trigger validation with `handleChange` handler
+ validateOnInput: false, // controls if `input` events should trigger validation with `handleChange` handler
+ validateOnModelUpdate: true // controls if `update:modelValue` events should trigger validation with `handleChange` handler
+})
+// Object.keys(all).forEach(rule => {
+// defineRule(rule, all[rule])
+// })
+// Object.keys(allValid).forEach(rule => {
+// defineRule(rule, allValid[rule])
+// })
+
+const app = createApp(App)
+
+// 全局注册el-icon
+for (const [name, component] of Object.entries(ElementPlusIconsVue)) {
+ app.component(name, component)
+}
+
+app.use(store)
+app.use(lcProject)
+app.use(router)
+app.use(ElMessage)
+app.use(ElLoading)
+app.use(ElementPlus, {
+ locale
+}) //需要改变的地方,加入locale
+app.use(VXETable)
+app.use(JxOricoTable)
+
+app.config.globalProperties.$topNavTagRename = function (title) {
+ store.dispatch('topNavTag/rename', title)
+}
+
+app.config.globalProperties.$http = new Request()
+app.config.globalProperties.$message = ElMessage
+app.config.globalProperties.$messageBox = ElMessageBox
+app.config.globalProperties.$loading = ElLoading
+app.config.globalProperties.$createSpuFresh = false
+app.mixin(debounce)
+app.mount('#app')
+
+// 注册一个全局自定义指令 `v-allow` 配合路由meta.permission信息控制节点显示权限
+app.directive('allow', {
+ mounted(el, binding) {
+ // console.log('`v-allow', binding.instance.$route.meta.permission)
+ const permission = binding.instance.$route.meta.permission
+ if (!permission.includes(binding.value)) {
+ el.parentNode.removeChild(el)
+ }
+ }
+})
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..1eefc01
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,55 @@
+import {
+ createRouter,
+ createWebHistory
+} from 'vue-router'
+import {
+ Layout
+} from '@/components/'
+
+export const staticRoutes = [
+ {
+ path: '/',
+ name: 'Main',
+ component: Layout,
+ meta: {
+ title: '成本管理',
+ icon: ''
+ },
+ hidden: true,
+ children: [{
+ path: '/index',
+ name: 'NewCostList',
+ meta: {
+ title: '成本管理',
+ icon: 'el-icon-s-home'
+ },
+ hidden: true,
+ component: () => import('@/views/index/index')
+ }]
+ },
+ {
+ path: '/login',
+ name: 'Login',
+ hidden: true,
+ component: () => import('@/views/login/index'),
+ meta: {
+ title: '登录页'
+ }
+ },
+ {
+ path: '/404',
+ name: '404',
+ hidden: true,
+ component: () => import('@/views/public/404'),
+ meta: {
+ title: '页面未找到'
+ }
+ }
+]
+
+const router = createRouter({
+ history: createWebHistory(process.env.BASE_URL),
+ routes: staticRoutes
+})
+
+export default router
diff --git a/src/router/permission.js b/src/router/permission.js
new file mode 100644
index 0000000..21efebf
--- /dev/null
+++ b/src/router/permission.js
@@ -0,0 +1,53 @@
+import router from '@/router'
+import store from '@/store'
+import { title as settingsTitle } from '@/settings'
+import { checkSignedInStatus, setNotLoggedIn } from '@/utils/auth'
+
+let loadedDynamicRoutes = false // 是否已加载动态路由
+const whiteList = ['/login']
+router.beforeEach(async (to, from, next) => {
+ // 网页title跟随路由title
+ document.title = settingsTitle + '-' + to.meta.title
+ if (checkSignedInStatus()) {
+ // 身份验证通过
+ if (to.path !== '/login') { // 不在登录页面,正常进入相应页面
+ if (loadedDynamicRoutes) {
+ if(from.meta.title !== '登录页' && JSON.stringify(from.meta) !=="{}"){
+ store.dispatch('topNavTag/addNavTag', to) // 顶部页面标签处理
+ }
+ next()
+ } else {
+ try {
+ // 获取用户信息
+ await store.dispatch('user/getUserInfo')
+ // 获取用户权限列表
+ const authList = store.getters['user/getUserAuthList']
+ // 获取用户有权限操作权限的路由
+ const accessRoutes = await store.dispatch('routes/generateRoutes', authList)
+ // 动态添加路由
+ accessRoutes.forEach(route => {
+ router.addRoute(route)
+ })
+ // 设为已加载动态路由
+ loadedDynamicRoutes = true
+ // 确保动态添加的路由已经被完全加载上去并替换浏览器路由使浏览器没有浏览历史可回退
+ next({ ...to, replace: true })
+ } catch (error) {
+ // 设为非登录状态
+ setNotLoggedIn()
+ next('/login')
+ }
+ }
+ } else { // 在登录页面
+ next({ path: '/' })
+ }
+ } else { // 身份验证不过
+ // 设为非登录状态
+ setNotLoggedIn()
+ if (whiteList.indexOf(to.path) !== -1) { // 处于不用登录页面
+ next()
+ } else {
+ next('/login')
+ }
+ }
+})
diff --git a/src/settings.js b/src/settings.js
new file mode 100644
index 0000000..280a718
--- /dev/null
+++ b/src/settings.js
@@ -0,0 +1,3 @@
+module.exports = {
+ title: 'OPD211'
+}
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..24ab749
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,23 @@
+import {
+ createStore
+} from 'vuex'
+import leftAside from './modules/leftAside'
+import topNavTag from './modules/topNavTag'
+import routes from './modules/routes'
+import user from './modules/user'
+import skuBaseData from './modules/skuBaseData'
+import lcJxStore from './modules/lcJxStore'
+
+export default createStore({
+ state: {},
+ mutations: {},
+ actions: {},
+ modules: {
+ leftAside,
+ topNavTag,
+ routes,
+ user,
+ skuBaseData,
+ lcJxStore
+ }
+})
diff --git a/src/store/modules/lcJxStore.js b/src/store/modules/lcJxStore.js
new file mode 100644
index 0000000..b6eaaee
--- /dev/null
+++ b/src/store/modules/lcJxStore.js
@@ -0,0 +1,25 @@
+const state = {
+ isClick: false
+}
+
+const getters = {}
+
+const mutations = {
+ SET_ISCLICK: (state, isClick) => {
+ state.isClick = isClick
+ },
+}
+
+const actions = {
+ setIsClick(context,isClick ) {
+ context.commit('SET_ISCLICK',isClick )
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ getters,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/leftAside.js b/src/store/modules/leftAside.js
new file mode 100644
index 0000000..9d54cb7
--- /dev/null
+++ b/src/store/modules/leftAside.js
@@ -0,0 +1,35 @@
+const state = {
+ leftMenuWidth: '200px',
+ isCollapse: false,
+ isShowLanguage: false
+}
+
+const mutations = {
+ CHANGE_COLLAPSE: (state) => {
+ state.isCollapse = !state.isCollapse
+ if (state.isCollapse) {
+ state.leftMenuWidth = 'auto'
+ } else {
+ state.leftMenuWidth = '200px'
+ }
+ },
+ SHOW_LANGUAGE: (state, showLanguage) => {
+ state.isShowLanguage = showLanguage
+ }
+}
+
+const actions = {
+ changeCollapse (context) {
+ context.commit('CHANGE_COLLAPSE')
+ },
+ changeLanguage (context, showLanguage) {
+ context.commit('SHOW_LANGUAGE', showLanguage)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/routes.js b/src/store/modules/routes.js
new file mode 100644
index 0000000..65f97c4
--- /dev/null
+++ b/src/store/modules/routes.js
@@ -0,0 +1,99 @@
+import { staticRoutes } from '@/router'
+import Request from '@/utils/request'
+import Layout from '@/components/layout/index'
+
+// 从服务器获取菜单
+async function fetchAsyncRoutes4Server() {
+ return (new Request()).mock(true).get('menu/index').then(r => {
+ if (r.errno !== 0) {
+ return []
+ }
+ return r.data
+ })
+}
+
+// 菜单路由
+function menuBuildTreeAsyncRoutes(routes){
+ const menus = []
+ routes.forEach(item => {
+ const it = { id: item.id, path: item.path, name: item.name, meta: item.meta, alwaysShow: item.alwaysShow, hidden: item.hidden }
+ if (item.children && item.children.length) {
+ it.children = menuBuildTreeAsyncRoutes(item.children)
+ }
+ menus.push(it)
+ })
+ return menus
+}
+
+// 组装路由结构
+function buildTreeAsyncRoutes (routes, authList) {
+ const menus = []
+ routes.forEach(item => {
+ const it = { id: item.id, path: item.path, name: item.name, meta: item.meta, alwaysShow: item.alwaysShow, hidden: item.hidden }
+ if (item.redirect != null) {
+ it.redirect = item.redirect
+ }
+ if (item.component && authList.indexOf(item.id) >= 0) {
+ if (item.component === '/layout') {
+ it.component = Layout
+ } else {
+ it.component = () => import('@/views' + item.component)
+ }
+ if (item.children && item.children.length) {
+ item.children.forEach(v => {
+ if (!it.meta.permission) {
+ it.meta.permission = []
+ }
+ if (item.path.startsWith('/')) {
+ item.path = item.path.substring(1)
+ }
+ if (authList.indexOf(v.id) >= 0) {
+ it.meta.permission.push(item.name + '.' + v.name)
+ }
+ })
+ it.children = buildTreeAsyncRoutes(item.children, authList)
+ }
+ menus.push(it)
+
+ }
+ })
+ return menus
+
+}
+
+const state = {
+ routes: []
+}
+
+const mutations = {
+ SET_ROUTES: (state, routes) => {
+ state.routes = routes
+ }
+}
+
+const actions = {
+ async generateRoutes (context, authList) {
+ // 服务器获取菜单
+ const routes = await fetchAsyncRoutes4Server()
+ // 权限过滤
+ // const accessRoutes = routes.filter(v => authList.indexOf(v.id) >= 0)
+ // 组装路由
+ const treeRoutes = buildTreeAsyncRoutes(routes, authList)
+ const menuRoutes = menuBuildTreeAsyncRoutes(routes)
+
+
+ const mergeTreeRoutes = staticRoutes.filter((it) => it.name != undefined).concat(treeRoutes);
+ context.commit('SET_ROUTES', menuRoutes)
+
+ // const mergeTreeRoutes = staticRoutes.concat(treeRoutes)
+ // context.commit('SET_ROUTES', mergeTreeRoutes)
+ return mergeTreeRoutes
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/skuBaseData.js b/src/store/modules/skuBaseData.js
new file mode 100644
index 0000000..9f91090
--- /dev/null
+++ b/src/store/modules/skuBaseData.js
@@ -0,0 +1,23 @@
+const state = {
+ lifeBaseData: [],
+ promotionCategory:[],
+ spubacklist:false
+}
+
+const mutations = {
+ setLifeBase: (state, value) => {
+ state.lifeBaseData = value
+ },
+ setpromotionCategory: (state, value) => {
+ state.promotionCategory = value
+ },
+ setspubacklist: (state, value) => {
+ state.spubacklist = value
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations
+}
\ No newline at end of file
diff --git a/src/store/modules/topNavTag.js b/src/store/modules/topNavTag.js
new file mode 100644
index 0000000..30f72fb
--- /dev/null
+++ b/src/store/modules/topNavTag.js
@@ -0,0 +1,162 @@
+import router from '@/router'
+const state = {
+ tags: [
+ // 默认打开路由标签
+ {
+ path: '/index/index',
+ fullPath: '/index/index',
+ name: 'NewCostList',
+ meta: {
+ title: 'TCO成本管理'
+ }
+ }
+ ], // 标签
+ keepAliveIncludes: ['NewCostList']
+}
+
+const arr = ['add', 'edit', 'scfx', 'ggdy', 'zscqxq', 'rzxq', 'bzyx', 'bzljxz', 'gysj', 'cpplfb', 'jgsj', 'dzsj', 'zscqsq', 'wlbj', 'km', 'cpzl', 'spddxq', 'spxdxqMx', 'dj', 'bzsj', 'bl', 'skuinfo', 'sczl', 'xxlr', 'rz', 'zlsh', 'spxd', 'structureBom', 'packingBom', 'prlog']
+let str = ''
+
+const mutations = {
+ // 新增标签
+ ADD_NAV_TAG: (state, tag) => {
+ if (tag.name == 'AddSpu') {
+ tag.currType = 'cre'
+ }
+ if (tag.name == 'EditSku') {
+ tag.currType = 'editskucre'
+ }
+ if (tag.name == 'EditSpu') {
+ tag.currType = 'editspucre'
+ }
+ if (tag.name == 'ProductList') {
+ tag.currType = 'productlistcre'
+ }
+ state.tags.push(tag)
+ },
+
+ // 替换标签
+ REPLACE_NAV_TAG: (state, tag) => {
+ if (tag.name == 'AddSpu') {
+ tag.currType = 'rep'
+ }
+ if (tag.name == 'EditSku') {
+ tag.currType = 'editskurep'
+ }
+ if (tag.name == 'EditSpu') {
+ tag.currType = 'editspurep'
+ }
+ if (tag.name == 'ProductList') {
+ tag.currType = 'productlistrep'
+ }
+ if (arr.includes(str)) {
+ const index = state.tags.findIndex(it => it.path === tag.path)
+ state.tags.splice(index, 1, tag)
+ } else {
+ const index = state.tags.findIndex(it => it.fullPath === tag.fullPath)
+ state.tags.splice(index, 1, tag)
+ }
+ },
+
+ // 删除标签
+ RM_NAV_TAG: (state, index) => {
+ state.tags = state.tags.filter((it, i) => {
+ return i !== index || it.name === 'NewCostList'
+ })
+ },
+
+ // 删除所有标签
+ RM_NAV_ALLTAG: (state, index) => {
+ state.tags = [{
+ path: '/index/index',
+ fullPath: '/index/index',
+ name: 'NewCostList',
+ meta: {
+ title: 'TCO成本管理'
+ }
+ }]
+ state.keepAliveIncludes = ['NewCostList']
+ }
+}
+
+// 不需要加载数据的路由
+// let unneedLoadDataRoutes = []
+
+const actions = {
+ // 新增标签
+ addNavTag: (context, route) => {
+ // 跳转至新打开页面
+ if (route.name == '404') {
+ return false
+ }
+ // router.push({ path: tag.fullPath })
+ // if (!context.state.tags.some(v => v.name === tag.name)) {
+ const tag = {
+ path: route.path,
+ fullPath: route.fullPath,
+ name: route.name,
+ meta: route.meta,
+ query: route.query
+ }
+ let index = route.fullPath.lastIndexOf("/")
+ str = route.fullPath.substring(index + 1, route.fullPath.length);
+ if (str.indexOf('?') != -1) {
+ let index = str.lastIndexOf("?")
+ str = str.substring(0, index);
+ }
+ if (!context.state.tags.some(v => v.fullPath === route.fullPath)) {
+ // 标签栏没有,新增页面标签
+ if (arr.includes(str)) {
+ if (!context.state.tags.some(v => v.path == route.path)) {
+ context.commit('ADD_NAV_TAG', tag)
+ } else {
+ context.commit('REPLACE_NAV_TAG', tag)
+ }
+ } else {
+ context.commit('ADD_NAV_TAG', tag)
+ }
+ } else {
+ // 标签栏有,替换标签
+ context.commit('REPLACE_NAV_TAG', tag)
+ }
+
+ // 为组件增加执行钩子,所有数据请求在该钩子函数下调用 (推荐方案)
+ // 解决keepalive多页签情况下,同组件不同参数中数据请求回调
+ // Object.defineProperty(route.matched[route.matched.length - 1].instances, 'default', {
+ // configurable: true,
+ // set(target) {
+ // if (target) {
+ // if (!unneedLoadDataRoutes.some(it => it == route.fullPath)) {
+ // typeof target.$options.routeMounted == 'function' && target.$options.routeMounted.call(target, route)
+ // unneedLoadDataRoutes.push(route.fullPath)
+ // }
+ // }
+ // }
+ // })
+ },
+
+ // 删除标签
+ removeNavTag: (context, index) => {
+ let nextIndex = index - 1
+ var overallVar = context
+ if (context.state.tags.length - 1 > index) {
+ nextIndex = index + 1
+ }
+ // 最后一个页面标签不允许删除
+ if (nextIndex === -1) return false
+ // router.push({ path: context.state.tags[nextIndex].path })
+ router.push(context.state.tags[nextIndex])
+ context.commit('RM_NAV_TAG', index)
+ },
+ // 删除所有标签
+ removeAllNavTag: (context, index) => {
+ context.commit('RM_NAV_ALLTAG')
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
\ No newline at end of file
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..b7bf3ca
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,103 @@
+import { toRaw } from 'vue'
+import Request from '@/utils/request'
+
+const state = {
+ userInfo: {},
+ language: {},
+ cdn: {},
+ isShowBatchEditVuex:false,
+ isShowEditSpuVuex:false,
+ isShowEditskuVuex:false
+}
+
+const getters = {
+ // 获取用户菜单权限
+ getUserAuthList: state => {
+ if (state.userInfo.length <= 0) {
+ return []
+ }
+ if (typeof state.userInfo.auth_list === 'undefined') {
+ return []
+ }
+ return toRaw(state.userInfo.auth_list)
+ }
+}
+
+const mutations = {
+ SET_USER_INFO: (state, user) => {
+ state.userInfo = user
+ },
+ SET_LANGUAGE: (state, language) => {
+ state.language = language
+ },
+ SET_CDN: (state, cdn) => {
+ state.cdn = cdn
+ },
+ SET_BATCHVUEX: (state, isShowBatchEditVuex) => {
+ state.isShowBatchEditVuex = isShowBatchEditVuex
+ },
+ SET_SPUVUEX: (state, isShowEditSpuVuex) => {
+ state.isShowEditSpuVuex = isShowEditSpuVuex
+ },
+ SET_SKUVUEX: (state, isShowEditskuVuex) => {
+ state.isShowEditskuVuex = isShowEditskuVuex
+ }
+}
+
+const actions = {
+ setBatchVuex(context, isShowBatchEditVuex) {
+ context.commit('SET_BATCHVUEX', isShowBatchEditVuex)
+ },
+ setSpuVuex(context, isShowEditSpuVuex) {
+ context.commit('SET_SPUVUEX', isShowEditSpuVuex)
+ },
+ setSkuVuex(context, isShowEditskuVuex) {
+ context.commit('SET_SKUVUEX', isShowEditskuVuex)
+ },
+ setCdn(context, cdn) {
+ context.commit('SET_CDN', cdn)
+ },
+ setLanguage(context, language) {
+ context.commit('SET_LANGUAGE', language)
+ },
+ // 设置用户信息
+ setUserInfo (context, user) {
+ context.commit('SET_USER_INFO', user)
+ },
+
+ // 获取用户信息
+ getUserInfo (context) {
+ return new Promise((resolve, reject) => {
+ if (context.state.userInfo.length <= 0 || typeof context.state.userInfo.auth_list === 'undefined') {
+ // 服务器获取用户信息
+ return (new Request()).get('login/getOssInfo')
+ .then(r => {
+ const { errno, data, errmsg } = r
+ if (errno !== 0) {
+ if (errno == 500){
+ alert(errmsg)
+ setTimeout(() => window.location.href="/login")
+ }else{
+ reject(errmsg)
+ }
+
+ }
+ context.commit('SET_USER_INFO', data)
+ resolve(data)
+ })
+ .catch(e => {
+ reject(e)
+ })
+ }
+ resolve(toRaw(context.state.userInfo))
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ getters,
+ mutations,
+ actions
+}
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 0000000..3fbae10
--- /dev/null
+++ b/src/utils/auth.js
@@ -0,0 +1,16 @@
+import Cookies from 'js-cookie'
+
+const signedInKey = 's_pass'
+// 设置已登录状态cookie
+export function setSignedIn() {
+ return Cookies.set(signedInKey, 1)
+}
+// 判断是否已登录
+export function checkSignedInStatus() {
+ return (Cookies.get(signedInKey) * 1) === 1
+}
+// 删除登录状态cookie
+export function setNotLoggedIn() {
+ sessionStorage.clear()
+ return Cookies.remove(signedInKey)
+}
\ No newline at end of file
diff --git a/src/utils/common.js b/src/utils/common.js
new file mode 100644
index 0000000..d29fa20
--- /dev/null
+++ b/src/utils/common.js
@@ -0,0 +1,69 @@
+// 深拷贝对象
+export function copyObj(obj) {
+ if (!isObject(obj)) {
+ throw new Error('obj 不是一个对象!')
+ }
+
+ const isArray = Array.isArray(obj)
+ const cloneObj = isArray ? [] : {}
+ for (const key in obj) {
+ cloneObj[key] = isObject(obj[key]) ? copyObj(obj[key]) : obj[key]
+ }
+
+ return cloneObj
+}
+
+// 赋值对象
+export function assignObj(obj1, obj2) {
+ for (const key in obj1, obj2) {
+ if (isObject(obj2[key])) {
+ assignObj(obj1[key], obj2[key])
+ } else {
+ obj1[key] = obj2[key]
+ }
+ }
+}
+
+export function isObject(o) {
+ return (typeof o === 'object' || typeof o === 'function') && o !== null
+}
+
+//转义
+export function HTMLDecode(str){
+ var s = ''
+ if (str.length == 0) return ''
+ s = str.replace(/</g, '<')
+ s = s.replace(/&/g, '&')
+ s = s.replace(/>/g, '>')
+ s = s.replace(/'/g, "\'")
+ s = s.replace(/"/g, '"')
+ return s
+}
+
+export function HTMLEncode(str){
+ var s = ''
+ if (str.length == 0) return ''
+ s = str.replace(/&/g, '&')
+ s = s.replace(//g, '>')
+ s = s.replace(/\'/g, ''')
+ s = s.replace(/\"/g, '"')
+ return s
+}
+//正则
+export function dealInputVal(value) {
+ value = value.replace(/^0*(0\.|[1-9])/, "$1");
+ value = value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
+ value = value.replace(/^\./g, ""); //验证第一个字符是数字而不是字符
+ value = value.replace(/\.{1,}/g, "."); //只保留第一个.清除多余的
+ value = value
+ .replace(".", "$#$")
+ .replace(/\./g, "")
+ .replace("$#$", ".");
+ value = value.replace(/^()*(\d*)\.(\d\d).*$/, "$1$2.$3"); //只能输入两个小数
+ value =
+ value.indexOf(".") > 0
+ ? value.split(".")[0].substring(0, 10) + "." + value.split(".")[1]
+ : value.substring(0, 10);
+ return value;
+ }
\ No newline at end of file
diff --git a/src/utils/cpmlPublic.js b/src/utils/cpmlPublic.js
new file mode 100644
index 0000000..6a35170
--- /dev/null
+++ b/src/utils/cpmlPublic.js
@@ -0,0 +1,31 @@
+// 根据id获取多级分类对象数组的id所在分类级别
+export function findDetailsById(array, id, keysToFind) {
+ // 递归函数,用于遍历数组并查找指定ID的对象的属性
+ function traverse(items) {
+ for (let item of items) {
+ if (item.id === id) {
+ // 找到目标ID,返回所需属性的对象
+ const result = {};
+ for (const key of keysToFind) {
+ if (item.hasOwnProperty(key)) {
+ result[key] = item[key];
+ }
+ }
+ return result;
+ }
+ if (item.children) {
+ // 如果当前项有子项,递归遍历子项
+ const childResult = traverse(item.children);
+ if (childResult) {
+ // 如果在子项中找到目标ID,返回子项的结果
+ return childResult;
+ }
+ }
+ }
+ // 如果没有找到目标ID,返回undefined
+ return undefined;
+ }
+
+ // 调用递归函数,从根层级开始查找
+ return traverse(array);
+}
\ No newline at end of file
diff --git a/src/utils/debounce.js b/src/utils/debounce.js
new file mode 100644
index 0000000..79fb409
--- /dev/null
+++ b/src/utils/debounce.js
@@ -0,0 +1,19 @@
+export default {
+ data() {
+ return {
+ debounceTimer: null,
+ }
+ },
+ methods: {
+ // 按钮防抖节流
+ debounceMethods(func, ...args) {
+ let context = this;
+ if (this.debounceTimer) clearTimeout(this.debounceTimer);
+ let callNow = !this.debounceTimer; //是否立即执行
+ this.debounceTimer = setTimeout(() => {
+ this.debounceTimer = null;
+ }, 3000)
+ if (callNow) func.apply(context, args)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/utils/exportExcel.js b/src/utils/exportExcel.js
new file mode 100644
index 0000000..7187e8a
--- /dev/null
+++ b/src/utils/exportExcel.js
@@ -0,0 +1,34 @@
+import axios from 'axios'
+
+const exportExcel = (url, params) => {
+ console.log('我是公共的方法' + url)
+ const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+ axios.post(process.env.VUE_APP_API_BASEURL + apiVersion + url, params, {
+ responseType: 'blob',
+ headers: {
+ // 'X-Token': getToken(),
+ 'Content-Type': 'application/json;charset=utf-8'
+ }
+ }).then(res => {
+ if (!res) {
+ this.$message.error('下载模板文件失败')
+ return false
+ }
+ const stream = res.data // 后端用stream返回Excel文件
+ const blob = new Blob([stream])
+ // 前端获取业务码,成功执行正常业务
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob) // 创建下载的链接
+ downloadElement.href = href
+ const timeStamp = new Date().toString()
+ const nameStr = decodeURI(escape(JSON.parse(res.headers['content-disposition'].split(';')[1].split('=')[1])))
+ downloadElement.download = nameStr // 下载后文件名
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 点击下载
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+ })
+}
+export {
+ exportExcel
+}
\ No newline at end of file
diff --git a/src/utils/iconfont.js b/src/utils/iconfont.js
new file mode 100644
index 0000000..a4cf0e8
--- /dev/null
+++ b/src/utils/iconfont.js
@@ -0,0 +1 @@
+!function(a){var l,h,t,i,c,C='',o=(o=document.getElementsByTagName("script"))[o.length-1].getAttribute("data-injectcss"),p=function(a,l){l.parentNode.insertBefore(a,l)};if(o&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function d(){c||(c=!0,t())}function e(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(e,50)}d()}l=function(){var a,l;(l=document.createElement("div")).innerHTML=C,C=null,(a=l.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",l=a,(a=document.body).firstChild?p(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),l()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(t=l,i=a.document,c=!1,e(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,d())})}(window);
\ No newline at end of file
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..4830c04
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,117 @@
+/**
+ * Created by PanJiaChen on 16/11/18.
+ */
+
+/**
+ * Parse the time to string
+ * @param {(Object|string|number)} time
+ * @param {string} cFormat
+ * @returns {string | null}
+ */
+export function parseTime(time, cFormat) {
+ if (arguments.length === 0 || !time) {
+ return null
+ }
+ const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if ((typeof time === 'string')) {
+ if ((/^[0-9]+$/.test(time))) {
+ // support "1548221490638"
+ time = parseInt(time)
+ } else {
+ // support safari
+ // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
+ time = time.replace(new RegExp(/-/gm), '/')
+ }
+ }
+
+ if ((typeof time === 'number') && (time.toString().length === 10)) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
+ const value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
+ return value.toString().padStart(2, '0')
+ })
+ return time_str
+}
+
+/**
+ * @param {number} time
+ * @param {string} option
+ * @returns {string}
+ */
+export function formatTime(time, option) {
+ if (('' + time).length === 10) {
+ time = parseInt(time) * 1000
+ } else {
+ time = +time
+ }
+ const d = new Date(time)
+ const now = Date.now()
+
+ const diff = (now - d) / 1000
+
+ if (diff < 30) {
+ return '刚刚'
+ } else if (diff < 3600) {
+ // less 1 hour
+ return Math.ceil(diff / 60) + '分钟前'
+ } else if (diff < 3600 * 24) {
+ return Math.ceil(diff / 3600) + '小时前'
+ } else if (diff < 3600 * 24 * 2) {
+ return '1天前'
+ }
+ if (option) {
+ return parseTime(time, option)
+ } else {
+ return (
+ d.getMonth() +
+ 1 +
+ '月' +
+ d.getDate() +
+ '日' +
+ d.getHours() +
+ '时' +
+ d.getMinutes() +
+ '分'
+ )
+ }
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function param2Obj(url) {
+ const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
+ if (!search) {
+ return {}
+ }
+ const obj = {}
+ const searchArr = search.split('&')
+ searchArr.forEach(v => {
+ const index = v.indexOf('=')
+ if (index !== -1) {
+ const name = v.substring(0, index)
+ const val = v.substring(index + 1, v.length)
+ obj[name] = val
+ }
+ })
+ return obj
+}
diff --git a/src/utils/lc.js b/src/utils/lc.js
new file mode 100644
index 0000000..964b226
--- /dev/null
+++ b/src/utils/lc.js
@@ -0,0 +1,409 @@
+import Request from '@/utils/request'
+import {
+ ElMessage,
+ ElLoading
+} from 'element-plus'
+import router from '../router'
+import axios from 'axios'
+// 提示内容框换行
+// const router = useRouter()
+// 项目任务基础数据
+export async function getProjectTasks_list(value) {
+ let tasksist = []
+ await new Request().get('project/data/base_task_data', {
+ init_data: value
+ }).then(res => {
+ if (res.data) {
+ res.data.forEach(it => {
+ tasksist.push({
+ label: it.name,
+ value: it.basetask_id
+ })
+ })
+ }
+ })
+ return tasksist
+}
+// 日志下拉数据
+export async function getProjectLog_list(value) {
+ let tasksist = []
+ await new Request().get('project/log/type').then(res => {
+ if (res.data) {
+ tasksist = res.data
+ }
+ })
+ return tasksist
+}
+// 用户列表
+export async function getUsers(userSet) {
+ let userdata = []
+ /* userSet: { page: 1, size: 5, nickname: '' } */
+ await new Request().showLoading(false).get('project/data/user', userSet).then(res => {
+ userdata = res.data
+ })
+ return userdata
+}
+// 分类列表
+export async function getCate(cateSet) {
+ let cateArry = []
+ await new Request().showLoading(false).get('project/data/cate', cateSet).then(res => {
+ cateArry = res.data
+ })
+ return cateArry
+}
+// 品牌列表
+export async function getBrand() {
+ let brandArry = []
+ await new Request().showLoading(false).get('project/data/brand').then(res => {
+ brandArry = res.data.data
+ })
+ return brandArry
+}
+// 项目任务基础数据
+export async function getTaskdata() {
+ let Taskdata = []
+ await new Request().showLoading(false).get('project/data/base_task_data').then(res => {
+ Taskdata = res.data
+ })
+ return Taskdata
+}
+// 项目资料(弹框)
+export async function getProjectfile(data) {
+ //data = {project_id:8,title:'',task_id:''}
+ let Projectfiledata = []
+ await new Request().showLoading(false).get('project/project/file', data).then(res => {
+ Projectfiledata = res.data
+ })
+ return Projectfiledata
+}
+// 新增编辑项目——保存
+export async function handleSaveProject(data, type) {
+ if (type !== 'edit') {
+ data.id = 0
+ }
+ await new Request().showLoading(false).post('project/project/edit', data).then(res => {
+ if (res.errno == 200) {
+ ElMessage({
+ type: 'success',
+ message: '保存成功'
+ })
+ if (type == 'add') {
+ router.push({
+ path: '/lcProject/projectMange/edit',
+ query: {
+ id: res.data.info.id,
+ math: Math.random()
+ }
+ })
+ }
+ } else {
+ ElMessage({
+ type: 'error',
+ message: res.errmsg
+ })
+ }
+ })
+}
+// 公共 - 基础信息 - 输出文件
+export function getBaseInfo(ori, rlist) {
+ const userlist = []
+ getUsers({
+ page: 1,
+ size: 9999999,
+ nickname: ''
+ }).then(res => {
+ if (res.errno == 200) {
+ res.data.forEach(it => {
+ userlist.push({
+ id: it.id,
+ name: it.nickname
+ })
+ })
+ } else {
+ ElMessage({
+ type: error,
+ message: res.errmsg
+ })
+ }
+ })
+ let newlist = JSON.parse(JSON.stringify(ori))
+ newlist.forEach(el => {
+ if (el.label == '任务负责人' || el.label == '任务审核人') {
+ el.lsit = userlist
+ }
+ for (const key in el) {
+ if (key == 'field' && rlist[el[key]]) {
+ el.value = rlist[el[key]]
+ }
+ }
+ });
+ return newlist
+}
+// 导出 -下载
+export function exportlist(sku_ids, project_id, type, exportTag, projectName, selfquery) {
+ var loadingInstance = ElLoading.service({
+ lock: true,
+ text: '此操作需要一段时间请耐心等待!',
+ background: 'rgba(0, 0, 0, 0.7)',
+ })
+ const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+ //导出添加搜索条件拼字段
+ var pathtest = ''
+ if (!exportTag) {
+ // 关于skubom的导出
+ pathtest = process.env.VUE_APP_API_BASEURL + apiVersion + '/project/sku/export_bom?sku_ids=' + sku_ids + '&project_id=' + project_id + '&type=' + type
+ } else {
+ //关于项目列表导出规格定义表
+ pathtest = process.env.VUE_APP_API_BASEURL + apiVersion + '/project/project/export_sku?project_ids=' + project_id + (project_id && project_id != '' && project_id != undefined && project_id.split(',').length > 1 ? '&type=zip' : '&type=excel')
+ }
+ if (!project_id) {
+ pathtest = process.env.VUE_APP_API_BASEURL + apiVersion + selfquery.path + '?page=' + selfquery.page + '&type=' + (selfquery.type ? selfquery.type : -1) + '&sku=' + selfquery.sku + '&name=' + selfquery.name + '&cate_id=' + selfquery.cate_id + '&status=' + (selfquery.status ? selfquery.status : -1) + '&ids=' + selfquery.ids
+ }
+ axios.get(pathtest, {
+ responseType: 'blob',
+ headers: {
+ 'Content-Type': 'application/json;charset=utf-8'
+ },
+ withCredentials: true
+ })
+ .then(res => {
+ if (res.data.type == 'application/json') {
+ const reader = new FileReader();
+ reader.readAsText(res.data, 'utf-8');
+ reader.onload = function () {
+ const msg = JSON.parse(reader.result);
+ //reader.result里面含报错信息
+ if (msg.errno == 400 || msg.errno == 201) {
+ ElMessage({
+ type: 'error',
+ message: msg.errmsg
+ })
+ }
+ }
+ } else {
+ const stream = res.data // 后端用stream返回zip文件
+ let blob = ''
+
+ if (!exportTag || exportTag == 'sku') {
+ if (exportTag == 'sku') {
+ blob = (project_id && project_id != '' && project_id != undefined && project_id.split(',').length > 1 ? new Blob([stream], {
+ type: "application/zip"
+ }) : new Blob([stream]))
+ } else {
+ blob = new Blob([stream])
+ }
+ } else {
+ blob = new Blob([stream], {
+ type: "application/zip"
+ })
+ }
+ // 前端获取业务码,成功执行正常业务
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob) // 创建下载的链接
+ downloadElement.href = href
+ if (!exportTag || exportTag == 'sku') {
+ const nameStr = (project_id && project_id != '' && project_id != undefined && project_id.split(',').length > 1 ? projectName : decodeURI(escape(JSON.parse(res.headers['content-disposition'].split(';')[1].split('=')[1]))))
+ downloadElement.download = nameStr
+ } else {
+ downloadElement.download = projectName
+ }
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 点击下载
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+ }
+ loadingInstance.close()
+ })
+}
+// 导出 -下载
+export function exportlistlog(searchdata, projectName) {
+ const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+ //导出添加搜索条件拼字段
+ var pathtest = ''
+ pathtest = process.env.VUE_APP_API_BASEURL + apiVersion + '/project/log/export?keywords=' + searchdata.keywords +
+ '&user_name=' + searchdata.user_name + '&type=' + searchdata.type + '&module=' + searchdata.module + '&start_time=' + searchdata.start_time +
+ '&end_time=' + searchdata.end_time + '&project_id=' + searchdata.project_id + '&task_id=' + searchdata.task_id
+ axios
+ .get(pathtest, {
+ responseType: 'blob',
+ headers: {
+ 'Content-Type': 'application/json;charset=utf-8'
+ },
+ withCredentials: true
+ })
+ .then(res => {
+ if (res.data.type == 'application/json') {
+ const reader = new FileReader();
+ reader.readAsText(res.data, 'utf-8');
+ reader.onload = function () {
+ const msg = JSON.parse(reader.result);
+ //reader.result里面含报错信息
+ if (msg.errno == 400 || msg.errno == 201) {
+ ElMessage({
+ type: 'error',
+ message: msg.errmsg
+ })
+ }
+ }
+ } else {
+ const stream = res.data // 后端用stream返回zip文件
+ const blob = new Blob([stream], {
+ type: "application/vnd.ms-excel;charset=utf-8"
+ })
+ // 前端获取业务码,成功执行正常业务
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob) // 创建下载的链接
+ downloadElement.href = href
+ downloadElement.download = projectName
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 点击下载
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+ }
+ })
+}
+// 项目资料
+export async function xmzldownload(URL, fileName) {
+ if (URL) {
+ let url = URL
+ const a = document.createElement('a')
+ a.href = url
+ a.download = fileName // 下载后文件名
+ a.style.display = 'none'
+ document.body.appendChild(a)
+ a.click() // 点击下载
+ document.body.removeChild(a) // 下载完成移除元素
+ }
+}
+// 下载模板model
+export function downloadMod(task_id, fileName) {
+ const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+ //导出添加搜索条件拼字段
+ var pathtest = ''
+ pathtest = process.env.VUE_APP_API_BASEURL + apiVersion + '/project/filetemp/download?task_id=' + task_id
+ axios.get(pathtest, {
+ responseType: 'blob',
+ headers: {
+ 'Content-Type': 'application/json;charset=utf-8'
+ },
+ withCredentials: true
+ }).then(res => {
+ if (res.data.type == 'application/json') {
+ const reader = new FileReader();
+ reader.readAsText(res.data, 'utf-8');
+ reader.onload = function () {
+ const msg = JSON.parse(reader.result);
+ //reader.result里面含报错信息
+ if (msg.errno == 400 || msg.errno == 201) {
+ ElMessage({
+ type: 'error',
+ message: msg.errmsg
+ })
+ }
+ }
+ } else {
+ const stream = res.data // 后端用stream返回zip文件
+ let blob = ''
+ blob = new Blob([stream], {
+ type: "application/zip"
+ })
+ // 前端获取业务码,成功执行正常业务
+ const downloadElement = document.createElement('a')
+ const href = window.URL.createObjectURL(blob) // 创建下载的链接
+ downloadElement.href = href
+ downloadElement.download = fileName
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 点击下载
+ document.body.removeChild(downloadElement) // 下载完成移除元素
+ window.URL.revokeObjectURL(href) // 释放掉blob对象
+ }
+ })
+}
+// 结构和包装bom的跳转查看
+export function goBomPage(rowInfo, val) {
+ let item = JSON.parse(JSON.stringify(rowInfo))
+ if (val == 'links_qd_bom_text') {
+ router.push({
+ path: '/lcProject/structureBom/index',
+ query: {
+ id: item.id,
+ project_id: item.project_id,
+ type: 'structure'
+ }
+ })
+ }
+ if (val == 'links_bz_bom_text') {
+ router.push({
+ path: '/lcProject/structureBom/index',
+ query: {
+ id: item.id,
+ project_id: item.project_id,
+ type: 'packing'
+ }
+ })
+ }
+}
+// 复制
+export function copystr(txt) {
+ if (txt) {
+ var input = document.createElement("input"); // 直接构建input
+ input.value = txt; // 设置内容
+ document.body.appendChild(input); // 添加临时实例
+ input.select(); // 选择实例内容
+ document.execCommand("Copy"); // 执行复制
+ document.body.removeChild(input); // 删除临时实例
+ ElMessage({
+ type: 'success',
+ message: '已复制'
+ })
+ }
+}
+// 公共 - 添加序号
+export function addOrderNumber(iArr) {
+ if (iArr && iArr.length > 0) {
+ let newArr = JSON.parse(JSON.stringify(iArr))
+ let num = 1
+ newArr.forEach(el => {
+ el.index = num++
+ });
+ return newArr
+ }
+}
+
+function getBlob(url, cb) {
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url, true);
+ xhr.responseType = "blob";
+ xhr.onload = function () {
+ if (xhr.status === 200) {
+ cb(xhr.response);
+ }
+ };
+ xhr.send();
+}
+
+function saveAs(blob, filename) {
+ if (window.navigator.msSaveOrOpenBlob) {
+ navigator.msSaveBlob(blob, filename);
+ } else {
+ var link = document.createElement("a");
+ var body = document.querySelector("body");
+
+ link.href = window.URL.createObjectURL(blob);
+ link.download = filename;
+
+ // fix Firefox
+ link.style.display = "none";
+ body.appendChild(link);
+
+ link.click();
+ body.removeChild(link);
+
+ window.URL.revokeObjectURL(link.href);
+ }
+}
+export function downloadzl(url, filename) {
+ getBlob(url, function (blob) {
+ saveAs(blob, filename);
+ })
+}
\ No newline at end of file
diff --git a/src/utils/lc_data.js b/src/utils/lc_data.js
new file mode 100644
index 0000000..d4ff2a0
--- /dev/null
+++ b/src/utils/lc_data.js
@@ -0,0 +1,1846 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 通知下单默认字段
+export const thenoticeTableData = [{
+ depart: '国内B2C',
+ checked: false,
+ depart_code: 'b2c',
+ user_id: ''
+ },
+ {
+ depart: '亚马逊',
+ checked: false,
+ depart_code: "amazon",
+ user_id: ''
+ },
+ {
+ depart: '长沙全球商城',
+ checked: false,
+ depart_code: "cs_global_mall",
+ user_id: ''
+ },
+ {
+ depart: '深圳全球商城',
+ checked: false,
+ depart_code: "sz_global_mall",
+ user_id: ''
+ },
+ {
+ depart: '国内渠道',
+ checked: false,
+ depart_code: "nation_channels",
+ user_id: ''
+ },
+ {
+ depart: '海外渠道',
+ checked: false,
+ depart_code: "overseas_channels",
+ user_id: ''
+ },
+ {
+ depart: '市场部',
+ checked: false,
+ depart_code: "market_depart",
+ user_id: ''
+ },
+ {
+ depart: 'F2B211/1688',
+ checked: false,
+ depart_code: "f2b211_1688",
+ user_id: ''
+ }
+]
+// 下单明细表格配置字段
+export const spsdmqKeylist = {
+ baseKeys: [{
+ name: '品牌',
+ key: 'brand',
+ value: false
+ }, {
+ name: '产品名称',
+ key: 'name',
+ value: false
+ }, {
+ name: '产品图片',
+ key: 'image',
+ value: false
+ }, {
+ name: '产品SPU',
+ key: 'spu',
+ value: false
+ }, {
+ name: '产品SKU',
+ key: 'sku',
+ value: false
+ }, {
+ name: '出厂价(TCO成本)',
+ key: 'mould_cost',
+ value: false
+ }, {
+ name: '规格参数',
+ key: 'params',
+ value: false
+ }],
+ natureKeys: [{
+ name: '产品材质',
+ key: 'material',
+ value: false
+ }, {
+ name: '协议',
+ key: 'protocol',
+ value: false
+ }, {
+ name: '速率',
+ key: 'rate',
+ value: false
+ }, {
+ name: '包装',
+ key: 'package',
+ value: false
+ }, {
+ name: '安规',
+ key: 'safe',
+ value: false
+ }, {
+ name: '接口(输入)',
+ key: 'interface',
+ value: false
+ }, {
+ name: '尺码/数量/长度',
+ key: 'other',
+ value: false
+ }, {
+ name: '产品颜色',
+ key: 'color',
+ value: false
+ }, {
+ name: '功能/版本',
+ key: 'version',
+ value: false
+ }, {
+ name: '输出接口',
+ key: 'output',
+ value: false
+ }, {
+ name: '69码',
+ key: 'code69',
+ value: false
+ }, {
+ name: '备料数量',
+ key: 'material_num',
+ value: false
+ }, {
+ name: '模具费(塑胶)',
+ key: 'mould_fare_sj',
+ value: false
+ }, {
+ name: '模具费(五金)',
+ key: 'mould_fare_wj',
+ value: false
+ }, {
+ name: '电子',
+ key: 'electron_fare',
+ value: false
+ }, {
+ name: '结构/本体',
+ key: 'structure_fare',
+ value: false
+ }, {
+ name: '电源',
+ key: 'power_fare',
+ value: false
+ }, {
+ name: '线材',
+ key: 'line_fare',
+ value: false
+ }, {
+ name: '包材',
+ key: 'package_fare',
+ value: false
+ }, {
+ name: '辅料/配件',
+ key: 'parts_fare',
+ value: false
+ }, {
+ name: '硬盘/运费/其他',
+ key: 'other_fare',
+ value: false
+ }, {
+ name: '加工费用',
+ key: 'process_fare',
+ value: false
+ }, {
+ name: '认证/测试费用',
+ key: 'auth_test_fare',
+ value: false
+ }, {
+ name: '总成本(未摊模具)',
+ key: 'total_cost',
+ value: false
+ }, {
+ name: '物料成本价',
+ key: 'tco_cost',
+ value: false
+ }, {
+ name: 'TCO毛利率',
+ key: 'tco_rate',
+ value: false
+ }, {
+ name: '代理商价',
+ key: 'agent_price',
+ value: false
+ }, {
+ name: '渠道毛利润率',
+ key: 'channel_rate',
+ value: false
+ }, {
+ name: '经销价',
+ key: 'distribution_price',
+ value: false
+ }, {
+ name: '经销商毛利率',
+ key: 'distribution_rate',
+ value: false
+ }, {
+ name: '建议零售价',
+ key: 'retail_price',
+ value: false
+ }, {
+ name: '最低零售价',
+ key: 'min_retail_price',
+ value: false
+ }, {
+ name: 'B2C毛利润率',
+ key: 'b2c_rate',
+ value: false
+ }, {
+ name: '国内B2C',
+ key: 'b2c',
+ value: false
+ }, {
+ name: '亚马逊',
+ key: 'amazon',
+ value: false
+ }, {
+ name: '长沙全球商城',
+ key: 'cs_global_mall',
+ value: false
+ }, {
+ name: '深圳全球商城',
+ key: 'sz_global_mall',
+ value: false
+ }, {
+ name: '国内渠道',
+ key: 'nation_channels',
+ value: false
+ }, {
+ name: '海外渠道',
+ key: 'overseas_channels',
+ value: false
+ }, {
+ name: '市场部',
+ key: 'market_depart',
+ value: false
+ }, {
+ name: 'F2B211/1688',
+ key: 'f2b211_1688',
+ value: false
+ }, {
+ name: '总计',
+ key: 'zj',
+ value: false
+ }, {
+ name: '备注',
+ key: 'remark',
+ value: false
+ }]
+}
+export const spsdmqKeylistMr = {
+ baseKeys: [{
+ name: '品牌',
+ key: 'brand',
+ value: false
+ }, {
+ name: '产品名称',
+ key: 'name',
+ value: false
+ }, {
+ name: '产品图片',
+ key: 'image',
+ value: false
+ }, {
+ name: '产品SPU',
+ key: 'spu',
+ value: false
+ }, {
+ name: '产品SKU',
+ key: 'sku',
+ value: false
+ }, {
+ name: '出厂价(TCO成本)',
+ key: 'mould_cost',
+ value: false
+ }, {
+ name: '规格参数',
+ key: 'params',
+ value: false
+ }],
+ natureKeys: [{
+ name: '产品材质',
+ key: 'material',
+ value: false
+ }, {
+ name: '协议',
+ key: 'protocol',
+ value: false
+ }, {
+ name: '速率',
+ key: 'rate',
+ value: false
+ }, {
+ name: '包装',
+ key: 'package',
+ value: false
+ }, {
+ name: '安规',
+ key: 'safe',
+ value: false
+ }, {
+ name: '接口(输入)',
+ key: 'interface',
+ value: false
+ }, {
+ name: '尺码/数量/长度',
+ key: 'other',
+ value: false
+ }, {
+ name: '产品颜色',
+ key: 'color',
+ value: false
+ }, {
+ name: '功能/版本',
+ key: 'version',
+ value: false
+ }, {
+ name: '输出接口',
+ key: 'output',
+ value: false
+ }, {
+ name: '69码',
+ key: 'code69',
+ value: false
+ }, {
+ name: '备料数量',
+ key: 'material_num',
+ value: false
+ }, {
+ name: '模具费(塑胶)',
+ key: 'mould_fare_sj',
+ value: false
+ }, {
+ name: '模具费(五金)',
+ key: 'mould_fare_wj',
+ value: false
+ }, {
+ name: '电子',
+ key: 'electron_fare',
+ value: false
+ }, {
+ name: '结构/本体',
+ key: 'structure_fare',
+ value: false
+ }, {
+ name: '电源',
+ key: 'power_fare',
+ value: false
+ }, {
+ name: '线材',
+ key: 'line_fare',
+ value: false
+ }, {
+ name: '包材',
+ key: 'package_fare',
+ value: false
+ }, {
+ name: '辅料/配件',
+ key: 'parts_fare',
+ value: false
+ }, {
+ name: '硬盘/运费/其他',
+ key: 'other_fare',
+ value: false
+ }, {
+ name: '加工费用',
+ key: 'process_fare',
+ value: false
+ }, {
+ name: '认证/测试费用',
+ key: 'auth_test_fare',
+ value: false
+ }, {
+ name: '总成本(未摊模具)',
+ key: 'total_cost',
+ value: false
+ }, {
+ name: '物料成本价',
+ key: 'tco_cost',
+ value: false
+ }, {
+ name: 'TCO毛利率',
+ key: 'tco_rate',
+ value: false
+ }, {
+ name: '代理商价',
+ key: 'agent_price',
+ value: false
+ }, {
+ name: '渠道毛利润率',
+ key: 'channel_rate',
+ value: false
+ }, {
+ name: '经销价',
+ key: 'distribution_price',
+ value: false
+ }, {
+ name: '经销商毛利率',
+ key: 'distribution_rate',
+ value: false
+ }, {
+ name: '建议零售价',
+ key: 'retail_price',
+ value: false
+ }, {
+ name: '最低零售价',
+ key: 'min_retail_price',
+ value: false
+ }, {
+ name: 'B2C毛利润率',
+ key: 'b2c_rate',
+ value: false
+ }]
+}
+export const zdlist = [{
+ key: 'indxs',
+ value: true
+}, {
+ key: 'seq',
+ value: true
+}, {
+ key: 'brand',
+ value: true
+}, {
+ key: 'name',
+ value: true
+}, {
+ key: 'image',
+ value: true
+}, {
+ key: 'spu',
+ value: true
+}, {
+ key: 'sku',
+ value: true
+}, {
+ key: 'params',
+ value: true
+}, {
+ key: 'jgbom',
+ value: true
+}, {
+ key: 'bzbom',
+ value: true
+}, {
+ key: 'material',
+ value: true
+}, {
+ key: 'protocol',
+ value: true
+}, {
+ key: 'rate',
+ value: true
+}, {
+ key: 'package',
+ value: true
+}, {
+ key: 'safe',
+ value: true
+}, {
+ key: 'interface',
+ value: true
+}, {
+ key: 'other',
+ value: true
+}, {
+ key: 'color',
+ value: true
+}, {
+ key: 'version',
+ value: true
+}, {
+ key: 'output',
+ value: true
+}, {
+ key: 'code69',
+ value: true
+}, {
+ key: 'material_num',
+ value: true
+}, {
+ key: 'order_num',
+ value: true
+}, {
+ key: 'mould_fare_sj',
+ value: true
+}, {
+ key: 'mould_fare_wj',
+ value: true
+}, {
+ key: 'electron_fare',
+ value: true
+}, {
+ key: 'structure_fare',
+ value: true
+}, {
+ key: 'power_fare',
+ value: true
+}, {
+ key: 'line_fare',
+ value: true
+}, {
+ key: 'package_fare',
+ value: true
+}, {
+ key: 'parts_fare',
+ value: true
+}, {
+ key: 'other_fare',
+ value: true
+}, {
+ key: 'process_fare',
+ value: true
+}, {
+ key: 'auth_test_fare',
+ value: true
+}, {
+ key: 'total_cost',
+ value: true
+}, {
+ key: 'mould_cost',
+ value: true
+}, {
+ key: 'tco_cost',
+ value: true
+}, {
+ key: "tco_rate",
+ value: true
+}, {
+ key: "agent_price",
+ value: true
+}, {
+ key: 'channel_rate',
+ value: true
+}, {
+ key: 'distribution_price',
+ value: true
+}, {
+ key: 'distribution_rate',
+ value: true
+}, {
+ key: 'retail_price',
+ value: true
+}, {
+ key: 'min_retail_price',
+ value: true
+}, {
+ key: 'b2c_rate',
+ value: true
+}]
+export const addBomitem = {
+ id: 0,
+ bom_code: '',
+ bom_name: '',
+ bom_desc: '',
+ molecule: '',
+ denominator: '',
+ total_price: '',
+ price: '',
+ remark: ''
+}
+export const addbzljitem = {
+ id: 0,
+ name: '',
+ bom_code: '',
+ bom_name: '',
+ spec: '',
+ molecule: 1,
+ denominator: 1,
+ price: '',
+ total_price: '',
+ remark: ''
+}
+export const addggdyitem = {
+ id: 0,
+ project_id: null,
+ name: "",
+ image: "",
+ spu: "",
+ sku: "",
+ color: "",
+ material: "",
+ size: "",
+ output: "",
+ input: "",
+ line: "",
+ other: "",
+ protocol: "",
+ rate: "",
+ package: "",
+ safe: "",
+ Interface: "",
+ version: "",
+ material_num: "",
+ order_num: "",
+ mould_fare_sj: "",
+ mould_fare_wj: "",
+ electron_fare: "",
+ structure_fare: "",
+ line_fare: "",
+ package_fare: "",
+ parts_fare: "",
+ process_fare: "",
+ auth_test_fare: "",
+ total_cost: "",
+ mould_cost: "",
+ tco_cost: "",
+ tco_rate: "",
+ agent_price: "",
+ channel_rate: "",
+ distribution_price: "",
+ retail_price: "",
+ min_retail_price: "",
+ b2c_rate: "",
+ _isNew: true
+}
+export const ggdykeytable = [{
+ name: '勾选',
+ field: 'indxs'
+ }, {
+ name: '序号',
+ field: 'seq'
+ }, {
+ name: '品牌',
+ field: 'brand'
+ },
+ {
+ name: '产品名称',
+ field: 'name'
+ }, {
+ name: '产品图片',
+ field: 'image'
+ }, {
+ name: '产品SPU',
+ field: 'spu'
+ }, {
+ name: '产品规格型号(SKU)',
+ field: 'sku'
+ }, {
+ name: '规格参数',
+ field: 'params'
+ }, {
+ name: '结构bom',
+ field: 'jgbom'
+ }, {
+ name: '结构bom',
+ field: 'bzbom'
+ }, {
+ name: '产品材质',
+ field: 'material'
+ }, {
+ name: '协议',
+ field: 'protocol'
+ }, {
+ name: '速率',
+ field: 'rate'
+ }, {
+ name: '包装',
+ field: 'package'
+ }, {
+ name: '安规',
+ field: 'safe'
+ }, {
+ name: '接口(输入)',
+ field: 'interface'
+ }, {
+ name: '尺码/数量/长度',
+ field: 'other'
+ }, {
+ name: '产品颜色',
+ field: 'color'
+ }, {
+ name: '功能/版本',
+ field: 'version'
+ }, {
+ name: '输出接口',
+ field: 'output'
+ }, {
+ name: '69码',
+ field: 'code69'
+ }, {
+ name: '备料数量',
+ field: 'material_num'
+ }, {
+ name: '首批订单数量',
+ field: 'order_num'
+ }, {
+ name: '模具费(塑胶)',
+ field: 'mould_fare_sj'
+ }, {
+ name: '模具费(五金)',
+ field: 'mould_fare_wj'
+ }, {
+ name: '电子',
+ field: 'electron_fare'
+ }, {
+ name: '结构/本体',
+ field: 'structure_fare'
+ }, {
+ name: '电源',
+ field: 'power_fare'
+ }, {
+ name: '线材',
+ field: 'line_fare'
+ }, {
+ name: '包材',
+ field: 'package_fare'
+ }, {
+ name: '辅料/配件',
+ field: 'parts_fare'
+ }, {
+ name: '硬盘/运费/其他',
+ field: 'other_fare'
+ }, {
+ name: '加工费用',
+ field: 'process_fare'
+ }, {
+ name: '认证/测试费用',
+ field: 'auth_test_fare'
+ }, {
+ name: '总成本(未摊模具)',
+ field: 'total_cost'
+ }, {
+ name: '出厂价(TCO成本)',
+ field: 'mould_cost'
+ }, {
+ name: '物料成本价',
+ field: 'tco_cost'
+ }, {
+ name: 'TC0毛利率',
+ field: 'tco_rate'
+ }, {
+ name: '代理商价',
+ field: 'agent_price'
+ }, {
+ name: '渠道毛利润率',
+ field: 'channel_rate'
+ }, {
+ name: '经销价',
+ field: 'distribution_price'
+ }, {
+ name: '经销商毛利率',
+ field: 'distribution_rate'
+ }, {
+ name: '建议零售价',
+ field: 'retail_price'
+ }, {
+ name: '最低零售价',
+ field: 'min_retail_price'
+ }, {
+ name: 'B2C毛利润率',
+ field: 'b2c_rate'
+ }
+]
+// 没有权限不可以看
+export const ggdykeytable1 = [{
+ name: '勾选',
+ field: 'indxs'
+ }, {
+ name: '序号',
+ field: 'seq'
+ }, {
+ name: '品牌',
+ field: 'brand'
+ },
+ {
+ name: '产品名称',
+ field: 'name'
+ }, {
+ name: '产品图片',
+ field: 'image'
+ }, {
+ name: '产品SPU',
+ field: 'spu'
+ }, {
+ name: '产品规格型号(SKU)',
+ field: 'sku'
+ }, {
+ name: '规格参数',
+ field: 'params'
+ }, {
+ name: '结构bom',
+ field: 'jgbom'
+ }, {
+ name: '结构bom',
+ field: 'bzbom'
+ }, {
+ name: '产品材质',
+ field: 'material'
+ }, {
+ name: '协议',
+ field: 'protocol'
+ }, {
+ name: '速率',
+ field: 'rate'
+ }, {
+ name: '包装',
+ field: 'package'
+ }, {
+ name: '安规',
+ field: 'safe'
+ }, {
+ name: '接口(输入)',
+ field: 'interface'
+ }, {
+ name: '尺码/数量/长度',
+ field: 'other'
+ }, {
+ name: '产品颜色',
+ field: 'color'
+ }, {
+ name: '功能/版本',
+ field: 'version'
+ }, {
+ name: '输出接口',
+ field: 'output'
+ }, {
+ name: '69码',
+ field: 'code69'
+ }, {
+ name: '备料数量',
+ field: 'material_num'
+ }, {
+ name: '首批订单数量',
+ field: 'order_num'
+ }, {
+ name: '出厂价(TCO成本)',
+ field: 'mould_cost'
+ }, {
+ name: '代理商价',
+ field: 'agent_price'
+ }, {
+ name: '渠道毛利润率',
+ field: 'channel_rate'
+ }, {
+ name: '经销价',
+ field: 'distribution_price'
+ }, {
+ name: '经销商毛利率',
+ field: 'distribution_rate'
+ }, {
+ name: '建议零售价',
+ field: 'retail_price'
+ }, {
+ name: '最低零售价',
+ field: 'min_retail_price'
+ }, {
+ name: 'B2C毛利润率',
+ field: 'b2c_rate'
+ }
+]
+// 基础信息-项目编辑新增用
+export const infoForm = {
+ name: '', //项目名称
+ leader_user_id: '', // 项目负责人
+ status: '', //项目状态
+ level: 1, // 项目优先级
+ code: '', // 项目代码
+ image: '', // 项目图片
+ bh: '', // 项目编号
+ cate_id: '', // 产品分类
+ plan_start_time: '', // 项目预计开始日期
+ plan_end_time: '', // 项目预计结束日期
+ start_time: '', // 项目开始日期
+ end_time: '', // 项目结束日期
+ product_time: '', // 项目量产日期
+ online_time: '', // 项目上架日期
+ brand_ids: [], // 项目包含品牌
+ type: 1 // 项目类型
+}
+// 基础信息-任务通用
+export const taskForm = {
+ sn: '', //项目名称
+ project_sn: '',
+ name: '', // 项目负责人
+ status: '', //项目状态
+ leader_user_id: '', // 项目优先级
+ reviewer_user_id: '', // 项目代码
+ task_status_text: '', // 项目图片
+ examine_status: '', // 项目编号
+ examine_status_text: '',
+ project_id: '', // 产品分类
+ project_sn: '',
+ project_name: '', // 项目预计开始日期
+ plan_start_time: '',
+ plan_start_time_text: '', // 项目预计结束日期
+ plan_end_time_text: '', // 项目开始日期
+ plan_end_time: '',
+ required_time_text: '', // 要求完成时间
+ end_time_text: '', // 项目结束日期
+}
+// 物料详情——物料报价表-表头
+export const wlbjblisthead = [{
+ type: 'text',
+ field: 'bom_code',
+ title: '物料编码',
+ width: '300',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'bom_name',
+ title: '物料名称',
+ width: '300',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'spec',
+ title: '物料规格号',
+ width: '',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'price',
+ title: '单价(¥)',
+ width: '300',
+ align: 'center',
+ },
+]
+// 物料详情——物料报价表-初始表格默认数据
+export const wlbjbdefaultRow = [{
+ bom_name: '',
+ bom_code: '',
+ spec: '',
+ price: ''
+}, ]
+// 物料详情——物料报价表-初始表格默认数据
+export const wlbjb_ggdyb_bts = [{
+ name: '需要显示列',
+ type: 'popup',
+ style_self: 'btn'
+ },
+ {
+ name: '导入SKU',
+ type: 'other',
+ style_self: 'btn'
+ },
+ {
+ name: '导出SKU',
+ type: 'other',
+ style_self: 'btn'
+ },
+ {
+ name: '导入结构BOM表',
+ type: 'other',
+ style_self: 'btn'
+ },
+ {
+ name: '导出结构BOM表',
+ type: 'other',
+ style_self: 'btn'
+ },
+]
+// 任务列表的基础信息
+export const rwBaseInfos = [{
+ label: '任务编码',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'sn'
+ },
+ {
+ label: '任务名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'name'
+ },
+ {
+ label: '任务负责人',
+ type: 'sel',
+ value: null,
+ field: 'leader_user_id',
+ list: [],
+ },
+ {
+ label: '任务审核人',
+ type: 'sel',
+ value: null,
+ field: 'reviewer_user_id',
+ list: [],
+ },
+ {
+ label: '业务状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'task_status',
+ },
+ {
+ label: '任务审核状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'examine_status',
+ },
+ {
+ label: '所属项目编号',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_id',
+ },
+ {
+ label: '所属项目名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_name',
+ },
+ {
+ label: '预计开始',
+ type: 'date',
+ value: [],
+ field: 'plan_start_time_text'
+ },
+ {
+ label: '预计完成',
+ type: 'date',
+ value: [],
+ field: 'plan_end_time_text'
+ },
+ {
+ label: '完成日期',
+ type: 'date_disable',
+ value: [],
+ field: 'end_time_text',
+ },
+]
+//项目列表的搜索条件,为了方便重置
+export const projectMangeSearch_data = {
+ name: '', //项目名称
+ leader_user_name: '', //项目负责人
+ status: 0, //项目状态:0=全部,10=已保存,20=暂停,30=进行中,40=结束
+ task_id: '', //当前任务
+ plan_start_time: '', //项目预计开始日期
+ plan_end_time: '', //项目预计结束日期
+ level: '', //项目优先级:1=正常,2=优先
+ start_time: '', //开始时间
+ end_time: '', //结束时间
+ online_time: '', //上架时间
+ product_time: '', //量产时间
+ my: 1, //我的待办 1是 0否
+ total: 0,
+ size: 50,
+ page: 1,
+}
+//项目日志列表的搜索条件,为了方便重置
+export const projectLogSearch_data = {
+ keywords: '', //项目名称或者项目编号
+ user_name: '', //变更人
+ type: '', //变更类型:10=项目新增
+ module: '', //变更对象: 项目信息
+ start_time: '',
+ end_time: '',
+ thetime: [],
+ total: 0,
+ size: 50,
+ page: 1,
+}
+//项目列表的搜索条件,为了方便重置
+export const taskMangeSearch_data = {
+ sn: '', //项目名称
+ name: '', //项目负责人
+ leader_user_name: '', //状态
+ task_status: '-1', //业务状态:-1=全部,0=排期等待,10=进行中,20=暂停,30=已结束
+ examine_status: '-1', //审核状态:-1=全部,0=未提交,10=未审核,20=未下推,30=已结束
+ project_name: '', //项目预计开始日期
+ end_time: '', //项目预计结束日期
+ plan_start_time: '', //项目优先级:1=正常,2=优先
+ my: 1, //我的待办 1是 0否
+ size: 50,
+ page: 1,
+}
+// 项目新增/编辑_任务信息列表_初始数据(不给表格渲染错误_
+export const tasklist = [{
+ index: 1,
+ project_id: '',
+ name: '',
+ image: '',
+ spu: '',
+ sku: '',
+ links_qd_bom: '',
+ links_bz_bom: '',
+ material: '',
+ protocol: '',
+ rate: '',
+ package: '',
+ safe: '',
+ interface: '',
+ other: '',
+ color: '',
+ version: '',
+ output: '',
+ material_num: '',
+ order_num: '',
+ mould_fare_sj: '',
+ mould_fare_wj: '',
+ electron_fare: '',
+ structure_fare: '',
+ line_fare: '',
+ package_fare: '',
+ parts_fare: '',
+ process_fare: '',
+ auth_test_fare: '',
+ total_cost: '',
+ mould_cost: '',
+ tco_cost: '',
+ tco_rate: '',
+ agent_price: '',
+ channel_rate: '',
+ distribution_price: '',
+ test: '',
+ retail_price: '',
+ min_retail_price: '',
+ b2c_rate: '',
+}, ]
+// 项目新增/编辑_规格定义表_初始数据(不给表格渲染错误_
+export const skulist = [{
+ id: 1,
+ index: 0,
+ project_id: 8, //项目id
+ name: 'M.2双协议硬盘盒', // 产品名称
+ image: '', //产品图片
+ spu: '', //产品SPU
+ links_qd_bom: '', // 结构BOM清单
+ links_bz_bom: '', // 包装BOM清单
+ material: '', // 包装BOM清单
+ protocol: '', //协议
+ rate: '', //速率
+ package: '', //包装
+ safe: '', //安规
+ interface: '', //接口(输入)
+ other: '', //尺码/数量/长度
+ color: '', //产品颜色
+ version: '', //功能/版本
+ output: '', //输出接口
+ material_num: '', //备料数量
+ order_num: '', //首批订单数量
+ mould_fare_sj: '', //模具费(塑胶)
+ mould_fare_wj: '', //模具费(五金)
+ electron_fare: '', //电子
+ structure_fare: '', // 结构
+ line_fare: '', //线材
+ package_fare: '', //包材
+ parts_fare: '', //配件
+ process_fare: '', //加工费用
+ auth_test_fare: '', //'认证/测试费用
+ total_cost: '', //总成本(未摊模具)
+ mould_cost: '', //含摊模具成本(工厂出厂成本)
+ tco_cost: '', //TCO成本
+ tco_rate: '', //TCO毛利润率
+ agent_price: '', //代理商价
+ channel_rate: '', //渠道毛利润率
+ distribution_price: '', //经销价
+ distribution_price: '', // 经销商毛利率 (没有)
+ retail_price: '', //建议零售价
+ min_retail_price: '', //最低零售价
+ b2c_rate: '', //B2C毛利润率
+}, ]
+// 项目新增/编辑_任务信息列表_初始数据(不给表格渲染错误_
+export const prlisttopBt = [{
+ name: '保存',
+ type: 'defalut',
+ methodName: 'saveProject'
+ },
+ {
+ name: '继续项目',
+ type: 'defalut',
+ methodName: 'goOnPrijectbt'
+ },
+ {
+ name: '暂停',
+ type: 'defalut',
+ methodName: 'stopProjectbt'
+ },
+ {
+ name: '结束',
+ type: 'defalut',
+ methodName: 'closeProjectbt'
+ },
+ {
+ name: '项目资料',
+ type: 'defalut',
+ methodName: 'projectInfobt'
+ },
+ {
+ name: '下推',
+ type: 'defalut',
+ methodName: 'pushdown'
+ },
+ {
+ name: '日志',
+ type: 'defalut',
+ methodName: 'logbt'
+ },
+]
+export const addprlisttopBt = [{
+ name: '保存',
+ type: 'defalut',
+ methodName: 'saveProject'
+ },
+ // {
+ // name: '项目资料',
+ // type: 'defalut',
+ // methodName: 'projectInfobt'
+ // },
+ // {
+ // name: '下推',
+ // type: 'defalut',
+ // methodName: 'pushdown'
+ // },
+]
+// 项目新增/编辑_任务信息列表_表头
+export const pr_listHeader = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '36'
+ },
+ {
+ type: 'img',
+ field: 'image',
+ title: '项目图片',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'router',
+ field: 'name',
+ title: '项目名称',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'leader_user_name',
+ title: '项目负责人',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'task_text',
+ title: '当前任务及状态',
+ width: '150',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'next_task',
+ title: '即将进行',
+ width: '170',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'status_text',
+ title: '项目状态',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text_color_row',
+ field: 'level_text',
+ title: '项目优先级',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'plan_start_time',
+ title: '项目预计开始日期',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'plan_end_time',
+ title: '项目预计结束日期',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'end_time',
+ title: '项目开始日期',
+ width: '110',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'product_time',
+ title: '项目量产日期',
+ width: '110',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'online_time',
+ title: '项目上架日期',
+ width: '110',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'end_time',
+ title: '项目结束日期',
+ width: '133',
+ align: 'center',
+ },
+ {
+ type: 'pushDown',
+ field: 'pushDown',
+ title: '操作',
+ width: '120',
+ align: 'center',
+ },
+]
+// 项目新增/编辑_任务信息列表_表头
+export const pr_defaultRow = [{
+ id: 0,
+ sn: '',
+ code: '',
+ image: '',
+ name: '',
+ leader_user_name: '',
+ task_text: '',
+ next_task: '',
+ status_text: '',
+ level: '',
+ plan_start_time: '',
+ plan_end_time: '',
+ end_time: '',
+ product_time: '',
+ online_time: '',
+ end_time: '',
+ pushDown: ''
+}, ]
+// 项目新增/编辑_任务信息列表_表头
+export const rw_listHeader = [{
+ type: 'text',
+ field: 'name',
+ title: '任务名称',
+ width: '200',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'leader_user_name',
+ title: '任务负责人',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'editable_sel',
+ field: 'reviewer_user_id',
+ title: '任务审核人',
+ width: '145',
+ align: 'center',
+ beforeStr: 'mt',
+ },
+ {
+ type: 'text',
+ field: 'committed_step_text',
+ title: '是否关键步骤',
+ width: '145',
+ align: 'left',
+ }, {
+ type: 'text',
+ field: 'task_status_text',
+ title: '任务审核状态',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'plan_start_time_text',
+ title: '预计开始时间',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'plan_end_time_text',
+ title: '预计结束时间',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'start_time_text',
+ title: '开始时间',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'end_time_text',
+ title: '结束时间',
+ width: '145',
+ align: 'left',
+ },
+ {
+ type: 'text',
+ field: 'msg',
+ title: '驳回原因 ',
+ width: '',
+ align: 'left',
+ },
+]
+// 项目新增/编辑_规格定义_表头
+export const ggdy_listHeader = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'index',
+ field: 'index',
+ title: '序号',
+ width: '50',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'name',
+ title: '产品名称',
+ width: '200',
+ align: 'center',
+ },
+ {
+ type: 'img_upload',
+ field: 'image',
+ title: '产品图片',
+ width: '100',
+ align: 'center',
+ upload_url: baseUrl + 'project/upload/file',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'spu',
+ title: '产品SPU',
+ width: '200',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sku',
+ title: '产品规格型号(SKU)',
+ width: '200',
+ align: 'center',
+ },
+ {
+ type: 'router',
+ field: 'links_qd_bom_text',
+ title: '结构BOM清单',
+ width: '120',
+ align: 'center',
+ },
+ {
+ type: 'router',
+ field: 'links_bz_bom_text',
+ title: '包装BOM清单',
+ width: '120',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'material',
+ title: '产品材质',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'protocol',
+ title: '协议',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'rate',
+ title: '速率',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_sel',
+ field: 'package',
+ title: '包装',
+ width: '100',
+ align: 'center',
+ beforeStr: 'bz',
+ },
+ {
+ type: 'editable_sel',
+ field: 'safe',
+ title: '安规',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ag',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'interface',
+ title: '接口(输入)',
+ width: '140',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'other',
+ title: '尺码/数量/长度',
+ width: '160',
+ align: 'center',
+ },
+ {
+ type: 'editable_sel',
+ field: 'color',
+ title: '产品颜色',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ys',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'version',
+ title: '功能/版本',
+ width: '120',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'output',
+ title: '输出接口',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'material_num',
+ title: '备料数量',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'order_num',
+ title: '首批订单数量',
+ width: '140',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_sj',
+ title: '模具费(塑胶)',
+ width: '140',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_wj',
+ title: '模具费(五金)',
+ width: '140',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'electron_fare',
+ title: '电子',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'structure_fare',
+ title: '结构',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'line_fare',
+ title: '线材',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'package_fare',
+ title: '包材',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'parts_fare',
+ title: '配件',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'process_fare',
+ title: '加工费用',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'auth_test_fare',
+ title: '认证/测试费用',
+ width: '140',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'total_cost',
+ title: '总成本(未摊模具)',
+ width: '160',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_cost',
+ title: '出厂价(TCO成本)',
+ width: '240',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'tco_cost',
+ title: '物料成本价',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'text_count',
+ field: 'tco_rate',
+ title: 'TCO毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'tco_cost|-|mould_cost|/|tco_cost',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'agent_price',
+ title: '代理商价',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'text_count',
+ field: 'channel_rate',
+ title: '渠道毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'agent_price|-|tco_cost|/|agent_price',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'distribution_price',
+ title: '经销价',
+ width: '100',
+ align: 'center',
+ },
+ {
+ type: 'text_count',
+ field: 'distribution_rate',
+ title: '经销商毛利率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|distribution_price|/|min_retail_price',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'retail_price',
+ title: '建议零售价',
+ width: '120',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'min_retail_price',
+ title: '最低零售价',
+ width: '120',
+ align: 'center',
+ },
+ {
+ type: 'text_count',
+ field: 'b2c_rate',
+ title: 'B2C毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|tco_cost|/|min_retail_price',
+ },
+]
+// 产品资料-表格头部(公共)
+export const cpPPT_listHeader = [{
+ type: 'text',
+ field: 'title',
+ title: '文件名称',
+ width: '412',
+ align: 'center',
+ },
+ {
+ type: 'text',
+ field: 'create_time',
+ title: '上传时间',
+ width: '412',
+ align: 'center',
+ },
+ {
+ type: 'operation',
+ field: 'operation',
+ title: '操作',
+ width: '412',
+ align: 'center',
+ },
+ {
+ type: 'editable_ipt',
+ field: 'remark',
+ title: '备注',
+ width: '',
+ align: 'center',
+ },
+]
+// 产品资料 表格 - 规格定价 - 默认值
+export const cpPPT_defaultVal = []
+// 产品资料 表格 - 规格定价 - 表头按钮
+export const cpppt_headerBtns = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ // {name:'上传文件',type:'upload',style_self:'btn'},
+ // {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+ {
+ name: '下载模板',
+ type: 'download',
+ style_self: 'btn'
+ },
+ {
+ name: '文件上传',
+ type: 'upload_file',
+ style_self: 'btn_upload',
+ upload_url: baseUrl + 'project/upload/file',
+ },
+ {
+ name: '填写共享盘链接',
+ type: 'write_links',
+ style_self: 'btn'
+ },
+]
+
+// 包装设计表头
+export const bzsjdata_listHeader = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ title: '盒型选择',
+ type: 'text',
+ field: 'name',
+ width: '128',
+ align: 'left',
+ },
+ {
+ title: '产品图片',
+ type: 'img',
+ field: 'image',
+ width: '128',
+ align: 'center',
+ },
+ {
+ title: '包装形式',
+ type: 'text',
+ field: 'type',
+ width: '128',
+ align: 'left',
+ },
+ {
+ title: '包装结构组成',
+ type: 'text',
+ field: 'structure',
+ width: '280',
+ align: 'left',
+ },
+ {
+ title: '包装尺寸(不含挂钩尺寸)',
+ type: 'text',
+ field: 'size',
+ width: '280',
+ align: 'left',
+ },
+ {
+ title: '运输外箱尺寸',
+ type: 'text',
+ field: 'transport_size',
+ width: '220',
+ align: 'left',
+ },
+ {
+ title: '用量 (分子)',
+ type: 'text',
+ field: 'molecule',
+ width: '75',
+ align: 'center',
+ },
+ {
+ title: '用量 (分母)',
+ type: 'text',
+ field: 'denominator',
+ width: '75',
+ align: 'left',
+ },
+ {
+ title: '单价 (¥)',
+ type: 'text',
+ field: 'price',
+ width: '70',
+ align: 'left',
+ },
+ {
+ title: '备注',
+ type: 'text',
+ field: 'remark',
+ width: '',
+ align: 'left'
+ },
+]
+// 包装设计表头默认数据
+export const bzsjdata_defaultVal = [{
+ name: '',
+ image: '',
+ type: '',
+ structure: '',
+ size: '',
+ transport_size: '',
+ molecule: '',
+ denominator: '',
+ price: '',
+ remark: '',
+}, ]
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_bzljxz_json.js b/src/utils/lc_jx_utils/lc_bzljxz_json.js
new file mode 100644
index 0000000..79e3852
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_bzljxz_json.js
@@ -0,0 +1,81 @@
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [
+ { type: 'checkbox', align: 'center', width: '50' },
+ { type: 'text', field: 'index', title: '序号', width: '50', align: 'center' },
+ { type: 'img',field:'image',title:'图片',width:'100',align: 'center' },
+ { type: 'text', field: 'bom_code', title: '零件编码', width: '200', align: 'center' },
+ { type: 'text', field: 'bom_name', title: '零件名称', width: '200', align: 'center' },
+ { type: 'text',field:'spec',title:'零件规格型号',width:'200',align: 'center' },
+ { type: 'editable_ipt', field: 'molecule', title: '用量(分子)', width: '200', align: 'center' },
+ { type: 'editable_ipt', field: 'denominator', title: '用量(分母)', width: '200', align: 'center' },
+ { type: 'editable_ipt', field: 'price', title: '单价(¥)', width: '200', align: 'center'},
+ { type: 'editable_ipt', field: 'total_price', title: '总价(¥)', width: '200', align: 'center'},
+ { type: 'editable_ipt', field: 'remark', title: '备注', width: '200', align: 'center'},
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns = [
+ {name:'新增行',type:'add',style_self:'btn'},
+ {name:'删除行',type:'del',style_self:'btn'}
+]
+
+export const _data = {
+ // 按钮组
+ personType:'',
+ project_id:null,
+ tasklist:[],
+ projectList:[],
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ // 基础信息
+ baseInfoList:[],
+ // 表格
+ table_title:'标准零件选型',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:[],
+ tableHeigth:400,
+ // 公共弹窗
+ LcSingleIndex:1,
+ isShowDialogBtns:false,
+ dia_type:null,
+ dia_label:'',
+ dia_title:'',
+ dia_list:[],
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:''
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_bzyx_json.js b/src/utils/lc_jx_utils/lc_bzyx_json.js
new file mode 100644
index 0000000..feca684
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_bzyx_json.js
@@ -0,0 +1,131 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [
+ { type: 'checkbox', align: 'center', width: '50' },
+ { type: 'text', field: 'name', title: '盒型选择', width: '200', align: 'center' },
+ { type: 'img',field:'image',title:'图片',width:'100',align: 'center' },
+ { type: 'editable_ipt_bzxs', field: 'type', title: '包装形式', width: '200', align: 'center' },
+ { type: 'editable_ipt_bzjg', field: 'structure', title: '包装结构组成', width: '200', align: 'center'},
+ { type: 'editable_ipt_bzcc', field: 'size', title: '包装尺寸(不含挂钩尺寸)', width: '240', align: 'center'},
+ { type: 'editable_ipt_yscc', field: 'transport_size', title: '运动外箱尺寸', width: '140', align: 'center'},
+ { type: 'text', field: 'layout', title: '箱内排布', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'molecule', title: '用量(分子)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'denominator', title: '用量(分母)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'price', title: '单价(¥)', width: '140', align: 'center',beforeStr:'bz'},
+ { type: 'editable_ipt', field: 'remark', title: '备注', width: '140', align: 'center',beforeStr:'ag'},
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = [
+ {
+ index:1,
+ project_id:'',
+ name:'',
+ image:'',
+ spu:'',
+ sku:'',
+ links_qd_bom:'',
+ links_bz_bom:'',
+ material:'',
+ protocol:'',
+ rate:'',
+ package:'',
+ safe:''
+ }
+]
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns = []
+
+// 私有 表格 - 包装原型 - columns
+export const tableColumns_c = [
+ { type: 'text', field: 'title', title: '文件名称', width: '412', align: 'center' },
+ { type: 'text', field: 'create_time', title: '上传时间', width: '412', align: 'center' },
+ { type: 'operation',field:'operation',title:'操作',width:'412',align: 'center' },
+ { type: 'text', field: 'remark', title: '备注', width: '412', align: 'center' },
+]
+
+// 私有 表格 - 包装原型 - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - 包装原型 - 表头按钮
+export const tableHeaderBtns_c = [
+// {name:'下载模板',type:'download',style_self:'btn'},
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+]
+
+export const _data = {
+ // 按钮组
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ tasklist:[],
+ project_id:null,
+ projectList:[],
+ // 基础信息
+ baseInfoList:[],
+ // 表格 - 包装原型
+ table_title:'包装原型',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:['bz','ag','ys'],
+ tableHeigth:400,
+ selDataRow:[],
+ // 表格 - 输出文件
+ table_title_c:'输出文件',
+ table_title_ppt:'规格/板框定义PPT',
+ listHeader_c:[],
+ defaultRow_c:[],
+ tableHeader_c:[],
+ notShowCol_c:[],
+ staticList_c:{},
+ beforeStrList_c:[],
+ tableHeigth_c:400,
+ // 公共弹窗
+ LcSingleIndex:1,
+ isShowDialogBtns:false,
+ dia_type:null,
+ dia_label:'',
+ dia_title:'',
+ dia_list:[],
+ // 共享盘链接
+ linksTitle:'填写共享盘链接',
+ isShowLinksDialog:false,
+ isShowLinksDialogIndex:1,
+ btnTamplteList:[],
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:''
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_cpplfb_json.js b/src/utils/lc_jx_utils/lc_cpplfb_json.js
new file mode 100644
index 0000000..768c710
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_cpplfb_json.js
@@ -0,0 +1,151 @@
+
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [
+ { type: 'checkbox', align: 'center', width: '50' },
+ { type: 'index', field: 'index', title: '序号', width: '50', align: 'center' },
+ { type: 'editable_ipt', field: 'name', title: '产品名称', width: '200', align: 'center' },
+ { type: 'img_upload',field:'image',title:'产品图片',width:'100',align: 'center',upload_url:baseUrl + 'project/upload/file'},
+ { type: 'editable_ipt', field: 'spu', title: '产品SPU', width: '200', align: 'center' },
+ { type: 'editable_ipt', field: 'sku', title: '产品规格型号(SKU)', width: '200', align: 'center'},
+ { type: 'router', field: 'links_qd_bom_text', title: '结构BOM清单', width: '120', align: 'center'},
+ { type: 'router', field: 'links_bz_bom_text', title: '包装BOM清单', width: '120', align: 'center'},
+ { type: 'editable_ipt', field: 'material', title: '产品材质', width: '100', align: 'center'},
+ { type: 'editable_ipt', field: 'protocol', title: '协议', width: '100', align: 'center'},
+ { type: 'editable_ipt', field: 'rate', title: '速率', width: '100', align: 'center'},
+ { type: 'editable_sel', field: 'package', title: '包装', width: '100', align: 'center',beforeStr:'bz'},
+ { type: 'editable_sel', field: 'safe', title: '安规', width: '100', align: 'center',beforeStr:'ag'},
+ { type: 'editable_ipt', field: 'interface', title: '接口(输入)', width: '140', align: 'center'},
+ { type: 'editable_ipt', field: 'other', title: '尺码/数量/长度', width: '160', align: 'center'},
+ { type: 'editable_sel', field: 'color', title: '产品颜色', width: '100', align: 'center',beforeStr:'ys'},
+ { type: 'editable_ipt', field: 'version', title: '功能/版本', width: '120', align: 'center'},
+ { type: 'editable_ipt', field: 'output', title: '输出接口', width: '100', align: 'center'},
+ { type: 'editable_ipt_integer', field: 'material_num', title: '备料数量', width: '100', align: 'center'},
+ { type: 'editable_ipt_integer', field: 'order_num', title: '首批订单数量', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_fare_sj', title: '模具费(塑胶)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_fare_wj', title: '模具费(五金)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'electron_fare', title: '电子', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'structure_fare', title: '结构', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'line_fare', title: '线材', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'package_fare', title: '包材', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'parts_fare', title: '配件', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'process_fare', title: '加工费用', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'auth_test_fare', title: '认证/测试费用', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'total_cost', title: '总成本(未摊模具)', width: '160', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_cost', title: '含摊模具成本(工厂出厂成本)', width: '240', align: 'center'},
+ { type: 'editable_ipt_float', field: 'tco_cost', title: 'TCO成本', width: '100', align: 'center'},
+ { type: 'text_count', field: 'tco_rate', title: 'TCO毛利润率', width: '120', align: 'center',count:'tco_cost|-|mould_cost|/|tco_cost'},
+ { type: 'editable_ipt_float', field: 'agent_price', title: '代理商价', width: '100', align: 'center'},
+ { type: 'text_count', field: 'channel_rate', title: '渠道毛利润率', width: '120', align: 'center',count:'agent_price|-|tco_cost|/|agent_price'},
+ { type: 'editable_ipt_float', field: 'distribution_price', title: '经销价', width: '100', align: 'center'},
+ { type: 'text_count', field: 'distribution_rate', title: '经销商毛利率', width: '120', align: 'center',count:'min_retail_price|-|distribution_price|/|min_retail_price'},
+ { type: 'editable_ipt_float', field: 'retail_price', title: '建议零售价', width: '120', align: 'center'},
+ { type: 'editable_ipt_float', field: 'min_retail_price', title: '最低零售价', width: '120', align: 'center'},
+ { type: 'text_count', field: 'b2c_rate', title: 'B2C毛利润率', width: '120', align: 'center',count:'min_retail_price|-|tco_cost|/|min_retail_price'}
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns = [
+ {name:'选择显示字段',type:'popup',style_self:'btn'},
+ {name:'导入SKU',type:'import_sku',style_self:'btn'},
+ {name:'导出SKU',type:'export_sku',style_self:'btn'},
+ {name:'导入结构BOM表',type:'import_bom',style_self:'btn'},
+ {name:'导出结构BOM表',type:'import_bom',style_self:'btn'},
+ {name:'新增行',type:'add',style_self:'btn'},
+ {name:'删除行',type:'del',style_self:'btn'}
+]
+
+// 私有 表格 - 发布会PPT - columns
+export const tableColumns_c = [
+ { type: 'text', field: 'title', title: '文件名称', width: '412', align: 'center' },
+ { type: 'text', field: 'create_time', title: '上传时间', width: '412', align: 'center' },
+ { type: 'operation',field:'operation',title:'操作',width:'412',align: 'center' },
+ {type: 'editable_ipt',field: 'remark',title: '备注',width: '412',align: 'center'},
+]
+
+// 私有 表格 - 发布会PPT - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - 发布会PPT - 表头按钮
+export const tableHeaderBtns_c = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+]
+
+export const _data = {
+ // 按钮组
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ // 基础信息
+ baseInfoList:[],
+ // 表格 - 发布会PPT
+ loading_c:false,
+ isShowTitleIcon:true,
+ table_title:'输出文件',
+ table_title_ppt:'发布会PPT',
+ listHeader_c:[],
+ defaultRow_c:[],
+ tableHeader_c:[],
+ notShowCol_c:[],
+ staticList_c:{},
+ beforeStrList_c:[],
+ tableHeigth_c:400,
+ // 表格 - 规格定义表
+ table_title_default:'规格定义表',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:['bz','ag','ys'],
+ tableHeigth:400,
+ // 共享盘链接
+ writeLinksCode:'',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ btnTamplteList:[],
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:''
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_dzsj_json.js b/src/utils/lc_jx_utils/lc_dzsj_json.js
new file mode 100644
index 0000000..dc2e45d
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_dzsj_json.js
@@ -0,0 +1,693 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 私有 - 按钮组 - 配置json
+export const btns = [{
+ name: '保存',
+ type: 'btn_save',
+ style_self: 'btn_n_drag',
+ color: true
+ },
+ {
+ name: '状态操作',
+ type: 'oper_status',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '排期',
+ type: 'pq'
+ }, {
+ id: 2,
+ name: '转派',
+ type: 'zp'
+ }, {
+ id: 3,
+ name: '暂停',
+ type: 'zt'
+ }]
+ },
+ {
+ name: '提交',
+ type: 'oper_commit',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '提交',
+ type: 'tj'
+ }, {
+ id: 2,
+ name: '撤消',
+ type: 'cx'
+ }]
+ },
+ {
+ name: '审核',
+ type: 'oper_process',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '通过',
+ type: 'tg'
+ }, {
+ id: 2,
+ name: '驳回',
+ type: 'bh'
+ }]
+ },
+ {
+ name: '项目资料',
+ type: 'btn_info',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ },
+ {
+ name: '人员变更',
+ type: 'btn_person',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ }
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [{
+ label: '任务编码',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'sn'
+ },
+ {
+ label: '任务名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'name'
+ },
+ {
+ label: '任务负责人',
+ type: 'sel',
+ value: null,
+ field: 'leader_user_id',
+ list: []
+ },
+ {
+ label: '任务审核人',
+ type: 'sel',
+ value: null,
+ field: 'reviewer_user_id',
+ list: []
+ },
+ {
+ label: '业务状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'task_status'
+ },
+ {
+ label: '任务审核状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'examine_status'
+ },
+ {
+ label: '所属项目编号',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_id'
+ },
+ {
+ label: '所属项目名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_name'
+ },
+ {
+ label: '预计开始',
+ type: 'date',
+ value: [],
+ field: 'plan_start_time_text'
+ },
+ {
+ label: '预计完成',
+ type: 'date',
+ value: [],
+ field: 'plan_end_time_text'
+ },
+ {
+ label: '完成日期',
+ type: 'date_disable',
+ value: [],
+ field: 'end_time_text'
+ },
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'index',
+ field: 'index',
+ title: '序号',
+ width: '50',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'name',
+ title: '产品名称',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'img_upload',
+ field: 'image',
+ title: '产品图片',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'spu',
+ title: '产品SPU',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sku',
+ title: '产品规格型号(SKU)',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_qd_bom',
+ title: '结构BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_bz_bom',
+ title: '包装BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'material',
+ title: '产品材质',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'protocol',
+ title: '协议',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'rate',
+ title: '速率',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'package',
+ title: '包装',
+ width: '100',
+ align: 'center',
+ beforeStr: 'bz'
+ },
+ {
+ type: 'editable_sel',
+ field: 'safe',
+ title: '安规',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ag'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'Interface',
+ title: '接口(输入)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'other',
+ title: '尺码/数量/长度',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'color',
+ title: '产品颜色',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ys'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'version',
+ title: '功能/版本',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'output',
+ title: '输出接口',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'material_num',
+ title: '备料数量',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'order_num',
+ title: '首批订单数量',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'mould_fare_sj',
+ title: '模具费(塑胶)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'mould_fare_wj',
+ title: '模具费(五金)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'electron_fare',
+ title: '电子',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'structure_fare',
+ title: '结构',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'line_fare',
+ title: '线材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'package_fare',
+ title: '包材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'parts_fare',
+ title: '配件',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'process_fare',
+ title: '加工费用',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'auth_test_fare',
+ title: '认证/测试费用',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'total_cost',
+ title: '总成本(未摊模具)',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'mould_cost',
+ title: '含摊模具成本(工厂出厂成本)',
+ width: '240',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'tco_cost',
+ title: 'TCO成本',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'tco_rate',
+ title: 'TCO毛利润率',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'agent_price',
+ title: '代理商价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'channel_rate',
+ title: '渠道毛利润率',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'distribution_price',
+ title: '经销价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'test',
+ title: '经销商毛利率',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'retail_price',
+ title: '建议零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'min_retail_price',
+ title: '最低零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'b2c_rate',
+ title: 'B2C毛利润率',
+ width: '120',
+ align: 'center'
+ }
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = [{
+ index: 1,
+ project_id: '',
+ name: '',
+ image: '',
+ spu: '',
+ sku: '',
+ links_qd_bom: '',
+ links_bz_bom: '',
+ material: '',
+ protocol: '',
+ rate: '',
+ package: '',
+ safe: '',
+ Interface: '',
+ other: '',
+ color: '',
+ version: '',
+ output: '',
+ material_num: '',
+ order_num: '',
+ mould_fare_sj: '',
+ mould_fare_wj: '',
+ electron_fare: '',
+ structure_fare: '',
+ line_fare: '',
+ package_fare: '',
+ parts_fare: '',
+ process_fare: '',
+ auth_test_fare: '',
+ total_cost: '',
+ mould_cost: '',
+ tco_cost: '',
+ tco_rate: '',
+ agent_price: '',
+ channel_rate: '',
+ distribution_price: '',
+ test: '',
+ retail_price: '',
+ min_retail_price: '',
+ b2c_rate: '',
+ },
+ {
+ index: 2,
+ project_id: '',
+ name: '',
+ image: '',
+ spu: '',
+ sku: '',
+ links_qd_bom: '',
+ links_bz_bom: '',
+ material: '',
+ protocol: '',
+ rate: '',
+ package: '',
+ safe: '',
+ Interface: '',
+ other: '',
+ color: '',
+ version: '',
+ output: '',
+ material_num: '',
+ order_num: '',
+ mould_fare_sj: '',
+ mould_fare_wj: '',
+ electron_fare: '',
+ structure_fare: '',
+ line_fare: '',
+ package_fare: '',
+ parts_fare: '',
+ process_fare: '',
+ auth_test_fare: '',
+ total_cost: '',
+ mould_cost: '',
+ tco_cost: '',
+ tco_rate: '',
+ agent_price: '',
+ channel_rate: '',
+ distribution_price: '',
+ test: '',
+ retail_price: '',
+ min_retail_price: '',
+ b2c_rate: '',
+ }
+]
+
+// 私有 表格 - 输入文件 - 表头按钮
+export const tableHeaderBtns = [{
+ name: '选择显示字段',
+ type: 'popup',
+ style_self: 'btn'
+ },
+ {
+ name: '导入SKU',
+ type: 'import_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导出SKU',
+ type: 'export_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导入结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ },
+ {
+ name: '导出结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ }
+]
+
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns_c = [{
+ type: 'text',
+ field: 'title',
+ title: '文件名称',
+ width: '412',
+ align: 'center'
+}, {
+ type: 'text',
+ field: 'create_time',
+ title: '上传时间',
+ width: '412',
+ align: 'center'
+}, {
+ type: 'operation',
+ field: 'operation',
+ title: '操作',
+ width: '412',
+ align: 'center'
+}, {
+ type: 'editable_ipt',
+ field: 'remark',
+ title: '备注',
+ width: '',
+ align: 'center'
+}]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal_c = [{
+ title: '',
+ create_time: '',
+ operation: '',
+ remark: '',
+ downLoadUrl: '',
+ isDownLoadShow: 'y'
+}]
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns_c = [{
+ name: '下载模板',
+ type: 'download',
+ style_self: 'btn'
+ },
+ {
+ name: '文件上传',
+ type: 'upload_file',
+ style_self: 'btn_upload',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ name: '填写共享盘链接',
+ type: 'write_links',
+ style_self: 'btn'
+ }
+]
+
+// 私有 data 数据
+export const _data = {
+ // 按钮组
+ topBtns: [],
+ isShowDialog: false,
+ isShowDialogIndex: 1,
+ title: '项目输出资料表',
+ // 基础信息
+ baseInfoList: [],
+ isShowTitleIcon: true,
+ // 表格 - 输出文件
+ table_title: '输入文件',
+ listHeader: [],
+ defaultRow: [],
+ tableHeader: [],
+ notShowCol: [],
+ staticList: {},
+ beforeStrList: ['bz', 'ag', 'ys'],
+ tableHeigth: 400,
+ // 表格 - GerBer资料
+ table_title_two: '输出文件',
+ loading_c: false,
+ table_title_c: 'GerBer资料',
+ listHeader_c: [],
+ defaultRow_c: [],
+ tableHeader_c: [],
+ notShowCol_c: [],
+ staticList_c: {},
+ beforeStrList_c: [],
+ tableHeigth_c: 400,
+ // 表格 - 元件坐标图
+ table_title_p: '元件坐标图',
+ loading_p: false,
+ listHeader_p: [],
+ defaultRow_p: [],
+ tableHeader_p: [],
+ notShowCol_p: [],
+ staticList_p: {},
+ beforeStrList_p: [],
+ tableHeigth_p: 400,
+ // 表格 - 元件丝印图
+ table_title_a: '元件丝印图',
+ loading_a: false,
+ listHeader_a: [],
+ defaultRow_a: [],
+ tableHeader_a: [],
+ notShowCol_a: [],
+ staticList_a: {},
+ beforeStrList_a: [],
+ tableHeigth_a: 400,
+ // 表格 - PCB规格书
+ table_title_b: 'PCB规格书',
+ loading_b: false,
+ listHeader_b: [],
+ defaultRow_b: [],
+ tableHeader_b: [],
+ notShowCol_b: [],
+ staticList_b: {},
+ beforeStrList_b: [],
+ tableHeigth_b: 400,
+ // 表格 - FW资料
+ table_title_d: 'FW资料',
+ loading_d: false,
+ listHeader_d: [],
+ defaultRow_d: [],
+ tableHeader_d: [],
+ notShowCol_d: [],
+ staticList_d: {},
+ beforeStrList_d: [],
+ tableHeigth_d: 400,
+ // 共享盘链接
+ writeLinksCode: '',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ btnTamplteListC: [],
+ btnTamplteListP: [],
+ btnTamplteListA: [],
+ btnTamplteListB: [],
+ btnTamplteListD: [],
+ // 备注
+ remarks_title: '备注',
+ remarks_vale: '',
+ tableAfterArr: ['c', 'p', 'a', 'b', 'd']
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_ggdy_json.js b/src/utils/lc_jx_utils/lc_ggdy_json.js
new file mode 100644
index 0000000..1ce12f4
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_ggdy_json.js
@@ -0,0 +1,634 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 私有 - 按钮组 - 配置json
+export const btns = [{
+ name: '保存',
+ type: 'btn_save',
+ style_self: 'btn_n_drag',
+ color: true
+ },
+ {
+ name: '状态操作',
+ type: 'oper_status',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '排期',
+ type: 'pq'
+ }, {
+ id: 2,
+ name: '转派',
+ type: 'zp'
+ }, {
+ id: 3,
+ name: '暂停',
+ type: 'zt'
+ }]
+ },
+ {
+ name: '提交',
+ type: 'oper_commit',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '提交',
+ type: 'tj'
+ }, {
+ id: 2,
+ name: '撤消',
+ type: 'cx'
+ }]
+ },
+ {
+ name: '审核',
+ type: 'oper_process',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '通过',
+ type: 'tg'
+ }, {
+ id: 2,
+ name: '驳回',
+ type: 'bh'
+ }]
+ },
+ {
+ name: '项目资料',
+ type: 'btn_info',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ },
+ {
+ name: '人员变更',
+ type: 'btn_person',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ }
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [{
+ label: '任务编码',
+ type: 'ipt_disable',
+ value: '',
+ field: 'sn'
+ },
+ {
+ label: '任务名称',
+ type: 'ipt_disable',
+ value: '',
+ field: 'name'
+ },
+ {
+ label: '任务负责人',
+ type: 'sel',
+ value: null,
+ field: 'leader_user_id',
+ list: []
+ },
+ {
+ label: '任务审核人',
+ type: 'sel',
+ value: null,
+ field: 'reviewer_user_id',
+ list: []
+ },
+ {
+ label: '业务状态',
+ type: 'ipt_disable',
+ value: '',
+ field: 'task_status_text'
+ },
+ {
+ label: '任务审核状态',
+ type: 'ipt_disable',
+ value: '',
+ field: 'examine_status_text'
+ },
+ {
+ label: '所属项目编号',
+ type: 'ipt_disable',
+ value: '',
+ field: 'project_id'
+ },
+ {
+ label: '所属项目名称',
+ type: 'ipt_disable',
+ value: '',
+ field: 'project_name'
+ },
+ {
+ label: '预计开始',
+ type: 'date',
+ value: '',
+ field: 'plan_start_time_text'
+ },
+ {
+ label: '预计完成',
+ type: 'date',
+ value: '',
+ field: 'plan_end_time_text'
+ },
+ {
+ label: '完成日期',
+ type: 'date_disable',
+ value: '',
+ field: 'end_time_text'
+ },
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'index',
+ field: 'index',
+ title: '序号',
+ width: '50',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'name',
+ title: '产品名称',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'img_upload',
+ field: 'image',
+ title: '产品图片',
+ width: '100',
+ align: 'center',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'spu',
+ title: '产品SPU',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sku',
+ title: '产品规格型号(SKU)',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_qd_bom_text',
+ title: '结构BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_bz_bom_text',
+ title: '包装BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'material',
+ title: '产品材质',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'protocol',
+ title: '协议',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'rate',
+ title: '速率',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'package',
+ title: '包装',
+ width: '100',
+ align: 'center',
+ beforeStr: 'bz'
+ },
+ {
+ type: 'editable_sel',
+ field: 'safe',
+ title: '安规',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ag'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'interface',
+ title: '接口(输入)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'other',
+ title: '尺码/数量/长度',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'color',
+ title: '产品颜色',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ys'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'version',
+ title: '功能/版本',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'output',
+ title: '输出接口',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'material_num',
+ title: '备料数量',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'order_num',
+ title: '首批订单数量',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_sj',
+ title: '模具费(塑胶)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_wj',
+ title: '模具费(五金)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'electron_fare',
+ title: '电子',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'structure_fare',
+ title: '结构/本体',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'line_fare',
+ title: '线材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'package_fare',
+ title: '包材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'parts_fare',
+ title: '配件',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'process_fare',
+ title: '加工费用',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'auth_test_fare',
+ title: '认证/测试费用',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'total_cost',
+ title: '总成本(未摊模具)',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_cost',
+ title: '含摊模具成本(工厂出厂成本)',
+ width: '240',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'tco_cost',
+ title: 'TCO成本',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'tco_rate',
+ title: 'TCO毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'tco_cost|-|mould_cost|/|tco_cost'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'agent_price',
+ title: '代理商价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'channel_rate',
+ title: '渠道毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'agent_price|-|tco_cost|/|agent_price'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'distribution_price',
+ title: '经销价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'distribution_rate',
+ title: '经销商毛利率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|distribution_price|/|min_retail_price'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'retail_price',
+ title: '建议零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'min_retail_price',
+ title: '最低零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'b2c_rate',
+ title: 'B2C毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|tco_cost|/|min_retail_price'
+ }
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns = [{
+ name: '选择显示字段',
+ type: 'popup',
+ style_self: 'btn'
+ },
+ {
+ name: '导入SKU',
+ type: 'import_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导出SKU',
+ type: 'export_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导入结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ },
+ {
+ name: '导出结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ },
+ {
+ name: '新增行',
+ type: 'add',
+ style_self: 'btn'
+ },
+ {
+ name: '删除行',
+ type: 'del',
+ style_self: 'btn'
+ }
+]
+
+// 私有 表格 - 定义PPT - columns
+export const tableColumns_c = [{
+ type: 'text',
+ field: 'title',
+ title: '文件名称',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'create_time',
+ title: '上传时间',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'operation',
+ field: 'operation',
+ title: '操作',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'remark',
+ title: '备注',
+ width: '412',
+ align: 'center'
+ },
+]
+
+// 私有 表格 - 定义PPT - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - 定义PPT - 表头按钮
+export const tableHeaderBtns_c = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ {
+ name: '文件上传',
+ type: 'upload_file',
+ style_self: 'btn_upload',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ name: '填写共享盘链接',
+ type: 'write_links',
+ style_self: 'btn'
+ }
+]
+
+// 私有 表格 - 规格定价 - columns
+export const tableColumns_p = [{
+ type: 'text',
+ field: 'title',
+ title: '文件名称',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'create_time',
+ title: '上传时间',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'operation',
+ field: 'operation',
+ title: '操作',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'remark',
+ title: '备注',
+ width: '412',
+ align: 'center'
+ },
+]
+
+// 私有 表格 - 规格定价 - 默认值
+export const tableDefaultVal_p = []
+
+// 私有 表格 - 规格定价 - 表头按钮
+export const tableHeaderBtns_p = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ {
+ name: '文件上传',
+ type: 'upload_file',
+ style_self: 'btn_upload',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ name: '填写共享盘链接',
+ type: 'write_links',
+ style_self: 'btn'
+ }
+]
+
+export const _data = {
+ // 按钮组
+ topBtns: [],
+ isShowDialog: false,
+ isShowDialogIndex: 1,
+ title: '项目输出资料表',
+ // 基础信息
+ baseInfoList: [],
+ // 表格 - 输出文件
+ table_title: '输出文件',
+ table_title_ggdy: '规格定义',
+ loading: false,
+ listHeader: [],
+ defaultRow: [],
+ tableHeader: [],
+ notShowCol: [],
+ staticList: {},
+ beforeStrList: ['bz', 'ag', 'ys'],
+ tableHeigth: 300,
+ // 表格 - 定义PPT
+ isShowTitleIcon: true,
+ table_title_c: '输出内容',
+ table_title_ppt: '规格/板框定义PPT',
+ loading_c: false,
+ listHeader_c: [],
+ defaultRow_c: [],
+ tableHeader_c: [],
+ notShowCol_c: [],
+ staticList_c: {},
+ beforeStrList_c: [],
+ btnTamplteListC: [],
+ tableHeigth_c: 300,
+ // 表格 - 规格定价
+ loading_p: false,
+ table_title_p: '规格定价表格',
+ listHeader_p: [],
+ defaultRow_p: [],
+ tableHeader_p: [],
+ notShowCol_p: [],
+ staticList_p: {},
+ beforeStrList_p: [],
+ btnTamplteListP: [],
+ tableHeigth_p: 300,
+ // 共享盘链接
+ writeLinksCode: '',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ // 备注
+ remarks_title: '备注',
+ remarks_vale: ''
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_gysj_json.js b/src/utils/lc_jx_utils/lc_gysj_json.js
new file mode 100644
index 0000000..04b52df
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_gysj_json.js
@@ -0,0 +1,110 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [
+ { type: 'checkbox', align: 'center', width: '50' },
+ { type: 'index', field: 'index', title: '序号', width: '200', align: 'center' },
+ { type: 'img',field:'image',title:'图片',width:'100',align: 'center' },
+ { type: 'text', field: 'spu', title: '零件编码', width: '200', align: 'center' },
+ { type: 'text', field: 'sku', title: '零件名称', width: '200', align: 'center'},
+ { type: 'text', field: 'links_qd_bom', title: '零件规格型号', width: '300', align: 'center'},
+ { type: 'editable_ipt', field: 'protocol', title: '用量(分子)', width: '200', align: 'center'},
+ { type: 'editable_ipt', field: 'rate', title: '用量(分母)', width: '200', align: 'center'},
+ { type: 'editable_ipt', field: 'package', title: '单价(¥)', width: '200', align: 'center',beforeStr:'bz'},
+ { type: 'editable_ipt', field: 'safe', title: '备注', width: '200', align: 'center',beforeStr:'ag'},
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns = []
+
+// 私有 表格 - ID效果图 - columns
+export const tableColumns_c = [
+ { type: 'text', field: 'title', title: '工业设计示例图', width: '412', align: 'center' },
+ { type: 'text', field: 'create_time', title: '上传时间', width: '412', align: 'center' },
+ { type: 'operation',field:'operation',title:'操作',width:'412',align: 'center' },
+ { type: 'text', field: 'remark', title: '备注', width: '412', align: 'center' },
+]
+
+// 私有 表格 - ID效果图 - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - ID效果图 - 表头按钮
+export const tableHeaderBtns_c = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+]
+
+export const _data = {
+ // 按钮组
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ // 基础信息
+ baseInfoList:[],
+ // 表格 - 包装原型
+ table_title:'标准零件选择',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:[],
+ tableHeigth:400,
+ // 表格 - 输出文件
+ loading_c:false,
+ isShowTitleIcon:true,
+ table_title_c:'输出文件',
+ table_title_ppt:'ID效果图',
+ listHeader_c:[],
+ defaultRow_c:[],
+ tableHeader_c:[],
+ notShowCol_c:[],
+ staticList_c:{},
+ beforeStrList_c:[],
+ tableHeigth_c:400,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ // 共享盘链接
+ linksTitle:'填写共享盘链接',
+ isShowLinksDialog:false,
+ isShowLinksDialogIndex:1,
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:''
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_jgsj_json.js b/src/utils/lc_jx_utils/lc_jgsj_json.js
new file mode 100644
index 0000000..2eb9505
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_jgsj_json.js
@@ -0,0 +1,284 @@
+
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [
+ { type: 'checkbox', align: 'center', width: '50' },
+ { type: 'index', field: 'index', title: '序号', width: '50', align: 'center' },
+ { type: 'editable_ipt', field: 'name', title: '产品名称', width: '200', align: 'center' },
+ { type: 'img_upload',field:'image',title:'产品图片',width:'100',align: 'center',upload_url:baseUrl + 'project/upload/file'},
+ { type: 'editable_ipt', field: 'spu', title: '产品SPU', width: '200', align: 'center' },
+ { type: 'editable_ipt', field: 'sku', title: '产品规格型号(SKU)', width: '200', align: 'center'},
+ { type: 'router', field: 'links_qd_bom_text', title: '结构BOM清单', width: '120', align: 'center'},
+ { type: 'router', field: 'links_bz_bom_text', title: '包装BOM清单', width: '120', align: 'center'},
+ { type: 'editable_ipt', field: 'material', title: '产品材质', width: '100', align: 'center'},
+ { type: 'editable_ipt', field: 'protocol', title: '协议', width: '100', align: 'center'},
+ { type: 'editable_ipt', field: 'rate', title: '速率', width: '100', align: 'center'},
+ { type: 'editable_sel', field: 'package', title: '包装', width: '100', align: 'center',beforeStr:'bz'},
+ { type: 'editable_sel', field: 'safe', title: '安规', width: '100', align: 'center',beforeStr:'ag'},
+ { type: 'editable_ipt', field: 'interface', title: '接口(输入)', width: '140', align: 'center'},
+ { type: 'editable_ipt', field: 'other', title: '尺码/数量/长度', width: '160', align: 'center'},
+ { type: 'editable_sel', field: 'color', title: '产品颜色', width: '100', align: 'center',beforeStr:'ys'},
+ { type: 'editable_ipt', field: 'version', title: '功能/版本', width: '120', align: 'center'},
+ { type: 'editable_ipt', field: 'output', title: '输出接口', width: '100', align: 'center'},
+ { type: 'editable_ipt_integer', field: 'material_num', title: '备料数量', width: '100', align: 'center'},
+ { type: 'editable_ipt_integer', field: 'order_num', title: '首批订单数量', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_fare_sj', title: '模具费(塑胶)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_fare_wj', title: '模具费(五金)', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'electron_fare', title: '电子', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'structure_fare', title: '结构', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'line_fare', title: '线材', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'package_fare', title: '包材', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'parts_fare', title: '配件', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'process_fare', title: '加工费用', width: '100', align: 'center'},
+ { type: 'editable_ipt_float', field: 'auth_test_fare', title: '认证/测试费用', width: '140', align: 'center'},
+ { type: 'editable_ipt_float', field: 'total_cost', title: '总成本(未摊模具)', width: '160', align: 'center'},
+ { type: 'editable_ipt_float', field: 'mould_cost', title: '含摊模具成本(工厂出厂成本)', width: '240', align: 'center'},
+ { type: 'editable_ipt_float', field: 'tco_cost', title: 'TCO成本', width: '100', align: 'center'},
+ { type: 'text_count', field: 'tco_rate', title: 'TCO毛利润率', width: '120', align: 'center',count:'tco_cost|-|mould_cost|/|tco_cost'},
+ { type: 'editable_ipt_float', field: 'agent_price', title: '代理商价', width: '100', align: 'center'},
+ { type: 'text_count', field: 'channel_rate', title: '渠道毛利润率', width: '120', align: 'center',count:'agent_price|-|tco_cost|/|agent_price'},
+ { type: 'editable_ipt_float', field: 'distribution_price', title: '经销价', width: '100', align: 'center'},
+ { type: 'text_count', field: 'distribution_rate', title: '经销商毛利率', width: '120', align: 'center',count:'min_retail_price|-|distribution_price|/|min_retail_price'},
+ { type: 'editable_ipt_float', field: 'retail_price', title: '建议零售价', width: '120', align: 'center'},
+ { type: 'editable_ipt_float', field: 'min_retail_price', title: '最低零售价', width: '120', align: 'center'},
+ { type: 'text_count', field: 'b2c_rate', title: 'B2C毛利润率', width: '120', align: 'center',count:'min_retail_price|-|tco_cost|/|min_retail_price'}
+]
+
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输入文件 - 表头按钮
+export const tableHeaderBtns = [
+ {name:'选择显示字段',type:'popup',style_self:'btn'},
+ {name:'导入SKU',type:'import_sku',style_self:'btn'},
+ {name:'导出SKU',type:'export_sku',style_self:'btn'},
+ {name:'导入结构BOM表',type:'import_bom',style_self:'btn'},
+ {name:'导出结构BOM表',type:'import_bom',style_self:'btn'}
+]
+
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns_c = [
+ { type: 'text', field: 'title', title: '文件名称', width: '412', align: 'center' },
+ { type: 'text', field: 'create_time', title: '上传时间', width: '412', align: 'center' },
+ { type: 'operation',field:'operation',title:'操作',width:'412',align: 'center' },
+ {type: 'editable_ipt',field: 'remark',title: '备注',width: '412',align: 'center'},
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns_c = [
+ {name:'下载模板',type:'download',style_self:'btn'},
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+]
+
+// 私有 data 数据
+export const _data = {
+ // 按钮组
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ // 基础信息
+ baseInfoList:[],
+ isShowTitleIcon:true,
+ // 表格 - 输出文件
+ table_title:'输入文件',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:['bz','ag','ys'],
+ tableHeigth:400,
+ // 表格 - 产品结构3D图档
+ table_title_two:'输出文件',
+ loading_c:false,
+ table_title_c:'产品结构3D图档',
+ listHeader_c:[],
+ defaultRow_c:[],
+ tableHeader_c:[],
+ notShowCol_c:[],
+ staticList_c:{},
+ beforeStrList_c:[],
+ tableHeigth_c:400,
+ // 表格 - 产品零件2D图档
+ table_title_p:'产品零件2D图档',
+ loading_p:false,
+ listHeader_p:[],
+ defaultRow_p:[],
+ tableHeader_p:[],
+ notShowCol_p:[],
+ staticList_p:{},
+ beforeStrList_p:[],
+ tableHeigth_p:400,
+ // 表格 - 结构BOM
+ table_title_a:'结构BOM',
+ loading_a:false,
+ listHeader_a:[],
+ defaultRow_a:[],
+ tableHeader_a:[],
+ notShowCol_a:[],
+ staticList_a:{},
+ beforeStrList_a:[],
+ tableHeigth_a:400,
+ // 表格 - 手板加工说明及图档
+ table_title_b:'手板加工说明及图档',
+ loading_b:false,
+ listHeader_b:[],
+ defaultRow_b:[],
+ tableHeader_b:[],
+ notShowCol_b:[],
+ staticList_b:{},
+ beforeStrList_b:[],
+ tableHeigth_b:400,
+ // 表格 - 模具加工说明及图档
+ table_title_d:'模具加工说明及图档',
+ loading_d:false,
+ listHeader_d:[],
+ defaultRow_d:[],
+ tableHeader_d:[],
+ notShowCol_d:[],
+ staticList_d:{},
+ beforeStrList_d:[],
+ tableHeigth_d:400,
+ // 表格 - 零件打样说明及图档
+ table_title_e:'零件打样说明及图档',
+ loading_e:false,
+ listHeader_e:[],
+ defaultRow_e:[],
+ tableHeader_e:[],
+ notShowCol_e:[],
+ staticList_e:{},
+ beforeStrList_e:[],
+ tableHeigth_e:400,
+ // 表格 - PCBA 限高限位板框图
+ table_title_f:'PCBA 限高限位板框图',
+ listHeader_f:[],
+ loading_f:false,
+ defaultRow_f:[],
+ tableHeader_f:[],
+ notShowCol_f:[],
+ staticList_f:{},
+ beforeStrList_f:[],
+ tableHeigth_f:400,
+ // 表格 - 产品渲染用3D图档
+ table_title_g:'产品渲染用3D图档',
+ listHeader_g:[],
+ loading_g:false,
+ defaultRow_g:[],
+ tableHeader_g:[],
+ notShowCol_g:[],
+ staticList_g:{},
+ beforeStrList_g:[],
+ tableHeigth_g:400,
+ // 表格 - 产品丝印用2D图档
+ table_title_h:'产品丝印用2D图档',
+ listHeader_h:[],
+ loading_h:false,
+ defaultRow_h:[],
+ tableHeader_h:[],
+ notShowCol_h:[],
+ staticList_h:{},
+ beforeStrList_h:[],
+ tableHeigth_h:400,
+ // 表格 - 结构件标准模块
+ table_title_i:'结构件标准模块',
+ listHeader_i:[],
+ loading_i:false,
+ defaultRow_i:[],
+ tableHeader_i:[],
+ notShowCol_i:[],
+ staticList_i:{},
+ beforeStrList_i:[],
+ tableHeigth_i:400,
+ // 表格 - 开模资料及图档
+ table_title_j:'开模资料及图档',
+ loading_j:false,
+ listHeader_j:[],
+ defaultRow_j:[],
+ tableHeader_j:[],
+ notShowCol_j:[],
+ staticList_j:{},
+ beforeStrList_j:[],
+ tableHeigth_j:400,
+ // 表格 - 结构件承认书承认
+ table_title_k:'结构件承认书承认',
+ listHeader_k:[],
+ loading_k:false,
+ defaultRow_k:[],
+ tableHeader_k:[],
+ notShowCol_k:[],
+ staticList_k:{},
+ beforeStrList_k:[],
+ tableHeigth_k:400,
+ // 表格 - 专利申请图档及技术交底书
+ table_title_l:'专利申请图档及技术交底书',
+ listHeader_l:[],
+ defaultRow_l:[],
+ loading_l:false,
+ tableHeader_l:[],
+ notShowCol_l:[],
+ staticList_l:{},
+ beforeStrList_l:[],
+ tableHeigth_l:400,
+ // 共享盘链接
+ writeLinksCode:'',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ btnTamplteListC:[],
+ btnTamplteListP:[],
+ btnTamplteListA:[],
+ btnTamplteListB:[],
+ btnTamplteListD:[],
+ btnTamplteListE:[],
+ btnTamplteListF:[],
+ btnTamplteListG:[],
+ btnTamplteListH:[],
+ btnTamplteListI:[],
+ btnTamplteListJ:[],
+ btnTamplteListK:[],
+ btnTamplteListL:[],
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:'',
+ tableAfterArr:['c','p','a','b','d','e','f','g','h','i','j','k','l'],
+}
diff --git a/src/utils/lc_jx_utils/lc_jx.js b/src/utils/lc_jx_utils/lc_jx.js
new file mode 100644
index 0000000..5721a88
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_jx.js
@@ -0,0 +1,265 @@
+/**
+ * @Description : 公共请求方法 - 工具方法
+ * @Author : jinxin
+ * @Date : 2023-02-13 16:29:05
+ */
+import Request from '@/utils/request'
+
+// 公共 - 人员变更数据
+export async function getComUser(val = 1) {
+ let userlist = []
+ await new Request().get('project/data/user', {
+ page: val,
+ size: 1000
+ }).then(res => {
+ userlist = res.data
+ })
+ return userlist
+}
+
+// 公共 - 分类列表数据
+export async function getComCate(val = 1) {
+ let catelist = []
+ await new Request().get('project/data/cate', {
+ page: val
+ }).then(res => {
+ catelist = res.data
+ })
+ return catelist
+}
+
+// 公共 - 品牌列表数据
+export async function getComBrand(val = 1) {
+ let brandlist = []
+ await new Request().get('project/data/brand', {
+ page: val
+ }).then(res => {
+ brandlist = res.data
+ })
+ return brandlist
+}
+
+// 公共 - 项目任务基础数据
+export async function getComTaskData(val = 1) {
+ let tasklist = []
+ await new Request().get('project/data/base_task_data', {
+ page: val
+ }).then(res => {
+ tasklist = res.data
+ })
+ return tasklist
+}
+
+// 公共 - 数据转变 object key nickname --> name
+export function changeObjKey(val) {
+ let obj = []
+ val.forEach(it => {
+ obj.push({
+ id: it.id,
+ name: it.nickname
+ })
+ });
+ return obj
+}
+
+// 私有 - 获取 认证信息列表
+export async function getAuthListData(val) {
+ let arr = []
+ await new Request().get('project/task/certAuth/authList'), then(res => {
+ arr = res.data
+ })
+ return arr
+}
+
+// 公共 - 顶部按钮组 - 保存
+export async function topBtnSave(url, query) {
+ let arr = {}
+ await new Request().post(url, query).then(res => {
+ arr = res
+ })
+ return arr
+}
+
+// 公共 - 请求数据拼接 - 用,号隔开 - 去除最后一个,
+export function jointStrQuery(arr) {
+ let delidlist = []
+ let joinId = ''
+ arr.forEach(el => {
+ delidlist.push(el.id)
+ });
+ delidlist.forEach(el => {
+ joinId = joinId + el + ','
+ });
+ if (joinId.charAt(joinId.length - 1) == ',') {
+ joinId = joinId.slice(0, joinId.length - 1)
+ }
+ return joinId
+}
+
+// 公共 - 传递值 获取人员 list - 值
+export function requestPersonListTransfer(ori, rlist) {
+ let newList = changeObjKey(rlist)
+ let arr = JSON.parse(JSON.stringify(ori))
+ arr.forEach(el => {
+ if (el.list) {
+ el.list = newList
+ }
+ });
+ return arr
+}
+
+// 项目资料
+export async function getProjectInfo(id) {
+ let arr = []
+ await new Request().get('project/project/file', {
+ project_id: id
+ }).then(res => {
+ arr = res
+ })
+ return arr
+}
+
+// 公共 - 数据值的转换
+export function queryDataConversion(list) {
+ let newlist = []
+ list.forEach(el => {
+ el.examine_status = el.examine_status == -1 ? '全部' : el.examine_status == 0 ? '未提交' : el.examine_status == 10 ? '未审核' : el.examine_status == 20 ? '已结束' : ''
+ el.task_status = el.task_status == -1 ? '全部' : el.task_status == 0 ? '排期等待' : el.task_status == 10 ? '进行中' : el.task_status == 20 ? '暂停' : el.task_status == 30 ? '已结束' : ''
+ newlist.push(el)
+ });
+ return newlist
+}
+
+// 公共 - 路由跳转 - 链接获取
+export function routeLinksConversion(id) {
+ let url = ''
+ url = id == 1 ? 'scfx' : id == 2 ? 'ggdy' : id == 3 ? 'zscqxq' : id == 4 ? 'rzxq' : id == 5 ? 'bzyx' : id == 6 ? 'bzljxz' :
+ id == 7 ? 'gysj' : id == 8 ? 'cpplfb' : id == 9 ? 'jgsj' : id == 10 ? 'dzsj' : id == 11 ? 'zscqsq' : id == 14 ? 'wlbj' : id == 18 ? 'cpzl' : id == 19 ? 'spddxq' : id == 20 ? 'dj' :
+ id == 21 ? 'km' : id == 22 ? 'bzsj' : id == 23 ? 'bl' : id == 24 ? 'skuinfo' : id == 25 ? 'sczl' ? id == 26 ? 'xxlr' : id == 29 : 'zlsh' : id == 30 ? 'spxd' : id == 27 ? 'rz' : ''
+ if (id == 29) {
+ url = 'zlsh'
+ }
+ if (id == 26) {
+ url = 'xxlr'
+ }
+ if (id == 25) {
+ url = 'sczl'
+ }
+ return url
+}
+
+// 公共 - 所有数据
+export async function getAllInfo(queryId, url) {
+ let obj = []
+ await new Request().get(url, {
+ id: queryId
+ }).then(res => {
+ obj = res.data
+ })
+ return obj
+}
+
+// 公共 - 基础信息 - 输出文件
+export function getBaseInfo(ori, rlist) {
+ let newlist = JSON.parse(JSON.stringify(ori))
+ newlist.forEach(el => {
+ for (const key in el) {
+ if (key == 'field' && rlist[el[key]]) {
+ el.value = rlist[el[key]]
+ }
+ }
+ });
+ return newlist
+}
+
+// 公共 - 输出文件
+export function getBaseInfoFile(list, tag) {
+ let newlist = JSON.parse(JSON.stringify(list))
+ newlist.forEach(el => {
+ if (el.url_type == 'file' || (tag && tag == 'file')) {
+ el.downLoadUrl = el.url
+ el.isDownLoadShow = 'yes'
+ }
+ });
+ return newlist
+}
+
+// 公共 - 获取当前时间 年-月-日 时-分-秒
+export function getComCurrentDate() {
+ const date = new Date();
+ const Y = date.getFullYear() + '/';
+ const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';
+ const D = date.getDate() + ' ';
+ const h = date.getHours() + ':';
+ const m = date.getMinutes() + ':';
+ const s = date.getSeconds();
+ const dateString = Y + M + D + h + m + s;
+ return dateString;
+}
+
+// 公共 - 添加序号
+export function addOrderNumber(iArr) {
+ if (iArr && iArr.length > 0) {
+ let newArr = JSON.parse(JSON.stringify(iArr))
+ let num = 1
+ newArr.forEach(el => {
+ el.index = num++
+ });
+ return newArr
+ }
+}
+
+// 公共 - 规格定义 - 添加 结构BOM - 包装BOM - 查看
+export function addBomFieldCK(iArr) {
+ if (iArr && iArr.length > 0) {
+ let newArr = JSON.parse(JSON.stringify(iArr))
+ newArr.forEach(el => {
+ el.links_qd_bom_text = '查看'
+ el.links_bz_bom_text = '查看'
+ });
+ return newArr
+ }
+}
+
+// 公共 - 0|1 - 转换 boolean
+export function zeroOneChangeValue(list) {
+ if (list && list.length > 0) {
+ let newArr = JSON.parse(JSON.stringify(list))
+ newArr.forEach(item => {
+ item.status = item.status ? true : false
+ });
+ return newArr
+ }
+}
+
+// 公共 - 0|1 - 转换 boolean
+export function zeroOneChangeValueKeys(list) {
+ let newArr = JSON.parse(JSON.stringify(list))
+ newArr.forEach(item => {
+ item.status = item.status ? true : false
+ item.name = item.country
+ item.key = item.code
+ });
+ return newArr
+}
+
+// 公共 checkbox 集合 获取需要的key 值提交
+export function checkboxGetKeys(list) {
+ let newArr = []
+ let newList = JSON.parse(JSON.stringify(list))
+ newList.forEach(item => {
+ if (item.status) {
+ newArr.push(item.key)
+ }
+ });
+ return newArr
+}
+
+// 公共 - 包装原型
+export function getImageShowUrl(list) {
+ let newlist = JSON.parse(JSON.stringify(list))
+ newlist.forEach(el => {
+ el.cover = el.image
+ });
+ return newlist
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_packingbom_json.js b/src/utils/lc_jx_utils/lc_packingbom_json.js
new file mode 100644
index 0000000..1d728e0
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_packingbom_json.js
@@ -0,0 +1,82 @@
+// 私有 表格 - 结构BOM - columns
+export const tableColumns = [{
+
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sn',
+ title: '物料编码',
+ width: '168',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'name',
+ title: '物料名称',
+ width: '168',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sku',
+ title: '物料规格型号',
+ width: '620',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'molecule',
+ title: '用量(分子)',
+ width: '168',
+ align: 'right'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'denominator',
+ title: '用量(分母)',
+ width: '168',
+ align: 'right'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'total',
+ title: '总价(¥)',
+ width: '168',
+ align: 'right'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'price',
+ title: '单价(¥)',
+ width: '168',
+ align: 'right'
+ },
+]
+
+// 私有 表格 - 结构BOM - 默认值
+export const tableDefaultVal = [{
+ index: 1,
+ sn: '',
+ name: '',
+ sku: '',
+ fz: '',
+ fm: '',
+ total: '',
+ price: '',
+}]
+
+// 私有 表格 - 结构BOM - 表头按钮
+export const tableHeaderBtns = [{
+ name: '新增行',
+ type: 'add',
+ style_self: 'btn'
+ },
+ {
+ name: '删除行',
+ type: 'del',
+ style_self: 'btn'
+ }
+]
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_rzxq_json.js b/src/utils/lc_jx_utils/lc_rzxq_json.js
new file mode 100644
index 0000000..03d4c86
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_rzxq_json.js
@@ -0,0 +1,66 @@
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 - 复选框组 - 配置json
+export const basecheckboxs = [
+ {value:'',name:'欧盟',field:'jb'},
+ {value:'',name:'英国',field:'wg'},
+ {value:'',name:'美国',field:'sy'},
+ {value:'',name:'加拿大',field:'fm'},
+ {value:'',name:'日本',field:'rb'},
+ {value:'',name:'中国',field:'zg'},
+ {value:'',name:'韩国',field:'hg'},
+ {value:'',name:'台湾',field:'tw'},
+ {value:'',name:'澳洲',field:'az'},
+ {value:'',name:'俄罗斯',field:'els'},
+ {value:'',name:'运输',field:'ys'}
+]
+
+export const _data = {
+ topBtns:[],
+ baseInfoList:[],
+ checkbox_box_title:'知认产权需求',
+ checkbox_title:'需求国家/类型',
+ checkboxlist:[],
+ remarks_title:'备注',
+ remarks_vale:'',
+ manysellabel:'认证类型',
+ manysellist:[],
+ manyselvallist:[{value:'1',label:'选择1'},{value:'2',label:'选择2'},{value:'3',label:'选择3'},{value:'4',label:'选择4'}],
+ // 项目资料
+ title:'',
+ isShowDialogIndex:1,
+ isShowDialog:false,
+ project_id:null,
+ tasklist:[],
+ projectList:[],
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: []
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_scfx_json.js b/src/utils/lc_jx_utils/lc_scfx_json.js
new file mode 100644
index 0000000..573f408
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_scfx_json.js
@@ -0,0 +1,85 @@
+
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'',field:'project_name'},
+ {label:'预计开始',type:'date',value:'',field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:'',field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:'',field:'end_time_text'},
+]
+
+// 私有 表格 - columns
+export const tableColumns = [
+ { type: 'text', field: 'title', title: '文件名称', width: '412', align: 'center' },
+ { type: 'text', field: 'create_time', title: '上传时间', width: '412', align: 'center' },
+ { type: 'operation',field:'operation',title:'操作',width:'412',align: 'center' },
+ { type: 'editable_ipt', field: 'remark', title: '备注', width: '412', align: 'center' },
+]
+
+// 私有 表格 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表头按钮
+export const tableHeaderBtns = [
+ // {name:'下载模板',type:'download',style_self:'btn'},
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'填写共享盘链接',type:'write_links',style_self:'btn'}
+]
+
+export const _data = {
+ // 按钮组
+ topBtns:[],
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ title:'项目输出资料表',
+ personType:'',
+ project_id:null,
+ tasklist:[],
+ projectList:[],
+ // 基础信息
+ baseInfoList:[],
+ // 表格
+ loading:false,
+ table_title:'输出文件',
+ listHeader:[],
+ defaultRow:[],
+ tableHeader:[],
+ notShowCol:[],
+ staticList:{},
+ beforeStrList:[],
+ tableHeigth:372,
+ linksTitle:'填写共享盘链接',
+ isShowLinksDialog:false,
+ isShowLinksDialogIndex:1,
+ btnTamplteList:[],
+ // 公共弹窗
+ LcSingleIndex:1,
+ isShowDialogBtns:false,
+ dia_type:null,
+ dia_label:'',
+ dia_title:'',
+ dia_list:[],
+ // 备注
+ remarksIndex:1,
+ remarks_title:'备注',
+ remarks_vale:'',
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_strucbom_json.js b/src/utils/lc_jx_utils/lc_strucbom_json.js
new file mode 100644
index 0000000..382b194
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_strucbom_json.js
@@ -0,0 +1,85 @@
+// 私有 表格 - 结构BOM - columns
+export const tableColumns = [{
+
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'bom_code',
+ title: '物料编码',
+ width: '168',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'bom_name',
+ title: '物料名称',
+ width: '168',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'bom_desc',
+ title: '物料规格型号',
+ width: '620',
+ align: 'left'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'molecule',
+ title: '分子',
+ width: '168',
+ align: 'right'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'denominator',
+ title: '分母',
+ width: '168',
+ align: 'right'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'price',
+ title: '单价',
+ width: '',
+ align: 'right'
+ },
+ {
+ type: 'text_count',
+ field: 'total_price',
+ title: '总价',
+ width: '',
+ align: 'right',
+ count: 'molecule|/|denominator|*|price'
+ },
+
+
+]
+
+// 私有 表格 - 结构BOM - 默认值
+export const tableDefaultVal = [{
+ index: 1,
+ sn: '',
+ name: '',
+ sku: '',
+ molecule: '',
+ denominator: '',
+ total: '',
+ price: '',
+}]
+
+// 私有 表格 - 结构BOM - 表头按钮
+export const tableHeaderBtns = [{
+ name: '新增行',
+ type: 'add',
+ style_self: 'btn'
+ },
+ {
+ name: '删除行',
+ type: 'del',
+ style_self: 'btn'
+ }
+]
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_task_json.js b/src/utils/lc_jx_utils/lc_task_json.js
new file mode 100644
index 0000000..17a5883
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_task_json.js
@@ -0,0 +1,274 @@
+// 私有 - 任务管理列表 - 搜索数据
+export const searchs = [
+ [{
+ label: '任务编号',
+ value: '',
+ placeholder: '请输入任务名称',
+ type: 'ipt',
+ field: 'id'
+ },
+ {
+ label: '任务名称',
+ value: '',
+ placeholder: '请输入任务负责人',
+ type: 'ipt',
+ field: 'name'
+ },
+ {
+ label: '任务负责人',
+ value: '',
+ placeholder: '请输入项目名称',
+ type: 'sel',
+ field: 'leader_user_id',
+ list: []
+ },
+ {
+ label: '业务状态',
+ value: -1,
+ placeholder: '请输入任务状态',
+ type: 'sel',
+ field: 'task_status',
+ list: [{
+ id: -1,
+ name: '全部'
+ }, {
+ id: 0,
+ name: '未提交'
+ }, {
+ id: 10,
+ name: '未审核'
+ }, {
+ id: 20,
+ name: '未下推'
+ }, {
+ id: 30,
+ name: '已结束'
+ }]
+ },
+ {
+ label: '审核状态',
+ value: -1,
+ placeholder: '请输入审核状态',
+ type: 'sel',
+ field: 'examine_status',
+ list: [{
+ id: -1,
+ name: '全部'
+ }, {
+ id: 0,
+ name: '排期等待'
+ }, {
+ id: 10,
+ name: '进行中'
+ }, {
+ id: 20,
+ name: '暂停'
+ }, {
+ id: 30,
+ name: '已结束'
+ }]
+ },
+ ],
+ [{
+ label: '完成日期',
+ value: '',
+ placeholder: '请输入默认供应商',
+ type: 'date',
+ field: 'end_time'
+ },
+ {
+ label: '预计开始日期',
+ value: '',
+ placeholder: '请输入默认供应组织',
+ type: 'date',
+ field: 'plan_start_time'
+ },
+ {
+ label: '所属项目名称',
+ value: '',
+ placeholder: '请输入默认供应组织',
+ type: 'ipt',
+ field: 'project_name'
+ },
+ {
+ label: '空',
+ type: 'spec'
+ },
+ {
+ type: 'searchReset',
+ url: 'v1/product',
+ }
+ ]
+]
+
+// 私有 表格 - columns
+export const tableColumns = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'text',
+ field: 'sn',
+ title: '任务编号',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'project_name',
+ title: '所属项目名称',
+ width: '280',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'name',
+ title: '任务名称',
+ width: '180',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'leader_user_name',
+ title: '任务负责人',
+ width: '120',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'reviewer_user_name',
+ title: '任务审核人',
+ width: '120',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'task_status_text',
+ title: '业务状态',
+ width: '120',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'examine_status_text',
+ title: '审核状态',
+ width: '120',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'plan_start_time_text',
+ title: '预计开始日期',
+ width: '220',
+ align: 'left'
+ },
+ {
+ type: 'text',
+ field: 'end_time_text',
+ title: '任务完成日期',
+ width: '',
+ align: 'left'
+ },
+]
+
+// 私有 表格 - 默认值
+export const tableDefaultVal = [{
+ id: null, // 任务编码
+ project_name: '', //所属项目名称
+ name: '', // 任务名称
+ leader_user_name: '', //任务负责人
+ reviewer_user_name: '', // 任务审核人
+ task_status: '', // 业务状态
+ examine_status: '', // 审核状态
+ plan_start_time: '', // 预计开始时间
+ start_time: '', // 任务开始时间
+ end_time: '', // 任务结束时间
+}]
+
+// 私有 表头按钮
+export const tableHeaderBtns = [{
+ name: '状态操作',
+ type: 'oper_status',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '排期',
+ type: 'pq'
+ }, {
+ id: 2,
+ name: '转派',
+ type: 'zp'
+ }, {
+ id: 3,
+ name: '暂停',
+ type: 'zt'
+ }]
+ },
+ {
+ name: '提交',
+ type: 'oper_commit',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '提交',
+ type: 'tj'
+ }, {
+ id: 2,
+ name: '撤消',
+ type: 'cx'
+ }]
+ },
+ {
+ name: '通过',
+ type: 'pass',
+ style_self: 'btn_n_drag',
+ color: true
+ },
+ {
+ name: '人员变更',
+ type: 'sel_single',
+ style_self: 'btn_n_drag',
+ color: true
+ },
+ // {name:'我的待办',type:'check_box',style_self:'btn_checkout'}
+]
+
+export const _data = {
+ // 搜索组
+ diySerach: [],
+ noticedata: 1,
+ options: [],
+ searchQuery: {},
+ selRow: [],
+ my: 1,
+ // 表格
+ listHeader: [],
+ defaultRow: [],
+ mergeColData: [],
+ tableHeader: [],
+ beforeStrList: [],
+ tasklsittable: [],
+ staticList: {
+ mtlist: []
+ },
+ notShowCol: [],
+ singleChangeList: [],
+ singleLabel: '任务审核人',
+ singleTitle: '人员变更',
+ storeJointIds: '',
+ tableHeigth: 600,
+ // 分页
+ page: 1,
+ size: 10,
+ count: 0,
+ // 共公弹窗
+ LcSingleIndex: 1,
+ isShowDialog: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: []
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_template_json.js b/src/utils/lc_jx_utils/lc_template_json.js
new file mode 100644
index 0000000..b066c58
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_template_json.js
@@ -0,0 +1,45 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 私有 - 任务管理列表 - 搜索数据
+export const searchs = [
+ [
+ { label: '任务名称', value: '', placeholder: '请选择', type: 'sel', field: 'task_id',list:[]},
+ { label: '模板名称', value: '', placeholder: '请输入', type: 'ipt', field: 'name'},
+ {
+ type: 'searchReset',url: 'v1/product',
+ },
+ {
+ label: '空',
+ type: 'spec'
+ },
+ {
+ label: '空',
+ type: 'spec'
+ }
+ ]
+]
+
+// 私有 表格 - columns
+export const tableColumns = [
+ { type: 'text', field: 'id', title: '模板编号', width: '300', align: 'center' },
+ { type: 'text', field: 'task_name', title: '所属任务', width: '200', align: 'center' },
+ { type: 'text', field: 'filename', title: '文件名称', width: '400', align: 'center' },
+ { type: 'operation', field: 'operation', title: '操作', width: '250', align: 'center' },
+ { type: 'text', field: 'remark', title: '备注', width: '', align: 'center' }
+ ]
+
+// 私有 表格 - 默认值
+export const tableDefaultVal = [{
+ code: '', //所属项目名称
+ file_name: '', // 任务名称
+ filename: '', //文件名
+ operation: '', // 操作
+ remark: '', // 业务状态
+ isDownLoadShow: 'y'
+}]
+
+// 私有 表头按钮
+export const tableHeaderBtns = [
+ {name:'文件上传',type:'upload_file',style_self:'btn_upload',upload_url:baseUrl + 'project/upload/file'},
+ {name:'保存备注',type:'saveBz',style_self:'btn',},
+]
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_zxcqsq_json.js b/src/utils/lc_jx_utils/lc_zxcqsq_json.js
new file mode 100644
index 0000000..2f09419
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_zxcqsq_json.js
@@ -0,0 +1,639 @@
+const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+const baseUrl = process.env.VUE_APP_API_BASEURL + apiVersion + '/'
+// 私有 - 按钮组 - 配置json
+export const btns = [{
+ name: '保存',
+ type: 'btn_save',
+ style_self: 'btn_n_drag',
+ color: true
+ },
+ {
+ name: '状态操作',
+ type: 'oper_status',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '排期',
+ type: 'pq'
+ }, {
+ id: 2,
+ name: '转派',
+ type: 'zp'
+ }, {
+ id: 3,
+ name: '暂停',
+ type: 'zt'
+ }]
+ },
+ {
+ name: '提交',
+ type: 'oper_commit',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '提交',
+ type: 'tj'
+ }, {
+ id: 2,
+ name: '撤消',
+ type: 'cx'
+ }]
+ },
+ {
+ name: '审核',
+ type: 'oper_process',
+ style_self: 'btn_y_drag',
+ color: true,
+ drag: [{
+ id: 1,
+ name: '通过',
+ type: 'tg'
+ }, {
+ id: 2,
+ name: '驳回',
+ type: 'bh'
+ }]
+ },
+ {
+ name: '项目资料',
+ type: 'btn_info',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ },
+ {
+ name: '人员变更',
+ type: 'btn_person',
+ style_self: 'btn_n_drag',
+ color: true,
+ btn_type: 'popup'
+ }
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [{
+ label: '任务编码',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'sn'
+ },
+ {
+ label: '任务名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'name'
+ },
+ {
+ label: '任务负责人',
+ type: 'sel',
+ value: null,
+ field: 'leader_user_id',
+ list: []
+ },
+ {
+ label: '任务审核人',
+ type: 'sel',
+ value: null,
+ field: 'reviewer_user_id',
+ list: []
+ },
+ {
+ label: '业务状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'task_status_text'
+ },
+ {
+ label: '任务审核状态',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'examine_status_text'
+ },
+ {
+ label: '所属项目编号',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_id'
+ },
+ {
+ label: '所属项目名称',
+ type: 'ipt_disable',
+ value: 'SCFX001',
+ field: 'project_name'
+ },
+ {
+ label: '预计开始',
+ type: 'date',
+ value: [],
+ field: 'plan_start_time_text'
+ },
+ {
+ label: '预计完成',
+ type: 'date',
+ value: [],
+ field: 'plan_end_time_text'
+ },
+ {
+ label: '完成日期',
+ type: 'date_disable',
+ value: [],
+ field: 'end_time_text'
+ },
+]
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns = [{
+ type: 'checkbox',
+ align: 'center',
+ width: '50'
+ },
+ {
+ type: 'index',
+ field: 'index',
+ title: '序号',
+ width: '50',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'name',
+ title: '产品名称',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'img_upload',
+ field: 'image',
+ title: '产品图片',
+ width: '100',
+ align: 'center',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'spu',
+ title: '产品SPU',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'sku',
+ title: '产品规格型号(SKU)',
+ width: '200',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_qd_bom_text',
+ title: '结构BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'router',
+ field: 'links_bz_bom_text',
+ title: '包装BOM清单',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'material',
+ title: '产品材质',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'protocol',
+ title: '协议',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'rate',
+ title: '速率',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'package',
+ title: '包装',
+ width: '100',
+ align: 'center',
+ beforeStr: 'bz'
+ },
+ {
+ type: 'editable_sel',
+ field: 'safe',
+ title: '安规',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ag'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'interface',
+ title: '接口(输入)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'other',
+ title: '尺码/数量/长度',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_sel',
+ field: 'color',
+ title: '产品颜色',
+ width: '100',
+ align: 'center',
+ beforeStr: 'ys'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'version',
+ title: '功能/版本',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt',
+ field: 'output',
+ title: '输出接口',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'material_num',
+ title: '备料数量',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_integer',
+ field: 'order_num',
+ title: '首批订单数量',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_sj',
+ title: '模具费(塑胶)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_fare_wj',
+ title: '模具费(五金)',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'electron_fare',
+ title: '电子',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'structure_fare',
+ title: '结构',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'line_fare',
+ title: '线材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'package_fare',
+ title: '包材',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'parts_fare',
+ title: '配件',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'process_fare',
+ title: '加工费用',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'auth_test_fare',
+ title: '认证/测试费用',
+ width: '140',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'total_cost',
+ title: '总成本(未摊模具)',
+ width: '160',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'mould_cost',
+ title: '含摊模具成本(工厂出厂成本)',
+ width: '240',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'tco_cost',
+ title: 'TCO成本',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'tco_rate',
+ title: 'TCO毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'tco_cost|-|mould_cost|/|tco_cost'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'agent_price',
+ title: '代理商价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'channel_rate',
+ title: '渠道毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'agent_price|-|tco_cost|/|agent_price'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'distribution_price',
+ title: '经销价',
+ width: '100',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'distribution_rate',
+ title: '经销商毛利率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|distribution_price|/|min_retail_price'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'retail_price',
+ title: '建议零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'editable_ipt_float',
+ field: 'min_retail_price',
+ title: '最低零售价',
+ width: '120',
+ align: 'center'
+ },
+ {
+ type: 'text_count',
+ field: 'b2c_rate',
+ title: 'B2C毛利润率',
+ width: '120',
+ align: 'center',
+ count: 'min_retail_price|-|tco_cost|/|min_retail_price'
+ }
+]
+
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal = []
+
+// 私有 表格 - 输入文件 - 表头按钮
+export const tableHeaderBtns = [{
+ name: '选择显示字段',
+ type: 'popup',
+ style_self: 'btn'
+ },
+ {
+ name: '导入SKU',
+ type: 'import_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导出SKU',
+ type: 'export_sku',
+ style_self: 'btn'
+ },
+ {
+ name: '导入结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ },
+ {
+ name: '导出结构BOM表',
+ type: 'import_bom',
+ style_self: 'btn'
+ }
+]
+
+
+// 私有 表格 - 输出文件 - columns
+export const tableColumns_c = [{
+ type: 'editable_ipt',
+ field: 'remark',
+ title: '备注',
+ width: '',
+ align: 'center'
+ },
+ {
+ type: 'operation',
+ field: 'operation',
+ title: '操作',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'create_time',
+ title: '上传时间',
+ width: '412',
+ align: 'center'
+ },
+ {
+ type: 'text',
+ field: 'title',
+ title: '文件名称',
+ width: '412',
+ align: 'center'
+ },
+]
+
+// 私有 表格 - 输出文件 - 默认值
+export const tableDefaultVal_c = []
+
+// 私有 表格 - 输出文件 - 表头按钮
+export const tableHeaderBtns_c = [{
+ name: '下载模板',
+ type: 'download',
+ style_self: 'btn'
+ },
+ {
+ name: '文件上传',
+ type: 'upload_file',
+ style_self: 'btn_upload',
+ upload_url: baseUrl + 'project/upload/file'
+ },
+ {
+ name: '填写共享盘链接',
+ type: 'write_links',
+ style_self: 'btn'
+ }
+]
+
+// 私有 data 数据
+export const _data = {
+ // 按钮组
+ topBtns: [],
+ isShowDialog: false,
+ isShowDialogIndex: 1,
+ title: '项目输出资料表',
+ // 基础信息
+ baseInfoList: [],
+ isShowTitleIcon: true,
+ // 表格 - 输出文件
+ table_title: '输入文件',
+ listHeader: [],
+ defaultRow: [],
+ tableHeader: [],
+ notShowCol: [],
+ staticList: {},
+ beforeStrList: ['bz', 'ag', 'ys'],
+ tableHeigth: 400,
+ // 表格 - 技术交底书
+ table_title_two: '输出文件',
+ loading_c: false,
+ table_title_c: '技术交底书',
+ listHeader_c: [],
+ defaultRow_c: [],
+ tableHeader_c: [],
+ notShowCol_c: [],
+ staticList_c: {},
+ beforeStrList_c: [],
+ tableHeigth_c: 400,
+ // 表格 - cad六视图/渲染效果图
+ table_title_p: 'cad六视图/渲染效果图',
+ loading_p: false,
+ listHeader_p: [],
+ defaultRow_p: [],
+ tableHeader_p: [],
+ notShowCol_p: [],
+ staticList_p: {},
+ beforeStrList_p: [],
+ tableHeigth_p: 400,
+ // 共享盘链接
+ writeLinksCode: '',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ btnTamplteListC: [],
+ btnTamplteListP: [],
+ // 备注
+ remarks_title: '备注',
+ remarks_vale: '',
+ tableAfterArr: ['c', 'p'],
+}
+
+// 私有 data 数据
+export const _datarz = {
+ // 按钮组
+ topBtns: [],
+ isShowDialog: false,
+ isShowDialogIndex: 1,
+ title: '项目输出资料表',
+ // 基础信息
+ baseInfoList: [],
+ isShowTitleIcon: true,
+ // 表格 - 输出文件
+ table_title: '输入文件',
+ listHeader: [],
+ defaultRow: [],
+ tableHeader: [],
+ notShowCol: [],
+ staticList: {},
+ beforeStrList: ['bz', 'ag', 'ys'],
+ tableHeigth: 400,
+ // 表格 - 认证报告
+ table_title_two: '输出文件',
+ loading_c: false,
+ table_title_c: '认证报告',
+ listHeader_c: [],
+ defaultRow_c: [],
+ tableHeader_c: [],
+ notShowCol_c: [],
+ staticList_c: {},
+ beforeStrList_c: [],
+ tableHeigth_c: 400,
+ // 表格 - 认证报告
+ table_title_p: '认证证书',
+ loading_p: false,
+ listHeader_p: [],
+ defaultRow_p: [],
+ tableHeader_p: [],
+ notShowCol_p: [],
+ staticList_p: {},
+ beforeStrList_p: [],
+ tableHeigth_p: 400,
+ // 共享盘链接
+ writeLinksCode: '',
+ linksTitle: '填写共享盘链接',
+ isShowLinksDialog: false,
+ isShowLinksDialogIndex: 1,
+ // 公共弹窗
+ LcSingleIndex: 1,
+ isShowDialogBtns: false,
+ dia_type: null,
+ dia_label: '',
+ dia_title: '',
+ dia_list: [],
+ btnTamplteListC: [],
+ btnTamplteListP: [],
+ // 备注
+ remarks_title: '备注',
+ remarks_vale: '',
+ tableAfterArr: ['c', 'p'],
+}
\ No newline at end of file
diff --git a/src/utils/lc_jx_utils/lc_zxcqxq_json.js b/src/utils/lc_jx_utils/lc_zxcqxq_json.js
new file mode 100644
index 0000000..491e0b8
--- /dev/null
+++ b/src/utils/lc_jx_utils/lc_zxcqxq_json.js
@@ -0,0 +1,70 @@
+// 私有 - 按钮组 - 配置json
+export const btns = [
+ {name:'保存',type:'btn_save',style_self:'btn_n_drag',color:true},
+ {name:'状态操作',type:'oper_status',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '排期',type:'pq' }, { id: 2, name: '转派',type:'zp' }, { id: 3, name: '暂停',type:'zt' }]},
+ {name:'提交',type:'oper_commit',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '提交',type:'tj' }, { id: 2, name: '撤消',type:'cx' }]},
+ {name:'审核',type:'oper_process',style_self:'btn_y_drag',color:true,drag:[{ id: 1, name: '通过',type:'tg' }, { id: 2, name: '驳回',type:'bh' }]},
+ {name:'项目资料',type:'btn_info',style_self:'btn_n_drag',color:true,btn_type:'popup'},
+ {name:'人员变更',type:'btn_person',style_self:'btn_n_drag',color:true,btn_type:'popup'}
+]
+
+// 私有 - 基础信息 - 配置json
+export const baseInfos = [
+ {label:'任务编码',type:'ipt_disable',value:'SCFX001',field:'sn'},
+ {label:'任务名称',type:'ipt_disable',value:'SCFX001',field:'name'},
+ {label:'任务负责人',type:'sel',value:null,field:'leader_user_id',list:[]},
+ {label:'任务审核人',type:'sel',value:null,field:'reviewer_user_id',list:[]},
+ {label:'业务状态',type:'ipt_disable',value:'SCFX001',field:'task_status_text'},
+ {label:'任务审核状态',type:'ipt_disable',value:'SCFX001',field:'examine_status_text'},
+ {label:'所属项目编号',type:'ipt_disable',value:'SCFX001',field:'project_id'},
+ {label:'所属项目名称',type:'ipt_disable',value:'SCFX001',field:'project_name'},
+ {label:'预计开始',type:'date',value:[],field:'plan_start_time_text'},
+ {label:'预计完成',type:'date',value:[],field:'plan_end_time_text'},
+ {label:'完成日期',type:'date_disable',value:[],field:'end_time_text'},
+]
+
+// 私有 - 复选框组 - 配置json
+export const basecheckboxs = [
+ {value:'',name:'局部专利',field:'jb'},
+ {value:'',name:'外观专利',field:'wg'},
+ {value:'',name:'实用新型专利',field:'sy'},
+ {value:'',name:'发明专利',field:'fm'},
+ {value:'',name:'软件著作权',field:'rj'},
+]
+
+// 私有 - 复选框组 - 配置json
+export const basecheckboxs_gj = [
+ {value:'',name:'中国',field:'zg'},
+ {value:'',name:'英国',field:'yg'},
+ {value:'',name:'美国',field:'mg'},
+ {value:'',name:'欧洲',field:'og'},
+ {value:'',name:'日本',field:'rb'},
+ {value:'',name:'澳洲',field:'az'},
+]
+
+export const _data = {
+ topBtns:[],
+ baseInfoList:[],
+ checkbox_box_title:'知认产权需求',
+ checkbox_title:'专利类型',
+ checkboxlist:[],
+ checkbox_title_gj:'国家',
+ checkboxlist_gj:[],
+ // 项目资料
+ title:'项目输出资料表',
+ project_id:null,
+ isShowDialog:false,
+ isShowDialogIndex:1,
+ tasklist:[],
+ projectList:[],
+ // 公共弹窗
+ LcSingleIndex:1,
+ isShowDialogBtns:false,
+ dia_type:null,
+ dia_label:'',
+ dia_title:'',
+ dia_list:[],
+ // 备注
+ remarks_title:'备注',
+ remarks_vale:'',
+}
\ No newline at end of file
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..17a0ad8
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,165 @@
+import axios from 'axios'
+import router from '@/router'
+import {
+ ElLoading,
+ ElMessage
+} from 'element-plus'
+import {
+ setNotLoggedIn
+} from '@/utils/auth'
+
+export default class Request {
+ http
+ isMock = false
+ isJWT = false
+ loadingInstance
+ loading = true
+ constructor() {
+ const apiVersion = process.env.VUE_APP_API_VERSION.replace(/\./g, '_')
+ this.http = axios.create({
+ baseURL: process.env.VUE_APP_API_BASEURL + apiVersion + '/',
+ timeout: 2000000,
+ withCredentials: true
+ })
+
+ this.interceptors()
+ }
+
+ mock(mock) {
+ this.isMock = mock
+ return this
+ }
+
+ JWT() {
+ this.isJWT = true
+ // this.http.defaults.headers.common['isJWT'] = true;
+ }
+
+ showLoading(show) {
+ this.loading = show
+ return this
+ }
+
+ post(path, params) {
+ let config = {}
+ if (this.isMock) config = {
+ baseURL: process.env.VUE_APP_API_MOCK
+ }
+ return new Promise((resolve, reject) => {
+ this.http
+ .post(path, params, config)
+ .then(r => {
+ resolve(r)
+ })
+ .catch(e => {
+ reject(e.message)
+ })
+ })
+ }
+
+ get(path, params) {
+ const data = {
+ params: params
+ }
+ if (this.isMock) data.baseURL = process.env.VUE_APP_API_MOCK
+ return new Promise((resolve, reject) => {
+ this.http
+ .get(path, data)
+ .then(r => {
+ resolve(r)
+ })
+ .catch(e => {
+ reject(e.message)
+ })
+ })
+ }
+
+ put(path, params) {
+ let config = {}
+ if (this.isMock) config = {
+ baseURL: process.env.VUE_APP_API_MOCK
+ }
+ return new Promise((resolve, reject) => {
+ this.http
+ .put(path, params, config)
+ .then(r => {
+ resolve(r)
+ })
+ .catch(e => {
+ reject(e.message)
+ })
+ })
+ }
+
+ delete(path) {
+ let config = {}
+ if (this.isMock) config = {
+ baseURL: process.env.VUE_APP_API_MOCK
+ }
+ return new Promise((resolve, reject) => {
+ this.http
+ .delete(path, config)
+ .then(r => {
+ resolve(r)
+ })
+ .catch(e => {
+ reject(e.message)
+ })
+ })
+ }
+
+ interceptors() {
+ this.http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
+ // 添加请求拦截器
+ this.http.interceptors.request.use(
+ config => {
+ // 显示loading
+ if (this.loading) {
+ this.loadingInstance = ElLoading.service({
+ fullscreen: true
+ })
+ }
+
+ if (this.isJWT) {
+ config.headers.Authorization = 'token'
+ }
+ return config
+ },
+ error => {
+ // 请求错误
+ return Promise.reject(error)
+ }
+ )
+
+ // 添加响应拦截器
+ this.http.interceptors.response.use(
+ response => {
+ // 关闭loading
+ if (this.loading) this.loadingInstance.close()
+ if (response.status === 200) {
+ if (response.data.status !== 200 && response.data.status !== 99999 && response.data.status !== 202) {
+ if (response.data.message) {
+ ElMessage.error(response.data.message)
+ }
+ }
+ if (response.data.errno === 2003) {
+ setNotLoggedIn() // 设置未登录
+ router.replace('/login')
+ return
+ }
+ return response.data
+ } else {
+ console.error(response)
+ }
+ },
+ error => {
+ // 关闭loading
+ setTimeout(() => {
+ if (this.loading) this.loadingInstance.close()
+ }, 3000)
+ // 响应错误
+ return Promise.reject(error)
+ }
+ )
+ }
+}
\ No newline at end of file
diff --git a/src/utils/storage.js b/src/utils/storage.js
new file mode 100644
index 0000000..f0cbdf5
--- /dev/null
+++ b/src/utils/storage.js
@@ -0,0 +1,33 @@
+// session操作
+const sessionData = function (method, url, name, obj) {
+ /*
+ * 参数说明:
+ * method:get获取,set存入或覆盖,clean清除
+ * name:session的名称
+ * obj:存入的内容,可以是任意类型
+ * */
+ switch (method) {
+ case 'get':
+ if (sessionStorage.getItem(url + name + '_obj')) {
+ return JSON.parse(sessionStorage.getItem(url + name + '_obj'));
+ } else if (sessionStorage.getItem(url + name + '_str')) {
+ return sessionStorage.getItem(url + name + '_str');
+ } else {
+ return null
+ }
+ case 'set':
+ sessionData('clean', url + name);
+ if (typeof obj == 'object') {
+ sessionStorage.setItem(url+ name + '_obj', JSON.stringify(obj));
+ } else {
+ sessionStorage.setItem(url + name + '_str', obj);
+ }
+ return true;
+ case 'clean':
+ sessionStorage.removeItem(url + name + '_obj');
+ sessionStorage.removeItem(url + name + '_str');
+ return true;
+ }
+};
+
+export {sessionData}
diff --git a/src/utils/upload.js b/src/utils/upload.js
new file mode 100644
index 0000000..859679f
--- /dev/null
+++ b/src/utils/upload.js
@@ -0,0 +1,58 @@
+// An highlighted block
+import COS from 'cos-js-sdk-v5'
+import { getSecret } from '@/api/upload'
+
+export default function upload(file, config, callback) {
+ if (typeof config.isPublic === 'undefined') {
+ config.isPublic = true
+ }
+ getSecret({
+ type: config.type,
+ path: config.path,
+ isPublic: config.isPublic ? config.isPublic : false
+ }).then(response => {
+ const data = response.data
+ const cos = new COS({
+ getAuthorization: function(options, callback) {
+ callback({
+ TmpSecretId: data.tmpSecretId,
+ TmpSecretKey: data.tmpSecretKey,
+ XCosSecurityToken: data.sessionToken,
+ ExpiredTime: data.expiredTime
+ })
+ }
+ })
+
+ return {
+ cos: cos,
+ dir: data.url,
+ bucket: data.bucket,
+ region: data.region
+ }
+ }).then(data => {
+ const cos = data.cos
+ const dir = data.dir
+ const bucket = data.bucket
+ const region = data.region
+
+ const url = cos.getObjectUrl({
+ Bucket: bucket,
+ Region: region,
+ Key: `${dir}/${file.name}`,
+ Sign: false
+ }, function(data) {
+ cos.putObject({
+ Bucket: bucket,
+ Region: region,
+ Key: `${dir}/${file.name}`,
+ Body: file
+ }, function(data) {
+ if (config.isPublic) {
+ callback(url.replace(/^http(s)?:\/\/(.*?)\//, 'https://www.baidu.com/'))
+ } else {
+ callback(url)
+ }
+ })
+ })
+ })
+}
diff --git a/src/utils/util.js b/src/utils/util.js
new file mode 100644
index 0000000..235c077
--- /dev/null
+++ b/src/utils/util.js
@@ -0,0 +1,79 @@
+const formatDate = function (time, format) {
+ var t = new Date(time)
+ var tf = function(i) {
+ return (i < 10 ? "0" : "") + i
+ }
+ return format.replace(/Y|m|d|H|i|s/g, function(a) {
+ switch (a) {
+ case "Y":
+ return tf(t.getFullYear())
+ case "m":
+ return tf(t.getMonth() + 1)
+ case "d":
+ return tf(t.getDate())
+ case "H":
+ return tf(t.getMinutes())
+ case "i":
+ return tf(t.getHours())
+ case "s":
+ return tf(t.getSeconds())
+ }
+ })
+}
+// 时间戳转日期
+const timestampToTime = function (timestamp, type) {
+ var date = new Date(timestamp * 1000) // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
+ var Y = date.getFullYear()
+ var M =
+ date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
+ var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
+ var dateStr = ''
+ switch (type) {
+ case 1:
+ dateStr = Y + '年' + M + '月' + D + '日'
+ break
+ case 2:
+ dateStr = Y + '-' + M + '-' + D
+ break
+ default:
+ dateStr = Y + '年' + M + '月' + D + '日'
+ }
+ return dateStr
+}
+
+// 标准化时间 即将 2015年12月31日 转为 2015-12-31
+const dateFormat = function (dateStr) {
+ if (dateStr) {
+ dateStr = dateStr.replace('年', '-')
+ dateStr = dateStr.replace('月', '-')
+ dateStr = dateStr.replace('日', '')
+ return dateStr
+ } else {
+ return ''
+ }
+}
+
+
+// 存储本地浏览器 mainKey是唯一标识 aryy是存储书 ,type - save 是存 getdata是取
+const saveactionDate = function (mainKey, arry, type) {
+ const _this = this
+ if (arry) {
+ arry.forEach(item => {
+ if (type === 'save') {
+ // 保存操作
+ window.localStorage.setItem(mainKey + '-' + item, JSON.stringify(_this[item]))
+ } else {
+ // 回显
+ _this[item] = JSON.parse(window.localStorage.getItem(mainKey + '-' + item) ? window.localStorage
+ .getItem(mainKey + '-' + item) : [])
+ }
+ })
+ }
+}
+
+export {
+ formatDate,
+ timestampToTime,
+ dateFormat,
+ saveactionDate
+};
diff --git a/src/utils/validate.js b/src/utils/validate.js
new file mode 100644
index 0000000..fff67aa
--- /dev/null
+++ b/src/utils/validate.js
@@ -0,0 +1,158 @@
+/**
+ * 验证是否为空
+ * @param string|array value
+ * @returns
+ */
+function isEmpty(value) {
+ if (value === null || value === undefined || value === "") {
+ return true;
+ }
+ if (Array.isArray(value) && value.length === 0) {
+ return true;
+ }
+ return false;
+}
+
+/**
+ * 是否为手机号
+ * @param {*} value
+ * @param {*} param1
+ * @returns
+ */
+export const mobileValidator = (value, [locale]) => {
+ if (isEmpty(value)) {
+ return true;
+ }
+ if ((!locale || locale == "CN") && /^1[3456789][0-9]{9}$/.test(value)) {
+ return true;
+ } else if (locale == "EN" && /^\+[\d]{1,5}\s[\d]{1,14}$/.test(value)) {
+ return true;
+ }
+ return "请输入正确的手机号";
+};
+
+/**
+ * 是否为电话号码
+ * @param value
+ * @param {*} param1
+ * @returns
+ */
+export const telValidator = (value, [locale]) => {
+ if (isEmpty(value)) {
+ return true;
+ }
+ if ((!locale || locale == "CN") && !/^(?:0|8)[1-9]{3,}-[0-9]{8}$/.test(value)) {
+ return true;
+ }
+ return "电话号码格式不正确";
+};
+
+/**
+ * 身份证号码是否正确
+ * @param string value
+ * @returns
+ */
+export const identifyValidator = (value) => {
+ if (isEmpty(value)) {
+ return true;
+ }
+ if (!/(?:^\d{15}$)|(?:^\d{18}$)|(?:^\d{17}(?:\d|X|x)$)/.test(value)) {
+ return "身份证号码格式不正确";
+ }
+ return true;
+};
+
+/**
+ * 验证小数位长度
+ * @param number value 值
+ * @param number param1.length 为小数位长度
+ * @returns
+ */
+export const decimalValidator = (value, [length]) => {
+ if (isEmpty(value)) {
+ return true;
+ }
+ let regExp = new RegExp("^[0-9]+(?:.[0-9])?$");
+ if (length) {
+ regExp = new RegExp("^[0-9]+(?:.[0-9]{1," + length + "})?$");
+ }
+ if (regExp.test(value)) {
+ return true;
+ }
+ return "小数位长度不正确";
+};
+
+/**
+ * 验证是否为大写字母
+ * @param string value
+ * @returns
+ */
+export const letterUpperValidator = (value) => {
+ if (isEmpty(value) || /^[A-Z]+$/.test(value)) {
+ return true;
+ }
+ return "请填写大写字母";
+};
+
+/**
+ * 验证是否为小写字母
+ * @param string value
+ * @returns
+ */
+export const letterLowerValidator = (value) => {
+ if (isEmpty(value) || /^[a-z]+$/.test(value)) {
+ return true;
+ }
+ return "请填写小写字母";
+};
+
+/**
+ * 验证是否为中文
+ * @param string value
+ * @returns
+ */
+export const characterCNValidator = (value) => {
+ if (isEmpty(value) || /^[\u4e00-\u9fa5]+$/.test(value)) {
+ return true;
+ }
+ return "请输入中文";
+};
+
+/**
+ * 验证是否为邮编格式
+ * @param string value
+ * @returns
+ */
+export const zipcodeValidator = (value) => {
+ if (isEmpty(value) || /^[1-9]\d{5}(?!\d)$/.test(value)) {
+ return true;
+ }
+ return "请输入正确邮编";
+};
+
+/**
+ * 验证是否为传真格式
+ * @param string value
+ * @returns
+ */
+export const faxValidator = (value) => {
+ if (isEmpty(value) || /^(\d{3,4}-)?\d{7,8}$/.test(value)) {
+ return true;
+ }
+ return "请输入正确的传真格式";
+};
+
+
+const allValid = {
+ mobile: mobileValidator,
+ tel: telValidator,
+ identify: identifyValidator,
+ decimal: decimalValidator,
+ letter_upper: letterUpperValidator,
+ letter_lower: letterLowerValidator,
+ character_cn: characterCNValidator,
+ zipcode: zipcodeValidator,
+ fax: faxValidator
+};
+
+export default allValid;
diff --git a/src/views/PIP/copyright.vue b/src/views/PIP/copyright.vue
new file mode 100644
index 0000000..58a0676
--- /dev/null
+++ b/src/views/PIP/copyright.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 新增版权
+ 下载装备材料模板
+
+
+
+
+
+
+ {{scope.row.name}}
+
+
+
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+ 查看详情
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/copyright_add.vue b/src/views/PIP/copyright_add.vue
new file mode 100644
index 0000000..fa9e6e5
--- /dev/null
+++ b/src/views/PIP/copyright_add.vue
@@ -0,0 +1,701 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
附件上传
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+ 申请结果
+
+ {{ item.name }}
+
+
+
+
费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/copyright_edit.vue b/src/views/PIP/copyright_edit.vue
new file mode 100644
index 0000000..18443da
--- /dev/null
+++ b/src/views/PIP/copyright_edit.vue
@@ -0,0 +1,745 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
附件上传
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+ 申请结果
+
+ {{ item.name }}
+
+
+
+
费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/patent.vue b/src/views/PIP/patent.vue
new file mode 100644
index 0000000..4dc2c4f
--- /dev/null
+++ b/src/views/PIP/patent.vue
@@ -0,0 +1,421 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 新增专利
+ 下载专利交底模板
+
+
+
+
+
+
+ {{scope.row.name}}
+
+
+
+
+
+
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看详情
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/patent_add.vue b/src/views/PIP/patent_add.vue
new file mode 100644
index 0000000..5ef64dd
--- /dev/null
+++ b/src/views/PIP/patent_add.vue
@@ -0,0 +1,866 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支持png、jpg格式, 上限1M
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+
+ 查询结果
+
+ {{ item.name }}
+
+
+
+
+
+ 申请结果
+
+ {{ item.name }}
+
+
+
+
时间进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/patent_edit.vue b/src/views/PIP/patent_edit.vue
new file mode 100644
index 0000000..4d37a36
--- /dev/null
+++ b/src/views/PIP/patent_edit.vue
@@ -0,0 +1,906 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支持png、jpg格式, 上限1M
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 支持PDF、Word、Excel格式,限10M内
+
+
+
+
+
+
+
+
+
+
+ 查询结果
+
+ {{ item.name }}
+
+
+
+
+
+ 申请结果
+
+ {{ item.name }}
+
+
+
+
时间进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/quality_requisition.vue b/src/views/PIP/quality_requisition.vue
new file mode 100644
index 0000000..a256234
--- /dev/null
+++ b/src/views/PIP/quality_requisition.vue
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 反确认
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 下载
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/trademark.vue b/src/views/PIP/trademark.vue
new file mode 100644
index 0000000..5396138
--- /dev/null
+++ b/src/views/PIP/trademark.vue
@@ -0,0 +1,695 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 新增商标
+ 下载导入模板
+ 批量导出
+ 批量导入
+ 批量下载证书
+
+
+
+
+
+ {{scope.row.id}}
+
+
+
+
+
+
+
![]()
+
+
+ {{scope.row.brand_name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.apply_addr }}
+
+
+ {{ scope.row.apply_addr }}
+
+
+
+
+
+
+
+
+ {{ scope.row.agent_org }}
+
+
+ {{ scope.row.agent_org }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.serve_group }}
+
+
+ {{ scope.row.serve_group }}
+
+
+
+
+
+
+
+
+ {{ scope.row.goods_serve }}
+
+
+ {{ scope.row.goods_serve }}
+
+
+
+
+
+
+
+ 上传
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+ 国内商标申请
+ 海外商标申请
+
+
+
+
+ 国内商标申请
+
+
+ 海外商标申请
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/trademark_add.vue b/src/views/PIP/trademark_add.vue
new file mode 100644
index 0000000..6fe4dc1
--- /dev/null
+++ b/src/views/PIP/trademark_add.vue
@@ -0,0 +1,630 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支持png、jpg格式, 上限1M
+
+
+
+
+
+
+
+
+ 证书信息
+
+
+ 上传
+
+
+ 支持PDF、JPG格式,限2M内
+
+
+
+
+
+
+
+
+
+
+
时间进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PIP/trademark_edit.vue b/src/views/PIP/trademark_edit.vue
new file mode 100644
index 0000000..92572ce
--- /dev/null
+++ b/src/views/PIP/trademark_edit.vue
@@ -0,0 +1,703 @@
+
+
+
+
+
+
+
基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 支持png、jpg格式, 上限1M
+
+
+
+
+
+
+
+
+ 证书信息
+
+
+ 上传
+
+
+ 支持PDF、JPG格式,限2M内
+
+
+
+
+
+
+
+
+
+
+
时间进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 费用信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/agv/agv.scss b/src/views/agv/agv.scss
new file mode 100644
index 0000000..459c1dd
--- /dev/null
+++ b/src/views/agv/agv.scss
@@ -0,0 +1,67 @@
+/**/
+.m-16{margin: 16px;}
+.p-16{padding: 16px;}
+.m-t-16{ margin-top: 16px;}
+.m-b-16{ margin-bottom: 16px;}
+.m-l-16{ margin-left: 16px;}
+.m-r-16{ margin-right: 16px;}
+.m-r-8{ margin-right: 8px;}
+
+/**/
+.isGreen{
+ color: #00AA5B
+}
+.isYellow{
+ color: #FFAB00
+}
+.isBlue{
+ color: #4178D5
+}
+.isCyan{
+ color: #3CBFFF
+}
+.isRed{
+ color: #FF4747
+}
+.Cursor{
+ cursor: pointer;
+}
+.el-button+.el-button{
+ margin-left: 0!important;
+}
+.el-form-item{
+ margin-bottom: 10px!important;
+}
+:deep(.el-dialog__title){
+ font-weight: bold;
+ color: #303133;
+}
+:deep(.el-dialog__body){
+ padding-top: 16px!important;
+ padding-bottom: 16px!important;
+}
+.pagination {
+ text-align: right;
+}
+
+/**顶部图标**/
+.Files{
+ background: url('../../assets/daochu.png');
+ width: 14px;
+ height: 14px;
+ display: block;
+ background-size: cover;
+ float: left;
+ margin-right: 5px;
+}
+::v-deep(.top-box .el-button--small) {
+ font-size: 14px;
+}
+::v-deep(.top-box .el-button:hover,.top-box .el-button:focus){
+ background: #ecf5ff;
+ color: #409eff;
+}
+::v-deep(.top-box .el-button--primary:focus, .top-box .el-button--primary:hover){
+ background: #ecf5ff;
+ color: #409eff;
+}
\ No newline at end of file
diff --git a/src/views/agv/agvList.vue b/src/views/agv/agvList.vue
new file mode 100644
index 0000000..7980b3f
--- /dev/null
+++ b/src/views/agv/agvList.vue
@@ -0,0 +1,373 @@
+
+
+
+
+
+
+
+ 新增
+ 导出
+
+
+
+
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 空闲
+ 任务中
+ 充电中
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/agv/hopperCar.vue b/src/views/agv/hopperCar.vue
new file mode 100644
index 0000000..7a1d0c2
--- /dev/null
+++ b/src/views/agv/hopperCar.vue
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+ 新增
+ 导出
+
+
+
+
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 空闲
+ 任务中
+ 已装载
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/agv/position.vue b/src/views/agv/position.vue
new file mode 100644
index 0000000..b9382ca
--- /dev/null
+++ b/src/views/agv/position.vue
@@ -0,0 +1,525 @@
+
+
+
+
+
+
+
+ 新增
+
+ 导出
+
+
+
+
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看明细
+
+
+
+
+
+
+
+
+
+
+
+ 空闲
+ 占用
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 是
+ 否
+
+
+
+ {{ computedFn(scope.row.cart_title) }}
+
+
+
+ 空闲
+ 任务中
+ 已装载
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 空料车停放点
+ 加入库存统计
+
+
+
+
+
+
+
+
+
+ 位置:{{ address }}
+ 料车:{{ cart }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/agv/stockDetail.vue b/src/views/agv/stockDetail.vue
new file mode 100644
index 0000000..844f322
--- /dev/null
+++ b/src/views/agv/stockDetail.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/agv/taskList.vue b/src/views/agv/taskList.vue
new file mode 100644
index 0000000..8e6b5cd
--- /dev/null
+++ b/src/views/agv/taskList.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/AddAttrValue/AddAttrValue.vue b/src/views/components/AddAttrValue/AddAttrValue.vue
new file mode 100644
index 0000000..f21a8a7
--- /dev/null
+++ b/src/views/components/AddAttrValue/AddAttrValue.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/BatchEdit/BatchEdit.vue b/src/views/components/BatchEdit/BatchEdit.vue
new file mode 100644
index 0000000..7c10189
--- /dev/null
+++ b/src/views/components/BatchEdit/BatchEdit.vue
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/CommonSeach/CommonSeach.vue b/src/views/components/CommonSeach/CommonSeach.vue
new file mode 100644
index 0000000..e747c0a
--- /dev/null
+++ b/src/views/components/CommonSeach/CommonSeach.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{colItem.otherComponent.name}}
+ {{colItem.otherchekbox.name}}
+
+
+
+
+
+ 更多筛选
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/EditSpuSkuDiaLog/EditSpuSkuDiaLog.vue b/src/views/components/EditSpuSkuDiaLog/EditSpuSkuDiaLog.vue
new file mode 100644
index 0000000..d5af0df
--- /dev/null
+++ b/src/views/components/EditSpuSkuDiaLog/EditSpuSkuDiaLog.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'确认将所选SKU都更改至' + data.showSkuName + '下吗?确认之后更改。'}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/LanguageSelect/LanguageSelect.vue b/src/views/components/LanguageSelect/LanguageSelect.vue
new file mode 100644
index 0000000..a25f280
--- /dev/null
+++ b/src/views/components/LanguageSelect/LanguageSelect.vue
@@ -0,0 +1,98 @@
+
+
+
+
+ 请先选择需要修改资料的语言
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
diff --git a/src/views/components/LcCheckBoxGroup/LcCheckBoxGroup.vue b/src/views/components/LcCheckBoxGroup/LcCheckBoxGroup.vue
new file mode 100644
index 0000000..96fcd9c
--- /dev/null
+++ b/src/views/components/LcCheckBoxGroup/LcCheckBoxGroup.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/LcManySelect/LcManySelect.vue b/src/views/components/LcManySelect/LcManySelect.vue
new file mode 100644
index 0000000..c9414c2
--- /dev/null
+++ b/src/views/components/LcManySelect/LcManySelect.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/LcProjectExportInfo/LcProjectExportInfo.vue b/src/views/components/LcProjectExportInfo/LcProjectExportInfo.vue
new file mode 100644
index 0000000..8147732
--- /dev/null
+++ b/src/views/components/LcProjectExportInfo/LcProjectExportInfo.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/components/LcRemarks/LcRemarks.vue b/src/views/components/LcRemarks/LcRemarks.vue
new file mode 100644
index 0000000..d1cdd44
--- /dev/null
+++ b/src/views/components/LcRemarks/LcRemarks.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/LcSingleSelect.vue/LcSingleSelect.vue b/src/views/components/LcSingleSelect.vue/LcSingleSelect.vue
new file mode 100644
index 0000000..67b06d3
--- /dev/null
+++ b/src/views/components/LcSingleSelect.vue/LcSingleSelect.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/LcTitleIcon/LcTitleIcon.vue b/src/views/components/LcTitleIcon/LcTitleIcon.vue
new file mode 100644
index 0000000..bcafa22
--- /dev/null
+++ b/src/views/components/LcTitleIcon/LcTitleIcon.vue
@@ -0,0 +1,56 @@
+
+
+
+
+ {{ title }}
+
+
+ {{ title }}
+
+
+
+
+
+
+
diff --git a/src/views/components/LcWriteLinks/LcWriteLinks.vue b/src/views/components/LcWriteLinks/LcWriteLinks.vue
new file mode 100644
index 0000000..af1b483
--- /dev/null
+++ b/src/views/components/LcWriteLinks/LcWriteLinks.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/ProductBtnList/ProductBtnList.vue b/src/views/components/ProductBtnList/ProductBtnList.vue
new file mode 100644
index 0000000..ea68933
--- /dev/null
+++ b/src/views/components/ProductBtnList/ProductBtnList.vue
@@ -0,0 +1,205 @@
+
+
+
+
+ 批量修改
+ 下载导入模板
+ 删除产品
+
+
+ 导入
+
+
+ 导出
+ 日志
+
+ 新增SPU
+ 更改SPU
+
+ 同步任务列表
+
+
+
+ 导入规格参数
+
+
+ 同步成本信息
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/ProductListCom/DownLoadImportTemplate.vue b/src/views/components/ProductListCom/DownLoadImportTemplate.vue
new file mode 100644
index 0000000..935a40c
--- /dev/null
+++ b/src/views/components/ProductListCom/DownLoadImportTemplate.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+ 下载国内导入模版
+ 下载国外导入模版
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/ProductListCom/LanguageTiptool.vue b/src/views/components/ProductListCom/LanguageTiptool.vue
new file mode 100644
index 0000000..be0caea
--- /dev/null
+++ b/src/views/components/ProductListCom/LanguageTiptool.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+ {{'当前修改的数据属于:' + data.name}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/ProductListCom/ProductListCom.vue b/src/views/components/ProductListCom/ProductListCom.vue
new file mode 100644
index 0000000..947e77c
--- /dev/null
+++ b/src/views/components/ProductListCom/ProductListCom.vue
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{e.target.src = defaulImg}" />
+
+
+
+
+
+
+
+
+
+
+ 编辑SPU
+ 编辑SKU
+
+
+
+
+
+ 编辑SPU
+ 编辑SKU
+
+
+
+
+
+
+
+
+
+
+ SPU:{{data.spu_count}}条
+ SKU:{{data.sku_count}}条
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'确定删除所选产品吗?'}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/DragDialog.vue b/src/views/components/SetComponents/DragDialog.vue
new file mode 100644
index 0000000..60877cf
--- /dev/null
+++ b/src/views/components/SetComponents/DragDialog.vue
@@ -0,0 +1,304 @@
+
+
+
+
+
+
+ SPU|SKU|暂存|保存 - 任务管理
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/H5Details.vue b/src/views/components/SetComponents/H5Details.vue
new file mode 100644
index 0000000..713c813
--- /dev/null
+++ b/src/views/components/SetComponents/H5Details.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ {{data.title}}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/ImgUpload.vue b/src/views/components/SetComponents/ImgUpload.vue
new file mode 100644
index 0000000..568a315
--- /dev/null
+++ b/src/views/components/SetComponents/ImgUpload.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/ImgUploadM.vue b/src/views/components/SetComponents/ImgUploadM.vue
new file mode 100644
index 0000000..f66057c
--- /dev/null
+++ b/src/views/components/SetComponents/ImgUploadM.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/ModularTable.vue b/src/views/components/SetComponents/ModularTable.vue
new file mode 100644
index 0000000..f06e857
--- /dev/null
+++ b/src/views/components/SetComponents/ModularTable.vue
@@ -0,0 +1,342 @@
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getFixedName(row[item.field],'select',data[item.beforeStr + 'list']) }}
+
+
+
+
+
+
+
+
+
+
+ {{ getFixedName(scope.row[item.field],'mh_sel',data[item.beforeStr + 'list'][scope.$rowIndex]) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ getFixedName(row[item.field],'whether') }}
+
+
+
+
+
+
+
+
+ {{ getFixedName(row[item.field],'switch') }}
+
+
+
+
+
+
+
+
+
+ {{ row.links }}
+
+
+
+
+
+
{e.target.src = defaulImg}" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/PcDetails.vue b/src/views/components/SetComponents/PcDetails.vue
new file mode 100644
index 0000000..80ec2c5
--- /dev/null
+++ b/src/views/components/SetComponents/PcDetails.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+ {{ data.title }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/SkuComponents.vue b/src/views/components/SetComponents/SkuComponents.vue
new file mode 100644
index 0000000..f919777
--- /dev/null
+++ b/src/views/components/SetComponents/SkuComponents.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+ SKU列表
+
+
+ 新增行
+ 删除行
+ 批量编辑
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/components/SetComponents/SkuVxeTable-attr-backups.vue b/src/views/components/SetComponents/SkuVxeTable-attr-backups.vue
new file mode 100644
index 0000000..242683a
--- /dev/null
+++ b/src/views/components/SetComponents/SkuVxeTable-attr-backups.vue
@@ -0,0 +1,1229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{e.target.src = defaulImg}" />
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowbox(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowbox(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowSwitch(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowName(row[item.field],item.list) }}
+
+
+
+
+
+
+
+
+
+ {{ getShowName(row[item.field],item.list) }}
+
+
+
+
+
+
+
+
+
+ {{ getShowMhName(scope.row[item.field],item.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMhName(scope.row[item.field],item.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/SkuVxeTable-test.vue b/src/views/components/SetComponents/SkuVxeTable-test.vue
new file mode 100644
index 0000000..6df0138
--- /dev/null
+++ b/src/views/components/SetComponents/SkuVxeTable-test.vue
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/SkuVxeTable.vue b/src/views/components/SetComponents/SkuVxeTable.vue
new file mode 100644
index 0000000..6ee036b
--- /dev/null
+++ b/src/views/components/SetComponents/SkuVxeTable.vue
@@ -0,0 +1,1976 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{e.target.src = defaulImg}" />
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowName(row[itemChild.field],itemChild.list) }}
+
+
+
+
+
+
+
+
+
+ {{ getShowName(row[itemChild.field],itemChild.list) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMh(scope.row[itemChild.field],itemChild.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowbox(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowbox(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowSwitch(row[item.field]) }}
+
+
+
+
+
+
+
+ {{ getShowName(row[item.field],item.list) }}
+
+
+
+
+
+
+
+
+
+ {{ getShowName(row[item.field],item.list) }}
+
+
+
+
+
+
+
+
+
+ {{ getShowMhName(scope.row[item.field],item.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ getShowMhName(scope.row[item.field],item.list[scope.$rowIndex],scope.$rowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/components/SetComponents/SpuInfo.vue b/src/views/components/SetComponents/SpuInfo.vue
new file mode 100644
index 0000000..49124a0
--- /dev/null
+++ b/src/views/components/SetComponents/SpuInfo.vue
@@ -0,0 +1,541 @@
+
+
+
+
+
+
+
+
+
+ spu由-、.、数字、字母组成,开始、结束必须数字或字母
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图片尺寸800*800,大小不超过1M
+
+
+
+
+
+
+
+ 图片尺寸800*800,大小不超过1M
+
+
+
+
+
+
+
+
+ 最多可上传6张,图片尺寸800*800,大小不超过1M
+
+
+
+
+
+
+
+
diff --git a/src/views/download/drive.vue b/src/views/download/drive.vue
new file mode 100644
index 0000000..273d599
--- /dev/null
+++ b/src/views/download/drive.vue
@@ -0,0 +1,224 @@
+
+
+
+
+ 驱动管理
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.name}}
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+ 确定删除已选择的驱动吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/download/editDrive.vue b/src/views/download/editDrive.vue
new file mode 100644
index 0000000..d8bd62b
--- /dev/null
+++ b/src/views/download/editDrive.vue
@@ -0,0 +1,359 @@
+
+
+
+ 驱动管理
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/download/editInstruct.vue b/src/views/download/editInstruct.vue
new file mode 100644
index 0000000..ab85de9
--- /dev/null
+++ b/src/views/download/editInstruct.vue
@@ -0,0 +1,348 @@
+
+
+
+ 说明书管理
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/download/instructions.vue b/src/views/download/instructions.vue
new file mode 100644
index 0000000..7518e67
--- /dev/null
+++ b/src/views/download/instructions.vue
@@ -0,0 +1,224 @@
+
+
+
+
+ 说明书管理
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.name}}
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+ 确定删除已选择的说明书吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/gys/quality_requisition.vue b/src/views/gys/quality_requisition.vue
new file mode 100644
index 0000000..099c45c
--- /dev/null
+++ b/src/views/gys/quality_requisition.vue
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 确认
+ 反确认
+
+
+ 批量上传
+
+
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+ 上传
+
+
+ 下载
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/StockList.vue b/src/views/index/StockList.vue
new file mode 100644
index 0000000..6ec9b2d
--- /dev/null
+++ b/src/views/index/StockList.vue
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+ 同步ERP数据
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 库存量:{{dataCount.total_inventory_num}}
+ 可用量:{{dataCount.total_available_num}}
+ 库存金额(¥):{{dataCount.total_inventory_price}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/StockListAll.vue b/src/views/index/StockListAll.vue
new file mode 100644
index 0000000..92c0b1d
--- /dev/null
+++ b/src/views/index/StockListAll.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/addSpu.vue b/src/views/index/addSpu.vue
new file mode 100644
index 0000000..898027f
--- /dev/null
+++ b/src/views/index/addSpu.vue
@@ -0,0 +1,861 @@
+
+
+
+
+
+
+
+ 暂存
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{'所有暂存数据都是临时数据无法被引用也无法同步至ERP,是否暂存?'}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/addspeciapr.vue b/src/views/index/addspeciapr.vue
new file mode 100644
index 0000000..0b18e8b
--- /dev/null
+++ b/src/views/index/addspeciapr.vue
@@ -0,0 +1,295 @@
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/editSku.vue b/src/views/index/editSku.vue
new file mode 100644
index 0000000..be5d19e
--- /dev/null
+++ b/src/views/index/editSku.vue
@@ -0,0 +1,749 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/editSpu.vue b/src/views/index/editSpu.vue
new file mode 100644
index 0000000..baf968f
--- /dev/null
+++ b/src/views/index/editSpu.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/editspeciapr.vue b/src/views/index/editspeciapr.vue
new file mode 100644
index 0000000..3ec9cd7
--- /dev/null
+++ b/src/views/index/editspeciapr.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/index.vue b/src/views/index/index.vue
new file mode 100644
index 0000000..c25f805
--- /dev/null
+++ b/src/views/index/index.vue
@@ -0,0 +1,901 @@
+
+
+
+
+
+
+ 保存修改
+
+
+
+
+ 导入
+
+
+
+ 导出
+ 日志
+ 同步ERP数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/log.vue b/src/views/index/log.vue
new file mode 100644
index 0000000..4d0c87f
--- /dev/null
+++ b/src/views/index/log.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+ 搜索
+ 重置
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.cost_change }}
+ {{ row.cost_change }}
+
+
+
+
+ {{ row.range }} %
+ {{ row.range }} %
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/logInfo.vue b/src/views/index/logInfo.vue
new file mode 100644
index 0000000..202ef25
--- /dev/null
+++ b/src/views/index/logInfo.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+ 搜索
+ 重置
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/oindex.vue b/src/views/index/oindex.vue
new file mode 100644
index 0000000..78cccef
--- /dev/null
+++ b/src/views/index/oindex.vue
@@ -0,0 +1,698 @@
+
+
+
+
+
+
+ 保存修改
+
+
+
+ 导出
+ 日志
+ 同步ERP数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/productList.vue b/src/views/index/productList.vue
new file mode 100644
index 0000000..0bcab1a
--- /dev/null
+++ b/src/views/index/productList.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/serialNo.vue b/src/views/index/serialNo.vue
new file mode 100644
index 0000000..8eed234
--- /dev/null
+++ b/src/views/index/serialNo.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+ 请输入产品SN码回车查询
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 查询结果
+
+
+

+
暂无数据
+
+
+
+
+ {{info.results.sn}}
+
+
+ {{info.results.fnumber}}
+
+
+ {{info.results.name}}
+
+
+ {{info.results.sku}}
+
+
+ --
+ {{info.results.porder_sn}}
+
+
+ --
+ {{info.results.product_time}}
+
+
+ --
+ {{info.results.warehouse_time}}
+
+
+ --
+ {{info.results.sale_order_sn}}
+
+
+ --
+ {{info.results.sale_time}}
+
+
+ {{info.results.custom}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/index/specialPromotion.vue b/src/views/index/specialPromotion.vue
new file mode 100644
index 0000000..e355e27
--- /dev/null
+++ b/src/views/index/specialPromotion.vue
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
新增
+
+
+
+
+ 下载模板
+
+
+ 导入
+
+
+ 导出
+ 强制失效
+ 强制生效
+ 库存数据刷新
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.sku }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index/syncLogin.vue b/src/views/index/syncLogin.vue
new file mode 100644
index 0000000..db5cf68
--- /dev/null
+++ b/src/views/index/syncLogin.vue
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+ 搜索
+ 重置
+ 批量重传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ '全部' }}
+
+
+ {{ '金蝶' }}
+
+
+ {{ '聚水潭' }}
+
+
+ {{ '领星' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ '失败' }}
+ {{ '重传' }}
+
+
+ {{ '成功' }}
+
+
+ {{ '同步中,请稍后刷新' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/log/index.vue b/src/views/lcProject/log/index.vue
new file mode 100644
index 0000000..57bb821
--- /dev/null
+++ b/src/views/lcProject/log/index.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/log/prlog.vue b/src/views/lcProject/log/prlog.vue
new file mode 100644
index 0000000..d007aa6
--- /dev/null
+++ b/src/views/lcProject/log/prlog.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/packingBom/packingBom.vue b/src/views/lcProject/packingBom/packingBom.vue
new file mode 100644
index 0000000..78eb974
--- /dev/null
+++ b/src/views/lcProject/packingBom/packingBom.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/projectMange/add.vue b/src/views/lcProject/projectMange/add.vue
new file mode 100644
index 0000000..9f6f5b7
--- /dev/null
+++ b/src/views/lcProject/projectMange/add.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/lcProject/projectMange/edit.vue b/src/views/lcProject/projectMange/edit.vue
new file mode 100644
index 0000000..6934502
--- /dev/null
+++ b/src/views/lcProject/projectMange/edit.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
任务信息列表
+
+
+
+ {{ row.name
+ }}
+ {{ row.name }}
+
+
+
+
+
+ {{ formatMulti(row.reviewer_user_id) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
规格定义表
+
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/lcProject/projectMange/index.vue b/src/views/lcProject/projectMange/index.vue
new file mode 100644
index 0000000..9d846a4
--- /dev/null
+++ b/src/views/lcProject/projectMange/index.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+ 新增项目
+ 导出规格定义表
+ 日志
+
+
+
+
+
+
+
+
+
+
+
{ e.target.src = defaulImg }" />
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+ {{ row.level_text }}
+ {{ row.level_text }}
+
+
+
+
+
+
+
+
+
+
+
+ 下推
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/structureBom/structureBom.vue b/src/views/lcProject/structureBom/structureBom.vue
new file mode 100644
index 0000000..f75f7d5
--- /dev/null
+++ b/src/views/lcProject/structureBom/structureBom.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/bl.vue b/src/views/lcProject/taskMange/bl.vue
new file mode 100644
index 0000000..4717374
--- /dev/null
+++ b/src/views/lcProject/taskMange/bl.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
规格定义表
+
+
输出文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/bzljxz.vue b/src/views/lcProject/taskMange/bzljxz.vue
new file mode 100644
index 0000000..3159f21
--- /dev/null
+++ b/src/views/lcProject/taskMange/bzljxz.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+ 标准零件选型
+
+
+ 备注
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/bzsj.vue b/src/views/lcProject/taskMange/bzsj.vue
new file mode 100644
index 0000000..3cc015c
--- /dev/null
+++ b/src/views/lcProject/taskMange/bzsj.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+ 包装原型
+
+
+ 输出文件
+
+
+ 规格定义表
+
+
+ 备注
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/bzyx.vue b/src/views/lcProject/taskMange/bzyx.vue
new file mode 100644
index 0000000..52d28c5
--- /dev/null
+++ b/src/views/lcProject/taskMange/bzyx.vue
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+ 包装原型
+
+
+ 输出内容
+
+
+ 备注
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/cpplfb.vue b/src/views/lcProject/taskMange/cpplfb.vue
new file mode 100644
index 0000000..7f65627
--- /dev/null
+++ b/src/views/lcProject/taskMange/cpplfb.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
发布会PPT
+
+
+
规格定义表
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/cpzl.vue b/src/views/lcProject/taskMange/cpzl.vue
new file mode 100644
index 0000000..071173f
--- /dev/null
+++ b/src/views/lcProject/taskMange/cpzl.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
+
规格定义表
+
+
输出文件
+
产品PPT资料
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/dj.vue b/src/views/lcProject/taskMange/dj.vue
new file mode 100644
index 0000000..7bd5fd2
--- /dev/null
+++ b/src/views/lcProject/taskMange/dj.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
规格定义表
+
+
+
备注
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/dzsj.vue b/src/views/lcProject/taskMange/dzsj.vue
new file mode 100644
index 0000000..4125cdc
--- /dev/null
+++ b/src/views/lcProject/taskMange/dzsj.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
+
规格定义表
+
+
输出文件
+
+
{{ data['table_title_' + item] }}
+
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/ggdy.vue b/src/views/lcProject/taskMange/ggdy.vue
new file mode 100644
index 0000000..5be87a3
--- /dev/null
+++ b/src/views/lcProject/taskMange/ggdy.vue
@@ -0,0 +1,275 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
规格定义表
+
+
+
+
输出内容
+
规格/板框定义PPT
+
+
+
规格定价表格
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/gysj.vue b/src/views/lcProject/taskMange/gysj.vue
new file mode 100644
index 0000000..0d043d7
--- /dev/null
+++ b/src/views/lcProject/taskMange/gysj.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+ 标准零件选择
+
+
+ ID效果图
+
+
+ 备注
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/index.vue b/src/views/lcProject/taskMange/index.vue
new file mode 100644
index 0000000..4458a02
--- /dev/null
+++ b/src/views/lcProject/taskMange/index.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.project_name }}
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/lcProject/taskMange/jgsj.vue b/src/views/lcProject/taskMange/jgsj.vue
new file mode 100644
index 0000000..9d2ddae
--- /dev/null
+++ b/src/views/lcProject/taskMange/jgsj.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
+
规格定义表
+
+
输出文件
+
+
{{ data['table_title_' + item] }}
+
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/km.vue b/src/views/lcProject/taskMange/km.vue
new file mode 100644
index 0000000..14314fa
--- /dev/null
+++ b/src/views/lcProject/taskMange/km.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+ 备注
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/rz.vue b/src/views/lcProject/taskMange/rz.vue
new file mode 100644
index 0000000..e15cc55
--- /dev/null
+++ b/src/views/lcProject/taskMange/rz.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
规格定义表
+
+
+
认证需求
+
需求国家/类型
+
+ {{ item.country
+ }}
+
+
+
输出文件
+
+
{{ data['table_title_' + item] }}
+
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/rzxq.vue b/src/views/lcProject/taskMange/rzxq.vue
new file mode 100644
index 0000000..157b460
--- /dev/null
+++ b/src/views/lcProject/taskMange/rzxq.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
认证需求
+
+
需求国家/类型
+
国家
+
+ {{ item.country
+ }}
+
+
+
+
+
备注
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/scfx.vue b/src/views/lcProject/taskMange/scfx.vue
new file mode 100644
index 0000000..7a147fa
--- /dev/null
+++ b/src/views/lcProject/taskMange/scfx.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
市场分析PPT
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/sczl.vue b/src/views/lcProject/taskMange/sczl.vue
new file mode 100644
index 0000000..c6eeb77
--- /dev/null
+++ b/src/views/lcProject/taskMange/sczl.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
规格定义表
+
+
输出文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/skuinfo.vue b/src/views/lcProject/taskMange/skuinfo.vue
new file mode 100644
index 0000000..58892b8
--- /dev/null
+++ b/src/views/lcProject/taskMange/skuinfo.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
规格定义表
+
+
输出文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/spddxq.vue b/src/views/lcProject/taskMange/spddxq.vue
new file mode 100644
index 0000000..32cd7ca
--- /dev/null
+++ b/src/views/lcProject/taskMange/spddxq.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
规格定义表
+
+
+
+
输出内容
+
下单明细
+
+
备注
+
+
+
+
+
+
+ {{ data.skuName }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/spxd.vue b/src/views/lcProject/taskMange/spxd.vue
new file mode 100644
index 0000000..f017774
--- /dev/null
+++ b/src/views/lcProject/taskMange/spxd.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
规格定义表
+
+
首批订单文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/spxdxqMx.vue b/src/views/lcProject/taskMange/spxdxqMx.vue
new file mode 100644
index 0000000..c9da53c
--- /dev/null
+++ b/src/views/lcProject/taskMange/spxdxqMx.vue
@@ -0,0 +1,761 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.sku.brand }}
+
+
+
+
+
+ {{ row.sku.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.sku.spu }}
+
+
+
+
+
+ {{ row.sku.sku }}
+
+
+
+
+
+ {{ row.sku.mould_cost }}
+
+
+
+
+
+ {{ row.sku.params }}
+
+
+
+
+
+ {{ row.sku.material }}
+
+
+
+
+
+ {{ row.sku.protocol }}
+
+
+
+
+
+ {{ row.sku.rate }}
+
+
+
+
+
+ {{ row.sku.package }}
+
+
+
+
+
+ {{ row.sku.safe }}
+
+
+
+
+
+ {{ row.sku.interface }}
+
+
+
+
+
+ {{ row.sku.other }}
+
+
+
+
+
+ {{ row.sku.color }}
+
+
+
+
+
+ {{ row.sku.version }}
+
+
+
+
+
+ {{ row.sku.output }}
+
+
+
+
+
+ {{ row.sku.code69 }}
+
+
+
+
+
+ {{ row.sku.material_num }}
+
+
+
+
+
+ {{ row.sku.mould_fare_sj }}
+
+
+
+
+
+ {{ row.sku.mould_fare_wj }}
+
+
+
+
+
+ {{ row.sku.electron_fare }}
+
+
+
+
+
+ {{ row.sku.structure_fare }}
+
+
+
+
+
+ {{ row.sku.power_fare }}
+
+
+
+
+
+ {{ row.sku.line_fare }}
+
+
+
+
+
+ {{ row.sku.package_fare }}
+
+
+
+
+
+ {{ row.sku.parts_fare }}
+
+
+
+
+
+ {{ row.sku.other_fare }}
+
+
+
+
+
+ {{ row.sku.process_fare }}
+
+
+
+
+
+ {{ row.sku.auth_test_fare }}
+
+
+
+
+
+ {{ row.sku.total_cost }}
+
+
+
+
+
+ {{ row.sku.tco_cost }}
+
+
+
+
+
+ {{ row.sku.tco_rate + '%' }}
+
+
+
+
+
+ {{ row.sku.agent_price }}
+
+
+
+
+
+ {{ row.sku.channel_rate + '%' }}
+
+
+
+
+
+ {{ row.sku.distribution_price }}
+
+
+
+
+
+ {{ row.sku.distribution_rate + '%' }}
+
+
+
+
+
+ {{ row.sku.retail_price }}
+
+
+
+
+
+ {{ row.sku.min_retail_price }}
+
+
+
+
+
+ {{ row.sku.b2c_rate + '%' }}
+
+
+
+
+
+ {{ row.b2c }}
+
+
+
+
+
+
+
+
+ {{ row.amazon }}
+
+
+
+
+
+
+
+
+ {{ row.cs_global_mall }}
+
+
+
+
+
+
+
+
+ {{ row.sz_global_mall }}
+
+
+
+
+
+
+
+
+ {{ row.nation_channels }}
+
+
+
+
+
+
+
+
+ {{ row.overseas_channels }}
+
+
+
+
+
+
+
+
+ {{ row.market_depart }}
+
+
+
+
+
+
+
+
+ {{ row.f2b211_1688 }}
+
+
+
+
+
+
+
+
+
+ {{ parseInt(parseInt(row.b2c) + parseInt(row.amazon) + parseInt(row.cs_global_mall) +
+ parseInt(row.sz_global_mall) + parseInt(row.nation_channels) +
+ parseInt(row.overseas_channels) + parseInt(row.market_depart) + parseInt(row.f2b211_1688)) }}
+
+
+
+
+
+ {{ row.remark }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 基础字段
+
+
+
+
+
+ 属性字段
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 负责人
+
+
+
+
+
+
+
+ {{ fullName(scope.row.user_id)
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/wlbj.vue b/src/views/lcProject/taskMange/wlbj.vue
new file mode 100644
index 0000000..fa4f674
--- /dev/null
+++ b/src/views/lcProject/taskMange/wlbj.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
物料报价
+
+
+
规格定义表
+
+
+
备注
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/xxlr.vue b/src/views/lcProject/taskMange/xxlr.vue
new file mode 100644
index 0000000..8145d6a
--- /dev/null
+++ b/src/views/lcProject/taskMange/xxlr.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
输入文件
+
规格定义表
+
+
+
输出文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/zlsh.vue b/src/views/lcProject/taskMange/zlsh.vue
new file mode 100644
index 0000000..2845b07
--- /dev/null
+++ b/src/views/lcProject/taskMange/zlsh.vue
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
输出文件
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/zscqsq.vue b/src/views/lcProject/taskMange/zscqsq.vue
new file mode 100644
index 0000000..7470077
--- /dev/null
+++ b/src/views/lcProject/taskMange/zscqsq.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
知识产权需求
+
专利类型
+
+ {{ item.name
+ }}
+
+
国家
+
+ {{ item.name }}
+
+
输出文件
+
+
{{ data['table_title_' + item] }}
+
+
+
+
备注
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/taskMange/zscqxq.vue b/src/views/lcProject/taskMange/zscqxq.vue
new file mode 100644
index 0000000..d3858b5
--- /dev/null
+++ b/src/views/lcProject/taskMange/zscqxq.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
知识产权需求
+
+
专利类型
+
+ {{ item.name
+ }}
+
+
国家
+
+ {{ item.name }}
+
+
+
+
备注
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/lcProject/templateMange/index.vue b/src/views/lcProject/templateMange/index.vue
new file mode 100644
index 0000000..edcda03
--- /dev/null
+++ b/src/views/lcProject/templateMange/index.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上传文件
+
+
+
+
+
+
+ 下载
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认上传
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
new file mode 100644
index 0000000..02750f5
--- /dev/null
+++ b/src/views/login/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
diff --git a/src/views/mold/add_mold.vue b/src/views/mold/add_mold.vue
new file mode 100644
index 0000000..d2900bd
--- /dev/null
+++ b/src/views/mold/add_mold.vue
@@ -0,0 +1,758 @@
+
+
+
+
+
+
diff --git a/src/views/mold/edit_mold.vue b/src/views/mold/edit_mold.vue
new file mode 100644
index 0000000..1f331b6
--- /dev/null
+++ b/src/views/mold/edit_mold.vue
@@ -0,0 +1,701 @@
+
+
+
+
+
+
diff --git a/src/views/mold/index.vue b/src/views/mold/index.vue
new file mode 100644
index 0000000..841c4df
--- /dev/null
+++ b/src/views/mold/index.vue
@@ -0,0 +1,443 @@
+
+
+
+
+
+
+
+
+
+
+ {{ row.matrix_sn }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.status_name }}
+ {{ row.status_name }}
+ {{ row.status_name }}
+ {{ row.status_name }}
+
+
+
+
+
+ 下载
+ 下载
+
+
+
+
+
+
+ {{ scope.row.remark }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/product/productList.vue b/src/views/product/productList.vue
new file mode 100644
index 0000000..169ddec
--- /dev/null
+++ b/src/views/product/productList.vue
@@ -0,0 +1,244 @@
+
+
+
+ 产品列表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/public/404.vue b/src/views/public/404.vue
new file mode 100644
index 0000000..a0175bf
--- /dev/null
+++ b/src/views/public/404.vue
@@ -0,0 +1,12 @@
+
+ 404
+
+
+
diff --git a/src/views/system/brand.vue b/src/views/system/brand.vue
new file mode 100644
index 0000000..47774e4
--- /dev/null
+++ b/src/views/system/brand.vue
@@ -0,0 +1,460 @@
+
+
+
+
+
+
+
+
+ 新增品牌
+ 删除品牌
+
+
+
+
+
+
+
+
+
+
+
{e.target.src = defaulImg}"
+ style="width:40px;height:40px;" />
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定删除已选择的品牌吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/system/category.vue b/src/views/system/category.vue
new file mode 100644
index 0000000..c7bcc33
--- /dev/null
+++ b/src/views/system/category.vue
@@ -0,0 +1,859 @@
+
+
+
+
+
+
+ 新增分类
+
+
+
+
+
+
+
+
+
+
+
{
+ e.target.src = defaulImg
+ }
+ "
+ style="width: 40px; height: 40px;"
+ />
+
+
+
+
+ {{ scope.row.name }}
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定删除已选择的分类吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
diff --git a/src/views/system/language.vue b/src/views/system/language.vue
new file mode 100644
index 0000000..79e8956
--- /dev/null
+++ b/src/views/system/language.vue
@@ -0,0 +1,229 @@
+
+
+
+
+ 语言设置
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+ 确定删除已选择的语言吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/system/opdTeam.vue b/src/views/system/opdTeam.vue
new file mode 100644
index 0000000..ca4aeff
--- /dev/null
+++ b/src/views/system/opdTeam.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+ 新增OPD团队
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+ 确定删除已选择的分类吗?
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/system/propSetting.vue b/src/views/system/propSetting.vue
new file mode 100644
index 0000000..ff32948
--- /dev/null
+++ b/src/views/system/propSetting.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
+ 新增属性值
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue.config.js b/vue.config.js
new file mode 100644
index 0000000..1c9f833
--- /dev/null
+++ b/vue.config.js
@@ -0,0 +1,75 @@
+const settings = require('./src/settings')
+const path = require('path')
+function resolve(dir) {
+ return path.join(__dirname, dir)
+}
+
+// 移除 defineConfig 包裹(兼容旧版)
+module.exports = {
+ assetsDir: 'static',
+ runtimeCompiler: true,
+
+ // 关键修复:转译现代语法依赖
+ transpileDependencies: [
+ /@vue\/devtools-kit/,
+ /birpc/,
+ /@vue\/devtools-api/,
+ /vee-validate/
+ ],
+
+ css: {
+ requireModuleExtension: true,
+ sourceMap: process.env.NODE_ENV === 'development'
+ },
+
+ configureWebpack: {
+ name: settings.title,
+ resolve: {
+ extensions: ['.js', '.vue', '.json', '.mjs'],
+ alias: { '@': resolve('src') }
+ },
+ module: {
+ rules: [
+ {
+ test: /\.m?js$/,
+ include: /node_modules\/(@vue\/devtools-kit|birpc)/,
+ use: {
+ loader: 'babel-loader',
+ options: {
+ presets: ['@babel/preset-env'],
+ plugins: [
+ '@babel/plugin-proposal-optional-chaining'
+ ]
+ }
+ }
+ },
+ {
+ test: /\.mjs$/,
+ include: /node_modules/,
+ type: "javascript/auto"
+ }
+ ]
+ },
+ plugins: [
+ require('unplugin-vue-components/webpack')({
+ resolvers: [require('unplugin-vue-components/resolvers').ElementPlusResolver()]
+ })
+ ]
+ },
+
+ chainWebpack: config => {
+ // 生产环境移除console
+ if (process.env.NODE_ENV === 'production') {
+ config.optimization.minimizer('terser').tap(args => {
+ args[0].terserOptions.compress.drop_console = true
+ return args
+ })
+ }
+ },
+
+ devServer: {
+ host: 'swt.costapi.f2b211.com',
+ https: true,
+ hot: true
+ }
+}
\ No newline at end of file