Browse Source

add frontend

master
godo 2 months ago
parent
commit
b6fed6c096
  1. 33
      os/.gitignore
  2. 10
      os/auto-imports.d.ts
  3. 129
      os/components.d.ts
  4. 22
      os/index.html
  5. 7498
      os/package-lock.json
  6. 53
      os/package.json
  7. 58662
      os/public/bot/chat.json
  8. 13990
      os/public/bot/search.json
  9. 238
      os/public/calculator/css/cal.css
  10. BIN
      os/public/calculator/images/10_x.png
  11. BIN
      os/public/calculator/images/1_x.png
  12. BIN
      os/public/calculator/images/x_2.png
  13. BIN
      os/public/calculator/images/x_y.png
  14. BIN
      os/public/calculator/images/x_y_sqrt.png
  15. 199
      os/public/calculator/index.html
  16. 990
      os/public/calculator/js/cal.js
  17. BIN
      os/public/favicon.ico
  18. BIN
      os/public/images/bg/bg1.jpg
  19. BIN
      os/public/images/bg/bg2.jpg
  20. BIN
      os/public/images/bg/bg3.jpg
  21. BIN
      os/public/images/bg/bg4.jpg
  22. BIN
      os/public/images/bg/bg5.jpg
  23. BIN
      os/public/images/bg/bg6.jpg
  24. BIN
      os/public/images/bg/bg7.jpg
  25. BIN
      os/public/images/bg/bg8.jpg
  26. BIN
      os/public/images/bg/bg9.jpg
  27. BIN
      os/public/images/login/dingding.png
  28. BIN
      os/public/images/login/email.png
  29. BIN
      os/public/images/login/gitee.png
  30. BIN
      os/public/images/login/github.png
  31. BIN
      os/public/images/login/ldap.png
  32. BIN
      os/public/images/login/password.png
  33. BIN
      os/public/images/login/phone.png
  34. BIN
      os/public/images/login/qyweixin.png
  35. BIN
      os/public/logo.png
  36. 1
      os/public/markdown/dist/addons/advance/cherry-table-echarts-plugin.js
  37. 1
      os/public/markdown/dist/addons/cherry-code-block-mermaid-plugin.js
  38. 1
      os/public/markdown/dist/addons/cherry-code-block-plantuml-plugin.js
  39. 3
      os/public/markdown/dist/cherry-markdown.js.map
  40. 1
      os/public/markdown/dist/cherry-markdown.min.css
  41. 1
      os/public/markdown/dist/cherry-markdown.min.js
  42. BIN
      os/public/markdown/dist/fonts/ch-icon.eot
  43. 300
      os/public/markdown/dist/fonts/ch-icon.svg
  44. BIN
      os/public/markdown/dist/fonts/ch-icon.ttf
  45. BIN
      os/public/markdown/dist/fonts/ch-icon.woff
  46. BIN
      os/public/markdown/dist/fonts/ch-icon.woff2
  47. 36
      os/public/markdown/drawio.html
  48. 1961
      os/public/markdown/drawio/Actions.js
  49. 2755
      os/public/markdown/drawio/Dialogs.js
  50. 3212
      os/public/markdown/drawio/Editor.js
  51. 6184
      os/public/markdown/drawio/EditorUi.js
  52. 8103
      os/public/markdown/drawio/Format.js
  53. 15007
      os/public/markdown/drawio/Graph.js
  54. 27
      os/public/markdown/drawio/Init.js
  55. 2006
      os/public/markdown/drawio/Menus.js
  56. 7353
      os/public/markdown/drawio/Shapes.js
  57. 4260
      os/public/markdown/drawio/Sidebar.js
  58. 1091
      os/public/markdown/drawio/Toolbar.js
  59. 215
      os/public/markdown/drawio/atlas.css
  60. 109
      os/public/markdown/drawio/dark-default.xml
  61. 294
      os/public/markdown/drawio/dark.css
  62. 109
      os/public/markdown/drawio/default-old.xml
  63. 203
      os/public/markdown/drawio/default.xml
  64. 78
      os/public/markdown/drawio/drawio-demo.js
  65. BIN
      os/public/markdown/drawio/font/graph.iconfont.eot
  66. 100
      os/public/markdown/drawio/font/graph.iconfont.less
  67. BIN
      os/public/markdown/drawio/font/graph.iconfont.ttf
  68. BIN
      os/public/markdown/drawio/font/graph.iconfont.woff
  69. BIN
      os/public/markdown/drawio/font/iconfont.ttf
  70. 13
      os/public/markdown/drawio/font/svg/geSprite-arrow.svg
  71. 12
      os/public/markdown/drawio/font/svg/geSprite-bold.svg
  72. 24
      os/public/markdown/drawio/font/svg/geSprite-bottom.svg
  73. 13
      os/public/markdown/drawio/font/svg/geSprite-center.svg
  74. 16
      os/public/markdown/drawio/font/svg/geSprite-code.svg
  75. 9
      os/public/markdown/drawio/font/svg/geSprite-connection.svg
  76. 13
      os/public/markdown/drawio/font/svg/geSprite-curved.svg
  77. 15
      os/public/markdown/drawio/font/svg/geSprite-delete.svg
  78. 13
      os/public/markdown/drawio/font/svg/geSprite-dots.svg
  79. 13
      os/public/markdown/drawio/font/svg/geSprite-entity.svg
  80. 45
      os/public/markdown/drawio/font/svg/geSprite-fit.svg
  81. 15
      os/public/markdown/drawio/font/svg/geSprite-fontbackground.svg
  82. 13
      os/public/markdown/drawio/font/svg/geSprite-fontcolor.svg
  83. 9
      os/public/markdown/drawio/font/svg/geSprite-formatpanel.svg
  84. 45
      os/public/markdown/drawio/font/svg/geSprite-horizontalelbow.svg
  85. 11
      os/public/markdown/drawio/font/svg/geSprite-horizontalisometric.svg
  86. 9
      os/public/markdown/drawio/font/svg/geSprite-horizontalrule.svg
  87. 20
      os/public/markdown/drawio/font/svg/geSprite-indent.svg
  88. 8
      os/public/markdown/drawio/font/svg/geSprite-italic.svg
  89. 13
      os/public/markdown/drawio/font/svg/geSprite-justifyfull.svg
  90. 13
      os/public/markdown/drawio/font/svg/geSprite-left.svg
  91. 16
      os/public/markdown/drawio/font/svg/geSprite-link.svg
  92. 11
      os/public/markdown/drawio/font/svg/geSprite-linkedge.svg
  93. 40
      os/public/markdown/drawio/font/svg/geSprite-middle.svg
  94. 21
      os/public/markdown/drawio/font/svg/geSprite-orderedlist.svg
  95. 10
      os/public/markdown/drawio/font/svg/geSprite-orthogonal.svg
  96. 20
      os/public/markdown/drawio/font/svg/geSprite-outdent.svg
  97. 8
      os/public/markdown/drawio/font/svg/geSprite-plus.svg
  98. 45
      os/public/markdown/drawio/font/svg/geSprite-redo.svg
  99. 11
      os/public/markdown/drawio/font/svg/geSprite-removeformat.svg
  100. 13
      os/public/markdown/drawio/font/svg/geSprite-right.svg

33
os/.gitignore

@ -0,0 +1,33 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
./dist/
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.tsbuildinfo
pnpm-lock.yaml
yarn.lock

10
os/auto-imports.d.ts

@ -0,0 +1,10 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
// biome-ignore lint: disable
export {}
declare global {
}

129
os/components.d.ts

@ -0,0 +1,129 @@
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
// biome-ignore lint: disable
export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
AiChatInfo: typeof import('./src/components/aichat/AiChatInfo.vue')['default']
AiChatLeft: typeof import('./src/components/aichat/AiChatLeft.vue')['default']
AiChatMain: typeof import('./src/components/aichat/AiChatMain.vue')['default']
AiChatMessage: typeof import('./src/components/aichat/AiChatMessage.vue')['default']
AiSettingApi: typeof import('./src/components/aisetting/AiSettingApi.vue')['default']
AiSettingConf: typeof import('./src/components/aisetting/AiSettingConf.vue')['default']
AiSettingDef: typeof import('./src/components/aisetting/AiSettingDef.vue')['default']
ApplyList: typeof import('./src/components/workbench/worktable/ApplyList.vue')['default']
AssistantAdd: typeof import('./src/components/assistant/AssistantAdd.vue')['default']
AuthLogin: typeof import('./src/components/auth/AuthLogin.vue')['default']
Calendar: typeof import('./src/components/taskbar/Calendar.vue')['default']
ChatBoxMain: typeof import('./src/components/workbench/chat/ChatBoxMain.vue')['default']
ChatMessage: typeof import('./src/components/workbench/chat/ChatMessage.vue')['default']
ChatMsgList: typeof import('./src/components/workbench/chat/ChatMsgList.vue')['default']
ChatUserInfo: typeof import('./src/components/workbench/chat/ChatUserInfo.vue')['default']
ChatUserList: typeof import('./src/components/workbench/chat/ChatUserList.vue')['default']
ChooseUser: typeof import('./src/components/user/ChooseUser.vue')['default']
Collaboration: typeof import('./src/components/windows/Collaboration.vue')['default']
ComputerContextMenu: typeof import('./src/components/contextmenu/ComputerContextMenu.vue')['default']
CopyFromMe: typeof import('./src/components/workbench/worktable/CopyFromMe.vue')['default']
CopyToMe: typeof import('./src/components/workbench/worktable/CopyToMe.vue')['default']
DesktopIcons: typeof import('./src/components/windows/DesktopIcons.vue')['default']
DesktopMobile: typeof import('./src/components/windows/DesktopMobile.vue')['default']
Detail: typeof import('./src/components/workbench/worktable/Detail.vue')['default']
DownAddbox: typeof import('./src/components/aimodel/DownAddbox.vue')['default']
DownLabeleditor: typeof import('./src/components/aimodel/DownLabeleditor.vue')['default']
DownModelInfo: typeof import('./src/components/aimodel/DownModelInfo.vue')['default']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElFooter: typeof import('element-plus/es')['ElFooter']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTransfer: typeof import('element-plus/es')['ElTransfer']
ElTree: typeof import('element-plus/es')['ElTree']
EmailLogin: typeof import('./src/components/auth/EmailLogin.vue')['default']
FileContextMenu: typeof import('./src/components/contextmenu/FileContextMenu.vue')['default']
FileIcon: typeof import('./src/components/windows/FileIcon.vue')['default']
FileTree: typeof import('./src/components/files/FileTree.vue')['default']
FileTreeSection: typeof import('./src/components/files/FileTreeSection.vue')['default']
Icon: typeof import('./src/components/windows/Icon.vue')['default']
IframeApp: typeof import('./src/components/windows/IframeApp.vue')['default']
LdapLogin: typeof import('./src/components/auth/LdapLogin.vue')['default']
LockScreen: typeof import('./src/components/loading/LockScreen.vue')['default']
MyApply: typeof import('./src/components/workbench/worktable/MyApply.vue')['default']
MyCard: typeof import('./src/components/workbench/worktable/MyCard.vue')['default']
MyCheck: typeof import('./src/components/workbench/worktable/MyCheck.vue')['default']
MyTask: typeof import('./src/components/workbench/worktable/MyTask.vue')['default']
PasswordLogin: typeof import('./src/components/auth/PasswordLogin.vue')['default']
PhoneLogin: typeof import('./src/components/auth/PhoneLogin.vue')['default']
RectChosen: typeof import('./src/components/windows/RectChosen.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SaveFile: typeof import('./src/components/files/SaveFile.vue')['default']
ScreenRecorder: typeof import('./src/components/taskbar/ScreenRecorder.vue')['default']
Screenshort: typeof import('./src/components/taskbar/Screenshort.vue')['default']
ShareFiles: typeof import('./src/components/files/ShareFiles.vue')['default']
SlideBackground: typeof import('./src/components/loading/SlideBackground.vue')['default']
StartMenu: typeof import('./src/components/taskbar/StartMenu.vue')['default']
Taskbar: typeof import('./src/components/taskbar/Taskbar.vue')['default']
TaskList: typeof import('./src/components/workbench/worktable/TaskList.vue')['default']
TrayDate: typeof import('./src/components/taskbar/TrayDate.vue')['default']
UnLock: typeof import('./src/components/auth/UnLock.vue')['default']
UserRegister: typeof import('./src/components/auth/UserRegister.vue')['default']
ViewExcel: typeof import('./src/components/viewer/excel/ViewExcel.vue')['default']
ViewPpt: typeof import('./src/components/viewer/ppt/ViewPpt.vue')['default']
WindowFiles: typeof import('./src/components/windows/WindowFiles.vue')['default']
WindowLeft: typeof import('./src/components/windows/WindowLeft.vue')['default']
WindowManager: typeof import('./src/components/windows/WindowManager.vue')['default']
WindowTabs: typeof import('./src/components/windows/WindowTabs.vue')['default']
WinLoading: typeof import('./src/components/loading/WinLoading.vue')['default']
WinLogo: typeof import('./src/components/loading/WinLogo.vue')['default']
WinScreen: typeof import('./src/components/loading/WinScreen.vue')['default']
WorkbenchMenu: typeof import('./src/components/workbench/WorkbenchMenu.vue')['default']
WorkTableLeft: typeof import('./src/components/workbench/worktable/WorkTableLeft.vue')['default']
WorkTableMain: typeof import('./src/components/workbench/worktable/WorkTableMain.vue')['default']
}
export interface ComponentCustomProperties {
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
}
}

22
os/index.html

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>GodoOS</title>
<style>
body {
margin: 0;
}
</style>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

7498
os/package-lock.json

File diff suppressed because it is too large

53
os/package.json

@ -0,0 +1,53 @@
{
"name": "godoos-desktop",
"private": true,
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@types/file-saver": "^2.0.7",
"axios": "^1.7.9",
"chart.js": "^4.4.7",
"cherry-markdown": "^0.8.58",
"dexie": "^4.0.10",
"element-plus": "^2.3.9",
"exceljs": "^4.4.0",
"file-saver": "^2.0.5",
"js-md5": "^0.8.3",
"lunar-typescript": "^1.7.6",
"mitt": "^3.0.1",
"pinia": "^2.1.6",
"pinia-plugin-persistedstate": "^4.2.0",
"pptxtojson": "^1.1.1",
"svg-pathdata": "^7.1.0",
"swiper": "^11.2.1",
"tinycolor2": "^1.6.0",
"vue": "^3.3.4",
"vue-i18n": "^11.0.1",
"vue-monoplasty-slide-verify": "^1.3.1",
"vue-router": "^4.2.4",
"vue-slider-captcha": "^0.1.2",
"vue-web-screen-shot": "^1.5.3",
"vue3-lottie": "^3.3.1",
"x-data-spreadsheet": "^1.1.9"
},
"devDependencies": {
"@types/exceljs": "^1.3.2",
"@types/node": "^22.10.10",
"@types/tinycolor2": "^1.4.6",
"@vitejs/plugin-vue": "^4.2.3",
"less": "^4.2.2",
"sass": "^1.83.4",
"typescript": "^5.0.2",
"unplugin-auto-import": "^19.0.0",
"unplugin-vue-components": "^28.0.0",
"vite": "^4.4.5",
"vite-plugin-vue-devtools": "^7.7.0",
"vue-tsc": "^1.8.5"
}
}

58662
os/public/bot/chat.json

File diff suppressed because it is too large

13990
os/public/bot/search.json

File diff suppressed because it is too large

238
os/public/calculator/css/cal.css

