commit a9ecf25877a322dab300397f0b4331d6f0e61382 Author: GaoF Date: Tue Jul 23 11:24:17 2024 +0800 升级 ant v3 -> v4 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4e1edd1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..4cd72e7 --- /dev/null +++ b/.env.development @@ -0,0 +1,14 @@ +# 本地环境 +NODE_ENV = development + +# 标题 +VITE_TITLE = Snowy + +# 接口地址 +VITE_API_BASEURL = http://localhost:82 + +# 本地端口 +VITE_PORT = 81 + +# 开启设置抽屉 +VITE_SET_DRAWER = true diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..cc8d8d4 --- /dev/null +++ b/.env.production @@ -0,0 +1,14 @@ +# 生产环境 +NODE_ENV = production + +# 标题 +VITE_TITLE = Snowy + +# 接口地址 +VITE_API_BASEURL = http://127.0.0.1:82 + +# 本地端口 +VITE_PORT = 81 + +# 开启设置抽屉 +VITE_SET_DRAWER = false diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c756d58 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,39 @@ +module.exports = { + root: true, + env: { + browser: true, + node: true, + es6: true, + 'vue/setup-compiler-macros': true + }, + parser: 'vue-eslint-parser', + extends: ['plugin:vue/vue3-recommended', 'eslint:recommended', 'plugin:prettier/recommended'], + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + rules: { + 'no-unused-vars': 'off', + 'no-undef': 'off', + 'vue/script-setup-uses-vars': 'error', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + 'space-before-function-paren': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/require-default-prop': 'off', + 'vue/html-self-closing': 'off', + 'vue/v-on-event-hyphenation': 'off', + 'vue/multi-word-component-names': 'off', + 'prettier/prettier': ['error', { endOfLine: 'auto' }] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5ee395 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +.DS_Store +node_modules +/dist +*.lock +package-lock.json + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# other files +stats.html +auto-imports.d.ts + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d6aac6c --- /dev/null +++ b/LICENSE @@ -0,0 +1,53 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and +You must cause any modified files to carry prominent notices stating that You changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..069bea9 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ + +## 安装依赖 + +``` +npm install +``` + +## 启动项目(开发模式) + +``` +npm run serve +``` + +启动完成后浏览器访问 http://localhost:81 diff --git a/antd.js b/antd.js new file mode 100644 index 0000000..39b3267 --- /dev/null +++ b/antd.js @@ -0,0 +1,299 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +function kebabCase(value) { + return value + .replace(/([A-Z])/g, ' $1') + .trim() + .split(' ') + .join('-') + .toLowerCase() +} +const antComponents = [ + 'Affix', + 'Alert', + 'Anchor', + 'AnchorLink', + 'AutoComplete', + 'AutoCompleteOptGroup', + 'AutoCompleteOption', + 'Avatar', + 'AvatarGroup', + 'BackTop', + 'Badge', + 'BadgeRibbon', + 'Breadcrumb', + 'BreadcrumbItem', + 'BreadcrumbSeparator', + 'Button', + 'ButtonGroup', + 'Calendar', + 'Card', + 'CardGrid', + 'CardMeta', + 'Carousel', + 'Cascader', + 'CheckableTag', + 'Checkbox', + 'CheckboxGroup', + 'Col', + 'Collapse', + 'CollapsePanel', + 'Comment', + 'ConfigProvider', + 'DatePicker', + 'Descriptions', + 'DescriptionsItem', + 'DirectoryTree', + 'Divider', + 'Drawer', + 'Dropdown', + 'DropdownButton', + 'Empty', + 'Form', + 'FormItem', + 'FormItemRest', + 'Image', + 'ImagePreviewGroup', + 'Input', + 'InputGroup', + 'InputNumber', + 'InputPassword', + 'InputSearch', + 'Layout', + 'LayoutContent', + 'LayoutFooter', + 'LayoutHeader', + 'LayoutSider', + 'List', + 'ListItem', + 'ListItemMeta', + 'LocaleProvider', + 'Mentions', + 'MentionsOption', + 'Menu', + 'MenuDivider', + 'MenuItem', + 'MenuItemGroup', + 'Modal', + 'MonthPicker', + 'PageHeader', + 'Pagination', + 'Popconfirm', + 'Popover', + 'Progress', + 'QuarterPicker', + 'Radio', + 'RadioButton', + 'RadioGroup', + 'RangePicker', + 'Rate', + 'Result', + 'Row', + 'Select', + 'SelectOptGroup', + 'SelectOption', + 'Skeleton', + 'SkeletonAvatar', + 'SkeletonButton', + 'SkeletonImage', + 'SkeletonInput', + 'Slider', + 'Space', + 'Spin', + 'Statistic', + 'StatisticCountdown', + 'Step', + 'Steps', + 'SubMenu', + 'Switch', + 'TabPane', + 'Table', + 'TableColumn', + 'TableColumnGroup', + 'TableSummary', + 'TableSummaryCell', + 'TableSummaryRow', + 'Tabs', + 'Tag', + 'Textarea', + 'TimePicker', + 'TimeRangePicker', + 'Timeline', + 'TimelineItem', + 'Tooltip', + 'Transfer', + 'Tree', + 'TreeNode', + 'TreeSelect', + 'TreeSelectNode', + 'Typography', + 'TypographyLink', + 'TypographyParagraph', + 'TypographyText', + 'TypographyTitle', + 'Upload', + 'UploadDragger', + 'WeekPicker' +] +const matchComponents = [ + { + pattern: /^Avatar/, + styleDir: 'avatar' + }, + { + pattern: /^AutoComplete/, + styleDir: 'auto-complete' + }, + { + pattern: /^Anchor/, + styleDir: 'anchor' + }, + { + pattern: /^Badge/, + styleDir: 'badge' + }, + { + pattern: /^Breadcrumb/, + styleDir: 'breadcrumb' + }, + { + pattern: /^Button/, + styleDir: 'button' + }, + { + pattern: /^Checkbox/, + styleDir: 'checkbox' + }, + { + pattern: /^Card/, + styleDir: 'card' + }, + { + pattern: /^Collapse/, + styleDir: 'collapse' + }, + { + pattern: /^Descriptions/, + styleDir: 'descriptions' + }, + { + pattern: /^RangePicker|^WeekPicker|^MonthPicker|^QuarterPicker/, + styleDir: 'date-picker' + }, + { + pattern: /^TimeRangePicker/, + styleDir: 'time-picker' + }, + { + pattern: /^Dropdown/, + styleDir: 'dropdown' + }, + { + pattern: /^Form/, + styleDir: 'form' + }, + { + pattern: /^InputNumber/, + styleDir: 'input-number' + }, + { + pattern: /^Input|^Textarea/, + styleDir: 'input' + }, + { + pattern: /^Statistic/, + styleDir: 'statistic' + }, + { + pattern: /^CheckableTag/, + styleDir: 'tag' + }, + { + pattern: /^Layout/, + styleDir: 'layout' + }, + { + pattern: /^Menu|^SubMenu/, + styleDir: 'menu' + }, + { + pattern: /^Table/, + styleDir: 'table' + }, + { + pattern: /^Radio/, + styleDir: 'radio' + }, + { + pattern: /^Image/, + styleDir: 'image' + }, + { + pattern: /^List/, + styleDir: 'list' + }, + { + pattern: /^Tab/, + styleDir: 'tabs' + }, + { + pattern: /^Mentions/, + styleDir: 'mentions' + }, + { + pattern: /^Step/, + styleDir: 'steps' + }, + { + pattern: /^Skeleton/, + styleDir: 'skeleton' + }, + { + pattern: /^Select/, + styleDir: 'select' + }, + { + pattern: /^TreeSelect/, + styleDir: 'tree-select' + }, + { + pattern: /^Tree|^DirectoryTree/, + styleDir: 'tree' + }, + { + pattern: /^Typography/, + styleDir: 'typography' + }, + { + pattern: /^Timeline/, + styleDir: 'timeline' + }, + { + pattern: /^Upload/, + styleDir: 'upload' + } +] +const antStyleDeps = Array.from( + new Set( + antComponents.map((name) => { + for (let i = 0; i < matchComponents.length; i++) { + if (name.match(matchComponents[i].pattern)) { + return matchComponents[i].styleDir + } + } + return kebabCase(name) + }) + ) +).map((name) => { + return `ant-design-vue/es/${name}/style` +}) + +export default antStyleDeps diff --git a/index.html b/index.html new file mode 100644 index 0000000..55d2e34 --- /dev/null +++ b/index.html @@ -0,0 +1,35 @@ + + + + + + + + Snowy + + + + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..abb8a77 --- /dev/null +++ b/package.json @@ -0,0 +1,90 @@ +{ + "name": "snowy-admin-web", + "version": "3.0.0", + "private": true, + "description": "小诺团队旗下Snowy前端,基于Antdv3.2+Vue3.2+Vite2.8", + "repository": { + "type": "git", + "url": "https://www.gitee.com/xiaonuobase/snowy" + }, + "license": "Apache-2.0", + "author": "yubaoshan", + "scripts": { + "serve": "vite --host 0.0.0.0", + "dev": "vite --mode development --host 0.0.0.0", + "preview": "vite preview", + "build": "vite build --mode production", + "prod": "vite --mode production" + }, + "dependencies": { + "@amap/amap-jsapi-loader": "1.0.1", + "@ant-design/colors": "7.0.0", + "@ant-design/icons-vue": "7.0.1", + "@antv/g2plot": "2.4.31", + "@chenfengyuan/vue-qrcode": "2.0.0", + "@highlightjs/vue-plugin": "2.1.0", + "@tinymce/tinymce-vue": "5.1.1", + "@vue-office/docx": "1.6.0", + "@vue-office/excel": "1.7.1", + "@vue-office/pdf": "1.6.4", + "ant-design-vue": "4.1.2", + "axios": "1.6.2", + "cropperjs": "1.6.1", + "dayjs": "1.11.10", + "echarts": "5.4.3", + "echarts-stat": "1.2.0", + "enquire.js": "2.1.6", + "event-source-polyfill": "1.0.31", + "fuse.js": "7.0.0", + "highlight.js": "11.9.0", + "hotkeys-js": "3.12.2", + "js-pinyin": "0.2.5", + "lodash-es": "4.17.21", + "nprogress": "0.2.0", + "pinia": "2.1.7", + "qs": "6.11.2", + "screenfull": "6.0.2", + "sm-crypto": "0.3.13", + "snowflake-id": "1.1.0", + "sortablejs": "1.15.1", + "tinymce": "6.8.1", + "vue": "3.4.21", + "vue-cropper": "1.1.1", + "vue-i18n": "9.8.0", + "vue-router": "4.3.0", + "vue3-colorpicker": "2.3.0", + "vue3-tree-org": "4.2.2", + "vuedraggable-es": "4.1.1" + }, + "devDependencies": { + "@babel/eslint-parser": "7.19.1", + "@vitejs/plugin-legacy": "5.2.0", + "@vitejs/plugin-vue": "4.5.2", + "@vitejs/plugin-vue-jsx": "3.1.0", + "@vue/compiler-sfc": "3.3.10", + "@vue/eslint-config-standard": "8.0.1", + "antd-less-to-css-variable": "1.0.5", + "autoprefixer": "10.4.16", + "eslint": "8.55.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-vue": "9.7.0", + "less": "4.1.3", + "postcss": "8.4.32", + "prettier": "3.1.0", + "rollup-plugin-visualizer": "5.10.0", + "tailwindcss": "3.3.6", + "typescript": "5.3.3", + "unplugin-auto-import": "0.17.2", + "unplugin-vue-components": "0.26.0", + "vite": "5.1.6", + "vite-plugin-compression": "0.5.1", + "vite-plugin-vue-setup-extend": "0.4.0", + "vue-eslint-parser": "9.3.2" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..179e992 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,16 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..3e2d12f --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,40 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +module.exports = { + // 一行最多 180 字符 + printWidth: 120, + // 使用 2 个tab缩进 + tabWidth: 2, + // 使用tab符缩进,false为空格缩进 + useTabs: true, + // 行尾需要分号 + semi: false, + // 使用单引号 + singleQuote: true, + // 对象的 key 仅在必要时用引号 + quoteProps: 'as-needed', + // jsx 不使用单引号,而使用双引号 + jsxSingleQuote: false, + // 末尾不需要逗号 + trailingComma: 'none', + // 大括号内的首尾需要空格 + bracketSpacing: true, + // jsx 标签的反尖括号不需要换行 + jsxBracketSameLine: true, + // 箭头函数,只有一个参数的时候,也需要括号 + arrowParens: 'always', + // 根据显示样式决定 html 要不要折行 + htmlWhitespaceSensitivity: 'css', + // 换行符使用 lf + endOfLine: 'lf', + // 缩进js跟css + vueIndentScriptAndStyle: true +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..9e3ed92 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/img/login_background.png b/public/img/login_background.png new file mode 100644 index 0000000..9a7424a Binary files /dev/null and b/public/img/login_background.png differ diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000..4d1a1df Binary files /dev/null and b/public/img/logo.png differ diff --git a/public/tinymce/langs/zh_CN.js b/public/tinymce/langs/zh_CN.js new file mode 100644 index 0000000..89b106c --- /dev/null +++ b/public/tinymce/langs/zh_CN.js @@ -0,0 +1,419 @@ +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\u7b26\u53f7...", +"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Description": "\u63cf\u8ff0", +"Robots": "\u673a\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7f16\u7801", +"Fullscreen": "\u5168\u5c4f", +"Action": "\u64cd\u4f5c", +"Shortcut": "\u5feb\u6377\u952e", +"Help": "\u5e2e\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", +"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", +"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", +"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", +"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", +"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u63d2\u4ef6", +"Handy Shortcuts": "\u5feb\u6377\u952e", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Source": "\u5730\u5740", +"Dimensions": "\u5927\u5c0f", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Style": "\u6837\u5f0f", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Border": "\u8fb9\u6846", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Image...": "\u56fe\u7247...", +"Image list": "\u56fe\u7247\u5217\u8868", +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", +"Edit image": "\u7f16\u8f91\u56fe\u7247", +"Image options": "\u56fe\u7247\u9009\u9879", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7f29\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8c03\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u9510\u5316", +"Contrast": "\u5bf9\u6bd4\u5ea6", +"Color levels": "\u989c\u8272\u5c42\u6b21", +"Gamma": "\u4f3d\u9a6c\u503c", +"Invert": "\u53cd\u8f6c", +"Apply": "\u5e94\u7528", +"Back": "\u540e\u9000", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", +"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Url": "\u5730\u5740", +"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...", +"Current window": "\u5f53\u524d\u7a97\u53e3", +"None": "\u65e0", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Anchors": "\u951a\u70b9", +"Link...": "\u94fe\u63a5...", +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"Link list": "\u94fe\u63a5\u5217\u8868", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", +"Alternative source": "\u955c\u50cf", +"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740", +"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Embed": "\u5185\u5d4c", +"Media...": "\u591a\u5a92\u4f53...", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print...": "\u6253\u5370...", +"Save": "\u4fdd\u5b58", +"Find": "\u67e5\u627e", +"Replace with": "\u66ff\u6362\u4e3a", +"Replace": "\u66ff\u6362", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Previous": "\u4e0a\u4e00\u4e2a", +"Next": "\u4e0b\u4e00\u4e2a", +"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Find whole words only": "\u5168\u5b57\u5339\u914d", +"Spell check": "\u62fc\u5199\u68c0\u67e5", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Delete table": "\u5220\u9664\u8868\u683c", +"Cell": "\u5355\u5143\u683c", +"Row": "\u884c", +"Column": "\u5217", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Delete row": "\u5220\u9664\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Cut row": "\u526a\u5207\u884c", +"Copy row": "\u590d\u5236\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Delete column": "\u5220\u9664\u5217", +"Cols": "\u5217", +"Rows": "\u884c", +"Width": "\u5bbd", +"Height": "\u9ad8", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Show caption": "\u663e\u793a\u6807\u9898", +"Left": "\u5de6\u5bf9\u9f50", +"Center": "\u5c45\u4e2d", +"Right": "\u53f3\u5bf9\u9f50", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Scope": "\u8303\u56f4", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Row group": "\u884c\u7ec4", +"Column group": "\u5217\u7ec4", +"Row type": "\u884c\u7c7b\u578b", +"Header": "\u8868\u5934", +"Body": "\u8868\u4f53", +"Footer": "\u8868\u5c3e", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Insert template...": "\u63d2\u5165\u6a21\u677f...", +"Templates": "\u6a21\u677f", +"Template": "\u6a21\u677f", +"Text color": "\u6587\u5b57\u989c\u8272", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Remove color": "\u79fb\u9664\u989c\u8272", +"Table of Contents": "\u5185\u5bb9\u5217\u8868", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Word count": "\u5b57\u6570", +"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", +"permanent pen": "\u8bb0\u53f7\u7b14", +"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 Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027", +"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...", +"Font": "\u5b57\u4f53", +"Size": "\u5b57\u53f7", +"More...": "\u66f4\u591a...", +"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00", +"Select...": "\u9009\u62e9...", +"Preferences": "\u9996\u9009\u9879", +"Yes": "\u662f", +"No": "\u5426", +"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15", +"Version": "\u7248\u672c", +"Anchor": "\u951a\u70b9", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Code sample": "\u4ee3\u7801\u793a\u4f8b", +"Color": "\u989c\u8272", +"Emoticons": "\u8868\u60c5", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Image": "\u56fe\u7247", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"Link": "\u94fe\u63a5", +"Poster": "\u5c01\u9762", +"Media": "\u5a92\u4f53", +"Print": "\u6253\u5370", +"Prev": "\u4e0a\u4e00\u4e2a", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Caption": "\u6807\u9898", +"Insert template": "\u63d2\u5165\u6a21\u677f" +}); \ 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..a6871c8 --- /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: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-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..df6ed08 --- /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: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-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..0a3d965 --- /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:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-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..0706740 --- /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:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-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..769655f --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.css @@ -0,0 +1,3034 @@ +/** + * 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 .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--state-disabled { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.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--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-icon-rtl { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg { + transform: rotateY(180deg); +} +.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%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; + z-index: 1200; +} +.tox-shadowhost.tox-fullscreen { + z-index: 1200; +} +.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 { + 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 { + flex-wrap: nowrap; +} +.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; + position: absolute; + width: 0; +} +.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[dir=rtl] .tox-tbtn__icon-rtl svg { + transform: rotateY(180deg); +} +.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..8d4e9ec --- /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 .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--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.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--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-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.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%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.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{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{flex-wrap:nowrap}.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;position:absolute;width:0}.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[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.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..715978b --- /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%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; + z-index: 1200; +} +.tox-shadowhost.tox-fullscreen { + z-index: 1200; +} +.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..9ba6e02 --- /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%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.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..efae400 --- /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: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-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..df6ed08 --- /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: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-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..0a3d965 --- /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:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-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..40b3378 --- /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:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-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..4b47a75 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.css @@ -0,0 +1,3034 @@ +/** + * 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 .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--state-disabled { + background-color: transparent; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.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--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-icon-rtl { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg { + transform: rotateY(180deg); +} +.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%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; + z-index: 1200; +} +.tox-shadowhost.tox-fullscreen { + z-index: 1200; +} +.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 { + 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 { + flex-wrap: nowrap; +} +.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; + position: absolute; + width: 0; +} +.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[dir=rtl] .tox-tbtn__icon-rtl svg { + transform: rotateY(180deg); +} +.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..2a00fac --- /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 .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--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.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--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-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.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%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.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{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{flex-wrap:nowrap}.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;position:absolute;width:0}.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[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.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..715978b --- /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%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; + z-index: 1200; +} +.tox-shadowhost.tox-fullscreen { + z-index: 1200; +} +.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..9ba6e02 --- /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%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.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..9fa7dfa --- /dev/null +++ b/src/App.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/api/auth/loginApi.js b/src/api/auth/loginApi.js new file mode 100644 index 0000000..dadcfa1 --- /dev/null +++ b/src/api/auth/loginApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { moduleRequest } from '@/utils/request' + +const request = moduleRequest(`/auth/b/`) +/** + * 登录 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // B端获取图片验证码 + getPicCaptcha(data) { + return request('getPicCaptcha', data, 'get') + }, + // B端获取手机验证码 + getPhoneValidCode(data) { + return request('getPhoneValidCode', data, 'get') + }, + // B端账号密码登录 + login(data) { + return request('doLogin', data, 'post', false) + }, + // B端手机验证码登录 + loginByPhone(data) { + return request('doLoginByPhone', data, 'post', false) + }, + // 退出 + logout(data) { + return request('doLogout', data, 'get') + }, + // 获取用户信息 + getLoginUser(data) { + return request('getLoginUser', data, 'get') + } +} diff --git a/src/api/auth/monitorApi.js b/src/api/auth/monitorApi.js new file mode 100644 index 0000000..984c8f3 --- /dev/null +++ b/src/api/auth/monitorApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/` + url, ...arg) +/** + * 绘画 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 会话统计 + monitorAnalysis(data) { + return request('session/analysis', data, 'get') + }, + // 获取会话分页 + monitorBPage(data) { + return request('session/b/page', data, 'get') + }, + // 获取会话分页 + monitorCPage(data) { + return request('session/c/page', data, 'get') + }, + // 强退B端session + monitorBExit(data) { + return request('session/b/exit', data) + }, + // 强退C端session + monitorCExit(data) { + return request('session/c/exit', data) + }, + // 强退B端token + monitorTokenBExit(data) { + return request('token/b/exit', data) + }, + // 强退C端token + monitorTokenCExit(data) { + return request('token/c/exit', data) + } +} diff --git a/src/api/auth/oauthApi.js b/src/api/auth/oauthApi.js new file mode 100644 index 0000000..bb0c219 --- /dev/null +++ b/src/api/auth/oauthApi.js @@ -0,0 +1,29 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/third/` + url, ...arg) +/** + * 三方登录 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 第三方登录页面渲染 + thirdRender(data) { + return request('render', data, 'get') + }, + // 第三方登录授权回调 + thirdCallback(data) { + return request('callback', data, 'get') + } +} diff --git a/src/api/auth/thirdApi.js b/src/api/auth/thirdApi.js new file mode 100644 index 0000000..1a01c44 --- /dev/null +++ b/src/api/auth/thirdApi.js @@ -0,0 +1,33 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/auth/third/` + url, ...arg) +/** + * 三方用户 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取三方用户分页 + thirdPage(data) { + return request('page', data, 'get') + }, + // 第三方登录页面渲染 + thirdRender(data) { + return request('render', data, 'get') + }, + // 第三方登录授权回调 + thirdCallback(data) { + return request('callback', data, 'get') + } +} diff --git a/src/api/biz/bizDictApi.js b/src/api/biz/bizDictApi.js new file mode 100644 index 0000000..cc49cc0 --- /dev/null +++ b/src/api/biz/bizDictApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/dict/` + url, ...arg) +/** + * 字典 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取业务字典分页 + dictPage(data) { + return request('page', data, 'get') + }, + // 获取业务字典树 + dictTree(data) { + return request('tree', data, 'get') + }, + // 获取所有字典树 + dictTreeAll(data) { + return request('treeAll', data, 'get') + }, + // 编辑业务字典 + submitForm(data) { + return request('edit', data) + } +} diff --git a/src/api/biz/bizIndexApi.js b/src/api/biz/bizIndexApi.js new file mode 100644 index 0000000..f1ded64 --- /dev/null +++ b/src/api/biz/bizIndexApi.js @@ -0,0 +1,24 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/index/` + url, ...arg) + +/** + * 业务主页Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/11 14:46 + **/ +export default { + // 获取轮播图列表 + bizIndexSlideshowList(data) { + return request('slideshow/list', data, 'get') + }, + // 获取通知公告列表 + bizIndexNoticeList(data) { + return request('notice/list', data, 'get') + }, + // 获取通知公告详情 + bizIndexNoticeDetail(data) { + return request('notice/detail', data, 'get') + } +} diff --git a/src/api/biz/bizNoticeApi.js b/src/api/biz/bizNoticeApi.js new file mode 100644 index 0000000..c75200b --- /dev/null +++ b/src/api/biz/bizNoticeApi.js @@ -0,0 +1,36 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/notice/` + url, ...arg) + +/** + * 通知公告Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/11 14:46 + **/ +export default { + // 获取通知公告分页 + bizNoticePage(data) { + return request('page', data, 'get') + }, + // 提交通知公告表单 edit为true时为编辑,默认为新增 + bizNoticeSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除通知公告 + bizNoticeDelete(data) { + return request('delete', data) + }, + // 获取通知公告详情 + bizNoticeDetail(data) { + return request('detail', data, 'get') + }, + // 禁用通知公告 + bizNoticeDisableStatus(data) { + return request('disableStatus', data) + }, + // 启用通知公告 + bizNoticeEnableStatus(data) { + return request('enableStatus', data) + } +} diff --git a/src/api/biz/bizOrgApi.js b/src/api/biz/bizOrgApi.js new file mode 100644 index 0000000..bca4ea8 --- /dev/null +++ b/src/api/biz/bizOrgApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/org/` + url, ...arg) +/** + * 机构 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取机构分页 + orgPage(data) { + return request('page', data, 'get') + }, + // 获取机构列表 + orgList(data) { + return request('list', data, 'get') + }, + // 获取机构树 + orgTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除机构 + orgDelete(data) { + return request('delete', data) + }, + // 获取机构详情 + orgDetail(data) { + return request('detail', data, 'get') + }, + // 获取机构树选择器 + orgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取人员选择器 + orgUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/api/biz/bizPositionApi.js b/src/api/biz/bizPositionApi.js new file mode 100644 index 0000000..bf78532 --- /dev/null +++ b/src/api/biz/bizPositionApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/position/` + url, ...arg) +/** + * 岗位 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取岗位分页 + positionPage(data) { + return request('page', data, 'get') + }, + // 获取岗位列表 + positionList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除岗位 + positionDelete(data) { + return request('delete', data) + }, + // 获取岗位详情 + positionDetail(data) { + return request('detail', data, 'get') + }, + // 获取机构树选择器 + positionOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取岗位选择器 + positionPositionSelector(data) { + return request('positionSelector', data, 'get') + } +} diff --git a/src/api/biz/bizUserApi.js b/src/api/biz/bizUserApi.js new file mode 100644 index 0000000..afc81d8 --- /dev/null +++ b/src/api/biz/bizUserApi.js @@ -0,0 +1,85 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/user/` + url, ...arg) +/** + * 人员接口api + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取人员分页 + userPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除人员 + userDelete(data) { + return request('delete', data) + }, + // 获取人员详情 + userDetail(data) { + return request('detail', data, 'get') + }, + // 禁用人员 + userDisableUser(data) { + return request('disableUser', data) + }, + // 启用人员 + userEnableUser(data) { + return request('enableUser', data) + }, + // 重置人员密码 + userResetPassword(data) { + return request('resetPassword', data) + }, + // 获取组织选择器 + userOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + userPositionSelector(data) { + return request('positionSelector', data, 'get') + }, + // 获取角色选择器 + userRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取人员选择器 + userSelector(data) { + return request('userSelector', data, 'get') + }, + // 人员拥有角色 + userOwnRole(data) { + return request('ownRole', data, 'get') + }, + // 给人员授权角色 + grantRole(data) { + return request('grantRole', data) + }, + // 人员导出 + userExport(data) { + return request('export', data, 'get', { + responseType: 'blob' + }) + }, + // 导出人员个人信息 + userExportUserInfo(data) { + return request('exportUserInfo', data, 'get', { + responseType: 'blob' + }) + } +} diff --git a/src/api/dev/configApi.js b/src/api/dev/configApi.js new file mode 100644 index 0000000..736fb83 --- /dev/null +++ b/src/api/dev/configApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/config/` + url, ...arg) +/** + * 配置 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取配置分页 + configPage(data) { + return request('page', data, 'get') + }, + // 获取配置列表 + configList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除配置 + configDelete(data) { + return request('delete', data) + }, + // 获取配置详情 + configDetail(data) { + return request('detail', data, 'get') + }, + // 配置批量更新 + configEditForm(data) { + return request('editBatch', data) + }, + // 获取系统基础配置 + configSysBaseList(data) { + return request('sysBaseList', data, 'get') + } +} diff --git a/src/api/dev/dictApi.js b/src/api/dev/dictApi.js new file mode 100644 index 0000000..b4defe6 --- /dev/null +++ b/src/api/dev/dictApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/dict/` + url, ...arg) +/** + * 字典 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取字典分页 + dictPage(data) { + return request('page', data, 'get') + }, + // 获取字典列表 + dictList(data) { + return request('list', data, 'get') + }, + // 获取字典树 + dictTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除字典 + dictDelete(data) { + return request('delete', data) + }, + // 获取字典详情 + dictDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/dev/emailApi.js b/src/api/dev/emailApi.js new file mode 100644 index 0000000..8deea4c --- /dev/null +++ b/src/api/dev/emailApi.js @@ -0,0 +1,65 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/email/` + url, ...arg) +/** + * 邮件 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取邮件分页 + emailPage(data) { + return request('page', data, 'get') + }, + // 发送邮件——本地TXT + emailSendLocalTxt(data) { + return request('sendLocalTxt', data) + }, + // 发送邮件——本地HTML + emailSendLocalHtml(data) { + return request('sendLocalHtml', data) + }, + // 发送邮件——阿里云TXT + emailSendAliyunTxt(data) { + return request('sendAliyunTxt', data) + }, + // 发送邮件——阿里云HTML + emailSendAliyunHtml(data) { + return request('sendAliyunHtml', data) + }, + // 发送邮件——阿里云TMP + emailSendAliyunTmp(data) { + return request('sendAliyunTmp', data) + }, + // 发送邮件——腾讯云TXT + emailSendTencentTxt(data) { + return request('sendTencentTxt', data) + }, + // 发送邮件——腾讯云HTML + emailSendTencentHtml(data) { + return request('sendTencentHtml', data) + }, + // 发送邮件——腾讯云TMP + emailSendTencentTmp(data) { + return request('sendTencentTmp', data) + }, + // 删除邮件 + emailDelete(data) { + return request('delete', data) + }, + // 获取邮件详情 + emailDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/dev/fileApi.js b/src/api/dev/fileApi.js new file mode 100644 index 0000000..5c6d8f4 --- /dev/null +++ b/src/api/dev/fileApi.js @@ -0,0 +1,87 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/file/` + url, ...arg) +/** + * 文件 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 动态上传文件返回id + fileUploadDynamicReturnId(data) { + return request('uploadDynamicReturnId', data) + }, + // 动态上传文件返回url + fileUploadDynamicReturnUrl(data) { + return request('uploadDynamicReturnUrl', data) + }, + // 本地文件上传,返回文件id + fileUploadReturnId(data) { + return request('uploadLocalReturnId', data) + }, + // 阿里云文件上传,返回文件id + fileUploadAliyunReturnId(data) { + return request('uploadAliyunReturnId', data) + }, + // 腾讯云文件上传,返回文件id + fileUploadTencentReturnId(data) { + return request('uploadTencentReturnId', data) + }, + // MINIO文件上传,返回文件id + fileUploadMinioReturnId(data) { + return request('uploadMinioReturnId', data) + }, + // 本地文件上传,返回文件Url + fileUploadLocalReturnUrl(data) { + return request('uploadLocalReturnUrl', data) + }, + // 阿里云文件上传,返回文件Url + fileUploadAliyunReturnUrl(data) { + return request('uploadAliyunReturnUrl', data) + }, + // 腾讯云文件上传,返回文件Url + fileUploadTencentReturnUrl(data) { + return request('uploadTencentReturnUrl', data) + }, + // MINIO文件上传,返回文件Url + fileUploadMinioReturnUrl(data) { + return request('uploadMinioReturnUrl', data) + }, + // 获取文件分页列表 + filePage(data) { + return request('page', data, 'get') + }, + // 获取文件列表 + fileList(data) { + return request('list', data, 'get') + }, + // 下载文件,这里要带上blob类型 + fileDownload(data) { + return request('download', data, 'get', { + responseType: 'blob' + }) + }, + // 获取文件详情 + fileDetail(data) { + return request('detail', data, 'get') + }, + // 根据文件url集合获取文件集合 + fileGetFileListByUrlList(data) { + return request('getFileListByUrlList', data) + }, + // 删除文件 + fileDelete(data) { + return request('delete', data) + } +} diff --git a/src/api/dev/jobApi.js b/src/api/dev/jobApi.js new file mode 100644 index 0000000..a519c4a --- /dev/null +++ b/src/api/dev/jobApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/job/` + url, ...arg) +/** + * 定时任务 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取定时任务分页 + jobPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除定时任务 + jobDelete(data) { + return request('delete', data) + }, + // 获取定时任务详情 + jobDetail(data) { + return request('detail', data, 'get') + }, + // 停止定时任务 + jobStopJob(data) { + return request('stopJob', data) + }, + // 运行定时任务 + jobRunJob(data) { + return request('runJob', data) + }, + // 运行定时任务 + jobRunJobNow(data) { + return request('runJobNow', data) + }, + // 获取定时任务类 + jobGetActionClass(data) { + return request('getActionClass', data, 'get') + } +} diff --git a/src/api/dev/logApi.js b/src/api/dev/logApi.js new file mode 100644 index 0000000..e4dcf78 --- /dev/null +++ b/src/api/dev/logApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/log/` + url, ...arg) +/** + * 日志 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取日志分页 + logPage(data) { + return request('page', data, 'get') + }, + // 获取日志详情 + logDetail(data) { + return request('detail', data, 'get') + }, + // 获取访问日志折线图数据 + logVisLineChartData(data) { + return request('vis/lineChartData', data, 'get') + }, + // 获取访问日志饼状图数据 + logVisPieChartData(data) { + return request('vis/pieChartData', data, 'get') + }, + // 获取操作日志柱状图数据 + logOpBarChartData(data) { + return request('op/barChartData', data, 'get') + }, + // 获取操作日志饼状图数据 + logOpPieChartData(data) { + return request('op/pieChartData', data, 'get') + }, + // 清空日志 + logDelete(data) { + return request('delete', data) + } +} diff --git a/src/api/dev/messageApi.js b/src/api/dev/messageApi.js new file mode 100644 index 0000000..8cd2cb4 --- /dev/null +++ b/src/api/dev/messageApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/message/` + url, ...arg) +/** + * 站内信 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取站内信分页 + messagePage(data) { + return request('page', data, 'get') + }, + // 获取站内信分页 + messageSend(data) { + return request('send', data) + }, + // 删除站内信 + messageDelete(data) { + return request('delete', data) + }, + // 获取站内信详情 + messageDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/dev/monitorApi.js b/src/api/dev/monitorApi.js new file mode 100644 index 0000000..166cf85 --- /dev/null +++ b/src/api/dev/monitorApi.js @@ -0,0 +1,29 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/monitor/` + url, ...arg) +/** + * 监控 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取服务器监控信息 + monitorServerInfo(data) { + return request('serverInfo', data, 'get') + }, + // 获取服务器网络情况 + monitorNetworkInfo(data) { + return request('networkInfo', data, 'get') + } +} diff --git a/src/api/dev/slideshowApi.js b/src/api/dev/slideshowApi.js new file mode 100644 index 0000000..2f61c81 --- /dev/null +++ b/src/api/dev/slideshowApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/slideshow/` + url, ...arg) + +/** + * 轮播图Api接口管理器 + * + * @author yubaoshan + * @date 2024/07/13 00:31 + **/ +export default { + // 获取轮播图分页 + devSlideshowPage(data) { + return request('page', data, 'get') + }, + // 提交轮播图表单 edit为true时为编辑,默认为新增 + devSlideshowSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除轮播图 + devSlideshowDelete(data) { + return request('delete', data) + }, + // 禁用轮播图 + devSlideshowDisableStatus(data) { + return request('disableStatus', data) + }, + // 启用轮播图 + devSlideshowEnableStatus(data) { + return request('enableStatus', data) + } +} diff --git a/src/api/dev/smsApi.js b/src/api/dev/smsApi.js new file mode 100644 index 0000000..82f6e55 --- /dev/null +++ b/src/api/dev/smsApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/dev/sms/` + url, ...arg) +/** + * 短信 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取短信分页 + smsPage(data) { + return request('page', data, 'get') + }, + // 发送短信——阿里云 + smsSendAliyun(data) { + return request('sendAliyun', data) + }, + // 发送短信——腾讯云 + smsSendTencent(data) { + return request('sendTencent', data) + }, + // 发送短信——小诺短信 + smsSendXiaonuo(data) { + return request('sendXiaonuo', data) + }, + // 删除短信 + smsDelete(data) { + return request('delete', data) + }, + // 获取短信详情 + smsDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/gen/genBasicApi.js b/src/api/gen/genBasicApi.js new file mode 100644 index 0000000..45845c3 --- /dev/null +++ b/src/api/gen/genBasicApi.js @@ -0,0 +1,49 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/gen/basic/` + url, ...arg) + +export default { + // 获取代码生成基础分页 + basicPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除代码生成基础 + basicDelete(data) { + return request('delete', data) + }, + // 获取代码生成基础详情 + basicDetail(data) { + return request('detail', data, 'get') + }, + // 获取所有表信息 + basicTables(data) { + return request('tables', data, 'get') + }, + // 获取表内所有字段信息 + basicTableColumns(data) { + return request('tableColumns', data, 'get') + }, + // 执行代码生成 压缩包 + basicExecGenBiz(data) { + const options = { + responseType: 'blob' + } + return request('execGenZip', data, 'get', options) + }, + // 执行代码生成 项目内 + basicExecGenPro(data) { + return request('execGenPro', data) + }, + // 预览代码生成 + basicPreviewGen(data) { + return request('previewGen', data, 'get') + }, + // 获取所有移动端模块 + basicMobileModuleSelector(data) { + return request('mobileModuleSelector', data, 'get') + } +} diff --git a/src/api/gen/genConfigApi.js b/src/api/gen/genConfigApi.js new file mode 100644 index 0000000..491efaa --- /dev/null +++ b/src/api/gen/genConfigApi.js @@ -0,0 +1,26 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/gen/config/` + url, ...arg) + +export default { + // 获取代码生成详情配置列表 + configList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除代码生成详情配置 + configDelete(data) { + return request('delete', data) + }, + // 获取代码生成详情配置详情 + configDetail(data) { + return request('detail', data, 'get') + }, + // 批量编辑代码生成详细配置 + configEditBatch(data) { + return request('editBatch', data) + } +} diff --git a/src/api/mobile/resource/buttonApi.js b/src/api/mobile/resource/buttonApi.js new file mode 100644 index 0000000..cddb4d9 --- /dev/null +++ b/src/api/mobile/resource/buttonApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/button/` + url, ...arg) +/** + * 按钮 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取按钮分页 + mobileButtonPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + mobileButtonSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除按钮 + mobileButtonDelete(data) { + return request('delete', data) + }, + // 获取按钮详情 + mobileButtonDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/mobile/resource/menuApi.js b/src/api/mobile/resource/menuApi.js new file mode 100644 index 0000000..43ba5ff --- /dev/null +++ b/src/api/mobile/resource/menuApi.js @@ -0,0 +1,40 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/menu/` + url, ...arg) + +/** + * 移动端菜单Api接口管理器 + * + * @author yubaoshan + * @date 2023/01/28 22:42 + **/ +export default { + // 获取移动端菜单tree + mobileMenuTree(data) { + return request('tree', data, 'get') + }, + // 提交移动端菜单表单 edit为true时为编辑,默认为新增 + mobileMenuSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 更改菜单所属模块 + mobileMenuChangeModule(data) { + return request('changeModule', data) + }, + // 删除移动端菜单 + mobileMenuDelete(data) { + return request('delete', data) + }, + // 获取移动端菜单详情 + mobileMenuDetail(data) { + return request('detail', data, 'get') + }, + // 获取模块选择器 + mobileMenuModuleSelector(data) { + return request('moduleSelector', data, 'get') + }, + // 获取菜单树选择器 + mobileMenuTreeSelector(data) { + return request('menuTreeSelector', data, 'get') + } +} diff --git a/src/api/mobile/resource/moduleApi.js b/src/api/mobile/resource/moduleApi.js new file mode 100644 index 0000000..c216eba --- /dev/null +++ b/src/api/mobile/resource/moduleApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/mobile/module/` + url, ...arg) +/** + * 类别 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取类别分页 + modulePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除类别 + moduleDelete(data) { + return request('delete', data) + }, + // 获取类别详情 + moduleDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/sys/indexApi.js b/src/api/sys/indexApi.js new file mode 100644 index 0000000..2b746c7 --- /dev/null +++ b/src/api/sys/indexApi.js @@ -0,0 +1,65 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/index/` + url, ...arg) +/** + * 系统首页控制器 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 添加当前用户日程 + indexScheduleAdd(data) { + return request('schedule/add', data) + }, + // 删除日程 + indexScheduleDeleteSchedule(data) { + return request('schedule/deleteSchedule', data) + }, + // 获取当前用户日程列表 + indexScheduleList(data) { + return request('schedule/list', data, 'get') + }, + // 获取当前用户站内信列表 + indexMessageList(data) { + return request('message/list', data, 'get') + }, + // 获取站内信详情 + indexMessageDetail(data) { + return request('message/detail', data, 'get') + }, + //站内信全部标记已读 + indexMessageAllMarkRead(data) { + return request('message/allMessageMarkRead', data) + }, + // 获取当前用户访问日志列表 + indexVisLogList(data) { + return request('visLog/list', data, 'get') + }, + // 获取当前用户操作日志列表 + indexOpLogList(data) { + return request('opLog/list', data, 'get') + }, + // 获取基础系统业务数据 + indexBizDataCount(data) { + return request('bizDataCount', data, 'get') + }, + // 获取运维一览数据 + indexOpDataCount(data) { + return request('opDataCount', data, 'get') + }, + // 获取基础工具数据 + indexToolDataCount(data) { + return request('toolDataCount', data, 'get') + } +} diff --git a/src/api/sys/orgApi.js b/src/api/sys/orgApi.js new file mode 100644 index 0000000..45d9570 --- /dev/null +++ b/src/api/sys/orgApi.js @@ -0,0 +1,53 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/org/` + url, ...arg) +/** + * 机构 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取组织分页 + orgPage(data) { + return request('page', data, 'get') + }, + // 获取组织列表 + orgList(data) { + return request('list', data, 'get') + }, + // 获取组织树 + orgTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除组织 + orgDelete(data) { + return request('delete', data) + }, + // 获取组织详情 + orgDetail(data) { + return request('detail', data, 'get') + }, + // 获取组织树选择器 + orgOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取用户选择器 + orgUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/api/sys/positionApi.js b/src/api/sys/positionApi.js new file mode 100644 index 0000000..f15b535 --- /dev/null +++ b/src/api/sys/positionApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/position/` + url, ...arg) +/** + * 职位 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取职位分页 + positionPage(data) { + return request('page', data, 'get') + }, + // 获取职位列表 + positionList(data) { + return request('list', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除职位 + positionDelete(data) { + return request('delete', data) + }, + // 获取职位详情 + positionDetail(data) { + return request('detail', data, 'get') + }, + // 获取组织树选择器 + positionOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + positionPositionSelector(data) { + return request('positionSelector', data, 'get') + } +} diff --git a/src/api/sys/resource/buttonApi.js b/src/api/sys/resource/buttonApi.js new file mode 100644 index 0000000..d609524 --- /dev/null +++ b/src/api/sys/resource/buttonApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/button/` + url, ...arg) +/** + * 按钮 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取按钮分页 + buttonPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除按钮 + buttonDelete(data) { + return request('delete', data) + }, + // 获取按钮详情 + buttonDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/sys/resource/fieldApi.js b/src/api/sys/resource/fieldApi.js new file mode 100644 index 0000000..381cc90 --- /dev/null +++ b/src/api/sys/resource/fieldApi.js @@ -0,0 +1,45 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/field/` + url, ...arg) +/** + * 字段 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取字段分页 + fieldPage(data) { + return request('page', data, 'get') + }, + // 获取字段树 + fieldTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除字段 + fieldDelete(data) { + return request('delete', data) + }, + // 获取字段详情 + fieldDetail(data) { + return request('detail', data, 'get') + }, + // 获取菜单树选择器 + fieldMenuTreeSelector(data) { + return request('MenuTreeSelector', data, 'get') + } +} diff --git a/src/api/sys/resource/menuApi.js b/src/api/sys/resource/menuApi.js new file mode 100644 index 0000000..fb6df87 --- /dev/null +++ b/src/api/sys/resource/menuApi.js @@ -0,0 +1,49 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/menu/` + url, ...arg) +/** + * 菜单 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取菜单树 + menuTree(data) { + return request('tree', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 更改菜单所属模块 + menuChangeModule(data) { + return request('changeModule', data) + }, + // 删除菜单 + menuDelete(data) { + return request('delete', data) + }, + // 获取菜单详情 + menuDetail(data) { + return request('detail', data, 'get') + }, + // 获取模块选择器 + menuModuleSelector(data) { + return request('moduleSelector', data, 'get') + }, + // 获取菜单树选择器 + menuTreeSelector(data) { + return request('menuTreeSelector', data, 'get') + } +} diff --git a/src/api/sys/resource/moduleApi.js b/src/api/sys/resource/moduleApi.js new file mode 100644 index 0000000..15cd153 --- /dev/null +++ b/src/api/sys/resource/moduleApi.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/module/` + url, ...arg) +/** + * 模块 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取模块分页 + modulePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除模块 + moduleDelete(data) { + return request('delete', data) + }, + // 获取模块详情 + moduleDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/src/api/sys/roleApi.js b/src/api/sys/roleApi.js new file mode 100644 index 0000000..8f1f116 --- /dev/null +++ b/src/api/sys/roleApi.js @@ -0,0 +1,93 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/role/` + url, ...arg) +/** + * 角色 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取角色分页 + rolePage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除角色 + roleDelete(data) { + return request('delete', data) + }, + // 获取角色详情 + roleDetail(data) { + return request('detail', data, 'get') + }, + // 获取角色拥有资源 + roleOwnResource(data) { + return request('ownResource', data, 'get') + }, + // 给角色授权资源 + roleGrantResource(data) { + return request('grantResource', data) + }, + // 获取角色拥有移动端菜单 + roleOwnMobileMenu(data) { + return request('ownMobileMenu', data, 'get') + }, + // 给角色授权移动端菜单 + roleGrantMobileMenu(data) { + return request('grantMobileMenu', data) + }, + // 获取角色拥有权限 + roleOwnPermission(data) { + return request('ownPermission', data, 'get') + }, + // 给角色授权权限 + roleGrantPermission(data) { + return request('grantPermission', data) + }, + // 获取角色下的用户 + roleOwnUser(data) { + return request('ownUser', data, 'get') + }, + // 给角色授权用户 + roleGrantUser(data) { + return request('grantUser', data) + }, + // 获取机构树 + roleOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取资源授权树 + roleResourceTreeSelector(data) { + return request('resourceTreeSelector', data, 'get') + }, + // 获取移动端菜单授权树 + roleMobileMenuTreeSelector(data) { + return request('mobileMenuTreeSelector', data, 'get') + }, + // 获取权限授权树 + rolePermissionTreeSelector(data) { + return request('permissionTreeSelector', data, 'get') + }, + // 获取角色选择器 + roleRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取用户选择器 + roleUserSelector(data) { + return request('userSelector', data, 'get') + } +} diff --git a/src/api/sys/userApi.js b/src/api/sys/userApi.js new file mode 100644 index 0000000..eefea01 --- /dev/null +++ b/src/api/sys/userApi.js @@ -0,0 +1,111 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/user/` + url, ...arg) +/** + * 用户接口api + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取用户分页 + userPage(data) { + return request('page', data, 'get') + }, + // 提交表单 edit为true时为编辑,默认为新增 + submitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除用户 + userDelete(data) { + return request('delete', data) + }, + // 获取用户详情 + userDetail(data) { + return request('detail', data, 'get') + }, + // 禁用用户 + userDisableUser(data) { + return request('disableUser', data) + }, + // 启用用户 + userEnableUser(data) { + return request('enableUser', data) + }, + // 重置用户密码 + userResetPassword(data) { + return request('resetPassword', data) + }, + // 获取组织选择器 + userOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取职位选择器 + userPositionSelector(data) { + return request('positionSelector', data, 'get') + }, + // 获取角色选择器 + userRoleSelector(data) { + return request('roleSelector', data, 'get') + }, + // 获取用户选择器 + userSelector(data) { + return request('userSelector', data, 'get') + }, + // 用户拥有角色 + userOwnRole(data) { + return request('ownRole', data, 'get') + }, + // 给用户授权角色 + grantRole(data) { + return request('grantRole', data) + }, + // 获取用户拥有资源 + userOwnResource(data) { + return request('ownResource', data, 'get') + }, + // 给用户授权资源 + userGrantResource(data) { + return request('grantResource', data) + }, + // 获取用户拥有权限 + userOwnPermission(data) { + return request('ownPermission', data, 'get') + }, + // 给用户授权权限 + userGrantPermission(data) { + return request('grantPermission', data) + }, + // 下载用户导入模板 + userDownloadImportUserTemplate(data) { + return request('downloadImportUserTemplate', data, 'get', { + responseType: 'blob' + }) + }, + // 用户导入 + userImport(data) { + return request('import', data) + }, + // 用户导出 + userExport(data) { + return request('export', data, 'get', { + responseType: 'blob' + }) + }, + // 导出用户个人信息 + userExportUserInfo(data) { + return request('exportUserInfo', data, 'get', { + responseType: 'blob' + }) + } +} diff --git a/src/api/sys/userCenterApi.js b/src/api/sys/userCenterApi.js new file mode 100644 index 0000000..e66105c --- /dev/null +++ b/src/api/sys/userCenterApi.js @@ -0,0 +1,105 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/userCenter/` + url, ...arg) +/** + * 用户个人控制器 + * + * @author yubaoshan + * @date 2022-09-22 22:33:20 + */ +export default { + // 获取图片验证码 + userGetPicCaptcha(data) { + return request('getPicCaptcha', data, 'get') + }, + // 找回密码获取手机验证码 + userFindPasswordGetPhoneValidCode(data) { + return request('findPasswordGetPhoneValidCode', data, 'get') + }, + // 找回密码获取邮箱验证码 + userFindPasswordGetEmailValidCode(data) { + return request('findPasswordGetEmailValidCode', data, 'get') + }, + // 通过手机号找回用户密码 + userFindPasswordByPhone(data) { + return request('findPasswordByPhone', data) + }, + // 通过邮箱找回用户密码 + userFindPasswordByEmail(data) { + return request('findPasswordByEmail', data) + }, + // 修改用户密码 + userUpdatePassword(data) { + return request('updatePassword', data) + }, + // 修改用户头像 + userUpdateAvatar(data) { + return request('updateAvatar', data) + }, + // 修改用户签名图片 + userUpdateSignature(data) { + return request('updateSignature', data) + }, + // 获取登录用户的菜单 + userLoginMenu(data) { + return request('loginMenu', data, 'get') + }, + // 获取登录用户组织树 + userLoginOrgTree(data) { + return request('loginOrgTree', data, 'get') + }, + // 获取登录用户的职位信息 + userLoginPositionInfo(data) { + return request('loginPositionInfo', data, 'get') + }, + // 编辑个人信息 + userUpdateUserInfo(data) { + return request('updateUserInfo', data) + }, + // 编辑个人工作台 + userUpdateUserWorkbench(data) { + return request('updateUserWorkbench', data) + }, + // 获取登录用户的工作台 + userLoginWorkbench(data) { + return request('loginWorkbench', data, 'get') + }, + // 获取登录用户的站内信分页 + userLoginUnreadMessagePage(data) { + return request('loginUnreadMessagePage', data, 'get') + }, + // 读取登录用户站内信详情 + userLoginUnreadMessageDetail(data) { + return request('loginUnreadMessageDetail', data, 'get') + }, + // 根据id集合获取组织集合 + userCenterGetOrgListByIdList(data) { + return request('getOrgListByIdList', data) + }, + // 根据id集合获取用户集合 + userCenterGetUserListByIdList(data) { + return request('getUserListByIdList', data) + }, + // 根据id集合获取职位集合 + userCenterGetPositionListByIdList(data) { + return request('getPositionListByIdList', data) + }, + // 根据id集合获取角色集合 + userCenterGetRoleListByIdList(data) { + return request('getRoleListByIdList', data) + }, + // 根据id获取头像 + userCenterGtAvatarById(data) { + return request('getAvatarById', data) + } +} diff --git a/src/assets/icons/GiteeIcon.vue b/src/assets/icons/GiteeIcon.vue new file mode 100644 index 0000000..21dcad1 --- /dev/null +++ b/src/assets/icons/GiteeIcon.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js new file mode 100644 index 0000000..c0d89c6 --- /dev/null +++ b/src/assets/icons/index.js @@ -0,0 +1,13 @@ +/* + ** 全局注册Icon组件 + * 推荐前往https://icones.js.org下载图标的Vue文件,然后放在src/assets/icons文件夹里面 + * 这个网址有118个图标集,包括antd、bootstrap、eleme等累计140456个图标 + */ +import { defineAsyncComponent } from 'vue' +const components = import.meta.glob('./**/*.vue') // 异步方式 +export default function install(app) { + for (const [key, value] of Object.entries(components)) { + const name = key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')) + app.component(name, defineAsyncComponent(value)) + } +} diff --git a/src/assets/icons/mobile/filled/iconfont.css b/src/assets/icons/mobile/filled/iconfont.css new file mode 100644 index 0000000..a4e757d --- /dev/null +++ b/src/assets/icons/mobile/filled/iconfont.css @@ -0,0 +1,173 @@ +@font-face { + font-family: "snowy"; /* Project id 3880534 */ + src: url('iconfont.ttf?t=1675528061732') format('truetype'); +} + +.snowy { + font-family: "snowy" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.arrow-up-filling:before { + content: "\e688"; +} + +.arrow-down-filling:before { + content: "\e689"; +} + +.arrow-left-filling:before { + content: "\e68a"; +} + +.arrow-right-filling:before { + content: "\e68b"; +} + +.caps-unlock-filling:before { + content: "\e68c"; +} + +.comment-filling:before { + content: "\e68d"; +} + +.check-item-filling:before { + content: "\e68e"; +} + +.clock-filling:before { + content: "\e68f"; +} + +.delete-filling:before { + content: "\e690"; +} + +.decline-filling:before { + content: "\e691"; +} + +.dynamic-filling:before { + content: "\e692"; +} + +.intermediate-filling:before { + content: "\e693"; +} + +.favorite-filling:before { + content: "\e694"; +} + +.layout-filling:before { + content: "\e695"; +} + +.help-filling:before { + content: "\e696"; +} + +.history-filling:before { + content: "\e697"; +} + +.filter-filling:before { + content: "\e698"; +} + +.file-common-filling:before { + content: "\e699"; +} + +.news-filling:before { + content: "\e69a"; +} + +.edit-filling:before { + content: "\e69b"; +} + +.fullscreen-expand-filling:before { + content: "\e69c"; +} + +.smile-filling:before { + content: "\e69d"; +} + +.rise-filling:before { + content: "\e69e"; +} + +.picture-filling:before { + content: "\e69f"; +} + +.notification-filling:before { + content: "\e6a0"; +} + +.user-filling:before { + content: "\e6a1"; +} + +.setting-filling:before { + content: "\e6a2"; +} + +.switch-filling:before { + content: "\e6a3"; +} + +.work-filling:before { + content: "\e6a4"; +} + +.task-filling:before { + content: "\e6a5"; +} + +.success-filling:before { + content: "\e6a6"; +} + +.warning-filling:before { + content: "\e6a7"; +} + +.folder-filling:before { + content: "\e6a8"; +} + +.map-filling:before { + content: "\e6a9"; +} + +.prompt-filling:before { + content: "\e6aa"; +} + +.meh-filling:before { + content: "\e6ab"; +} + +.cry-filling:before { + content: "\e6ac"; +} + +.top-filling:before { + content: "\e6ad"; +} + +.home-filling:before { + content: "\e6ae"; +} + +.sorting:before { + content: "\e6af"; +} + diff --git a/src/assets/icons/mobile/filled/iconfont.json b/src/assets/icons/mobile/filled/iconfont.json new file mode 100644 index 0000000..5189f8e --- /dev/null +++ b/src/assets/icons/mobile/filled/iconfont.json @@ -0,0 +1,289 @@ +{ + "id": "3880534", + "name": "snowy-app-filled", + "font_family": "snowy", + "css_prefix_text": "", + "description": "", + "glyphs": [ + { + "icon_id": "15838581", + "name": "arrow-up-filling", + "font_class": "arrow-up-filling", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "15838582", + "name": "arrow-down-filling", + "font_class": "arrow-down-filling", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "15838583", + "name": "arrow-left-filling", + "font_class": "arrow-left-filling", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15838584", + "name": "arrow-right-filling", + "font_class": "arrow-right-filling", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15838585", + "name": "caps-unlock-filling", + "font_class": "caps-unlock-filling", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "15838586", + "name": "comment-filling", + "font_class": "comment-filling", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "15838587", + "name": "check-item-filling", + "font_class": "check-item-filling", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "15838588", + "name": "clock-filling", + "font_class": "clock-filling", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "15838589", + "name": "delete-filling", + "font_class": "delete-filling", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "15838590", + "name": "decline-filling", + "font_class": "decline-filling", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "15838591", + "name": "dynamic-filling", + "font_class": "dynamic-filling", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "15838592", + "name": "intermediate-filling", + "font_class": "intermediate-filling", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "15838593", + "name": "favorite-filling", + "font_class": "favorite-filling", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "15838594", + "name": "layout-filling", + "font_class": "layout-filling", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "15838595", + "name": "help-filling", + "font_class": "help-filling", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "15838596", + "name": "history-filling", + "font_class": "history-filling", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "15838597", + "name": "filter-filling", + "font_class": "filter-filling", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "15838598", + "name": "file-common-filling", + "font_class": "file-common-filling", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "15838599", + "name": "news-filling", + "font_class": "news-filling", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "15838600", + "name": "edit-filling", + "font_class": "edit-filling", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "15838601", + "name": "fullscreen-expand-filling", + "font_class": "fullscreen-expand-filling", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "15838602", + "name": "smile-filling", + "font_class": "smile-filling", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "15838603", + "name": "rise-filling", + "font_class": "rise-filling", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "15838604", + "name": "picture-filling", + "font_class": "picture-filling", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "15838605", + "name": "notification-filling", + "font_class": "notification-filling", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "15838606", + "name": "user-filling", + "font_class": "user-filling", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "15838607", + "name": "setting-filling", + "font_class": "setting-filling", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "15838608", + "name": "switch-filling", + "font_class": "switch-filling", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "15838609", + "name": "work-filling", + "font_class": "work-filling", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "15838610", + "name": "task-filling", + "font_class": "task-filling", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "15838611", + "name": "success-filling", + "font_class": "success-filling", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "15838612", + "name": "warning-filling", + "font_class": "warning-filling", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "15838613", + "name": "folder-filling", + "font_class": "folder-filling", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "15838614", + "name": "map-filling", + "font_class": "map-filling", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "15838615", + "name": "prompt-filling", + "font_class": "prompt-filling", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "15838616", + "name": "meh-filling", + "font_class": "meh-filling", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "15838617", + "name": "cry-filling", + "font_class": "cry-filling", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "15838618", + "name": "top-filling", + "font_class": "top-filling", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "15838619", + "name": "home-filling", + "font_class": "home-filling", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "15838620", + "name": "sorting", + "font_class": "sorting", + "unicode": "e6af", + "unicode_decimal": 59055 + } + ] +} diff --git a/src/assets/icons/mobile/filled/iconfont.ttf b/src/assets/icons/mobile/filled/iconfont.ttf new file mode 100644 index 0000000..8fbd181 Binary files /dev/null and b/src/assets/icons/mobile/filled/iconfont.ttf differ diff --git a/src/assets/icons/mobile/index.js b/src/assets/icons/mobile/index.js new file mode 100644 index 0000000..6ed837b --- /dev/null +++ b/src/assets/icons/mobile/index.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import './line/iconfont.css' +import lineJsonData from './line/iconfont.json' + +import './filled/iconfont.css' +import filledJsonData from './filled/iconfont.json' + +export default { + icons: [ + { + name: '基础', + key: 'default', + iconItem: [ + { + name: '线框风格', + key: 'default', + item: lineJsonData.glyphs + }, + { + name: '实底风格', + key: 'filled', + item: filledJsonData.glyphs + } + ] + } + ] +} diff --git a/src/assets/icons/mobile/line/iconfont.css b/src/assets/icons/mobile/line/iconfont.css new file mode 100644 index 0000000..4042c72 --- /dev/null +++ b/src/assets/icons/mobile/line/iconfont.css @@ -0,0 +1,825 @@ +@font-face { + font-family: "snowy"; /* Project id 3791763 */ + src: url('iconfont.ttf?t=1675526220710') format('truetype'); +} + +.snowy { + font-family: "snowy" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.export-outlined:before { + content: "\e792"; +} + +.experiment-outlined:before { + content: "\e7c9"; +} + +.expand-outlined:before { + content: "\e915"; +} + +.expand-alt-outlined:before { + content: "\e7e9"; +} + +.exception-outlined:before { + content: "\e7bb"; +} + +.euro-outlined:before { + content: "\e78f"; +} + +.euro-circle-outlined:before { + content: "\eb62"; +} + +.environment-outlined:before { + content: "\e790"; +} + +.ellipsis-outlined:before { + content: "\e815"; +} + +.download-outlined:before { + content: "\e814"; +} + +.dollar-outlined:before { + content: "\e78d"; +} + +.dollar-circle-outlined:before { + content: "\eb61"; +} + +.dislike-outlined:before { + content: "\e7c8"; +} + +.disconnect-outlined:before { + content: "\e7e8"; +} + +.dingtalk-outlined:before { + content: "\e881"; +} + +.desktop-outlined:before { + content: "\e845"; +} + +.deployment-unit-outlined:before { + content: "\e7d2"; +} + +.delivered-procedure-outlined:before { + content: "\e911"; +} + +.delete-column-outlined:before { + content: "\e901"; +} + +.delete-row-outlined:before { + content: "\e902"; +} + +.database-outlined:before { + content: "\e7b9"; +} + +.dashboard-outlined:before { + content: "\e78b"; +} + +.customer-service-outlined:before { + content: "\e7ca"; +} + +.crown-outlined:before { + content: "\e844"; +} + +.credit-card-outlined:before { + content: "\e7e5"; +} + +.copyright-outlined:before { + content: "\e789"; +} + +.copyright-circle-outlined:before { + content: "\eb60"; +} + +.control-outlined:before { + content: "\e79c"; +} + +.container-outlined:before { + content: "\e7b8"; +} + +.contacts-outlined:before { + content: "\e7e4"; +} + +.console-sql-outlined:before { + content: "\e910"; +} + +.compress-outlined:before { + content: "\e914"; +} + +.compass-outlined:before { + content: "\e786"; +} + +.comment-outlined:before { + content: "\e8ea"; +} + +.coffee-outlined:before { + content: "\e6b5"; +} + +.code-outlined:before { + content: "\e79b"; +} + +.cloud-server-outlined:before { + content: "\e7db"; +} + +.cloud-upload-outlined:before { + content: "\e7dc"; +} + +.cloud-outlined:before { + content: "\e7dd"; +} + +.cloud-download-outlined:before { + content: "\e7de"; +} + +.cloud-sync-outlined:before { + content: "\e7e0"; +} + +.clear-outlined:before { + content: "\e900"; +} + +.ci-circle-outlined:before { + content: "\e77f"; +} + +.carry-out-outlined:before { + content: "\e7d6"; +} + +.car-outlined:before { + content: "\e7da"; +} + +.ci-outlined:before { + content: "\eb5f"; +} + +.camera-outlined:before { + content: "\e7d9"; +} + +.calendar-outlined:before { + content: "\e7d4"; +} + +.calculator-outlined:before { + content: "\e79a"; +} + +.bulb-outlined:before { + content: "\e7c7"; +} + +.build-outlined:before { + content: "\e7d5"; +} + +.bug-outlined:before { + content: "\e8e9"; +} + +.branches-outlined:before { + content: "\e7e7"; +} + +.borderless-table-outlined:before { + content: "\e813"; +} + +.border-outlined:before { + content: "\e7b7"; +} + +.book-outlined:before { + content: "\e7b6"; +} + +.block-outlined:before { + content: "\e7df"; +} + +.bell-outlined:before { + content: "\e7c5"; +} + +.bars-outlined:before { + content: "\e71a"; +} + +.barcode-outlined:before { + content: "\e7d8"; +} + +.bank-outlined:before { + content: "\e7c6"; +} + +.audit-outlined:before { + content: "\e7c0"; +} + +.audio-outlined:before { + content: "\e89b"; +} + +.audio-muted-outlined:before { + content: "\e8e8"; +} + +.api-outlined:before { + content: "\e7e3"; +} + +.apartment-outlined:before { + content: "\e89a"; +} + +.alert-outlined:before { + content: "\e7c4"; +} + +.aim-outlined:before { + content: "\e913"; +} + +.account-book-outlined:before { + content: "\e7d3"; +} + +.column-height-outlined:before { + content: "\e811"; +} + +.column-width-outlined:before { + content: "\e812"; +} + +.radius-setting-outlined:before { + content: "\e7b5"; +} + +.unordered-list-outlined:before { + content: "\e80f"; +} + +.ordered-list-outlined:before { + content: "\e810"; +} + +.drag-outlined:before { + content: "\e843"; +} + +.sort-descending-outlined:before { + content: "\e80d"; +} + +.sort-ascending-outlined:before { + content: "\e80e"; +} + +.font-colors-outlined:before { + content: "\e808"; +} + +.font-size-outlined:before { + content: "\e809"; +} + +.line-height-outlined:before { + content: "\e80a"; +} + +.dash-outlined:before { + content: "\e80b"; +} + +.small-dash-outlined:before { + content: "\e80c"; +} + +.zoom-out-outlined:before { + content: "\e898"; +} + +.zoom-in-outlined:before { + content: "\e899"; +} + +.undo-outlined:before { + content: "\e787"; +} + +.redo-outlined:before { + content: "\e788"; +} + +.bold-outlined:before { + content: "\e804"; +} + +.strikethrough-outlined:before { + content: "\e805"; +} + +.underline-outlined:before { + content: "\e806"; +} + +.italic-outlined:before { + content: "\e807"; +} + +.bg-colors-outlined:before { + content: "\e803"; +} + +.align-right-outlined:before { + content: "\e7fb"; +} + +.align-left-outlined:before { + content: "\e802"; +} + +.align-center-outlined:before { + content: "\e7f5"; +} + +.highlight-outlined:before { + content: "\e7e2"; +} + +.diff-outlined:before { + content: "\e7bf"; +} + +.snippets-outlined:before { + content: "\e7bd"; +} + +.delete-outlined:before { + content: "\e7c3"; +} + +.scissor-outlined:before { + content: "\e7e6"; +} + +.copy-outlined:before { + content: "\e7bc"; +} + +.form-outlined:before { + content: "\e791"; +} + +.edit-outlined:before { + content: "\e7e1"; +} + +.stop-outlined:before { + content: "\e842"; +} + +.issues-close-outlined:before { + content: "\e68e"; +} + +.warning-outlined:before { + content: "\e682"; +} + +.clock-circle-outlined:before { + content: "\e784"; +} + +.check-circle-outlined:before { + content: "\e77d"; +} + +.check-square-outlined:before { + content: "\e794"; +} + +.check-outlined:before { + content: "\e7fc"; +} + +.exclamation-circle-outlined:before { + content: "\e785"; +} + +.exclamation-outlined:before { + content: "\e7fa"; +} + +.info-circle-outlined:before { + content: "\e77e"; +} + +.info-outlined:before { + content: "\e7f9"; +} + +.minus-square-outlined:before { + content: "\e796"; +} + +.plus-square-outlined:before { + content: "\e797"; +} + +.minus-circle-outlined:before { + content: "\e780"; +} + +.minus-outlined:before { + content: "\e801"; +} + +.pause-circle-outlined:before { + content: "\e783"; +} + +.pause-outlined:before { + content: "\e800"; +} + +.plus-circle-outlined:before { + content: "\e781"; +} + +.plus-outlined:before { + content: "\e8fe"; +} + +.question-circle-outlined:before { + content: "\e782"; +} + +.question-outlined:before { + content: "\e7ff"; +} + +.fullscreen-outlined:before { + content: "\e7ec"; +} + +.fullscreen-exit-outlined:before { + content: "\e7ed"; +} + +.radius-bottomleft-outlined:before { + content: "\e7b1"; +} + +.radius-bottomright-outlined:before { + content: "\e7b2"; +} + +.radius-upleft-outlined:before { + content: "\e7b3"; +} + +.radius-upright-outlined:before { + content: "\e7b4"; +} + +.pic-center-outlined:before { + content: "\e7f6"; +} + +.pic-right-outlined:before { + content: "\e7f7"; +} + +.pic-left-outlined:before { + content: "\e7f8"; +} + +.border-outer-outlined:before { + content: "\e7a9"; +} + +.border-top-outlined:before { + content: "\e7aa"; +} + +.border-bottom-outlined:before { + content: "\e7ab"; +} + +.border-left-outlined:before { + content: "\e7ac"; +} + +.border-right-outlined:before { + content: "\e7ad"; +} + +.border-inner-outlined:before { + content: "\e7ae"; +} + +.border-verticle-outlined:before { + content: "\e7af"; +} + +.border-horizontal-outlined:before { + content: "\e7b0"; +} + +.menu-unfold-outlined:before { + content: "\e7f3"; +} + +.menu-fold-outlined:before { + content: "\e7f4"; +} + +.logout-outlined:before { + content: "\e78c"; +} + +.login-outlined:before { + content: "\e8f4"; +} + +.cluster-outlined:before { + content: "\e7d7"; +} + +.down-square-outlined:before { + content: "\e793"; +} + +.left-square-outlined:before { + content: "\e795"; +} + +.right-square-outlined:before { + content: "\e798"; +} + +.up-Square-outlined:before { + content: "\e799"; +} + +.play-circle-outlined:before { + content: "\e67a"; +} + +.arrow-down-outlined:before { + content: "\e66d"; +} + +.arrow-right-outlined:before { + content: "\e66e"; +} + +.arrow-up-outlined:before { + content: "\e66f"; +} + +.arrow-left-outlined:before { + content: "\e670"; +} + +.swap-outlined:before { + content: "\e7f2"; +} + +.swap-right-outlined:before { + content: "\e8f2"; +} + +.swap-left-outlined:before { + content: "\e8f3"; +} + +.enter-outlined:before { + content: "\e7fd"; +} + +.rollback-outlined:before { + content: "\e7fe"; +} + +.retweet-outlined:before { + content: "\e8f1"; +} + +.fast-backward-outlined:before { + content: "\e8ed"; +} + +.fast-forward-outlined:before { + content: "\e8ee"; +} + +.vertical-align-bottom-outlined:before { + content: "\e7ef"; +} + +.vertical-align-middle-outlined:before { + content: "\e7f0"; +} + +.vertical-align-top-outlined:before { + content: "\e7f1"; +} + +.vertical-right-outlined:before { + content: "\e7ea"; +} + +.vertical-left-outlined:before { + content: "\e7eb"; +} + +.double-left-outlined:before { + content: "\e66b"; +} + +.double-right-outlined:before { + content: "\e66c"; +} + +.up-circle-outlined:before { + content: "\e666"; +} + +.right-circle-outlined:before { + content: "\e667"; +} + +.left-circle-outlined:before { + content: "\e66a"; +} + +.down-circle-outlined:before { + content: "\eb5e"; +} + +.caret-up-outlined:before { + content: "\e689"; +} + +.caret-down-outlined:before { + content: "\e68a"; +} + +.caret-left-outlined:before { + content: "\e68b"; +} + +.caret-right-outlined:before { + content: "\e68c"; +} + +.left-outlined:before { + content: "\e685"; +} + +.up-outlined:before { + content: "\e686"; +} + +.down-outlined:before { + content: "\e687"; +} + +.right-outlined:before { + content: "\e688"; +} + +.arrows-alt-outlined:before { + content: "\e665"; +} + +.shrink-outlined:before { + content: "\e68d"; +} + +.step-backward-outlined:before { + content: "\e8ef"; +} + +.step-forward-outlined:before { + content: "\e8f0"; +} + +.robot-outlined:before { + content: "\e897"; +} + +.file-word-outlined:before { + content: "\e7ba"; +} + +.usergroup-delete-outlined:before { + content: "\e760"; +} + +.field-time-outlined:before { + content: "\eb5d"; +} + +.setting-outlined:before { + content: "\e78e"; +} + +.file-search-outlined:before { + content: "\e730"; +} + +.team-outlined:before { + content: "\e67d"; +} + +.message-outlined:before { + content: "\e78a"; +} + +.mail-outlined:before { + content: "\e62e"; +} + +.send-outlined:before { + content: "\e622"; +} + +.appstore-add-outlined:before { + content: "\e8eb"; +} + +.user-outlined:before { + content: "\e641"; +} + +.project-outlined:before { + content: "\e746"; +} + +.hdd-outlined:before { + content: "\e734"; +} + +.tool-outlined:before { + content: "\e75b"; +} + +.user-switch-outlined:before { + content: "\ea3d"; +} + +.appstore-outlined:before { + content: "\e601"; +} + +.home-outlined:before { + content: "\e965"; +} + diff --git a/src/assets/icons/mobile/line/iconfont.json b/src/assets/icons/mobile/line/iconfont.json new file mode 100644 index 0000000..6f38067 --- /dev/null +++ b/src/assets/icons/mobile/line/iconfont.json @@ -0,0 +1,1430 @@ +{ + "id": "3791763", + "name": "snowy-app", + "font_family": "snowy", + "css_prefix_text": "", + "description": "", + "glyphs": [ + { + "icon_id": "4765958", + "name": "export", + "font_class": "export-outlined", + "unicode": "e792", + "unicode_decimal": 59282 + }, + { + "icon_id": "4766679", + "name": "experiment", + "font_class": "experiment-outlined", + "unicode": "e7c9", + "unicode_decimal": 59337 + }, + { + "icon_id": "9230692", + "name": "expend", + "font_class": "expand-outlined", + "unicode": "e915", + "unicode_decimal": 59669 + }, + { + "icon_id": "4767007", + "name": "arrawsalt", + "font_class": "expand-alt-outlined", + "unicode": "e7e9", + "unicode_decimal": 59369 + }, + { + "icon_id": "4766461", + "name": "file -exception", + "font_class": "exception-outlined", + "unicode": "e7bb", + "unicode_decimal": 59323 + }, + { + "icon_id": "4765730", + "name": "EURO", + "font_class": "euro-outlined", + "unicode": "e78f", + "unicode_decimal": 59279 + }, + { + "icon_id": "33968870", + "name": "EURO-copy", + "font_class": "euro-circle-outlined", + "unicode": "eb62", + "unicode_decimal": 60258 + }, + { + "icon_id": "4765897", + "name": "location", + "font_class": "environment-outlined", + "unicode": "e790", + "unicode_decimal": 59280 + }, + { + "icon_id": "4767094", + "name": "ellipsis", + "font_class": "ellipsis-outlined", + "unicode": "e815", + "unicode_decimal": 59413 + }, + { + "icon_id": "4767031", + "name": "download", + "font_class": "download-outlined", + "unicode": "e814", + "unicode_decimal": 59412 + }, + { + "icon_id": "4765723", + "name": "Dollar", + "font_class": "dollar-outlined", + "unicode": "e78d", + "unicode_decimal": 59277 + }, + { + "icon_id": "33968867", + "name": "Dollar-copy", + "font_class": "dollar-circle-outlined", + "unicode": "eb61", + "unicode_decimal": 60257 + }, + { + "icon_id": "4766693", + "name": "unlike", + "font_class": "dislike-outlined", + "unicode": "e7c8", + "unicode_decimal": 59336 + }, + { + "icon_id": "4766962", + "name": "disconnect", + "font_class": "disconnect-outlined", + "unicode": "e7e8", + "unicode_decimal": 59368 + }, + { + "icon_id": "4936979", + "name": "dingtalk", + "font_class": "dingtalk-outlined", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "4936457", + "name": "desktop", + "font_class": "desktop-outlined", + "unicode": "e845", + "unicode_decimal": 59461 + }, + { + "icon_id": "4766849", + "name": "deployment unit", + "font_class": "deployment-unit-outlined", + "unicode": "e7d2", + "unicode_decimal": 59346 + }, + { + "icon_id": "9229182", + "name": "Stored procedure", + "font_class": "delivered-procedure-outlined", + "unicode": "e911", + "unicode_decimal": 59665 + }, + { + "icon_id": "8094808", + "name": "delete column", + "font_class": "delete-column-outlined", + "unicode": "e901", + "unicode_decimal": 59649 + }, + { + "icon_id": "8094822", + "name": "delete row", + "font_class": "delete-row-outlined", + "unicode": "e902", + "unicode_decimal": 59650 + }, + { + "icon_id": "4766439", + "name": "database", + "font_class": "database-outlined", + "unicode": "e7b9", + "unicode_decimal": 59321 + }, + { + "icon_id": "4765881", + "name": "dashboard", + "font_class": "dashboard-outlined", + "unicode": "e78b", + "unicode_decimal": 59275 + }, + { + "icon_id": "4766762", + "name": "customerservice", + "font_class": "customer-service-outlined", + "unicode": "e7ca", + "unicode_decimal": 59338 + }, + { + "icon_id": "4936455", + "name": "crown", + "font_class": "crown-outlined", + "unicode": "e844", + "unicode_decimal": 59460 + }, + { + "icon_id": "4766921", + "name": "credit card", + "font_class": "credit-card-outlined", + "unicode": "e7e5", + "unicode_decimal": 59365 + }, + { + "icon_id": "4765731", + "name": "copyright", + "font_class": "copyright-outlined", + "unicode": "e789", + "unicode_decimal": 59273 + }, + { + "icon_id": "33968858", + "name": "copyright-copy", + "font_class": "copyright-circle-outlined", + "unicode": "eb60", + "unicode_decimal": 60256 + }, + { + "icon_id": "4765969", + "name": "control", + "font_class": "control-outlined", + "unicode": "e79c", + "unicode_decimal": 59292 + }, + { + "icon_id": "4766438", + "name": "container", + "font_class": "container-outlined", + "unicode": "e7b8", + "unicode_decimal": 59320 + }, + { + "icon_id": "4766855", + "name": "contacts", + "font_class": "contacts-outlined", + "unicode": "e7e4", + "unicode_decimal": 59364 + }, + { + "icon_id": "9229185", + "name": "Console-SQL", + "font_class": "console-sql-outlined", + "unicode": "e910", + "unicode_decimal": 59664 + }, + { + "icon_id": "9230691", + "name": "compress", + "font_class": "compress-outlined", + "unicode": "e914", + "unicode_decimal": 59668 + }, + { + "icon_id": "4765724", + "name": "compass", + "font_class": "compass-outlined", + "unicode": "e786", + "unicode_decimal": 59270 + }, + { + "icon_id": "6598316", + "name": "comment", + "font_class": "comment-outlined", + "unicode": "e8ea", + "unicode_decimal": 59626 + }, + { + "icon_id": "12258804", + "name": "coffee", + "font_class": "coffee-outlined", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "4765970", + "name": "code library", + "font_class": "code-outlined", + "unicode": "e79b", + "unicode_decimal": 59291 + }, + { + "icon_id": "4766900", + "name": "cloud-server", + "font_class": "cloud-server-outlined", + "unicode": "e7db", + "unicode_decimal": 59355 + }, + { + "icon_id": "4766901", + "name": "cloud-upload", + "font_class": "cloud-upload-outlined", + "unicode": "e7dc", + "unicode_decimal": 59356 + }, + { + "icon_id": "4766902", + "name": "cloud", + "font_class": "cloud-outlined", + "unicode": "e7dd", + "unicode_decimal": 59357 + }, + { + "icon_id": "4766903", + "name": "cloud-download", + "font_class": "cloud-download-outlined", + "unicode": "e7de", + "unicode_decimal": 59358 + }, + { + "icon_id": "4766904", + "name": "cloud-sync", + "font_class": "cloud-sync-outlined", + "unicode": "e7e0", + "unicode_decimal": 59360 + }, + { + "icon_id": "8094805", + "name": "clear", + "font_class": "clear-outlined", + "unicode": "e900", + "unicode_decimal": 59648 + }, + { + "icon_id": "4765722", + "name": "CI", + "font_class": "ci-circle-outlined", + "unicode": "e77f", + "unicode_decimal": 59263 + }, + { + "icon_id": "4766856", + "name": "carry out", + "font_class": "carry-out-outlined", + "unicode": "e7d6", + "unicode_decimal": 59350 + }, + { + "icon_id": "4766886", + "name": "car", + "font_class": "car-outlined", + "unicode": "e7da", + "unicode_decimal": 59354 + }, + { + "icon_id": "33968843", + "name": "CI-copy", + "font_class": "ci-outlined", + "unicode": "eb5f", + "unicode_decimal": 60255 + }, + { + "icon_id": "4766883", + "name": "camera", + "font_class": "camera-outlined", + "unicode": "e7d9", + "unicode_decimal": 59353 + }, + { + "icon_id": "4766858", + "name": "calendar", + "font_class": "calendar-outlined", + "unicode": "e7d4", + "unicode_decimal": 59348 + }, + { + "icon_id": "4765978", + "name": "calculator", + "font_class": "calculator-outlined", + "unicode": "e79a", + "unicode_decimal": 59290 + }, + { + "icon_id": "4766678", + "name": "bulb", + "font_class": "bulb-outlined", + "unicode": "e7c7", + "unicode_decimal": 59335 + }, + { + "icon_id": "4766872", + "name": "build", + "font_class": "build-outlined", + "unicode": "e7d5", + "unicode_decimal": 59349 + }, + { + "icon_id": "6598314", + "name": "bug", + "font_class": "bug-outlined", + "unicode": "e8e9", + "unicode_decimal": 59625 + }, + { + "icon_id": "4766986", + "name": "branches", + "font_class": "branches-outlined", + "unicode": "e7e7", + "unicode_decimal": 59367 + }, + { + "icon_id": "4767086", + "name": "number", + "font_class": "borderless-table-outlined", + "unicode": "e813", + "unicode_decimal": 59411 + }, + { + "icon_id": "4766265", + "name": "border", + "font_class": "border-outlined", + "unicode": "e7b7", + "unicode_decimal": 59319 + }, + { + "icon_id": "4766454", + "name": "book", + "font_class": "book-outlined", + "unicode": "e7b6", + "unicode_decimal": 59318 + }, + { + "icon_id": "4766952", + "name": "block", + "font_class": "block-outlined", + "unicode": "e7df", + "unicode_decimal": 59359 + }, + { + "icon_id": "4766680", + "name": "bell", + "font_class": "bell-outlined", + "unicode": "e7c5", + "unicode_decimal": 59333 + }, + { + "icon_id": "7239635", + "name": "bars", + "font_class": "bars-outlined", + "unicode": "e71a", + "unicode_decimal": 59162 + }, + { + "icon_id": "4766882", + "name": "barcode", + "font_class": "barcode-outlined", + "unicode": "e7d8", + "unicode_decimal": 59352 + }, + { + "icon_id": "4766686", + "name": "bank", + "font_class": "bank-outlined", + "unicode": "e7c6", + "unicode_decimal": 59334 + }, + { + "icon_id": "4766507", + "name": "audit", + "font_class": "audit-outlined", + "unicode": "e7c0", + "unicode_decimal": 59328 + }, + { + "icon_id": "5756281", + "name": "audio", + "font_class": "audio-outlined", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "6598315", + "name": "audio static", + "font_class": "audio-muted-outlined", + "unicode": "e8e8", + "unicode_decimal": 59624 + }, + { + "icon_id": "4766961", + "name": "api", + "font_class": "api-outlined", + "unicode": "e7e3", + "unicode_decimal": 59363 + }, + { + "icon_id": "5756280", + "name": "apartment", + "font_class": "apartment-outlined", + "unicode": "e89a", + "unicode_decimal": 59546 + }, + { + "icon_id": "4766675", + "name": "alert", + "font_class": "alert-outlined", + "unicode": "e7c4", + "unicode_decimal": 59332 + }, + { + "icon_id": "9230690", + "name": "aim", + "font_class": "aim-outlined", + "unicode": "e913", + "unicode_decimal": 59667 + }, + { + "icon_id": "4766854", + "name": "account book", + "font_class": "account-book-outlined", + "unicode": "e7d3", + "unicode_decimal": 59347 + }, + { + "icon_id": "4767026", + "name": "colum-height", + "font_class": "column-height-outlined", + "unicode": "e811", + "unicode_decimal": 59409 + }, + { + "icon_id": "4767092", + "name": "column-width", + "font_class": "column-width-outlined", + "unicode": "e812", + "unicode_decimal": 59410 + }, + { + "icon_id": "4766286", + "name": "radius-setting", + "font_class": "radius-setting-outlined", + "unicode": "e7b5", + "unicode_decimal": 59317 + }, + { + "icon_id": "4767060", + "name": "unordered list", + "font_class": "unordered-list-outlined", + "unicode": "e80f", + "unicode_decimal": 59407 + }, + { + "icon_id": "4767061", + "name": "ordered list", + "font_class": "ordered-list-outlined", + "unicode": "e810", + "unicode_decimal": 59408 + }, + { + "icon_id": "4936456", + "name": "drag", + "font_class": "drag-outlined", + "unicode": "e843", + "unicode_decimal": 59459 + }, + { + "icon_id": "4767038", + "name": "sort-descending", + "font_class": "sort-descending-outlined", + "unicode": "e80d", + "unicode_decimal": 59405 + }, + { + "icon_id": "4767039", + "name": "sort-ascending", + "font_class": "sort-ascending-outlined", + "unicode": "e80e", + "unicode_decimal": 59406 + }, + { + "icon_id": "4767079", + "name": "font-colors", + "font_class": "font-colors-outlined", + "unicode": "e808", + "unicode_decimal": 59400 + }, + { + "icon_id": "4767081", + "name": "font-size", + "font_class": "font-size-outlined", + "unicode": "e809", + "unicode_decimal": 59401 + }, + { + "icon_id": "4767083", + "name": "line-height", + "font_class": "line-height-outlined", + "unicode": "e80a", + "unicode_decimal": 59402 + }, + { + "icon_id": "4767095", + "name": "dash", + "font_class": "dash-outlined", + "unicode": "e80b", + "unicode_decimal": 59403 + }, + { + "icon_id": "4767103", + "name": "small-dash", + "font_class": "small-dash-outlined", + "unicode": "e80c", + "unicode_decimal": 59404 + }, + { + "icon_id": "5756279", + "name": "zoom out", + "font_class": "zoom-out-outlined", + "unicode": "e898", + "unicode_decimal": 59544 + }, + { + "icon_id": "5756284", + "name": "zoom in", + "font_class": "zoom-in-outlined", + "unicode": "e899", + "unicode_decimal": 59545 + }, + { + "icon_id": "4765837", + "name": "undo", + "font_class": "undo-outlined", + "unicode": "e787", + "unicode_decimal": 59271 + }, + { + "icon_id": "4765838", + "name": "redo", + "font_class": "redo-outlined", + "unicode": "e788", + "unicode_decimal": 59272 + }, + { + "icon_id": "4767078", + "name": "bold", + "font_class": "bold-outlined", + "unicode": "e804", + "unicode_decimal": 59396 + }, + { + "icon_id": "4767084", + "name": "strikethrough", + "font_class": "strikethrough-outlined", + "unicode": "e805", + "unicode_decimal": 59397 + }, + { + "icon_id": "4767085", + "name": "underline", + "font_class": "underline-outlined", + "unicode": "e806", + "unicode_decimal": 59398 + }, + { + "icon_id": "4767087", + "name": "italic", + "font_class": "italic-outlined", + "unicode": "e807", + "unicode_decimal": 59399 + }, + { + "icon_id": "4767106", + "name": "bg-colors", + "font_class": "bg-colors-outlined", + "unicode": "e803", + "unicode_decimal": 59395 + }, + { + "icon_id": "4767062", + "name": "align-right", + "font_class": "align-right-outlined", + "unicode": "e7fb", + "unicode_decimal": 59387 + }, + { + "icon_id": "4767064", + "name": "align-left", + "font_class": "align-left-outlined", + "unicode": "e802", + "unicode_decimal": 59394 + }, + { + "icon_id": "4767063", + "name": "align-center", + "font_class": "align-center-outlined", + "unicode": "e7f5", + "unicode_decimal": 59381 + }, + { + "icon_id": "4766963", + "name": "highlight", + "font_class": "highlight-outlined", + "unicode": "e7e2", + "unicode_decimal": 59362 + }, + { + "icon_id": "4766508", + "name": "diff", + "font_class": "diff-outlined", + "unicode": "e7bf", + "unicode_decimal": 59327 + }, + { + "icon_id": "4766482", + "name": "snippets", + "font_class": "snippets-outlined", + "unicode": "e7bd", + "unicode_decimal": 59325 + }, + { + "icon_id": "4766676", + "name": "delete", + "font_class": "delete-outlined", + "unicode": "e7c3", + "unicode_decimal": 59331 + }, + { + "icon_id": "4766982", + "name": "scissor", + "font_class": "scissor-outlined", + "unicode": "e7e6", + "unicode_decimal": 59366 + }, + { + "icon_id": "4766481", + "name": "file-copy", + "font_class": "copy-outlined", + "unicode": "e7bc", + "unicode_decimal": 59324 + }, + { + "icon_id": "4765957", + "name": "edit-square", + "font_class": "form-outlined", + "unicode": "e791", + "unicode_decimal": 59281 + }, + { + "icon_id": "4766959", + "name": "edit", + "font_class": "edit-outlined", + "unicode": "e7e1", + "unicode_decimal": 59361 + }, + { + "icon_id": "4936459", + "name": "stop", + "font_class": "stop-outlined", + "unicode": "e842", + "unicode_decimal": 59458 + }, + { + "icon_id": "23563617", + "name": "WarningOctagon", + "font_class": "issues-close-outlined", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "15838551", + "name": "warning", + "font_class": "warning-outlined", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "4765741", + "name": "time-circle", + "font_class": "clock-circle-outlined", + "unicode": "e784", + "unicode_decimal": 59268 + }, + { + "icon_id": "4765725", + "name": "close-circle", + "font_class": "check-circle-outlined", + "unicode": "e77d", + "unicode_decimal": 59261 + }, + { + "icon_id": "4765964", + "name": "close-square", + "font_class": "check-square-outlined", + "unicode": "e794", + "unicode_decimal": 59284 + }, + { + "icon_id": "4767096", + "name": "close", + "font_class": "check-outlined", + "unicode": "e7fc", + "unicode_decimal": 59388 + }, + { + "icon_id": "4765746", + "name": "warning-circle", + "font_class": "exclamation-circle-outlined", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "4767080", + "name": "exclaimination", + "font_class": "exclamation-outlined", + "unicode": "e7fa", + "unicode_decimal": 59386 + }, + { + "icon_id": "4765727", + "name": "info-circle", + "font_class": "info-circle-outlined", + "unicode": "e77e", + "unicode_decimal": 59262 + }, + { + "icon_id": "4767082", + "name": "infomation", + "font_class": "info-outlined", + "unicode": "e7f9", + "unicode_decimal": 59385 + }, + { + "icon_id": "4765972", + "name": "minus-square", + "font_class": "minus-square-outlined", + "unicode": "e796", + "unicode_decimal": 59286 + }, + { + "icon_id": "4765973", + "name": "plus-square", + "font_class": "plus-square-outlined", + "unicode": "e797", + "unicode_decimal": 59287 + }, + { + "icon_id": "4765732", + "name": "minus-circle", + "font_class": "minus-circle-outlined", + "unicode": "e780", + "unicode_decimal": 59264 + }, + { + "icon_id": "4767099", + "name": "minus", + "font_class": "minus-outlined", + "unicode": "e801", + "unicode_decimal": 59393 + }, + { + "icon_id": "4765742", + "name": "time out", + "font_class": "pause-circle-outlined", + "unicode": "e783", + "unicode_decimal": 59267 + }, + { + "icon_id": "4767104", + "name": "pause", + "font_class": "pause-outlined", + "unicode": "e800", + "unicode_decimal": 59392 + }, + { + "icon_id": "4765734", + "name": "plus-circle", + "font_class": "plus-circle-outlined", + "unicode": "e781", + "unicode_decimal": 59265 + }, + { + "icon_id": "7834345", + "name": "plus", + "font_class": "plus-outlined", + "unicode": "e8fe", + "unicode_decimal": 59646 + }, + { + "icon_id": "4765736", + "name": "question-circle", + "font_class": "question-circle-outlined", + "unicode": "e782", + "unicode_decimal": 59266 + }, + { + "icon_id": "4767100", + "name": "question", + "font_class": "question-outlined", + "unicode": "e7ff", + "unicode_decimal": 59391 + }, + { + "icon_id": "4767015", + "name": "fullscreen", + "font_class": "fullscreen-outlined", + "unicode": "e7ec", + "unicode_decimal": 59372 + }, + { + "icon_id": "4767016", + "name": "fullscreen-exit", + "font_class": "fullscreen-exit-outlined", + "unicode": "e7ed", + "unicode_decimal": 59373 + }, + { + "icon_id": "4766282", + "name": "radius-bottomleft", + "font_class": "radius-bottomleft-outlined", + "unicode": "e7b1", + "unicode_decimal": 59313 + }, + { + "icon_id": "4766283", + "name": "radius-bottomright", + "font_class": "radius-bottomright-outlined", + "unicode": "e7b2", + "unicode_decimal": 59314 + }, + { + "icon_id": "4766284", + "name": "radius-upleft", + "font_class": "radius-upleft-outlined", + "unicode": "e7b3", + "unicode_decimal": 59315 + }, + { + "icon_id": "4766285", + "name": "radius-upright", + "font_class": "radius-upright-outlined", + "unicode": "e7b4", + "unicode_decimal": 59316 + }, + { + "icon_id": "4767072", + "name": "pic-center", + "font_class": "pic-center-outlined", + "unicode": "e7f6", + "unicode_decimal": 59382 + }, + { + "icon_id": "4767073", + "name": "pic-right", + "font_class": "pic-right-outlined", + "unicode": "e7f7", + "unicode_decimal": 59383 + }, + { + "icon_id": "4767074", + "name": "pic-left", + "font_class": "pic-left-outlined", + "unicode": "e7f8", + "unicode_decimal": 59384 + }, + { + "icon_id": "4766266", + "name": "border-outer", + "font_class": "border-outer-outlined", + "unicode": "e7a9", + "unicode_decimal": 59305 + }, + { + "icon_id": "4766268", + "name": "border-top", + "font_class": "border-top-outlined", + "unicode": "e7aa", + "unicode_decimal": 59306 + }, + { + "icon_id": "4766269", + "name": "border-bottom", + "font_class": "border-bottom-outlined", + "unicode": "e7ab", + "unicode_decimal": 59307 + }, + { + "icon_id": "4766270", + "name": "border-left", + "font_class": "border-left-outlined", + "unicode": "e7ac", + "unicode_decimal": 59308 + }, + { + "icon_id": "4766271", + "name": "border-right", + "font_class": "border-right-outlined", + "unicode": "e7ad", + "unicode_decimal": 59309 + }, + { + "icon_id": "4766276", + "name": "border-inner", + "font_class": "border-inner-outlined", + "unicode": "e7ae", + "unicode_decimal": 59310 + }, + { + "icon_id": "4766277", + "name": "border-verticle", + "font_class": "border-verticle-outlined", + "unicode": "e7af", + "unicode_decimal": 59311 + }, + { + "icon_id": "4766278", + "name": "border-horizontal", + "font_class": "border-horizontal-outlined", + "unicode": "e7b0", + "unicode_decimal": 59312 + }, + { + "icon_id": "4767050", + "name": "indent", + "font_class": "menu-unfold-outlined", + "unicode": "e7f3", + "unicode_decimal": 59379 + }, + { + "icon_id": "4767051", + "name": "outdent", + "font_class": "menu-fold-outlined", + "unicode": "e7f4", + "unicode_decimal": 59380 + }, + { + "icon_id": "4765888", + "name": "logout", + "font_class": "logout-outlined", + "unicode": "e78c", + "unicode_decimal": 59276 + }, + { + "icon_id": "6598349", + "name": "login", + "font_class": "login-outlined", + "unicode": "e8f4", + "unicode_decimal": 59636 + }, + { + "icon_id": "4766884", + "name": "cluster", + "font_class": "cluster-outlined", + "unicode": "e7d7", + "unicode_decimal": 59351 + }, + { + "icon_id": "4765965", + "name": "down-square", + "font_class": "down-square-outlined", + "unicode": "e793", + "unicode_decimal": 59283 + }, + { + "icon_id": "4765967", + "name": "left-square", + "font_class": "left-square-outlined", + "unicode": "e795", + "unicode_decimal": 59285 + }, + { + "icon_id": "4765974", + "name": "right-square", + "font_class": "right-square-outlined", + "unicode": "e798", + "unicode_decimal": 59288 + }, + { + "icon_id": "4765977", + "name": "up-square", + "font_class": "up-Square-outlined", + "unicode": "e799", + "unicode_decimal": 59289 + }, + { + "icon_id": "15838511", + "name": "play", + "font_class": "play-circle-outlined", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "15838455", + "name": "direction-down", + "font_class": "arrow-down-outlined", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "15838460", + "name": "direction-right", + "font_class": "arrow-right-outlined", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "15838461", + "name": "direction-up", + "font_class": "arrow-up-outlined", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "15838463", + "name": "direction-left", + "font_class": "arrow-left-outlined", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "4767044", + "name": "swap", + "font_class": "swap-outlined", + "unicode": "e7f2", + "unicode_decimal": 59378 + }, + { + "icon_id": "6598352", + "name": "swap-right", + "font_class": "swap-right-outlined", + "unicode": "e8f2", + "unicode_decimal": 59634 + }, + { + "icon_id": "6598353", + "name": "swap-left", + "font_class": "swap-left-outlined", + "unicode": "e8f3", + "unicode_decimal": 59635 + }, + { + "icon_id": "4767097", + "name": "enter", + "font_class": "enter-outlined", + "unicode": "e7fd", + "unicode_decimal": 59389 + }, + { + "icon_id": "4767102", + "name": "rollback", + "font_class": "rollback-outlined", + "unicode": "e7fe", + "unicode_decimal": 59390 + }, + { + "icon_id": "6598348", + "name": "retweet", + "font_class": "retweet-outlined", + "unicode": "e8f1", + "unicode_decimal": 59633 + }, + { + "icon_id": "6598344", + "name": "fast-backward", + "font_class": "fast-backward-outlined", + "unicode": "e8ed", + "unicode_decimal": 59629 + }, + { + "icon_id": "6598346", + "name": "fast-forward", + "font_class": "fast-forward-outlined", + "unicode": "e8ee", + "unicode_decimal": 59630 + }, + { + "icon_id": "4767027", + "name": "vertical-align-botto", + "font_class": "vertical-align-bottom-outlined", + "unicode": "e7ef", + "unicode_decimal": 59375 + }, + { + "icon_id": "4767028", + "name": "vertical-align-middl", + "font_class": "vertical-align-middle-outlined", + "unicode": "e7f0", + "unicode_decimal": 59376 + }, + { + "icon_id": "4767030", + "name": "vertical-align-top", + "font_class": "vertical-align-top-outlined", + "unicode": "e7f1", + "unicode_decimal": 59377 + }, + { + "icon_id": "4767009", + "name": "vertical right", + "font_class": "vertical-right-outlined", + "unicode": "e7ea", + "unicode_decimal": 59370 + }, + { + "icon_id": "4767010", + "name": "vertical left", + "font_class": "vertical-left-outlined", + "unicode": "e7eb", + "unicode_decimal": 59371 + }, + { + "icon_id": "15838436", + "name": "arrow-double-left", + "font_class": "double-left-outlined", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "15838438", + "name": "arrow-double-right", + "font_class": "double-right-outlined", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "15838427", + "name": "arrow-up-circle", + "font_class": "up-circle-outlined", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "15838428", + "name": "arrow-right-circle", + "font_class": "right-circle-outlined", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "15838437", + "name": "arrow-left-circle", + "font_class": "left-circle-outlined", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "33966825", + "name": "arrow-right-circle-copy", + "font_class": "down-circle-outlined", + "unicode": "eb5e", + "unicode_decimal": 60254 + }, + { + "icon_id": "15838581", + "name": "arrow-up-filling", + "font_class": "caret-up-outlined", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "15838582", + "name": "arrow-down-filling", + "font_class": "caret-down-outlined", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15838583", + "name": "arrow-left-filling", + "font_class": "caret-left-outlined", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15838584", + "name": "arrow-right-filling", + "font_class": "caret-right-outlined", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "15838561", + "name": "arrow-left-bold", + "font_class": "left-outlined", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "15838562", + "name": "arrow-up-bold", + "font_class": "up-outlined", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "15838564", + "name": "arrow-down-bold", + "font_class": "down-outlined", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "15838566", + "name": "arrow-right-bold", + "font_class": "right-outlined", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "22894640", + "name": "arrowsalt", + "font_class": "arrows-alt-outlined", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "22894827", + "name": "shrink", + "font_class": "shrink-outlined", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "6598350", + "name": "step-backward", + "font_class": "step-backward-outlined", + "unicode": "e8ef", + "unicode_decimal": 59631 + }, + { + "icon_id": "6598351", + "name": "step-forward", + "font_class": "step-forward-outlined", + "unicode": "e8f0", + "unicode_decimal": 59632 + }, + { + "icon_id": "5756283", + "name": "robot", + "font_class": "robot-outlined", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "4766477", + "name": "file-word", + "font_class": "file-word-outlined", + "unicode": "e7ba", + "unicode_decimal": 59322 + }, + { + "icon_id": "7239944", + "name": "usergroup-delete", + "font_class": "usergroup-delete-outlined", + "unicode": "e760", + "unicode_decimal": 59232 + }, + { + "icon_id": "19685392", + "name": "时间", + "font_class": "field-time-outlined", + "unicode": "eb5d", + "unicode_decimal": 60253 + }, + { + "icon_id": "4765891", + "name": "setting", + "font_class": "setting-outlined", + "unicode": "e78e", + "unicode_decimal": 59278 + }, + { + "icon_id": "7239751", + "name": "file-search", + "font_class": "file-search-outlined", + "unicode": "e730", + "unicode_decimal": 59184 + }, + { + "icon_id": "11538085", + "name": "team", + "font_class": "team-outlined", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "4765866", + "name": "message", + "font_class": "message-outlined", + "unicode": "e78a", + "unicode_decimal": 59274 + }, + { + "icon_id": "109759", + "name": "mail", + "font_class": "mail-outlined", + "unicode": "e62e", + "unicode_decimal": 58926 + }, + { + "icon_id": "1302559", + "name": "send", + "font_class": "send-outlined", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "6598323", + "name": "appstore add", + "font_class": "appstore-add-outlined", + "unicode": "e8eb", + "unicode_decimal": 59627 + }, + { + "icon_id": "23701226", + "name": "User-Outlined", + "font_class": "user-outlined", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "7239852", + "name": "project", + "font_class": "project-outlined", + "unicode": "e746", + "unicode_decimal": 59206 + }, + { + "icon_id": "7239770", + "name": "hdd", + "font_class": "hdd-outlined", + "unicode": "e734", + "unicode_decimal": 59188 + }, + { + "icon_id": "7239921", + "name": "tool", + "font_class": "tool-outlined", + "unicode": "e75b", + "unicode_decimal": 59227 + }, + { + "icon_id": "24342656", + "name": "user switch-line", + "font_class": "user-switch-outlined", + "unicode": "ea3d", + "unicode_decimal": 59965 + }, + { + "icon_id": "5226469", + "name": "apps", + "font_class": "appstore-outlined", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "11981662", + "name": "home_outlined", + "font_class": "home-outlined", + "unicode": "e965", + "unicode_decimal": 59749 + } + ] +} diff --git a/src/assets/icons/mobile/line/iconfont.ttf b/src/assets/icons/mobile/line/iconfont.ttf new file mode 100644 index 0000000..439f7b4 Binary files /dev/null and b/src/assets/icons/mobile/line/iconfont.ttf differ diff --git a/src/assets/icons/uiw/UiwAdobe.vue b/src/assets/icons/uiw/UiwAdobe.vue new file mode 100644 index 0000000..eeb251c --- /dev/null +++ b/src/assets/icons/uiw/UiwAdobe.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/assets/icons/uiw/UiwAlipay.vue b/src/assets/icons/uiw/UiwAlipay.vue new file mode 100644 index 0000000..f1302fe --- /dev/null +++ b/src/assets/icons/uiw/UiwAlipay.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/assets/icons/uiw/UiwAliwangwang.vue b/src/assets/icons/uiw/UiwAliwangwang.vue new file mode 100644 index 0000000..8929ce5 --- /dev/null +++ b/src/assets/icons/uiw/UiwAliwangwang.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/assets/icons/uiw/UiwAndroid.vue b/src/assets/icons/uiw/UiwAndroid.vue new file mode 100644 index 0000000..018a0e2 --- /dev/null +++ b/src/assets/icons/uiw/UiwAndroid.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwAndroidO.vue b/src/assets/icons/uiw/UiwAndroidO.vue new file mode 100644 index 0000000..f9bd480 --- /dev/null +++ b/src/assets/icons/uiw/UiwAndroidO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwApple.vue b/src/assets/icons/uiw/UiwApple.vue new file mode 100644 index 0000000..5b79aab --- /dev/null +++ b/src/assets/icons/uiw/UiwApple.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwAppstore.vue b/src/assets/icons/uiw/UiwAppstore.vue new file mode 100644 index 0000000..8c8e253 --- /dev/null +++ b/src/assets/icons/uiw/UiwAppstore.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwAppstoreO.vue b/src/assets/icons/uiw/UiwAppstoreO.vue new file mode 100644 index 0000000..8530de5 --- /dev/null +++ b/src/assets/icons/uiw/UiwAppstoreO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwAreaChart.vue b/src/assets/icons/uiw/UiwAreaChart.vue new file mode 100644 index 0000000..b0e401f --- /dev/null +++ b/src/assets/icons/uiw/UiwAreaChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwArrowDown.vue b/src/assets/icons/uiw/UiwArrowDown.vue new file mode 100644 index 0000000..04615a7 --- /dev/null +++ b/src/assets/icons/uiw/UiwArrowDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwArrowLeft.vue b/src/assets/icons/uiw/UiwArrowLeft.vue new file mode 100644 index 0000000..5a66e4c --- /dev/null +++ b/src/assets/icons/uiw/UiwArrowLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwArrowRight.vue b/src/assets/icons/uiw/UiwArrowRight.vue new file mode 100644 index 0000000..0918899 --- /dev/null +++ b/src/assets/icons/uiw/UiwArrowRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwArrowUp.vue b/src/assets/icons/uiw/UiwArrowUp.vue new file mode 100644 index 0000000..0763b8a --- /dev/null +++ b/src/assets/icons/uiw/UiwArrowUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwArrowsAlt.vue b/src/assets/icons/uiw/UiwArrowsAlt.vue new file mode 100644 index 0000000..40f4221 --- /dev/null +++ b/src/assets/icons/uiw/UiwArrowsAlt.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwAsterisk.vue b/src/assets/icons/uiw/UiwAsterisk.vue new file mode 100644 index 0000000..507d5bb --- /dev/null +++ b/src/assets/icons/uiw/UiwAsterisk.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwBackward.vue b/src/assets/icons/uiw/UiwBackward.vue new file mode 100644 index 0000000..b0b34e9 --- /dev/null +++ b/src/assets/icons/uiw/UiwBackward.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwBaidu.vue b/src/assets/icons/uiw/UiwBaidu.vue new file mode 100644 index 0000000..a27af05 --- /dev/null +++ b/src/assets/icons/uiw/UiwBaidu.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwBarChart.vue b/src/assets/icons/uiw/UiwBarChart.vue new file mode 100644 index 0000000..6a4e002 --- /dev/null +++ b/src/assets/icons/uiw/UiwBarChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwBarcode.vue b/src/assets/icons/uiw/UiwBarcode.vue new file mode 100644 index 0000000..3f2f272 --- /dev/null +++ b/src/assets/icons/uiw/UiwBarcode.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwBell.vue b/src/assets/icons/uiw/UiwBell.vue new file mode 100644 index 0000000..234bce7 --- /dev/null +++ b/src/assets/icons/uiw/UiwBell.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCameraO.vue b/src/assets/icons/uiw/UiwCameraO.vue new file mode 100644 index 0000000..1c9b6cf --- /dev/null +++ b/src/assets/icons/uiw/UiwCameraO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCaretDown.vue b/src/assets/icons/uiw/UiwCaretDown.vue new file mode 100644 index 0000000..2be10a9 --- /dev/null +++ b/src/assets/icons/uiw/UiwCaretDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCaretLeft.vue b/src/assets/icons/uiw/UiwCaretLeft.vue new file mode 100644 index 0000000..85015dd --- /dev/null +++ b/src/assets/icons/uiw/UiwCaretLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCaretRight.vue b/src/assets/icons/uiw/UiwCaretRight.vue new file mode 100644 index 0000000..10a02eb --- /dev/null +++ b/src/assets/icons/uiw/UiwCaretRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCaretUp.vue b/src/assets/icons/uiw/UiwCaretUp.vue new file mode 100644 index 0000000..6661bbb --- /dev/null +++ b/src/assets/icons/uiw/UiwCaretUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCheck.vue b/src/assets/icons/uiw/UiwCheck.vue new file mode 100644 index 0000000..9b2277f --- /dev/null +++ b/src/assets/icons/uiw/UiwCheck.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCheckSquare.vue b/src/assets/icons/uiw/UiwCheckSquare.vue new file mode 100644 index 0000000..fb5d191 --- /dev/null +++ b/src/assets/icons/uiw/UiwCheckSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCheckSquareO.vue b/src/assets/icons/uiw/UiwCheckSquareO.vue new file mode 100644 index 0000000..f1cb1fc --- /dev/null +++ b/src/assets/icons/uiw/UiwCheckSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwChrome.vue b/src/assets/icons/uiw/UiwChrome.vue new file mode 100644 index 0000000..c458e8a --- /dev/null +++ b/src/assets/icons/uiw/UiwChrome.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCircleCheck.vue b/src/assets/icons/uiw/UiwCircleCheck.vue new file mode 100644 index 0000000..419ddb5 --- /dev/null +++ b/src/assets/icons/uiw/UiwCircleCheck.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCircleCheckO.vue b/src/assets/icons/uiw/UiwCircleCheckO.vue new file mode 100644 index 0000000..0238a4a --- /dev/null +++ b/src/assets/icons/uiw/UiwCircleCheckO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCircleClose.vue b/src/assets/icons/uiw/UiwCircleClose.vue new file mode 100644 index 0000000..2fde618 --- /dev/null +++ b/src/assets/icons/uiw/UiwCircleClose.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCircleCloseO.vue b/src/assets/icons/uiw/UiwCircleCloseO.vue new file mode 100644 index 0000000..751487b --- /dev/null +++ b/src/assets/icons/uiw/UiwCircleCloseO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCircleO.vue b/src/assets/icons/uiw/UiwCircleO.vue new file mode 100644 index 0000000..d85fb1c --- /dev/null +++ b/src/assets/icons/uiw/UiwCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwClose.vue b/src/assets/icons/uiw/UiwClose.vue new file mode 100644 index 0000000..b06d661 --- /dev/null +++ b/src/assets/icons/uiw/UiwClose.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloseSquare.vue b/src/assets/icons/uiw/UiwCloseSquare.vue new file mode 100644 index 0000000..deb736b --- /dev/null +++ b/src/assets/icons/uiw/UiwCloseSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloseSquareO.vue b/src/assets/icons/uiw/UiwCloseSquareO.vue new file mode 100644 index 0000000..6b9768d --- /dev/null +++ b/src/assets/icons/uiw/UiwCloseSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloudDownload.vue b/src/assets/icons/uiw/UiwCloudDownload.vue new file mode 100644 index 0000000..1b2a118 --- /dev/null +++ b/src/assets/icons/uiw/UiwCloudDownload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloudDownloadO.vue b/src/assets/icons/uiw/UiwCloudDownloadO.vue new file mode 100644 index 0000000..c52b56c --- /dev/null +++ b/src/assets/icons/uiw/UiwCloudDownloadO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloudUpload.vue b/src/assets/icons/uiw/UiwCloudUpload.vue new file mode 100644 index 0000000..f001bbd --- /dev/null +++ b/src/assets/icons/uiw/UiwCloudUpload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCloudUploadO.vue b/src/assets/icons/uiw/UiwCloudUploadO.vue new file mode 100644 index 0000000..2c1c839 --- /dev/null +++ b/src/assets/icons/uiw/UiwCloudUploadO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCoffee.vue b/src/assets/icons/uiw/UiwCoffee.vue new file mode 100644 index 0000000..2993f2a --- /dev/null +++ b/src/assets/icons/uiw/UiwCoffee.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwComponent.vue b/src/assets/icons/uiw/UiwComponent.vue new file mode 100644 index 0000000..3ef4f88 --- /dev/null +++ b/src/assets/icons/uiw/UiwComponent.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCopy.vue b/src/assets/icons/uiw/UiwCopy.vue new file mode 100644 index 0000000..c139047 --- /dev/null +++ b/src/assets/icons/uiw/UiwCopy.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCopyright.vue b/src/assets/icons/uiw/UiwCopyright.vue new file mode 100644 index 0000000..a4edc57 --- /dev/null +++ b/src/assets/icons/uiw/UiwCopyright.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCss3.vue b/src/assets/icons/uiw/UiwCss3.vue new file mode 100644 index 0000000..831ce0b --- /dev/null +++ b/src/assets/icons/uiw/UiwCss3.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwCut.vue b/src/assets/icons/uiw/UiwCut.vue new file mode 100644 index 0000000..8431803 --- /dev/null +++ b/src/assets/icons/uiw/UiwCut.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDArrowLeft.vue b/src/assets/icons/uiw/UiwDArrowLeft.vue new file mode 100644 index 0000000..0a56aba --- /dev/null +++ b/src/assets/icons/uiw/UiwDArrowLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDArrowRight.vue b/src/assets/icons/uiw/UiwDArrowRight.vue new file mode 100644 index 0000000..726ecc9 --- /dev/null +++ b/src/assets/icons/uiw/UiwDArrowRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDCaret.vue b/src/assets/icons/uiw/UiwDCaret.vue new file mode 100644 index 0000000..b5fc335 --- /dev/null +++ b/src/assets/icons/uiw/UiwDCaret.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDashboard.vue b/src/assets/icons/uiw/UiwDashboard.vue new file mode 100644 index 0000000..28fe35b --- /dev/null +++ b/src/assets/icons/uiw/UiwDashboard.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDate.vue b/src/assets/icons/uiw/UiwDate.vue new file mode 100644 index 0000000..fb471e8 --- /dev/null +++ b/src/assets/icons/uiw/UiwDate.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDelete.vue b/src/assets/icons/uiw/UiwDelete.vue new file mode 100644 index 0000000..d8f27a4 --- /dev/null +++ b/src/assets/icons/uiw/UiwDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDingding.vue b/src/assets/icons/uiw/UiwDingding.vue new file mode 100644 index 0000000..1b7c0d9 --- /dev/null +++ b/src/assets/icons/uiw/UiwDingding.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDislikeO.vue b/src/assets/icons/uiw/UiwDislikeO.vue new file mode 100644 index 0000000..a801e22 --- /dev/null +++ b/src/assets/icons/uiw/UiwDislikeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDocument.vue b/src/assets/icons/uiw/UiwDocument.vue new file mode 100644 index 0000000..76bb35c --- /dev/null +++ b/src/assets/icons/uiw/UiwDocument.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDotChart.vue b/src/assets/icons/uiw/UiwDotChart.vue new file mode 100644 index 0000000..37a0bb7 --- /dev/null +++ b/src/assets/icons/uiw/UiwDotChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDown.vue b/src/assets/icons/uiw/UiwDown.vue new file mode 100644 index 0000000..4f35548 --- /dev/null +++ b/src/assets/icons/uiw/UiwDown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDownCircle.vue b/src/assets/icons/uiw/UiwDownCircle.vue new file mode 100644 index 0000000..5e11567 --- /dev/null +++ b/src/assets/icons/uiw/UiwDownCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDownCircleO.vue b/src/assets/icons/uiw/UiwDownCircleO.vue new file mode 100644 index 0000000..ce5d1ca --- /dev/null +++ b/src/assets/icons/uiw/UiwDownCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDownSquare.vue b/src/assets/icons/uiw/UiwDownSquare.vue new file mode 100644 index 0000000..d410116 --- /dev/null +++ b/src/assets/icons/uiw/UiwDownSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDownSquareO.vue b/src/assets/icons/uiw/UiwDownSquareO.vue new file mode 100644 index 0000000..7bdadbb --- /dev/null +++ b/src/assets/icons/uiw/UiwDownSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwDownload.vue b/src/assets/icons/uiw/UiwDownload.vue new file mode 100644 index 0000000..f7bf9b6 --- /dev/null +++ b/src/assets/icons/uiw/UiwDownload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEdit.vue b/src/assets/icons/uiw/UiwEdit.vue new file mode 100644 index 0000000..51c461a --- /dev/null +++ b/src/assets/icons/uiw/UiwEdit.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEnter.vue b/src/assets/icons/uiw/UiwEnter.vue new file mode 100644 index 0000000..083fd97 --- /dev/null +++ b/src/assets/icons/uiw/UiwEnter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEnvironment.vue b/src/assets/icons/uiw/UiwEnvironment.vue new file mode 100644 index 0000000..4ec4248 --- /dev/null +++ b/src/assets/icons/uiw/UiwEnvironment.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEnvironmentO.vue b/src/assets/icons/uiw/UiwEnvironmentO.vue new file mode 100644 index 0000000..128610d --- /dev/null +++ b/src/assets/icons/uiw/UiwEnvironmentO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEye.vue b/src/assets/icons/uiw/UiwEye.vue new file mode 100644 index 0000000..6f6a027 --- /dev/null +++ b/src/assets/icons/uiw/UiwEye.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwEyeO.vue b/src/assets/icons/uiw/UiwEyeO.vue new file mode 100644 index 0000000..ec5aae8 --- /dev/null +++ b/src/assets/icons/uiw/UiwEyeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFacebook.vue b/src/assets/icons/uiw/UiwFacebook.vue new file mode 100644 index 0000000..3e17586 --- /dev/null +++ b/src/assets/icons/uiw/UiwFacebook.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFileAdd.vue b/src/assets/icons/uiw/UiwFileAdd.vue new file mode 100644 index 0000000..54ad300 --- /dev/null +++ b/src/assets/icons/uiw/UiwFileAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFileExcel.vue b/src/assets/icons/uiw/UiwFileExcel.vue new file mode 100644 index 0000000..3232020 --- /dev/null +++ b/src/assets/icons/uiw/UiwFileExcel.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFileJpg.vue b/src/assets/icons/uiw/UiwFileJpg.vue new file mode 100644 index 0000000..4131142 --- /dev/null +++ b/src/assets/icons/uiw/UiwFileJpg.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFilePdf.vue b/src/assets/icons/uiw/UiwFilePdf.vue new file mode 100644 index 0000000..c6256da --- /dev/null +++ b/src/assets/icons/uiw/UiwFilePdf.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFileText.vue b/src/assets/icons/uiw/UiwFileText.vue new file mode 100644 index 0000000..20f5f85 --- /dev/null +++ b/src/assets/icons/uiw/UiwFileText.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFileUnknown.vue b/src/assets/icons/uiw/UiwFileUnknown.vue new file mode 100644 index 0000000..83f8f94 --- /dev/null +++ b/src/assets/icons/uiw/UiwFileUnknown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFilter.vue b/src/assets/icons/uiw/UiwFilter.vue new file mode 100644 index 0000000..462e957 --- /dev/null +++ b/src/assets/icons/uiw/UiwFilter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFirefox.vue b/src/assets/icons/uiw/UiwFirefox.vue new file mode 100644 index 0000000..84e6a65 --- /dev/null +++ b/src/assets/icons/uiw/UiwFirefox.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFolder.vue b/src/assets/icons/uiw/UiwFolder.vue new file mode 100644 index 0000000..517f279 --- /dev/null +++ b/src/assets/icons/uiw/UiwFolder.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFolderAdd.vue b/src/assets/icons/uiw/UiwFolderAdd.vue new file mode 100644 index 0000000..2a0725f --- /dev/null +++ b/src/assets/icons/uiw/UiwFolderAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFolderOpen.vue b/src/assets/icons/uiw/UiwFolderOpen.vue new file mode 100644 index 0000000..b7067f2 --- /dev/null +++ b/src/assets/icons/uiw/UiwFolderOpen.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwForward.vue b/src/assets/icons/uiw/UiwForward.vue new file mode 100644 index 0000000..37c450b --- /dev/null +++ b/src/assets/icons/uiw/UiwForward.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFoursquare.vue b/src/assets/icons/uiw/UiwFoursquare.vue new file mode 100644 index 0000000..e140ec2 --- /dev/null +++ b/src/assets/icons/uiw/UiwFoursquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFrown.vue b/src/assets/icons/uiw/UiwFrown.vue new file mode 100644 index 0000000..93a5f2d --- /dev/null +++ b/src/assets/icons/uiw/UiwFrown.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwFrownO.vue b/src/assets/icons/uiw/UiwFrownO.vue new file mode 100644 index 0000000..fdeeb14 --- /dev/null +++ b/src/assets/icons/uiw/UiwFrownO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwGithub.vue b/src/assets/icons/uiw/UiwGithub.vue new file mode 100644 index 0000000..7355bb7 --- /dev/null +++ b/src/assets/icons/uiw/UiwGithub.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwGithubO.vue b/src/assets/icons/uiw/UiwGithubO.vue new file mode 100644 index 0000000..b84067b --- /dev/null +++ b/src/assets/icons/uiw/UiwGithubO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwGlobal.vue b/src/assets/icons/uiw/UiwGlobal.vue new file mode 100644 index 0000000..c15f2fa --- /dev/null +++ b/src/assets/icons/uiw/UiwGlobal.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwHeartOff.vue b/src/assets/icons/uiw/UiwHeartOff.vue new file mode 100644 index 0000000..12e21a5 --- /dev/null +++ b/src/assets/icons/uiw/UiwHeartOff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwHeartOn.vue b/src/assets/icons/uiw/UiwHeartOn.vue new file mode 100644 index 0000000..fff274a --- /dev/null +++ b/src/assets/icons/uiw/UiwHeartOn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwHome.vue b/src/assets/icons/uiw/UiwHome.vue new file mode 100644 index 0000000..d02254a --- /dev/null +++ b/src/assets/icons/uiw/UiwHome.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwHtml5.vue b/src/assets/icons/uiw/UiwHtml5.vue new file mode 100644 index 0000000..553f31c --- /dev/null +++ b/src/assets/icons/uiw/UiwHtml5.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwIe.vue b/src/assets/icons/uiw/UiwIe.vue new file mode 100644 index 0000000..38dffc4 --- /dev/null +++ b/src/assets/icons/uiw/UiwIe.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwInbox.vue b/src/assets/icons/uiw/UiwInbox.vue new file mode 100644 index 0000000..4af3125 --- /dev/null +++ b/src/assets/icons/uiw/UiwInbox.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwInformation.vue b/src/assets/icons/uiw/UiwInformation.vue new file mode 100644 index 0000000..ff4b4b5 --- /dev/null +++ b/src/assets/icons/uiw/UiwInformation.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwInformationO.vue b/src/assets/icons/uiw/UiwInformationO.vue new file mode 100644 index 0000000..a202497 --- /dev/null +++ b/src/assets/icons/uiw/UiwInformationO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLaptop.vue b/src/assets/icons/uiw/UiwLaptop.vue new file mode 100644 index 0000000..a65bc1c --- /dev/null +++ b/src/assets/icons/uiw/UiwLaptop.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLeft.vue b/src/assets/icons/uiw/UiwLeft.vue new file mode 100644 index 0000000..6f14627 --- /dev/null +++ b/src/assets/icons/uiw/UiwLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLeftCircle.vue b/src/assets/icons/uiw/UiwLeftCircle.vue new file mode 100644 index 0000000..187a2b2 --- /dev/null +++ b/src/assets/icons/uiw/UiwLeftCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLeftCircleO.vue b/src/assets/icons/uiw/UiwLeftCircleO.vue new file mode 100644 index 0000000..1e53313 --- /dev/null +++ b/src/assets/icons/uiw/UiwLeftCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLeftSquare.vue b/src/assets/icons/uiw/UiwLeftSquare.vue new file mode 100644 index 0000000..69e752b --- /dev/null +++ b/src/assets/icons/uiw/UiwLeftSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLeftSquareO.vue b/src/assets/icons/uiw/UiwLeftSquareO.vue new file mode 100644 index 0000000..eb18ac6 --- /dev/null +++ b/src/assets/icons/uiw/UiwLeftSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLikeO.vue b/src/assets/icons/uiw/UiwLikeO.vue new file mode 100644 index 0000000..f5b27ab --- /dev/null +++ b/src/assets/icons/uiw/UiwLikeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLink.vue b/src/assets/icons/uiw/UiwLink.vue new file mode 100644 index 0000000..85efeff --- /dev/null +++ b/src/assets/icons/uiw/UiwLink.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLinkedin.vue b/src/assets/icons/uiw/UiwLinkedin.vue new file mode 100644 index 0000000..2fe04eb --- /dev/null +++ b/src/assets/icons/uiw/UiwLinkedin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLinux.vue b/src/assets/icons/uiw/UiwLinux.vue new file mode 100644 index 0000000..13d9b58 --- /dev/null +++ b/src/assets/icons/uiw/UiwLinux.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLoading.vue b/src/assets/icons/uiw/UiwLoading.vue new file mode 100644 index 0000000..fb9227f --- /dev/null +++ b/src/assets/icons/uiw/UiwLoading.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLock.vue b/src/assets/icons/uiw/UiwLock.vue new file mode 100644 index 0000000..28f6dbc --- /dev/null +++ b/src/assets/icons/uiw/UiwLock.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLogin.vue b/src/assets/icons/uiw/UiwLogin.vue new file mode 100644 index 0000000..a898091 --- /dev/null +++ b/src/assets/icons/uiw/UiwLogin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwLogout.vue b/src/assets/icons/uiw/UiwLogout.vue new file mode 100644 index 0000000..1f7a40c --- /dev/null +++ b/src/assets/icons/uiw/UiwLogout.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMail.vue b/src/assets/icons/uiw/UiwMail.vue new file mode 100644 index 0000000..fa2ffc4 --- /dev/null +++ b/src/assets/icons/uiw/UiwMail.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMailO.vue b/src/assets/icons/uiw/UiwMailO.vue new file mode 100644 index 0000000..32ec3f7 --- /dev/null +++ b/src/assets/icons/uiw/UiwMailO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMan.vue b/src/assets/icons/uiw/UiwMan.vue new file mode 100644 index 0000000..13f22b5 --- /dev/null +++ b/src/assets/icons/uiw/UiwMan.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMap.vue b/src/assets/icons/uiw/UiwMap.vue new file mode 100644 index 0000000..4365d9a --- /dev/null +++ b/src/assets/icons/uiw/UiwMap.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMeh.vue b/src/assets/icons/uiw/UiwMeh.vue new file mode 100644 index 0000000..c615aec --- /dev/null +++ b/src/assets/icons/uiw/UiwMeh.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMehO.vue b/src/assets/icons/uiw/UiwMehO.vue new file mode 100644 index 0000000..9105467 --- /dev/null +++ b/src/assets/icons/uiw/UiwMehO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMenu.vue b/src/assets/icons/uiw/UiwMenu.vue new file mode 100644 index 0000000..9f2d21f --- /dev/null +++ b/src/assets/icons/uiw/UiwMenu.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMenuFold.vue b/src/assets/icons/uiw/UiwMenuFold.vue new file mode 100644 index 0000000..3aacfea --- /dev/null +++ b/src/assets/icons/uiw/UiwMenuFold.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMenuUnfold.vue b/src/assets/icons/uiw/UiwMenuUnfold.vue new file mode 100644 index 0000000..c9c46d3 --- /dev/null +++ b/src/assets/icons/uiw/UiwMenuUnfold.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMessage.vue b/src/assets/icons/uiw/UiwMessage.vue new file mode 100644 index 0000000..84d51c8 --- /dev/null +++ b/src/assets/icons/uiw/UiwMessage.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMinus.vue b/src/assets/icons/uiw/UiwMinus.vue new file mode 100644 index 0000000..c430d03 --- /dev/null +++ b/src/assets/icons/uiw/UiwMinus.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMinusCircle.vue b/src/assets/icons/uiw/UiwMinusCircle.vue new file mode 100644 index 0000000..c782b1f --- /dev/null +++ b/src/assets/icons/uiw/UiwMinusCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMinusCircleO.vue b/src/assets/icons/uiw/UiwMinusCircleO.vue new file mode 100644 index 0000000..665cd87 --- /dev/null +++ b/src/assets/icons/uiw/UiwMinusCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMinusSquare.vue b/src/assets/icons/uiw/UiwMinusSquare.vue new file mode 100644 index 0000000..3a0aed2 --- /dev/null +++ b/src/assets/icons/uiw/UiwMinusSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMinusSquareO.vue b/src/assets/icons/uiw/UiwMinusSquareO.vue new file mode 100644 index 0000000..228a1e3 --- /dev/null +++ b/src/assets/icons/uiw/UiwMinusSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMobile.vue b/src/assets/icons/uiw/UiwMobile.vue new file mode 100644 index 0000000..95f3306 --- /dev/null +++ b/src/assets/icons/uiw/UiwMobile.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwMore.vue b/src/assets/icons/uiw/UiwMore.vue new file mode 100644 index 0000000..7fe9138 --- /dev/null +++ b/src/assets/icons/uiw/UiwMore.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwNotification.vue b/src/assets/icons/uiw/UiwNotification.vue new file mode 100644 index 0000000..22bf4cd --- /dev/null +++ b/src/assets/icons/uiw/UiwNotification.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwOpera.vue b/src/assets/icons/uiw/UiwOpera.vue new file mode 100644 index 0000000..81d1c2b --- /dev/null +++ b/src/assets/icons/uiw/UiwOpera.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPaperClip.vue b/src/assets/icons/uiw/UiwPaperClip.vue new file mode 100644 index 0000000..90e1721 --- /dev/null +++ b/src/assets/icons/uiw/UiwPaperClip.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPause.vue b/src/assets/icons/uiw/UiwPause.vue new file mode 100644 index 0000000..7f545ab --- /dev/null +++ b/src/assets/icons/uiw/UiwPause.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPauseCircle.vue b/src/assets/icons/uiw/UiwPauseCircle.vue new file mode 100644 index 0000000..ced2cfb --- /dev/null +++ b/src/assets/icons/uiw/UiwPauseCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPauseCircleO.vue b/src/assets/icons/uiw/UiwPauseCircleO.vue new file mode 100644 index 0000000..73b76b7 --- /dev/null +++ b/src/assets/icons/uiw/UiwPauseCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPay.vue b/src/assets/icons/uiw/UiwPay.vue new file mode 100644 index 0000000..8c04151 --- /dev/null +++ b/src/assets/icons/uiw/UiwPay.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPayCircleO.vue b/src/assets/icons/uiw/UiwPayCircleO.vue new file mode 100644 index 0000000..c187d65 --- /dev/null +++ b/src/assets/icons/uiw/UiwPayCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPicasa.vue b/src/assets/icons/uiw/UiwPicasa.vue new file mode 100644 index 0000000..d2879fc --- /dev/null +++ b/src/assets/icons/uiw/UiwPicasa.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPicture.vue b/src/assets/icons/uiw/UiwPicture.vue new file mode 100644 index 0000000..57392e4 --- /dev/null +++ b/src/assets/icons/uiw/UiwPicture.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPieChart.vue b/src/assets/icons/uiw/UiwPieChart.vue new file mode 100644 index 0000000..7d4c5f3 --- /dev/null +++ b/src/assets/icons/uiw/UiwPieChart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPinterest.vue b/src/assets/icons/uiw/UiwPinterest.vue new file mode 100644 index 0000000..8ff5f67 --- /dev/null +++ b/src/assets/icons/uiw/UiwPinterest.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlayCircle.vue b/src/assets/icons/uiw/UiwPlayCircle.vue new file mode 100644 index 0000000..e0fccf6 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlayCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlayCircleO.vue b/src/assets/icons/uiw/UiwPlayCircleO.vue new file mode 100644 index 0000000..003e0fa --- /dev/null +++ b/src/assets/icons/uiw/UiwPlayCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlus.vue b/src/assets/icons/uiw/UiwPlus.vue new file mode 100644 index 0000000..6d88042 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlus.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlusCircle.vue b/src/assets/icons/uiw/UiwPlusCircle.vue new file mode 100644 index 0000000..a671f61 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlusCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlusCircleO.vue b/src/assets/icons/uiw/UiwPlusCircleO.vue new file mode 100644 index 0000000..d05b1b4 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlusCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlusSquare.vue b/src/assets/icons/uiw/UiwPlusSquare.vue new file mode 100644 index 0000000..4e0f869 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlusSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPlusSquareO.vue b/src/assets/icons/uiw/UiwPlusSquareO.vue new file mode 100644 index 0000000..2f4a2d8 --- /dev/null +++ b/src/assets/icons/uiw/UiwPlusSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPoweroff.vue b/src/assets/icons/uiw/UiwPoweroff.vue new file mode 100644 index 0000000..7672085 --- /dev/null +++ b/src/assets/icons/uiw/UiwPoweroff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwPrinter.vue b/src/assets/icons/uiw/UiwPrinter.vue new file mode 100644 index 0000000..28bb2c9 --- /dev/null +++ b/src/assets/icons/uiw/UiwPrinter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwQq.vue b/src/assets/icons/uiw/UiwQq.vue new file mode 100644 index 0000000..9cca28c --- /dev/null +++ b/src/assets/icons/uiw/UiwQq.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwQrcode.vue b/src/assets/icons/uiw/UiwQrcode.vue new file mode 100644 index 0000000..e5d5cea --- /dev/null +++ b/src/assets/icons/uiw/UiwQrcode.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwQuestionCircle.vue b/src/assets/icons/uiw/UiwQuestionCircle.vue new file mode 100644 index 0000000..c061060 --- /dev/null +++ b/src/assets/icons/uiw/UiwQuestionCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwQuestionCircleO.vue b/src/assets/icons/uiw/UiwQuestionCircleO.vue new file mode 100644 index 0000000..7da5678 --- /dev/null +++ b/src/assets/icons/uiw/UiwQuestionCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwReddit.vue b/src/assets/icons/uiw/UiwReddit.vue new file mode 100644 index 0000000..d9c3df7 --- /dev/null +++ b/src/assets/icons/uiw/UiwReddit.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwReload.vue b/src/assets/icons/uiw/UiwReload.vue new file mode 100644 index 0000000..ff72db3 --- /dev/null +++ b/src/assets/icons/uiw/UiwReload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRight.vue b/src/assets/icons/uiw/UiwRight.vue new file mode 100644 index 0000000..e055f65 --- /dev/null +++ b/src/assets/icons/uiw/UiwRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRightCircle.vue b/src/assets/icons/uiw/UiwRightCircle.vue new file mode 100644 index 0000000..5decfb0 --- /dev/null +++ b/src/assets/icons/uiw/UiwRightCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRightCircleO.vue b/src/assets/icons/uiw/UiwRightCircleO.vue new file mode 100644 index 0000000..19fca27 --- /dev/null +++ b/src/assets/icons/uiw/UiwRightCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRightSquare.vue b/src/assets/icons/uiw/UiwRightSquare.vue new file mode 100644 index 0000000..7f87286 --- /dev/null +++ b/src/assets/icons/uiw/UiwRightSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRightSquareO.vue b/src/assets/icons/uiw/UiwRightSquareO.vue new file mode 100644 index 0000000..99f16ce --- /dev/null +++ b/src/assets/icons/uiw/UiwRightSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwRollback.vue b/src/assets/icons/uiw/UiwRollback.vue new file mode 100644 index 0000000..87137b0 --- /dev/null +++ b/src/assets/icons/uiw/UiwRollback.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSafari.vue b/src/assets/icons/uiw/UiwSafari.vue new file mode 100644 index 0000000..9bbe4e5 --- /dev/null +++ b/src/assets/icons/uiw/UiwSafari.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSafety.vue b/src/assets/icons/uiw/UiwSafety.vue new file mode 100644 index 0000000..7be65c5 --- /dev/null +++ b/src/assets/icons/uiw/UiwSafety.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSave.vue b/src/assets/icons/uiw/UiwSave.vue new file mode 100644 index 0000000..627fed2 --- /dev/null +++ b/src/assets/icons/uiw/UiwSave.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSearch.vue b/src/assets/icons/uiw/UiwSearch.vue new file mode 100644 index 0000000..62af70a --- /dev/null +++ b/src/assets/icons/uiw/UiwSearch.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSetting.vue b/src/assets/icons/uiw/UiwSetting.vue new file mode 100644 index 0000000..097b695 --- /dev/null +++ b/src/assets/icons/uiw/UiwSetting.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSettingO.vue b/src/assets/icons/uiw/UiwSettingO.vue new file mode 100644 index 0000000..20741a3 --- /dev/null +++ b/src/assets/icons/uiw/UiwSettingO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwShare.vue b/src/assets/icons/uiw/UiwShare.vue new file mode 100644 index 0000000..573e2dc --- /dev/null +++ b/src/assets/icons/uiw/UiwShare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwShoppingCart.vue b/src/assets/icons/uiw/UiwShoppingCart.vue new file mode 100644 index 0000000..13d0b61 --- /dev/null +++ b/src/assets/icons/uiw/UiwShoppingCart.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwShrink.vue b/src/assets/icons/uiw/UiwShrink.vue new file mode 100644 index 0000000..a451807 --- /dev/null +++ b/src/assets/icons/uiw/UiwShrink.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSmile.vue b/src/assets/icons/uiw/UiwSmile.vue new file mode 100644 index 0000000..548500f --- /dev/null +++ b/src/assets/icons/uiw/UiwSmile.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSmileO.vue b/src/assets/icons/uiw/UiwSmileO.vue new file mode 100644 index 0000000..248852b --- /dev/null +++ b/src/assets/icons/uiw/UiwSmileO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSquareO.vue b/src/assets/icons/uiw/UiwSquareO.vue new file mode 100644 index 0000000..1371e41 --- /dev/null +++ b/src/assets/icons/uiw/UiwSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwStarOff.vue b/src/assets/icons/uiw/UiwStarOff.vue new file mode 100644 index 0000000..2a9013f --- /dev/null +++ b/src/assets/icons/uiw/UiwStarOff.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwStarOn.vue b/src/assets/icons/uiw/UiwStarOn.vue new file mode 100644 index 0000000..3c372c3 --- /dev/null +++ b/src/assets/icons/uiw/UiwStarOn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwStop.vue b/src/assets/icons/uiw/UiwStop.vue new file mode 100644 index 0000000..7806abf --- /dev/null +++ b/src/assets/icons/uiw/UiwStop.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwStopO.vue b/src/assets/icons/uiw/UiwStopO.vue new file mode 100644 index 0000000..288ec37 --- /dev/null +++ b/src/assets/icons/uiw/UiwStopO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSwap.vue b/src/assets/icons/uiw/UiwSwap.vue new file mode 100644 index 0000000..8b2a3e3 --- /dev/null +++ b/src/assets/icons/uiw/UiwSwap.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSwapLeft.vue b/src/assets/icons/uiw/UiwSwapLeft.vue new file mode 100644 index 0000000..61205d8 --- /dev/null +++ b/src/assets/icons/uiw/UiwSwapLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwSwapRight.vue b/src/assets/icons/uiw/UiwSwapRight.vue new file mode 100644 index 0000000..26e2f9b --- /dev/null +++ b/src/assets/icons/uiw/UiwSwapRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTable.vue b/src/assets/icons/uiw/UiwTable.vue new file mode 100644 index 0000000..353321d --- /dev/null +++ b/src/assets/icons/uiw/UiwTable.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTag.vue b/src/assets/icons/uiw/UiwTag.vue new file mode 100644 index 0000000..679a364 --- /dev/null +++ b/src/assets/icons/uiw/UiwTag.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTagO.vue b/src/assets/icons/uiw/UiwTagO.vue new file mode 100644 index 0000000..593b145 --- /dev/null +++ b/src/assets/icons/uiw/UiwTagO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTags.vue b/src/assets/icons/uiw/UiwTags.vue new file mode 100644 index 0000000..a02e393 --- /dev/null +++ b/src/assets/icons/uiw/UiwTags.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTagsO.vue b/src/assets/icons/uiw/UiwTagsO.vue new file mode 100644 index 0000000..a635ebf --- /dev/null +++ b/src/assets/icons/uiw/UiwTagsO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTaobao.vue b/src/assets/icons/uiw/UiwTaobao.vue new file mode 100644 index 0000000..f2d4d78 --- /dev/null +++ b/src/assets/icons/uiw/UiwTaobao.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTime.vue b/src/assets/icons/uiw/UiwTime.vue new file mode 100644 index 0000000..f3ed896 --- /dev/null +++ b/src/assets/icons/uiw/UiwTime.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTimeO.vue b/src/assets/icons/uiw/UiwTimeO.vue new file mode 100644 index 0000000..f7f9320 --- /dev/null +++ b/src/assets/icons/uiw/UiwTimeO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwTwitter.vue b/src/assets/icons/uiw/UiwTwitter.vue new file mode 100644 index 0000000..f5c42d1 --- /dev/null +++ b/src/assets/icons/uiw/UiwTwitter.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUiw.vue b/src/assets/icons/uiw/UiwUiw.vue new file mode 100644 index 0000000..8c6afea --- /dev/null +++ b/src/assets/icons/uiw/UiwUiw.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUnlock.vue b/src/assets/icons/uiw/UiwUnlock.vue new file mode 100644 index 0000000..2e86e07 --- /dev/null +++ b/src/assets/icons/uiw/UiwUnlock.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUp.vue b/src/assets/icons/uiw/UiwUp.vue new file mode 100644 index 0000000..e330168 --- /dev/null +++ b/src/assets/icons/uiw/UiwUp.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUpCircle.vue b/src/assets/icons/uiw/UiwUpCircle.vue new file mode 100644 index 0000000..8862168 --- /dev/null +++ b/src/assets/icons/uiw/UiwUpCircle.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUpCircleO.vue b/src/assets/icons/uiw/UiwUpCircleO.vue new file mode 100644 index 0000000..2921df3 --- /dev/null +++ b/src/assets/icons/uiw/UiwUpCircleO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUpSquare.vue b/src/assets/icons/uiw/UiwUpSquare.vue new file mode 100644 index 0000000..4370ae6 --- /dev/null +++ b/src/assets/icons/uiw/UiwUpSquare.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUpSquareO.vue b/src/assets/icons/uiw/UiwUpSquareO.vue new file mode 100644 index 0000000..ebb29da --- /dev/null +++ b/src/assets/icons/uiw/UiwUpSquareO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUpload.vue b/src/assets/icons/uiw/UiwUpload.vue new file mode 100644 index 0000000..2363302 --- /dev/null +++ b/src/assets/icons/uiw/UiwUpload.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUser.vue b/src/assets/icons/uiw/UiwUser.vue new file mode 100644 index 0000000..2caa308 --- /dev/null +++ b/src/assets/icons/uiw/UiwUser.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUserAdd.vue b/src/assets/icons/uiw/UiwUserAdd.vue new file mode 100644 index 0000000..a149a3b --- /dev/null +++ b/src/assets/icons/uiw/UiwUserAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUserDelete.vue b/src/assets/icons/uiw/UiwUserDelete.vue new file mode 100644 index 0000000..39a9187 --- /dev/null +++ b/src/assets/icons/uiw/UiwUserDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUsergroupAdd.vue b/src/assets/icons/uiw/UiwUsergroupAdd.vue new file mode 100644 index 0000000..6cbd224 --- /dev/null +++ b/src/assets/icons/uiw/UiwUsergroupAdd.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwUsergroupDelete.vue b/src/assets/icons/uiw/UiwUsergroupDelete.vue new file mode 100644 index 0000000..79c69b2 --- /dev/null +++ b/src/assets/icons/uiw/UiwUsergroupDelete.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwVerification.vue b/src/assets/icons/uiw/UiwVerification.vue new file mode 100644 index 0000000..d45c3d6 --- /dev/null +++ b/src/assets/icons/uiw/UiwVerification.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwVerticleLeft.vue b/src/assets/icons/uiw/UiwVerticleLeft.vue new file mode 100644 index 0000000..69e4578 --- /dev/null +++ b/src/assets/icons/uiw/UiwVerticleLeft.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwVerticleRight.vue b/src/assets/icons/uiw/UiwVerticleRight.vue new file mode 100644 index 0000000..65320b7 --- /dev/null +++ b/src/assets/icons/uiw/UiwVerticleRight.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwVideoCamera.vue b/src/assets/icons/uiw/UiwVideoCamera.vue new file mode 100644 index 0000000..da01578 --- /dev/null +++ b/src/assets/icons/uiw/UiwVideoCamera.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWarning.vue b/src/assets/icons/uiw/UiwWarning.vue new file mode 100644 index 0000000..e740ba9 --- /dev/null +++ b/src/assets/icons/uiw/UiwWarning.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWarningO.vue b/src/assets/icons/uiw/UiwWarningO.vue new file mode 100644 index 0000000..b3bd388 --- /dev/null +++ b/src/assets/icons/uiw/UiwWarningO.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWeibo.vue b/src/assets/icons/uiw/UiwWeibo.vue new file mode 100644 index 0000000..8fe7363 --- /dev/null +++ b/src/assets/icons/uiw/UiwWeibo.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWeixin.vue b/src/assets/icons/uiw/UiwWeixin.vue new file mode 100644 index 0000000..c745892 --- /dev/null +++ b/src/assets/icons/uiw/UiwWeixin.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWifi.vue b/src/assets/icons/uiw/UiwWifi.vue new file mode 100644 index 0000000..8d5a977 --- /dev/null +++ b/src/assets/icons/uiw/UiwWifi.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWindows.vue b/src/assets/icons/uiw/UiwWindows.vue new file mode 100644 index 0000000..8217385 --- /dev/null +++ b/src/assets/icons/uiw/UiwWindows.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwWoman.vue b/src/assets/icons/uiw/UiwWoman.vue new file mode 100644 index 0000000..38d88a2 --- /dev/null +++ b/src/assets/icons/uiw/UiwWoman.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwZoomIn.vue b/src/assets/icons/uiw/UiwZoomIn.vue new file mode 100644 index 0000000..fcc4f8b --- /dev/null +++ b/src/assets/icons/uiw/UiwZoomIn.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/uiw/UiwZoomOut.vue b/src/assets/icons/uiw/UiwZoomOut.vue new file mode 100644 index 0000000..e9a1bfa --- /dev/null +++ b/src/assets/icons/uiw/UiwZoomOut.vue @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/src/assets/images/fileImg/README.md b/src/assets/images/fileImg/README.md new file mode 100644 index 0000000..2da6114 --- /dev/null +++ b/src/assets/images/fileImg/README.md @@ -0,0 +1 @@ +图标文件来源:https://www.aigei.com/s?q=%E6%96%87%E4%BB%B6&detailTab=file&type=icon_7&page=11#resContainer diff --git a/src/assets/images/fileImg/docx.png b/src/assets/images/fileImg/docx.png new file mode 100644 index 0000000..d7bc3aa Binary files /dev/null and b/src/assets/images/fileImg/docx.png differ diff --git a/src/assets/images/fileImg/file.png b/src/assets/images/fileImg/file.png new file mode 100644 index 0000000..5731c21 Binary files /dev/null and b/src/assets/images/fileImg/file.png differ diff --git a/src/assets/images/fileImg/gif.png b/src/assets/images/fileImg/gif.png new file mode 100644 index 0000000..f7de519 Binary files /dev/null and b/src/assets/images/fileImg/gif.png differ diff --git a/src/assets/images/fileImg/html.png b/src/assets/images/fileImg/html.png new file mode 100644 index 0000000..ab82663 Binary files /dev/null and b/src/assets/images/fileImg/html.png differ diff --git a/src/assets/images/fileImg/img.png b/src/assets/images/fileImg/img.png new file mode 100644 index 0000000..04b1118 Binary files /dev/null and b/src/assets/images/fileImg/img.png differ diff --git a/src/assets/images/fileImg/pdf.png b/src/assets/images/fileImg/pdf.png new file mode 100644 index 0000000..1fbb05b Binary files /dev/null and b/src/assets/images/fileImg/pdf.png differ diff --git a/src/assets/images/fileImg/png.png b/src/assets/images/fileImg/png.png new file mode 100644 index 0000000..58de69c Binary files /dev/null and b/src/assets/images/fileImg/png.png differ diff --git a/src/assets/images/fileImg/ppt.png b/src/assets/images/fileImg/ppt.png new file mode 100644 index 0000000..c4b2b8d Binary files /dev/null and b/src/assets/images/fileImg/ppt.png differ diff --git a/src/assets/images/fileImg/rar.png b/src/assets/images/fileImg/rar.png new file mode 100644 index 0000000..898d931 Binary files /dev/null and b/src/assets/images/fileImg/rar.png differ diff --git a/src/assets/images/fileImg/txt.png b/src/assets/images/fileImg/txt.png new file mode 100644 index 0000000..46cfd32 Binary files /dev/null and b/src/assets/images/fileImg/txt.png differ diff --git a/src/assets/images/fileImg/xlsx.png b/src/assets/images/fileImg/xlsx.png new file mode 100644 index 0000000..43c079d Binary files /dev/null and b/src/assets/images/fileImg/xlsx.png differ diff --git a/src/assets/images/fileImg/zip.png b/src/assets/images/fileImg/zip.png new file mode 100644 index 0000000..410e70f Binary files /dev/null and b/src/assets/images/fileImg/zip.png differ diff --git a/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue b/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue new file mode 100644 index 0000000..e748881 --- /dev/null +++ b/src/components/Chart/eCBingZhuangTu/CustomizedPie.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue b/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue new file mode 100644 index 0000000..b250f93 --- /dev/null +++ b/src/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue b/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue new file mode 100644 index 0000000..64f7b08 --- /dev/null +++ b/src/components/Chart/eCBingZhuangTu/NightingaleChart.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue b/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue new file mode 100644 index 0000000..96bc235 --- /dev/null +++ b/src/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/Chart/eCKXianTu/BasicCandlestick.vue b/src/components/Chart/eCKXianTu/BasicCandlestick.vue new file mode 100644 index 0000000..2ba80ed --- /dev/null +++ b/src/components/Chart/eCKXianTu/BasicCandlestick.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue b/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue new file mode 100644 index 0000000..3579116 --- /dev/null +++ b/src/components/Chart/eCKXianTu/LargeScaleCandlestick.vue @@ -0,0 +1,207 @@ + + + diff --git a/src/components/Chart/eCKXianTu/ShangHaiIndex.vue b/src/components/Chart/eCKXianTu/ShangHaiIndex.vue new file mode 100644 index 0000000..bd03c99 --- /dev/null +++ b/src/components/Chart/eCKXianTu/ShangHaiIndex.vue @@ -0,0 +1,324 @@ + + + diff --git a/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue b/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue new file mode 100644 index 0000000..dbe223c --- /dev/null +++ b/src/components/Chart/eCLouDouTu/CustomizedFunnel.vue @@ -0,0 +1,100 @@ + + diff --git a/src/components/Chart/eCLouDouTu/FunnelChart.vue b/src/components/Chart/eCLouDouTu/FunnelChart.vue new file mode 100644 index 0000000..90153e0 --- /dev/null +++ b/src/components/Chart/eCLouDouTu/FunnelChart.vue @@ -0,0 +1,81 @@ + + diff --git a/src/components/Chart/eCLouDouTu/FunnelCompare.vue b/src/components/Chart/eCLouDouTu/FunnelCompare.vue new file mode 100644 index 0000000..37cde53 --- /dev/null +++ b/src/components/Chart/eCLouDouTu/FunnelCompare.vue @@ -0,0 +1,114 @@ + + diff --git a/src/components/Chart/eCLouDouTu/MultipleFunnels.vue b/src/components/Chart/eCLouDouTu/MultipleFunnels.vue new file mode 100644 index 0000000..e09aa3c --- /dev/null +++ b/src/components/Chart/eCLouDouTu/MultipleFunnels.vue @@ -0,0 +1,114 @@ + + diff --git a/src/components/Chart/eCSanDianTu/BasicScatterChart.vue b/src/components/Chart/eCSanDianTu/BasicScatterChart.vue new file mode 100644 index 0000000..3c815a9 --- /dev/null +++ b/src/components/Chart/eCSanDianTu/BasicScatterChart.vue @@ -0,0 +1,51 @@ + + diff --git a/src/components/Chart/eCSanDianTu/ClusteringProcess.vue b/src/components/Chart/eCSanDianTu/ClusteringProcess.vue new file mode 100644 index 0000000..e1780e3 --- /dev/null +++ b/src/components/Chart/eCSanDianTu/ClusteringProcess.vue @@ -0,0 +1,139 @@ + + diff --git a/src/components/Chart/eCSanDianTu/EffectScatterChart.vue b/src/components/Chart/eCSanDianTu/EffectScatterChart.vue new file mode 100644 index 0000000..a9a3dd5 --- /dev/null +++ b/src/components/Chart/eCSanDianTu/EffectScatterChart.vue @@ -0,0 +1,92 @@ + + diff --git a/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue b/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue new file mode 100644 index 0000000..a44e60a --- /dev/null +++ b/src/components/Chart/eCSanDianTu/ScatterAqiColor.vue @@ -0,0 +1,264 @@ + + diff --git a/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue b/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue new file mode 100644 index 0000000..3d57210 --- /dev/null +++ b/src/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue @@ -0,0 +1,182 @@ + + diff --git a/src/components/Chart/eCXianXingTu/BasicLineChart.vue b/src/components/Chart/eCXianXingTu/BasicLineChart.vue new file mode 100644 index 0000000..5c071a2 --- /dev/null +++ b/src/components/Chart/eCXianXingTu/BasicLineChart.vue @@ -0,0 +1,34 @@ + + diff --git a/src/components/Chart/eCXianXingTu/StackedAreaChart.vue b/src/components/Chart/eCXianXingTu/StackedAreaChart.vue new file mode 100644 index 0000000..9e82448 --- /dev/null +++ b/src/components/Chart/eCXianXingTu/StackedAreaChart.vue @@ -0,0 +1,115 @@ + + diff --git a/src/components/Chart/eCXianXingTu/StackedLineChart.vue b/src/components/Chart/eCXianXingTu/StackedLineChart.vue new file mode 100644 index 0000000..8442da8 --- /dev/null +++ b/src/components/Chart/eCXianXingTu/StackedLineChart.vue @@ -0,0 +1,81 @@ + + diff --git a/src/components/Chart/eCXianXingTu/StepLine.vue b/src/components/Chart/eCXianXingTu/StepLine.vue new file mode 100644 index 0000000..6e27326 --- /dev/null +++ b/src/components/Chart/eCXianXingTu/StepLine.vue @@ -0,0 +1,68 @@ + + diff --git a/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue b/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue new file mode 100644 index 0000000..f55b7d7 --- /dev/null +++ b/src/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue @@ -0,0 +1,37 @@ + + diff --git a/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue b/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue new file mode 100644 index 0000000..785deac --- /dev/null +++ b/src/components/Chart/eCYiBiaoTu/GrogressGauge.vue @@ -0,0 +1,106 @@ + + diff --git a/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue b/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue new file mode 100644 index 0000000..367075c --- /dev/null +++ b/src/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue @@ -0,0 +1,83 @@ + + diff --git a/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue b/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue new file mode 100644 index 0000000..0bbdc25 --- /dev/null +++ b/src/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue @@ -0,0 +1,147 @@ + + diff --git a/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue b/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue new file mode 100644 index 0000000..5122cd0 --- /dev/null +++ b/src/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue @@ -0,0 +1,77 @@ + + diff --git a/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue b/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue new file mode 100644 index 0000000..9449c41 --- /dev/null +++ b/src/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue @@ -0,0 +1,132 @@ + + diff --git a/src/components/Chart/eCZhuZhuangTu/BasicBar.vue b/src/components/Chart/eCZhuZhuangTu/BasicBar.vue new file mode 100644 index 0000000..542751a --- /dev/null +++ b/src/components/Chart/eCZhuZhuangTu/BasicBar.vue @@ -0,0 +1,32 @@ + + diff --git a/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue b/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue new file mode 100644 index 0000000..080f7d0 --- /dev/null +++ b/src/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue @@ -0,0 +1,249 @@ + + diff --git a/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue b/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue new file mode 100644 index 0000000..069039b --- /dev/null +++ b/src/components/Chart/g2BingZhuangTu/BingZhuangTu01.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue b/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue new file mode 100644 index 0000000..89bb896 --- /dev/null +++ b/src/components/Chart/g2BingZhuangTu/BingZhuangTu02.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue b/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue new file mode 100644 index 0000000..5da57e9 --- /dev/null +++ b/src/components/Chart/g2BingZhuangTu/BingZhuangTu03.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue b/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue new file mode 100644 index 0000000..1d5e7b0 --- /dev/null +++ b/src/components/Chart/g2BingZhuangTu/BingZhuangTu04.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/components/Chart/g2CiYunTu/CiYunTu01.vue b/src/components/Chart/g2CiYunTu/CiYunTu01.vue new file mode 100644 index 0000000..0b6c52b --- /dev/null +++ b/src/components/Chart/g2CiYunTu/CiYunTu01.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/Chart/g2CiYunTu/CiYunTu02.vue b/src/components/Chart/g2CiYunTu/CiYunTu02.vue new file mode 100644 index 0000000..8f34326 --- /dev/null +++ b/src/components/Chart/g2CiYunTu/CiYunTu02.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/Chart/g2JinDuTu/JinDuTu01.vue b/src/components/Chart/g2JinDuTu/JinDuTu01.vue new file mode 100644 index 0000000..3d0784c --- /dev/null +++ b/src/components/Chart/g2JinDuTu/JinDuTu01.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/Chart/g2JinDuTu/JinDuTu02.vue b/src/components/Chart/g2JinDuTu/JinDuTu02.vue new file mode 100644 index 0000000..46fc47f --- /dev/null +++ b/src/components/Chart/g2JinDuTu/JinDuTu02.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/Chart/g2JinDuTu/JinDuTu03.vue b/src/components/Chart/g2JinDuTu/JinDuTu03.vue new file mode 100644 index 0000000..675b100 --- /dev/null +++ b/src/components/Chart/g2JinDuTu/JinDuTu03.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/components/Chart/g2JinDuTu/JinDuTu04.vue b/src/components/Chart/g2JinDuTu/JinDuTu04.vue new file mode 100644 index 0000000..c025a9f --- /dev/null +++ b/src/components/Chart/g2JinDuTu/JinDuTu04.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/components/Chart/g2LouDouTu/LouDouTu01.vue b/src/components/Chart/g2LouDouTu/LouDouTu01.vue new file mode 100644 index 0000000..4a9ab53 --- /dev/null +++ b/src/components/Chart/g2LouDouTu/LouDouTu01.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/Chart/g2LouDouTu/LouDouTu02.vue b/src/components/Chart/g2LouDouTu/LouDouTu02.vue new file mode 100644 index 0000000..d800bb2 --- /dev/null +++ b/src/components/Chart/g2LouDouTu/LouDouTu02.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/Chart/g2MianJiTu/MianJiTu01.vue b/src/components/Chart/g2MianJiTu/MianJiTu01.vue new file mode 100644 index 0000000..5efb7ab --- /dev/null +++ b/src/components/Chart/g2MianJiTu/MianJiTu01.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/Chart/g2MianJiTu/MianJiTu02.vue b/src/components/Chart/g2MianJiTu/MianJiTu02.vue new file mode 100644 index 0000000..1c1eae4 --- /dev/null +++ b/src/components/Chart/g2MianJiTu/MianJiTu02.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/Chart/g2MianJiTu/MianJiTu03.vue b/src/components/Chart/g2MianJiTu/MianJiTu03.vue new file mode 100644 index 0000000..92b3e3c --- /dev/null +++ b/src/components/Chart/g2MianJiTu/MianJiTu03.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/Chart/g2MianJiTu/MianJiTu04.vue b/src/components/Chart/g2MianJiTu/MianJiTu04.vue new file mode 100644 index 0000000..27160ba --- /dev/null +++ b/src/components/Chart/g2MianJiTu/MianJiTu04.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/Chart/g2SanDianTu/SanDianTu01.vue b/src/components/Chart/g2SanDianTu/SanDianTu01.vue new file mode 100644 index 0000000..cf8bc43 --- /dev/null +++ b/src/components/Chart/g2SanDianTu/SanDianTu01.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/Chart/g2SanDianTu/SanDianTu02.vue b/src/components/Chart/g2SanDianTu/SanDianTu02.vue new file mode 100644 index 0000000..8be7761 --- /dev/null +++ b/src/components/Chart/g2SanDianTu/SanDianTu02.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/components/Chart/g2SanDianTu/SanDianTu03.vue b/src/components/Chart/g2SanDianTu/SanDianTu03.vue new file mode 100644 index 0000000..49fa842 --- /dev/null +++ b/src/components/Chart/g2SanDianTu/SanDianTu03.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/components/Chart/g2SanDianTu/SanDianTu04.vue b/src/components/Chart/g2SanDianTu/SanDianTu04.vue new file mode 100644 index 0000000..4ff3fd9 --- /dev/null +++ b/src/components/Chart/g2SanDianTu/SanDianTu04.vue @@ -0,0 +1,337 @@ + + + diff --git a/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue b/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue new file mode 100644 index 0000000..d76c686 --- /dev/null +++ b/src/components/Chart/g2TiaoXingTu/TiaoXingTu01.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue b/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue new file mode 100644 index 0000000..20d06f6 --- /dev/null +++ b/src/components/Chart/g2TiaoXingTu/TiaoXingTu02.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue b/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue new file mode 100644 index 0000000..09d45ae --- /dev/null +++ b/src/components/Chart/g2TiaoXingTu/TiaoXingTu03.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue b/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue new file mode 100644 index 0000000..515f98c --- /dev/null +++ b/src/components/Chart/g2TiaoXingTu/TiaoXingTu04.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue b/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue new file mode 100644 index 0000000..63249f2 --- /dev/null +++ b/src/components/Chart/g2ZheXianTu/ZheXianTu01.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue b/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue new file mode 100644 index 0000000..b61e39c --- /dev/null +++ b/src/components/Chart/g2ZheXianTu/ZheXianTu02.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue b/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue new file mode 100644 index 0000000..34cae3a --- /dev/null +++ b/src/components/Chart/g2ZheXianTu/ZheXianTu03.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue b/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue new file mode 100644 index 0000000..18a5eb2 --- /dev/null +++ b/src/components/Chart/g2ZheXianTu/ZheXianTu04.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue new file mode 100644 index 0000000..bf8fcf3 --- /dev/null +++ b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu01.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue new file mode 100644 index 0000000..f05769b --- /dev/null +++ b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu02.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue new file mode 100644 index 0000000..128bff9 --- /dev/null +++ b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu03.vue @@ -0,0 +1,120 @@ + + + diff --git a/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue new file mode 100644 index 0000000..1222331 --- /dev/null +++ b/src/components/Chart/g2ZhuZhuangTu/ZhuZhuangTu04.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue b/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue new file mode 100644 index 0000000..08727da --- /dev/null +++ b/src/components/Chart/g2ZiDanTu/ZiDanTu01.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue b/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue new file mode 100644 index 0000000..19db78c --- /dev/null +++ b/src/components/Chart/g2ZiDanTu/ZiDanTu02.vue @@ -0,0 +1,96 @@ + + + diff --git a/src/components/ColorPicker/index.vue b/src/components/ColorPicker/index.vue new file mode 100644 index 0000000..6952228 --- /dev/null +++ b/src/components/ColorPicker/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/Cron/data.js b/src/components/Cron/data.js new file mode 100644 index 0000000..c7abcfc --- /dev/null +++ b/src/components/Cron/data.js @@ -0,0 +1,103 @@ +export const getYear = () => { + let v = [] + let y = new Date().getFullYear() + for (let i = 0; i < 11; i++) { + v.push(y + i) + } + return v +} +export const data = { + second: ['0', '5', '15', '20', '25', '30', '35', '40', '45', '50', '55', '59'], + minute: ['0', '5', '15', '20', '25', '30', '35', '40', '45', '50', '55', '59'], + hour: [ + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23' + ], + day: [ + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '10', + '11', + '12', + '13', + '14', + '15', + '16', + '17', + '18', + '19', + '20', + '21', + '22', + '23', + '24', + '25', + '26', + '27', + '28', + '29', + '30', + '31' + ], + month: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + week: [ + { + value: '0', + label: '周日' + }, + { + value: '1', + label: '周一' + }, + { + value: '2', + label: '周二' + }, + { + value: '3', + label: '周三' + }, + { + value: '4', + label: '周四' + }, + { + value: '5', + label: '周五' + }, + { + value: '6', + label: '周六' + } + ], + year: getYear() +} diff --git a/src/components/Cron/index.vue b/src/components/Cron/index.vue new file mode 100644 index 0000000..fedfc99 --- /dev/null +++ b/src/components/Cron/index.vue @@ -0,0 +1,756 @@ + + + + + diff --git a/src/components/CropUpload/index.vue b/src/components/CropUpload/index.vue new file mode 100644 index 0000000..e17bee0 --- /dev/null +++ b/src/components/CropUpload/index.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/components/DragModal/index.vue b/src/components/DragModal/index.vue new file mode 100644 index 0000000..b925aa4 --- /dev/null +++ b/src/components/DragModal/index.vue @@ -0,0 +1,318 @@ + + + diff --git a/src/components/DragModal/props.js b/src/components/DragModal/props.js new file mode 100644 index 0000000..f29069f --- /dev/null +++ b/src/components/DragModal/props.js @@ -0,0 +1,30 @@ +export default { + props: [ + 'afterClose', // Modal 完全关闭后的回调 function 无 + 'bodyStyle', // Modal body 样式 object {} + 'cancelText', // 取消按钮文字 string| slot 取消 + 'centered', // 垂直居中展示 Modal Boolean false + 'closable', // 是否显示右上角的关闭按钮 boolean true + 'closeIcon', // 自定义关闭图标 VNode | slot - 1.5.0 + 'confirmLoading', // 确定按钮 loading boolean 无 + 'destroyOnClose', // 关闭时销毁 Modal 里的子元素 boolean false + 'footer', // 底部内容,当不需要默认底部按钮时,可以设为 :footer="null" string|slot 确定取消按钮 + 'forceRender', // 强制渲染 Modal boolean false + 'getContainer', // 指定 Modal 挂载的 HTML 节点 (instance): HTMLElement () => document.body + 'keyboard', // 是否支持键盘 esc 关闭 boolean true + 'mask', // 是否展示遮罩 Boolean true + 'maskClosable', // 点击蒙层是否允许关闭 boolean true + 'maskStyle', // 遮罩样式 object {} + 'okText', // 确认按钮文字 string|slot 确定 + 'okType', // 确认按钮类型 string primary + 'okButtonProps', // ok 按钮 props, 遵循 jsx规范 {props: ButtonProps, on: {}} - + 'cancelButtonProps', // cancel 按钮 props, 遵循 jsx规范 {props: ButtonProps, on: {}} - + 'title', // 标题 string|slot 无 + // 'visible', // (v-model) 对话框是否可见 boolean 无 + // 'width', // 宽度 string|number 520 + // 'wrapClassName', // 对话框外层容器的类名 string - + 'zIndex', // 设置 Modal 的 z-index Number 1000 + 'dialogStyle', // 可用于设置浮层的样式,调整浮层位置等 object - 1.6.1 + 'dialogClass' // 可用于设置浮层的类名 string + ] +} diff --git a/src/components/Editor/README.md b/src/components/Editor/README.md new file mode 100644 index 0000000..a9fb1a6 --- /dev/null +++ b/src/components/Editor/README.md @@ -0,0 +1,15 @@ +## 富文本 + +### 说明 + +这个组件将在3.2版本移除,请及时更新使用xn-editor + +> 更新提示 +> +> 1、将 改为 +> +> 2、v-model绑定改为v-model:value +> +> 3、整体写法为: +> +> 4、移除业务内跟此组件无关的其他代码即可 diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue new file mode 100644 index 0000000..e95fd2c --- /dev/null +++ b/src/components/Editor/index.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/components/Ellipsis/index.md b/src/components/Ellipsis/index.md new file mode 100644 index 0000000..e4316bf --- /dev/null +++ b/src/components/Ellipsis/index.md @@ -0,0 +1,33 @@ +# Ellipsis 文本自动省略号 + +文本过长自动处理省略号,支持按照文本长度和最大行数两种方式截取。 + + + +引用方式: + +```javascript +import Ellipsis from '@/components/Ellipsis' +// vue3 不需要利用compoents去注册组件,引入后可直接使用 +``` + + + +## 代码演示 [demo](https://snowy.xiaonuo.vip) + +```html + + There were injuries alleged in three cases in 2015, and a + fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall. + +``` + + + +## API + + +参数 | 说明 | 类型 | 默认值 +----|------|-----|------ +tooltip | 移动到文本展示完整内容的提示 | boolean | - +length | 在按照长度截取下的文本最大字符数,超过则截取省略 | number | - diff --git a/src/components/Ellipsis/index.vue b/src/components/Ellipsis/index.vue new file mode 100644 index 0000000..4f8c64d --- /dev/null +++ b/src/components/Ellipsis/index.vue @@ -0,0 +1,48 @@ + + diff --git a/src/components/Ellipsis/util.js b/src/components/Ellipsis/util.js new file mode 100644 index 0000000..b9577bb --- /dev/null +++ b/src/components/Ellipsis/util.js @@ -0,0 +1,44 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ + +/** + * 获取字符串长度,英文字符 长度1,中文字符长度2 + * @param {*} str + */ +export const getStrFullLength = (str = '') => + str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + return pre + 1 + } + return pre + 2 + }, 0) + +/** + * 截取字符串,根据 maxLength 截取后返回 + * @param {*} str + * @param {*} maxLength + */ +export const cutStrByFullLength = (str = '', maxLength) => { + let showLength = 0 + return str.split('').reduce((pre, cur) => { + const charCode = cur.charCodeAt(0) + if (charCode >= 0 && charCode <= 128) { + showLength += 1 + } else { + showLength += 2 + } + if (showLength <= maxLength) { + return pre + cur + } + return pre + }, '') +} diff --git a/src/components/HomeCard/BizMiniMessageCard/index.vue b/src/components/HomeCard/BizMiniMessageCard/index.vue new file mode 100644 index 0000000..7301f30 --- /dev/null +++ b/src/components/HomeCard/BizMiniMessageCard/index.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/components/HomeCard/BizNoticeCard/detail.vue b/src/components/HomeCard/BizNoticeCard/detail.vue new file mode 100644 index 0000000..1285bfd --- /dev/null +++ b/src/components/HomeCard/BizNoticeCard/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/components/HomeCard/BizNoticeCard/index.vue b/src/components/HomeCard/BizNoticeCard/index.vue new file mode 100644 index 0000000..321a834 --- /dev/null +++ b/src/components/HomeCard/BizNoticeCard/index.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/components/HomeCard/BizScheduleCard/index.vue b/src/components/HomeCard/BizScheduleCard/index.vue new file mode 100644 index 0000000..8232811 --- /dev/null +++ b/src/components/HomeCard/BizScheduleCard/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/components/HomeCard/BizShortcutCard/index.vue b/src/components/HomeCard/BizShortcutCard/index.vue new file mode 100644 index 0000000..77478f5 --- /dev/null +++ b/src/components/HomeCard/BizShortcutCard/index.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/components/HomeCard/BizSlideshowCard/index.vue b/src/components/HomeCard/BizSlideshowCard/index.vue new file mode 100644 index 0000000..481ed92 --- /dev/null +++ b/src/components/HomeCard/BizSlideshowCard/index.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/src/components/HomeCard/SysBizDataCard/index.vue b/src/components/HomeCard/SysBizDataCard/index.vue new file mode 100644 index 0000000..ae65873 --- /dev/null +++ b/src/components/HomeCard/SysBizDataCard/index.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/HomeCard/SysOpDataCard/index.vue b/src/components/HomeCard/SysOpDataCard/index.vue new file mode 100644 index 0000000..8e2ba73 --- /dev/null +++ b/src/components/HomeCard/SysOpDataCard/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/components/HomeCard/SysOpLogCard/index.vue b/src/components/HomeCard/SysOpLogCard/index.vue new file mode 100644 index 0000000..a2a4174 --- /dev/null +++ b/src/components/HomeCard/SysOpLogCard/index.vue @@ -0,0 +1,58 @@ + + + + diff --git a/src/components/HomeCard/SysToolDataCard/index.vue b/src/components/HomeCard/SysToolDataCard/index.vue new file mode 100644 index 0000000..205d105 --- /dev/null +++ b/src/components/HomeCard/SysToolDataCard/index.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/HomeCard/SysUserInfoCard/index.vue b/src/components/HomeCard/SysUserInfoCard/index.vue new file mode 100644 index 0000000..cd01735 --- /dev/null +++ b/src/components/HomeCard/SysUserInfoCard/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/HomeCard/SysVisChartDataCard/index.vue b/src/components/HomeCard/SysVisChartDataCard/index.vue new file mode 100644 index 0000000..1e62eb2 --- /dev/null +++ b/src/components/HomeCard/SysVisChartDataCard/index.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/components/HomeCard/SysVisLogCard/index.vue b/src/components/HomeCard/SysVisLogCard/index.vue new file mode 100644 index 0000000..4b9db19 --- /dev/null +++ b/src/components/HomeCard/SysVisLogCard/index.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/components/Map/baiduMap/README.md b/src/components/Map/baiduMap/README.md new file mode 100644 index 0000000..3a821e0 --- /dev/null +++ b/src/components/Map/baiduMap/README.md @@ -0,0 +1,187 @@ +BMap +==== + +> 百度地图组件,常用于地图展示使用 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + +### 使用方式 + +```text +申请key +``` + +访问 [百度地图官网](https://lbsyun.baidu.com/apiconsole/center#/home) 注册账号,申请应用获得key + +```vue + + + +``` + +### Prop属性 + +| 名称 | 说明 | 类型 | 默认值 | +|---------------|------------|--------|----------| +| mid | 容器ID | String | 时间戳 | +| height | 容器高度 | Number | 800,单位px | +| apiKey | 地图Key | String | | +| center | 地图中心点 | String | 自动定位 | +| plugins | 地图控件 | Array | | +| viewMode | 效果:2D,3D | String | 3D | +| rotationAngle | 旋转角度 | Number | 60 | +| tiltAngle | 倾斜角度 | Number | 70 | +| zoom | 地图缩放比例 | Number | 12 | +| mapStyle | 地图样式:个性化地图 | String | | + +#### 地图控件 + +- BMap.ScaleControl:比例尺 +- BMap.ZoomControl:缩放 +- BMap.LocationControl:定位 +- BMap.NavigationControl3D:3D控件 + +### 事件 + +| 名称 | 说明 | 参数 | 参数类型 | +|-------------|---------------|----------|-------| +| complete | 当地图初始化完成时触发 | - | - | +| markerClick | 当点击了点覆盖物时触发 | position | Array | + +### 方法 + +| 名称 | 说明 | 参数 | 参数类型 | +|----------------------|-----------|------------------------|-------------------| +| renderMarker | 渲染 点标记 | dataArr | Array | +| renderIconMarker | 渲染 图标标记 | dataArr | Array | +| render3DCircleMarker | 渲染 3D圆点标记 | dataArr | Array | +| render3DIconMarker | 渲染 3D图标标记 | dataArr | Array | +| renderPolyline | 渲染 线 | dataArr,option | Array,JSON | +| renderCircle | 渲染 圆 | position,radius,option | Array,Number,JSON | +| renderPolygon | 渲染 面 | dataArr,option | Array,JSON | +| renderInfoWindow | 渲染 信息窗体 | dataArr | Array | +| openInfoWindow | 打开 信息窗体 | position | Array | +| clearOverlay | 清理 覆盖物 | | | + +### 方法参数```dataArr```结构 + +> 点标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示" +}] +``` + +> 图标标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示", + "img": "图片地址", + "imgWidth": "图片宽度,默认40", + "imgHeight": "图片高度,默认40" +}] +``` + +> 3D圆点标记 + +```json +[{ + "position": "坐标数组", + "height": "高度,默认8000", + "size": "大小,默认50", + "fillColor": "填充颜色,默认#006600" +}] +``` + +> 3D图标标记 + +```json +[{ + "position": "坐标数组", + "height": "高度,默认8000", + "size": "大小,默认50", + "img": "图片地址", + "imgWidth": "图片宽度,默认40", + "imgHeight": "图片高度,默认40" +}] +``` + +> 线、面 + +```json +[{ + "position": "坐标数组" +}] +``` + +> 信息窗体 + +```json +[{ + "position": "坐标数组", + "title": "标题", + "content": "内容,文本数组,会以换行进行连接", + "width": "窗体宽度", + "height": "窗体高度" +}] +``` + +### 方法参数```option```结构 + +> 线、圆 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5" +} +``` + +> 面 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "fillColor": "填充颜色,默认blue", + "fllOpacity": "填充透明度,默认0.5" +} +``` diff --git a/src/components/Map/baiduMap/index.vue b/src/components/Map/baiduMap/index.vue new file mode 100644 index 0000000..d327dd8 --- /dev/null +++ b/src/components/Map/baiduMap/index.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/src/components/Map/gaodeMap/README.md b/src/components/Map/gaodeMap/README.md new file mode 100644 index 0000000..4ab6d00 --- /dev/null +++ b/src/components/Map/gaodeMap/README.md @@ -0,0 +1,205 @@ +AMap +==== + +> 高德地图组件,常用于地图展示使用 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + +### 使用方式 + +```text +申请key +``` + +访问 [高德地图官网](https://console.amap.com/dev/index) 注册账号,申请应用获得key + +```vue + + + + +``` + +### Prop属性 + +| 名称 | 说明 | 类型 | 默认值 | +|---------------|-------------------|----------|-----------| +| mid | 容器ID | String | 时间戳 | +| height | 容器高度 | Number | 800,单位px | +| apiKey | 地图Key | String | | +| center | 地图中心点 | String | 自动定位 | +| plugins | 地图控件 | Array | | +| viewMode | 效果:2D,3D | String | 3D | +| zoom | 地图缩放比例 | Number | 12 | +| pitch | 地图俯仰角度,有效范围 0-83 | String | 50 | +| mapStyle | 地图样式 | String | normal | +| markerCluster | 点聚合 | Boolean | true | + +#### 地图控件 + +- AMap.ToolBar:缩放工具条 +- AMap.Scale:比例尺 +- AMap.HawkEye:鹰眼 +- AMap.MapType:图层切换 +- AMap.Geolocation:定位 +- AMap.MarkerCluster:点聚合 + +#### 地图样式 + +- normal +- macaron +- dark +- fresh +- grey + +### 事件 + +| 名称 | 说明 | 参数 | 参数类型 | +|-------------|---------------|----------|-------| +| complete | 当地图初始化完成时触发 | - | - | +| markerClick | 当点击了点覆盖物时触发 | position | Array | + +### 方法 + +| 名称 | 说明 | 参数 | 参数类型 | +|---------------------|----------|---------------------|-------------------| +| renderMarker | 渲染 点标记 | dataArr | Array | +| renderCircleMarker | 渲染 圆点标记 | dataArr | Array | +| renderSimpleMarker | 渲染 简单点标记 | dataArr, theme | Array, String | +| renderAwesomeMarker | 渲染 字体点标记 | dataArr | Array | +| renderPolyline | 渲染 线 | dataArr,opt | Array,JSON | +| renderCircle | 渲染 圆 | position,radius,opt | Array,Number,JSON | +| renderPolygon | 渲染 面 | dataArr,opt | Array,JSON | +| renderInfoWindow | 渲染 信息窗体 | dataArr | Array | +| openInfoWindow | 打开 信息窗体 | position | Array | +| clearOverlay | 清理 覆盖物 | | | + +### 方法参数```dataArr```结构 + +> 点标记 + +```json +[{ + "position": "坐标数组", + "title": "鼠标滑过点标记时的文字提示", + "content": "显示内容,content有效时,icon属性将被覆盖", + "icon": "图标", + "label": { + "content": "文本标注" + } +}] +``` + +> 圆点标记 + +```json +[{ + "position": "坐标数组,圆心位置", + "radius": "圆点半径", + "strokeColor": "线条颜色,默认#006600", + "fillColor": "填充颜色,默认#006600" +}] +``` + +> 简单点标记 + +```json +[{ + "position": "坐标数组", + "label": "前景文字", + "labelStyle": { + "color": "颜色", + "fontSize": "字体大小" + }, + "style": "背景图标样式" +}] +``` + +> 字体点标记 + +```json +[{ + "position": "坐标数组", + "awesomeIcon": "图标,参见:http://fontawesome.io/icons/", + "labelStyle": { + "color": "颜色", + "fontSize": "字体大小" + }, + "style": "背景图标样式" +}] +``` + +> 线、面 + +```json +[{ + "position": "坐标数组" +}] +``` + +> 信息窗体 + +```json +[{ + "position": "坐标数组", + "content": "显示内容,文本数组,会以换行进行连接" +}] +``` + +### 方法参数```opt```结构 + +> 线 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "isOutline": "是否显示描边,默认false", + "borderWeight": "描边宽度,默认1" +} +``` + +> 圆、面 + +```json +{ + "strokeColor": "边线颜色,默认blue", + "strokeWeight": "边线宽度,默认2", + "strokeOpacity": "边线透明度,默认0.5", + "fillColor": "填充颜色,默认blue", + "fllOpacity": "填充透明度,默认0.5" +} +``` diff --git a/src/components/Map/gaodeMap/index.vue b/src/components/Map/gaodeMap/index.vue new file mode 100644 index 0000000..b95597b --- /dev/null +++ b/src/components/Map/gaodeMap/index.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/components/NumberInfo/NumberInfo.vue b/src/components/NumberInfo/NumberInfo.vue new file mode 100644 index 0000000..a524626 --- /dev/null +++ b/src/components/NumberInfo/NumberInfo.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/NumberInfo/index.less b/src/components/NumberInfo/index.less new file mode 100644 index 0000000..18233ae --- /dev/null +++ b/src/components/NumberInfo/index.less @@ -0,0 +1,55 @@ +@import "../index.less"; + +@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info"; + +.@{numberInfo-prefix-cls} { + + .ant-pro-number-info-subtitle { + color: @text-color-secondary; + font-size: @font-size-base; + height: 22px; + line-height: 22px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + } + + .number-info-value { + margin-top: 4px; + font-size: 0; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + + & > span { + color: @heading-color; + display: inline-block; + line-height: 32px; + height: 32px; + font-size: 24px; + margin-right: 32px; + } + + .sub-total { + color: @text-color-secondary; + font-size: @font-size-lg; + vertical-align: top; + margin-right: 0; + i { + font-size: 12px; + transform: scale(0.82); + margin-left: 4px; + } + // :global { + // .anticon-caret-up { + // color: @red-6; + // } + // .anticon-caret-down { + // color: @green-6; + // } + // } + } + } +} \ No newline at end of file diff --git a/src/components/Selector/iconMobileSelector.vue b/src/components/Selector/iconMobileSelector.vue new file mode 100644 index 0000000..9e78944 --- /dev/null +++ b/src/components/Selector/iconMobileSelector.vue @@ -0,0 +1,145 @@ + + + + diff --git a/src/components/Selector/iconSelector.vue b/src/components/Selector/iconSelector.vue new file mode 100644 index 0000000..3a88994 --- /dev/null +++ b/src/components/Selector/iconSelector.vue @@ -0,0 +1,161 @@ + + + + diff --git a/src/components/Selector/iconSelector_README.md b/src/components/Selector/iconSelector_README.md new file mode 100644 index 0000000..265ecfa --- /dev/null +++ b/src/components/Selector/iconSelector_README.md @@ -0,0 +1,48 @@ +iconSelector +==== + +> 图标选择组件,常用于为某一个数据设定一个图标时使用 +> eg: 设定菜单列表时,为每个菜单设定一个图标 + +该组件由 [小诺开源技术](https://www.xiaonuo.vip) 封装 + + + +### 使用方式 + +```vue + + + +``` + + + +### 事件 + +| 名称 | 说明 | 类型 | 默认值 | +| ------------ | -------------------------- | ------ | ------ | +| iconCallBack | 当改变了 `icon` 选中项触发 | String | - | + +### 方法 + +| 名称 | 说明 | 类型 | 默认值 | +| --------- | --------------------------------------- | ------ | ------ | +| showIconModal | 打开选择器Model触发,携带图标时默认选中 | String | - | diff --git a/src/components/Selector/orgSelectorPlus.vue b/src/components/Selector/orgSelectorPlus.vue new file mode 100644 index 0000000..fb512cf --- /dev/null +++ b/src/components/Selector/orgSelectorPlus.vue @@ -0,0 +1,400 @@ + + + + + diff --git a/src/components/Selector/posSelectorPlus.vue b/src/components/Selector/posSelectorPlus.vue new file mode 100644 index 0000000..8a695e5 --- /dev/null +++ b/src/components/Selector/posSelectorPlus.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/src/components/Selector/roleSelectorPlus.vue b/src/components/Selector/roleSelectorPlus.vue new file mode 100644 index 0000000..31d5c25 --- /dev/null +++ b/src/components/Selector/roleSelectorPlus.vue @@ -0,0 +1,448 @@ + + + + + diff --git a/src/components/Selector/userSelectorPlus.vue b/src/components/Selector/userSelectorPlus.vue new file mode 100644 index 0000000..a000738 --- /dev/null +++ b/src/components/Selector/userSelectorPlus.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/src/components/ShortcutCard/index.vue b/src/components/ShortcutCard/index.vue new file mode 100644 index 0000000..c3ab6b1 --- /dev/null +++ b/src/components/ShortcutCard/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/Table/README.md b/src/components/Table/README.md new file mode 100644 index 0000000..94d51e1 --- /dev/null +++ b/src/components/Table/README.md @@ -0,0 +1,375 @@ +Table 重封装组件说明 +==== + + +封装说明 +---- + +> 基础的使用方式与 API 与 [官方版(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 本一致,在其基础上,封装了加载数据的方法。 +> +> 你无需在你是用表格的页面进行分页逻辑处理,仅需向 Table 组件传递绑定 `:data="Promise"` 对象即可 + +该 `table` 由 [@Saraka](https://github.com/saraka-tsukai) 完成封装 + +由 `小诺技术团队` 完成Vue3升级并二次封装改进 + +例子1 +---- +(基础使用) + +```vue + + + + +``` + + + +例子2 +---- + +(简单的表格,最后一列是各种操作) + +```vue + + + +``` + + + +内置方法 +---- + +通过 `声明的ref去调用 ==> tableRef.value` 调用 + +`tableRef.value.refresh(true)` 刷新列表 (用户新增/修改数据后,重载列表数据) + +> 注意:要调用 `refresh(bool)` 需要给表格组件设定 `ref` 值 +> +> `refresh()` 方法可以传一个 `bool` 值,当有传值 或值为 `true` 时,则刷新时会强制刷新到第一页(常用户页面 搜索 按钮进行搜索时,结果从第一页开始分页) + + +内置属性 +---- +> 除去 `a-table` 自带属性外,还而外提供了一些额外属性属性 + + +| 属性 | 说明 | 类型 | 默认值 | +| -------------- | ----------------------------------------------- | ----------------- | ------ | +| alert | 设置是否显示表格信息栏 | [object, boolean] | null | +| showPagination | 显示分页选择器,可传 'auto' \| boolean | [string, boolean] | 'auto' | +| data | 加载数据方法 必须为 `Promise` 对象 **必须绑定** | Promise | - | +| lineSelection | 是否开启点击行高亮显示并选中 | Boolean | 'false' | + + +`alert` 属性对象: + +```javascript +alert: { + show: Boolean, + clear: [Function, Boolean] +} +``` + +注意事项 +---- + +> 你可能需要为了与后端提供的接口返回结果一致而去修改以下代码: +> (需要注意的是,这里的修改是全局性的,意味着整个项目所有使用该 table 组件都需要遵守这个返回结果定义的字段。) +> +> 文档中的结构有可能由于组件 bug 进行修正而改动。实际修改请以当时最新版本为准 + +修改 `@/components/table/index.js` 第 348 行起 + + + +```javascript +const data = reactive({ + needTotalList: [], + localLoading: false, + localDataSource: [], + localPagination: Object.assign({}, props.pagination), + isFullscreen: false, + customSize: props.compSize, + columnsSetting: [], + localSettings: { + rowClassName: props.rowClassName, + rowClassNameSwitch: Boolean(props.rowClassName) + } + }) + +// 这里的 data.xxx 是之前声明的 +// 在 loadData() 方法中去获取后端数据,进行一个数据的加载更新 +result.then((r) => { + if (r == null) { + data.localLoading = false + return + } + // 获取分页数据及分页的显示内容 + data.localPagination = + (props.showPagination && + Object.assign({}, data.localPagination, { + current: r.current, // pageNo, // 返回结果中的当前分页数 + total: r.total, // totalRows, // 返回结果中的总记录数 + showSizeChanger: props.showSizeChanger, + pageSizeOptions: props.pageSizeOptions, + showTotal: (total, range) => { + return `${range[0]}-${range[1]} 共 ${total} 条 ` + }, + pageSize: (pagination && pagination.pageSize) || data.localPagination.pageSize + })) || + false + + // 后端数据records为null保存修复 + if (r.records == null) { + r.records = [] + } + + // 为防止删除数据后导致页面当前页面数据长度为 0 ,自动翻页到上一页 + if (r.records.length === 0 && props.showPagination && data.localPagination.current > 1) { + data.localPagination.current-- + loadData() + return + } + + try { + // 当情况满足时,表示数据不满足分页大小,关闭 table 分页功能 + // 没有数据或只有一页数据时隐藏分页栏 + // if ((['auto', true].includes(props.showPagination) && r.total <= (r.pages * data.localPagination.pageSize))) { + // data.localPagination.hideOnSinglePage = true + // } + if (!props.showPagination) { + data.localPagination.hideOnSinglePage = true + } + } catch (e) { + data.localPagination = false + } + + // if (props.showPagination === false) { + // // 既然配置了不分页,那么我们这里接收到肯定是数组 + // console.log(r); + // data.localDataSource = [] + // if (r instanceof Array) { + // data.localDataSource = r + // } + // } else { + // data.localDataSource = r.records + // } + + // 返回结果中的数组数据 + data.localDataSource = r.records + data.localLoading = false + getTableProps() + }) +``` +返回 JSON 例子: +```json +{ + "message": "", + "result": { + "data": [{ + id: 1, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', + title: 'Alipay', + description: '那是一种内在的东西, 他们到达不了,也无法触及的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 2, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', + title: 'Angular', + description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 3, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', + title: 'Ant Design', + description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 4, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', + title: 'Snowy', + description: '那时候我只会想自己想要什么,从不想自己拥有什么', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 5, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', + title: 'Bootstrap', + description: '凛冬将至', + status: 1, + updatedAt: '2018-07-26 00:00:00' + }, + { + id: 6, + cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', + title: 'Vue', + description: '生命就像一盒巧克力,结果往往出人意料', + status: 1, + updatedAt: '2018-07-26 00:00:00' + } + ], + "pageSize": 10, + "pageNo": 0, + "totalPage": 6, + "totalCount": 57 + }, + "status": 200, + "timestamp": 1534955098193 +} +``` + + + +更新时间 +---- + +该文档最后更新于: 2023-12-27 PM 16:45 diff --git a/src/components/Table/columnSetting.vue b/src/components/Table/columnSetting.vue new file mode 100644 index 0000000..3dbd5f0 --- /dev/null +++ b/src/components/Table/columnSetting.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/components/Table/index.vue b/src/components/Table/index.vue new file mode 100644 index 0000000..aa481fb --- /dev/null +++ b/src/components/Table/index.vue @@ -0,0 +1,591 @@ + + + diff --git a/src/components/TreeSelect/menuTreeSelect.vue b/src/components/TreeSelect/menuTreeSelect.vue new file mode 100644 index 0000000..a07098f --- /dev/null +++ b/src/components/TreeSelect/menuTreeSelect.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/components/Trend/Trend.vue b/src/components/Trend/Trend.vue new file mode 100644 index 0000000..c70fa98 --- /dev/null +++ b/src/components/Trend/Trend.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/components/Trend/index.less b/src/components/Trend/index.less new file mode 100644 index 0000000..8a3d24c --- /dev/null +++ b/src/components/Trend/index.less @@ -0,0 +1,42 @@ +@import "../index"; + +@trend-prefix-cls: ~"@{ant-pro-prefix}-trend"; + +.@{trend-prefix-cls} { + display: inline-block; + font-size: @font-size-base; + line-height: 22px; + + .up, + .down { + margin-left: 4px; + position: relative; + top: 1px; + + i { + font-size: 12px; + transform: scale(0.83); + } + } + + .item-text { + display: inline-block; + margin-left: 8px; + color: rgba(0,0,0,.85); + } + + .up { + color: @red-6; + } + .down { + color: @green-6; + top: -1px; + } + + &.reverse-color .up { + color: @green-6; + } + &.reverse-color .down { + color: @red-6; + } +} \ No newline at end of file diff --git a/src/components/XnBatchButton/index.vue b/src/components/XnBatchButton/index.vue new file mode 100644 index 0000000..1fa17b8 --- /dev/null +++ b/src/components/XnBatchButton/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/components/XnBatchDelete/index.vue b/src/components/XnBatchDelete/index.vue new file mode 100644 index 0000000..f4023ef --- /dev/null +++ b/src/components/XnBatchDelete/index.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/XnCardList/README.md b/src/components/XnCardList/README.md new file mode 100644 index 0000000..e1b17a1 --- /dev/null +++ b/src/components/XnCardList/README.md @@ -0,0 +1,62 @@ +# 小诺卡片列表的组件 + +## 说明 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|------------|---------|--------|------------------------| +| 1 | grid | Object | grid布局 | 见:and-design定义(Grid栅格) | +| 2 | dataSource | Array | 数据源 | 见:dataSource字段定义 | +| 3 | page | Object | 分页 | 见:page字段定义 | +| 4 | actions | Array | 操作数组 | 见:action字段定义 | +| 5 | loading | Boolean | 加载中提示 | - | + +> dataSource字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|----------|--------|-----------------|---------------| +| 1 | title | String | 标题 | 设备编码 | +| 2 | subTitle | String | 副标题 | 设备名称 | +| 3 | img | String | 图片 | | +| 4 | contents | Array | 内容 | 见:content字段定义 | +| 5 | badge | Object | 徽标 | 见:badge字段定义 | +| 6 | record | Object | 数据记录,emit触发回调参数 | | + +> content字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|------| +| 1 | label | String | 标签 | 所属产品 | +| 2 | value | Object | 值 | 透传 | + +> badge字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|------------------------| +| 1 | text | String | 标签 | 所属产品 | +| 2 | color | String | 颜色 | 见:ant-design定义(预设、自定义) | + +> action字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|---------| +| 1 | key | String | 键 | setting | +| 2 | label | String | 标签 | 所属产品 | +| 3 | icon | String | 图标 | setting | +| 4 | color | String | 颜色 | red | + +> page字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|------|----| +| 1 | current | Number | 当前页 | 1 | +| 2 | size | Number | 每页大小 | 6 | +| 3 | total | Number | 总数 | 0 | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 参数示例 | +|----|-------------|--------|-----------------------------| +| 1 | action | Object | {key: 'edit', record:{...}} | +| 2 | page-change | Number | 1 | diff --git a/src/components/XnCardList/index.vue b/src/components/XnCardList/index.vue new file mode 100644 index 0000000..44844c5 --- /dev/null +++ b/src/components/XnCardList/index.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/src/components/XnContextMenu/index.vue b/src/components/XnContextMenu/index.vue new file mode 100644 index 0000000..3264afc --- /dev/null +++ b/src/components/XnContextMenu/index.vue @@ -0,0 +1,82 @@ + + diff --git a/src/components/XnDataList/README.md b/src/components/XnDataList/README.md new file mode 100644 index 0000000..e016364 --- /dev/null +++ b/src/components/XnDataList/README.md @@ -0,0 +1,67 @@ +# 小诺数据列表的组件 + +## 说明 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|------------|---------|-------|------------------| +| 1 | dataSource | Array | 数据源 | 见:dataSource字段定义 | +| 2 | page | Object | 分页 | 见:page字段定义 | +| 3 | actions | Array | 操作数组 | 见:action字段定义 | +| 4 | loading | Boolean | 加载中提示 | - | + +> dataSource字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|--------------|--------|-----------------|-------------------| +| 1 | title | String | 标题 | 设备编码 | +| 2 | descriptions | Array | 描述 | 见:description字段定义 | +| 3 | contents | Array | 内容 | 见:content字段定义 | +| 4 | record | Object | 数据记录,emit触发回调参数 | | + +> description字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|----|------| +| 1 | title | String | 标题 | 设备名称 | +| 2 | content | Object | 内容 | 测试设备 | + +> content字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|----|---------------------| +| 1 | title | String | 标题 | 数据更新时间 | +| 2 | content | Object | 内容 | 2023-11-14 09:00:00 | + +> action字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|-------|--------|----|---------| +| 1 | key | String | 键 | setting | +| 2 | label | String | 标签 | 所属产品 | +| 3 | icon | String | 图标 | setting | +| 4 | color | String | 颜色 | red | + +> page字段定义 + +| 序号 | 编码 | 类型 | 说明 | 示例 | +|----|---------|--------|------|----| +| 1 | current | Number | 当前页 | 1 | +| 2 | size | Number | 每页大小 | 6 | +| 3 | total | Number | 总数 | 0 | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 参数示例 | +|----|-------------|--------|-----------------------------| +| 1 | title | Object | {record: {...}} | +| 1 | action | Object | {key: 'edit', record:{...}} | +| 2 | page-change | Number | 1 | + +### slots定义 + +| 序号 | 名称 | 说明 | 示例 | +|----|--------------|--------|----| +| 1 | title-prefix | 标题前缀插槽 | - | +| 2 | title-suffix | 内容后缀插槽 | - | diff --git a/src/components/XnDataList/index.vue b/src/components/XnDataList/index.vue new file mode 100644 index 0000000..07beb9a --- /dev/null +++ b/src/components/XnDataList/index.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/components/XnEditor/index.vue b/src/components/XnEditor/index.vue new file mode 100644 index 0000000..f04a984 --- /dev/null +++ b/src/components/XnEditor/index.vue @@ -0,0 +1,125 @@ + + + + diff --git a/src/components/XnFilePreview/README.md b/src/components/XnFilePreview/README.md new file mode 100644 index 0000000..0e82169 --- /dev/null +++ b/src/components/XnFilePreview/README.md @@ -0,0 +1,9 @@ +# 小诺文件预览的组件 + +## 说明 + +该组件支持图片、PDF、OFFICE、WORD在线预览,其他类型的不支持 + +## 使用 + +使用的时候直接在界面引入即可,配置相关参数就能行 diff --git a/src/components/XnFilePreview/index.vue b/src/components/XnFilePreview/index.vue new file mode 100644 index 0000000..f8af5d4 --- /dev/null +++ b/src/components/XnFilePreview/index.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/XnFormContainer/index.vue b/src/components/XnFormContainer/index.vue new file mode 100644 index 0000000..ef29a45 --- /dev/null +++ b/src/components/XnFormContainer/index.vue @@ -0,0 +1,49 @@ + + + + diff --git a/src/components/XnHighlightjs/index.vue b/src/components/XnHighlightjs/index.vue new file mode 100644 index 0000000..33d44fa --- /dev/null +++ b/src/components/XnHighlightjs/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/XnOrgSelector/README.md b/src/components/XnOrgSelector/README.md new file mode 100644 index 0000000..47d6aa0 --- /dev/null +++ b/src/components/XnOrgSelector/README.md @@ -0,0 +1,36 @@ +## 小诺机构选择器 + +### 说明 + +改组件为小诺机构选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|-------------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | orgPageApi | function | 机构分页接口 | - | +| 5 | orgListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择机构(非表单内、单纯的选择机构需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择机构后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除机构 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在机构新增按钮后可以插入自定义按钮 | 不满足新增机构按钮样式,可以自定义 | diff --git a/src/components/XnOrgSelector/index.vue b/src/components/XnOrgSelector/index.vue new file mode 100644 index 0000000..c5df64e --- /dev/null +++ b/src/components/XnOrgSelector/index.vue @@ -0,0 +1,579 @@ + + + + diff --git a/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif b/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif new file mode 100644 index 0000000..be20102 Binary files /dev/null and b/src/components/XnPageSelect/README.assets/分页下拉查询展示.gif differ diff --git a/src/components/XnPageSelect/README.md b/src/components/XnPageSelect/README.md new file mode 100644 index 0000000..7c45cf2 --- /dev/null +++ b/src/components/XnPageSelect/README.md @@ -0,0 +1,192 @@ +XnPageSelect 分页下拉选择器 +==== + + +封装说明 +---- + +> 基础的使用方式与 API 与 [官方版(Select)](https://www.antdv.com/components/select-cn/) 本一致,在其基础上,封装了加载数据的方法。(调用后端分页接口,懒加载的效果查询下拉数据) +> +> @zhanggengbi在此基础上完善了功能:下拉查询同时支持搜索框搜索--调用后端数据搜索。 + +例子1 +---- +(基础使用) + +```vue + + + + +``` + + + +例子2 +---- + +(支持搜索框搜索--调用后端数据搜索) + +```vue + + + +``` + +![分页下拉查询展示](.\README.assets\分页下拉查询展示.gif) + +内置方法 +---- + + +| 方法 | 说明 | 参数类型 | 参数示例 | +| ------ | ------------ | -------- | ------------ | +| onPage | 请求分页数据 | Object | {current: 1} | + + +内置属性 +---- +> 除去 `a-select` 自带属性外,还而外提供了一些额外属性属性 + + +| 属性 | 说明 | 类型 | 默认值 | +| ------------- | ------------------------------------------- | ------- | ------ | +| pageFunction | 分页函数 必须为 `Promise` 对象 **必须绑定** | Promise | - | +| pageSize | 分页条数 | Number | 10 | +| showSearch | 配置是否可搜索 | Boolean | false | +| searchKeyName | 搜索字段属性名 | String | '' | + +注意事项 +---- + +> 分页函数,返回的Promise对象的data数据是分页格式的数据 +> +> data.records格式如下:{ name: name, id: id } id最后是你的value,name是你的显示名称 + +如果返回的数据data.records格式命名不对,可以重新封装一下 + +```javascript +// 示例重新封装一下data.records +const selectApiFunction = { + customerSelector: (param) => { + return customerInfoApi.customerPage(Object.assign(param, {envFlag: searchFormState.value.envFlag})).then((data) => { + if (data.records){ + data.records = data.records.map((item) => { + return { + name: item.customerName, + id: item.customerInfoId, + }; + }); + } + return Promise.resolve(data) + }) + } +} +``` +更新时间 +---- + +该文档最后更新于: 2024-06-28 PM 16:45 diff --git a/src/components/XnPageSelect/index.vue b/src/components/XnPageSelect/index.vue new file mode 100644 index 0000000..ba8ff4a --- /dev/null +++ b/src/components/XnPageSelect/index.vue @@ -0,0 +1,172 @@ + + + diff --git a/src/components/XnPositionSelector/README.md b/src/components/XnPositionSelector/README.md new file mode 100644 index 0000000..2964be3 --- /dev/null +++ b/src/components/XnPositionSelector/README.md @@ -0,0 +1,36 @@ +## 小诺职位选择器 + +### 说明 + +改组件为小诺职位选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | positionPageApi | function | 职位分页接口 | - | +| 5 | positionListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择职位(非表单内、单纯的选择职位需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择职位后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除职位 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在职位新增按钮后可以插入自定义按钮 | 不满足新增职位按钮样式,可以自定义 | diff --git a/src/components/XnPositionSelector/index.vue b/src/components/XnPositionSelector/index.vue new file mode 100644 index 0000000..81aa587 --- /dev/null +++ b/src/components/XnPositionSelector/index.vue @@ -0,0 +1,579 @@ + + + + diff --git a/src/components/XnRoleSelector/README.md b/src/components/XnRoleSelector/README.md new file mode 100644 index 0000000..0b26be8 --- /dev/null +++ b/src/components/XnRoleSelector/README.md @@ -0,0 +1,36 @@ +## 小诺角色选择器 + +### 说明 + +改组件为小诺角色选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年7月5日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | rolePageApi | function | 角色分页接口 | - | +| 5 | roleListByIdListApi | function | 通过id数组查询list数据接口 | 已配置 | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | show | Boolean | 是否显示已选择角色(非表单内、单纯的选择角色需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择角色后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除角色 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在角色新增按钮后可以插入自定义按钮 | 不满足新增角色按钮样式,可以自定义 | diff --git a/src/components/XnRoleSelector/index.vue b/src/components/XnRoleSelector/index.vue new file mode 100644 index 0000000..86c5527 --- /dev/null +++ b/src/components/XnRoleSelector/index.vue @@ -0,0 +1,607 @@ + + + + diff --git a/src/components/XnSignName/README.md b/src/components/XnSignName/README.md new file mode 100644 index 0000000..36b3522 --- /dev/null +++ b/src/components/XnSignName/README.md @@ -0,0 +1,117 @@ +# vue-esign + +https://github.com/JaimeCheng/vue-esign#readme + +> Canvas 手写签字 电子签名 +![npm](https://img.shields.io/npm/dm/vue-esign) ![GitHub package.json version](https://img.shields.io/github/package-json/v/jaimecheng/vue-esign) + +## 时隔三年的更新!!支持vue3 +- **支持vue3!!!!更新依赖后,仅`bgColor`原来的`.sync`修饰符需改为vue3写法`v-model:bgColor`**; +- 新增属性 `isClearBgColor`,默认值`true`, 清空画布时(reset)是否同时清空设置的背景色(bgColor) ; +- 直接`npm install vue-esign@latest --save`即可,对vue2版本无任何影响; +## 功能 +1. 兼容 PC 和 Mobile; +2. 画布自适应屏幕大小变化(窗口缩放、屏幕旋转时画布无需重置,自动校正坐标); +3. 自定义画布尺寸(导出图尺寸),画笔粗细、颜色,画布背景色; +4. 支持裁剪 (针对需求:有的签字需要裁剪掉四周空白)。 +5. 导出图片格式为 `base64`; +6. [示例demo](https://jaimecheng.github.io/vue-esign/demo/) + +## 安装 + +``` bash +npm install vue-esign --save +``` + +## 使用 +1. 全局使用 、局部 +```js +// 全局 vue2 main.js +import vueEsign from 'vue-esign' +Vue.use(vueEsign) +// 全局vue3 main.js +import { createApp } from 'vue' +import App from './App.vue' +import vueEsign from 'vue-esign' +const app = createApp(App) +app.use(vueEsign) +// 局部 +import vueEsign from 'vue-esign' +// vue3 中只需需引入组件就可以使用无需注册 +``` +2. 页面中使用 + // 在组件中使用 ref="esign" + **在script中必须设置 `const esign = ref()` ,用来调用组件的两个内置方法 `reset()` 和 `generate()`** + + 无需给组件设置 `style` 的宽高,如果画布的 `width`属性值没超出父元素的样式宽度,则该组件的样式宽度就是画布宽度,超出的话,组件样式宽度则是父元素的100%; 所以只需设置好父元素的宽度即可; +```html + + + + + + +预览 +清屏 +``` + +```vue + +3. 说明 + +| 属性 | 类型 | 默认值 | 说明 | +| :-: | :-- | :-: | :-- | +| width | Number | 800 | 画布宽度,即导出图片的宽度 | +| height | Number | 300 | 画布高度,即导出图片的高度 | +| lineWidth | 4 | Number | 画笔粗细 | +| lineColor | String | #000000 | 画笔颜色 | +| bgColor | String | 空 | 画布背景色,为空时画布背景透明,
支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red' | +| isCrop | Boolean | false | 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分 | +| isClearBgColor | Boolean | true | 清空画布时(reset)是否同时清空设置的背景色(bgColor) | +| format | String | image/png | 生成图片格式 image/jpeg(jpg格式下生成的图片透明背景会变黑色请慎用或指定背景色)、 image/webp | +| quality | Number | 1 | 生成图片质量;在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。 | + +两个内置方法,通过给组件设置 `ref` 调用: + +**清空画布** +```js +esign.value.reset() +``` + +**生成图片** + +```js +// 可选配置参数 ,在未设置format或quality属性时可在生成图片时配置 例如: {format:'image/jpeg', quality: 0.5} +// this.$refs.esign.generate({format:'image/jpeg', quality: 0.5}) +esign.value.generate().then(res => { + console.log(res) // base64图片 +}).catch(err => { + alert(err) // 画布没有签字时会执行这里 'Not Signned' +}) +``` + +![](./static/demo.gif) diff --git a/src/components/XnSignName/index.vue b/src/components/XnSignName/index.vue new file mode 100644 index 0000000..01e2b2a --- /dev/null +++ b/src/components/XnSignName/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/components/XnSignName/vueEsign.vue b/src/components/XnSignName/vueEsign.vue new file mode 100644 index 0000000..db0d292 --- /dev/null +++ b/src/components/XnSignName/vueEsign.vue @@ -0,0 +1,297 @@ + + + + diff --git a/src/components/XnUpload/README.md b/src/components/XnUpload/README.md new file mode 100644 index 0000000..d424653 --- /dev/null +++ b/src/components/XnUpload/README.md @@ -0,0 +1,39 @@ +## 小诺文件上传 + +### 说明 + +改组件为文件上传、支持单个、多个文件;返回id、返回数组、返回所有 + +@author yubaoshan + +@data 2024年5月27日09:15:17 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------------|---------|---------------------------------------------------------------------------------------------|----------------------------------| +| 1 | uploadReturnIdApi | String | 上传返回id接口地址 | /dev/file/uploadLocalReturnId | +| 2 | uploadDynamicReturnUrlApi | String | 上传返回url接口地址 | /dev/file/uploadDynamicReturnUrl | +| 3 | uploadIdDownloadUrl | String | 当上传接口为id的情况下,配置下载接口 | /dev/file/download?id= | +| 4 | uploadMode | String | 上传样式或图片方式 file、drag、image | file | +| 5 | uploadNumber | Number | 上传数量 | 1 | +| 6 | uploadText | String | 上传文字 | 上传 | +| 7 | uploadResultType | String | 上传返回分类 字符串逗号隔离或数组 interval、array | interval | +| 8 | showUploadList | Boolean | 跟antdv官方一样,是否显示文件列表 | true | +| 9 | accept | String | 跟antdv官方一样,接受上传的文件类型,如果uploadMode配置了image类型,上传的必须是图片,该参数也只能配置图片的某一项或多项,具体百度查看文件上传accept类型配置 | - | +| 10 | completeResult | Boolean | 是否是完整的结果(就是文件上传返回什么,该组件返回什么,uploadResultCategory必须为array) | false | +| 11 | value | String, Array | 父组件传来的参数,通过v-model:value绑定 | - | + + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|---------------------------------------|-----------------------------| +| 1 | value | 根据uploadResultType、completeResult 而定 | 当选择用户后通过v-model:value绑定到组件上 | +| 2 | onChange | 根据uploadResultType、completeResult 而定 | 通过@onChange 方法返回上传的数据 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | +|----|--------|-------------| +| 1 | explain | 主要用于一些提示性文字 | diff --git a/src/components/XnUpload/index.vue b/src/components/XnUpload/index.vue new file mode 100644 index 0000000..a30a932 --- /dev/null +++ b/src/components/XnUpload/index.vue @@ -0,0 +1,359 @@ + + + diff --git a/src/components/XnUserSelector/README.md b/src/components/XnUserSelector/README.md new file mode 100644 index 0000000..d62d4bf --- /dev/null +++ b/src/components/XnUserSelector/README.md @@ -0,0 +1,36 @@ +## 小诺人员选择器 + +### 说明 + +改组件为小诺人员选择器,可返回id用逗号隔离的字符串或id数组类型的数据格式 + +@author yubaoshan + +@data 2024年4月13日23:59:23 + +### props定义 + +| 序号 | 编码 | 类型 | 说明 | 默认 | +|-----|---------------------|---------------|------------------------------|--------| +| 1 | radioModel | Boolean | 是否单选;与addShow隐藏同时可用 | false | +| 2 | dataIsConverterFlw | Boolean | 是否为工作流格式 | false | +| 3 | orgTreeApi | function | 机构树接口 | - | +| 4 | userPageApi | function | 用户分页接口 | - | +| 5 | userListByIdListApi | function | 通过id数组查询list数据接口 | - | +| 6 | value | object或string | 通过v-model:value绑定数据 | - | +| 7 | dataType | string | 数据类型object或string | string | +| 8 | userShow | Boolean | 是否显示已选择用户(非表单内、单纯的选择用户需要隐藏) | true | +| 9 | addShow | Boolean | 是否默认的增加人员按钮,与radioModel为或的关系 | true | + +### emits定义 + +| 序号 | 方法名 | 参数类型 | 说明 | +|----|--------|----------------|---------------------------------| +| 1 | value | 根据 dataType 而定 | 当选择用户后通过v-model:value绑定到组件上 | +| 2 | onBack | 根据 dataType 而定 | 通过@onBack 方法返回选中的数据,触发点为选中或删除用户 | + +### slot定义 + +| 序号 | 插槽名 | 用途 | 用途 | +|----|--------|-------------------|-------------------| +| 1 | button | 在人员新增按钮后可以插入自定义按钮 | 不满足新增人员按钮样式,可以自定义 | diff --git a/src/components/XnUserSelector/index.vue b/src/components/XnUserSelector/index.vue new file mode 100644 index 0000000..3c6cb35 --- /dev/null +++ b/src/components/XnUserSelector/index.vue @@ -0,0 +1,623 @@ + + + + diff --git a/src/components/XnUserSelector/userSelectorTest.vue b/src/components/XnUserSelector/userSelectorTest.vue new file mode 100644 index 0000000..57e3ec2 --- /dev/null +++ b/src/components/XnUserSelector/userSelectorTest.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/global.less b/src/components/global.less new file mode 100644 index 0000000..fda3196 --- /dev/null +++ b/src/components/global.less @@ -0,0 +1,503 @@ +@import './index.less'; + +body { + + +} + +#app { + height: 100%; + + &.colorWeak { + filter: invert(80%); + } + &.userLayout { + overflow: auto; + } +} + +.layout.ant-layout { + height: auto; + overflow-x: hidden; + + &.mobile, + &.tablet { + .ant-layout-content { + .content { + margin: 24px 0 0; + } + } + .topmenu { + /* 必须为 topmenu 才能启用流式布局 */ + &.content-width-Fluid { + .header-index-wide { + margin-left: 0; + } + } + } + } + + &.mobile { + .sidemenu { + .ant-header-fixedHeader { + &.ant-header-side-opened, + &.ant-header-side-closed { + width: 100%; + } + } + } + } + + &.ant-layout-has-sider { + flex-direction: row; + } + + .trigger { + font-size: 20px; + line-height: 55px; + padding: 0 24px; + cursor: pointer; + transition: color 0.3s; + &:hover { + background: rgba(0, 0, 0, 0.025); + } + } + + .topmenu { + .ant-header-fixedHeader { + position: fixed; + top: 0; + right: 0; + z-index: 9; + width: 100%; + transition: width 0.2s; + + &.ant-header-side-opened { + width: 100%; + } + + &.ant-header-side-closed { + width: 100%; + } + } + /* 必须为 topmenu 才能启用流式布局 */ + &.content-width-Fluid { + .header-index-wide { + max-width: unset; + .header-index-left { + flex: 1 1 1000px; + .logo{ + margin-left: 25px; + } + .ant-menu.ant-menu-horizontal{ + max-width: calc(100vw - 190px - 238px - 25px); + flex: 1 1 calc(100vw - 190px - 238px - 25px); + } + } + .header-index-right{ + margin-right:25px; + } + } + + .page-header-index-wide { + max-width: unset; + } + } + } + + .sidemenu { + .ant-header-fixedHeader { + position: fixed; + top: 0; + right: 0; + z-index: 9; + width: 100%; + transition: width 0.2s; + + &.ant-header-side-opened { + width: calc(100% - 230px); + } + + &.ant-header-side-closed { + width: calc(100% - 80px); + } + } + } + + .header { + height: 55px; + // padding: 0 12px 0 0; + background: #fff; + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + position: relative; + } + + .header, + .top-nav-header-index { + .user-wrapper { + float: right; + height: 100%; + + .action { + line-height: 55px; + cursor: pointer; + padding: 0 12px; + display: inline-block; + transition: all 0.3s; + height: 100%; + color: rgba(0, 0, 0, 0.65); + + &:hover { + background: rgba(0, 0, 0, 0.025); + } + + .avatar { + margin: 15px 8px 15px 0; + color: #1890ff; + background: hsla(0, 0%, 100%, 0.85); + vertical-align: middle; + } + + .icon { + font-size: 16px; + padding: 4px; + } + } + } + + &.dark { + .user-wrapper { + .action { + color: rgba(255, 255, 255, 0.85); + a { + color: rgba(255, 255, 255, 0.85); + } + + &:hover { + background: rgba(255, 255, 255, 0.16); + } + } + } + } + } + + &.mobile, + &.tablet { + .top-nav-header-index { + .header-index-wide { + .header-index-left { + .trigger { + color: rgba(255, 255, 255, 0.85); + padding: 0 12px; + } + + .logo.top-nav-header { + flex: 0 0 56px; + text-align: center; + line-height: 58px; + h1 { + display: none; + } + } + } + } + + &.light { + .header-index-wide { + .header-index-left { + .trigger { + color: rgba(0, 0, 0, 0.65); + } + } + } + } + } + } + + &.tablet { + // overflow: hidden; text-overflow:ellipsis; white-space: nowrap; + .top-nav-header-index { + .header-index-wide { + .header-index-left { + .logo > a { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + .ant-menu.ant-menu-horizontal { + flex: 1 1 auto; + white-space: normal; + } + } + } + } + + .top-nav-header-index { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + position: relative; + transition: background 0.3s, width 0.2s; + + .header-index-wide { + max-width: 1200px; + margin: auto; + padding-left: 0; + display: flex; + height: 55px; + + .ant-menu.ant-menu-horizontal { + max-width: 835px; + flex: 0 1 835px; + border: none; + height: 55px; + line-height: 55px; + } + + .header-index-left { + flex: 0 1 1000px; + display: flex; + + .logo.top-nav-header { + flex: 0 0 165px; + width: 165px; + height: 55px; + position: relative; + line-height: 55px; + transition: all 0.3s; + overflow: hidden; + + img, + svg { + display: inline-block; + vertical-align: middle; + height: 32px; + width: 32px; + } + + h1 { + color: #fff; + display: inline-block; + vertical-align: top; + font-size: 16px; + margin: 0 0 0 12px; + font-weight: 400; + } + } + } + + .header-index-right { + flex: 0 0 238px; + align-self: flex-end; + height: 55px; + overflow: hidden; + + .content-box { + float: right; + .action { + max-width: 140px; + overflow: hidden; + text-overflow:ellipsis; + white-space:nowrap; + } + } + } + } + + &.light { + background-color: #fff; + + .header-index-wide { + .header-index-left { + .logo { + h1 { + color: #002140; + } + } + } + } + } + } + + // 内容区 + .layout-content { + margin: 24px 24px 0px; + //height: 100%; + //height: 64px; + padding: 0 12px 0 0; + } + + // footer + .ant-layout-footer { + padding: 0; + } +} + +.topmenu { + .page-header-index-wide { + max-width: 1200px; + margin: 0 auto; + } +} + +// drawer-sider 自定义 +.ant-drawer.drawer-sider { + .sider { + box-shadow: none; + } + + &.dark { + .ant-drawer-content { + background-color: rgb(0, 21, 41); + } + } + &.light { + box-shadow: none; + .ant-drawer-content { + background-color: #fff; + } + } + + .ant-drawer-body { + padding: 0; + } +} + +// 菜单样式 +.sider { + box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35); + position: relative; + z-index: @ant-global-sider-zindex; + min-height: 100vh; + + .ant-layout-sider-children { + overflow-y: hidden; + + &:hover { + overflow-y: auto; + } + } + + &.ant-fixed-sidemenu { + position: fixed; + height: 100%; + } + + // logo区域样式 + .logo { + position: relative; + height: 55px; + padding-left: 24px; + overflow: hidden; + line-height: 55px; + background: #002140; + transition: all .3s; + + img, + svg, + h1 { + display: inline-block; + vertical-align: middle; + } + + img, + svg { + height: 32px; + width: 32px; + } + + h1 { + color: #fff; + font-size: 20px; + margin: 0 0 0 12px; + font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; + font-weight: 600; + vertical-align: middle; + } + } + + &.light { + background-color: #fff; + box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05); + + .logo { + background: #fff; + box-shadow: 1px 1px 0px 0px #e8e8e8; + + h1 { + color: unset; + } + } + + .ant-menu-light { + border-right-color: transparent; + } + } +} + +// 外置的样式控制 +.user-dropdown-menu { + span { + user-select: none; + } +} +.user-dropdown-menu-wrapper.ant-dropdown-menu { + padding: 4px 0; + + .ant-dropdown-menu-item { + width: 160px; + } + + .ant-dropdown-menu-item > .anticon:first-child, + .ant-dropdown-menu-item > a > .anticon:first-child, + .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child { + min-width: 12px; + margin-right: 8px; + } +} + +// 数据列表 样式 +.table-alert { + margin-bottom: 16px; +} + +.table-page-search-wrapper { + .ant-form-inline { + .ant-form-item { + display: flex; + margin-bottom: 24px; + margin-right: 0; + + .ant-form-item-control-wrapper { + flex: 1 1; + display: inline-block; + vertical-align: middle; + } + + > .ant-form-item-label { + line-height: 32px; + padding-right: 8px; + width: auto; + } + .ant-form-item-control { + height: 32px; + line-height: 32px; + } + } + } + + .table-page-search-submitButtons { + display: block; + margin-bottom: 24px; + white-space: nowrap; + } +} + +.content { + .table-operator { + margin-bottom: 18px; + + button { + margin-right: 8px; + } + } +} diff --git a/src/components/index.less b/src/components/index.less new file mode 100644 index 0000000..25cb200 --- /dev/null +++ b/src/components/index.less @@ -0,0 +1,6 @@ +@import "ant-design-vue/lib/style/index"; + +// The prefix to use on all css classes from ant-pro. +@ant-pro-prefix : ant-pro; +@ant-global-sider-zindex : 106; +@ant-global-header-zindex : 105; diff --git a/src/config/iconSelect.js b/src/config/iconSelect.js new file mode 100644 index 0000000..0c57c0b --- /dev/null +++ b/src/config/iconSelect.js @@ -0,0 +1,827 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * 图标选择器基础数据 + * 推荐前往https://icones.js.org下载图标的Vue文件,然后放在src/assets/icons文件夹里面 + * 这个网址有118个图标集,包括antd、font awesome、bootstrap、eleme等累计140456个图标 + */ +const uiwIconComponentMap = import.meta.glob('../assets/icons/uiw/*.vue') // 异步方式 + +const uiwIcons = Object.keys(uiwIconComponentMap).map((key) => { + return key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')) +}) + +export default { + icons: [ + { + name: '基础', + key: 'default', + iconItem: [ + { + name: '线框风格', + key: 'default', + item: [ + 'step-backward-outlined', + 'step-forward-outlined', + 'fast-backward-outlined', + 'fast-forward-outlined', + 'shrink-outlined', + 'arrows-alt-outlined', + 'down-outlined', + 'up-outlined', + 'left-outlined', + 'right-outlined', + 'caret-up-outlined', + 'caret-down-outlined', + 'caret-left-outlined', + 'caret-right-outlined', + 'up-circle-outlined', + 'down-circle-outlined', + 'left-circle-outlined', + 'right-circle-outlined', + 'double-right-outlined', + 'double-left-outlined', + 'vertical-left-outlined', + 'vertical-right-outlined', + 'vertical-align-top-outlined', + 'vertical-align-middle-outlined', + 'vertical-align-bottom-outlined', + 'forward-outlined', + 'backward-outlined', + 'rollback-outlined', + 'enter-outlined', + 'retweet-outlined', + 'swap-outlined', + 'swap-left-outlined', + 'swap-right-outlined', + 'arrow-up-outlined', + 'arrow-down-outlined', + 'arrow-left-outlined', + 'arrow-right-outlined', + 'play-circle-outlined', + 'up-Square-outlined', + 'down-square-outlined', + 'left-square-outlined', + 'right-square-outlined', + 'login-outlined', + 'logout-outlined', + 'menu-fold-outlined', + 'menu-unfold-outlined', + 'border-bottom-outlined', + 'border-horizontal-outlined', + 'border-inner-outlined', + 'border-outer-outlined', + 'border-left-outlined', + 'border-right-outlined', + 'border-top-outlined', + 'border-verticle-outlined', + 'pic-center-outlined', + 'pic-left-outlined', + 'pic-right-outlined', + 'radius-bottomleft-outlined', + 'radius-bottomright-outlined', + 'radius-upleft-outlined', + 'radius-upright-outlined', + 'fullscreen-outlined', + 'fullscreen-exit-outlined', + 'question-outlined', + 'question-circle-outlined', + 'plus-outlined', + 'plus-circle-outlined', + 'pause-outlined', + 'pause-circle-outlined', + 'minus-outlined', + 'minus-circle-outlined', + 'plus-square-outlined', + 'minus-square-outlined', + 'info-outlined', + 'info-circle-outlined', + 'exclamation-outlined', + 'exclamation-circle-outlined', + 'close-outlined', + 'close-circle-outlined', + 'close-square-outlined', + 'check-outlined', + 'check-circle-outlined', + 'check-square-outlined', + 'clock-circle-outlined', + 'warning-outlined', + 'issues-close-outlined', + 'stop-outlined', + 'edit-outlined', + 'form-outlined', + 'copy-outlined', + 'scissor-outlined', + 'delete-outlined', + 'snippets-outlined', + 'diff-outlined', + 'highlight-outlined', + 'align-center-outlined', + 'align-left-outlined', + 'align-right-outlined', + 'bg-colors-outlined', + 'bold-outlined', + 'italic-outlined', + 'underline-outlined', + 'strikethrough-outlined', + 'redo-outlined', + 'undo-outlined', + 'zoom-in-outlined', + 'zoom-out-outlined', + 'font-colors-outlined', + 'font-size-outlined', + 'line-height-outlined', + 'dash-outlined', + 'small-dash-outlined', + 'sort-ascending-outlined', + 'sort-descending-outlined', + 'drag-outlined', + 'ordered-list-outlined', + 'unordered-list-outlined', + 'radius-setting-outlined', + 'column-width-outlined', + 'column-height-outlined', + 'account-book-outlined', + 'aim-outlined', + 'alert-outlined', + 'apartment-outlined', + 'api-outlined', + 'appstore-add-outlined', + 'appstore-outlined', + 'audio-outlined', + 'audio-muted-outlined', + 'audit-outlined', + 'bank-outlined', + 'barcode-outlined', + 'bars-outlined', + 'bell-outlined', + 'block-outlined', + 'book-outlined', + 'border-outlined', + 'borderless-table-outlined', + 'branches-outlined', + 'bug-outlined', + 'build-outlined', + 'bulb-outlined', + 'calculator-outlined', + 'calendar-outlined', + 'camera-outlined', + 'car-outlined', + 'carry-out-outlined', + 'ci-circle-outlined', + 'ci-outlined', + 'clear-outlined', + 'cloud-download-outlined', + 'cloud-outlined', + 'cloud-server-outlined', + 'cloud-sync-outlined', + 'cloud-upload-outlined', + 'cluster-outlined', + 'code-outlined', + 'coffee-outlined', + 'comment-outlined', + 'compass-outlined', + 'compress-outlined', + 'console-sql-outlined', + 'contacts-outlined', + 'container-outlined', + 'control-outlined', + 'copyright-circle-outlined', + 'copyright-outlined', + 'credit-card-outlined', + 'crown-outlined', + 'customer-service-outlined', + 'dashboard-outlined', + 'database-outlined', + 'delete-column-outlined', + 'delete-row-outlined', + 'delivered-procedure-outlined', + 'deployment-unit-outlined', + 'desktop-outlined', + 'dingtalk-outlined', + 'disconnect-outlined', + 'dislike-outlined', + 'dollar-circle-outlined', + 'dollar-outlined', + 'download-outlined', + 'ellipsis-outlined', + 'environment-outlined', + 'euro-circle-outlined', + 'euro-outlined', + 'exception-outlined', + 'expand-alt-outlined', + 'expand-outlined', + 'experiment-outlined', + 'export-outlined', + 'eye-outlined', + 'eye-invisible-outlined', + 'field-binary-outlined', + 'field-number-outlined', + 'field-string-outlined', + 'field-time-outlined', + 'file-add-outlined', + 'file-done-outlined', + 'file-excel-outlined', + 'file-exclamation-outlined', + 'file-outlined', + 'file-gif-outlined', + 'file-image-outlined', + 'file-jpg-outlined', + 'file-markdown-outlined', + 'file-pdf-outlined', + 'file-ppt-outlined', + 'file-protect-outlined', + 'file-search-outlined', + 'file-sync-outlined', + 'file-text-outlined', + 'file-unknown-outlined', + 'file-word-outlined', + 'file-zip-outlined', + 'filter-outlined', + 'fire-outlined', + 'flag-outlined', + 'folder-add-outlined', + 'folder-outlined', + 'folder-open-outlined', + 'folder-view-outlined', + 'fork-outlined', + 'format-painter-outlined', + 'frown-outlined', + 'function-outlined', + 'fund-projection-screen-outlined', + 'fund-view-outlined', + 'funnel-plot-outlined', + 'gateway-outlined', + 'gif-outlined', + 'gift-outlined', + 'global-outlined', + 'gold-outlined', + 'group-outlined', + 'hdd-outlined', + 'heart-outlined', + 'history-outlined', + 'holder-outlined', + 'home-outlined', + 'hourglass-outlined', + 'idcard-outlined', + 'import-outlined', + 'inbox-outlined', + 'insert-row-above-outlined', + 'insert-row-below-outlined', + 'insert-row-left-outlined', + 'insert-row-right-outlined', + 'insurance-outlined', + 'interaction-outlined', + 'key-outlined', + 'laptop-outlined', + 'layout-outlined', + 'like-outlined', + 'line-outlined', + 'link-outlined', + 'loading3-quarters-outlined', + 'loading-outlined', + 'lock-outlined', + 'mac-command-outlined', + 'mail-outlined', + 'man-outlined', + 'medicine-box-outlined', + 'meh-outlined', + 'menu-outlined', + 'merge-cells-outlined', + 'message-outlined', + 'mobile-outlined', + 'money-collect-outlined', + 'monitor-outlined', + 'more-outlined', + 'node-collapse-outlined', + 'node-expand-outlined', + 'node-index-outlined', + 'notification-outlined', + 'number-outlined', + 'one-to-one-outlined', + 'paper-clip-outlined', + 'partition-outlined', + 'pay-circle-outlined', + 'percentage-outlined', + 'phone-outlined', + 'picture-outlined', + 'play-square-outlined', + 'pound-circle-outlined', + 'pound-outlined', + 'poweroff-outlined', + 'printer-outlined', + 'profile-outlined', + 'project-outlined', + 'property-safety-outlined', + 'pull-request-outlined', + 'pushpin-outlined', + 'qrcode-outlined', + 'read-outlined', + 'reconciliation-outlined', + 'red-envelope-outlined', + 'reload-outlined', + 'rest-outlined', + 'robot-outlined', + 'rocket-outlined', + 'rotate-left-outlined', + 'rotate-right-outlined', + 'safety-certificate-outlined', + 'safety-outlined', + 'save-outlined', + 'scan-outlined', + 'schedule-outlined', + 'search-outlined', + 'security-scan-outlined', + 'select-outlined', + 'send-outlined', + 'setting-outlined', + 'shake-outlined', + 'share-alt-outlined', + 'shop-outlined', + 'shopping-cart-outlined', + 'shopping-outlined', + 'sisternode-outlined', + 'skin-outlined', + 'smile-outlined', + 'solution-outlined', + 'sound-outlined', + 'split-cells-outlined', + 'star-outlined', + 'subnode-outlined', + 'switcher-outlined', + 'sync-outlined', + 'table-outlined', + 'tablet-outlined', + 'tag-outlined', + 'tags-outlined', + 'team-outlined', + 'thunderbolt-outlined', + 'to-top-outlined', + 'tool-outlined', + 'trademark-circle-outlined', + 'trademark-outlined', + 'transaction-outlined', + 'translation-outlined', + 'trophy-outlined', + 'ungroup-outlined', + 'unlock-outlined', + 'upload-outlined', + 'usb-outlined', + 'user-add-outlined', + 'user-delete-outlined', + 'user-outlined', + 'user-switch-outlined', + 'usergroup-add-outlined', + 'usergroup-delete-outlined', + 'verified-outlined', + 'video-camera-add-outlined', + 'video-camera-outlined', + 'wallet-outlined', + 'whats-app-outlined', + 'wifi-outlined', + 'woman-outlined' + ] + }, + { + name: '实底风格', + key: 'filled', + item: [ + 'step-backward-filled', + 'step-forward-filled', + 'fast-backward-filled', + 'fast-forward-filled', + 'caret-up-filled', + 'caret-down-filled', + 'caret-left-filled', + 'caret-right-filled', + 'up-circle-filled', + 'down-circle-filled', + 'left-circle-filled', + 'right-circle-filled', + 'forward-filled', + 'backward-filled', + 'play-circle-filled', + 'up-square-filled', + 'down-square-filled', + 'left-square-filled', + 'right-square-filled', + 'question-circle-filled', + 'plus-circle-filled', + 'pause-circle-filled', + 'minus-circle-filled', + 'plus-square-filled', + 'minus-square-filled', + 'info-circle-filled', + 'exclamation-circle-filled', + 'close-circle-filled', + 'close-square-filled', + 'check-circle-filled', + 'check-square-filled', + 'clock-circle-filled', + 'warning-filled', + 'stop-filled', + 'edit-filled', + 'copy-filled', + 'delete-filled', + 'snippets-filled', + 'diff-filled', + 'highlight-filled', + 'pie-chart-filled', + 'box-plot-filled', + 'fund-filled', + 'sliders-filled', + 'android-filled', + 'apple-filled', + 'windows-filled', + 'chrome-filled', + 'github-filled', + 'aliwangwang-filled', + 'weibo-square-filled', + 'weibo-circle-filled', + 'taobao-circle-filled', + 'html5-filled', + 'wechat-filled', + 'youtube-filled', + 'alipay-circle-filled', + 'skype-filled', + 'gitlab-filled', + 'linkedin-filled', + 'facebook-filled', + 'code-sandbox-circle-filled', + 'codepen-circle-filled', + 'slack-square-filled', + 'behance-square-filled', + 'dribbble-square-filled', + 'instagram-filled', + 'yuque-filled', + 'yahoo-filled', + 'account-book-filled', + 'alert-filled', + 'alipay-square-filled', + 'amazon-circle-filled', + 'amazon-square-filled', + 'api-filled', + 'appstore-filled', + 'audio-filled', + 'bank-filled', + 'behance-circle-filled', + 'bell-filled', + 'book-filled', + 'bug-filled', + 'build-filled', + 'bulb-filled', + 'calculator-filled', + 'calendar-filled', + 'camera-filled', + 'car-filled', + 'carry-out-filled', + 'ci-circle-filled', + 'cloud-filled', + 'code-filled', + 'code-sandbox-square-filled', + 'codepen-square-filled', + 'compass-filled', + 'contacts-filled', + 'container-filled', + 'control-filled', + 'copyright-circle-filled', + 'credit-card-filled', + 'crown-filled', + 'customer-service-filled', + 'dashboard-filled', + 'database-filled', + 'dingtalk-circle-filled', + 'dingtalk-square-filled', + 'dislike-filled', + 'dollar-circle-filled', + 'dribbble-circle-filled', + 'dropbox-circle-filled', + 'dropbox-square-filled', + 'environment-filled', + 'euro-circle-filled', + 'experiment-filled', + 'eye-filled', + 'eye-invisible-filled', + 'file-add-filled', + 'file-excel-filled', + 'file-exclamation-filled', + 'file-filled', + 'file-image-filled', + 'file-markdown-filled', + 'file-pdf-filled', + 'file-ppt-filled', + 'file-text-filled', + 'file-unknown-filled', + 'file-word-filled', + 'file-zip-filled', + 'filter-filled', + 'fire-filled', + 'flag-filled', + 'folder-add-filled', + 'folder-filled', + 'folder-open-filled', + 'format-painter-filled', + 'frown-filled', + 'funnel-plot-filled', + 'gift-filled', + 'gold-filled', + 'golden-filled', + 'google-circle-filled', + 'google-plus-circle-filled', + 'google-plus-square-filled', + 'google-square-filled', + 'hdd-filled', + 'heart-filled', + 'home-filled', + 'hourglass-filled', + 'idcard-filled', + 'ie-circle-filled', + 'ie-square-filled', + 'insurance-filled', + 'interaction-filled', + 'layout-filled', + 'like-filled', + 'lock-filled', + 'mac-command-filled', + 'mail-filled', + 'medicine-box-filled', + 'medium-circle-filled', + 'medium-square-filled', + 'meh-filled', + 'message-filled', + 'mobile-filled', + 'money-collect-filled', + 'notification-filled', + 'pay-circle-filled', + 'phone-filled', + 'picture-filled', + 'play-square-filled', + 'pound-circle-filled', + 'printer-filled', + 'profile-filled', + 'project-filled', + 'property-safety-filled', + 'pushpin-filled', + 'qq-circle-filled', + 'qq-square-filled', + 'read-filled', + 'reconciliation-filled', + 'red-envelope-filled', + 'reddit-circle-filled', + 'reddit-square-filled', + 'rest-filled', + 'robot-filled', + 'rocket-filled', + 'safety-certificate-filled', + 'save-filled', + 'schedule-filled', + 'security-scan-filled', + 'setting-filled', + 'shop-filled', + 'shopping-filled', + 'signal-filled', + 'sketch-circle-filled', + 'sketch-square-filled', + 'skin-filled', + 'slack-circle-filled', + 'smile-filled', + 'sound-filled', + 'star-filled', + 'switcher-filled', + 'tablet-filled', + 'tag-filled', + 'tags-filled', + 'taobao-square-filled', + 'thunderbolt-filled', + 'tool-filled', + 'trademark-circle-filled', + 'trophy-filled', + 'twitter-circle-filled', + 'twitter-square-filled', + 'unlock-filled', + 'usb-filled', + 'video-camera-filled', + 'wallet-filled', + 'zhihu-circle-filled', + 'zhihu-square-filled' + ] + }, + { + name: '双色风格', + key: 'twotone', + item: [ + 'up-circle-two-tone', + 'down-circle-two-tone', + 'left-circle-two-tone', + 'right-circle-two-tone', + 'play-circle-two-tone', + 'up-square-two-tone', + 'down-square-two-tone', + 'left-square-two-tone', + 'right-square-two-tone', + 'question-circle-two-tone', + 'plus-circle-two-tone', + 'pause-circle-two-tone', + 'minus-circle-two-tone', + 'plus-square-two-tone', + 'minus-square-two-tone', + 'info-circle-two-tone', + 'exclamation-circle-two-tone', + 'close-circle-two-tone', + 'close-square-two-tone', + 'check-circle-two-tone', + 'check-square-two-tone', + 'clock-circle-two-tone', + 'warning-two-tone', + 'stop-two-tone', + 'edit-two-tone', + 'copy-two-tone', + 'delete-two-tone', + 'snippets-two-tone', + 'diff-two-tone', + 'highlight-two-tone', + 'pie-chart-two-tone', + 'box-plot-two-tone', + 'fund-two-tone', + 'sliders-two-tone', + 'account-book-two-tone', + 'alert-two-tone', + 'api-two-tone', + 'appstore-two-tone', + 'audio-two-tone', + 'bank-two-tone', + 'bell-two-tone', + 'book-two-tone', + 'bug-two-tone', + 'build-two-tone', + 'bulb-two-tone', + 'calculator-two-tone', + 'calendar-two-tone', + 'camera-two-tone', + 'car-two-tone', + 'carry-out-two-tone', + 'ci-circle-two-tone', + 'ci-two-tone', + 'cloud-two-tone', + 'code-two-tone', + 'compass-two-tone', + 'contacts-two-tone', + 'container-two-tone', + 'control-two-tone', + 'copyright-circle-two-tone', + 'copyright-two-tone', + 'credit-card-two-tone', + 'crown-two-tone', + 'customer-service-two-tone', + 'dashboard-two-tone', + 'database-two-tone', + 'dislike-two-tone', + 'dollar-circle-two-tone', + 'dollar-two-tone', + 'environment-two-tone', + 'euro-circle-two-tone', + 'account-book-two-tone', + 'alert-two-tone', + 'api-two-tone', + 'appstore-two-tone', + 'audio-two-tone', + 'bank-two-tone', + 'bell-two-tone', + 'book-two-tone', + 'bug-two-tone', + 'build-two-tone', + 'bulb-two-tone', + 'calculator-two-tone', + 'calendar-two-tone', + 'camera-two-tone', + 'car-two-tone', + 'carry-out-two-tone', + 'ci-circle-two-tone', + 'ci-two-tone', + 'cloud-two-tone', + 'code-two-tone', + 'compass-two-tone', + 'contacts-two-tone', + 'container-two-tone', + 'control-two-tone', + 'copyright-circle-two-tone', + 'copyright-two-tone', + 'credit-card-two-tone', + 'crown-two-tone', + 'customer-service-two-tone', + 'dashboard-two-tone', + 'database-two-tone', + 'dislike-two-tone', + 'dollar-circle-two-tone', + 'dollar-two-tone', + 'environment-two-tone', + 'euro-circle-two-tone', + 'euro-two-tone', + 'experiment-two-tone', + 'eye-two-tone', + 'eye-invisible-two-tone', + 'file-add-two-tone', + 'file-excel-two-tone', + 'file-exclamation-two-tone', + 'file-two-tone', + 'file-image-two-tone', + 'file-markdown-two-tone', + 'file-pdf-two-tone', + 'file-ppt-two-tone', + 'file-text-two-tone', + 'file-unknown-two-tone', + 'file-word-two-tone', + 'file-zip-two-tone', + 'filter-two-tone', + 'fire-two-tone', + 'flag-two-tone', + 'folder-add-two-tone', + 'folder-two-tone', + 'folder-open-two-tone', + 'frown-two-tone', + 'funnel-plot-two-tone', + 'gift-two-tone', + 'gold-two-tone', + 'hdd-two-tone', + 'heart-two-tone', + 'home-two-tone', + 'hourglass-two-tone', + 'idcard-two-tone', + 'insurance-two-tone', + 'interaction-two-tone', + 'layout-two-tone', + 'like-two-tone', + 'lock-two-tone', + 'mail-two-tone', + 'medicine-box-two-tone', + 'meh-two-tone', + 'message-two-tone', + 'mobile-two-tone', + 'money-collect-two-tone', + 'notification-two-tone', + 'phone-two-tone', + 'picture-two-tone', + 'play-square-two-tone', + 'pound-circle-two-tone', + 'printer-two-tone', + 'profile-two-tone', + 'project-two-tone', + 'property-safety-two-tone', + 'pushpin-two-tone', + 'reconciliation-two-tone', + 'red-envelope-two-tone', + 'rest-two-tone', + 'rocket-two-tone', + 'safety-certificate-two-tone', + 'save-two-tone', + 'schedule-two-tone', + 'security-scan-two-tone', + 'setting-two-tone', + 'shop-two-tone', + 'shopping-two-tone', + 'skin-two-tone', + 'smile-two-tone', + 'sound-two-tone', + 'star-two-tone', + 'switcher-two-tone', + 'tablet-two-tone', + 'tag-two-tone', + 'tags-two-tone', + 'thunderbolt-two-tone', + 'tool-two-tone', + 'trademark-circle-two-tone', + 'trophy-two-tone', + 'unlock-two-tone', + 'usb-two-tone', + 'video-camera-two-tone', + 'wallet-two-tone' + ] + } + ] + }, + { + name: '扩展', + key: 'extend', + iconItem: [ + { + name: '常用', + key: 'default', + item: uiwIcons + }, + { + name: '其他', + key: 'other', + item: ['GiteeIcon'] + } + ] + } + ] +} diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 0000000..83491a0 --- /dev/null +++ b/src/config/index.js @@ -0,0 +1,101 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const DEFAULT_CONFIG = { + // 首页地址 + DASHBOARD_URL: '/index', + + // 接口地址 + API_URL: import.meta.env.VITE_API_BASEURL, + + // 请求超时 + TIMEOUT: 60000, + + // TokenName // Authorization + TOKEN_NAME: 'token', + + // Token前缀,注意最后有个空格,如不需要需设置空字符串 // Bearer + TOKEN_PREFIX: '', + + // 追加其他头 + HEADERS: {}, + + // 请求是否开启缓存 + REQUEST_CACHE: false, + + // 布局 经典:classical,双排菜单:doublerow, 顶栏菜单:top + SNOWY_LAYOUT: 'doublerow', + + // 菜单是否折叠 + SNOWY_MENU_COLLAPSE: false, + + // 模块坞 + SNOWY_MODULE_UNFOLD_OPEN: true, + + // 是否开启多标签 + SNOWY_LAYOUT_TAGS_OPEN: true, + + // 是否开启展示面包屑 + SNOWY_BREADCRUMD_OPEN: false, + + // 顶栏是否应用主题色 + SNOWY_TOP_HEADER_THEME_COLOR_OPEN: false, + + // 顶栏主题色通栏 + SNOWY_TOP_HEADER_THEME_COLOR_SPREAD: false, + + // 侧边菜单是否排他展开 + SNOWY_SIDE_UNIQUE_OPEN: true, + + // 登录用户水印 + SNOWY_LOGIN_USER_WATERMARK_OPEN: false, + + // 页脚版权信息 + SNOWY_FOOTER_COPYRIGHT_OPEN: true, + + // 圆角风格 + SNOWY_ROUNDED_CORNER_STYLE_OPEN: true, + + // 语言 + LANG: 'zh-cn', + + // 主题颜色 + COLOR: '#1677FF', + + // 默认整体主题 + SNOWY_THEME: 'dark', + + // 整体表单风格 + SNOWY_FORM_STYLE: 'drawer', + + // 系统基础配置,这些是数据库中保存起来的 + SYS_BASE_CONFIG: { + // 默认logo + SNOWY_SYS_LOGO: '/img/logo.png', + // 背景图 + SNOWY_SYS_BACK_IMAGE: '', + // 系统名称 + SNOWY_SYS_NAME: 'Snowy', + // 版本 + SNOWY_SYS_VERSION: '2.0', + // 版权 + SNOWY_SYS_COPYRIGHT: 'Snowy ©2022 Created by xiaonuo.vip', + // 版权跳转URL + SNOWY_SYS_COPYRIGHT_URL: 'https://www.xiaonuo.vip', + // 默认文件存储 + SNOWY_SYS_DEFAULT_FILE_ENGINE: 'LOCAL', + // 是否开启验证码 + SNOWY_SYS_DEFAULT_CAPTCHA_OPEN: 'false', + // 默认重置密码 + SNOWY_SYS_DEFAULT_PASSWORD: '123456' + } +} + +export default DEFAULT_CONFIG diff --git a/src/config/route.js b/src/config/route.js new file mode 100644 index 0000000..21e1d17 --- /dev/null +++ b/src/config/route.js @@ -0,0 +1,44 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +// 静态路由配置 +const routes = { + // 默认模块,仅限于后端未添加任何单页配置,用此路由 + module: [ + { + id: '01', + name: 'homeModule', + path: '/homeModule', + component: '', + meta: { + title: '默认', + type: 'module', + icon: 'bank-outlined' + }, + children: [] + } + ], + // 默认谁都有个人中心 + menu: [ + { + id: '001', + name: 'usercenter', + path: '/usercenter', + component: 'sys/user/userCenter', + meta: { + title: '个人中心', + type: 'menu', + hidden: true + } + } + ] +} + +export default routes diff --git a/src/config/settingConfig.js b/src/config/settingConfig.js new file mode 100644 index 0000000..9d071df --- /dev/null +++ b/src/config/settingConfig.js @@ -0,0 +1,64 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const colorList = [ + { + key: '薄暮', + color: '#F5222D' + }, + { + key: '火山', + color: '#FA541C' + }, + { + key: '胭脂粉', + color: '#EB2F96' + }, + { + key: '日暮', + color: '#FAAD14' + }, + { + key: '明青', + color: '#13C2C2' + }, + { + key: '极光绿', + color: '#52C41A' + }, + { + key: '深绿', + color: '#009688' + }, + { + key: '拂晓蓝(默认)', + color: '#1677FF' + }, + { + key: '极客蓝', + color: '#2F54EB' + }, + { + key: '酱紫', + color: '#722ED1' + }, + { + key: '主题黑', + color: '#001529' + } +] + +const updateColorWeak = (colorWeak) => { + // document.body.className = colorWeak ? 'colorWeak' : ''; + const app = document.body.querySelector('#app') + colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak') +} + +export { colorList, updateColorWeak } diff --git a/src/config/themeColor.js b/src/config/themeColor.js new file mode 100644 index 0000000..b9f5456 --- /dev/null +++ b/src/config/themeColor.js @@ -0,0 +1,10 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ diff --git a/src/layout/components/NavMenu.vue b/src/layout/components/NavMenu.vue new file mode 100644 index 0000000..acc532b --- /dev/null +++ b/src/layout/components/NavMenu.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/layout/components/breadcrumb.vue b/src/layout/components/breadcrumb.vue new file mode 100644 index 0000000..bd852ac --- /dev/null +++ b/src/layout/components/breadcrumb.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/layout/components/iframeView.vue b/src/layout/components/iframeView.vue new file mode 100644 index 0000000..c714a98 --- /dev/null +++ b/src/layout/components/iframeView.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/layout/components/message.vue b/src/layout/components/message.vue new file mode 100644 index 0000000..5166f30 --- /dev/null +++ b/src/layout/components/message.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/layout/components/moduleMenu.vue b/src/layout/components/moduleMenu.vue new file mode 100644 index 0000000..fe47994 --- /dev/null +++ b/src/layout/components/moduleMenu.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/layout/components/panel-search/index.vue b/src/layout/components/panel-search/index.vue new file mode 100644 index 0000000..7ac2320 --- /dev/null +++ b/src/layout/components/panel-search/index.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/src/layout/components/panel-search/item.vue b/src/layout/components/panel-search/item.vue new file mode 100755 index 0000000..5201dee --- /dev/null +++ b/src/layout/components/panel-search/item.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/layout/components/setting.vue b/src/layout/components/setting.vue new file mode 100644 index 0000000..ea70ed8 --- /dev/null +++ b/src/layout/components/setting.vue @@ -0,0 +1,489 @@ + + + + diff --git a/src/layout/components/sideM.vue b/src/layout/components/sideM.vue new file mode 100644 index 0000000..ba66128 --- /dev/null +++ b/src/layout/components/sideM.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/layout/components/tags.vue b/src/layout/components/tags.vue new file mode 100644 index 0000000..a196c5d --- /dev/null +++ b/src/layout/components/tags.vue @@ -0,0 +1,474 @@ + + + + diff --git a/src/layout/components/topbar.vue b/src/layout/components/topbar.vue new file mode 100644 index 0000000..4e8e61f --- /dev/null +++ b/src/layout/components/topbar.vue @@ -0,0 +1,36 @@ + + diff --git a/src/layout/components/userbar.vue b/src/layout/components/userbar.vue new file mode 100644 index 0000000..2ae8562 --- /dev/null +++ b/src/layout/components/userbar.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/src/layout/enum/layoutEnum.js b/src/layout/enum/layoutEnum.js new file mode 100644 index 0000000..60b916e --- /dev/null +++ b/src/layout/enum/layoutEnum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const layoutEnum = { + CLASSICAL: 'classical', + DOUBLEROW: 'doublerow', + TOP: 'top' +} diff --git a/src/layout/enum/themeEnum.js b/src/layout/enum/themeEnum.js new file mode 100644 index 0000000..d0503b4 --- /dev/null +++ b/src/layout/enum/themeEnum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const themeEnum = { + LIGHT: 'light', + DARK: 'dark', + REAL_DARK: 'realDark' +} diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..d55a81e --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,650 @@ + + + + + diff --git a/src/layout/menu/classicalMenu.vue b/src/layout/menu/classicalMenu.vue new file mode 100644 index 0000000..882da50 --- /dev/null +++ b/src/layout/menu/classicalMenu.vue @@ -0,0 +1,154 @@ + + + + diff --git a/src/layout/menu/doubleRowMenu.vue b/src/layout/menu/doubleRowMenu.vue new file mode 100644 index 0000000..a4e8038 --- /dev/null +++ b/src/layout/menu/doubleRowMenu.vue @@ -0,0 +1,185 @@ + + + + diff --git a/src/layout/menu/topMenu.vue b/src/layout/menu/topMenu.vue new file mode 100644 index 0000000..90402c2 --- /dev/null +++ b/src/layout/menu/topMenu.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/layout/other/403.vue b/src/layout/other/403.vue new file mode 100644 index 0000000..32fa3f5 --- /dev/null +++ b/src/layout/other/403.vue @@ -0,0 +1,3 @@ + diff --git a/src/layout/other/404.vue b/src/layout/other/404.vue new file mode 100644 index 0000000..27b3fe8 --- /dev/null +++ b/src/layout/other/404.vue @@ -0,0 +1,20 @@ + + diff --git a/src/layout/other/empty.vue b/src/layout/other/empty.vue new file mode 100644 index 0000000..497d470 --- /dev/null +++ b/src/layout/other/empty.vue @@ -0,0 +1,3 @@ + diff --git a/src/locales/index.js b/src/locales/index.js new file mode 100644 index 0000000..08e82b9 --- /dev/null +++ b/src/locales/index.js @@ -0,0 +1,38 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { createI18n } from 'vue-i18n' +import zhCN from 'ant-design-vue/es/locale/zh_CN' +import enGB from 'ant-design-vue/es/locale/en_GB' +import zh_cn from './lang/zh-cn.js' +import en from './lang/en.js' +import tool from '@/utils/tool' +import sysConfig from '@/config/index' + +export const messages = { + 'zh-cn': { + lang: zhCN, + ...zh_cn + }, + en: { + lang: enGB, + ...en + } +} + +const i18n = createI18n({ + legacy: false, + locale: tool.data.get('APP_LANG') || sysConfig.LANG, + fallbackLocale: 'zh-cn', + globalInjection: true, + messages +}) + +export default i18n diff --git a/src/locales/lang/en.js b/src/locales/lang/en.js new file mode 100644 index 0000000..75ac196 --- /dev/null +++ b/src/locales/lang/en.js @@ -0,0 +1,72 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export default { + common: { + searchButton: 'search', + resetButton: 'reset', + addButton: 'add', + editButton: 'edit', + removeButton: 'delete', + batchRemoveButton: 'batch Remove', + detailButton: 'detail', + searchKey: 'Search Key', + imports: 'Import', + more: 'More', + export: 'Export' + }, + model: { + user: 'user', + org: 'org', + pos: 'pos', + role: 'role', + bizUser: 'bizUser' + }, + login: { + signInTitle: 'Sign in', + forgetPassword: 'Forget password', + signIn: 'Sign in', + signInOther: 'Sign in with', + accountPlaceholder: 'Please input a user account', + accountError: 'Please input a user account', + PWPlaceholder: 'Please input a password', + PWError: 'Please input a password', + validLaceholder: 'Please input a valid', + validError: 'Please input a valid', + accountPassword: 'Account Password', + phoneSms: 'Phone SMS', + phonePlaceholder: 'Please input a phone', + smsCodePlaceholder: 'Please input a SMS code', + getSmsCode: 'SMS code', + machineValidation: 'Machine Validation', + sendingSmsMessage: 'Sending SMS Message', + newPwdPlaceholder: 'Please input a new password', + backLogin: 'Back Login', + restPassword: 'Rest Password', + emailPlaceholder: 'Please input a email', + emailCodePlaceholder: 'Please input a Email code', + restPhoneType: 'For phone rest', + restEmailType: 'For email rest' + }, + user: { + userStatus: 'User Status', + resetPassword: 'Reset Password', + role: 'Role', + batchExportButton: 'Batch Export', + grantRole: 'Grant Role', + grantResource: 'Grant Resource', + grantPermission: 'Grant Permission', + exportUserInfo: 'Export UserInfo', + placeholderNameAndSearchKey: 'Please enter your name or keyword', + placeholderUserStatus: 'Please select status', + popconfirmDeleteUser: 'Are you sure you want to delete it?', + popconfirmResatUserPwd: 'Are you sure you want to reset?' + } +} diff --git a/src/locales/lang/zh-cn.js b/src/locales/lang/zh-cn.js new file mode 100644 index 0000000..b25b2d0 --- /dev/null +++ b/src/locales/lang/zh-cn.js @@ -0,0 +1,74 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import 'dayjs/locale/zh-cn' + +export default { + common: { + searchButton: '查询', + resetButton: '重置', + addButton: '增加', + editButton: '编辑', + removeButton: '删除', + batchRemoveButton: '批量删除', + detailButton: '详情', + searchKey: '关键词', + imports: '导入', + more: '更多', + export: '导出' + }, + model: { + user: '用户', + org: '机构', + pos: '职位', + role: '角色', + bizUser: '人员' + }, + login: { + signInTitle: '用户登录', + forgetPassword: '忘记密码', + signIn: '登录', + signInOther: '其他登录方式', + accountPlaceholder: '请输入账号', + accountError: '请输入账号', + PWPlaceholder: '请输入密码', + PWError: '请输入密码', + validLaceholder: '请输入验证码', + validError: '请输入验证码', + accountPassword: '账号密码', + phoneSms: '手机号登录', + phonePlaceholder: '请输入手机号', + smsCodePlaceholder: '请输入短信验证码', + getSmsCode: '获取验证码', + machineValidation: '机器验证', + sendingSmsMessage: '短信发送中', + newPwdPlaceholder: '请输入新密码', + backLogin: '返回登录', + restPassword: '重置密码', + emailPlaceholder: '请输入邮箱号', + emailCodePlaceholder: '请输入邮件验证码', + restPhoneType: '手机号找回', + restEmailType: '邮箱找回' + }, + user: { + userStatus: '用户状态', + resetPassword: '重置密码', + role: '角色', + batchExportButton: '批量导出', + grantRole: '授权角色', + grantResource: '授权资源', + grantPermission: '授权权限', + exportUserInfo: '导出信息', + placeholderNameAndSearchKey: '请输入姓名或关键词', + placeholderUserStatus: '请选择状态', + popconfirmDeleteUser: '确定要删除吗?', + popconfirmResatUserPwd: '确定要重置吗?' + } +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..e3b5ecb --- /dev/null +++ b/src/main.js @@ -0,0 +1,20 @@ +import { createApp } from 'vue' +import Antd from 'ant-design-vue' +import { createPinia } from 'pinia' + +import './style/index.less' +import snowy from './snowy' +import i18n from './locales' +import router from './router' +import App from './App.vue' +import './tailwind.css' + +const app = createApp(App) +app.use(createPinia()) +app.use(router) +app.use(Antd) +app.use(i18n) +app.use(snowy) + +// 挂载app +app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..24596f6 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,172 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { createRouter, createWebHistory } from 'vue-router' +import { notification } from 'ant-design-vue' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import systemRouter from './systemRouter' +import { afterEach, beforeEach } from './scrollBehavior' +import whiteListRouters from './whiteList' +import userRoutes from '@/config/route' +import tool from '@/utils/tool' +import { cloneDeep } from 'lodash-es' +import { globalStore } from '@/store' +import { NextLoading } from '@/utils/loading' +import { useMenuStore } from '@/store/menu' + +// 进度条配置 +NProgress.configure({ showSpinner: false, speed: 500 }) + +// 系统特殊路由 +const routes_404 = [ + { + path: '/:pathMatch(.*)*', + hidden: true, + component: () => import('@/layout/other/404.vue') + } +] +// 系统路由 +const routes = [...systemRouter, ...whiteListRouters, ...routes_404] + +const router = createRouter({ + history: createWebHistory(), + routes +}) + +// 设置标题 +// document.title = sysBaseConfig.SNOWY_SYS_NAME + +// 判断是否已加载过动态/静态路由 +const isGetRouter = ref(false) + +// 白名单校验 +const exportWhiteListFromRouter = (router) => { + const res = [] + for (const item of router) res.push(item.path) + return res +} +const whiteList = exportWhiteListFromRouter(whiteListRouters) + +router.beforeEach(async (to, from, next) => { + NProgress.start() + const store = globalStore() + + const sysBaseConfig = tool.data.get('SNOWY_SYS_BASE_CONFIG') || store.sysBaseConfig + // 动态标题 + document.title = to.meta.title + ? `${to.meta.title} - ${sysBaseConfig.SNOWY_SYS_NAME}` + : `${sysBaseConfig.SNOWY_SYS_NAME}` + + // 过滤白名单 + if (whiteList.includes(to.path)) { + next() + // NProgress.done() + return false + } + + if (!isGetRouter.value) { + // 初始化菜单加载,代码位置不能变动 + const menuStore = useMenuStore() + menuStore.refreshMenu() + isGetRouter.value = true + next({ ...to, replace: true }) + return false + } + + const token = tool.data.get('TOKEN') + + // 页面刷新,加载loading + if (from.path === '/' && to.path !== '/login' && !window.nextLoading && token) { + NextLoading.start() + } + if (to.path === '/login') { + // 当用户输入了login路由,将其跳转首页即可 + if (token) { + next({ + path: '/' + }) + return false + } + // 删除路由(替换当前layout路由) + router.addRoute(routes[0]) + next() + return false + } else { + if (token) { + // 有token的时候才保存登录之前要访问的页面 + tool.data.set('LAST_VIEWS_PATH', to.fullPath) + } + } + if (!token) { + next({ + path: '/login' + }) + return false + } + // 整页路由处理 + if (to.meta.fullpage) { + to.matched = [to.matched[to.matched.length - 1]] + } + beforeEach(to, from) + next() +}) + +router.afterEach((to, from) => { + afterEach(to, from) + NProgress.done() + window.nextLoading && NextLoading.done() +}) + +router.onError((error) => { + NProgress.done() + window.nextLoading && NextLoading.done() + notification.error({ + message: '路由错误', + description: error.message + }) +}) + +// 入侵追加自定义方法、对象 +router.getMenu = () => { + const menuStore = useMenuStore() + let apiMenu = menuStore.menuData.value || tool.data.get('MENU') || [] + // 增加固定路由 + if (apiMenu.length === 0) { + // 创建默认模块,显示默认菜单 + apiMenu[0] = cloneDeep(userRoutes.module[0]) + } + const childrenApiMenu = apiMenu[0].children + apiMenu[0].children = [...(childrenApiMenu ? childrenApiMenu : []), ...userRoutes.menu] + return filterUrl(apiMenu) +} + +const filterUrl = (map) => { + const newMap = [] + const traverse = (maps) => { + maps && + maps.forEach((item) => { + item.meta = item.meta ? item.meta : {} + // 处理iframe + if (item.meta.type === 'iframe') { + item.path = `/${item.name}` + } + // 递归循环 + if (item.children && item.children.length > 0) { + item.children = filterUrl(item.children) + } + newMap.push(item) + }) + } + traverse(map) + return newMap +} + +export default router diff --git a/src/router/scrollBehavior.js b/src/router/scrollBehavior.js new file mode 100644 index 0000000..040f60b --- /dev/null +++ b/src/router/scrollBehavior.js @@ -0,0 +1,38 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { nextTick } from 'vue' +import { viewTagsStore } from '@/store' + +export function beforeEach(to, from) { + const adminMain = document.querySelector('#admin-ui-main') + if (!adminMain) { + return false + } + const store = viewTagsStore() + store.updateViewTags({ + fullPath: from.fullPath, + scrollTop: adminMain.scrollTop + }) +} + +export function afterEach(to) { + const adminMain = document.querySelector('#admin-ui-main') + if (!adminMain) { + return false + } + nextTick(() => { + const store = viewTagsStore() + const beforeRoute = store.viewTags.filter((v) => v.fullPath == to.fullPath)[0] + if (beforeRoute) { + adminMain.scrollTop = beforeRoute.scrollTop || 0 + } + }) +} diff --git a/src/router/systemRouter.js b/src/router/systemRouter.js new file mode 100644 index 0000000..e3d19ea --- /dev/null +++ b/src/router/systemRouter.js @@ -0,0 +1,52 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import config from '@/config' +import tool from '@/utils/tool' +import routerUtil from '@/utils/routerUtil' + +import Layout from '@/layout/index.vue' +import Login from '@/views/auth/login/login.vue' +import Findpwd from '@/views/auth/findPwd/index.vue' +import Callback from '@/views/auth/login/callback.vue' + +// 系统路由 +const routes = [ + { + name: 'layout', + path: '/', + component: Layout, + redirect: tool.data.get('MENU') ? routerUtil.getIndexMenu(tool.data.get('MENU')).path : config.DASHBOARD_URL, + children: [] + }, + { + path: '/login', + component: Login, + meta: { + title: '登录' + } + }, + { + path: '/findpwd', + component: Findpwd, + meta: { + title: '找回密码' + } + }, + { + path: '/callback', + component: Callback, + meta: { + title: '三方登录' + } + } +] + +export default routes diff --git a/src/router/whiteList.js b/src/router/whiteList.js new file mode 100644 index 0000000..7da14bf --- /dev/null +++ b/src/router/whiteList.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const constRouters = [ + { + path: '/findpwd' + }, + { + path: '/callback' + }, + { + path: '/other', + name: 'other', + component: () => import('@/views/other/index.vue'), + meta: { + title: '其他' + } + } +] +/** + * 路由白名单(数组形式) + * + * 如果组件像登录一样,那就简单的写一个path,即可实现放开, + * 如果组件不在这边的,需要手动添加组件,就像other一样, + * 因为没登陆你没法拿到后端给你返回的那一坨,当然就找不到component + * + * @author yubaoshan + */ +export default constRouters diff --git a/src/snowy.js b/src/snowy.js new file mode 100644 index 0000000..d3feb5b --- /dev/null +++ b/src/snowy.js @@ -0,0 +1,40 @@ +import * as antdvIcons from '@ant-design/icons-vue' +import config from './config' +import tool from './utils/tool' +import { hasPerm } from './utils/permission/index' +import errorHandler from './utils/errorHandler' +import customIcons from './assets/icons/index.js' +import 'highlight.js/styles/atom-one-dark.css' +import hljsCommon from 'highlight.js/lib/common' +import hljsVuePlugin from '@highlightjs/vue-plugin' +import STable from './components/Table/index.vue' +import Ellipsis from './components/Ellipsis/index.vue' +import DragModal from './components/DragModal/index.vue' + +export default { + install(app) { + // 挂载全局对象 + app.config.globalProperties.$CONFIG = config + app.config.globalProperties.$TOOL = tool + app.config.globalProperties.hasPerm = hasPerm + + // 注册常用组件 + app.component('STable', STable) + app.component('Ellipsis', Ellipsis) + app.component('DragModal', DragModal) + + // 统一注册antdv图标 + for (const icon in antdvIcons) { + app.component(icon, antdvIcons[icon]) + } + // 统一注册自定义全局图标 + app.use(customIcons) + // 注册代码高亮组件 (博客:https://blog.csdn.net/weixin_41897680/article/details/124925222) + // 注意:解决Vue使用highlight.js build打包发布后样式消失问题,原因是webpack在打包的时候没有把未被使用的代码打包进去,因此,在此处引用一下,看似无意义实则有用 + hljsCommon.highlightAuto('

Highlight.js has been registered successfully!

').value + app.use(hljsVuePlugin) + + // 全局代码错误捕捉 + app.config.errorHandler = errorHandler + } +} diff --git a/src/store/global.js b/src/store/global.js new file mode 100644 index 0000000..7337fcd --- /dev/null +++ b/src/store/global.js @@ -0,0 +1,174 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import { changeColor } from '@/utils/themeUtil' +import config from '@/config' +import { message } from 'ant-design-vue' +import tool from '@/utils/tool' + +const toolDataGet = (key) => { + return tool.data.get(key) +} + +// 获取缓存中的,如果取不到那就用配置的 +const getCacheConfig = (value) => { + const data = toolDataGet(value) + if (data === null) { + return config[value] + } + return data +} + +// deprecated 请使用 useGlobalStore +export const globalStore = defineStore('global', () => { + // 移动端布局 + const isMobile = ref(false) + // 布局 + const layout = ref(getCacheConfig('SNOWY_LAYOUT')) + // 菜单是否折叠 toggle + const menuIsCollapse = ref(getCacheConfig('SNOWY_MENU_COLLAPSE')) + // 侧边菜单是否排他展开 + const sideUniqueOpen = ref(getCacheConfig('SNOWY_SIDE_UNIQUE_OPEN')) + // 多标签栏 + const layoutTagsOpen = ref(getCacheConfig('SNOWY_LAYOUT_TAGS_OPEN')) + // 是否展示面包屑 + const breadcrumbOpen = ref(getCacheConfig('SNOWY_BREADCRUMD_OPEN')) + // 是否开启固定宽度(顶栏菜单) + const fixedWidth = ref(getCacheConfig('SNOWY_FIXEDWIDTH_OPEN')) + // 顶栏是否应用主题色 + const topHeaderThemeColorOpen = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_OPEN')) + // 顶栏主题色通栏 + const topHeaderThemeColorSpread = ref(getCacheConfig('SNOWY_TOP_HEADER_THEME_COLOR_SPREAD')) + // 登录用户水印 + const loginUserWatermarkOpen = ref(getCacheConfig('SNOWY_LOGIN_USER_WATERMARK_OPEN')) + // 页脚版权信息 + const footerCopyrightOpen = ref(getCacheConfig('SNOWY_FOOTER_COPYRIGHT_OPEN')) + // 模块坞 + const moduleUnfoldOpen = ref(getCacheConfig('SNOWY_MODULE_UNFOLD_OPEN')) + // 主题 + const theme = ref(getCacheConfig('SNOWY_THEME')) + // 主题颜色 + const themeColor = ref(toolDataGet('SNOWY_THEME_COLOR') || config.COLOR) + // 圆角分格 + const roundedCornerStyleOpen = ref(getCacheConfig('SNOWY_ROUNDED_CORNER_STYLE_OPEN')) + // 整体表单风格 + const formStyle = ref(getCacheConfig('SNOWY_FORM_STYLE')) + // 用户信息 + const userInfo = ref(toolDataGet('USER_INFO') || {}) + // 系统配置 + const sysBaseConfig = ref(toolDataGet('SNOWY_SYS_BASE_CONFIG') || config.SYS_BASE_CONFIG) + // 默认应用 + const module = ref(getCacheConfig('SNOWY_MENU_MODULE_ID')) + + // 定义action + const setIsMobile = (key) => { + isMobile.value = key + } + const setLayout = (key) => { + layout.value = key + } + const setTheme = (key) => { + theme.value = key + changeColor(themeColor.value, key).then() + } + const setThemeColor = (key) => { + themeColor.value = key + changeColor(key, theme.value).then() + } + const initTheme = () => { + changeColor(themeColor.value, theme.value).then() + } + const toggleConfig = (key) => { + switch (key) { + case 'menuIsCollapse': + menuIsCollapse.value = !menuIsCollapse.value + break + case 'topHeaderThemeColorSpread': + topHeaderThemeColorSpread.value = !topHeaderThemeColorSpread.value + break + case 'sideUniqueOpen': + sideUniqueOpen.value = !sideUniqueOpen.value + break + case 'layoutTagsOpen': + layoutTagsOpen.value = !layoutTagsOpen.value + break + case 'breadcrumbOpen': + breadcrumbOpen.value = !breadcrumbOpen.value + break + case 'fixedWidth': + fixedWidth.value = !fixedWidth.value + break + case 'topHeaderThemeColorOpen': + topHeaderThemeColorOpen.value = !topHeaderThemeColorOpen.value + topHeaderThemeColorSpread.value = topHeaderThemeColorOpen.value + ? topHeaderThemeColorSpread.value + : topHeaderThemeColorOpen.value + break + case 'loginUserWatermarkOpen': + loginUserWatermarkOpen.value = !loginUserWatermarkOpen.value + break + case 'footerCopyrightOpen': + footerCopyrightOpen.value = !footerCopyrightOpen.value + break + case 'roundedCornerStyleOpen': + roundedCornerStyleOpen.value = !roundedCornerStyleOpen.value + break + case 'moduleUnfoldOpen': + moduleUnfoldOpen.value = !moduleUnfoldOpen.value + break + } + } + const setFormStyle = (key) => { + formStyle.value = key + } + const setUserInfo = (key) => { + userInfo.value = key + } + const setSysBaseConfig = (key) => { + sysBaseConfig.value = key + } + const setModule = (key) => { + module.value = key + } + return { + isMobile, + layout, + menuIsCollapse, + sideUniqueOpen, + layoutTagsOpen, + breadcrumbOpen, + fixedWidth, + topHeaderThemeColorOpen, + topHeaderThemeColorSpread, + loginUserWatermarkOpen, + footerCopyrightOpen, + moduleUnfoldOpen, + theme, + themeColor, + roundedCornerStyleOpen, + formStyle, + userInfo, + sysBaseConfig, + module, + setIsMobile, + setLayout, + setTheme, + setThemeColor, + initTheme, + toggleConfig, + setFormStyle, + setUserInfo, + setSysBaseConfig, + setModule + } +}) + +export const useGlobalStore = globalStore diff --git a/src/store/iframe.js b/src/store/iframe.js new file mode 100644 index 0000000..a3a8e9c --- /dev/null +++ b/src/store/iframe.js @@ -0,0 +1,58 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const iframeStore = defineStore('iframe', () => { + // 定义state + const iframeList = ref([]) + const setIframeList = (route) => { + iframeList.value = [] + iframeList.value.push(route) + } + + // 定义action + const pushIframeList = (route) => { + const target = iframeList.value.find((item) => item.path === route.path) + if (!target) { + iframeList.value.push(route) + } + } + const removeIframeList = (route) => { + iframeList.value.forEach((item, index) => { + if (item.path === route.path) { + iframeList.value.splice(index, 1) + } + }) + } + const refreshIframe = (route) => { + iframeList.value.forEach((item) => { + if (item.path === route.path) { + const url = route.meta.url + item.meta.url = '' + setTimeout(() => { + item.meta.url = url + }, 200) + } + }) + } + const clearIframeList = () => { + iframeList.value = [] + } + + return { + iframeList, + setIframeList, + pushIframeList, + removeIframeList, + refreshIframe, + clearIframeList + } +}) diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..c4004d2 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,5 @@ +export * from './global' +export * from './search' +export * from './iframe' +export * from './keepAlive' +export * from './viewTags' diff --git a/src/store/keepAlive.js b/src/store/keepAlive.js new file mode 100644 index 0000000..d40546b --- /dev/null +++ b/src/store/keepAlive.js @@ -0,0 +1,55 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const keepAliveStore = defineStore('keepAlive', () => { + // 定义state + const keepLiveRoute = ref([]) + const routeKey = ref(null) + const routeShow = ref(true) + + // 定义action + const pushKeepLive = (component) => { + if (!keepLiveRoute.value.includes(component)) { + keepLiveRoute.value.push(component) + } + } + const removeKeepLive = (component) => { + const index = keepLiveRoute.value.indexOf(component) + if (index !== -1) { + keepLiveRoute.value.splice(index, 1) + } + } + const clearKeepLive = () => { + keepLiveRoute.value = [] + } + const setRouteKey = (key) => { + routeKey.value = key + } + const setRouteShow = (key) => { + routeShow.value = key + } + const setRouteKeyAction = (key) => { + setRouteKey(key) + } + + return { + keepLiveRoute, + routeKey, + routeShow, + pushKeepLive, + removeKeepLive, + clearKeepLive, + setRouteKey, + setRouteShow, + setRouteKeyAction + } +}) diff --git a/src/store/menu.js b/src/store/menu.js new file mode 100644 index 0000000..62aca7b --- /dev/null +++ b/src/store/menu.js @@ -0,0 +1,142 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import tool from '@/utils/tool' +import { cloneDeep } from 'lodash-es' +import userRoutes from '@/config/route' +import { searchStore } from '@/store/search' +import router from '@/router' +import userCenterApi from '@/api/sys/userCenterApi' +import whiteList from '@/router/whiteList' +import routesData from '@/router/systemRouter' + +const modules = import.meta.glob('/src/views/**/**.vue') +export const useMenuStore = defineStore('menuStore', () => { + const menuData = ref([]) + const refreshFlag = ref(false) + // 改变刷新标志 + const changeRefreshFlag = (flag) => { + refreshFlag.value = flag + } + // 加载菜单 + const loadMenu = () => { + // 获取用户菜单 + const apiMenu = tool.data.get('MENU') || [] + if (apiMenu.length === 0) { + // 创建默认模块,显示默认菜单 + apiMenu[0] = cloneDeep(userRoutes.module[0]) + } + const childrenApiMenu = apiMenu[0].children + apiMenu[0].children = [...(childrenApiMenu ? childrenApiMenu : []), ...userRoutes.menu] + let menuRouter = filterAsyncRouter(apiMenu) + menuRouter = flatAsyncRoutes(menuRouter) + menuData.value = menuRouter + // 初始化搜索 + const search_store = searchStore() + search_store.init(menuRouter) + } + // 过滤异步路由 + const filterAsyncRouter = (routerMap) => { + const accessedRouters = [] + routerMap.forEach((item) => { + item.meta = item.meta ? item.meta : {} + // 处理外部链接特殊路由 + if (item.meta.type === 'iframe') { + item.meta.url = item.path + item.path = `/${item.name}` + } + // MAP转路由对象 + const route = { + path: item.path, + name: item.name, + meta: item.meta, + redirect: item.redirect, + children: item.children ? filterAsyncRouter(item.children) : null, + component: loadComponent(item.component) + } + accessedRouters.push(route) + }) + return accessedRouters + } + // 将异步路由扁平化 + const flatAsyncRoutes = (routes, breadcrumb = []) => { + const res = [] + routes.forEach((route) => { + const tmp = { ...route } + if (tmp.children) { + const childrenBreadcrumb = [...breadcrumb] + childrenBreadcrumb.push(route) + const tmpRoute = { ...route } + tmpRoute.meta.breadcrumb = childrenBreadcrumb + delete tmpRoute.children + res.push(tmpRoute) + const childrenRoutes = flatAsyncRoutes(tmp.children, childrenBreadcrumb) + childrenRoutes.map((item) => { + res.push(item) + }) + } else { + const tmpBreadcrumb = [...breadcrumb] + tmpBreadcrumb.push(tmp) + tmp.meta.breadcrumb = tmpBreadcrumb + res.push(tmp) + } + }) + return res + } + // 动态加载组件 + const loadComponent = (component) => { + if (component) { + if (component.includes('/')) { + return modules[`/src/views/${component}.vue`] + } + return modules[`/src/views/${component}/index.vue`] + } else { + return () => import(/* @vite-ignore */ `/src/layout/other/empty.vue`) + } + } + // 从路由中移除菜单 + const removeFromRouter = () => { + const routes = router.getRoutes() + // 遍历所有路由 + routes.forEach((route) => { + // 过滤白名单 + if ( + whiteList.filter((e) => e.path === route.path).length > 0 || + routesData.filter((e) => e.path === route.path).length > 0 + ) { + return + } + if (route.name && route.name !== 'layout') { + router.removeRoute(route.name) + } + }) + } + // 获取用户菜单 + const fetchMenu = async () => { + const menu = await userCenterApi.userLoginMenu() + tool.data.set('MENU', menu) + refreshMenu() + } + // 刷新菜单 + const refreshMenu = () => { + loadMenu() + removeFromRouter() + addToRouter() + changeRefreshFlag(true) + } + // 将菜单添加到路由 + const addToRouter = () => { + menuData.value.forEach((item) => { + router.addRoute('layout', item) + }) + } + return { menuData, loadMenu, addToRouter, refreshMenu, changeRefreshFlag, refreshFlag, fetchMenu } +}) diff --git a/src/store/search.js b/src/store/search.js new file mode 100755 index 0000000..e1ca521 --- /dev/null +++ b/src/store/search.js @@ -0,0 +1,63 @@ +import '@/utils/objects' +import { defineStore } from 'pinia' + +export const searchStore = defineStore('search', () => { + // 定义state + const pool = ref([]) + const hotkey = ref({ + open: 's', + close: 'esc' + }) + const active = ref(false) + + // 定义action + const toggleActive = () => { + active.value = !active.value + } + const setActive = (val) => { + active.value = val + } + const init = (menu) => { + const poolList = [] + const getFullName = function (meta) { + if (meta.breadcrumb) { + let list = [] + meta.breadcrumb.forEach((item) => { + list.push(item.meta.title) + }) + return list.join(' / ') + } + return meta.title + } + const push = function (menu) { + menu.forEach((m) => { + if ('menu' === m.meta.type) { + if (m.children) { + push(m.children) + } else if (m.children === null) { + poolList.push({ + icon: m.meta.icon, + path: m.path, + fullPath: m.path, + name: m.meta.title, + fullName: getFullName(m.meta), + namePinyin: m.meta.title.toPinyin(), + namePinyinFirst: m.meta.title.toPinyin(true) + }) + } + } + }) + } + push(menu) + pool.value = poolList + } + + return { + pool, + hotkey, + active, + toggleActive, + setActive, + init + } +}) diff --git a/src/store/sysBaseConfig.js b/src/store/sysBaseConfig.js new file mode 100644 index 0000000..33fb235 --- /dev/null +++ b/src/store/sysBaseConfig.js @@ -0,0 +1,40 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import configApi from '@/api/dev/configApi' +import { message } from 'ant-design-vue' + +const formData = ref({ + SNOWY_SYS_LOGO: '', + SNOWY_SYS_BACK_IMAGE: '', + SNOWY_SYS_NAME: '', + SNOWY_SYS_VERSION: '', + SNOWY_SYS_COPYRIGHT: '', + SNOWY_SYS_COPYRIGHT_URL: '', + SNOWY_SYS_DEFAULT_FILE_ENGINE: 'LOCAL', + SNOWY_SYS_DEFAULT_CAPTCHA_OPEN: false, + SNOWY_SYS_DEFAULT_PASSWORD: '' +}) + +const param = { + category: 'SYS_BASE' +} + +const getSysBaseConfig = () => { + configApi.configList(param).then((data) => { + if (data) { + data.forEach((item) => { + formData.value[item.configKey] = item.configValue ? '' : item.configValue + }) + } else { + message.warning('表单项不存在,请初始化数据库') + } + }) +} diff --git a/src/store/user.js b/src/store/user.js new file mode 100644 index 0000000..6fb7401 --- /dev/null +++ b/src/store/user.js @@ -0,0 +1,32 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' +import loginApi from '@/api/auth/loginApi' +import { useGlobalStore } from '@/store' +import tool from '@/utils/tool' +export const userStore = defineStore('userStore', () => { + // 初始化用户信息 + const initUserInfo = async () => { + const data = await loginApi.getLoginUser() + const globalStore = useGlobalStore() + globalStore.setUserInfo(data) + tool.data.set('USER_INFO', data) + } + // 刷新登录用户信息 + const refreshUserLoginUserInfo = () => { + loginApi.getLoginUser().then((data) => { + const globalStore = useGlobalStore() + globalStore.setUserInfo(data) + tool.data.set('USER_INFO', data) + }) + } + return { initUserInfo, refreshUserLoginUserInfo } +}) diff --git a/src/store/viewTags.js b/src/store/viewTags.js new file mode 100644 index 0000000..b0862cc --- /dev/null +++ b/src/store/viewTags.js @@ -0,0 +1,89 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { defineStore } from 'pinia' + +export const viewTagsStore = defineStore('viewTags', () => { + // 定义state + const viewTags = ref([]) + + // 定义action + const pushViewTags = (route) => { + const target = viewTags.value.find((item) => item.path === route.path) + const isName = route.name + if (!target && isName) { + viewTags.value.push(route) + } + if (target) { + viewTags.value.forEach((item, index) => { + if (item.path === route.path) { + viewTags.value[index] = { ...route, ...item } + // Object.assign(item, route) + } + }) + } + } + const removeViewTags = (route) => { + viewTags.value.forEach((item, index) => { + if (item.fullPath === route.fullPath) { + viewTags.value.splice(index, 1) + } + }) + } + const updateViewTags = (route) => { + viewTags.value.forEach((item, index) => { + if (item.fullPath === route.fullPath) { + viewTags.value[index] = { ...route, ...item } + // Object.assign(item, route) + } + }) + } + // 更新或删除视图标签 + const updateOrRemoveViewTags = (routes) => { + if (routes && routes.length > 0) { + viewTags.value.forEach((item, index) => { + const target = routes.find((route) => route.path === item.fullPath) + if (!target) { + // 路由不存在,删除 + viewTags.value.splice(index, 1) + } else { + // 路由存在,更新 + viewTags.value = viewTags.value.map((item) => { + if (item.fullPath === target.path) { + return { ...item, meta: target.meta } + } + return item + }) + } + }) + } + } + const updateViewTagsTitle = (title = '') => { + const nowFullPath = location.hash.substring(1) + viewTags.value.forEach((item) => { + if (item.fullPath === nowFullPath) { + item.meta.title = title + } + }) + } + const clearViewTags = () => { + viewTags.value = [] + } + + return { + viewTags, + pushViewTags, + removeViewTags, + updateViewTags, + updateViewTagsTitle, + clearViewTags, + updateOrRemoveViewTags + } +}) diff --git a/src/style/default.less b/src/style/default.less new file mode 100644 index 0000000..c3846d6 --- /dev/null +++ b/src/style/default.less @@ -0,0 +1,399 @@ +:root { + --blue-1: #e6f7ff; + --blue-2: #bae7ff; + --blue-3: #91d5ff; + --blue-4: #69c0ff; + --blue-5: #40a9ff; + --blue-6: #1677FF; + --blue-7: #096dd9; + --blue-8: #0050b3; + --blue-9: #003a8c; + --blue-10: #002766; + + --green-1: #f6ffed; + --green-2: #d9f7be; + --green-3: #b7eb8f; + --green-4: #95de64; + --green-5: #73d13d; + --green-6: #52c41a; + --green-7: #389e0d; + --green-8: #237804; + --green-9: #135200; + --green-10: #092b00; + + --red-1: #fff1f0; + --red-2: #ffccc7; + --red-3: #ffa39e; + --red-4: #ff7875; + --red-5: #ff4d4f; + --red-6: #f5222d; + --red-7: #cf1322; + --red-8: #a8071a; + --red-9: #820014; + --red-10: #5c0011; + + --gold-1: #fffbe6; + --gold-2: #fff1b8; + --gold-3: #ffe58f; + --gold-4: #ffd666; + --gold-5: #ffc53d; + --gold-6: #faad14; + --gold-7: #d48806; + --gold-8: #ad6800; + --gold-9: #874d00; + --gold-10: #613400; + + --purple-1: #f9f0ff; + --purple-2: #efdbff; + --purple-3: #d3adf7; + --purple-4: #b37feb; + --purple-5: #9254de; + --purple-6: #722ed1; + --purple-7: #531dab; + --purple-8: #391085; + --purple-9: #22075e; + --purple-10: #120338; + + --cyan-1: #e6fffb; + --cyan-2: #b5f5ec; + --cyan-3: #87e8de; + --cyan-4: #5cdbd3; + --cyan-5: #36cfc9; + --cyan-6: #13c2c2; + --cyan-7: #08979c; + --cyan-8: #006d75; + --cyan-9: #00474f; + --cyan-10: #002329; + + --pink-1: #fff0f6; + --pink-2: #ffd6e7; + --pink-3: #ffadd2; + --pink-4: #ff85c0; + --pink-5: #f759ab; + --pink-6: #eb2f96; + --pink-7: #c41d7f; + --pink-8: #9e1068; + --pink-9: #780650; + --pink-10: #520339; + + --orange-1: #fff7e6; + --orange-2: #ffe7ba; + --orange-3: #ffd591; + --orange-4: #ffc069; + --orange-5: #ffa940; + --orange-6: #fa8c16; + --orange-7: #d46b08; + --orange-8: #ad4e00; + --orange-9: #873800; + --orange-10: #612500; + + --primary-radius: #fff; + --primary-1: var(--blue-1); + --primary-2: var(--blue-2); + --primary-3: var(--blue-3); + --primary-4: var(--blue-4); + --primary-5: var(--blue-5); + --primary-6: var(--blue-6); + --primary-7: var(--blue-7); + --primary-8: var(--blue-8); + --primary-9: var(--blue-9); + --primary-10: var(--blue-10); + + --primary-color: var(--primary-6); + --primary-color-hover: var(--primary-5); + --primary-color-active: var(--primary-7); + --primary-color-outline: var(--primary-2); + + --info-color: var(--primary-color); + --success-color: var(--green-6); + --processing-color: var(--blue-6); + --highlight-color: var(--red-5); + + --warning-color: var(--gold-6); + --warning-color-hover: var(--gold-5); + --warning-color-active: var(--gold-7); + --warning-color-outline: var(--gold-2); + + --error-color: var(--red-5); + --error-color-hover: var(--red-4); + --error-color-active: var(--red-7); + --error-color-outline: var(--red-2); + + --body-background: #fff; + --component-background: #fff; + + --popover-background: @component-background; + --popover-customize-border-color: @border-color-split; + + --text-color: fade(@black, 85%); + --text-color-secondary: fade(@black, 45%); + --text-color-inverse: @white; + --icon-color-hover: fade(@black, 75%); + --heading-color: fade(@black, 85%); + + --item-hover-bg: #f5f5f5; + + // Border color + --border-color-base: hsv(0, 0, 85%); + --border-color-split: hsv(0, 0, 94%); + //--border-color-inverse: @white; + + // + --background-color-light: hsv(0, 0, 98%); + --background-color-base: hsv(0, 0, 96%); + + // Disabled states + --disabled-color: fade(#000, 25%); + --disabled-bg: @background-color-base; + --disabled-color-dark: fade(#fff, 35%); + + // Shadow + --shadow-color: rgba(195, 62, 62, 0.15); + --shadow-color-inverse: @component-background; + --box-shadow-base: @shadow-1-down; + --shadow-1-up: 0 -2px 8px @shadow-color; + --shadow-1-down: 0 2px 8px @shadow-color; + --shadow-1-left: -2px 0 8px @shadow-color; + --shadow-1-right: 2px 0 8px @shadow-color; + --shadow-2: 0 4px 12px @shadow-color; + + // Buttons + --btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + --btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); + --btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + + --btn-default-bg: @component-background; + + --btn-default-ghost-color: @component-background; + --btn-default-ghost-border: @component-background; + + --btn-text-hover-bg: rgba(0, 0, 0, 0.018); + --btn-text-active-bg: rgba(0, 0, 0, 0.028); + + // Checkbox + --checkbox-check-bg: @checkbox-check-color; + + // Descriptions + --descriptions-bg: #fafafa; + + // Divider + --divider-color: rgba(0, 0, 0, 6%); + + // Dropdown 有两个 + --dropdown-menu-submenu-disabled-bg: @component-background; + + // Radio + --radio-dot-disabled-color: fade(@black, 20%); + --radio-solid-checked-color: @component-background; + + // Radio buttons + --radio-disabled-button-checked-bg: coverTintMixin(@black, 90%); + --radio-disabled-button-checked-color: @disabled-color; + + // Layout + --layout-body-background: #f0f2f5; + --layout-header-background: #001529; + --layout-trigger-background: #002140; + //--layout-sider-background-1: coverTintMixin(#001529, 10%); + + // Dropdown 有两个 + --dropdown-menu-bg: @component-background; + + // Input + --input-placeholder-color: hsv(0, 0, 75%); + --input-icon-color: @input-color; + --input-bg: @component-background; + --input-number-handler-active-bg: #f4f4f4; + --input-icon-hover-color: fade(@black, 85%); + + // Mentions + --mentions-dropdown-bg: @component-background; + + // Select + --select-dropdown-bg: @component-background; + --select-background: @component-background; + --select-clear-background: @select-background; + --select-selection-item-bg: @background-color-base; + --select-selection-item-border-color: @border-color-split; + --select-multiple-disabled-background: @input-disabled-bg; + --select-multiple-item-disabled-color: #bfbfbf; + --select-multiple-item-disabled-border-color: @select-border-color; + + // Cascader + --cascader-bg: @component-background; + --cascader-menu-bg: @component-background; + --cascader-menu-border-color-split: @border-color-split; + + // Tooltip + --tooltip-bg: rgba(0, 0, 0, 0.75); + + // Popover + --popover-bg: @component-background; + + // Modal + --modal-header-bg: @component-background; + --modal-header-border-color-split: @border-color-split; + --modal-content-bg: @component-background; + --modal-footer-border-color-split: @border-color-split; + + // Progress + --progress-steps-item-bg: #f3f3f3; + + // Menu + --menu-popup-bg: @component-background; + --menu-dark-bg: @layout-header-background; + --menu-dark-inline-submenu-bg: #000c17; + + // Table + --table-header-bg: @background-color-light; + --table-header-sort-bg: @background-color-base; + --table-body-sort-bg: #fafafa; + --table-row-hover-bg: @background-color-light; + --table-expanded-row-bg: #fbfbfb; + --table-header-cell-split-color: rgba(0, 0, 0, 0.06); + --table-header-sort-active-bg: rgba(0, 0, 0, 0.04); + --table-header-filter-active-bg: rgba(0, 0, 0, 0.04); + --table-filter-btns-bg: inherit; + --table-filter-dropdown-bg: @component-background; + --table-expand-icon-bg: @component-background; + + // TimePicker + --picker-bg: @component-background; + --picker-basic-cell-disabled-bg: @disabled-bg; + --picker-border-color: @border-color-split; + + // Calendar + --calendar-bg: @component-background; + --calendar-input-bg: @input-bg; + --calendar-border-color: @border-color-inverse; + --calendar-full-bg: @calendar-bg; + + // Badge + --badge-text-color: @component-background; + + // Rate + --rate-star-bg: @border-color-split; + + // Card + --card-actions-background: @component-background; + --card-skeleton-bg: #cfd8dc; + --card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), + 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); + + // Comment + --comment-bg: inherit; + --comment-author-time-color: #ccc; + --comment-action-hover-color: #595959; + + // BackTop + --back-top-bg: @text-color-secondary; + --back-top-hover-bg: @text-color; + + // Avatar + --avatar-bg: #ccc; + + // Switch + --switch-bg: @component-background; + + // Pagination + --pagination-item-bg: @component-background; + --pagination-item-bg-active: @component-background; + --pagination-item-link-bg: @component-background; + --pagination-item-disabled-color-active: @white; + --pagination-item-disabled-bg-active: darken(hsv(0, 0, 96%), 10%); + --pagination-item-input-bg: @component-background; + + // PageHeader + --page-header-back-color: #000; + --page-header-ghost-bg: inherit; + + // Slider + --slider-rail-background-color: @background-color-base; + --slider-rail-background-color-hover: #e1e1e1; + --slider-dot-border-color: @border-color-split; + --slider-dot-border-color-active: @primary-4; + + // Tree + --tree-bg: @component-background; + + // Skeleton + --skeleton-to-color: coverShadeMixin(@skeleton-color, 5%); + + // Transfer + --transfer-item-hover-bg: @item-hover-bg; + + // Message + --message-notice-content-bg: @component-background; + + // List + --list-customize-card-bg: @component-background; + + // Drawer + --drawer-bg: @component-background; + + // Timeline + --timeline-color: @border-color-split; + --timeline-dot-color: @primary-color; + + // Image + --image-preview-operation-disabled-color: rgba(255, 255, 255, 0.45); + + // Steps + --steps-nav-arrow-color: fade(@black, 25%); + --steps-background: @component-background; + + // Notification + --notification-bg: @component-background; + + // 侧边栏 + --sidebar-light-shadow: 1px 3px 3px rgba(0, 21, 41, 0.08); + --sidebar-dark-shadow: 0 4px 4px rgba(0, 0, 0, 0.35); + + // 顶栏 + --header-light-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + --header-dark-shadow: 0 1px 4px rgba(0, 0, 0, 0.1); + --header-tool-hover-bg: rgba(0, 0, 0, 0.025); + --header-dark-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-color-split: rgba(0, 0, 0, 0.08); + + // logo + --logo-light-shadow: 1px 2px 3px rgba(0, 21, 41, 0.08); + --logo-dark-shadow: 0 3px 4px rgba(0, 0, 0, 0.35); + + // + --gradient-min: fade(#cfd8dc, 20%); + --gradient-max: fade(#cfd8dc, 40%); + + // font + --font-color: rgba(0, 0, 0, 0.88); + // header-bottom + --header-bottom: rgba(246, 246, 246, 0.85); + // breadcrumb-background + --breadcrumb-background: rgba(253, 253, 253, 0.85); + // background-color + --snowy-background-color: #FFFFFF; + // tag-background + --tag-background: rgba(253, 253, 253); + // + --success-fade-20: fade(#52c41a, 20%); + --error-fade-20: fade(#ff4d4f, 20%); + --warning-fade-20: fade(#faad14, 20%); + + //--primary-fade-20: fade(#1890ff, 20%); + --primary-fade-20: var(--primary-2); + //--primary-fade-8: fade(#1890ff, 8%); + + --white--fade--65: rgba(255,255,255,.65); + --menu-dark-highlight-color: #fff; + --btn-primary-color: #fff; + --tooltip-color: #fff; + --card-above-color: #F0F0F0; + --card-above-border-color: #CCCCCC; + + // workfolw design + --node-wrap-box-color: rgb(255, 255, 255); + --node-wrap-box-before-color: #FFFFFF; + --node-wrap-box-before-borde-color: rgb(202, 202, 202); + --auto-judge-before-color: #FFF; + --cover-line-before-color: #FFF; +} diff --git a/src/style/index.less b/src/style/index.less new file mode 100644 index 0000000..056a13f --- /dev/null +++ b/src/style/index.less @@ -0,0 +1,519 @@ +@import './realdark'; +@import './default'; + +.body, html { + width: 100%; + height: 100%; + background-color: #f6f8f9; +} + +a, button, input, textarea { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + box-sizing: border-box; + outline: none !important; + -webkit-appearance: none; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none; +} + +/* 大布局样式 */ +.admin-ui { + overflow: hidden; + height: 100%; + display: flex; + flex-flow: column; +} + +.admin-ui-wrapper { + display: flex; + flex: 1; + overflow: auto; +} + +.admin-ui-main { + display: flex; + flex-direction: column; + height: 100%; + flex: 1; +} +.main-content-wrapper{ + padding: 11px 11px 0px; + overflow-y: auto; + overflow-x: hidden; + flex: auto; +} + +.main-bottom-wrapper { + height: 60px; + margin-top: 25px; + text-align: center; + flex: auto; + display: flex; + align-items: flex-end; + justify-content: center; + padding-bottom: 25px; +} + +/* 双排菜单布局 */ +.snowy-doublerow-layout-menu { + padding-right: 5px; + line-height: 0; + align-items: center; +} + +.snowy-doublerow-layout-menu-item-fort-div { + overflow: hidden; + text-overflow: ellipsis; + opacity: 1; + display: block; + flex: auto; +} + +.snowy-doublerow-layout-menu-item-fort-div-span { + font-size: 13px; + text-overflow: ellipsis; +} + +.snowy-title{ + color: var(--text-color); +} +.ant-layout-sider-collapsed{ + .logo-bar>span{ + display: none; + } +} +.ant-layout-sider-dark{ + .snowy-header-logo{ + color: #fff; + } +} + +/* 设置抽屉样式 */ +.layout-setting { + position: fixed; + width: 40px; + height: 40px; + border-radius: 3px 0 0 3px; + bottom: 50%; + right: 0px; + z-index: 100; + background: @primary-color; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + cursor: pointer; +} + +.layout-setting i { + color: #fff; +} + +/* 头部 */ +.snowy-header { + height: 50px; + display: flex; + justify-content: space-between; + border-bottom: 1px solid var(--header-bottom); + box-shadow: 0 0.4px 0.5px rgb(0 21 41 / 12%); + .ant-menu-item{ + height: 48px; + line-height: 48px; + } + background: var(--snowy-background-color); +} +// 应用主题色 +.snowy-header-primary-color { + color: white; + background-color: var(--primary-color); + .ant-badge{ + color: white; + } + .ant-breadcrumb-link { + color: white; + } + .ant-breadcrumb-separator { + color: white; + } + .ant-menu-light .ant-menu-item:hover{ + color: #ccc; + background-color: var(--primary-7); + } +} + +.ant-layout-sider-dark { + .snowy-title{ + color: #fff; + } +} + +.snowy-header-left { + display: flex; + align-items: center; + padding-left: 20px; +} + +.snowy-header-left .menu-unfold-outlined { + padding: 0 12px +} + +.snowy-header-right { + display: flex; + align-items: center; +} + +.snowy-header-logo { + height: 49px; + display: flex; + justify-content: space-between; + border-bottom: 1px solid rgba(255, 255, 255, 0.04); +} + +.snowy-header-logo-primary-color { + color: white; + background-color: var(--primary-color); +} + +.snowy-header-logo .logo-bar { + font-weight: bold; + display: flex; + align-items: center; + font-size: 20px; +} + +.snowy-header-logo .logo-bar .logo { + margin-right: 10px; + width: 35px; + height: 35px; +} + +.top-snowy-header { + background: #001529; + color: white; +} +.top-snowy-header-light { + background: #ffffff; + color: #000000; +} +.top-snowy-header-layout { + background: var(--primary-color); + color: #ffffff; +} +.panel-item { + padding: 0 10px; + cursor: pointer; + height: 100%; + display: flex; + align-items: center; + /*color: var(--font-color);*/ +} +.panel-item:hover { + background: var(--header-color-split); +} +.contextmenu { + position: fixed; + width: 200px; + margin:0; + border-radius: 0px; + background: @body-background; + border: 1px solid var(--border-color-split); + box-shadow: 0 2px 12px 0 rgba(0,0,0,.1); + z-index: 3000; + list-style-type: none; + padding: 10px 0; +} +.contextmenu hr { + margin:5px 0; + border: none; + height: 1px; + font-size: 0px; + background-color: var(--border-color-split) +} +.contextmenu li { + display: flex; + align-items: center; + margin:0; + cursor: pointer; + line-height: 30px; + padding: 0 17px; + color: @text-color; +} +.contextmenu li i { + font-size: 14px; + margin-right: 10px; +} +.contextmenu li:hover { + background-color: @component-background; + color: #66b1ff; +} +.contextmenu li.disabled { + cursor: not-allowed; + color: #bbb; + background: transparent; +} + +/*页面最大化*/ +.app-main.main-maximize { + .main-maximize-exit { + display: block; + } + .ant-layout-sider, .ant-layout-sider-dark, .layout-setting, .snowy-header, .admin-ui-breadcrumb, .snowy-tags { + display: none; + } + .main-content-wrapper { + padding: 0; + } +} + +/* 最大化后的退出按钮 */ +.main-maximize-exit { + display: none; + position: fixed; + z-index: 3000; + top: -20px; + padding-top: 18px; + left: 50%; + margin-left: -20px; + border-radius: 50%; + width: 40px; + height: 40px; + cursor: pointer; + background: rgba(0, 0, 0, 0.2); + text-align: center; +} + +.main-maximize-exit:hover { + background: rgba(0, 0, 0, 0.4); +} + +.ant-layout-sider{ + overflow: auto; +} + +/* 重写antdv的一些样式,定义到全局 */ +.ant-card-head-title { + padding: 12px 0!important; +} +.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab { + padding: 12px 0!important; +} +.ant-card-extra { + padding: 12px 0!important; +} +.ant-card-head { + border-bottom: 0px !important; + min-height: 50px !important; +} + +/* 重写antdv的表格滚动条 */ +.ant-table-body, .ant-table-content{ + &::-webkit-scrollbar { + height: 10px; + width: 10px; + } + &::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1); + background: @border-color-split; + } + &::-webkit-scrollbar-track { + -webkit-box-shadow: 0; + border-radius: 10px; + background: @background-color-base; + } +} + +.left-span-label { + border-left: 4px solid var(--primary-color); + font-size: 15px; + color: var(--font-color); + font-weight: 600; + padding-left: 8px; +} + +// 滚动条,需要哪里,加哪个class +body, +.ant-scrolling-effect, +.ant-drawer-wrapper-body, +.ant-drawer-body, +.admin-ui, +.ant-modal-wrap, +.ant-transfer-list-content, +.ant-card, +.ant-layout-sider, +.CodeMirror-scroll, +.main-content-wrapper, +.xn-icon-select-list, +.form-user-table, +.scopeDefineOrgTreeDiv, +.user-table, +.role-table, +.org-table, +.pos-table, +.poi-list, +.snowy-orgpos-vis, +.index-message-list, +.ant-picker-time-panel-column, +.timeline-div, +.gen-preview-content, +.ant-menu, +.ant-tabs-dropdown-menu, +.xn-table, +.selector-table, +.card-div, +.ant-table-body, + +.admin-ui-main{ + &::-webkit-scrollbar { + /*滚动条整体样式*/ + width : 0; /*高宽分别对应横竖滚动条的尺寸*/ + height: 0; + } + &::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + border-radius : 10px; + background-color: @component-background; // skyblue + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.2) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.2) 50%, + rgba(255, 255, 255, 0.2) 75%, + transparent 75%, + transparent + ); + } + &::-webkit-scrollbar-track { + /*滚动条里面轨道*/ + box-shadow : inset 0 0 2px rgba(0, 0, 0, 0.2); + background : @component-background; + border-radius: 5px; + opacity: 0; + display: none; + } +} + +.json-box-9136076486841527{ + overflow: hidden!important;; + .CodeMirror-scrollbar-filler{ + display: none!important; + } +} +.ant-modal-close-x .anticon { + padding: 2px !important; +} +.xn-mb10 { + margin-bottom: 10px; +} +.xn-mt4 { + margin-top: 4px; +} +.xn-mg08 { + margin: 0 8px; +} +.xn-fdr { + float: right; +} +.xn-wd { + width: 100%; +} +.xn-wd90 { + width: 90px; +} +.xn-wdcalc-70 { + width: calc(100% - 70px); +} +.xn-mr8 { + margin-right: 8px; +} +.xn-ht400 { + height: 400px; +} +.xn-wh25 { + height: 25px; + width: 25px; +} +.xn-ml10 { + margin-left: 10px; +} +.xn-pl0 { + padding-left: 0px; +} +.xn-pd8 { + padding: 8px; +} +.xn-pb10 { + padding-bottom: 10px; +} +.xn-color-a0a0a0 { + color: #a0a0a0; +} +.xn-color-d9d9d9 { + color: #d9d9d9; +} +.xn-color-ff4d4f { + color: #ff4d4f; +} +.xn-color-00025 { + color: rgba(0, 0, 0, 0.25); +} +.xn-jk-line { + width: 188px; + margin-bottom: 8px; + display: block; +} +.xn-findform-line { + border: 1px solid var(--border-color-split); + cursor: pointer; + width: 100%; + height: 40px; +} +.odd { + background-color: var(--table-row-hover-bg); +} +.snowy-theme-dark .odd { + background-color: #1d1d1d +} +// 以下是重写表单设计器的样式 +.list-main { + background: var(--auto-judge-before-color) !important; +} +.drag-move-box:before { + background: var(--primary-color) !important; +} +.drag-move-box>.delete { + background: var(--primary-color) !important; +} +.drag-move-box>.copy { + background: var(--primary-color) !important; +} +.drag-move-box .show-key-box { + color: var(--primary-color) !important; +} +.left-ul-item:hover { + color: var(--primary-color) !important; + border: 1px solid var(--primary-color) !important; + -webkit-box-shadow: 0 2px 6px var(--primary-color) !important; + box-shadow: 0 2px 6px var(--primary-color) !important; +} +.list-main>.moving:before { + background: var(--primary-color) !important; +} +.operating-area a:hover { + color: var(--primary-color) !important; +} +.batch-box>.delete { + background: var(--primary-color) !important; +} +.batch-box>.copy { + background: var(--primary-color) !important; +} +.batch-box.active:before { + background: var(--primary-color) !important; +} diff --git a/src/style/readme.md b/src/style/readme.md new file mode 100644 index 0000000..700dda4 --- /dev/null +++ b/src/style/readme.md @@ -0,0 +1,7 @@ + +适配暗黑模式的操作 + +直接 var(--primary-color) + +例如:新建个变量,在default.less跟realdark.less中设定好,这个时候就会跟着颜色的主题变化 + diff --git a/src/style/realdark.less b/src/style/realdark.less new file mode 100644 index 0000000..644e6c6 --- /dev/null +++ b/src/style/realdark.less @@ -0,0 +1,417 @@ +[snowy-theme=realdark] { + .ant-btn-primary{ + color: #fff; + &:hover, &:focus{ + color: #fff; + } + } + +} +.fade() { + @functions: ~`(function() { + this.fade = function(color, amount) { + if (String(color).indexOf('var(') === 0) { + if (color.indexOf('--primary-color') !== -1 ) { + var m = amount > 10 ? amount/10 :amount + return color.replace('-color)', '-' + m + ')') + } + return color.replace(')', '--fade--' + parseInt(amount) + ')') + } + return color + } + })()`; +} +.fade(); + +@import 'ant-design-vue/dist/reset.css'; + +.snowy-theme-dark { + --blue-1: #111d2c; + --blue-2: #112a45; + --blue-3: #15395b; + --blue-4: #164c7e; + --blue-5: #1765ad; + --blue-6: #177ddc; + --blue-7: #3c9ae8; + --blue-8: #65b7f3; + --blue-9: #8dcff8; + --blue-10: #b7e3fa; + + --green-1: #162312; + --green-2: #1d3712; + --green-3: #274916; + --green-4: #306317; + --green-5: #3c8618; + --green-6: #49aa19; + --green-7: #6abe39; + --green-8: #8fd460; + --green-9: #b2e58b; + --green-10: #d5f2bb; + + --red-1: #2a1215; + --red-2: #431418; + --red-3: #58181c; + --red-4: #791a1f; + --red-5: #a61d24; + --red-6: #f5222d; + --red-7: #e84749; + --red-8: #f37370; + --red-9: #f89f9a; + --red-10: #fac8c3; + + --gold-1: #2b2111; + --gold-2: #443111; + --gold-3: #594214; + --gold-4: #7c5914; + --gold-5: #aa7714; + --gold-6: #d89614; + --gold-7: #e8b339; + --gold-8: #f3cc62; + --gold-9: #f8df8b; + --gold-10: #faedb5; + + --purple-1: #1a1325; + --purple-2: #24163a; + --purple-3: #301c4d; + --purple-4: #3e2069; + --purple-5: #51258f; + --purple-6: #642ab5; + --purple-7: #854eca; + --purple-8: #ab7ae0; + --purple-9: #cda8f0; + --purple-10: #ebd7fa; + + --cyan-1: #112123; + --cyan-2: #113536; + --cyan-3: #144848; + --cyan-4: #146262; + --cyan-5: #138585; + --cyan-6: #13a8a8; + --cyan-7: #33bcb7; + --cyan-8: #58d1c9; + --cyan-9: #84e2d8; + --cyan-10: #b2f1e8; + + --pink-1: #291321; + --pink-2: #40162f; + --pink-3: #551c3b; + --pink-4: #75204f; + --pink-5: #a02669; + --pink-6: #cb2b83; + --pink-7: #e0529c; + --pink-8: #f37fb7; + --pink-9: #f8a8cc; + --pink-10: #fad2e3; + + --orange-1: #2b1d11; + --orange-2: #442a11; + --orange-3: #593815; + --orange-4: #7c4a15; + --orange-5: #aa6215; + --orange-6: #d87a16; + --orange-7: #e89a3c; + --orange-8: #f3b765; + --orange-9: #f8cf8d; + --orange-10: #fae3b7; + + --primary-radius: #141414; + --primary-1: var(--blue-1); + --primary-2: var(--blue-2); + --primary-3: var(--blue-3); + --primary-4: var(--blue-4); + --primary-5: var(--blue-5); + --primary-6: var(--blue-6); + --primary-7: var(--blue-7); + --primary-8: var(--blue-8); + --primary-9: var(--blue-9); + --primary-10: var(--blue-10); + + --primary-color: var(--primary-6); + --primary-color-hover: var(--primary-5); + --primary-color-active: var(--primary-7); + --primary-color-outline: var(--primary-2); + + --info-color: var(--primary-color); + --success-color: var(--green-6); + --processing-color: var(--blue-6); + --highlight-color: var(--red-5); + + --warning-color: var(--gold-6); + --warning-color-hover: var(--gold-5); + --warning-color-active: var(--gold-7); + --warning-color-outline: var(--gold-2); + + --error-color: var(--red-5); + --error-color-hover: var(--red-4); + --error-color-active: var(--red-7); + --error-color-outline: var(--red-2); + + --body-background: @black; + --component-background: #141414; + --popover-background: #1f1f1f; + --popover-customize-border-color: #3a3a3a; + + --text-color: fade(@white, 85%); + --text-color-secondary: fade(@white, 45%); + --text-color-inverse: @white; + --icon-color-hover: fade(@white, 75%); + --heading-color: fade(@white, 85%); + + --item-hover-bg: fade(@white, 8%); + + // Border color + --border-color-base: #434343; + --border-color-split: #303030; + //--border-color-inverse: @black; + + // + --background-color-light: fade(@white, 4%); + --background-color-base: fade(@white, 8%); + + // Disabled states + --disabled-color: fade(@white, 30%); + --disabled-bg: @background-color-base; + --disabled-color-dark: fade(@white, 30%); + + // Shadow + --shadow-color: rgba(0, 0, 0, 0.45); + --shadow-color-inverse: @component-background; + --box-shadow-base: @shadow-2; + --shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), + 0 -9px 28px 0 rgba(0, 0, 0, 0.2), 0 -12px 48px 16px rgba(0, 0, 0, 0.12); + --shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.32), + 0 9px 28px 0 rgba(0, 0, 0, 0.2), 0 12px 48px 16px rgba(0, 0, 0, 0.12); + --shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.32), + 9px 0 28px 0 rgba(0, 0, 0, 0.2), 12px 0 48px 16px rgba(0, 0, 0, 0.12); + --shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.48), + 0 6px 16px 0 rgba(0, 0, 0, 0.32), 0 9px 28px 8px rgba(0, 0, 0, 0.2); + + // Buttons + --btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); + --btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); + --btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + + --btn-default-bg: transparent; + + --btn-default-ghost-color: @text-color; + --btn-default-ghost-border: fade(@white, 25%); + + --btn-text-hover-bg: rgba(255, 255, 255, 0.03); + --btn-text-active-bg: rgba(255, 255, 255, 0.04); + + // Checkbox + --checkbox-check-bg: transparent; + + // Descriptions + --descriptions-bg: @background-color-light; + + // Divider + --divider-color: rgba(255, 255, 255, 12%); + + // Dropdown 有两个 + --dropdown-menu-submenu-disabled-bg: transparent; + + // Radio + --radio-dot-disabled-color: fade(@white, 20%); + --radio-solid-checked-color: @white; + + // Radio buttons + --radio-disabled-button-checked-bg: fade(@white, 20%); + --radio-disabled-button-checked-color: @disabled-color; + + // Layout + --layout-body-background: @body-background; + --layout-header-background: @popover-background; + --layout-trigger-background: #262626; + //--layout-sider-background-1: tint(#1f1f1f, 10%); + + // Dropdown 有两个 + --dropdown-menu-bg: @popover-background; + + // Input + --input-placeholder-color: fade(@white, 30%); + --input-icon-color: fade(@white, 30%); + --input-bg: transparent; + --input-number-handler-active-bg: @item-hover-bg; + --input-icon-hover-color: fade(@white, 85%); + + // Mentions + --mentions-dropdown-bg: @popover-background; + + // Select + --select-dropdown-bg: @popover-background; + --select-background: transparent; + --select-clear-background: @component-background; + --select-selection-item-bg: fade(@white, 8); + --select-selection-item-border-color: @border-color-split; + --select-multiple-disabled-background: @component-background; + --select-multiple-item-disabled-color: #595959; + --select-multiple-item-disabled-border-color: @popover-background; + + // Cascader + --cascader-bg: transparent; + --cascader-menu-bg: @popover-background; + --cascader-menu-border-color-split: @border-color-split; + + // Tooltip + --tooltip-bg: #434343; + + // Popover + --popover-bg: @popover-background; + + // Modal + --modal-header-bg: @popover-background; + --modal-header-border-color-split: @border-color-split; + --modal-content-bg: @popover-background; + --modal-footer-border-color-split: @border-color-split; + + // Progress + --progress-steps-item-bg: fade(@white, 8%); + + // Menu + --menu-popup-bg: @popover-background; + --menu-dark-bg: @popover-background; + --menu-dark-inline-submenu-bg: @component-background; + + // Table + --table-header-bg: #1d1d1d; + --table-header-sort-bg: #262626; + --table-body-sort-bg: fade(@white, 1%); + --table-row-hover-bg: #262626; + --table-expanded-row-bg: @table-header-bg; + --table-header-cell-split-color: fade(@white, 8%); + --table-header-sort-active-bg: #303030; + --table-header-filter-active-bg: #434343; + --table-filter-btns-bg: @popover-background; + --table-filter-dropdown-bg: @popover-background; + --table-expand-icon-bg: transparent; + + // TimePicker + --picker-bg: transparent; + --picker-basic-cell-disabled-bg: #303030; + --picker-border-color: @border-color-split; + + // Calendar + --calendar-bg: @popover-background; + --calendar-input-bg: @calendar-bg; + --calendar-border-color: transparent; + --calendar-full-bg: @component-background; + + // Badge + --badge-text-color: @white; + + // Rate + --rate-star-bg: fade(@white, 12%); + + // Card + --card-actions-background: @component-background; + --card-skeleton-bg: #303030; + --card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), + 0 3px 6px 0 rgba(0, 0, 0, 0.48), 0 5px 12px 4px rgba(0, 0, 0, 0.36); + + // Comment + --comment-bg: transparent; + --comment-author-time-color: fade(@white, 30%); + --comment-action-hover-color: fade(@white, 65%); + + // BackTop + --back-top-bg: var(--tooltip-bg); + --back-top-hover-bg: var(--border-color-split); + + // Avatar + --avatar-bg: fade(@white, 30%); + + // Switch + --switch-bg: @white; + + // Pagination + --pagination-item-bg: transparent; + --pagination-item-bg-active: transparent; + --pagination-item-link-bg: transparent; + --pagination-item-disabled-color-active: @black; + --pagination-item-disabled-bg-active: fade(@white, 25%); + --pagination-item-input-bg: @pagination-item-bg; + + // PageHeader + --page-header-back-color: @icon-color; + --page-header-ghost-bg: transparent; + + // Slider + --slider-rail-background-color: #262626; + --slider-rail-background-color-hover: @border-color-base; + --slider-dot-border-color: @border-color-split; + --slider-dot-border-color-active: @primary-4; + + // Tree + --tree-bg: transparent; + + // Skeleton + --skeleton-to-color: fade(@white, 16%); + + // Transfer + --transfer-item-hover-bg: #262626; + + // Message + --message-notice-content-bg: @popover-background; + + // List + --list-customize-card-bg: transparent; + + // Drawer + --drawer-bg: @popover-background; + + // Timeline + --timeline-color: @border-color-split; + --timeline-dot-color: @primary-color; + + // Steps + --steps-nav-arrow-color: fade(@white, 20%); + --steps-background: transparent; + + // Notification + --notification-bg: @popover-background; + + // 侧边栏 + --sidebar-light-shadow: 0 4px 4px rgba(0, 0, 0, 0.6); + --sidebar-dark-shadow: 0 4px 4px rgba(0, 0, 0, 0.6); + + // 顶栏 + --header-light-shadow: 0 1px 4px rgba(0, 0, 0, 0.6); + --header-dark-shadow: 0 1px 4px rgba(0, 0, 0, 0.6); + --header-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-dark-tool-hover-bg: rgba(255, 255, 255, 0.05); + --header-color-split: rgba(255, 255, 255, 0.15); + + // logo + --logo-light-shadow: 0 3px 4px rgba(0, 0, 0, 0.6); + --logo-dark-shadow: 0 3px 4px rgba(0, 0, 0, 0.6); + + // + --gradient-min: fade(#303030, 20%); + --gradient-max: fade(#303030, 40%); + + // font + --font-color: #FFFFFF; + // header-bottom + --header-bottom: rgba(54, 54, 54, 0.6); + // breadcrumb-background + --breadcrumb-background: rgba(54, 54, 54, 0.6); + // background-color + --snowy-background-color: #141414; + // tag-background + --tag-background: rgba(56, 56, 56); + // + --primary-fade-20: var(--primary-2); + + --black--fade--85: rgba(255, 255, 255, 0.85); + --switch-shadow-color: 0 2px 4px rgb(0 35 11 / 20%); + --card-above-color: #303030; + --card-above-border-color: #484848; + + // workfolw design + --node-wrap-box-color: #303030; + --node-wrap-box-before-color: rgba(255, 255, 255, 0.09); // 箭头旁边 + --node-wrap-box-before-borde-color: rgba(255, 255, 255, 0.09); // 箭头 + --auto-judge-before-color: #141414; // 箭头背景 + --cover-line-before-color: #141414; +} diff --git a/src/tailwind.css b/src/tailwind.css new file mode 100644 index 0000000..2f67a33 --- /dev/null +++ b/src/tailwind.css @@ -0,0 +1,91 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer components { +} + +@layer utilities { +} + +/*默认为row,横向排列*/ +.layout-items-center { + display: flex; + align-items: center; +} + +.layout-items-baseline { + display: flex; + align-items: baseline; +} + +.layout-baseline-between { + display: flex; + align-items: baseline; + justify-content: space-between; +} + +/*左右居中*/ +.layout-center { + display: flex; + justify-content: center; +} + +/*两边排列*/ +.layout-slide { + display: flex; + align-items: center; + justify-content: space-between; +} + +/*左中右排列*/ +.layout-around { + display: flex; + align-items: center; + justify-content: space-around; +} + +/*两边排列, 换行*/ +.layout-slide-wrap { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; +} + +/*上下排列*/ +.layout-col-slide { + display: flex; + flex-direction: column; + justify-content: space-between; +} + +/*左右垂直居中*/ + +.layout-abs-center { + display: flex; + justify-content: center; + align-items: center; +} + +/*横向左右垂直居右*/ +.layout-end { + display: flex; + justify-content: flex-end; + align-items: center; +} + +/*纵向左右垂直居中*/ +.layout-col-center { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.text-color{ + color: var(--text-color); +} + + + diff --git a/src/utils/color.js b/src/utils/color.js new file mode 100644 index 0000000..595a39b --- /dev/null +++ b/src/utils/color.js @@ -0,0 +1,64 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/* eslint-disable eqeqeq */ +export default { + // 加深 + darken(color, level) { + const rgbc = this.hexToRgb(color) + for (let i = 0; i < 3; i++) rgbc[i] = Math.floor(rgbc[i] * (1 - level)) + return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]) + }, + // 变淡 + lighten(color, level) { + const rgbc = this.hexToRgb(color) + for (let i = 0; i < 3; i++) rgbc[i] = Math.floor((255 - rgbc[i]) * level + rgbc[i]) + return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]) + }, + // rgb颜色转hex颜色 + rgbToHex(rgb) { + const bg = rgb.match(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/) + // 返回空字符串 + if (!bg) { + return '' + } + return '#' + toHex(bg[1]) + toHex(bg[2]) + toHex(bg[3]) + }, + // hex颜色转rgb颜色 + hexToRgb(hex) { + // 去除开头 # + if (hex.startsWith('#')) { + hex = hex.substring(1) + } + // 如果当前传入的是 3 位小数值,直接转换为 6 位进行处理 + if (hex.length === 3) { + hex = [hex[0], hex[0], hex[1], hex[1], hex[2], hex[2]].join('') + } + if (hex.length !== 6) { + throw new Error('invalid hex:' + hex) + } + const r = parseInt(hex.slice(0, 2), 16) + const g = parseInt(hex.slice(2, 4), 16) + const b = parseInt(hex.slice(4, 6), 16) + if ([r, g, b].some((x) => Number.isNaN(x))) { + throw new Error('invalid hex:' + hex) + } + return [r, g, b] + }, + // 透明度 + alpha(color, alpha = 1) { + let hex = color.length > 7 ? color.rgbToHex(color) : color + const { r, g, b } = color.hexToRgb(hex) + return `rgba(${r}, ${g}, ${b}, ${alpha})` + } +} + +// 转Hex +const toHex = (x) => ('0' + parseInt(x).toString(16)).slice(-2) diff --git a/src/utils/device.js b/src/utils/device.js new file mode 100644 index 0000000..64d30fc --- /dev/null +++ b/src/utils/device.js @@ -0,0 +1,43 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import enquireJs from 'enquire.js' + +export const DEVICE_TYPE = { + DESKTOP: 'desktop', + TABLET: 'tablet', + MOBILE: 'mobile' +} + +export const deviceEnquire = function (callback) { + const matchDesktop = { + match: () => { + callback && callback(DEVICE_TYPE.DESKTOP) + } + } + + const matchTablet = { + match: () => { + callback && callback(DEVICE_TYPE.TABLET) + } + } + + const matchMobile = { + match: () => { + callback && callback(DEVICE_TYPE.MOBILE) + } + } + + // screen and (max-width: 1087.99px) + enquireJs + .register('screen and (max-width: 576px)', matchMobile) + .register('screen and (min-width: 576px) and (max-width: 1199px)', matchTablet) + .register('screen and (min-width: 1200px)', matchDesktop) +} diff --git a/src/utils/downloadUtil.js b/src/utils/downloadUtil.js new file mode 100644 index 0000000..ba4ab92 --- /dev/null +++ b/src/utils/downloadUtil.js @@ -0,0 +1,37 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { message } from 'ant-design-vue' + +export default { + // 对下载的流进行处理,直接从浏览器下载下来 + resultDownload(res) { + if (res.data.type === 'application/json') { + // 错误以及无权限 + const reader = new FileReader(res.data) + reader.readAsText(res.data) + reader.onload = () => { + const result = JSON.parse(reader.result) + message.error(result.msg) + } + } else { + const blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' }) + const contentDisposition = res.headers['content-disposition'] + const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + const $link = document.createElement('a') + $link.href = URL.createObjectURL(blob) + $link.download = decodeURIComponent(patt.exec(contentDisposition)[1]) + $link.click() + document.body.appendChild($link) + document.body.removeChild($link) // 下载完成移除元素 + window.URL.revokeObjectURL($link.href) // 释放掉blob对象 + } + } +} diff --git a/src/utils/enum.js b/src/utils/enum.js new file mode 100644 index 0000000..eec36b2 --- /dev/null +++ b/src/utils/enum.js @@ -0,0 +1,15 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const ThemeModeEnum = { + LIGHT: 'light', + DARK: 'dark', + REAL_DARK: 'realDark' +} diff --git a/src/utils/errorHandler.js b/src/utils/errorHandler.js new file mode 100644 index 0000000..1671cb5 --- /dev/null +++ b/src/utils/errorHandler.js @@ -0,0 +1,29 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export default (error) => { + // 过滤HTTP请求错误 + if (error.code) { + return false + } + const errorMap = { + InternalError: 'Javascript引擎内部错误', + ReferenceError: '未找到对象', + TypeError: '使用了错误的类型或对象', + RangeError: '使用内置对象时,参数超范围', + SyntaxError: '语法错误', + EvalError: '错误的使用了Eval', + URIError: 'URI错误' + } + const errorName = errorMap[error.name] || '未知错误' + nextTick(() => { + console.error(errorName) + }) +} diff --git a/src/utils/formRules.js b/src/utils/formRules.js new file mode 100644 index 0000000..778b6a2 --- /dev/null +++ b/src/utils/formRules.js @@ -0,0 +1,51 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +export const required = (message, trigger = ['blur', 'change']) => ({ + required: true, + message, + trigger +}) + +// 常用正则规则大全:https://any86.github.io/any-rule/ + +export const rules = { + phone: { + pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/, + message: '请填写符合要求的11位手机号', + trigger: 'blur' + }, + email: { + pattern: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, + message: '请填写正确的邮箱号', + trigger: 'blur' + }, + idCard: { + pattern: + /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/, + message: '请填写符合要求的身份证号', + trigger: 'blur' + }, + lettersNum: { + pattern: /^[A-Za-z0-9]+$/, + message: '填写内容须是字母或数字组成', + trigger: 'blur' + }, + number: { + pattern: /^\d{1,}$/, + message: '填写内容必须是纯数字', + trigger: 'blur' + }, + price: { + pattern: /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0)$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/, + message: '只支持正数金额', + trigger: 'blur' + } +} diff --git a/src/utils/loading.js b/src/utils/loading.js new file mode 100644 index 0000000..35ce380 --- /dev/null +++ b/src/utils/loading.js @@ -0,0 +1,38 @@ +import { nextTick } from 'vue' + +/** + * 页面全局 Loading + * @method start 创建 loading + * @method done 移除 loading + */ +export const NextLoading = { + // 创建 loading + start: () => { + const el = document.querySelector('.admin-ui') + if (el) return + const bodys = document.body + const div = document.createElement('div') + div.setAttribute('class', 'admin-ui') + const htmls = ` +
+ +
+
Snowy
+
` + div.innerHTML = htmls + bodys.insertBefore(div, bodys.childNodes[0]) + window.nextLoading = true + }, + // 移除 loading + done: (time = 0) => { + nextTick(() => { + setTimeout(() => { + window.nextLoading = false + const el = document.querySelector('.admin-ui') + el?.parentNode?.removeChild(el) + }, time) + }) + } +} diff --git a/src/utils/objects.js b/src/utils/objects.js new file mode 100644 index 0000000..ec8cfef --- /dev/null +++ b/src/utils/objects.js @@ -0,0 +1,39 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import pinyin from 'js-pinyin' + +// 中文转拼音 传入仅首字母 +Object.defineProperty(String.prototype, 'toPinyin', { + writable: false, + enumerable: false, + configurable: true, + value: function (first) { + let str = this + if (first) { + return pinyin.getCamelChars(str).replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') + } + return pinyin.getFullChars(str).replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '') + } +}) + +// 字符检索 传入检索值 +Object.defineProperty(String.prototype, 'filter', { + writable: false, + enumerable: false, + configurable: true, + value: function (input) { + let str = this + let en = str.toLowerCase().includes(input.toLowerCase()) + let zhFull = str.toPinyin().toLowerCase().includes(input.toLowerCase()) + let zhFirst = str.toPinyin(true).toLowerCase().includes(input.toLowerCase()) + return en || zhFull || zhFirst + } +}) diff --git a/src/utils/permission/index.js b/src/utils/permission/index.js new file mode 100644 index 0000000..0d8b5ae --- /dev/null +++ b/src/utils/permission/index.js @@ -0,0 +1,40 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import tool from '@/utils/tool' + +/** + * 权限判断是否能看到这个按钮,同时后端也做了校验,前端只是显示与不显示 + * @param {string, array} data 按钮的权限点,可以是单个字符串,也可以是数组 + * @param {string} rule or代表或,and代表与 + * 使用方法: + * 例如 buttonCodeList 的数据为: ['button1', 'button2', 'button3'] + * 想要判断 button1 的权限,可以写成:hasPerm('button1') + * 想要判断 button1 或 button2 的权限,可以写成:hasPerm(['button1', 'button2' ]) + * 想要判断 button1 与 button2 的权限,可以写成:hasPerm(['button1', 'button2' ], 'and') + */ +export function hasPerm(data, rule = 'or') { + if (!data) { + return false + } + const userInfo = tool.data.get('USER_INFO') + if (!userInfo) { + return false + } + const { buttonCodeList } = userInfo + if (!buttonCodeList) { + return false + } + if (Array.isArray(data)) { + const fn = rule === 'or' ? 'some' : 'every' + return data[fn]((item) => buttonCodeList.includes(item)) + } + return buttonCodeList.includes(data) +} diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..1c799dd --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,185 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +// 统一的请求发送 +import axios from 'axios' +import qs from 'qs' +import { Modal, message, notification } from 'ant-design-vue' +import sysConfig from '@/config/index' +import tool from '@/utils/tool' + +// 以下这些code需要重新登录 +const reloadCodes = [401, 1011007, 1011008] +const errorCodeMap = { + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +// 定义一个重新登录弹出窗的变量 +const loginBack = ref(false) +// 创建 axios 实例 +const service = axios.create({ + baseURL: '/api', // api base_url + timeout: sysConfig.TIMEOUT // 请求超时时间 +}) + +// HTTP request 拦截器 +service.interceptors.request.use( + (config) => { + const token = tool.data.get('TOKEN') + if (token) { + config.headers[sysConfig.TOKEN_NAME] = sysConfig.TOKEN_PREFIX + token + } + if (!sysConfig.REQUEST_CACHE && config.method === 'get') { + config.params = config.params || {} + config.params._ = new Date().getTime() + } + Object.assign(config.headers, sysConfig.HEADERS) + return config + }, + (error) => { + return Promise.reject(error) + } +) + +// 保持重新登录Modal的唯一性 +const error = () => { + loginBack.value = true + Modal.error({ + title: '提示:', + okText: '重新登录', + content: '登录已失效, 请重新登录', + onOk: () => { + loginBack.value = false + tool.data.remove('TOKEN') + tool.data.remove('USER_INFO') + tool.data.remove('MENU') + tool.data.remove('PERMISSIONS') + window.location.reload() + } + }) +} + +// HTTP response 拦截器 +service.interceptors.response.use( + (response) => { + // 配置了blob,不处理直接返回文件流 + if (response.config.responseType === 'blob') { + if (response.status === 200) { + return response + } else { + message.warning('文件下载失败或此文件不存在') + return + } + } + const data = response.data + const code = data.code + if (reloadCodes.includes(code)) { + if (!loginBack.value) { + error() + } + return + } + if (code !== 200) { + const customErrorMessage = response.config.customErrorMessage + message.error(customErrorMessage || data.msg) + return Promise.reject(data) + // 自定义错误提示,覆盖后端返回的message + // 使用示例: + // export function customerList (data) { + // return request('list', data, 'get', { + // customErrorMessage: '自定义错误消息提示' + // }); + // } + } else { + // 统一成功提示 + const responseUrls = response.config.url.split('/') + const apiNameArray = [ + 'add', + 'edit', + 'delete', + 'update', + 'grant', + 'reset', + 'stop', + 'pass', + 'disable', + 'enable', + 'revoke', + 'suspend', + 'active', + 'turn', + 'adjust', + 'reject', + 'saveDraft' + ] + apiNameArray.forEach((apiName) => { + if (responseUrls[responseUrls.length - 1] === apiName) { + message.success(data.msg) + } + }) + } + return Promise.resolve(data.data) + }, + (error) => { + if (error) { + const status = 503 + const description = errorCodeMap[status] + notification.error({ + message: '请求错误', + description + }) + return Promise.reject(status) + } + } +) + +// 适配器, 用于适配不同的请求方式 +export const baseRequest = (url, value = {}, method = 'post', options = {}) => { + url = sysConfig.API_URL + url + if (method === 'post') { + return service.post(url, value, options) + } else if (method === 'get') { + return service.get(url, { params: value, ...options }) + } else if (method === 'formdata') { + // form-data表单提交的方式 + return service.post(url, qs.stringify(value), { + headers: { + 'Content-Type': 'multipart/form-data' + }, + ...options + }) + } else { + // 其他请求方式,例如:put、delete + return service({ + method: method, + url: url, + data: value, + ...options + }) + } +} + +// 模块内的请求, 会自动加上模块的前缀 +export const moduleRequest = + (moduleUrl) => + (url, ...arg) => { + return baseRequest(moduleUrl + url, ...arg) + } + +export default service diff --git a/src/utils/routerUtil.js b/src/utils/routerUtil.js new file mode 100644 index 0000000..24905a1 --- /dev/null +++ b/src/utils/routerUtil.js @@ -0,0 +1,43 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import userRoutes from '@/config/route' + +// 获取第一个界面 +const getIndexMenu = (menu) => { + if (menu[0] && menu[0].children) { + let indexMenu = menu[0].children[0] + // 如果第一个菜单为目录,接着往下找 + if (indexMenu.meta.type === 'catalog') { + indexMenu = traverseChild(menu) + } + return indexMenu + } else { + return userRoutes.menu[0] + } +} +// 遍历进行判断,其中处理了被隐藏的 +const traverseChild = (menu) => { + if (menu[0] && menu[0].children !== undefined) { + if (menu[0].children.length > 0) { + if (menu[0].children[0] && menu[0].children[0].meta.hidden && menu[0].children[0].meta.hidden === true) { + return menu[0] + } else { + return traverseChild(menu[0].children) + } + } + } else { + return menu[0] + } +} + +export default { + getIndexMenu +} diff --git a/src/utils/smCrypto.js b/src/utils/smCrypto.js new file mode 100644 index 0000000..7f7bab0 --- /dev/null +++ b/src/utils/smCrypto.js @@ -0,0 +1,36 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * 加解密的工具类 + * 使用:https://github.com/JuneAndGreen/sm-crypto + * + * @author yubaoshan + */ +import smCrypto from 'sm-crypto' + +const sm2 = smCrypto.sm2 +const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默认为1 +const publicKey = + '04298364ec840088475eae92a591e01284d1abefcda348b47eb324bb521bb03b0b2a5bc393f6b71dabb8f15c99a0050818b56b23f31743b93df9cf8948f15ddb54' + +/** + * 国密加解密工具类 + */ +export default { + // SM2加密 + doSm2Encrypt(msgString) { + return sm2.doEncrypt(msgString, publicKey, cipherMode) + }, + // SM2数组加密 + doSm2ArrayEncrypt(msgString) { + return sm2.doEncrypt(msgString, publicKey, cipherMode) + } +} diff --git a/src/utils/template.js b/src/utils/template.js new file mode 100644 index 0000000..bba3316 --- /dev/null +++ b/src/utils/template.js @@ -0,0 +1,326 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/* ! + * template.js v0.7.1 (https://github.com/yanhaijing/template.js) + * API https://github.com/yanhaijing/template.js/blob/master/doc/api.md + * Copyright 2015 yanhaijing. All Rights Reserved + * Licensed under MIT (https://github.com/yanhaijing/template.js/blob/master/MIT-LICENSE.txt) + */ +/* eslint-disable */ +;(function(root, factory) { + var template = factory(root); + if (typeof define === 'function' && define.amd) { + // AMD + define('template', function() { + return template; + }); + } else if (typeof exports === 'object') { + // Node.js + module.exports = template; + } else { + // Browser globals + var _template = root.template; + + template.noConflict = function() { + if (root.template === template) { + root.template = _template; + } + + return template; + }; + root.template = template; + } +}(this, function(root) { + 'use strict'; + var o = { + sTag: '<%',//开始标签 + eTag: '%>',//结束标签 + compress: false,//是否压缩html + escape: true, //默认输出是否进行HTML转义 + error: function (e) {}//错误回调 + }; + var functionMap = {}; //内部函数对象 + //修饰器前缀 + var modifierMap = { + '': function (param) {return nothing(param)}, + 'h': function (param) {return encodeHTML(param)}, + 'u': function (param) {return encodeURI(param)} + }; + + var toString = {}.toString; + var slice = [].slice; + function type(x) { + if(x === null){ + return 'null'; + } + + var t= typeof x; + + if(t !== 'object'){ + return t; + } + + var c = toString.call(x).slice(8, -1).toLowerCase(); + if(c !== 'object'){ + return c; + } + + if(x.constructor==Object){ + return c; + } + + return 'unknown'; + } + + function isObject(obj) { + return type(obj) === 'object'; + } + function isFunction(fn) { + return type(fn) === 'function'; + } + function isString(str) { + return type(str) === 'string'; + } + function extend() { + var target = arguments[0] || {}; + var arrs = slice.call(arguments, 1); + var len = arrs.length; + + for (var i = 0; i < len; i++) { + var arr = arrs[i]; + for (var name in arr) { + target[name] = arr[name]; + } + + } + return target; + } + function clone() { + var args = slice.call(arguments); + return extend.apply(null, [{}].concat(args)); + } + function nothing(param) { + return param; + } + function encodeHTML(source) { + return String(source) + .replace(/&/g,'&') + .replace(//g,'>') + .replace(/\\/g,'\') + .replace(/"/g,'"') + .replace(/'/g,'''); + } + function compress(html) { + return html.replace(/\s+/g, ' ').replace(//g, ''); + } + function consoleAdapter(cmd, msg) { + typeof console !== 'undefined' && console[cmd] && console[cmd](msg); + } + function handelError(e) { + var message = 'template.js error\n\n'; + + for (var key in e) { + message += '<' + key + '>\n' + e[key] + '\n\n'; + } + message += '\n' + e.message + '\n\n'; + consoleAdapter('error', message); + + o.error(e); + function error() { + return 'template.js error'; + } + error.toString = function () { + return '__code__ = "template.js error"'; + } + return error; + } + function parse(tpl, opt) { + var code = ''; + var sTag = opt.sTag; + var eTag = opt.eTag; + var escape = opt.escape; + function parsehtml(line) { + // 单双引号转义,换行符替换为空格 + line = line.replace(/('|")/g, '\\$1'); + var lineList = line.split('\n'); + var code = ''; + for (var i = 0; i < lineList.length; i++) { + code += ';__code__ += ("' + lineList[i] + (i === lineList.length - 1 ? '")\n' : '\\n")\n'); + } + return code; + } + function parsejs(line) { + //var reg = /^(:?)(.*?)=(.*)$/; + var reg = /^(?:=|(:.*?)=)(.*)$/ + var html; + var arr; + var modifier; + + // = := :*= + // :h=123 [':h=123', 'h', '123'] + if (arr = reg.exec(line)) { + html = arr[2]; // 输出 + if (Boolean(arr[1])) { + // :开头 + modifier = arr[1].slice(1); + } else { + // = 开头 + modifier = escape ? 'h' : ''; + } + + return ';__code__ += __modifierMap__["' + modifier + '"](typeof (' + html + ') !== "undefined" ? (' + html + ') : "")\n'; + } + + //原生js + return ';' + line + '\n'; + } + + var tokens = tpl.split(sTag); + + for (var i = 0, len = tokens.length; i < len; i++) { + var token = tokens[i].split(eTag); + + if (token.length === 1) { + code += parsehtml(token[0]); + } else { + code += parsejs(token[0], true); + if (token[1]) { + code += parsehtml(token[1]); + } + } + } + return code; + } + function compiler(tpl, opt) { + var mainCode = parse(tpl, opt); + + var headerCode = '\n' + + ' var html = (function (__data__, __modifierMap__) {\n' + + ' var __str__ = "", __code__ = "";\n' + + ' for(var key in __data__) {\n' + + ' __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' + + ' }\n' + + ' eval(__str__);\n\n'; + + var footerCode = '\n' + + ' ;return __code__;\n' + + ' }(__data__, __modifierMap__));\n' + + ' return html;\n'; + + var code = headerCode + mainCode + footerCode; + code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么 + try { + var Render = new Function('__data__', '__modifierMap__', code); + Render.toString = function () { + return mainCode; + } + return Render; + } catch(e) { + e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}'; + throw e; + } + } + function compile(tpl, opt) { + opt = clone(o, opt); + + try { + var Render = compiler(tpl, opt); + } catch(e) { + e.name = 'CompileError'; + e.tpl = tpl; + e.render = e.temp; + delete e.temp; + return handelError(e); + } + + function render(data) { + data = clone(functionMap, data); + try { + var html = Render(data, modifierMap); + html = opt.compress ? compress(html) : html; + return html; + } catch(e) { + e.name = 'RenderError'; + e.tpl = tpl; + e.render = Render.toString(); + return handelError(e)(); + } + } + + render.toString = function () { + return Render.toString(); + }; + return render; + } + function template(tpl, data) { + if (typeof tpl !== 'string') { + return ''; + } + + var fn = compile(tpl); + if (!isObject(data)) { + return fn; + } + + return fn(data); + } + + template.config = function (option) { + if (isObject(option)) { + o = extend(o, option); + } + return clone(o); + }; + + template.registerFunction = function(name, fn) { + if (!isString(name)) { + return clone(functionMap); + } + if (!isFunction(fn)) { + return functionMap[name]; + } + + return functionMap[name] = fn; + } + template.unregisterFunction = function (name) { + if (!isString(name)) { + return false; + } + delete functionMap[name]; + return true; + } + + template.registerModifier = function(name, fn) { + if (!isString(name)) { + return clone(modifierMap); + } + if (!isFunction(fn)) { + return modifierMap[name]; + } + + return modifierMap[name] = fn; + } + template.unregisterModifier = function (name) { + if (!isString(name)) { + return false; + } + delete modifierMap[name]; + return true; + } + + template.__encodeHTML = encodeHTML; + template.__compress = compress; + template.__handelError = handelError; + template.__compile = compile; + template.version = '0.7.1'; + return template; +})); diff --git a/src/utils/themeUtil.js b/src/utils/themeUtil.js new file mode 100644 index 0000000..1c6b3d9 --- /dev/null +++ b/src/utils/themeUtil.js @@ -0,0 +1,81 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { generate } from '@ant-design/colors' +import tool from '../utils/tool' +import config from '../config' +import { themeEnum } from '@/layout/enum/themeEnum' + +const changeColor = (newPrimaryColor, theme, darkClass = 'snowy-theme-dark') => { + return new Promise((resolve) => { + const themeEleId = 'snowy-theme-var' + const themeEle = document.querySelector(`#${themeEleId}`) + if (themeEle && themeEle.parentNode) { + themeEle.parentNode.removeChild(themeEle) + } + const isRealDark = theme === themeEnum.REAL_DARK + if (newPrimaryColor) { + const colors = generate(newPrimaryColor, isRealDark ? { theme: 'dark' } : {}) + const rootClass = isRealDark ? `.${darkClass}` : ':root' + const styleElement = document.createElement('style') + styleElement.id = themeEleId + styleElement.setAttribute('type', 'text/css') + styleElement.innerHTML = `${rootClass}{${colors + .map((c, i) => { + return `--primary-${i + 1}:${c};` + }) + .concat([`--primary-color:${newPrimaryColor};`]) + .join('')}}` + document.head.appendChild(styleElement) + } else { + document.body.removeAttribute('snowy-theme') + } + if (isRealDark) { + document.body.classList.add(darkClass) + } else { + document.body.classList.remove(darkClass) + } + resolve() + }) +} + +const loadLocalTheme = (localSetting) => { + if (localSetting) { + let { theme, themeColor } = localSetting + themeColor = themeColor || config.COLOR + theme = theme || config.THEME + changeColor(themeColor, theme) + } +} + +/** + * 获取本地保存的配置 + * @param loadTheme {boolean} 是否加载配置中的主题 + * @returns {Object} + */ +const getLocalSetting = (loadTheme) => { + let localSetting = {} + try { + const theme = tool.data.get('SNOWY_THEME') + const themeColor = tool.data.get('SNOWY_THEME_COLOR') + localSetting = { + theme, + themeColor + } + } catch (e) { + console.error(e) + } + if (loadTheme) { + loadLocalTheme(localSetting) + } + return localSetting +} + +export { loadLocalTheme, getLocalSetting, changeColor } diff --git a/src/utils/tool.js b/src/utils/tool.js new file mode 100644 index 0000000..6703aa1 --- /dev/null +++ b/src/utils/tool.js @@ -0,0 +1,169 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +/** + * @Descripttion: 工具集 + * @version: 1.1 + * @LastEditors: yubaoshan + * @LastEditTime: 2022年4月19日10:58:41 + */ +const tool = {} + +// localStorage +tool.data = { + set(table, settings) { + const _set = JSON.stringify(settings) + const SNOWYSTRING = table.slice(0, 6) === 'SNOWY_' && table !== 'SNOWY_SYS_BASE_CONFIG' + if (SNOWYSTRING) { + let localSetting = JSON.parse(localStorage.getItem('SNOWY_SETTING')) || {} + let newSetting = {} + newSetting[table] = _set + return localStorage.setItem('SNOWY_SETTING', JSON.stringify(Object.assign(localSetting, newSetting))) + } else return localStorage.setItem(table, _set) + }, + get(table) { + const SNOWYSTRING = table.slice(0, 6) === 'SNOWY_' && table !== 'SNOWY_SYS_BASE_CONFIG' + const SNOWY_SETTING = JSON.parse(localStorage.getItem('SNOWY_SETTING')) || {} + let data = SNOWYSTRING ? SNOWY_SETTING[table] : localStorage.getItem(table) + try { + data = JSON.parse(data) + } catch (err) { + return null + } + return data + }, + remove(table) { + return localStorage.removeItem(table) + }, + + clear() { + return localStorage.clear() + } +} + +// sessionStorage +tool.session = { + set(table, settings) { + const _set = JSON.stringify(settings) + return sessionStorage.setItem(table, _set) + }, + get(table) { + let data = sessionStorage.getItem(table) + try { + data = JSON.parse(data) + } catch (err) { + return null + } + return data + }, + remove(table) { + return sessionStorage.removeItem(table) + }, + clear() { + return sessionStorage.clear() + } +} + +// 千分符 +tool.groupSeparator = (num) => { + num = `${num}` + if (!num.includes('.')) num += '.' + + return num + .replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { + return `${$1},` + }) + .replace(/\.$/, '') +} + +// 获取所有字典数组 +tool.dictDataAll = () => { + return tool.data.get('DICT_TYPE_TREE_DATA') +} + +// 字典翻译方法,界面插槽使用方法 {{ $TOOL.dictType('sex', record.sex) }} +tool.dictTypeData = (dictValue, value) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return '需重新登录' + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (!tree) { + return '无此字典' + } + const children = tree.children + const dict = children.find((item) => item.dictValue === value) + return dict ? dict.dictLabel : '无此字典项' +} + +// 获取某个code下字典的列表,多用于字典下拉框 +tool.dictTypeList = (dictValue) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return [] + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (tree && tree.children) { + return tree.children + } + return [] +} + +// 获取某个code下字典的列表,基于dictTypeList 改进,保留老的,逐步替换 +tool.dictList = (dictValue) => { + const dictTypeTree = tool.dictDataAll() + if (!dictTypeTree) { + return [] + } + const tree = dictTypeTree.find((item) => item.dictValue === dictValue) + if (tree) { + return tree.children.map((item) => { + return { + value: item['dictValue'], + label: item['name'] + } + }) + } + return [] +} + +// 树形翻译 需要指定最顶级的 parentValue 和当级的value +tool.translateTree = (parentValue, value) => { + const tree = tool.dictDataAll().find((item) => item.dictValue === parentValue) + const targetNode = findNodeByValue(tree, value) + return targetNode ? targetNode.dictLabel : '' +} +const findNodeByValue = (node, value) => { + if (node.dictValue === value) { + return node + } + if (node.children) { + for (let i = 0; i < node.children.length; i++) { + const result = findNodeByValue(node.children[i], value) + if (result) { + return result + } + } + } + return null +} + +// 生成UUID +tool.snowyUuid = () => { + let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let r = (Math.random() * 16) | 0, + v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) + }) + // 首字符转换成字母 + return 'xn' + uuid.slice(2) +} + +export default tool diff --git a/src/utils/useTabs.js b/src/utils/useTabs.js new file mode 100644 index 0000000..5b8a926 --- /dev/null +++ b/src/utils/useTabs.js @@ -0,0 +1,75 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { nextTick } from 'vue' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import router from '@/router' +import { iframeStore, keepAliveStore, viewTagsStore } from '@/store' +export default { + // 刷新标签 + refresh() { + NProgress.start() + const keepAlive = keepAliveStore() + const route = router.currentRoute.value + keepAlive.removeKeepLive(route.name) + keepAlive.setRouteShow(false) + nextTick(() => { + keepAlive.pushKeepLive(route.name) + keepAlive.setRouteShow(true) + NProgress.done() + }) + }, + // 关闭标签 + close(tag) { + const route = tag || router.currentRoute.value + const store = viewTagsStore() + store.removeViewTags(route) + iframeStore().removeIframeList(route) + keepAliveStore().removeKeepLive(route.name) + const tagList = store.viewTags + const latestView = tagList.slice(-1)[0] + if (latestView) { + router.push(latestView) + } else { + router.push('/') + } + }, + // 关闭标签后处理 + closeNext(next) { + const route = router.currentRoute.value + const store = viewTagsStore() + store.removeViewTags(route) + iframeStore().removeIframeList(route) + keepAliveStore().removeKeepLive(route.name) + if (next) { + const tagList = store.viewTags + next(tagList) + } + }, + // 关闭其他 + closeOther() { + const route = router.currentRoute.value + const store = viewTagsStore() + const tagList = [...store.viewTags] + tagList.forEach((tag) => { + // eslint-disable-next-line prettier/prettier + if ((tag.meta && tag.meta.affix) || route.fullPath == tag.fullPath) { + return true + } else { + this.close(tag) + } + }) + }, + // 设置标题 + setTitle(title) { + viewTagsStore().updateViewTagsTitle(title) + } +} diff --git a/src/utils/watermark.js b/src/utils/watermark.js new file mode 100644 index 0000000..a17e9b2 --- /dev/null +++ b/src/utils/watermark.js @@ -0,0 +1,91 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import tool from '@/utils/tool' +export const watermark = { + set: function (text1, text2) { + const canvas = document.createElement('canvas') + canvas.width = 150 + canvas.height = 120 + canvas.style.display = 'none' + const shuiyin = canvas.getContext('2d') + // 控制文字的旋转角度和上下位置 + shuiyin.rotate((-20 * Math.PI) / 180) + shuiyin.translate(-50, 20) + //文字颜色 + shuiyin.fillStyle = '#f5f5f5' + //文字样式 + shuiyin.font = '100 16px Microsoft JhengHei ' + shuiyin.fillText(text1, canvas.width / 3, canvas.height / 2) + shuiyin.fillText(text2, canvas.width / 3, canvas.height / 2 + 20) + /* 新建一个用于填充canvas水印的标签,之所以没有直接在body上添加, + 是因为z-index对个别内容影响,才考虑的不用body */ + const watermark = document.createElement('div') + const styleStr = ` + position:fixed; + top:0; + left:0; + width:100vw; + height:100vh; + z-index:99999; + pointer-events:none; + background-repeat:repeat; + mix-blend-mode: multiply; + background-image:url('${canvas.toDataURL('image/png')}')` + watermark.setAttribute('style', styleStr) + watermark.classList.add('watermark') + document.body.appendChild(watermark) + + //此方法是防止用户通过控制台修改样式去除水印效果 + /* MutationObserver 是一个可以监听DOM结构变化的接口。 */ + const observer = new MutationObserver(() => { + // 此处根据用户登录状态,判断是否终止监听,避免用户退出后登录页面仍然有水印 + if (!tool.data.get('TOKEN')) { + this.close() + observer.disconnect() + } + const wmInstance = document.body.querySelector('.watermark') + if (!wmInstance || wmInstance.getAttribute('style') !== styleStr) { + //如果标签在,只修改了属性,重新赋值属性 + if (wmInstance) { + // 避免一直触发 + // observer.disconnect(); + wmInstance.setAttribute('style', styleStr) + } else { + /* 此处根据用户登录状态,判断是否终止监听,避免用户退出后登录页面仍然有水印 */ + if (tool.data.get('TOKEN')) { + //标签被移除,重新添加标签 + document.body.appendChild(watermark) + } else { + observer.disconnect() + } + } + } + }) + observer.observe(document.body, { + attributes: true, + subtree: true, + childList: true + }) + }, + close: function () { + /* 关闭页面的水印,即要移除水印标签 */ + let watermark = document.body.querySelector('.watermark') + if (watermark) { + document.body.removeChild(watermark) + } + } +} +// 使用方法 +// import { watermark } from '@/utils/watermark' +// 添加水印 +// watermark.set('Snowy','xiaonuo.vip') +// 移除水印,传 null 移除水印 +// watermark.close() diff --git a/src/views/auth/findPwd/emailFindForm.vue b/src/views/auth/findPwd/emailFindForm.vue new file mode 100644 index 0000000..bae2a2f --- /dev/null +++ b/src/views/auth/findPwd/emailFindForm.vue @@ -0,0 +1,193 @@ + + + diff --git a/src/views/auth/findPwd/index.vue b/src/views/auth/findPwd/index.vue new file mode 100644 index 0000000..9c63da2 --- /dev/null +++ b/src/views/auth/findPwd/index.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/src/views/auth/findPwd/phoneFindForm.vue b/src/views/auth/findPwd/phoneFindForm.vue new file mode 100644 index 0000000..1d8322f --- /dev/null +++ b/src/views/auth/findPwd/phoneFindForm.vue @@ -0,0 +1,194 @@ + + + diff --git a/src/views/auth/login/callback.vue b/src/views/auth/login/callback.vue new file mode 100644 index 0000000..fe27485 --- /dev/null +++ b/src/views/auth/login/callback.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/views/auth/login/login.less b/src/views/auth/login/login.less new file mode 100644 index 0000000..ef65f3c --- /dev/null +++ b/src/views/auth/login/login.less @@ -0,0 +1,200 @@ +.login-icon-gray { + color: rgba(0, 0, 0, 0.25); +} +.login-validCode-img { + border: 1px solid var(--border-color-split); + cursor: pointer; + width: 100%; + height: 40px; +} +.login-wrapper{ + width: 100vw; + height:100vh; + overflow: hidden; + background-color: #fff; + display: flex; +} +.login_background { + width: 50%; + height: 100%; + overflow: hidden; + background-size: cover; + background-position: center; + background-image: url(/img/login_background.png); + position: relative; +} +.login_background_front { + width: 450px; + height: 450px; + margin-left: 100px; + margin-top: 15%; + overflow: hidden; + /*position: relative;*/ + background-size: cover; + background-position: center; + background-image: url(/img/login_background_front.png); + animation-name: myfirst; + animation-duration: 5s; + animation-timing-function: linear; + animation-delay: 1s; + animation-iteration-count: infinite; + animation-direction: alternate; + animation-play-state: running; +} +@keyframes myfirst { + 0% { + left: 0px; + top: 0px; + } + 50% { + left: 50px; + top: 0px; + } + 100% { + left: 0px; + top: 0px; + } +} +@-webkit-keyframes myfirst /* Safari and Chrome */ { + 0% { + left: 0px; + top: 0px; + } + 50% { + left: 50px; + top: 0px; + } + 100% { + left: 0px; + top: 0px; + } +} +.login_adv__title h2 { + font-size: 40px; +} +.login_adv__title h4 { + font-size: 18px; + margin-top: 10px; + font-weight: normal; +} +.login_adv__title p { + font-size: 14px; + margin-top: 10px; + line-height: 1.8; + color: rgba(255, 255, 255, 0.6); +} +.login_adv__title div { + margin-top: 10px; + display: flex; + align-items: center; +} +.login_adv__title div span { + margin-right: 15px; +} +.login_adv__title div i { + font-size: 40px; +} +.login_adv__title div i.add { + font-size: 20px; + color: rgba(255, 255, 255, 0.6); +} +/*background-image:linear-gradient(transparent, #000);*/ +.login_main { + width: 50%; + height: 100%; + display: flex; + justify-content: center; +} +.login-form { + width: 450px; + position: absolute; + top:21.8% +} +.login-header { + margin-bottom: 20px; +} +.login-header h2 { + font-size: 24px; + font-weight: bold; + margin-top: 10px; +} +.login_config { + position: absolute; + top: 20px; + right: 20px; +} +.logo_background{ + position: absolute; + left: 0; + top: 56px; + height: 60px; + padding-left: 56px; + width: 100%; + background: linear-gradient(120deg, rgb(255 255 255 / 90%), rgba(255, 255, 255, 0)); + display: flex; + align-items: center; +} +.logo_background a{ + text-decoration: none; + cursor: pointer; + display: flex; + align-items: center; +} +.logo_background a.no-link, +.logo_background a.no-link label{ + cursor: default; +} +.logo_background img{ + height:40px; + margin-right: 10px; +} +.logo_background a label{ + font-size:24px; + color:#fff; + cursor: pointer; +} +.login_background .version{ + width: 100%; + font-size: 14px; + color:#fff; + font-weight: 300; + padding: 0 56px; + box-sizing: border-box; + position: absolute; + bottom:12px; +} +.login_background .version p{ + line-height: 22px; + text-align: center; + margin-bottom:6px; +} +@media (max-width: 1200px) { + .login-form { + width: 340px; + } +} +@media (max-width: 1000px) { + .login_main { + width: 100%; + position: absolute; + left:0; + right:0; + } + .login_background_front { + display: none; + } + .login-form { + width: 100%; + padding: 20px 40px; + top:15% + } + .logo_background{ + padding-left:40px; + } + .login_background .version{ + padding:0 20px; + } + .login_background .version p:first-child{ + display: none; + } +} diff --git a/src/views/auth/login/login.vue b/src/views/auth/login/login.vue new file mode 100644 index 0000000..5569243 --- /dev/null +++ b/src/views/auth/login/login.vue @@ -0,0 +1,267 @@ + + + diff --git a/src/views/auth/login/phoneLoginForm.vue b/src/views/auth/login/phoneLoginForm.vue new file mode 100644 index 0000000..6ca4876 --- /dev/null +++ b/src/views/auth/login/phoneLoginForm.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/views/auth/login/threeLogin.vue b/src/views/auth/login/threeLogin.vue new file mode 100644 index 0000000..c3ab83a --- /dev/null +++ b/src/views/auth/login/threeLogin.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/auth/login/util.js b/src/views/auth/login/util.js new file mode 100644 index 0000000..18d382b --- /dev/null +++ b/src/views/auth/login/util.js @@ -0,0 +1,49 @@ +import userCenterApi from '@/api/sys/userCenterApi' +import dictApi from '@/api/dev/dictApi' +import router from '@/router' +import tool from '@/utils/tool' +import { message } from 'ant-design-vue' +import routerUtil from '@/utils/routerUtil' +import { useMenuStore } from '@/store/menu' +import { userStore } from '@/store/user' + +export const afterLogin = async (loginToken) => { + const menuStore = useMenuStore() + tool.data.set('TOKEN', loginToken) + // 初始化用户信息 + await userStore().initUserInfo() + + // 获取用户的菜单 + const menu = await userCenterApi.userLoginMenu() + let indexMenu = routerUtil.getIndexMenu(menu).path + await menuStore.fetchMenu() + // 重置系统默认应用 + tool.data.set('SNOWY_MENU_MODULE_ID', menu[0].id) + message.success('登录成功') + if (tool.data.get('LAST_VIEWS_PATH')) { + // 如果有缓存,将其登录跳转到最后访问的路由 + indexMenu = tool.data.get('LAST_VIEWS_PATH') + } + // 如果存在退出后换新账号登录,进行重新匹配,匹配无果则默认首页 + if (menu) { + let routerTag = 0 + menu.forEach((item) => { + if (item.children) { + if (JSON.stringify(item.children).indexOf(indexMenu) > -1) { + routerTag++ + } + } + }) + if (routerTag === 0) { + // 取首页 + indexMenu = routerUtil.getIndexMenu(menu).path + } + } + dictApi.dictTree().then((data) => { + // 设置字典到store中 + tool.data.set('DICT_TYPE_TREE_DATA', data) + }) + await router.replace({ + path: indexMenu + }) +} diff --git a/src/views/auth/monitor/analyse.vue b/src/views/auth/monitor/analyse.vue new file mode 100644 index 0000000..9ca7ab1 --- /dev/null +++ b/src/views/auth/monitor/analyse.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/auth/monitor/bTab.vue b/src/views/auth/monitor/bTab.vue new file mode 100644 index 0000000..a907ffd --- /dev/null +++ b/src/views/auth/monitor/bTab.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/auth/monitor/cTab.vue b/src/views/auth/monitor/cTab.vue new file mode 100644 index 0000000..ab762d8 --- /dev/null +++ b/src/views/auth/monitor/cTab.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/auth/monitor/index.vue b/src/views/auth/monitor/index.vue new file mode 100644 index 0000000..34830e1 --- /dev/null +++ b/src/views/auth/monitor/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/views/auth/monitor/tokenInfoList.vue b/src/views/auth/monitor/tokenInfoList.vue new file mode 100644 index 0000000..6bba9e0 --- /dev/null +++ b/src/views/auth/monitor/tokenInfoList.vue @@ -0,0 +1,183 @@ + + + diff --git a/src/views/auth/third/index.vue b/src/views/auth/third/index.vue new file mode 100644 index 0000000..6e724ab --- /dev/null +++ b/src/views/auth/third/index.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/biz/dict/form.vue b/src/views/biz/dict/form.vue new file mode 100644 index 0000000..4acfd42 --- /dev/null +++ b/src/views/biz/dict/form.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/views/biz/dict/index.vue b/src/views/biz/dict/index.vue new file mode 100644 index 0000000..ab1e8e7 --- /dev/null +++ b/src/views/biz/dict/index.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/views/biz/index/index.vue b/src/views/biz/index/index.vue new file mode 100644 index 0000000..9fd6bdf --- /dev/null +++ b/src/views/biz/index/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/biz/notice/detail.vue b/src/views/biz/notice/detail.vue new file mode 100644 index 0000000..c239f1b --- /dev/null +++ b/src/views/biz/notice/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/views/biz/notice/form.vue b/src/views/biz/notice/form.vue new file mode 100644 index 0000000..fd76a69 --- /dev/null +++ b/src/views/biz/notice/form.vue @@ -0,0 +1,148 @@ + + + diff --git a/src/views/biz/notice/index.vue b/src/views/biz/notice/index.vue new file mode 100644 index 0000000..e26eb8f --- /dev/null +++ b/src/views/biz/notice/index.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/views/biz/org/form.vue b/src/views/biz/org/form.vue new file mode 100644 index 0000000..537e5be --- /dev/null +++ b/src/views/biz/org/form.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/views/biz/org/index.vue b/src/views/biz/org/index.vue new file mode 100644 index 0000000..0b3afd3 --- /dev/null +++ b/src/views/biz/org/index.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/biz/position/form.vue b/src/views/biz/position/form.vue new file mode 100644 index 0000000..90c870b --- /dev/null +++ b/src/views/biz/position/form.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/views/biz/position/index.vue b/src/views/biz/position/index.vue new file mode 100644 index 0000000..26bdb13 --- /dev/null +++ b/src/views/biz/position/index.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/views/biz/user/form.vue b/src/views/biz/user/form.vue new file mode 100644 index 0000000..fc6587a --- /dev/null +++ b/src/views/biz/user/form.vue @@ -0,0 +1,568 @@ + + + + + diff --git a/src/views/biz/user/index.vue b/src/views/biz/user/index.vue new file mode 100644 index 0000000..522efd7 --- /dev/null +++ b/src/views/biz/user/index.vue @@ -0,0 +1,425 @@ + + + + diff --git a/src/views/dev/config/emailConfig/aliyunEmailForm.vue b/src/views/dev/config/emailConfig/aliyunEmailForm.vue new file mode 100644 index 0000000..7f42718 --- /dev/null +++ b/src/views/dev/config/emailConfig/aliyunEmailForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/dev/config/emailConfig/index.vue b/src/views/dev/config/emailConfig/index.vue new file mode 100644 index 0000000..4225739 --- /dev/null +++ b/src/views/dev/config/emailConfig/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/views/dev/config/emailConfig/localEmailForm.vue b/src/views/dev/config/emailConfig/localEmailForm.vue new file mode 100644 index 0000000..896842b --- /dev/null +++ b/src/views/dev/config/emailConfig/localEmailForm.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/dev/config/emailConfig/tencentEmailForm.vue b/src/views/dev/config/emailConfig/tencentEmailForm.vue new file mode 100644 index 0000000..e69f7f9 --- /dev/null +++ b/src/views/dev/config/emailConfig/tencentEmailForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/dev/config/fileConfig/aliyunFileForm.vue b/src/views/dev/config/fileConfig/aliyunFileForm.vue new file mode 100644 index 0000000..dc6ae29 --- /dev/null +++ b/src/views/dev/config/fileConfig/aliyunFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/views/dev/config/fileConfig/index.vue b/src/views/dev/config/fileConfig/index.vue new file mode 100644 index 0000000..ad3674a --- /dev/null +++ b/src/views/dev/config/fileConfig/index.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/dev/config/fileConfig/localFileForm.vue b/src/views/dev/config/fileConfig/localFileForm.vue new file mode 100644 index 0000000..06f3557 --- /dev/null +++ b/src/views/dev/config/fileConfig/localFileForm.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/dev/config/fileConfig/minioFileForm.vue b/src/views/dev/config/fileConfig/minioFileForm.vue new file mode 100644 index 0000000..ead4129 --- /dev/null +++ b/src/views/dev/config/fileConfig/minioFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/views/dev/config/fileConfig/tencentFileForm.vue b/src/views/dev/config/fileConfig/tencentFileForm.vue new file mode 100644 index 0000000..87d30b3 --- /dev/null +++ b/src/views/dev/config/fileConfig/tencentFileForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/views/dev/config/index.vue b/src/views/dev/config/index.vue new file mode 100644 index 0000000..011eddb --- /dev/null +++ b/src/views/dev/config/index.vue @@ -0,0 +1,74 @@ + + + diff --git a/src/views/dev/config/otherConfig/form.vue b/src/views/dev/config/otherConfig/form.vue new file mode 100644 index 0000000..8d5eb4d --- /dev/null +++ b/src/views/dev/config/otherConfig/form.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/dev/config/otherConfig/index.vue b/src/views/dev/config/otherConfig/index.vue new file mode 100644 index 0000000..600095a --- /dev/null +++ b/src/views/dev/config/otherConfig/index.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/views/dev/config/smsConfig/aliyunSmsForm.vue b/src/views/dev/config/smsConfig/aliyunSmsForm.vue new file mode 100644 index 0000000..cea4ff2 --- /dev/null +++ b/src/views/dev/config/smsConfig/aliyunSmsForm.vue @@ -0,0 +1,94 @@ + + + diff --git a/src/views/dev/config/smsConfig/index.vue b/src/views/dev/config/smsConfig/index.vue new file mode 100644 index 0000000..9b20f83 --- /dev/null +++ b/src/views/dev/config/smsConfig/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/views/dev/config/smsConfig/tencentSmsForm.vue b/src/views/dev/config/smsConfig/tencentSmsForm.vue new file mode 100644 index 0000000..333e6dd --- /dev/null +++ b/src/views/dev/config/smsConfig/tencentSmsForm.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue b/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue new file mode 100644 index 0000000..247f83b --- /dev/null +++ b/src/views/dev/config/smsConfig/xiaonuoSmsForm.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/dev/config/sysConfig.vue b/src/views/dev/config/sysConfig.vue new file mode 100644 index 0000000..c92481c --- /dev/null +++ b/src/views/dev/config/sysConfig.vue @@ -0,0 +1,229 @@ + + + diff --git a/src/views/dev/config/thirdConfig/giteeThirdForm.vue b/src/views/dev/config/thirdConfig/giteeThirdForm.vue new file mode 100644 index 0000000..9c7b619 --- /dev/null +++ b/src/views/dev/config/thirdConfig/giteeThirdForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/dev/config/thirdConfig/index.vue b/src/views/dev/config/thirdConfig/index.vue new file mode 100644 index 0000000..bf0d7b8 --- /dev/null +++ b/src/views/dev/config/thirdConfig/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/dev/config/thirdConfig/wechatThirdForm.vue b/src/views/dev/config/thirdConfig/wechatThirdForm.vue new file mode 100644 index 0000000..33ce2a3 --- /dev/null +++ b/src/views/dev/config/thirdConfig/wechatThirdForm.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/dev/dict/category/bizIndex.vue b/src/views/dev/dict/category/bizIndex.vue new file mode 100644 index 0000000..43eaaef --- /dev/null +++ b/src/views/dev/dict/category/bizIndex.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/views/dev/dict/category/form.vue b/src/views/dev/dict/category/form.vue new file mode 100644 index 0000000..ff117f0 --- /dev/null +++ b/src/views/dev/dict/category/form.vue @@ -0,0 +1,127 @@ + + + diff --git a/src/views/dev/dict/category/frmIndex.vue b/src/views/dev/dict/category/frmIndex.vue new file mode 100644 index 0000000..cbfa999 --- /dev/null +++ b/src/views/dev/dict/category/frmIndex.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/dev/dict/index.vue b/src/views/dev/dict/index.vue new file mode 100644 index 0000000..a126cd8 --- /dev/null +++ b/src/views/dev/dict/index.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/views/dev/email/detail.vue b/src/views/dev/email/detail.vue new file mode 100644 index 0000000..5eb083e --- /dev/null +++ b/src/views/dev/email/detail.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/dev/email/form.vue b/src/views/dev/email/form.vue new file mode 100644 index 0000000..2954061 --- /dev/null +++ b/src/views/dev/email/form.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/views/dev/email/index.vue b/src/views/dev/email/index.vue new file mode 100644 index 0000000..72eca9b --- /dev/null +++ b/src/views/dev/email/index.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/dev/email/send/aliyunEmailSend.vue b/src/views/dev/email/send/aliyunEmailSend.vue new file mode 100644 index 0000000..82c8e1b --- /dev/null +++ b/src/views/dev/email/send/aliyunEmailSend.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/views/dev/email/send/localEmailSend.vue b/src/views/dev/email/send/localEmailSend.vue new file mode 100644 index 0000000..13f0a26 --- /dev/null +++ b/src/views/dev/email/send/localEmailSend.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/views/dev/email/send/tencentEmailSend.vue b/src/views/dev/email/send/tencentEmailSend.vue new file mode 100644 index 0000000..6caabc5 --- /dev/null +++ b/src/views/dev/email/send/tencentEmailSend.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/views/dev/file/detail.vue b/src/views/dev/file/detail.vue new file mode 100644 index 0000000..79dac58 --- /dev/null +++ b/src/views/dev/file/detail.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/dev/file/index.vue b/src/views/dev/file/index.vue new file mode 100644 index 0000000..665b913 --- /dev/null +++ b/src/views/dev/file/index.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/views/dev/file/preview.vue b/src/views/dev/file/preview.vue new file mode 100644 index 0000000..7db4a1d --- /dev/null +++ b/src/views/dev/file/preview.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/dev/file/uploadForm.vue b/src/views/dev/file/uploadForm.vue new file mode 100644 index 0000000..2cfb615 --- /dev/null +++ b/src/views/dev/file/uploadForm.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/views/dev/job/form.vue b/src/views/dev/job/form.vue new file mode 100644 index 0000000..fc42c4f --- /dev/null +++ b/src/views/dev/job/form.vue @@ -0,0 +1,117 @@ + + + diff --git a/src/views/dev/job/index.vue b/src/views/dev/job/index.vue new file mode 100644 index 0000000..809f265 --- /dev/null +++ b/src/views/dev/job/index.vue @@ -0,0 +1,216 @@ + + + diff --git a/src/views/dev/log/oplog/columnChart.vue b/src/views/dev/log/oplog/columnChart.vue new file mode 100644 index 0000000..b93e717 --- /dev/null +++ b/src/views/dev/log/oplog/columnChart.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/views/dev/log/oplog/detail.vue b/src/views/dev/log/oplog/detail.vue new file mode 100644 index 0000000..50d2c4d --- /dev/null +++ b/src/views/dev/log/oplog/detail.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/views/dev/log/oplog/index.vue b/src/views/dev/log/oplog/index.vue new file mode 100644 index 0000000..b7c1bd1 --- /dev/null +++ b/src/views/dev/log/oplog/index.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/views/dev/log/oplog/pieChart.vue b/src/views/dev/log/oplog/pieChart.vue new file mode 100644 index 0000000..def0089 --- /dev/null +++ b/src/views/dev/log/oplog/pieChart.vue @@ -0,0 +1,38 @@ + + + + diff --git a/src/views/dev/log/vislog/detail.vue b/src/views/dev/log/vislog/detail.vue new file mode 100644 index 0000000..5fbb130 --- /dev/null +++ b/src/views/dev/log/vislog/detail.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/views/dev/log/vislog/index.vue b/src/views/dev/log/vislog/index.vue new file mode 100644 index 0000000..33bc370 --- /dev/null +++ b/src/views/dev/log/vislog/index.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/dev/log/vislog/lineChart.vue b/src/views/dev/log/vislog/lineChart.vue new file mode 100644 index 0000000..db1cfc1 --- /dev/null +++ b/src/views/dev/log/vislog/lineChart.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/views/dev/log/vislog/pieChart.vue b/src/views/dev/log/vislog/pieChart.vue new file mode 100644 index 0000000..a9c9938 --- /dev/null +++ b/src/views/dev/log/vislog/pieChart.vue @@ -0,0 +1,38 @@ + + + + diff --git a/src/views/dev/message/detail.vue b/src/views/dev/message/detail.vue new file mode 100644 index 0000000..e08d98f --- /dev/null +++ b/src/views/dev/message/detail.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/views/dev/message/form.vue b/src/views/dev/message/form.vue new file mode 100644 index 0000000..1811b99 --- /dev/null +++ b/src/views/dev/message/form.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/views/dev/message/index.vue b/src/views/dev/message/index.vue new file mode 100644 index 0000000..d13c33e --- /dev/null +++ b/src/views/dev/message/index.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/views/dev/monitor/index.vue b/src/views/dev/monitor/index.vue new file mode 100644 index 0000000..967296a --- /dev/null +++ b/src/views/dev/monitor/index.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/dev/slideshow/form.vue b/src/views/dev/slideshow/form.vue new file mode 100644 index 0000000..be23587 --- /dev/null +++ b/src/views/dev/slideshow/form.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/views/dev/slideshow/index.vue b/src/views/dev/slideshow/index.vue new file mode 100644 index 0000000..f6c3d48 --- /dev/null +++ b/src/views/dev/slideshow/index.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/views/dev/slideshow/subForm.vue b/src/views/dev/slideshow/subForm.vue new file mode 100644 index 0000000..a3bfe3e --- /dev/null +++ b/src/views/dev/slideshow/subForm.vue @@ -0,0 +1,162 @@ + + + + diff --git a/src/views/dev/sms/detail.vue b/src/views/dev/sms/detail.vue new file mode 100644 index 0000000..8282597 --- /dev/null +++ b/src/views/dev/sms/detail.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/views/dev/sms/form.vue b/src/views/dev/sms/form.vue new file mode 100644 index 0000000..8f65487 --- /dev/null +++ b/src/views/dev/sms/form.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/views/dev/sms/index.vue b/src/views/dev/sms/index.vue new file mode 100644 index 0000000..8dea5f7 --- /dev/null +++ b/src/views/dev/sms/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/dev/sms/send/aliyunSmsSend.vue b/src/views/dev/sms/send/aliyunSmsSend.vue new file mode 100644 index 0000000..886fe88 --- /dev/null +++ b/src/views/dev/sms/send/aliyunSmsSend.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/views/dev/sms/send/tencentSmsSend.vue b/src/views/dev/sms/send/tencentSmsSend.vue new file mode 100644 index 0000000..daec4b5 --- /dev/null +++ b/src/views/dev/sms/send/tencentSmsSend.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/views/dev/sms/send/xiaonuoSmsSend.vue b/src/views/dev/sms/send/xiaonuoSmsSend.vue new file mode 100644 index 0000000..4a6b139 --- /dev/null +++ b/src/views/dev/sms/send/xiaonuoSmsSend.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/views/exm/chart/eCBingZhuangTu.vue b/src/views/exm/chart/eCBingZhuangTu.vue new file mode 100644 index 0000000..6fd9aa1 --- /dev/null +++ b/src/views/exm/chart/eCBingZhuangTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/eCHengTiaoTu.vue b/src/views/exm/chart/eCHengTiaoTu.vue new file mode 100644 index 0000000..b0fdccd --- /dev/null +++ b/src/views/exm/chart/eCHengTiaoTu.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/views/exm/chart/eCKXianTu.vue b/src/views/exm/chart/eCKXianTu.vue new file mode 100644 index 0000000..0fa96d3 --- /dev/null +++ b/src/views/exm/chart/eCKXianTu.vue @@ -0,0 +1,20 @@ + + + + diff --git a/src/views/exm/chart/eCLouDouTu.vue b/src/views/exm/chart/eCLouDouTu.vue new file mode 100644 index 0000000..30031fc --- /dev/null +++ b/src/views/exm/chart/eCLouDouTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/eCSanDianTu.vue b/src/views/exm/chart/eCSanDianTu.vue new file mode 100644 index 0000000..12ea54a --- /dev/null +++ b/src/views/exm/chart/eCSanDianTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/eCShuXingTu.vue b/src/views/exm/chart/eCShuXingTu.vue new file mode 100644 index 0000000..da765af --- /dev/null +++ b/src/views/exm/chart/eCShuXingTu.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/views/exm/chart/eCXianXingTu.vue b/src/views/exm/chart/eCXianXingTu.vue new file mode 100644 index 0000000..600cb83 --- /dev/null +++ b/src/views/exm/chart/eCXianXingTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/eCYiBiaoTu.vue b/src/views/exm/chart/eCYiBiaoTu.vue new file mode 100644 index 0000000..832e560 --- /dev/null +++ b/src/views/exm/chart/eCYiBiaoTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/eCZheZhuTu.vue b/src/views/exm/chart/eCZheZhuTu.vue new file mode 100644 index 0000000..085ea55 --- /dev/null +++ b/src/views/exm/chart/eCZheZhuTu.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/views/exm/chart/eCZhuZhuangTu.vue b/src/views/exm/chart/eCZhuZhuangTu.vue new file mode 100644 index 0000000..df9e49d --- /dev/null +++ b/src/views/exm/chart/eCZhuZhuangTu.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/exm/chart/g2BingZhuangTu.vue b/src/views/exm/chart/g2BingZhuangTu.vue new file mode 100644 index 0000000..37c7200 --- /dev/null +++ b/src/views/exm/chart/g2BingZhuangTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2CiYunTu.vue b/src/views/exm/chart/g2CiYunTu.vue new file mode 100644 index 0000000..f4b7f6b --- /dev/null +++ b/src/views/exm/chart/g2CiYunTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/exm/chart/g2JinDuTu.vue b/src/views/exm/chart/g2JinDuTu.vue new file mode 100644 index 0000000..554ad63 --- /dev/null +++ b/src/views/exm/chart/g2JinDuTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2LouDouTu.vue b/src/views/exm/chart/g2LouDouTu.vue new file mode 100644 index 0000000..6e2dfac --- /dev/null +++ b/src/views/exm/chart/g2LouDouTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/exm/chart/g2MianJiTu.vue b/src/views/exm/chart/g2MianJiTu.vue new file mode 100644 index 0000000..f652d79 --- /dev/null +++ b/src/views/exm/chart/g2MianJiTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2SanDianTu.vue b/src/views/exm/chart/g2SanDianTu.vue new file mode 100644 index 0000000..88a03a1 --- /dev/null +++ b/src/views/exm/chart/g2SanDianTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2TiaoXingTu.vue b/src/views/exm/chart/g2TiaoXingTu.vue new file mode 100644 index 0000000..4065f0e --- /dev/null +++ b/src/views/exm/chart/g2TiaoXingTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2ZheXianTu.vue b/src/views/exm/chart/g2ZheXianTu.vue new file mode 100644 index 0000000..c72ec83 --- /dev/null +++ b/src/views/exm/chart/g2ZheXianTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2ZhuZhuangTu.vue b/src/views/exm/chart/g2ZhuZhuangTu.vue new file mode 100644 index 0000000..cc5cb5c --- /dev/null +++ b/src/views/exm/chart/g2ZhuZhuangTu.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/exm/chart/g2ZiDanTu.vue b/src/views/exm/chart/g2ZiDanTu.vue new file mode 100644 index 0000000..d3e7a47 --- /dev/null +++ b/src/views/exm/chart/g2ZiDanTu.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/exm/editor/index.vue b/src/views/exm/editor/index.vue new file mode 100644 index 0000000..4ec42ca --- /dev/null +++ b/src/views/exm/editor/index.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/views/exm/iconSelect/index.vue b/src/views/exm/iconSelect/index.vue new file mode 100644 index 0000000..b602a78 --- /dev/null +++ b/src/views/exm/iconSelect/index.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/views/exm/map/baiduMap.vue b/src/views/exm/map/baiduMap.vue new file mode 100644 index 0000000..957e8a1 --- /dev/null +++ b/src/views/exm/map/baiduMap.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/views/exm/map/gaodeMap.vue b/src/views/exm/map/gaodeMap.vue new file mode 100644 index 0000000..66aca85 --- /dev/null +++ b/src/views/exm/map/gaodeMap.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/views/exm/nestRoutor/index.vue b/src/views/exm/nestRoutor/index.vue new file mode 100644 index 0000000..61da89e --- /dev/null +++ b/src/views/exm/nestRoutor/index.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/views/gen/basic.vue b/src/views/gen/basic.vue new file mode 100644 index 0000000..a8a86c5 --- /dev/null +++ b/src/views/gen/basic.vue @@ -0,0 +1,466 @@ + + + + diff --git a/src/views/gen/config.vue b/src/views/gen/config.vue new file mode 100644 index 0000000..4bb4210 --- /dev/null +++ b/src/views/gen/config.vue @@ -0,0 +1,455 @@ + + + + diff --git a/src/views/gen/index.vue b/src/views/gen/index.vue new file mode 100644 index 0000000..1fd4d0e --- /dev/null +++ b/src/views/gen/index.vue @@ -0,0 +1,197 @@ + + + diff --git a/src/views/gen/preview.vue b/src/views/gen/preview.vue new file mode 100644 index 0000000..a4085cc --- /dev/null +++ b/src/views/gen/preview.vue @@ -0,0 +1,103 @@ + + + + diff --git a/src/views/gen/steps.vue b/src/views/gen/steps.vue new file mode 100644 index 0000000..59e8d6c --- /dev/null +++ b/src/views/gen/steps.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/views/index/index.vue b/src/views/index/index.vue new file mode 100644 index 0000000..3eb9bca --- /dev/null +++ b/src/views/index/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/mobile/resource/button/form.vue b/src/views/mobile/resource/button/form.vue new file mode 100644 index 0000000..281b2b0 --- /dev/null +++ b/src/views/mobile/resource/button/form.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/views/mobile/resource/button/index.vue b/src/views/mobile/resource/button/index.vue new file mode 100644 index 0000000..6278433 --- /dev/null +++ b/src/views/mobile/resource/button/index.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/views/mobile/resource/menu/changeModuleForm.vue b/src/views/mobile/resource/menu/changeModuleForm.vue new file mode 100644 index 0000000..7e5e106 --- /dev/null +++ b/src/views/mobile/resource/menu/changeModuleForm.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/views/mobile/resource/menu/form.vue b/src/views/mobile/resource/menu/form.vue new file mode 100644 index 0000000..76aa3d9 --- /dev/null +++ b/src/views/mobile/resource/menu/form.vue @@ -0,0 +1,248 @@ + + + diff --git a/src/views/mobile/resource/menu/index.vue b/src/views/mobile/resource/menu/index.vue new file mode 100644 index 0000000..bbf5644 --- /dev/null +++ b/src/views/mobile/resource/menu/index.vue @@ -0,0 +1,212 @@ + + + diff --git a/src/views/mobile/resource/module/form.vue b/src/views/mobile/resource/module/form.vue new file mode 100644 index 0000000..0f4629a --- /dev/null +++ b/src/views/mobile/resource/module/form.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/views/mobile/resource/module/index.vue b/src/views/mobile/resource/module/index.vue new file mode 100644 index 0000000..c1c713c --- /dev/null +++ b/src/views/mobile/resource/module/index.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/views/other/index.vue b/src/views/other/index.vue new file mode 100644 index 0000000..c65f310 --- /dev/null +++ b/src/views/other/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/views/sys/org/form.vue b/src/views/sys/org/form.vue new file mode 100644 index 0000000..c98fe29 --- /dev/null +++ b/src/views/sys/org/form.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/views/sys/org/index.vue b/src/views/sys/org/index.vue new file mode 100644 index 0000000..247dc57 --- /dev/null +++ b/src/views/sys/org/index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/views/sys/position/form.vue b/src/views/sys/position/form.vue new file mode 100644 index 0000000..3014661 --- /dev/null +++ b/src/views/sys/position/form.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/views/sys/position/index.vue b/src/views/sys/position/index.vue new file mode 100644 index 0000000..42d00a8 --- /dev/null +++ b/src/views/sys/position/index.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/views/sys/resource/button/form.vue b/src/views/sys/resource/button/form.vue new file mode 100644 index 0000000..e002f99 --- /dev/null +++ b/src/views/sys/resource/button/form.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/views/sys/resource/button/index.vue b/src/views/sys/resource/button/index.vue new file mode 100644 index 0000000..125c8e8 --- /dev/null +++ b/src/views/sys/resource/button/index.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/views/sys/resource/field/form.vue b/src/views/sys/resource/field/form.vue new file mode 100644 index 0000000..c4a3996 --- /dev/null +++ b/src/views/sys/resource/field/form.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/views/sys/resource/field/index.vue b/src/views/sys/resource/field/index.vue new file mode 100644 index 0000000..2f8d56b --- /dev/null +++ b/src/views/sys/resource/field/index.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/views/sys/resource/menu/changeModuleForm.vue b/src/views/sys/resource/menu/changeModuleForm.vue new file mode 100644 index 0000000..cd36024 --- /dev/null +++ b/src/views/sys/resource/menu/changeModuleForm.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/views/sys/resource/menu/form.vue b/src/views/sys/resource/menu/form.vue new file mode 100644 index 0000000..9fea126 --- /dev/null +++ b/src/views/sys/resource/menu/form.vue @@ -0,0 +1,265 @@ + + + diff --git a/src/views/sys/resource/menu/index.vue b/src/views/sys/resource/menu/index.vue new file mode 100644 index 0000000..165c09c --- /dev/null +++ b/src/views/sys/resource/menu/index.vue @@ -0,0 +1,266 @@ + + + diff --git a/src/views/sys/resource/module/form.vue b/src/views/sys/resource/module/form.vue new file mode 100644 index 0000000..d2e5683 --- /dev/null +++ b/src/views/sys/resource/module/form.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/views/sys/resource/module/index.vue b/src/views/sys/resource/module/index.vue new file mode 100644 index 0000000..2942354 --- /dev/null +++ b/src/views/sys/resource/module/index.vue @@ -0,0 +1,134 @@ + + + diff --git a/src/views/sys/role/form.vue b/src/views/sys/role/form.vue new file mode 100644 index 0000000..f9d38d4 --- /dev/null +++ b/src/views/sys/role/form.vue @@ -0,0 +1,123 @@ + + + diff --git a/src/views/sys/role/grantMobileResourceForm.vue b/src/views/sys/role/grantMobileResourceForm.vue new file mode 100644 index 0000000..e035394 --- /dev/null +++ b/src/views/sys/role/grantMobileResourceForm.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/src/views/sys/role/grantPermissionForm.vue b/src/views/sys/role/grantPermissionForm.vue new file mode 100644 index 0000000..29c124e --- /dev/null +++ b/src/views/sys/role/grantPermissionForm.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/src/views/sys/role/grantResourceForm.vue b/src/views/sys/role/grantResourceForm.vue new file mode 100644 index 0000000..c82b3ea --- /dev/null +++ b/src/views/sys/role/grantResourceForm.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/views/sys/role/index.vue b/src/views/sys/role/index.vue new file mode 100644 index 0000000..ede65e1 --- /dev/null +++ b/src/views/sys/role/index.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/views/sys/role/scopeDefineOrg.vue b/src/views/sys/role/scopeDefineOrg.vue new file mode 100644 index 0000000..44bb0bc --- /dev/null +++ b/src/views/sys/role/scopeDefineOrg.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/views/sys/user/form.vue b/src/views/sys/user/form.vue new file mode 100644 index 0000000..5b39c58 --- /dev/null +++ b/src/views/sys/user/form.vue @@ -0,0 +1,567 @@ + + + + + diff --git a/src/views/sys/user/grantPermissionForm.vue b/src/views/sys/user/grantPermissionForm.vue new file mode 100644 index 0000000..fcac339 --- /dev/null +++ b/src/views/sys/user/grantPermissionForm.vue @@ -0,0 +1,415 @@ + + + + + diff --git a/src/views/sys/user/grantResourceForm.vue b/src/views/sys/user/grantResourceForm.vue new file mode 100644 index 0000000..b6b3361 --- /dev/null +++ b/src/views/sys/user/grantResourceForm.vue @@ -0,0 +1,312 @@ + + + + + diff --git a/src/views/sys/user/impExp.vue b/src/views/sys/user/impExp.vue new file mode 100644 index 0000000..2042724 --- /dev/null +++ b/src/views/sys/user/impExp.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/sys/user/index.vue b/src/views/sys/user/index.vue new file mode 100644 index 0000000..976e230 --- /dev/null +++ b/src/views/sys/user/index.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/src/views/sys/user/scopeDefineOrg.vue b/src/views/sys/user/scopeDefineOrg.vue new file mode 100644 index 0000000..e9ddae3 --- /dev/null +++ b/src/views/sys/user/scopeDefineOrg.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/views/sys/user/userCenter.vue b/src/views/sys/user/userCenter.vue new file mode 100644 index 0000000..f47806a --- /dev/null +++ b/src/views/sys/user/userCenter.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/views/sys/user/userTab/accountBasic.vue b/src/views/sys/user/userTab/accountBasic.vue new file mode 100644 index 0000000..d9209e5 --- /dev/null +++ b/src/views/sys/user/userTab/accountBasic.vue @@ -0,0 +1,84 @@ + + + diff --git a/src/views/sys/user/userTab/accountBind.vue b/src/views/sys/user/userTab/accountBind.vue new file mode 100644 index 0000000..53155f1 --- /dev/null +++ b/src/views/sys/user/userTab/accountBind.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/views/sys/user/userTab/bindForm/updatePassword.vue b/src/views/sys/user/userTab/bindForm/updatePassword.vue new file mode 100644 index 0000000..a16a294 --- /dev/null +++ b/src/views/sys/user/userTab/bindForm/updatePassword.vue @@ -0,0 +1,81 @@ + + + diff --git a/src/views/sys/user/userTab/organizationChart.vue b/src/views/sys/user/userTab/organizationChart.vue new file mode 100644 index 0000000..ee7fe0d --- /dev/null +++ b/src/views/sys/user/userTab/organizationChart.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/views/sys/user/userTab/shortcutSetting.vue b/src/views/sys/user/userTab/shortcutSetting.vue new file mode 100644 index 0000000..ac8632c --- /dev/null +++ b/src/views/sys/user/userTab/shortcutSetting.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/views/sys/user/userTab/userMessage.vue b/src/views/sys/user/userTab/userMessage.vue new file mode 100644 index 0000000..bf5e293 --- /dev/null +++ b/src/views/sys/user/userTab/userMessage.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/views/sys/user/userTab/userMessage/detail.vue b/src/views/sys/user/userTab/userMessage/detail.vue new file mode 100644 index 0000000..add81db --- /dev/null +++ b/src/views/sys/user/userTab/userMessage/detail.vue @@ -0,0 +1,87 @@ + + + diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..4312db3 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,72 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +const generatePrimaryColors = () => { + const result = { + primary: `var(--primary-color)` + } + for (let i = 0; i < 10; i++) { + result[`primary-${i}`] = `var(--primary-${i})` + } + return result +} + +const generateFontSize = () => { + const result = {} + for (let i = 10; i < 32; i++) { + result[i] = `${i}px` + } + return result +} + +const colors = require('tailwindcss/colors') + +const filterWarnColors = (colors) => { + const result = {} + for (const key in colors) { + if (['lightBlue', 'warmGray', 'trueGray', 'coolGray', 'blueGray'].indexOf(key) === -1) { + result[key] = colors[key] + } + } + return result +} + +module.exports = { + content: ['./src/**/*.vue', './src/**/*.js'], + darkMode: 'class', // or 'media' or 'class' + corePlugins: { + preflight: false + }, + theme: { + extend: {}, + colors: { + transparent: 'transparent', + current: 'currentColor', + ...filterWarnColors(colors), + ...generatePrimaryColors() + }, + fontWeight: { + 1: 100, + 2: 200, + 3: 300, + 4: 400, + 5: 500, + 6: 600, + 7: 700, + 8: 800, + 9: 900 + }, + fontSize: { + ...generateFontSize() + } + }, + variants: {}, + plugins: [] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5b68587 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + // /* Bundler mode */ + "allowJs": true, + "baseUrl": ".", + "outDir": "./dist", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src/**/*"] +} diff --git a/vite.config.mjs b/vite.config.mjs new file mode 100644 index 0000000..1a0e820 --- /dev/null +++ b/vite.config.mjs @@ -0,0 +1,119 @@ +/** + * Copyright [2022] [https://www.xiaonuo.vip] + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +import { resolve } from 'path' +import { defineConfig, loadEnv } from 'vite' +import vue from '@vitejs/plugin-vue' +import Components from 'unplugin-vue-components/vite' +import VueJSX from '@vitejs/plugin-vue-jsx' +import AutoImport from 'unplugin-auto-import/vite' +import vueSetupExtend from 'vite-plugin-vue-setup-extend' +import { visualizer } from 'rollup-plugin-visualizer' +import Less2CssVariablePlugin from 'antd-less-to-css-variable' +import viteCompression from 'vite-plugin-compression' + +// ant-design-vue 的 less 变量,通过兼容包将 v4 变量转译成 v3 版本,并通过 less-loader 注入 +import { theme } from 'ant-design-vue/lib' +import convertLegacyToken from 'ant-design-vue/lib/theme/convertLegacyToken' +const { defaultAlgorithm, defaultSeed } = theme +const mapToken = defaultAlgorithm(defaultSeed) +const v3Token = convertLegacyToken.default(mapToken) + +export const r = (...args) => resolve(__dirname, '.', ...args) + +export default defineConfig(({ command, mode }) => { + const envConfig = loadEnv(mode, './') + const alias = { + '~': `${resolve(__dirname, './')}`, + '@/': `${resolve(__dirname, 'src')}/` + } + return { + server: { + port: envConfig.VITE_PORT, + proxy: { + '/api': { + target: envConfig.VITE_API_BASEURL, + ws: false, + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + }, + resolve: { + alias + }, + // 解决警告You are running the esm-bundler build of vue-i18n. + define: { + __VUE_I18N_FULL_INSTALL__: true, + __VUE_I18N_LEGACY_API__: true, + __VUE_I18N_PROD_DEVTOOLS__: true, + __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: true + }, + build: { + // sourcemap: true, + manifest: true, + brotliSize: false, + rollupOptions: { + output: { + manualChunks: { + echarts: ['echarts'], + 'ant-design-vue': ['ant-design-vue'], + vue: ['vue', 'vue-router', 'pinia', 'vue-i18n'] + } + } + }, + chunkSizeWarningLimit: 1000 + }, + plugins: [ + vue({ + script: { + refTransform: true + } + }), + viteCompression(), + vueSetupExtend(), + VueJSX(), + AutoImport({ + imports: ['vue'], + dirs: ['./src/utils/permission'], + dts: r('src/auto-imports.d.ts') + }), + // 组件按需引入 + Components( + { + dirs: [r('src/components')], + dts: false, + resolvers: [] + }, + { + dirs: [r('src/components/HomeCard')], + dts: false, + resolvers: [] + } + ), + visualizer() + ], + css: { + preprocessorOptions: { + less: { + javascriptEnabled: true, + plugins: [ + new Less2CssVariablePlugin({ + // TODO:有必要用的情况下,是否需要传入 variables,可能会造成重复引用 + variables: { ...v3Token } + }) + ], + modifyVars: v3Token + } + } + }, + optimizeDeps: {} + } +})