@seafile/seafile-editor 0.3.88 → 0.3.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitial
4
4
  import _inherits from "@babel/runtime/helpers/esm/inherits";
5
5
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
6
  import React from 'react';
7
- import moment from 'moment';
7
+ import dayjs from 'dayjs';
8
8
  import { processor } from '../utils/seafile-markdown2html';
9
9
  import { Button, Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';
10
10
  import ParticipantsList from './participants-list';
@@ -202,7 +202,7 @@ var CommentPanel = /*#__PURE__*/function (_React$Component) {
202
202
  var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
203
203
  var arr = arguments.length > 2 ? arguments[2] : undefined;
204
204
  var oldTime = new Date(item.created_at).getTime();
205
- var time = moment(oldTime).format('YYYY-MM-DD HH:mm');
205
+ var time = dayjs(oldTime).format('YYYY-MM-DD HH:mm');
206
206
  return /*#__PURE__*/React.createElement(React.Fragment, {
207
207
  key: item.id
208
208
  }, /*#__PURE__*/React.createElement(CommentItem, {
@@ -3,25 +3,26 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
- import moment from 'moment';
6
+ import dayjs from 'dayjs/';
7
+ import relativeTime from 'dayjs/plugin/relativeTime';
7
8
  import ParticipantsList from './participants-list';
8
9
  import '../css/richeditor/detail-list-view.css';
9
10
 
11
+ require('dayjs/locale/zh-cn');
12
+
13
+ require('dayjs/locale/en-gb');
14
+
10
15
  var DetailListView = /*#__PURE__*/function (_React$Component) {
11
16
  _inherits(DetailListView, _React$Component);
12
17
 
13
18
  var _super = _createSuper(DetailListView);
14
19
 
15
- function DetailListView() {
20
+ function DetailListView(props) {
16
21
  var _this;
17
22
 
18
23
  _classCallCheck(this, DetailListView);
19
24
 
20
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
21
- args[_key] = arguments[_key];
22
- }
23
-
24
- _this = _super.call.apply(_super, [this].concat(args));
25
+ _this = _super.call(this, props);
25
26
 
26
27
  _this.onEditFileTagToggle = function () {
27
28
  _this.props.openDialogs && _this.props.openDialogs('file_tags');
@@ -48,6 +49,11 @@ var DetailListView = /*#__PURE__*/function (_React$Component) {
48
49
  }
49
50
  };
50
51
 
52
+ dayjs.extend(relativeTime);
53
+ var app = window.app || {
54
+ config: ''
55
+ };
56
+ dayjs.locale(app.config.lang || 'en');
51
57
  return _this;
52
58
  }
53
59
 
@@ -69,7 +75,7 @@ var DetailListView = /*#__PURE__*/function (_React$Component) {
69
75
  width: "40%"
70
76
  }), /*#__PURE__*/React.createElement("th", {
71
77
  width: "60%"
72
- }))), /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Size')), /*#__PURE__*/React.createElement("td", null, this.bytesToSize(fileInfo.size))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Location')), /*#__PURE__*/React.createElement("td", null, filePath)), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Last_Update')), /*#__PURE__*/React.createElement("td", null, moment(fileInfo.last_modified).fromNow())), /*#__PURE__*/React.createElement("tr", {
78
+ }))), /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Size')), /*#__PURE__*/React.createElement("td", null, this.bytesToSize(fileInfo.size))), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Location')), /*#__PURE__*/React.createElement("td", null, filePath)), /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, this.props.t('Last_Update')), /*#__PURE__*/React.createElement("td", null, dayjs(fileInfo.mtime * 1000).fromNow())), /*#__PURE__*/React.createElement("tr", {
73
79
  className: "file-tag-container"
74
80
  }, /*#__PURE__*/React.createElement("th", null, this.props.t('Tags')), /*#__PURE__*/React.createElement("td", null, fileTagList.length > 0 && /*#__PURE__*/React.createElement("ul", {
75
81
  className: "file-tag-list"
@@ -199,7 +199,17 @@ var ToolBar = /*#__PURE__*/function (_React$Component) {
199
199
  onInsertRow: this.editorUtils.onInsertRow,
200
200
  onRemoveRow: this.editorUtils.onRemoveRow,
201
201
  onSetAlign: this.editorUtils.onSetAlign
202
- })), this.props.hasSidePanel && /*#__PURE__*/React.createElement("div", {
202
+ }), /*#__PURE__*/React.createElement(ButtonGroup, {
203
+ className: 'editor-btn-group'
204
+ }, /*#__PURE__*/React.createElement(IconButton, {
205
+ className: 'editor-clear-format',
206
+ isRichEditor: true,
207
+ text: t('Clear_format'),
208
+ id: 'clearButton',
209
+ icon: 'iconfont icon-clear-format',
210
+ onMouseDown: this.editorUtils.clearFormat,
211
+ isActive: readOnly
212
+ }))), this.props.hasSidePanel && /*#__PURE__*/React.createElement("div", {
203
213
  className: "button-container"
204
214
  }, !this.props.isShowSidePanel && /*#__PURE__*/React.createElement(ButtonGroup, {
205
215
  className: "editor-btn-group position-absolute dropdown-menu-right"
@@ -4,7 +4,7 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import { withTranslation } from 'react-i18next';
7
- import moment from 'moment';
7
+ import dayjs from 'dayjs';
8
8
  import InternalLinkDialog from '../internal-link-dialog';
9
9
 
10
10
  var FileInfo = /*#__PURE__*/function (_React$PureComponent) {
@@ -23,7 +23,7 @@ var FileInfo = /*#__PURE__*/function (_React$PureComponent) {
23
23
  value: function render() {
24
24
  var lockedText = this.props.t('locked');
25
25
  var fileInfo = this.props.fileInfo;
26
- var modifyTime = moment(fileInfo.mtime * 1000).format('YYYY-MM-DD HH:mm');
26
+ var modifyTime = dayjs(fileInfo.mtime * 1000).format('YYYY-MM-DD HH:mm');
27
27
  return /*#__PURE__*/React.createElement("div", {
28
28
  className: 'file-info-wrapper'
29
29
  }, /*#__PURE__*/React.createElement("div", {
@@ -30,7 +30,6 @@
30
30
  .keyboard-shortcut-container>div:last-child {
31
31
  padding-left: 1rem;
32
32
  padding-right: 1rem;
33
- font-size: 13px;
34
33
  }
35
34
 
36
35
  .keyboard-shortcut {
@@ -36,6 +36,10 @@
36
36
  padding: 0;
37
37
  }
38
38
 
39
+ .editor-btn-group .editor-clear-format {
40
+ margin-right: 5px;
41
+ }
42
+
39
43
  .insert-file {
40
44
  position: relative;
41
45
  display: inline-block;
File without changes
@@ -8,6 +8,7 @@ import CodeUtils from '../editor-utils/block-element-utils/code-utils';
8
8
  import TextUtils from '../editor-utils/text-utils';
9
9
  import TableUtils from '../editor-utils/block-element-utils/table-utils';
10
10
  import BlockquoteUtils from '../editor-utils/block-element-utils/blockquote-utils';
11
+ import { clearBlockFormat, clearMarkerFormat } from '../editor-utils/clear-format-utils';
11
12
  var SHORTCUTS = {
12
13
  '1.': 'ordered_list',
13
14
  '*': 'unordered_list',
@@ -404,12 +405,23 @@ var withMarkdownShortcut = function withMarkdownShortcut(editor) {
404
405
  break;
405
406
 
406
407
  case 'delete_fragment':
407
- // do not unhange selection when delete fragment
408
+ var _Range$edges = Range.edges(editor.selection),
409
+ _Range$edges2 = _slicedToArray(_Range$edges, 2),
410
+ end = _Range$edges2[1];
411
+
412
+ var voids = Editor.match(editor, end.path, 'void');
413
+ var endVoid = voids ? voids : null; // do not unhange selection when end point is a void node when delete fragment,
414
+
408
415
  Editor.delete(editor, {
409
- hanging: true
416
+ hanging: endVoid ? true : false
410
417
  });
411
418
  return;
412
419
 
420
+ case 'clear_format':
421
+ clearBlockFormat(editor);
422
+ clearMarkerFormat(editor);
423
+ return;
424
+
413
425
  default:
414
426
  exec(command);
415
427
  }
File without changes
@@ -0,0 +1,94 @@
1
+ import { Editor, Path, Node } from 'slate';
2
+
3
+ var removeEmptyParentNode = function removeEmptyParentNode(editor, pathRef) {
4
+ var path = pathRef.current;
5
+ var currentNode = Node.get(editor, path);
6
+ var children = currentNode.children;
7
+
8
+ while ((children.length === 0 || children.length === 1 && children[0].text === '') && currentNode.type) {
9
+ Editor.removeNodes(editor, {
10
+ at: path
11
+ });
12
+ path = Path.parent(path);
13
+ currentNode = Node.get(editor, path);
14
+ children = currentNode.children;
15
+ }
16
+
17
+ pathRef.unref();
18
+ };
19
+
20
+ var clearBlockFormat = function clearBlockFormat(editor) {
21
+ // get selected block node, like the paragraphs in the blockquote;
22
+ var nodes = Editor.nodes(editor, {
23
+ match: 'block',
24
+ voids: false
25
+ });
26
+ var nodesList = [];
27
+ var pathRefs = Array.from(nodes, function (item) {
28
+ nodesList.push(item);
29
+ return Editor.pathRef(editor, item[1]);
30
+ });
31
+ var firstNode = nodesList[0],
32
+ firstNodeRef = pathRefs[0];
33
+ nodesList.shift();
34
+ pathRefs.shift(); // move first block to outest and set the block to paragraph
35
+
36
+ while (firstNodeRef.current.length > 1) {
37
+ Editor.liftNodes(editor, {
38
+ at: firstNodeRef.current
39
+ });
40
+ }
41
+
42
+ if (firstNode[0].type !== 'paragraph') {
43
+ Editor.setNodes(editor, {
44
+ type: 'paragraph',
45
+ at: firstNodeRef.current,
46
+ split: true
47
+ });
48
+ }
49
+
50
+ nodesList.forEach(function (item, index) {
51
+ var toPath = index === 0 ? Path.next(firstNodeRef.current) : Path.next(pathRefs[index - 1].current);
52
+ var currentPath = pathRefs[index].current;
53
+
54
+ if (currentPath.length > 1) {
55
+ var parentPath = Path.parent(currentPath);
56
+ var parentRef = Editor.pathRef(editor, parentPath); // move current node to outest
57
+
58
+ Editor.moveNodes(editor, {
59
+ at: currentPath,
60
+ to: toPath
61
+ }); // remove empty parent node
62
+
63
+ removeEmptyParentNode(editor, parentRef);
64
+ } // set current block node to paragraph
65
+
66
+
67
+ if (item[0].type !== 'paragraph') {
68
+ Editor.setNodes(editor, {
69
+ type: 'paragraph',
70
+ at: currentPath,
71
+ split: true
72
+ });
73
+ }
74
+ });
75
+ firstNodeRef.unref();
76
+ pathRefs.forEach(function (ref) {
77
+ return ref.unref();
78
+ });
79
+ };
80
+
81
+ var clearMarkerFormat = function clearMarkerFormat(editor) {
82
+ // clear all markers of selected texts;
83
+ var textProperties = {
84
+ BOLD: false,
85
+ ITALIC: false,
86
+ CODE: false
87
+ };
88
+ editor.exec({
89
+ type: 'format_text',
90
+ properties: textProperties
91
+ });
92
+ };
93
+
94
+ export { clearBlockFormat, clearMarkerFormat };
@@ -366,6 +366,14 @@ var EditorUtils = /*#__PURE__*/function () {
366
366
  }
367
367
  };
368
368
 
369
+ this.clearFormat = function (event) {
370
+ event.preventDefault();
371
+
372
+ _this.editor.exec({
373
+ type: 'clear_format'
374
+ });
375
+ };
376
+
369
377
  this.unwrapLink = function () {
370
378
  _this.inlineElementUtils.unwrapLink();
371
379
  };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "0.3.88",
3
+ "version": "0.3.91",
4
4
  "private": false,
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "^0.0.9",
7
7
  "@seafile/slate-react": "^0.54.13",
8
8
  "codemirror": "^5.37.0",
9
9
  "crypto-js": "^3.1.9-1",
10
+ "dayjs": "^1.10.7",
10
11
  "deep-equal": "^1.0.1",
11
12
  "deepmerge": "^2.1.0",
12
13
  "detect-indent": "^4.0.0",
@@ -23,7 +24,6 @@
23
24
  "jszip": "^3.2.1",
24
25
  "lodash": "4.17.21",
25
26
  "mdast-util-definitions": "^1.2.2",
26
- "moment": "^2.22.2",
27
27
  "object-assign": "4.1.1",
28
28
  "prismjs": "1.23.0",
29
29
  "promise": "8.0.1",
@@ -135,6 +135,7 @@
135
135
  "Tags": "Tags",
136
136
  "Related_Files": "Related Files",
137
137
  "Add_participants": "Add participants",
138
+ "Clear_format": "Clear format",
138
139
  "markdownLint": {
139
140
  "missing_h1": {
140
141
  "description": "There is no h1 in the document",
@@ -132,6 +132,7 @@
132
132
  "Tags": "标签",
133
133
  "Related_Files": "相关文档",
134
134
  "Add_participants": "增加文件参与人",
135
+ "Clear_format": "清除格式",
135
136
  "markdownLint": {
136
137
  "missing_h1": {
137
138
  "description": "文档缺少一级标题",
@@ -14,13 +14,15 @@
14
14
  />
15
15
  <missing-glyph />
16
16
 
17
- <glyph glyph-name="enlarge" unicode="&#59223;" d="M432 860.8C211.2 860.8 32 681.6 32 460.8s179.2-400 400-400c99.2 0 188.8 35.2 256 92.8l217.6-217.6c19.2-19.2 48-19.2 67.2 0s19.2 48 0 67.2L755.2 224c48 67.2 76.8 147.2 76.8 236.8 0 220.8-179.2 400-400 400z m0-99.2c166.4 0 300.8-134.4 300.8-300.8S598.4 160 432 160s-300.8 134.4-300.8 300.8 134.4 300.8 300.8 300.8z m-3.2-124.8c-25.6 0-48-22.4-48-48v-80H300.8c-25.6 0-48-22.4-48-48s22.4-48 48-48h80v-80c0-25.6 22.4-48 48-48s48 22.4 48 48v80h80c25.6 0 48 22.4 48 48s-22.4 48-48 48h-80V588.8c0 25.6-22.4 48-48 48z" horiz-adv-x="1024" />
17
+ <glyph glyph-name="-clear-format" unicode="&#59232;" d="M918.4 579.2L640 816c-25.6 22.4-64 22.4-83.2-6.4L112 310.4c-9.6-9.6-16-25.6-16-41.6s9.6-32 22.4-41.6L256 112h326.4l342.4 384c19.2 25.6 19.2 60.8-6.4 83.2z m-384-380.8H300.8L224 268.79999999999995c-6.4 6.4-9.6 9.6-9.6 16s0 16 6.4 22.4l185.6 211.2 233.6-201.6-105.6-118.4zM147.2 41.60000000000002h739.2c32 0 51.2-22.4 51.2-51.2 0-32-22.4-51.2-51.2-51.2H147.2c-32 0-51.2 22.4-51.2 51.2 0 28.8 22.4 51.2 51.2 51.2z" horiz-adv-x="1024" />
18
18
 
19
- <glyph glyph-name="shrink" unicode="&#59224;" d="M432 860.8C211.2 860.8 32 681.6 32 460.8s179.2-400 400-400c99.2 0 188.8 35.2 256 92.8l217.6-217.6c19.2-19.2 48-19.2 67.2 0s19.2 48 0 67.2L755.2 224c48 67.2 76.8 147.2 76.8 236.8 0 220.8-179.2 400-400 400z m0-99.2c166.4 0 300.8-134.4 300.8-300.8S598.4 160 432 160s-300.8 134.4-300.8 300.8 134.4 300.8 300.8 300.8z m-131.2-252.8c-25.6 0-48-22.4-48-48s22.4-48 48-48h256c25.6 0 48 22.4 48 48s-22.4 48-48 48h-256z" horiz-adv-x="1024" />
19
+ <glyph glyph-name="-enlarge" unicode="&#59223;" d="M432 860.8C211.2 860.8 32 681.6 32 460.8s179.2-400 400-400c99.2 0 188.8 35.2 256 92.8l217.6-217.6c19.2-19.2 48-19.2 67.2 0s19.2 48 0 67.2L755.2 224c48 67.2 76.8 147.2 76.8 236.8 0 220.8-179.2 400-400 400z m0-99.2c166.4 0 300.8-134.4 300.8-300.8S598.4 160 432 160s-300.8 134.4-300.8 300.8 134.4 300.8 300.8 300.8z m-3.2-124.8c-25.6 0-48-22.4-48-48v-80H300.8c-25.6 0-48-22.4-48-48s22.4-48 48-48h80v-80c0-25.6 22.4-48 48-48s48 22.4 48 48v80h80c25.6 0 48 22.4 48 48s-22.4 48-48 48h-80V588.8c0 25.6-22.4 48-48 48z" horiz-adv-x="1024" />
20
20
 
21
- <glyph glyph-name="right" unicode="&#59221;" d="M640 380.8L278.4 742.4c-22.4 19.2-22.4 54.4 0 76.8s57.6 22.4 76.8 0l406.4-400c22.4-22.4 22.4-57.6 0-76.8L355.2-60.8c-22.4-22.4-57.6-22.4-76.8 0s-22.4 57.6 0 76.8L640 380.8z" horiz-adv-x="1024" />
21
+ <glyph glyph-name="-shrink" unicode="&#59224;" d="M432 860.8C211.2 860.8 32 681.6 32 460.8s179.2-400 400-400c99.2 0 188.8 35.2 256 92.8l217.6-217.6c19.2-19.2 48-19.2 67.2 0s19.2 48 0 67.2L755.2 224c48 67.2 76.8 147.2 76.8 236.8 0 220.8-179.2 400-400 400z m0-99.2c166.4 0 300.8-134.4 300.8-300.8S598.4 160 432 160s-300.8 134.4-300.8 300.8 134.4 300.8 300.8 300.8z m-131.2-252.8c-25.6 0-48-22.4-48-48s22.4-48 48-48h256c25.6 0 48 22.4 48 48s-22.4 48-48 48h-256z" horiz-adv-x="1024" />
22
22
 
23
- <glyph glyph-name="left" unicode="&#59222;" d="M412.8 380.8L774.4 742.4c22.4 19.2 22.4 54.4 0 76.8s-57.6 22.4-76.8 0L291.2 419.2c-22.4-22.4-22.4-57.6 0-76.8l406.4-403.2c22.4-22.4 57.6-22.4 76.8 0s22.4 57.6 0 76.8L412.8 380.8z" horiz-adv-x="1024" />
23
+ <glyph glyph-name="-right" unicode="&#59221;" d="M640 380.79999999999995L278.4 742.4c-22.4 19.2-22.4 54.4 0 76.8s57.6 22.4 76.8 0l406.4-400c22.4-22.4 22.4-57.6 0-76.8L355.2-60.799999999999955c-22.4-22.4-57.6-22.4-76.8 0s-22.4 57.6 0 76.8L640 380.79999999999995z" horiz-adv-x="1024" />
24
+
25
+ <glyph glyph-name="-left" unicode="&#59222;" d="M412.8 380.79999999999995L774.4 742.4c22.4 19.2 22.4 54.4 0 76.8s-57.6 22.4-76.8 0L291.2 419.2c-22.4-22.4-22.4-57.6 0-76.8l406.4-403.2c22.4-22.4 57.6-22.4 76.8 0s22.4 57.6 0 76.8L412.8 380.79999999999995z" horiz-adv-x="1024" />
24
26
 
25
27
  <glyph glyph-name="-formula" unicode="&#59152;" d="M393.6 576.384h89.6v-128h-118.4l-12.8-54.4c-38.4-166.4-54.4-243.2-73.6-307.2-25.6-105.6-105.6-179.2-217.6-179.2h-16c-6.4 0-12.8 6.4-12.8 12.8v92.8c0 9.6 3.2 12.8 12.8 12.8h16c41.6 9.6 67.2 35.2 80 92.8 19.2 64 35.2 140.8 70.4 304l6.4 25.6-172.8-3.2c-6.4 0-12.8 6.4-12.8 12.8v102.4c0 6.4 6.4 12.8 12.8 12.8l198.4 3.2c16 60.8 22.4 89.6 32 128 35.2 137.6 153.6 182.4 326.4 150.4 3.2 0 9.6 0 12.8-3.2 6.4 0 12.8-9.6 9.6-16l-19.2-115.2c0-6.4-9.6-12.8-16-9.6-6.4 0-12.8 3.2-16 3.2-115.2 22.4-137.6 22.4-153.6-41.6-6.4-35.2-16-54.4-25.6-96zM758.4 448.384l140.8 128h83.2c6.4 0 12.8-6.4 12.8-12.8v-105.6c0-6.4-6.4-12.8-12.8-12.8h-25.6l-128-115.2 86.4-124.8h12.8c6.4 0 12.8-6.4 12.8-12.8v-96c0-6.4-6.4-12.8-12.8-12.8h-96l-99.2 144-131.2-144h-92.8c-6.4 0-12.8 6.4-12.8 12.8v96c0 6.4 6.4 12.8 12.8 12.8h19.2l140.8 137.6-70.4 105.6h-124.8v128h204.8l80-128z" horiz-adv-x="1024" />
26
28
 
@@ -1,11 +1,11 @@
1
1
  @font-face {
2
2
  font-family: "iconfont"; /* Project id 1206766 */
3
- src: url('./seafile-editor-font/iconfont.eot?t=1640940881453'); /* IE9 */
4
- src: url('./seafile-editor-font/iconfont.eot?t=1640940881453#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
- url('./seafile-editor-font/iconfont.woff2?t=1640940881453') format('woff2'),
6
- url('./seafile-editor-font/iconfont.woff?t=1640940881453') format('woff'),
7
- url('./seafile-editor-font/iconfont.ttf?t=1640940881453') format('truetype'),
8
- url('./seafile-editor-font/iconfont.svg?t=1640940881453#iconfont') format('svg');
3
+ src: url('./seafile-editor-font/iconfont.eot?t=1645422890587'); /* IE9 */
4
+ src: url('./seafile-editor-font/iconfont.eot?t=1645422890587#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
+ url('./seafile-editor-font/iconfont.woff2?t=1645422890587') format('woff2'),
6
+ url('./seafile-editor-font/iconfont.woff?t=1645422890587') format('woff'),
7
+ url('./seafile-editor-font/iconfont.ttf?t=1645422890587') format('truetype'),
8
+ url('./seafile-editor-font/iconfont.svg?t=1645422890587#iconfont') format('svg');
9
9
  }
10
10
 
11
11
  .iconfont {
@@ -16,6 +16,10 @@
16
16
  -moz-osx-font-smoothing: grayscale;
17
17
  }
18
18
 
19
+ .icon-clear-format:before {
20
+ content: "\e760";
21
+ }
22
+
19
23
  .iconenlarge:before {
20
24
  content: "\e757";
21
25
  }