@ -0,0 +1,238 @@
/*各界面共用部分开始*/
* {
font-family: '微软雅黑';
}
.standard-main,
.science-main,
.programmer-main {
margin: 0px;
}
ul {
list-style: none;
margin: 0px;
padding: 0px;
}
li {
float: left;
text-align: center;
cursor: pointer;
}
li img {
height: 14px;
}
.title {
height: 30px;
line-height: 30px;
}
.result {
height: 120px;
text-align: right;
}
.second {
font-size: 40px;
font-weight: bold;
padding-right: 10px;
}
.pre {
color: #a7a7a7;
padding-right: 10px;
}
/*计算器类型*/
.type {
height: 20px;
text-align: left;
margin-left: 10px;
font-weight: bold;
margin-top: 10px;
cursor: pointer;
}
/*类型选择侧边栏*/
.type-bar {
display: none;
height: 90px;
width: 100px;
position: absolute;
top: 35px;
background-color: #e6e6e6;
}
.type-bar li {
float: left;
width: 100px;
text-align: center;
line-height: 30px;
}
.active {
background-color: #cfcfcf;
}
/*数字加粗*/
.number {
font-weight: bold;
}
/*共用部分结束*/
/*计算器标准版界面开始*/
.standard-main {
width: 350px;
height: 480px;
}
#std-top-symbol {
border-top: 1px #a7a7a7 solid;
height: 52px;
}
#std-num-symbol {
background-color: #e6e6e6;
height: 270px;
font-size: 20px;
}
#std-top-symbol li,
#std-num-symbol li {
line-height: 52px;
width: 87.5px;
}
/*标准界面结束*/
/*科学型界面开始*/
.science-main {
display: none;
width: 350px;
}
.sci-result {
height: 120px;
text-align: right;
}
#sci-top-symbol {
border-top: 1px #a7a7a7 solid;
height: 135px;
}
#sci-top-symbol li,
#sci-num-symbol li {
line-height: 45px;
width: 70px;
}
#sci-num-symbol {
height: 235px;
background-color: #e6e6e6;
}
/*科学型界面结束*/
/*程序员型界面开始*/
.programmer-main {
display: none;
width: 350px;
}
.pro-result {
height: 220px;
text-align: right;
}
#pro-top-symbol {
border-top: 1px #a7a7a7 solid;
height: 45px;
}
#pro-top-symbol li {
line-height: 45px;
width: 58px;
}
#pro-num-symbol li {
line-height: 45px;
width: 70px;
}
#pro-num-symbol {
height: 235px;
background-color: #e6e6e6;
}
/*四个进制*/
#pro-scales {
margin-left: 20px;
}
#pro-scales div {
text-align: left;
margin-top: 5px;
cursor: pointer;
}
/*当前使用的进制*/
.scale-active {
color: cornflowerblue;
}
/*按键不可用*/
.disable-btn {
color: #cacaca;
}
/*程序员型界面结束*/
@media screen and (max-width: 450px) {
html,
body {
height: 100%;
padding: 0px !important;
}
.standard-main,
.science-main,
.programmer-main {
width: 100%;
height: 100%;
}
.result,
.sci-result {
height: 150px;
}
#std-top-symbol {
display: flex;
justify-content: space-evenly;
}
#std-num-symbol {
height: calc(100% - 150px - 52px);
display: grid;
grid-template-columns: repeat(4, 1fr);
place-items: center;
}
#sci-top-symbol,
#pro-top-symbol {
display: flex;
justify-content: space-evenly;
flex-wrap: wrap;
}
#sci-num-symbol {
height: calc(100% - 150px - 135px);
}
#pro-num-symbol {
height: calc(100% - 220px - 45px);
}
#sci-num-symbol,
#pro-num-symbol {
display: grid;
grid-template-columns: repeat(5, 1fr);
place-items: center;
}
}

BIN
os/public/calculator/images/10_x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
os/public/calculator/images/1_x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
os/public/calculator/images/x_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
os/public/calculator/images/x_y.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
os/public/calculator/images/x_y_sqrt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

199
os/public/calculator/index.html

@ -0,0 +1,199 @@
<!DOCTYPE html>
<html>
<head>
<title>计算器</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/cal.css">
<script src="js/cal.js"></script>
</head>
<body>
<!--标准型-->
<div class="standard-main" id="std-main">
<!--结果显示区域-->
<div class="result">
<!--显示类型信息-->
<div class="type" id="std-show-bar">
&nbsp;&nbsp;&nbsp;标准
</div>
<!--上一步的结果-->
<div class="pre" id="std-pre-step">
&nbsp;
</div>
<!--第二个/运算结果-->
<div class="second" id="std-show-input">0</div>
</div>
<ul id="std-top-symbol">
<li value="17">%</li>
<li value="18"></li>
<li value="19"><img src="images/x_2.png" style="height: 18px;" /></li>
<li value="20"><img src="images/1_x.png" /></li>
</ul>
<!--数字和符号-->
<ul id="std-num-symbol">
<li value="37">CE</li>
<li value="38">C</li>
<li value="39">Back</li>
<li value="16">÷</li>
<li class="number" value="7">7</li>
<li class="number" value="8">8</li>
<li class="number" value="9">9</li>
<li value="15">×</li>
<li class="number" value="4">4</li>
<li class="number" value="5">5</li>
<li class="number" value="6">6</li>
<li value="14">-</li>
<li class="number" value="1">1</li>
<li class="number" value="2">2</li>
<li class="number" value="3">3</li>
<li value="13">+</li>
<li value="11">±</li>
<li class="number" value="0">0</li>
<li value="10">.</li>
<li value="12">=</li>
</ul>
<!--侧边栏,选择计算器类型-->
<ul class="type-bar" id="std-type-bar">
<li class="active">标准</li>
<li value="2">科学</li>
<li value="3">程序员</li>
</ul>
</div>
<!--科学型-->
<div class="science-main" id="sci-main">
<!--结果显示区域-->
<div class="sci-result">
<!--显示类型信息-->
<div class="type" id="sci-show-bar">
&nbsp;&nbsp;&nbsp;科学
</div>
<!--上一步的结果-->
<div class="pre" id="sci-pre-step">
&nbsp;
</div>
<!--第二个/运算结果-->
<div class="second" id="sci-show-input">0</div>
</div>
<!--上面的3行运算符-->
<ul id="sci-top-symbol">
<li value="21">(</li>
<li value="22">)</li>
<li value="23"><img src="images/x_y_sqrt.png" style="height: 18px;width: 22px;" /></li>
<li value="24">n!</li>
<li value="25">Exp</li>
<li value="19"><img src="images/x_2.png" style="height: 18px;" /></li>
<li value="26"><img src="images/x_y.png" style="height: 18px;" /></li>
<li value="27">sin</li>
<li value="28">cos</li>
<li value="29">tan</li>
<li value="30"><img src="images/10_x.png" /></li>
<li value="31">log</li>
<li value="32">sinh</li>
<li value="33">cosh</li>
<li value="34">tanh</li>
</ul>
<!--数字和符号-->
<ul id="sci-num-symbol">
<li value="35">π</li>
<li value="37">CE</li>
<li value="38">C</li>
<li value="39">Back</li>
<li value="16">÷</li>
<li value="18"></li>
<li value="7" class="number">7</li>
<li value="8" class="number">8</li>
<li value="9" class="number">9</li>
<li value="15">×</li>
<li value="17">%</li>
<li value="4" class="number">4</li>
<li value="5" class="number">5</li>
<li value="6" class="number">6</li>
<li value="14">-</li>
<li value="20"><img src="images/1_x.png" /></li>
<li value="1" class="number">1</li>
<li value="2" class="number">2</li>
<li value="3" class="number">3</li>
<li value="13">+</li>
<li value="36"></li>
<li value="11">±</li>
<li value="0" class="number">0</li>
<li value="10">.</li>
<li value="12">=</li>
</ul>
<!--侧边栏,选择计算器类型-->
<ul class="type-bar" id="sci-type-bar">
<li value="1">标准</li>
<li class="active">科学</li>
<li value="3">程序员</li>
</ul>
</div>
<!--程序员型-->
<div class="programmer-main" id="pro-main">
<!--结果显示区域-->
<div class="pro-result">
<!--显示类型信息-->
<div class="type" id="pro-show-bar">
&nbsp;&nbsp;&nbsp;程序员
</div>
<!--上一步的结果-->
<div class="pre" id="pro-pre-step">
&nbsp;
</div>
<!--第二个/运算结果-->
<div class="second" id="pro-show-input">0</div>
<!--显示16、10、8、2进制的值-->
<div id="pro-scales">
<div scale="16">HEX&nbsp;&nbsp;&nbsp;<span>0</span></div>
<div scale="10" class="scale-active">DEC&nbsp;&nbsp;&nbsp;<span>0</span></div>
<div scale="8">OCT&nbsp;&nbsp;&nbsp;<span>0</span></div>
<div scale="2">BIN&nbsp;&nbsp;&nbsp;&nbsp;<span>0</span></div>
</div>
</div>
<!--上面的一行十六进制数字,因为默认是10进制,所以这些按钮默认禁用-->
<ul id="pro-top-symbol">
<li class="disable-btn" value="40">A</li>
<li class="disable-btn" value="41">B</li>
<li class="disable-btn" value="42">C</li>
<li class="disable-btn" value="43">D</li>
<li class="disable-btn" value="44">E</li>
<li class="disable-btn" value="45">F</li>
</ul>
<!--数字和符号-->
<ul id="pro-num-symbol">
<li value="36"></li>
<li value="37">CE</li>
<li value="38">C</li>
<li value="39">Back</li>
<li value="16">÷</li>
<li value="46">And</li>
<li value="7" class="number" bin-disable="1">7</li>
<li value="8" class="number" oct-disable="1" bin-disable="1">8</li>
<li value="9" class="number" oct-disable="1" bin-disable="1">9</li>
<li value="15">×</li>
<li value="47">Or</li>
<li value="4" class="number" bin-disable="1">4</li>
<li value="5" class="number" bin-disable="1">5</li>
<li value="6" class="number" bin-disable="1">6</li>
<li value="14">-</li>
<li value="48">Not</li>
<li value="1" class="number">1</li>
<li value="2" class="number" bin-disable="1">2</li>
<li value="3" class="number" bin-disable="1">3</li>
<li value="13">+</li>
<li value="21">(</li>
<li value="22">)</li>
<li value="0" class="number">0</li>
<li value="10" class="disable-btn" id="pro-point">.</li>
<li value="12">=</li>
</ul>
<!--侧边栏,选择计算器类型-->
<ul class="type-bar" id="pro-type-bar">
<li value="1">标准</li>
<li value="2">科学</li>
<li class="active">程序员</li>
</ul>
</div>
</body>
</html>

990
os/public/calculator/js/cal.js

@ -0,0 +1,990 @@
window.onload = function () {
Calculator.initCache();
Calculator.initListeners();
};
//全局计算器对象
var Calculator = (function () {
var cal = {
//计算器按键编码
keyCodes: {
0: '0',
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
10: '.',
11: '±',
12: '=',
13: '+',
14: '-',
15: '*',
16: '/',
17: '%',
18: '√',
19: 'x2',
20: '1/x',
21: '(',
22: ')',
23: 'yroot',
24: 'n!',
25: 'Exp',
26: '^',
27: 'sin',
28: 'cos',
29: 'tan',
30: 'powten',
31: 'log',
32: 'sinh',
33: 'cosh',
34: 'tanh',
35: 'π',
36: '↑',
37: 'CE',
38: 'C',
39: 'Back',
//以下是程序员型特有的按键
40: 'A',
41: 'B',
42: 'C',
43: 'D',
44: 'E',
45: 'F',
46: '&',
47: '|',
48: '~'
},
//映射用于显示的操作符,比如计算时用*,而显示时x更好
operatorFacade: {
13: '+',
14: '-',
15: '×',
16: '÷',
17: '%',
23: 'yroot',
26: '^',
46: '&',
47: '|'
},
//当前计算器的类型1 --> 标准型, 2-->科学型, 3-->程序员型,默认标准型
type: 1,
//计算器类型前缀,用于从页面获取元素
typePrefix: {
1: "std-",
2: "sci-",
3: "pro-"
},
//记录每个类型的计算器的事件监听是否已经绑定,key:typpe数值,value:默认标准型是true(已加载)
hasInited: {
1: true,
2: false,
3: false
},
//常量
constants: {
//鼠标悬停时的颜色
mouseHoverColor: "#CFCFCF",
//计算器第一行和下面其它行的颜色是不同的,这个是第一行的背景颜色
firstMouseOutColor: "#F2F2F2",
//剩余各行的背景颜色
mouseOutColor: "#E6E6E6"
},
cache: {
//输入内容显示元素
showInput: null,
//上一步计算结果显示区域
preStep: null,
//显示四种进制数值的span,只在程序员型有效
scaleSpans: null
},
/**
* 获取cache.showInput的内容
* @return String
*/
getShowInput: function () {
return cal.cache.showInput.innerHTML;
},
/**
* 设置showInput的值
* @param value
*/
setShowInput: function (value) {
cal.cache.showInput.innerHTML = value;
},
/**
* 获取cache.preStep的内容
* @return String
*/
getPreStep: function () {
return cal.cache.preStep.innerHTML;
},
setPreStep: function (value) {
cal.cache.preStep.innerHTML = value;
},
//操作数栈
operandStack: [],
//运算符栈
operatorStack: [],
//上一次输入是否是二元运算符,如果是并且再次输入二元运算符,那么忽略此次输入
isPreInputBinaryOperator: false,
//上次按键是否是一元操作
isPreInputUnaryOperator: false,
//等号不可以连按
isPreInputEquals: false,
//如果为true,那么接下来输入的数字需要覆盖在showInput上,而不是追加
//上一次计算的结果(=)
preResult: 0,
//当前使用的进制(只在程序员中有效),默认10进制(DEC)
currentScale: 10,
isOverride: false,
//int校验
intPattern: /^-?\d+$/,
//小数校验
floatPattern: /^-?\d+\.\d+$/,
//科学计数法校验
scientificPattern: /^\d+\.\d+e(\+|-)\d+$/,
//校验16进制数字
hexPattern: /^[0-9A-F]+$/,
//辅助判断运算符的优先级
operatorPriority: {
")": 0,
"|": 1,
"&": 2,
"+": 3,
"-": 3,
"*": 4,
"%": 4,
"/": 4,
"^": 5,
"yroot": 5,
"(": 6
},
/**
* 初始化缓存对象(cal.cache)
*/
initCache: function () {
var prefix = cal.typePrefix[cal.type];
cal.cache.showInput = document.getElementById(prefix + "show-input");
cal.cache.preStep = document.getElementById(prefix + "pre-step");
if (cal.type == 3) {
cal.cache.scaleSpans = document.getElementById("pro-scales").getElementsByTagName("span");
}
},
//各种事件监听函数
listeners: {
/**
* 鼠标悬停在按键上的变色效果
*/
mouseHoverListener: function (e) {
var event = e || window.event;
event.currentTarget.style.backgroundColor = cal.constants.mouseHoverColor;
},
/**
* 鼠标从上排符号中移出的变色效果
*/
firstMouseOutListener: function (e) {
var event = e || window.event;
event.currentTarget.style.backgroundColor = cal.constants.firstMouseOutColor;
},
/**
* 鼠标从下排数字符号中移出的变色效果
*/
mouseOutListener: function (e) {
var event = e || window.event;
event.currentTarget.style.backgroundColor = cal.constants.mouseOutColor;
},
/**
* 按键按下事件监听
*/
keyPressListener: function (e) {
var event = e || window.event;
cal.handleKey(event.currentTarget.value);
},
/**
* 显示/隐藏计算器类型选择栏
*/
toggleTypeBarListener: function () {
var bar = document.getElementById(cal.typePrefix[cal.type] + "type-bar");
if (bar.style.display === "block") {
bar.style.display = "none";
} else {
bar.style.display = "block";
}
},
/**
* 切换计算器类型监听器
*/
switchTypeListener: function (e) {
var event = e || window.event;
cal.switchType(parseInt(event.currentTarget.value));
},
/**
* 切换进制(程序员专用)
*/
switchScaleListener: function (e) {
var event = e || window.event;
var scales = document.getElementById("pro-scales").getElementsByTagName("div"),
//此处应该使用currentTarget属性,因为target属性在绑定事件的元素有子元素的情况下会返回子元素
scale = parseInt(event.currentTarget.getAttribute("scale")),
oldScale = cal.currentScale;
//切换选中样式
for (var i = 0, l = scales.length; i < l; ++i) {
scales[i].removeAttribute("class");
}
event.currentTarget.setAttribute("class", "scale-active");
var lis, btns;
if (scale === 16) {
//处理上排6个16进制数字
cal.listeners._initFirstRowListeners();
if (oldScale < 10) {
cal.listeners._initSecondRowListeners();
}
} else if (scale === 10) {
if (oldScale === 16) {
lis = document.getElementById("pro-top-symbol").getElementsByTagName("li");
cal.disableButtons(lis, cal.listeners.firstMouseOutListener);
} else {
cal.listeners._initSecondRowListeners();
}
} else if (scale === 8) {
if (oldScale > 8) {
lis = document.getElementById("pro-top-symbol").getElementsByTagName("li");
cal.disableButtons(lis, cal.listeners.firstMouseOutListener);
//禁用8和9
btns = cal.getElementsByAttribute("li", "oct-disable", document.getElementById("pro-num-symbol"));
cal.disableButtons(btns, cal.listeners.mouseOutListener);
} else {
cal.listeners._initSecondRowListeners();
}
} else if (scale === 2) {
if (oldScale === 16) {
lis = document.getElementById("pro-top-symbol").getElementsByTagName("li");
cal.disableButtons(lis, cal.listeners.firstMouseOutListener);
}
//禁用2-9
btns = cal.getElementsByAttribute("li", "bin-disable", document.getElementById("pro-num-symbol"));
cal.disableButtons(btns, cal.listeners.mouseOutListener);
}
cal.currentScale = scale;
},
/**
* 初始化第一排操运算符事件监听
* @private
*/
_initFirstRowListeners: function () {
var lis = document.getElementById(cal.typePrefix[cal.type] + "top-symbol").getElementsByTagName("li");
cal.rebuildButtons(lis, cal.listeners.firstMouseOutListener);
},
/**
* 初始化第二排运算符事件监听
* @private
*/
_initSecondRowListeners: function () {
var lis = document.getElementById(cal.typePrefix[cal.type] + "num-symbol").getElementsByTagName("li");
cal.rebuildButtons(lis, cal.listeners.mouseOutListener);
if (cal.type === 3) {
//程序员型的小数点是禁用的
cal.disableButtons([document.getElementById("pro-point")], cal.listeners.mouseOutListener);
}
}
},
//初始化事件监听器
initListeners: function () {
var prefix = cal.typePrefix[cal.type];
//设置上排运算符事件监听,如果是程序员型,因为默认是10进制,而上排是16进制数字,所以不需要设置事件监听
if (cal.type < 3) {
cal.listeners._initFirstRowListeners();
}
//设置下面一栏数字、四则运算事件监听
cal.listeners._initSecondRowListeners();
//显示/隐藏计算器类型选择侧边栏
cal.addEvent(document.getElementById(prefix + "show-bar"), "click", cal.listeners.toggleTypeBarListener);
//为侧边栏下的li绑定切换类型事件
var bar = document.getElementById(prefix + "type-bar");
lis = bar.getElementsByTagName("li");
var li;
for (var i = 0, l = lis.length; i < l; ++i) {
li = lis[i];
//非当前类型才有必要绑定事件
if (li.className !== "active") {
cal.addEvent(li, "click", cal.listeners.switchTypeListener);
}
}
//加载程序员型特有的
if (cal.type === 3) {
var scales = document.getElementById("pro-scales").getElementsByTagName("div"),
scale;
for (i = 0, l = scales.length; i < l; ++i) {
scale = scales[i];
cal.addEvent(scale, "click", cal.listeners.switchScaleListener);
}
}
},
/**
* 相应按键按下事件
* @param value 按键的value值(即其keyCode)
*/
handleKey: function (value) {
var keyCode = parseInt(value);
//如果是一个数字或者小数点,直接显示出来
if (keyCode < 11 || (keyCode > 39 && keyCode < 46)) {
cal.showInput(cal.keyCodes[keyCode]);
if (cal.type === 3) {
//如果是程序员型,那么需要同步显示4中进制的值
cal.showScales(cal.getShowInput());
}
} else {
switch (keyCode) {
//正负号
case 11:
cal.unaryOperate(function (oldValue) {
oldValue += "";
if (oldValue === "0") {
return [oldValue];
}
if (oldValue.charAt(0) === '-') {
return [oldValue.substring(1)];
} else {
return ["-" + oldValue];
}
});
break;
//开根下
case 18:
cal.unaryOperate(function (si) {
return [Math.sqrt(si), "sqrt"];
});
break;
//平方
case 19:
cal.unaryOperate(function (si) {
return [Math.pow(si, 2), "sqr"];
});
break;
//取倒数
case 20:
cal.unaryOperate(function (si) {
return [si === 0 ? "0不能作为被除数" : 1 / si, "1/"];
});
break;
//阶乘
case 24:
cal.unaryOperate(function (si) {
if (si < 0) {
si = (0 - si);
}
if (cal.isFloat(si + "")) {
si = Math.floor(si);
}
return [cal.fact(si), "fact"];
});
break;
//Exp 转为科学计数法表示
case 25:
cal.unaryOperate(function (si) {
return [si.toExponential(7)];
});
break;
//sin
case 27:
cal.unaryOperate(function (si) {
return [Math.sin(si), "sin"];
});
break;
//cos
case 28:
cal.unaryOperate(function (si) {
return [Math.cos(si), "cos"];
});
break;
//tan
case 29:
cal.unaryOperate(function (si) {
return [Math.tan(si), "tan"];
});
break;
//10的x次方
case 30:
cal.unaryOperate(function (si) {
return [Math.pow(10, si), "powten"];
});
break;
//log
case 31:
cal.unaryOperate(function (si) {
//js的Math.log是e的对数,Windows计算器是10的对数,此处参考Windows
return [Math.log10(si), "log"];
});
break;
//sinh(双曲正弦函数)
case 32:
cal.unaryOperate(function (si) {
return [Math.sinh(si), "sinh"];
});
break;
//cosh(双曲余弦函数)
case 33:
cal.unaryOperate(function (si) {
return [Math.cosh(si), "cosh"];
});
break;
//tanh(双曲余切函数)
case 34:
cal.unaryOperate(function (si) {
return [Math.tanh(si), "tanh"];
});
break;
//π
case 35:
cal.unaryOperate(function (si) {
return [Math.PI];
});
break;
//按位取反(~)
case 48:
cal.unaryOperate(function (si) {
var result = eval("~" + si);
//显示四种进制的数值
cal.showScales(result);
return [result];
});
break;
//二元运算符开始
//加、减、乘、除、取余,运算比较简单,直接利用eval即可求值
case 13:
case 14:
case 15:
case 16:
case 17:
//x的y次方
case 26:
//开任意次方根
case 23:
//And Or
case 46:
case 47:
if (cal.isPreInputBinaryOperator) {
break;
}
cal.isPreInputBinaryOperator = true;
cal.isOverride = true;
cal.binaryOperate(cal.keyCodes[keyCode], cal.operatorFacade[keyCode]);
break;
case 12:
cal.calculate();
break;
//ce
case 37:
cal.ce();
break;
//c
case 38:
cal.clear();
break;
//back
case 39:
cal.back();
break;
// (
case 21:
cal.setPreStep(cal.getPreStep() + " (");
cal.operatorStack.push("(");
break;
// )
case 22:
cal.rightTag();
break;
//向上箭头,把上次计算结果显示出来
case 36:
cal.setShowInput(cal.preResult);
break;
}
}
},
/**
* 执行一元运算 比如取倒数平方
* @param operation 具体运算回调函数
* 会向operation传递一个参数si为用户当前的输入同时operation函数应该返回一个数组数组的第一个
* 元素是计算的结果第二个元素示例sqrt第二个参数可选
*/
unaryOperate: function (operation) {
var si = cal.getShowInput(),
result;
if (cal.isInteger(si)) {
result = operation(parseInt(si));
} else if (cal.isFloat(si) || cal.isScientific(si)) {
result = operation(parseFloat(si));
}
if (result != null) {
cal.setShowInput(cal.checkLength(result[0]));
if (result.length > 1) {
//显示prestep有两种情况:
//第一种就是这是第一次(指连续调用的第一次)调用一元函数,此时直接接在末尾即可
if (!cal.isPreInputUnaryOperator) {
cal.setPreStep(cal.getPreStep() + " " + result[1] + "(" + si + ")");
cal.isPreInputUnaryOperator = true;
} else {
//第二种就是这不是第一次,那么应该截取最后一个空格之后的内容进行替换
//比如1 + 3 + sqrt(100),那么应该从最后一个空格后替换为此次操作的内容
var pi = cal.getPreStep();
pi = pi.substring(0, pi.lastIndexOf(" "));
pi += (" " + result[1] + "(" + si + ")");
cal.setPreStep(pi);
}
}
//一元运算结束后应该覆盖
cal.isOverride = true;
}
cal.isPreInputBinaryOperator = false;
},
/**
* 二元操作(+ - * / %)
* @param operator 操作符
* @param facade 运算符门面用于显示在preStep中
*/
binaryOperate: function (operator, facade) {
//如果是程序员型,那么需要重置scalesSpan
if (cal.type === 3) {
cal.resetScales();
}
var si = cal.getShowInput(),
pi = cal.getPreStep();
if (cal.isNumber(si)) {
//压操作数栈
cal.operandStack.push(si);
//设置preStep有三种情况:第一种上一步不是一元操作,那么需要设置si,第二种是一元操作,那么由于一元操作会把
//函数表达式(比如sqrt(100))设置到preStep,所以不需要再次设置si
//第三种就是如果最后一位是右括号,那么也不需要设置si
cal.setPreStep(cal.getPreStep() + ((cal.isPreInputUnaryOperator || pi.charAt(pi.length - 1) === ")") ?
(" " + facade) : (" " + si + " " + facade)));
var preOp = cal.operatorStack.pop();
if (preOp != null) {
var op = cal.operatorPriority[operator],
pp = cal.operatorPriority[preOp];
//如果当前运算符优先级更高,那么只需压栈不需要计算
if (op > pp) {
cal.operatorStack.push(preOp);
}
//两者的优先级相等并且高于3(加减),那么只需要计算一步
else if (op > 3 && op === pp) {
cal.operatorStack.push(preOp);
cal.travelStack(1);
} else {
cal.operatorStack.push(preOp);
cal.setShowInput(cal.checkLength(cal.travelStack(null, op)));
}
}
cal.operatorStack.push(operator);
}
cal.isPreInputUnaryOperator = false;
cal.isPreInputEquals = false;
},
/**
* 按下=时计算最终结果
*/
calculate: function () {
if (!cal.isPreInputEquals) {
var si = cal.getShowInput(),
result;
if (cal.isNumber(si)) {
cal.operandStack.push(si);
result = cal.checkLength(cal.travelStack());
cal.setShowInput(result);
cal.preResult = result;
cal.setPreStep("&nbsp;");
//程序员型需要把计算结果的四种进制值显示出来
if (cal.type === 3) {
cal.showScales(result);
}
cal.isOverride = true;
}
cal._reset();
cal.isPreInputEquals = true;
}
},
/**
* 访问运算栈返回计算结果
* @param level 计算的层数如果不指定那么遍历整个栈
* @param minPri(最小/截止优先级) 此参数针对下面的情况:
* 2 + 2 X 3 X 2 ^ 2 X 2由于最后一个运算符是X优先级比^所以触发了对操作栈的遍历但是不能全部遍历应该遍历到第一个X停止
* 如果不停止得到的将是错误的26 X 2 = 52正确结果是2 + 24 X 2 = 50
* @return Number
* @private
*/
travelStack: function (level, minPri) {
var op, f, s,
//result取操作数栈栈顶,因为防止在下列情况9 X (6 + 时出现undefined
result = cal.operandStack[cal.operandStack.length - 1],
l = level || cal.operatorStack.length,
p = minPri || 0;
for (var i = 0; i < l; ++i) {
op = cal.operatorStack.pop();
//遇到minPri或左括号立即停止,左括号也需要再次压入,因为只有一个右括号才能抵消一个左括号
if (cal.operatorPriority[op] < p || op === "(") {
cal.operatorStack.push(op);
break;
}
s = cal.operandStack.pop();
f = cal.operandStack.pop();
result = cal._stackHelper(f, s, op);
cal.operandStack.push(result);
}
return result;
},
/**
* 输入了一个右括号
*/
rightTag: function () {
var si = cal.getShowInput();
if (cal.isNumber(si)) {
cal.setPreStep(cal.getPreStep() + (" " + si + " )"));
cal.operandStack.push(si);
//遍历计算操作栈,直至遇到左括号
var op = cal.operatorStack.pop(),
f, s, result;
while (op !== "(" && op != null) {
s = cal.operandStack.pop();
f = cal.operandStack.pop();
result = cal._stackHelper(f, s, op);
cal.operandStack.push(result);
op = cal.operatorStack.pop();
}
//此处应该直接把小括号的计算内容弹出,因为此结果显示在了showInput中,而再次执行二元操作时会先有一个压栈的操作,
// 并且执行=时也是根据showInput内容计算的
cal.setShowInput(cal.checkLength(cal.operandStack.pop()));
}
},
/**
* 辅助进行一次栈运算
* @param f 第一个操作数
* @param s 第二个操作数
* @param op 运算符
* @return 返回运算结果
* @private
*/
_stackHelper: function (f, s, op) {
var result;
if (op === "^") {
result = Math.pow(f, s);
} else if (op === "yroot") {
result = Math.pow(f, 1 / s);
}
//+ - X / %5中操作
else {
//如果是程序员型,那么需要考虑进制的问题
if (cal.type === 3) {
var scale = cal.currentScale,
fi, si;
if (scale === 10) {
result = eval(f + op + s);
} else if (scale === 16) {
fi = parseInt(f, 16);
si = parseInt(s, 16);
result = eval(fi + op + si).toString(16);
} else if (scale === 8) {
fi = parseInt(f, 8);
si = parseInt(s, 8);
result = eval(fi + op + si).toString(8);
} else {
fi = parseInt(f, 2);
si = parseInt(s, 2);
result = eval(fi + op + si).toString(2);
}
} else {
result = eval(f + op + s);
}
}
return result;
},
/**
* 确保结果长度不大于13,如果超出以科学计数法形式显示(小数点后7位)
* @param value 需要检查的结果
*/
checkLength: function (value) {
var valueStr = value + "";
if (cal.isFloat(valueStr)) {
valueStr = valueStr.replace(/0+$/, "");
}
return valueStr.length > 12 ? value.toExponential(7) : valueStr;
},
//CE
ce: function () {
cal.setShowInput("0");
if (cal.type === 3) {
cal.resetScales();
}
},
//C
clear: function () {
cal.setShowInput("0");
cal.setPreStep("&nbsp;");
cal._reset();
if (cal.type === 3) {
cal.resetScales();
}
},
/**
* 清空四个进制的值
* @private
*/
resetScales: function () {
for (var i = 0; i < 4; i++) {
cal.cache.scaleSpans[i].innerHTML = "0";
}
},
back: function () {
var oldValue = cal.cache.showInput.innerText;
cal.setShowInput(oldValue.length < 2 ? "0" : oldValue.substring(0, oldValue.length - 1));
},
/**
* 当计算器类型是程序员时需要同步显示四种进制的值
* @param num 需要显示的数字
*/
showScales: function (num) {
var result = cal.calculateScales(num),
spans = cal.cache.scaleSpans;
for (var i = 0; i < 4; ++i) {
spans[i].innerHTML = result[i];
}
},
/**
* 根据当前进制分别计算出四种进制的值
* @param num 需要计算的值
* @return Array 共4个元素依次为161082进制的值
*/
calculateScales: function (num) {
var scale = cal.currentScale,
result = [],
i;
if (scale === 10) {
i = parseInt(num);
result[0] = i.toString(16);
result[1] = i;
result[2] = i.toString(8);
result[3] = i.toString(2);
} else if (scale === 16) {
//先转成10进制,然后再转成其它进制
i = parseInt(num, 16);
result[0] = num;
result[1] = i;
result[2] = i.toString(8);
result[3] = i.toString(2);
} else if (scale === 8) {
i = parseInt(num, 8);
result[0] = i.toString(16);
result[1] = i;
result[2] = num;
result[3] = i.toString(2);
} else {
i = parseInt(num, 2);
result[0] = i.toString(16);
result[1] = i;
result[2] = i.toString(8);
result[3] = num;
}
return result;
},
/**
* 校验字符串是否是数字
* @param str
* @return 是返回true
*/
isNumber: function (str) {
return cal.isInteger(str) || cal.isFloat(str) || cal.isScientific(str) || cal.isHex(str);
},
/**
* 校验是否是整数
* @param str
*/
isInteger: function (str) {
return str.match(cal.intPattern);
},
/**
* 校验是否是小数
* @param str
*/
isFloat: function (str) {
return str.match(cal.floatPattern);
},
/**
* 是否是科学计数法
* @param str
*/
isScientific: function (str) {
return str.match(cal.scientificPattern);
},
/**
* 是否是16进制数字
* @param str
*/
isHex: function (str) {
return str.match(cal.hexPattern);
},
/**
* 显示输入的内容
* 用于相应数字/小数点按键
* @param value 按键的内容不是keyCode
*/
showInput: function (value) {
var oldValue = cal.getShowInput();
var newValue = oldValue;
if (cal.isOverride) {
//既然是覆盖,那么如果直接输入.那么肯定是0.x
if (value === ".") {
newValue = "0.";
} else {
newValue = value;
}
} else if (oldValue.length < 13) {
if (oldValue === "0") {
if (value === ".") {
newValue = "0.";
} else {
newValue = value;
}
} else {
newValue += value;
}
}
cal.setShowInput(newValue);
cal.isOverride = false;
cal.isPreInputBinaryOperator = false;
cal.isPreInputUnaryOperator = false;
cal.isPreInputEquals = false;
},
/**
* 切换计算器类型
* @param type int 要切换到的类型
*/
switchType: function (type) {
//关闭选择栏
var oldPrefix = cal.typePrefix[cal.type];
document.getElementById(oldPrefix + "type-bar").style.display = "none";
//切换面板
document.getElementById(oldPrefix + "main").style.display = "none";
document.getElementById(cal.typePrefix[type] + "main").style.display = "block";
cal.type = type;
if (!cal.hasInited[type]) {
cal.initListeners();
cal.hasInited[type] = true;
}
cal.initCache();
cal._reset();
},
/**
* 重置各个标志变量以及操作栈
* @private
*/
_reset: function () {
cal.operandStack = [];
cal.operatorStack = [];
cal.isPreInputBinaryOperator = false;
cal.isPreInputUnaryOperator = false;
cal.isPreInputEquals = false;
},
/**
* 工具方法为element添加事件处理函数
* @param element 需要添加事件的dom元素
* @param name name事件名称(不含on)
* @param handler 事件处理函数
*/
addEvent: function (element, name, handler) {
if (window.addEventListener) {
element.addEventListener(name, handler);
} else if (window.attachEvent) {
element.attachEvent("on" + name, handler);
}
},
/**
* 工具方法为element移除特定的事件监听
* @param element 需要移除事件监听的dom元素
* @param name 事件名没有"on"
* @param handler 需要移除的处理函数
*/
removeEvent: function (element, name, handler) {
if (window.removeEventListener) {
element.removeEventListener(name, handler);
} else if (window.detachEvent) {
element.detachEvent("on" + name, handler);
}
},
/**
* 根据元素的属性进行查找只要存在此属性即可
* @param tag 目标标签名
* @param attr
* @param root 开始查找的起始节点可选默认document
*/
getElementsByAttribute: function (tag, attr, root) {
var parent = root || document,
result = [];
var arr = parent.getElementsByTagName(tag),
a;
for (var i = 0, l = arr.length; i < l; ++i) {
a = arr[i];
if (a.getAttribute(attr) != null) {
//这个写法...
result[result.length] = a;
}
}
return result;
},
/**
* 阶乘
* @param n 操作数 int
* @return
*/
fact: (function () {
//缓存
var cache = [1];
function factorial(n) {
var result = cache[n - 1];
if (result == null) {
result = 1;
for (var i = 1; i <= n; ++i) {
result *= i;
}
cache[n - 1] = result;
}
return result;
}
return factorial;
})(),
/**
* 禁用按键只有程序员型才会用到
* @param lis 按钮集合
* @param mouseOutListener function 鼠标移出时采用哪个监听函数取决于按钮的位置(上排/下排)
*/
disableButtons: function (lis, mouseOutListener) {
var li;
for (var i = 0, l = lis.length; i < l; ++i) {
li = lis[i];
li.setAttribute("class", "disable-btn");
cal.removeEvent(li, "click", cal.listeners.keyPressListener);
cal.removeEvent(li, "mouseout", mouseOutListener);
cal.removeEvent(li, "mouseover", cal.listeners.mouseHoverListener);
}
},
/**
* 重新设置按键
* @param lis 按钮集合
* @param mouseOutListener function 鼠标移出时采用哪个监听函数取决于按钮的位置(上排/下排)
*/
rebuildButtons: function (lis, mouseOutListener) {
var li;
for (var i = 0, l = lis.length; i < l; ++i) {
li = lis[i];
li.removeAttribute("class");
cal.addEvent(li, "click", cal.listeners.keyPressListener);
cal.addEvent(li, "mouseout", mouseOutListener);
cal.addEvent(li, "mouseover", cal.listeners.mouseHoverListener);
}
}
};
return cal;
})();

BIN
os/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
os/public/images/bg/bg1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
os/public/images/bg/bg2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

BIN
os/public/images/bg/bg3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
os/public/images/bg/bg4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
os/public/images/bg/bg5.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
os/public/images/bg/bg6.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

BIN
os/public/images/bg/bg7.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
os/public/images/bg/bg8.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

BIN
os/public/images/bg/bg9.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
os/public/images/login/dingding.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
os/public/images/login/email.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
os/public/images/login/gitee.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
os/public/images/login/github.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
os/public/images/login/ldap.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
os/public/images/login/password.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
os/public/images/login/phone.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
os/public/images/login/qyweixin.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
os/public/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

1
os/public/markdown/dist/addons/advance/cherry-table-echarts-plugin.js

File diff suppressed because one or more lines are too long

1
os/public/markdown/dist/addons/cherry-code-block-mermaid-plugin.js

File diff suppressed because one or more lines are too long

1
os/public/markdown/dist/addons/cherry-code-block-plantuml-plugin.js

File diff suppressed because one or more lines are too long

3
os/public/markdown/dist/cherry-markdown.js.map

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5cfb95fe683d044dc82b111d735bd25e5509118e6b03b0eb107c9e063c6149c2
size 19265455

1
os/public/markdown/dist/cherry-markdown.min.css

File diff suppressed because one or more lines are too long

1
os/public/markdown/dist/cherry-markdown.min.js

File diff suppressed because one or more lines are too long

BIN
os/public/markdown/dist/fonts/ch-icon.eot

Binary file not shown.

300
os/public/markdown/dist/fonts/ch-icon.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 284 KiB

BIN
os/public/markdown/dist/fonts/ch-icon.ttf

Binary file not shown.

BIN
os/public/markdown/dist/fonts/ch-icon.woff

Binary file not shown.

BIN
os/public/markdown/dist/fonts/ch-icon.woff2

Binary file not shown.

36
os/public/markdown/drawio.html

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>draw.io demo</title>
<link rel="stylesheet" href="./drawio/grapheditor.css">
<!-- <link rel="stylesheet" href="https://jgraph.github.io/drawio/src/main/webapp/mxgraph/css/common.css"> -->
</head>
<!-- geEditor 是draw.io需要的class -->
<body class="geEditor">
<!-- 加载draw.io需要的静态资源 begin -->
<script type="text/javascript" src="./drawio/Init.js"></script>
<script type="text/javascript" src="./drawio/lib/pako.min.js"></script>
<script type="text/javascript" src="./drawio/lib/base64.js"></script>
<script type="text/javascript" src="./drawio/jscolor/jscolor.js"></script>
<script type="text/javascript" src="./drawio/lib/purify.min.js"></script>
<script type="text/javascript" src="./mxgraph/mxClient.js"></script>
<script type="text/javascript" src="./drawio/Editor.js"></script>
<script type="text/javascript" src="./drawio/EditorUi.js"></script>
<script type="text/javascript" src="./drawio/Sidebar.js"></script>
<script type="text/javascript" src="./drawio/Graph.js"></script>
<script type="text/javascript" src="./drawio/Format.js"></script>
<script type="text/javascript" src="./drawio/Shapes.js"></script>
<script type="text/javascript" src="./drawio/Actions.js"></script>
<script type="text/javascript" src="./drawio/Menus.js"></script>
<script type="text/javascript" src="./drawio/Toolbar.js"></script>
<script type="text/javascript" src="./drawio/Dialogs.js"></script>
<!-- 加载draw.io需要的静态资源 end -->
<script src="./scripts/drawio.js"></script>
</body>
</html>

1961
os/public/markdown/drawio/Actions.js

File diff suppressed because it is too large

2755
os/public/markdown/drawio/Dialogs.js

File diff suppressed because it is too large

3212
os/public/markdown/drawio/Editor.js

File diff suppressed because it is too large

6184
os/public/markdown/drawio/EditorUi.js

File diff suppressed because it is too large

8103
os/public/markdown/drawio/Format.js

File diff suppressed because it is too large

15007
os/public/markdown/drawio/Graph.js

File diff suppressed because it is too large

27
os/public/markdown/drawio/Init.js

@ -0,0 +1,27 @@
// urlParams is null when used for embedding
window.urlParams = window.urlParams || {};
// Public global variables
window.DOM_PURIFY_CONFIG = window.DOM_PURIFY_CONFIG ||
{ADD_TAGS: ['use'], FORBID_TAGS: ['form'],
ALLOWED_URI_REGEXP: /^((?!javascript:).)*$/i,
ADD_ATTR: ['target', 'content']};
// Public global variables
window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE || 10485760;
window.MAX_AREA = window.MAX_AREA || 15000 * 15000;
// URLs for save and export
window.EXPORT_URL = window.EXPORT_URL || './drawio_demo';
window.SAVE_URL = window.SAVE_URL || './drawio_demo';
window.PROXY_URL = window.PROXY_URL || null;
window.OPEN_URL = window.OPEN_URL || './drawio_demo';
window.RESOURCES_PATH = window.RESOURCES_PATH || './drawio/resources';
window.STENCIL_PATH = window.STENCIL_PATH || './drawio/image/stencils';
window.IMAGE_PATH = window.IMAGE_PATH || './drawio/image';
window.STYLE_PATH = window.STYLE_PATH || './drawio/src/css';
window.CSS_PATH = window.CSS_PATH || './drawio/src/css';
window.OPEN_FORM = window.OPEN_FORM || './drawio_demo';
window.mxBasePath = window.mxBasePath || './drawio/src';
window.mxLanguage = window.mxLanguage || window.RESOURCES_PATH + '/zh';
window.mxLanguages = window.mxLanguages || ['zh'];

2006
os/public/markdown/drawio/Menus.js

File diff suppressed because it is too large

7353
os/public/markdown/drawio/Shapes.js

File diff suppressed because it is too large

4260
os/public/markdown/drawio/Sidebar.js

File diff suppressed because it is too large

1091
os/public/markdown/drawio/Toolbar.js

File diff suppressed because it is too large

215
os/public/markdown/drawio/atlas.css

@ -0,0 +1,215 @@
html body .geToolbarContainer .geButton, html body .geToolbarContainer .geLabel {
padding:3px 5px 5px 5px;
position: relative;
text-align: center;
vertical-align: middle;
border-radius:3px;
}
html body .geMenubarContainer .geBigButton {
margin-top: 4px;
}
html body .geBigStandardButton:active, .geSidebarContainer .geTitle:active {
background-color: #DEEBFF;
color: #0052CC;
}
body .geToolbarContainer .geButton:active, body .geToolbarContainer .geLabel:active {
background-color: #DEEBFF;
color: #0052CC;
}
body > .geToolbarContainer .geLabel, body > .geToolbarContainer .geButton {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
border: 1px solid transparent !important;
}
body > .geToolbarContainer {
background: #f5f5f5 !important;
border-bottom: 1px solid #ccc !important;
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
}
body > .geToolbarContainer > .geToolbar {
padding-top:4px !important;
}
body > .geToolbarContainer > .geToolbar .geSeparator {
width:1px !important;
background:#cccccc !important;
margin-top:3px;
height:24px;
}
.geSidebarContainer .geToolbarContainer .geButton {
padding:0px 2px 4px 2px;
}
.geToolbarContainer .geLabel {
height:18px;
_height:31px;
}
html body .geStatus .geStatusAlert {
color:#ffffff !important;
font-size:12px;
border:none;
border-radius:6px;
text-shadow: rgb(41, 89, 137) 0px 1px 0px;
background-color:#428bca;
background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%);
-webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
-moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
}
html body .geStatus .geStatusAlert:hover {
background-color: #2d6ca2;
background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%);
}
html body .geStatus .geStatusMessage {
color:#ffffff !important;
font-size:12px;
border:none;
border-radius:6px;
text-shadow: rgb(41, 89, 137) 0px 1px 0px;
background-color:#428bca;
background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%);
-webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
-moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
}
html body .geStatus .geStatusMessage:hover {
background-color: #2d6ca2;
background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%);
}
html body div.mxWindow .geToolbarContainer {
font-size:11px !important;
color: #000000 !important;
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
border-width: 0px 0px 1px !important;
border-color: rgb(195, 195, 195) !important;
border-style: solid !important;
border-bottom:1px solid #e0e0e0;
}
html body div.mxWindow .geButton, .mxWindow .geLabel {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background-image: none !important;
border:1px solid transparent !important;
}
div.mxWindow .geButton {
margin:1px !important;
}
div.mxWindow .geLabel {
padding:3px 5px 3px 5px !important;
margin:2px;
}
div.mxWindow .geButton:hover, .mxWindow .geLabel:hover {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background: none !important;
border:1px solid gray;
}
div.mxWindow .geButton:active, .mxWindow .geLabel:active {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background-image: none !important;
border:1px solid black;
}
body > .geToolbarContainer .geButton {
margin:0px -1px 0px 0px !important;
height:20px;
}
html body .geSidebarTooltip, .geSidebarTooltipImage {
z-index:2;
}
html body .geSidebarContainer .geTitle {
font-size:13px;
padding:8px 0px 8px 16px;
}
html body .geMenubarContainer * {
color: #DEEBFF;
}
html body .geMenubarContainer .geStatus {
color: rgb(179, 179, 179);
}
.geMenubarContainer .geItem:hover:not(.geStatus) {
background-color: rgba(9, 30, 66, 0.48) !important;
}
html body .geToolbarContainer .geLabel {
margin:0px;
padding:6px 20px 4px 10px !important;
}
.geToolbar .geSeparator {
width:0px !important;
}
.geMenubarContainer .geItem, .geToolbar .geButton, .geToolbar .geLabel, .geSidebar, .geSidebarContainer .geTitle, .geSidebar .geItem, .mxPopupMenuItem {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
-ms-transition: none;
transition: none;
}
html body .geMenubarContainer {
background-color: #0049B0;
color: #ffffff;
font-size: 14px;
}
html body .geMenubar > .geItem {
padding-left:14px;
padding-right:15px;
}
html body .geSidebarContainer .geToolbarContainer {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
border:none;
}
html body .geSidebarContainer .geToolbarContainer .geButton {
margin:2px !important;
height:20px !important;
}
html body .geSidebarContainer .geToolbarContainer .geLabel {
margin:2px !important;
padding:4px !important;
}
html body .geToolbar {
margin:0px;
padding:8px 10px 0px 10px;
-webkit-box-shadow:none;
-moz-box-shadow:none;
box-shadow:none;
border:none;
}
html body .geMenubarContainer .mxDisabled {
opacity: 1;
color: rgb(179, 179, 179);
}
html .geButtonContainer {
padding-right:10px;
}
.geDialogTitle {
box-sizing:border-box;
white-space:nowrap;
background:rgb(32, 80, 129);
border-bottom:1px solid rgb(192, 192, 192);
font-size:15px;
font-weight:bold;
text-align:center;
color:white;
}
.geDialogFooter {
background:whiteSmoke;
white-space:nowrap;
text-align:right;
box-sizing:border-box;
border-top:1px solid #e5e5e5;
color:darkGray;
}
html .geNotification-bell {
opacity: 1;
}
html .geNotification-bell * {
background-color: #DEEBFF;
box-shadow: 0px 0px 10px #DEEBFF;
}

109
os/public/markdown/drawio/dark-default.xml

@ -0,0 +1,109 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="default"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="default"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="edgeLabel" extend="text">
<add as="labelBackgroundColor" value="default"/>
<add as="fontSize" value="11"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="52"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="pointerEvents" value="0"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="default"/>
</add>
</mxStylesheet>

294
os/public/markdown/drawio/dark.css

@ -0,0 +1,294 @@
:root {
--dark-color: #18141D;
--header-color: #363238;
--panel-color: #2A252F;
--text-color: #888888;
--border-color: #505759;
}
.geEditor * {
border-color:#000;
}
html body .geBackground {
background:var(--dark-color);
}
html body .geStatus > *, html body .geUser {
color:var(--text-color);
}
html body .geDiagramContainer {
background-color:var(--dark-color);
}
html body div.geMenubarContainer, html body .geFormatContainer,
html body div.geMenubarContainer .geStatus:hover {
background-color:var(--panel-color);
border-color:#000000;
}
html body .geActiveItem {
background-color:#e0e0e0;
}
html body .mxCellEditor {
color: #f0f0f0;
}
html body.geEditor div.mxPopupMenu {
border:1px solid var(--border-color);
background:var(--panel-color);
box-shadow:none;
}
.geEditor .geTabItem {
background:var(--panel-color);
border-color:#000000;
}
.geTabContainer {
border-left-color:#000000;
border-right-color:#000000;
}
.geTabContainer div {
border-color:var(--dark-color);
}
html body .geShapePicker {
box-shadow:none;
}
html body .geTabContainer div.geActivePage, html body .geRuler {
background:var(--dark-color);
}
.geSearchSidebar input, .geBtnStepper, .geBtnUp,
html body a.geStatus .geStatusBox {
border-color: var(--border-color);
}
html body.geEditor div.mxPopupMenu hr {
background-color:var(--border-color);
}
html body .geDragPreview {
border: 1px dashed #cccccc;
}
html body .geMenubarContainer .geItem:active, html .geSidebarContainer button:active {
opacity: 0.7;
}
html body, html body .geFooterContainer, html body #geFooterItem1, html body textarea,
html body .mxWindowTitle, html body .geDialogTitle, html body .geDialogFooter,
html .geEditor div.mxTooltip, html .geHint
{
background: var(--panel-color);
color:#c0c0c0;
}
html > body > div > div.geToolbarContainer.geSimpleMainMenu,
html > body > div > div.geToolbarContainer.geSimpleMainMenu .geToolbarContainer {
background:var(--header-color);
}
html > body > div > div.geToolbarContainer.geSimpleMainMenu,
html body .mxWindowTitle, .geDialogTitle, .geDialogFooter {
border-color:black !important;
}
html body .geFooterContainer a, html body .geDiagramContainer a, html body .geStatus a {
color:#337ab7;
}
html body div.mxRubberband {
border:1px dashed #ffffff !important;
background:var(--border-color) !important;
}
html body .geTemplate {
color:#000000;
}
html body .geSidebar {
opacity:0.7;
}
html body.geEditor .geSidebarContainer div.geDropTarget {
color:#767676;
border-color:#767676;
}
html body.geEditor .gePrimaryBtn:not([disabled]),
html body.geEditor .geBigButton:not([disabled]) {
background:var(--header-color);
border: 1px solid var(--border-color);
color:#aaaaaa;
}
html body.geEditor .geBtn, html body.geEditor button,
html body.geEditor button:hover:not([disabled]),
html body.geEditor button:focus, html body.geEditor select,
html body.geEditor .geColorBtn {
background:none;
border: 1px solid var(--border-color);
color:#aaaaaa;
}
html body .geBtn:hover:not([disabled]) {
color: #c0c0c0;
}
html body.geEditor button.geAdaptiveAsset:hover:not([disabled]) {
background:#fff;
}
html body.geEditor button.geAdaptiveAsset:not([disabled]) {
border-color:#a2a2a2;
}
html body.geEditor button:hover:not([disabled]):not(.geAdaptiveAsset),
html body.geEditor select:hover:not([disabled]),
html body.geEditor .geColorBtn:hover:not([disabled]) {
background:var(--dark-color);
border: 1px solid var(--border-color);
}
html body.geEditor .geSidebar, html body.geEditor .geSidebarContainer .geTitle, html body.geEditor input, html body.geEditor textarea,
html body.geEditor .geBaseButton, html body.geEditor .geSidebarTooltip, html body.geEditor .geBaseButton, html body.geEditor select,
html body.geEditor .geSidebarContainer .geDropTarget, html body.geEditor .geToolbarContainer {
background:var(--panel-color);
border-color:var(--dark-color);
color:#aaaaaa;
}
html body.geEditor .geSidebar, html body.geEditor .geSidebarContainer .geTitle, html body.geEditor input, html body.geEditor textarea,
html body.geEditor .geBaseButton, html body.geEditor .geSidebarTooltip, html body.geEditor .geBaseButton, html body.geEditor select,
html body.geEditor .geSidebarContainer .geDropTarget {
box-shadow:none;
}
html body.geEditor button, html body.geEditor input,
html body.geEditor textarea, html body.geEditor select,
.geInsertTablePicker, .geInsertTablePicker * {
border-color:var(--border-color);
}
html body .geMenubarContainer .geToolbarContainer, html body div.geToolbarContainer, html body .geToolbar {
border-color:#000000;
box-shadow:none;
}
html body .geSketch .geToolbarContainer {
border-style:none;
}
html body.geEditor .geColorBtn, html body .geToolbarContainer {
box-shadow:none;
}
html body .geSidebarTooltip {
border:1px solid var(--border-color);
}
html body .geSprite, html body .geSocialFooter img, html body .mxPopupMenuItem>img, .geAdaptiveAsset {
filter:invert(100%);
}
.geAdaptiveAsset {
color: #333333;
}
.geInverseAdaptiveAsset {
filter:none !important
}
html body .geSidebarFooter {
border-color:var(--dark-color);
}
html body .geFormatSection {
border-bottom:1px solid var(--dark-color);
border-color:var(--dark-color);
}
html body .geDiagramContainer {
border-color:var(--border-color);
}
html body .geSidebarContainer a, html body .geMenubarContainer a, html body .geToolbar a {
color:#cccccc;
}
html body .geMenubarMenu {
border-color:var(--border-color) !important;
}
html body .geToolbarMenu, html body .geFooterContainer, html body .geFooterContainer td {
border-color:var(--border-color);
}
html body .geFooterContainer a {
background-color:none;
}
html body .geBigStandardButton {
border: 1px solid var(--border-color);
}
html body .geFooterContainer td:hover, html body #geFooterItem1:hover, html body .geBigStandardButton:hover {
background-color:#000000;
}
html body .geSidebarContainer, html body .geDiagramBackdrop {
background:var(--panel-color);
}
html body .geBackgroundPage {
box-shadow:none;
}
.gePropHeader, .gePropRow, .gePropRowDark, .gePropRowCell, .gePropRow>.gePropRowCell, .gePropRowAlt>.gePropRowCell, .gePropRowDark>.gePropRowCell, .gePropRowDarkAlt>.gePropRowCell {
background:var(--panel-color) !important;
border-color:var(--panel-color) !important;
color:#cccccc !important;
font-weight:normal !important;
}
html body tr.mxPopupMenuItem {
color:#cccccc;
}
html body.geEditor table.mxPopupMenu tr.mxPopupMenuItemHover {
background:var(--dark-color);
color:#cccccc;
}
html body .geSidebarContainer .geTitle:hover, html body .geSidebarContainer .geItem:hover,
html body .geMenubarContainer .geItem:hover, html body.geEditor .geBaseButton:hover {
background:var(--dark-color);
}
html body .geToolbarContainer .geSeparator {
background-color:var(--border-color);
}
html body .geVsplit, html body table.mxPopupMenu hr {
border-color:var(--border-color);
background-color:var(--dark-color);
}
html body .geHsplit {
border-color:#000;
}
html body .geHsplit:hover {
background-color:#000;
}
html body .geToolbarContainer .geButton:hover, html body .geToolbarContainer .geButton:active,
html body .geToolbarContainer .geLabel:hover, html body .geToolbarContainer .geLabel:active,
html body .geVsplit:hover, html .geSidebarContainer button:active:not([disabled]) {
background-color:var(--dark-color);
}
html body .geToolbarContainer .geButton.geAdaptiveAsset:hover {
background-color: #fff;
}
html body .geDialog, html body div.mxWindow {
background:var(--panel-color);
border-color:var(--header-color);
}
html body .geDialog {
box-shadow:none;
}
.geHint {
-webkit-box-shadow: 1px 1px 1px 0px #ccc;
-moz-box-shadow: 1px 1px 1px 0px #ccc;
box-shadow: 1px 1px 1px 0px #ccc;
}
html .geEditor ::-webkit-scrollbar-thumb {
background-color: var(--header-color);
}
html .geEditor ::-webkit-scrollbar-thumb:hover, .geVsplit:hover {
background-color:#a0a0a0;
}
html body a.geStatus .geStatusAlertOrange {
background-color:rgb(187, 103, 0);
border:rgb(240, 135, 5);
}
html body a.geStatus .geStatusAlert {
background-color:#a20025;
border:1px solid #bd002b;
color:#fff !important;
}
html body a.geStatus .geStatusAlert:hover {
background-color:#a20025;
border-color:#bd002b;
}
html body .geCommentContainer {
background-color: transparent;
border-width: 1px;
box-shadow: none;
color: inherit;
}
html .geNotification-bell * {
background-color: #aaa;
box-shadow: none;
}
html .geNotification-count {
color: #DEEBFF;
}
html .geNotifPanel .header {
height: 30px;
width: 100%;
background: #424242;
color: #ccc;
}
.geNotifPanel .notifications {
background-color: #707070;
}

109
os/public/markdown/drawio/default-old.xml

@ -0,0 +1,109 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Verdana"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="#adc5ff"/>
<add as="gradientColor" value="#7d85df"/>
<add as="strokeColor" value="#5d65df"/>
<add as="fontColor" value="#1d258f"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Verdana"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="#5d65df"/>
<add as="fontColor" value="#1d258f"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="50"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
<add as="shadow" value="1"/>
<add as="glass" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="white"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="#adc5ff"/>
<add as="gradientColor" value="#7d85df"/>
</add>
</mxStylesheet>

203
os/public/markdown/drawio/default.xml

@ -0,0 +1,203 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="default"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="default"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="edgeLabel" extend="text">
<add as="labelBackgroundColor" value="default"/>
<add as="fontSize" value="11"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="52"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="pointerEvents" value="0"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="default"/>
</add>
<add as="fancy">
<add as="shadow" value="1"/>
<add as="glass" value="1"/>
</add>
<add as="gray" extend="fancy">
<add as="gradientColor" value="#B3B3B3"/>
<add as="fillColor" value="#F5F5F5"/>
<add as="strokeColor" value="#666666"/>
</add>
<add as="blue" extend="fancy">
<add as="gradientColor" value="#7EA6E0"/>
<add as="fillColor" value="#DAE8FC"/>
<add as="strokeColor" value="#6C8EBF"/>
</add>
<add as="green" extend="fancy">
<add as="gradientColor" value="#97D077"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#82B366"/>
</add>
<add as="turquoise" extend="fancy">
<add as="gradientColor" value="#67AB9F"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#6A9153"/>
</add>
<add as="yellow" extend="fancy">
<add as="gradientColor" value="#FFD966"/>
<add as="fillColor" value="#FFF2CC"/>
<add as="strokeColor" value="#D6B656"/>
</add>
<add as="orange" extend="fancy">
<add as="gradientColor" value="#FFA500"/>
<add as="fillColor" value="#FFCD28"/>
<add as="strokeColor" value="#D79B00"/>
</add>
<add as="red" extend="fancy">
<add as="gradientColor" value="#EA6B66"/>
<add as="fillColor" value="#F8CECC"/>
<add as="strokeColor" value="#B85450"/>
</add>
<add as="pink" extend="fancy">
<add as="gradientColor" value="#B5739D"/>
<add as="fillColor" value="#E6D0DE"/>
<add as="strokeColor" value="#996185"/>
</add>
<add as="purple" extend="fancy">
<add as="gradientColor" value="#8C6C9C"/>
<add as="fillColor" value="#E1D5E7"/>
<add as="strokeColor" value="#9673A6"/>
</add>
<add as="plain-gray">
<add as="gradientColor" value="#B3B3B3"/>
<add as="fillColor" value="#F5F5F5"/>
<add as="strokeColor" value="#666666"/>
</add>
<add as="plain-blue">
<add as="gradientColor" value="#7EA6E0"/>
<add as="fillColor" value="#DAE8FC"/>
<add as="strokeColor" value="#6C8EBF"/>
</add>
<add as="plain-green">
<add as="gradientColor" value="#97D077"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#82B366"/>
</add>
<add as="plain-turquoise">
<add as="gradientColor" value="#67AB9F"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#6A9153"/>
</add>
<add as="plain-yellow">
<add as="gradientColor" value="#FFD966"/>
<add as="fillColor" value="#FFF2CC"/>
<add as="strokeColor" value="#D6B656"/>
</add>
<add as="plain-orange">
<add as="gradientColor" value="#FFA500"/>
<add as="fillColor" value="#FFCD28"/>
<add as="strokeColor" value="#D79B00"/>
</add>
<add as="plain-red">
<add as="gradientColor" value="#EA6B66"/>
<add as="fillColor" value="#F8CECC"/>
<add as="strokeColor" value="#B85450"/>
</add>
<add as="plain-pink">
<add as="gradientColor" value="#B5739D"/>
<add as="fillColor" value="#E6D0DE"/>
<add as="strokeColor" value="#996185"/>
</add>
<add as="plain-purple">
<add as="gradientColor" value="#8C6C9C"/>
<add as="fillColor" value="#E1D5E7"/>
<add as="strokeColor" value="#9673A6"/>
</add>
</mxStylesheet>

78
os/public/markdown/drawio/drawio-demo.js

@ -0,0 +1,78 @@
// Extends EditorUi to update I/O action states based on availability of backend
(function()
{
var editorUiInit = EditorUi.prototype.init;
EditorUi.prototype.init = function()
{
editorUiInit.apply(this, arguments);
};
// Adds required resources (disables loading of fallback properties, this can only
// be used if we know that all keys are defined in the language specific file)
mxResources.loadDefaultBundle = false;
var bundle = mxResources.getDefaultBundle(mxLanguage);
// Fixes possible asynchronous requests
mxUtils.getAll([bundle, './drawio/theme/default.xml'], function(xhr)
{
// Adds bundle text to resources
mxResources.parse(xhr[0].getText());
// Configures the default graph theme
var themes = new Object();
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
// Main
window.editorUIInstance = new EditorUi(new Editor(false, themes));
try {
addPostMessageListener(editorUIInstance.editor);
} catch (error) {
console.log(error);
}
window.parent.postMessage({eventName: 'ready', value: ''}, '*');
}, function()
{
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})();
function addPostMessageListener(graphEditor) {
window.addEventListener('message', function(event) {
if(!event.data || !event.data.eventName) {
return
}
switch (event.data.eventName) {
case 'setData':
var value = event.data.value;
var doc = mxUtils.parseXml(value);
var documentName = 'cherry-drawio-' + new Date().getTime();
editorUIInstance.editor.setGraphXml(null);
graphEditor.graph.importGraphModel(doc.documentElement);
graphEditor.setFilename(documentName);
window.parent.postMessage({eventName: 'setData:success', value: ''}, '*');
break;
case 'getData':
editorUIInstance.editor.graph.stopEditing();
var xmlData = mxUtils.getXml(editorUIInstance.editor.getGraphXml());
editorUIInstance.exportImage(1, "#ffffff", true, null, true, 50, null, "png", function(base64, filename){
window.parent.postMessage({
mceAction: 'getData:success',
eventName: 'getData:success',
value: {
xmlData: xmlData,
base64: base64,
}
}, '*');
})
break;
case 'ready?':
window.parent.postMessage({eventName: 'ready', value: ''}, '*');
break;
default:
break;
}
});
}

BIN
os/public/markdown/drawio/font/graph.iconfont.eot

Binary file not shown.

100
os/public/markdown/drawio/font/graph.iconfont.less

@ -0,0 +1,100 @@
/*
_____ ____ ____ ____ _______
| __ \ / __ \| _ \ / __ \__ __|
| |__) | | | | |_) | | | | | |
| _ /| | | | _ <| | | | | |
| | \ \| |__| | |_) | |__| | | |
|_| \_\\____/|____/ \____/ |_|
*/
@font-face {
font-family: "graph.iconfont";
src: url('@{iconfont-path}iconfont/graph.iconfont.eot');
src: url('@{iconfont-path}iconfont/graph.iconfont.eot?#iefix') format('eot'),
url('@{iconfont-path}iconfont/graph.iconfont.woff') format('woff'),
url('@{iconfont-path}iconfont/graph.iconfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
.font-graph {
vertical-align: middle;
}
.font-graph:after {
display: inline-block;
font-family: "graph.iconfont";
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.font-graph-lg {
font-size: 1.3333333333333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.font-graph-2x { font-size: 2em; }
.font-graph-3x { font-size: 3em; }
.font-graph-4x { font-size: 4em; }
.font-graph-5x { font-size: 5em; }
.font-graph-fw {
width: 1.2857142857142858em;
text-align: center;
}
.font-graph-geSprite-arrow:after { content: "\EA01" }
.font-graph-geSprite-bold:after { content: "\EA02" }
.font-graph-geSprite-bottom:after { content: "\EA03" }
.font-graph-geSprite-center:after { content: "\EA04" }
.font-graph-geSprite-code:after { content: "\EA05" }
.font-graph-geSprite-connection:after { content: "\EA06" }
.font-graph-geSprite-curved:after { content: "\EA07" }
.font-graph-geSprite-delete:after { content: "\EA08" }
.font-graph-geSprite-dots:after { content: "\EA09" }
.font-graph-geSprite-entity:after { content: "\EA0A" }
.font-graph-geSprite-fit:after { content: "\EA0B" }
.font-graph-geSprite-fontbackground:after { content: "\EA0C" }
.font-graph-geSprite-fontcolor:after { content: "\EA0D" }
.font-graph-geSprite-formatpanel:after { content: "\EA0E" }
.font-graph-geSprite-horizontalelbow:after { content: "\EA0F" }
.font-graph-geSprite-horizontalisometric:after { content: "\EA10" }
.font-graph-geSprite-horizontalrule:after { content: "\EA11" }
.font-graph-geSprite-indent:after { content: "\EA12" }
.font-graph-geSprite-italic:after { content: "\EA13" }
.font-graph-geSprite-justifyfull:after { content: "\EA14" }
.font-graph-geSprite-left:after { content: "\EA15" }
.font-graph-geSprite-link:after { content: "\EA16" }
.font-graph-geSprite-linkedge:after { content: "\EA17" }
.font-graph-geSprite-middle:after { content: "\EA18" }
.font-graph-geSprite-orderedlist:after { content: "\EA19" }
.font-graph-geSprite-orthogonal:after { content: "\EA1A" }
.font-graph-geSprite-outdent:after { content: "\EA1B" }
.font-graph-geSprite-plus:after { content: "\EA1C" }
.font-graph-geSprite-redo:after { content: "\EA1D" }
.font-graph-geSprite-removeformat:after { content: "\EA1E" }
.font-graph-geSprite-right:after { content: "\EA1F" }
.font-graph-geSprite-shadow:after { content: "\EA20" }
.font-graph-geSprite-simplearrow:after { content: "\EA21" }
.font-graph-geSprite-straight:after { content: "\EA22" }
.font-graph-geSprite-strokecolor:after { content: "\EA23" }
.font-graph-geSprite-subscript:after { content: "\EA24" }
.font-graph-geSprite-superscript:after { content: "\EA25" }
.font-graph-geSprite-table:after { content: "\EA26" }
.font-graph-geSprite-toback:after { content: "\EA27" }
.font-graph-geSprite-tofront:after { content: "\EA28" }
.font-graph-geSprite-top:after { content: "\EA29" }
.font-graph-geSprite-underline:after { content: "\EA2A" }
.font-graph-geSprite-undo:after { content: "\EA2B" }
.font-graph-geSprite-unorderedlist:after { content: "\EA2C" }
.font-graph-geSprite-vertical:after { content: "\EA2D" }
.font-graph-geSprite-verticalelbow:after { content: "\EA2E" }
.font-graph-geSprite-verticalisometric:after { content: "\EA2F" }
.font-graph-geSprite-zoomin:after { content: "\EA30" }
.font-graph-geSprite-zoomout:after { content: "\EA31" }
.font-graph-geSprite-zz-填充色_icon:after { content: "\EA32" }
.font-graph-geSprite-zz-复选框:after { content: "\EA33" }
.font-graph-geSprite-zz-查看画图2:after { content: "\EA34" }
.font-graph-geSprite-zz-线条颜色_icon:after { content: "\EA35" }

BIN
os/public/markdown/drawio/font/graph.iconfont.ttf

Binary file not shown.

BIN
os/public/markdown/drawio/font/graph.iconfont.woff

Binary file not shown.

BIN
os/public/markdown/drawio/font/iconfont.ttf

Binary file not shown.

13
os/public/markdown/drawio/font/svg/geSprite-arrow.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M925.473,452.482L722.136,280.767c-0.44-0.372-0.892-0.731-1.353-1.078
c-12.267-9.202-28.431-10.696-42.19-3.894c-13.849,6.851-22.451,20.694-22.451,36.125v94.268H120.288
c-12.15,0-23.101,7.329-27.734,18.562c-1.803,4.373-2.511,9.001-2.194,13.528c0.227,9.12,0.23,81.85,0.005,91.374
c-0.62,8.568,2.464,17.175,8.774,23.446c5.761,5.727,13.51,8.836,21.425,8.723h535.578v94.269c0,15.432,8.603,29.273,22.438,36.118
c5.547,2.747,11.751,4.199,17.943,4.199c8.702,0,17.323-2.875,24.274-8.097c0.456-0.343,0.903-0.698,1.339-1.067l203.339-171.716
c9.543-7.604,15.207-19.301,15.207-31.522C940.682,471.782,935.017,460.085,925.473,452.482z M716.142,613.774v-81.952
c0-16.568-13.432-30-30-30H150.527c0.003-5.199,0.002-11.204,0.002-18.15c0-6.116-0.006-12.027-0.016-17.482l535.628,0
c16.568,0,30-13.432,30-30v-81.951l153.665,129.768L716.142,613.774z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

12
os/public/markdown/drawio/font/svg/geSprite-bold.svg

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M674.738,484.009c17.27-9.87,33.35-22.04,47.83-36.36c43.54-43.02,67.52-100.24,67.52-161.13
c0-60.89-23.98-118.12-67.52-161.14c-43.44-42.93-101.17-66.57-162.56-66.57h-289.12c-16.57,0-30,13.43-30,30v790.39
c0,16.57,13.43,30,30,30h289.12c61.39,0,119.12-23.64,162.56-66.56c43.54-43.03,67.52-100.25,67.52-161.14
s-23.98-118.12-67.52-161.14C708.088,506.039,692.008,493.869,674.738,484.009z M300.888,118.809h259.12
c93.78,0,170.08,75.23,170.08,167.71c0,89.39-71.31,162.68-160.78,167.45c-3.09-0.12-6.19-0.18-9.3-0.18
c-1.19,0-2.37,0.08-3.53,0.22h-255.59V118.809z M560.008,849.199h-259.12v-335.19h255.58c1.17,0.13,2.35,0.21,3.54,0.21
c3.11,0,6.21-0.06,9.3-0.18c89.47,4.78,160.78,78.06,160.78,167.46C730.088,773.969,653.788,849.199,560.008,849.199z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

24
os/public/markdown/drawio/font/svg/geSprite-bottom.svg

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.557,909.202H120.413c-16.568,0-30-13.432-30-30s13.432-30,30-30h790.144c16.568,0,30,13.432,30,30
S927.125,909.202,910.557,909.202z"/>
<path d="M535.574,760.672c-0.001,0.001-0.002,0.002-0.003,0.003c-0.001,0.001-0.003,0.003-0.004,0.004
c-0.481,0.481-0.979,0.935-1.484,1.377c-0.119,0.104-0.238,0.206-0.358,0.307c-1.057,0.896-2.16,1.707-3.303,2.433
c-0.067,0.043-0.135,0.085-0.203,0.127c-1.203,0.751-2.447,1.409-3.723,1.974c-0.038,0.017-0.075,0.033-0.113,0.049
c-1.292,0.565-2.614,1.035-3.959,1.409c-0.071,0.02-0.143,0.038-0.214,0.058c-0.655,0.177-1.314,0.337-1.978,0.469
c-0.008,0.002-0.016,0.004-0.023,0.005c-0.651,0.129-1.306,0.232-1.962,0.317c-0.141,0.018-0.282,0.034-0.424,0.051
c-0.584,0.068-1.169,0.121-1.755,0.154c-0.076,0.004-0.152,0.013-0.229,0.016c-0.628,0.031-1.256,0.036-1.884,0.028
c-0.179-0.002-0.358-0.007-0.537-0.013c-0.597-0.019-1.193-0.05-1.788-0.104c-0.048-0.004-0.097-0.006-0.145-0.01
c-0.65-0.062-1.298-0.153-1.944-0.258c-0.139-0.023-0.277-0.046-0.416-0.07c-1.368-0.241-2.721-0.578-4.05-1.009
c-0.044-0.014-0.087-0.028-0.131-0.042c-1.403-0.462-2.778-1.031-4.114-1.706c-0.004-0.002-0.007-0.003-0.011-0.005
c-1.264-0.64-2.492-1.376-3.674-2.206c-0.075-0.053-0.151-0.104-0.226-0.157c-0.546-0.391-1.083-0.799-1.607-1.231
c-0.079-0.065-0.154-0.134-0.233-0.2c-0.417-0.35-0.825-0.715-1.227-1.091c-0.142-0.133-0.284-0.267-0.423-0.403
c-0.095-0.093-0.194-0.18-0.289-0.275L268.456,535.919c-11.714-11.718-11.711-30.712,0.006-42.426
c5.858-5.856,13.533-8.784,21.21-8.784c7.679,0,15.359,2.931,21.216,8.79L484.357,667.02l-0.001-578.211c0-16.568,13.432-30,30-30
s30,13.432,30,30l0.001,578.21l175.724-175.782c11.714-11.717,30.709-11.722,42.427-0.007
c11.718,11.714,11.721,30.709,0.007,42.427L535.574,760.672z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

13
os/public/markdown/drawio/font/svg/geSprite-center.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M284.288,454.006c-16.568,0-30,13.432-30,30s13.432,30,30,30h462.394c16.568,0,30-13.431,30-30s-13.432-30-30-30H284.288z"
/>
<path d="M120.288,219.374h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 824 B

16
os/public/markdown/drawio/font/svg/geSprite-code.svg

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M346.012,281.124c-11.203-12.208-30.181-13.023-42.388-1.821l-203.62,186.85c-6.281,5.764-9.813,13.927-9.714,22.451
s3.819,16.604,10.231,22.22l203.62,178.347c5.693,4.986,12.739,7.433,19.754,7.433c8.346,0,16.649-3.462,22.58-10.233
c10.917-12.464,9.663-31.417-2.801-42.334L165.226,487.737l178.965-164.226C356.399,312.309,357.214,293.332,346.012,281.124z"/>
<path d="M930.449,457.187L726.829,278.84c-12.463-10.915-31.417-9.663-42.334,2.801c-10.917,12.464-9.663,31.417,2.801,42.334
l178.448,156.3L686.779,644.5c-12.208,11.202-13.023,30.18-1.82,42.387c5.916,6.447,14,9.717,22.111,9.717
c7.247,0,14.516-2.61,20.275-7.896l203.62-186.849c6.281-5.764,9.813-13.927,9.715-22.451S936.861,462.804,930.449,457.187z"/>
<path d="M580.414,218.643c-16.093-3.939-32.333,5.916-36.271,22.01L428.545,713.098c-3.938,16.094,5.917,32.332,22.01,36.271
c2.396,0.586,4.793,0.866,7.154,0.866c13.5,0,25.765-9.179,29.117-22.877l115.598-472.444
C606.362,238.82,596.507,222.581,580.414,218.643z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
os/public/markdown/drawio/font/svg/geSprite-connection.svg

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M937.393,475.397L725.625,315.453c-3.267-2.467-7.646-2.872-11.311-1.049
c-3.664,1.824-5.98,5.565-5.98,9.658v129.943H119.29c-16.568,0-30,13.431-30,30s13.432,30,30,30h589.044v129.944
c0,4.093,2.316,7.833,5.98,9.657c1.522,0.759,3.169,1.132,4.808,1.132c2.305,0,4.595-0.738,6.503-2.18l211.768-159.944
c2.7-2.039,4.287-5.226,4.287-8.609S940.093,477.435,937.393,475.397z"/>
</svg>

After

Width:  |  Height:  |  Size: 777 B

13
os/public/markdown/drawio/font/svg/geSprite-curved.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v225.808c0,16.568,13.432,30,30,30h82.694
c-1.744,24.448-8.296,59.855-30.194,83.764c-16.582,18.104-39.718,26.904-70.731,26.904c-2.474,0-252.412,0.389-266.542,1.475
c-66.996,5.147-115.616,23.797-148.637,57.015c-27.231,27.393-42.85,63.446-47.402,109.622h-83.809c-16.568,0-30,13.432-30,30
v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30V653.396c0-16.568-13.432-30-30-30h-81.583
c8.882-68.411,51.361-99.952,140.115-106.803c14.44-0.779,232.373-1.309,262.087-1.309c48.264,0,87.037-15.702,115.243-46.67
c34.711-38.111,43.813-90.387,45.782-123.998h82.979c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z
M316.06,849.202H150.288V683.396H316.06V849.202z M880.682,284.616h-78.289c-2.432-0.388-4.95-0.481-7.513-0.243
c-0.636,0.06-1.263,0.145-1.885,0.243H714.91V118.809h165.772V284.616z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

15
os/public/markdown/drawio/font/svg/geSprite-delete.svg

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M905.725,161.016H651.477v-57.774c0-24.5-19.941-44.433-44.453-44.433H423.948c-24.512,0-44.454,19.933-44.454,44.433
v57.774h-254.25c-16.568,0-30,13.432-30,30s13.432,30,30,30h71.764v644.366c0,24.72,19.087,44.831,42.549,44.831h551.856
c23.462,0,42.55-20.111,42.55-44.831V221.016h71.762c16.568,0,30-13.432,30-30S922.293,161.016,905.725,161.016z M439.494,118.809
h151.983v42.207H439.494V118.809z M775.141,851.391H255.83V221.016h168.118h183.076h168.117V851.391z"/>
<path d="M415.863,294.732c-16.568,0-30,13.432-30,30v421.89c0,16.568,13.432,30,30,30s30-13.432,30-30v-421.89
C445.863,308.163,432.432,294.732,415.863,294.732z"/>
<path d="M585.107,324.732v421.89c0,16.568,13.432,30,30,30s30-13.432,30-30v-421.89c0-16.568-13.432-30-30-30
S585.107,308.163,585.107,324.732z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

13
os/public/markdown/drawio/font/svg/geSprite-dots.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M515.485,909.203c-46.964,0-85.038-38.074-85.038-85.04c0-46.964,38.074-85.039,85.038-85.039
c46.967,0,85.039,38.074,85.039,85.039C600.523,871.128,562.452,909.203,515.485,909.203z"/>
<path d="M515.485,569.045c-46.965,0-85.039-38.072-85.039-85.041c0-46.965,38.075-85.039,85.039-85.039
c46.968,0,85.039,38.075,85.039,85.039C600.524,530.973,562.453,569.045,515.485,569.045z"/>
<path d="M515.484,228.882c-46.966,0-85.039-38.068-85.039-85.036c0-46.969,38.073-85.037,85.039-85.037
c46.966,0,85.04,38.069,85.04,85.037C600.524,190.815,562.45,228.882,515.484,228.882z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 971 B

13
os/public/markdown/drawio/font/svg/geSprite-entity.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v83.652c-46.112,4.569-82.121,20.184-109.486,47.388
c-33.218,33.022-51.868,81.642-57.016,148.638c-1.085,14.126-1.474,264.068-1.474,266.542c0,31.014-8.801,54.149-26.904,70.731
c-23.974,21.958-59.516,28.487-83.97,30.21v-82.574c0-16.568-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30v225.807
c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30v-83.139c33.604-1.943,86.013-11.007,124.205-45.791
c30.968-28.206,46.67-66.979,46.67-115.243c0-29.715,0.529-247.649,1.309-262.084c6.842-88.709,38.345-131.183,106.667-140.101
v81.773c0,16.568,13.432,30,30,30h225.772c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z
M150.288,849.202V683.396H316.06v79.91c-0.168,1.838-0.159,3.65,0,5.425v80.472H150.288z M880.682,284.616H714.91v-82.623
c0.01-0.321,0.024-0.641,0.024-0.965s-0.014-0.644-0.024-0.965v-81.255h165.772V284.616z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

45
os/public/markdown/drawio/font/svg/geSprite-fit.svg

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,232.495c16.568,0,30-13.432,30-30V88.809c0-16.568-13.432-30-30-30H800.603c-16.568,0-30,13.432-30,30v28.733
H260.367V88.809c0-16.568-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30v113.687c0,16.568,13.432,30,30,30h29.147v503.021
h-29.147c-16.568,0-30,13.432-30,30v113.687c0,16.568,13.432,30,30,30h110.079c16.568,0,30-13.432,30-30v-27.675h510.236v27.675
c0,16.568,13.432,30,30,30h110.079c16.568,0,30-13.432,30-30V765.516c0-16.568-13.432-30-30-30h-27.261V232.495H910.682z
M830.603,118.809h50.079v53.687h-50.079V118.809z M150.288,118.809h50.079v53.687h-50.079V118.809z M200.367,849.202h-50.079
v-53.687h50.079V849.202z M880.682,849.202h-50.079v-53.687h50.079V849.202z M827.935,735.516h-27.332c-16.568,0-30,13.432-30,30
v30.525H260.367v-30.525c0-16.568-13.432-30-30-30h-25.446V232.495h25.446c16.568,0,30-13.432,30-30v-29.468h510.236v29.468
c0,16.568,13.432,30,30,30h27.332V735.516z"/>
<rect x="276.678" y="243.284" width="216" height="216"/>
<path d="M785.63,368.567c0.337-0.433,0.656-0.876,0.959-1.328c0.077-0.116,0.163-0.227,0.238-0.344
c0.342-0.533,0.655-1.082,0.949-1.638c0.121-0.228,0.229-0.46,0.341-0.691c0.177-0.364,0.344-0.731,0.5-1.103
c0.104-0.249,0.208-0.497,0.303-0.748c0.164-0.434,0.311-0.874,0.448-1.317c0.053-0.173,0.118-0.344,0.167-0.518
c0.17-0.599,0.307-1.206,0.427-1.817c0.041-0.213,0.073-0.427,0.108-0.641c0.074-0.449,0.136-0.9,0.183-1.353
c0.022-0.21,0.044-0.42,0.059-0.631c0.041-0.542,0.062-1.085,0.063-1.63c0-0.106,0.008-0.211,0.007-0.317
c-0.007-0.652-0.046-1.305-0.111-1.958c-0.017-0.169-0.044-0.337-0.064-0.506c-0.058-0.477-0.13-0.952-0.219-1.426
c-0.043-0.229-0.089-0.457-0.139-0.686c-0.093-0.422-0.201-0.841-0.319-1.26c-0.065-0.231-0.123-0.462-0.195-0.691
c-0.184-0.582-0.389-1.161-0.623-1.733c-0.001-0.002-0.002-0.005-0.003-0.007c-0.094-0.229-0.206-0.451-0.307-0.677
c-0.17-0.378-0.343-0.753-0.531-1.119c-0.128-0.249-0.266-0.493-0.404-0.738c-0.205-0.363-0.42-0.718-0.644-1.067
c-0.132-0.206-0.26-0.412-0.399-0.614c-0.372-0.541-0.761-1.067-1.176-1.57c-0.058-0.071-0.124-0.137-0.183-0.207
c-0.391-0.463-0.802-0.906-1.227-1.334c-0.064-0.064-0.117-0.134-0.182-0.198l-88.614-87.068
c-8.863-8.708-23.109-8.583-31.818,0.28c-8.71,8.864-8.584,23.109,0.279,31.818l49.38,48.519H556.486
c-12.427,0-22.5,10.074-22.5,22.5s10.073,22.5,22.5,22.5h156.397l-50.271,49.393c-8.864,8.709-8.99,22.955-0.281,31.818
c4.405,4.483,10.226,6.731,16.051,6.731c5.691,0,11.388-2.146,15.769-6.451l89.507-87.942c0.059-0.058,0.11-0.12,0.168-0.178
c0.036-0.036,0.076-0.066,0.111-0.102c0.083-0.085,0.153-0.178,0.235-0.264c0.37-0.388,0.724-0.786,1.061-1.195
C785.367,368.895,785.501,368.733,785.63,368.567z"/>
<path d="M456.071,641.91l-49.393,50.271V535.784c0-12.427-10.074-22.5-22.5-22.5s-22.5,10.073-22.5,22.5v156.398l-48.519-49.38
c-8.709-8.863-22.955-8.989-31.818-0.279c-8.864,8.709-8.989,22.954-0.28,31.818l87.068,88.614c0.063,0.064,0.133,0.117,0.196,0.18
c0.443,0.441,0.902,0.867,1.383,1.271c0.058,0.049,0.113,0.103,0.172,0.152c0.508,0.418,1.039,0.809,1.585,1.183
c0.204,0.14,0.411,0.269,0.619,0.402c0.355,0.227,0.717,0.443,1.086,0.651c0.241,0.135,0.481,0.272,0.726,0.398
c0.403,0.207,0.816,0.396,1.234,0.58c1.531,0.672,3.116,1.184,4.735,1.499c0.535,0.105,1.074,0.17,1.612,0.235
c0.175,0.021,0.349,0.059,0.525,0.076c0.724,0.07,1.448,0.106,2.171,0.106c0.108,0,0.215-0.014,0.322-0.016
c0.62-0.009,1.239-0.032,1.857-0.091c0.19-0.019,0.378-0.058,0.567-0.081c0.537-0.066,1.074-0.134,1.606-0.239
c0.175-0.034,0.345-0.087,0.519-0.125c0.542-0.12,1.082-0.245,1.616-0.405c0.165-0.049,0.324-0.115,0.488-0.169
c0.532-0.173,1.062-0.353,1.583-0.567c0.178-0.073,0.349-0.163,0.525-0.241c0.492-0.217,0.982-0.439,1.461-0.693
c0.215-0.114,0.421-0.248,0.633-0.369c0.423-0.242,0.846-0.484,1.255-0.756c0.263-0.174,0.512-0.371,0.768-0.557
c0.342-0.249,0.687-0.491,1.018-0.761c0.29-0.237,0.564-0.498,0.844-0.75c0.236-0.213,0.482-0.408,0.711-0.632
c0.046-0.045,0.084-0.095,0.129-0.14c0.049-0.049,0.103-0.09,0.151-0.139l87.942-89.506c8.709-8.864,8.583-23.11-0.28-31.819
C479.027,632.924,464.781,633.047,456.071,641.91z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

15
os/public/markdown/drawio/font/svg/geSprite-fontbackground.svg

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<polygon fill="#080103" points="435.651,523.311 601.711,523.311 521.674,312.434 "/>
<path fill="#080103" d="M909.485,60.006h-788c-16.568,0-30,13.432-30,30v788c0,16.568,13.432,30,30,30h788
c16.568,0,30-13.432,30-30v-788C939.485,73.437,926.053,60.006,909.485,60.006z M725.727,765.518
c-3.504,1.33-7.103,1.96-10.64,1.96c-12.103,0.001-23.504-7.376-28.054-19.362l-62.55-164.805H411.175l-67.509,165.49
c-6.258,15.342-23.767,22.706-39.109,16.446c-15.341-6.258-22.704-23.768-16.446-39.108l75.082-184.055
c0.08-0.197,0.157-0.395,0.241-0.59l131.47-322.284c4.609-11.299,15.597-18.668,27.776-18.668c0.123,0,0.246,0,0.371,0.002
c12.325,0.151,23.305,7.828,27.679,19.352L673.21,542.603c0.068,0.178,0.138,0.354,0.203,0.534l69.717,183.688
C749.008,742.315,741.217,759.639,725.727,765.518z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

13
os/public/markdown/drawio/font/svg/geSprite-fontcolor.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M274.258,683.452c15.305,6.348,32.856-0.922,39.2-16.229l77.68-187.443h248.15l72.007,186.75
c4.593,11.911,15.953,19.216,27.998,19.215c3.587,0,7.238-0.648,10.786-2.017c15.459-5.961,23.159-23.325,17.198-38.784
l-79.198-205.402c-0.061-0.169-0.129-0.334-0.193-0.501L548.682,78.016c-4.413-11.446-15.352-19.052-27.618-19.205
c-0.126-0.002-0.25-0.002-0.375-0.002c-12.118,0-23.064,7.298-27.712,18.515L343.55,437.89c-0.088,0.203-0.171,0.409-0.255,0.615
l-85.267,205.749C251.686,659.56,258.952,677.11,274.258,683.452z M519.687,169.593l96.467,250.188h-200.15L519.687,169.593z"/>
<rect x="101.154" y="789.203" width="828.662" height="120"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

9
os/public/markdown/drawio/font/svg/geSprite-formatpanel.svg

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M909.589,60.006h-788c-16.568,0-30,13.432-30,30v186.229c-0.133,1.147-0.209,2.311-0.209,3.493
s0.076,2.346,0.209,3.493v594.786c0,16.568,13.432,30,30,30h788c16.568,0,30-13.432,30-30v-788
C939.589,73.437,926.158,60.006,909.589,60.006z M879.589,120.006v129.722h-728V120.006H879.589z M151.589,309.727h465.807v538.279
H151.589V309.727z"/>
</svg>

After

Width:  |  Height:  |  Size: 743 B

45
os/public/markdown/drawio/font/svg/geSprite-horizontalelbow.svg

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path fill="#080103" d="M237.483,483.946c0.001,0.549,0.023,1.096,0.064,1.641c0.016,0.209,0.037,0.417,0.059,0.626
c0.047,0.455,0.109,0.906,0.184,1.357c0.035,0.214,0.066,0.427,0.108,0.64c0.119,0.61,0.257,1.217,0.426,1.816
c0.05,0.177,0.116,0.351,0.17,0.527c0.136,0.439,0.281,0.875,0.444,1.306c0.096,0.255,0.201,0.506,0.307,0.758
c0.154,0.367,0.319,0.729,0.493,1.088c0.114,0.236,0.225,0.473,0.348,0.705c0.292,0.553,0.603,1.098,0.943,1.628
c0.081,0.126,0.174,0.247,0.258,0.372c0.296,0.441,0.607,0.874,0.935,1.296c0.134,0.172,0.274,0.341,0.414,0.511
c0.33,0.4,0.676,0.788,1.037,1.167c0.087,0.092,0.161,0.191,0.25,0.281c0.038,0.039,0.08,0.071,0.119,0.109
c0.056,0.056,0.105,0.116,0.162,0.171l73.148,71.87c4.381,4.305,10.076,6.45,15.768,6.45c5.824,0,11.646-2.248,16.05-6.73
c8.709-8.864,8.583-23.11-0.28-31.819l-33.913-33.32h117.76c12.426,0,22.5-10.073,22.5-22.5s-10.074-22.5-22.5-22.5H314.976
l33.185-32.605c8.864-8.709,8.989-22.955,0.28-31.818c-8.708-8.864-22.955-8.99-31.818-0.28l-72.419,71.155
c-0.064,0.063-0.117,0.132-0.18,0.195c-0.429,0.431-0.842,0.877-1.236,1.343c-0.057,0.067-0.119,0.131-0.175,0.198
c-0.416,0.504-0.806,1.031-1.178,1.574c-0.138,0.2-0.264,0.405-0.395,0.608c-0.225,0.352-0.442,0.71-0.648,1.076
c-0.137,0.243-0.273,0.485-0.401,0.732c-0.191,0.37-0.367,0.75-0.538,1.133c-0.099,0.221-0.209,0.438-0.3,0.662
c-0.001,0.003-0.003,0.007-0.005,0.01c-0.235,0.573-0.439,1.153-0.624,1.737c-0.071,0.225-0.128,0.452-0.192,0.679
c-0.119,0.423-0.229,0.847-0.323,1.273c-0.049,0.225-0.095,0.45-0.137,0.676c-0.09,0.479-0.162,0.958-0.221,1.439
c-0.02,0.165-0.047,0.33-0.063,0.495c-0.065,0.654-0.104,1.309-0.111,1.963C237.476,483.742,237.483,483.843,237.483,483.946z"/>
<path fill="#080103" d="M788.252,497.705c0.327-0.42,0.636-0.85,0.93-1.289c0.086-0.128,0.181-0.251,0.264-0.38
c0.339-0.529,0.649-1.072,0.94-1.624c0.125-0.236,0.237-0.476,0.353-0.715c0.172-0.355,0.335-0.713,0.488-1.076
c0.107-0.255,0.214-0.51,0.311-0.768c0.16-0.424,0.303-0.854,0.437-1.286c0.058-0.188,0.127-0.373,0.18-0.562
c0.167-0.591,0.303-1.189,0.421-1.792c0.042-0.217,0.074-0.435,0.11-0.654c0.074-0.445,0.135-0.891,0.181-1.34
c0.022-0.213,0.044-0.425,0.06-0.639c0.041-0.538,0.061-1.078,0.063-1.62c0-0.109,0.008-0.217,0.007-0.326
c-0.007-0.652-0.046-1.304-0.111-1.956c-0.017-0.17-0.044-0.339-0.065-0.508c-0.058-0.476-0.129-0.951-0.218-1.425
c-0.043-0.229-0.089-0.457-0.139-0.686c-0.093-0.422-0.201-0.841-0.319-1.26c-0.065-0.231-0.123-0.462-0.195-0.691
c-0.184-0.582-0.389-1.161-0.623-1.733c-0.001-0.002-0.002-0.005-0.003-0.007c-0.094-0.229-0.206-0.451-0.307-0.677
c-0.17-0.378-0.343-0.753-0.531-1.119c-0.128-0.249-0.266-0.493-0.404-0.738c-0.205-0.363-0.42-0.718-0.644-1.067
c-0.132-0.206-0.26-0.412-0.399-0.614c-0.372-0.541-0.761-1.067-1.176-1.57c-0.058-0.071-0.124-0.137-0.183-0.207
c-0.391-0.463-0.802-0.906-1.227-1.334c-0.064-0.064-0.117-0.134-0.182-0.198l-72.419-71.155
c-8.864-8.708-23.107-8.583-31.819,0.28c-8.709,8.864-8.583,23.109,0.28,31.818l33.185,32.605H597.737
c-12.427,0-22.5,10.074-22.5,22.5s10.073,22.5,22.5,22.5h117.761l-33.913,33.32c-8.863,8.709-8.989,22.955-0.28,31.819
c4.405,4.482,10.226,6.73,16.051,6.73c5.691,0,11.388-2.146,15.769-6.45l73.147-71.87c0.056-0.055,0.106-0.115,0.162-0.171
c0.038-0.038,0.081-0.07,0.119-0.109c0.089-0.091,0.163-0.19,0.25-0.282c0.36-0.379,0.706-0.767,1.035-1.166
C787.977,498.048,788.117,497.878,788.252,497.705z"/>
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v82.638H515.515c-7.956,0-15.587,3.161-21.213,8.787
c-5.626,5.626-8.787,13.257-8.787,21.213l0.001,535.118H376.06v-83.169c0-16.568-13.432-30-30-30H120.288
c-16.568,0-30,13.432-30,30v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30v-82.638h139.457
c7.957,0,15.587-3.161,21.213-8.787s8.787-13.257,8.787-21.213l-0.001-535.118H654.91v83.169c0,16.568,13.432,30,30,30h225.772
c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z M150.288,849.202V683.396H316.06v79.653
c-0.135,1.154-0.212,2.326-0.212,3.516s0.077,2.362,0.212,3.516v79.122H150.288z M880.682,284.616H714.91V118.809h165.772V284.616z
"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

11
os/public/markdown/drawio/font/svg/geSprite-horizontalisometric.svg

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v204.782l-241.001,92.693
c-9.384,3.61-16.337,11.681-18.517,21.496c-2.18,9.816,0.703,20.071,7.677,27.313l101.639,105.548l-166.304,82.754H120.288
c-16.568,0-30,13.432-30,30v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30V671.675l191.984-95.532
c8.553-4.256,14.567-12.332,16.196-21.745c1.628-9.414-1.325-19.041-7.952-25.923l-98.631-102.424l211.729-81.434h221.296
c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z M316.06,849.202H150.288V683.396H316.06V849.202z
M880.682,284.616H714.91V118.809h165.772V284.616z"/>
</svg>

After

Width:  |  Height:  |  Size: 1016 B

9
os/public/markdown/drawio/font/svg/geSprite-horizontalrule.svg

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,514.005H120.288c-16.568,0-30-13.431-30-29.999s13.432-30,30-30h790.394c16.568,0,30,13.432,30,30
S927.25,514.005,910.682,514.005z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 545 B

20
os/public/markdown/drawio/font/svg/geSprite-indent.svg

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,274.414H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,274.414,910.682,274.414z"/>
<path d="M910.682,454.006H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,154.823h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,154.823,120.288,154.823z"/>
<path d="M910.682,813.189H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,813.189,910.682,813.189z"/>
<path d="M910.682,633.597H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,633.597,910.682,633.597z"/>
<path d="M95.983,640.139c1.15,0.479,2.359,0.712,3.558,0.712c2.395,0,4.75-0.93,6.518-2.683l148.856-147.59
c1.753-1.738,2.739-4.104,2.739-6.572s-0.986-4.834-2.739-6.572l-148.856-147.59c-2.653-2.631-6.626-3.407-10.076-1.971
c-3.448,1.438-5.695,4.807-5.695,8.543v295.18C90.288,635.332,92.535,638.701,95.983,640.139z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

8
os/public/markdown/drawio/font/svg/geSprite-italic.svg

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M750.754,58.811H462.963c-16.568,0-30,13.432-30,30s13.432,30,30,30h73.28L369.235,849.2h-89.02c-16.568,0-30,13.432-30,30
s13.432,30,30,30h287.792c16.568,0,30-13.432,30-30s-13.432-30-30-30h-74.412l167.008-730.39h90.151c16.568,0,30-13.432,30-30
S767.323,58.811,750.754,58.811z"/>
</svg>

After

Width:  |  Height:  |  Size: 671 B

13
os/public/markdown/drawio/font/svg/geSprite-justifyfull.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,454.006H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,219.374h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 838 B

13
os/public/markdown/drawio/font/svg/geSprite-left.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M120.288,514.005h536.394c16.568,0,30-13.431,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,514.005,120.288,514.005z"/>
<path d="M120.288,219.374h336.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 839 B

16
os/public/markdown/drawio/font/svg/geSprite-link.svg

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M304.714,637.566c-85.151,0-154.426-68.331-154.426-152.322c0-83.992,69.275-152.324,154.426-152.324h114.089
c85.149,0,154.424,68.332,154.424,152.324c0,16.568,13.432,30,30,30s30-13.432,30-30c0-56.778-22.348-110.141-62.925-150.256
c-40.486-40.025-94.289-62.067-151.499-62.067H304.714c-57.21,0-111.014,22.042-151.5,62.067
c-40.579,40.116-62.926,93.478-62.926,150.256s22.348,110.14,62.926,150.256c40.486,40.024,94.29,62.066,151.5,62.066
c16.568,0,30-13.432,30-30S321.282,637.566,304.714,637.566z"/>
<path d="M877.756,332.512c-40.486-40.024-94.29-62.066-151.5-62.066c-16.568,0-30,13.432-30,30s13.432,30,30,30
c85.15,0,154.426,68.331,154.426,152.322c0,83.992-69.275,152.324-154.426,152.324h-114.09
c-85.149,0-154.424-68.332-154.424-152.324c0-16.568-13.432-30-30-30s-30,13.432-30,30c0,117.076,96.19,212.324,214.424,212.324
h114.09c57.21,0,111.014-22.043,151.5-62.067c40.578-40.116,62.926-93.479,62.926-150.257S918.334,372.628,877.756,332.512z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
os/public/markdown/drawio/font/svg/geSprite-linkedge.svg

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M120.288,453.006h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,453.006,120.288,453.006z"/>
<path d="M910.682,515.006H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,515.006,910.682,515.006z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 690 B

40
os/public/markdown/drawio/font/svg/geSprite-middle.svg

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M819.649,454.006H211.321c-16.568,0-30,13.431-30,30s13.432,30,30,30h608.328c16.568,0,30-13.431,30-30
S836.217,454.006,819.649,454.006z"/>
<path d="M493.53,378.637c0.158,0.161,0.322,0.311,0.483,0.467c0.133,0.13,0.265,0.26,0.401,0.388
c0.48,0.451,0.968,0.886,1.47,1.299c0.027,0.022,0.055,0.043,0.083,0.065c0.511,0.418,1.035,0.812,1.567,1.191
c0.083,0.059,0.166,0.119,0.25,0.177c1.186,0.828,2.418,1.56,3.687,2.197c0.022,0.011,0.044,0.022,0.065,0.033
c2.445,1.22,5.021,2.093,7.655,2.604c0.026,0.005,0.052,0.008,0.077,0.013c0.442,0.085,0.885,0.162,1.33,0.226
c1.438,0.21,2.883,0.314,4.324,0.314c0.245,0,0.49-0.012,0.735-0.018c0.237-0.006,0.475-0.006,0.712-0.018
c0.162-0.008,0.323-0.024,0.485-0.034c0.329-0.021,0.658-0.041,0.986-0.073c0.109-0.011,0.217-0.027,0.326-0.039
c0.381-0.041,0.762-0.085,1.142-0.141c0.07-0.01,0.138-0.024,0.208-0.035c0.42-0.065,0.839-0.136,1.256-0.218
c0.033-0.007,0.066-0.015,0.1-0.022c0.453-0.091,0.905-0.192,1.354-0.305c0.001,0,0.003-0.001,0.004-0.001
c1.897-0.474,3.756-1.138,5.55-1.989c0.003-0.001,0.006-0.003,0.009-0.004c0.435-0.206,0.865-0.424,1.292-0.652
c0.032-0.017,0.064-0.036,0.096-0.053c0.392-0.212,0.781-0.432,1.165-0.663c0.069-0.042,0.138-0.085,0.207-0.127
c0.341-0.208,0.679-0.422,1.014-0.645c0.112-0.075,0.223-0.153,0.335-0.23c0.286-0.197,0.57-0.396,0.851-0.604
c0.151-0.111,0.299-0.227,0.448-0.342c0.237-0.182,0.473-0.366,0.706-0.556c0.179-0.147,0.355-0.298,0.532-0.449
c0.199-0.171,0.398-0.341,0.593-0.518c0.192-0.173,0.38-0.352,0.568-0.531c0.119-0.113,0.241-0.219,0.358-0.335
c0.061-0.06,0.117-0.123,0.177-0.183c0.065-0.065,0.133-0.125,0.197-0.19l111.82-113.81c11.612-11.819,11.444-30.813-0.374-42.425
c-11.819-11.613-30.814-11.445-42.425,0.374l-60.421,61.496V88.809c0-16.568-13.432-30-30-30s-30,13.432-30,30v195.465
l-59.311-60.364c-11.611-11.818-30.606-11.985-42.425-0.373c-11.818,11.612-11.985,30.606-0.373,42.425L493.53,378.637z"/>
<path d="M536.329,589.374c-0.045-0.046-0.095-0.087-0.14-0.132c-0.079-0.08-0.153-0.163-0.234-0.242
c-0.4-0.393-0.809-0.769-1.224-1.135c-0.071-0.062-0.144-0.12-0.216-0.182c-0.46-0.397-0.929-0.776-1.406-1.14
c-0.103-0.079-0.206-0.158-0.31-0.236c-1.13-0.841-2.306-1.59-3.518-2.25c-0.053-0.029-0.105-0.058-0.158-0.086
c-1.253-0.673-2.542-1.251-3.859-1.733c-0.049-0.018-0.098-0.036-0.147-0.054c-1.301-0.469-2.626-0.844-3.968-1.127
c-0.106-0.022-0.211-0.045-0.317-0.066c-0.652-0.13-1.306-0.244-1.964-0.33c-0.071-0.009-0.142-0.015-0.213-0.024
c-0.573-0.071-1.147-0.124-1.722-0.162c-0.17-0.011-0.34-0.024-0.51-0.032c-0.619-0.031-1.239-0.046-1.859-0.038
c-0.144,0.002-0.289,0.01-0.433,0.014c-0.521,0.014-1.041,0.042-1.56,0.082c-0.173,0.014-0.346,0.025-0.519,0.042
c-0.63,0.06-1.258,0.14-1.884,0.24c-0.118,0.019-0.236,0.043-0.355,0.063c-0.599,0.103-1.196,0.224-1.789,0.364
c-0.077,0.018-0.154,0.034-0.23,0.052c-0.687,0.167-1.368,0.361-2.044,0.578c-0.04,0.013-0.079,0.027-0.119,0.04
c-1.398,0.454-2.768,1.014-4.1,1.679c-0.021,0.011-0.042,0.022-0.064,0.032c-1.27,0.638-2.503,1.37-3.69,2.199
c-0.085,0.06-0.17,0.12-0.254,0.181c-0.514,0.367-1.021,0.749-1.516,1.153c-0.046,0.037-0.093,0.072-0.139,0.109
c-0.497,0.41-0.981,0.841-1.457,1.288c-0.136,0.128-0.268,0.258-0.401,0.388c-0.16,0.156-0.324,0.305-0.481,0.466L382.821,702.05
c-11.612,11.818-11.445,30.813,0.373,42.425c5.842,5.739,13.435,8.601,21.024,8.601c7.766,0,15.528-2.997,21.4-8.975l59.311-60.364
v195.465c0,16.568,13.432,30,30,30s30-13.432,30-30V683.74l60.421,61.496c11.61,11.817,30.605,11.987,42.425,0.374
c11.818-11.611,11.986-30.606,0.374-42.425L536.329,589.374z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

21
os/public/markdown/drawio/font/svg/geSprite-orderedlist.svg

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,453.555H431.337c-16.568,0-30,13.432-30,30s13.432,30,30,30h479.345c16.568,0,30-13.432,30-30
S927.25,453.555,910.682,453.555z"/>
<path d="M431.337,213.907h479.345c16.568,0,30-13.432,30-30s-13.432-30-30-30H431.337c-16.568,0-30,13.432-30,30
S414.768,213.907,431.337,213.907z"/>
<path d="M910.682,753.203H431.337c-16.568,0-30,13.432-30,30s13.432,30,30,30h479.345c16.568,0,30-13.432,30-30
S927.25,753.203,910.682,753.203z"/>
<path d="M134.986,175.62l52.727-29.633v160.867c0,16.568,13.432,30,30,30s30-13.432,30-30V94.713
c0-10.656-5.653-20.512-14.85-25.894c-9.197-5.381-20.558-5.48-29.848-0.259l-97.425,54.756
c-14.444,8.118-19.572,26.407-11.455,40.851C102.253,178.61,120.543,183.739,134.986,175.62z"/>
<path d="M253.44,456.095c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h36.576
v72.589h-36.576c-16.568,0-30,13.432-30,30s13.432,30,30,30H253.44c16.568,0,30-13.432,30-30s-13.432-30-30-30h-36.576v-72.589
H253.44z"/>
<path d="M253.44,661.524H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30H223.44v121.979H120.288c-16.568,0-30,13.432-30,30
s13.432,30,30,30H253.44c15.567,0,28.363-11.858,29.853-27.034h0.147V691.524C283.44,674.955,270.008,661.524,253.44,661.524z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

10
os/public/markdown/drawio/font/svg/geSprite-orthogonal.svg

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809h-221c-16.568,0-30,13.432-30,30v221c0,16.568,13.432,30,30,30h80.996v114.476h-540
c-16.568,0-30,13.432-30,30v143.918h-80.39c-16.568,0-30,13.432-30,30v221c0,16.568,13.432,30,30,30h221c16.568,0,30-13.432,30-30
v-221c0-16.568-13.432-30-30-30h-80.61V514.284h540c16.568,0,30-13.432,30-30V339.809h80.004c16.568,0,30-13.432,30-30v-221
C940.682,72.24,927.25,58.809,910.682,58.809z M311.288,849.202h-161v-161h78.281c0.698,0.049,1.399,0.082,2.109,0.082
s1.411-0.034,2.109-0.082h78.501V849.202z M880.682,279.809h-161v-161h161V279.809z"/>
</svg>

After

Width:  |  Height:  |  Size: 953 B

20
os/public/markdown/drawio/font/svg/geSprite-outdent.svg

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,274.414H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,274.414,910.682,274.414z"/>
<path d="M910.682,454.006H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,154.823h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,154.823,120.288,154.823z"/>
<path d="M910.682,813.189H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,813.189,910.682,813.189z"/>
<path d="M910.682,633.597H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,633.597,910.682,633.597z"/>
<path d="M241.883,638.168c1.768,1.753,4.123,2.683,6.518,2.683c1.199,0,2.408-0.232,3.558-0.712
c3.448-1.438,5.695-4.807,5.695-8.543v-295.18c0-3.736-2.247-7.105-5.695-8.543c-3.449-1.436-7.422-0.66-10.076,1.971
L93.027,477.434c-1.753,1.738-2.739,4.104-2.739,6.572s0.986,4.834,2.739,6.572L241.883,638.168z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

8
os/public/markdown/drawio/font/svg/geSprite-plus.svg

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M910.682,454.006H545.485V88.809c0-16.568-13.432-30-30-30s-30,13.432-30,30v365.197H120.288c-16.568,0-30,13.432-30,30
s13.432,30,30,30h365.197v365.197c0,16.568,13.432,30,30,30s30-13.432,30-30V514.005h365.197c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
</svg>

After

Width:  |  Height:  |  Size: 662 B

45
os/public/markdown/drawio/font/svg/geSprite-redo.svg

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M193.129,436.94c49.486-51.568,115.376-79.967,185.532-79.967h435.257L579.393,111.534
c-11.446-11.979-11.015-30.969,0.964-42.416c11.979-11.446,30.969-11.015,42.416,0.964l282.996,296.164
c0.018,0.018,0.034,0.038,0.051,0.057c0.095,0.1,0.186,0.202,0.279,0.303c0.154,0.166,0.304,0.335,0.454,0.504
c0.094,0.107,0.193,0.211,0.286,0.318c0.09,0.105,0.176,0.211,0.265,0.317c0.124,0.148,0.244,0.299,0.365,0.45
c0.03,0.038,0.061,0.075,0.092,0.113c0.078,0.098,0.161,0.194,0.238,0.293c0.082,0.105,0.16,0.212,0.24,0.318
c0.095,0.125,0.185,0.253,0.278,0.38c0.058,0.08,0.117,0.159,0.175,0.239c0.067,0.093,0.137,0.184,0.203,0.277
c0.071,0.102,0.139,0.206,0.209,0.308c0.074,0.109,0.144,0.22,0.217,0.33c0.065,0.099,0.131,0.197,0.194,0.296
c0.069,0.107,0.143,0.212,0.21,0.32c0.058,0.093,0.114,0.188,0.171,0.282c0.067,0.11,0.13,0.223,0.196,0.334
c0.052,0.088,0.104,0.176,0.155,0.264c0.079,0.136,0.163,0.271,0.24,0.408c0.045,0.081,0.088,0.164,0.133,0.246
c0.073,0.134,0.142,0.272,0.213,0.407c0.023,0.044,0.046,0.088,0.069,0.131c0.092,0.178,0.19,0.354,0.279,0.533
c0.033,0.068,0.064,0.136,0.097,0.204c0.084,0.173,0.161,0.349,0.242,0.523c0.094,0.205,0.194,0.408,0.283,0.614
c0.024,0.054,0.045,0.109,0.068,0.164c0.088,0.206,0.169,0.415,0.252,0.623c0.077,0.193,0.159,0.384,0.232,0.578
c0.016,0.042,0.03,0.084,0.046,0.127c0.089,0.24,0.171,0.483,0.254,0.726c0.06,0.176,0.125,0.351,0.182,0.528
c0.011,0.034,0.02,0.068,0.031,0.103c0.085,0.267,0.162,0.537,0.24,0.807c0.046,0.162,0.097,0.323,0.141,0.485
c0.009,0.032,0.016,0.064,0.024,0.095c0.074,0.28,0.141,0.562,0.207,0.845c0.036,0.156,0.077,0.31,0.111,0.466
c0.008,0.036,0.014,0.073,0.022,0.11c0.059,0.278,0.112,0.559,0.163,0.839c0.029,0.156,0.062,0.311,0.088,0.468
c0.008,0.049,0.014,0.098,0.022,0.147c0.043,0.264,0.08,0.53,0.116,0.797c0.022,0.16,0.048,0.319,0.067,0.48
c0.008,0.071,0.013,0.142,0.021,0.212c0.027,0.243,0.049,0.487,0.071,0.732c0.014,0.161,0.033,0.321,0.044,0.482
c0.007,0.1,0.009,0.201,0.015,0.301c0.013,0.223,0.024,0.446,0.032,0.67c0.006,0.153,0.017,0.306,0.02,0.46
c0.003,0.131,0,0.262,0.001,0.393c0.001,0.108,0.008,0.214,0.008,0.322s-0.007,0.214-0.008,0.322
c-0.001,0.131,0.002,0.262-0.001,0.393c-0.004,0.153-0.015,0.306-0.02,0.46c-0.009,0.224-0.019,0.447-0.032,0.67
c-0.006,0.1-0.008,0.201-0.015,0.301c-0.011,0.161-0.03,0.321-0.044,0.482c-0.021,0.245-0.043,0.489-0.071,0.732
c-0.008,0.071-0.012,0.142-0.021,0.212c-0.019,0.16-0.045,0.32-0.067,0.48c-0.036,0.266-0.073,0.532-0.116,0.797
c-0.008,0.049-0.014,0.098-0.022,0.147c-0.026,0.156-0.059,0.312-0.088,0.468c-0.052,0.281-0.104,0.561-0.163,0.839
c-0.008,0.036-0.014,0.073-0.022,0.11c-0.034,0.156-0.075,0.311-0.111,0.466c-0.066,0.283-0.133,0.565-0.207,0.845
c-0.008,0.032-0.015,0.064-0.024,0.095c-0.044,0.163-0.094,0.323-0.141,0.485c-0.078,0.27-0.155,0.54-0.24,0.807
c-0.011,0.034-0.02,0.068-0.031,0.103c-0.057,0.177-0.122,0.352-0.182,0.528c-0.083,0.243-0.165,0.486-0.254,0.726
c-0.016,0.042-0.03,0.085-0.046,0.127c-0.073,0.194-0.155,0.386-0.233,0.579c-0.083,0.207-0.164,0.416-0.252,0.621
c-0.023,0.055-0.045,0.11-0.068,0.164c-0.09,0.207-0.189,0.41-0.284,0.615c-0.081,0.174-0.158,0.35-0.241,0.522
c-0.033,0.068-0.064,0.136-0.097,0.204c-0.089,0.179-0.186,0.355-0.279,0.533c-0.023,0.044-0.046,0.088-0.069,0.131
c-0.071,0.136-0.14,0.273-0.213,0.407c-0.045,0.082-0.087,0.164-0.133,0.246c-0.077,0.137-0.161,0.272-0.24,0.408
c-0.051,0.088-0.103,0.176-0.155,0.264c-0.066,0.111-0.129,0.224-0.196,0.334c-0.057,0.094-0.112,0.188-0.171,0.282
c-0.068,0.108-0.141,0.213-0.21,0.32c-0.064,0.099-0.129,0.197-0.194,0.296c-0.072,0.11-0.143,0.221-0.217,0.33
c-0.07,0.103-0.137,0.206-0.209,0.308c-0.065,0.093-0.136,0.184-0.203,0.277c-0.057,0.08-0.116,0.159-0.175,0.239
c-0.093,0.127-0.184,0.255-0.278,0.38c-0.08,0.106-0.158,0.213-0.24,0.318c-0.077,0.099-0.159,0.195-0.238,0.293
c-0.03,0.038-0.061,0.075-0.092,0.113c-0.121,0.151-0.241,0.302-0.365,0.45c-0.088,0.106-0.175,0.212-0.265,0.317
c-0.093,0.108-0.191,0.212-0.286,0.318c-0.15,0.169-0.3,0.338-0.454,0.504c-0.093,0.101-0.184,0.203-0.279,0.303
c-0.018,0.019-0.034,0.038-0.051,0.057L622.773,703.862c-5.895,6.169-13.787,9.274-21.694,9.274c-7.448,0-14.911-2.758-20.721-8.311
c-11.979-11.446-12.411-30.436-0.964-42.415l234.525-245.438H378.661c-111.257,0-201.771,94.886-201.771,211.518v248.712
c0,16.568-13.432,30-30,30s-30-13.432-30-30V628.49C116.891,556.198,143.966,488.17,193.129,436.94z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

11
os/public/markdown/drawio/font/svg/geSprite-removeformat.svg

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M932.646,341.084L680.409,88.847c-10.716-10.716-28.09-10.716-38.806-0.001L98.325,632.123
c-10.716,10.716-10.716,28.09,0,38.806l171.347,171.347c-0.199,1.616-0.313,3.257-0.313,4.926c0,22.092,17.908,40,40,40h5.239
h110.731h452.623c22.091,0,40-17.908,40-40s-17.909-40-40-40H505.33l427.316-427.315
C943.361,369.173,943.361,351.799,932.646,341.084z M554.29,670.93L418.018,807.203h-96.107L185.636,670.929
c-10.715-10.716-10.716-28.089,0-38.806L350.56,467.201c10.716-10.716,28.09-10.716,38.805,0.001L554.29,632.124
C565.005,642.841,565.006,660.214,554.29,670.93z"/>
</svg>

After

Width:  |  Height:  |  Size: 955 B

13
os/public/markdown/drawio/font/svg/geSprite-right.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,454.006H374.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h536.394c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M574.287,219.374h336.395c16.568,0,30-13.432,30-30s-13.432-30-30-30H574.287c-16.568,0-30,13.432-30,30
S557.719,219.374,574.287,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 839 B

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

Loading…
Cancel
Save