@seafile/sdoc-editor 0.1.173 → 0.1.174

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.
@@ -125,6 +125,14 @@ var SeafileAPI = /*#__PURE__*/function () {
125
125
  image_list: imageList
126
126
  });
127
127
  }
128
+ }, {
129
+ key: "getLinkFilesInfo",
130
+ value: function getLinkFilesInfo(docUuid, filesUrl) {
131
+ var url = '/api/v2.1/seadoc/files-info/' + docUuid + '/';
132
+ return this.req.post(url, {
133
+ files_url: filesUrl
134
+ });
135
+ }
128
136
  }]);
129
137
  return SeafileAPI;
130
138
  }();
@@ -7,6 +7,7 @@ import { useCursorPosition } from '../helper';
7
7
  import CommentList from './comment-list';
8
8
  import { useSelectionElement } from '../../hooks/use-selection-element';
9
9
  import { useCommentContext } from '../hooks/use-comment-context';
10
+ import ElementsCommentCount from './elements-comment-count';
10
11
  var EditorComment = function EditorComment() {
11
12
  useSelectionUpdate();
12
13
  var editor = useSlateStatic();
@@ -82,8 +83,10 @@ var EditorComment = function EditorComment() {
82
83
  className: "add-comment-icon",
83
84
  onClick: onAddCommentToggle
84
85
  }, /*#__PURE__*/React.createElement("i", {
85
- className: "sdocfont sdoc-comment mr-1"
86
- }))), /*#__PURE__*/React.createElement("div", {
86
+ className: "sdocfont sdoc-add-comment mr-1"
87
+ }))), /*#__PURE__*/React.createElement(ElementsCommentCount, {
88
+ elementCommentsMap: element_comments_map
89
+ }), /*#__PURE__*/React.createElement("div", {
87
90
  className: "comment-list-wrapper",
88
91
  style: isShowComments ? {
89
92
  width: '294px'
@@ -0,0 +1,40 @@
1
+ import React, { useCallback } from 'react';
2
+ import { useSlateStatic } from '@seafile/slate-react';
3
+ import { Editor } from '@seafile/slate';
4
+ import { getNodeById, focusEditor, findPath } from '../../../extension/core';
5
+ import { useScrollContext } from '../../../hooks/use-scroll-context';
6
+ import { getElementCommentCountTop } from '../../helper';
7
+ import { eventStopPropagation } from '../../../utils/mouse-event';
8
+ var ElementCommentCount = function ElementCommentCount(_ref) {
9
+ var _scrollRef$current;
10
+ var elementId = _ref.elementId,
11
+ commentsCount = _ref.commentsCount;
12
+ var editor = useSlateStatic();
13
+ var element = getNodeById(editor.children, elementId);
14
+ var scrollRef = useScrollContext();
15
+ var onClick = useCallback(function (event) {
16
+ eventStopPropagation(event);
17
+ var path = findPath(editor, element);
18
+ var endOfFirstNode = Editor.end(editor, path);
19
+ var range = {
20
+ anchor: endOfFirstNode,
21
+ focus: endOfFirstNode
22
+ };
23
+ focusEditor(editor, range);
24
+ }, [editor, element]);
25
+ if (!element) return null;
26
+ var scrollTop = (scrollRef === null || scrollRef === void 0 ? void 0 : (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollTop) || 0;
27
+ var top = getElementCommentCountTop(editor, element, scrollTop);
28
+ return /*#__PURE__*/React.createElement("div", {
29
+ className: "element-comments-count",
30
+ style: {
31
+ top: top
32
+ },
33
+ onClick: onClick
34
+ }, /*#__PURE__*/React.createElement("i", {
35
+ className: "sdocfont sdoc-comment-count"
36
+ }), /*#__PURE__*/React.createElement("div", {
37
+ className: "element-comments-count-value"
38
+ }, commentsCount));
39
+ };
40
+ export default ElementCommentCount;
@@ -0,0 +1,29 @@
1
+ .sdoc-comment-container .comment-container-right .element-comments-count {
2
+ position: absolute;
3
+ left: -22px;
4
+ height: 16px;
5
+ width: 16px;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ color: #999;
10
+ }
11
+
12
+ .sdoc-comment-container .comment-container-right .element-comments-count:hover {
13
+ color: #333;
14
+ cursor: pointer;
15
+ }
16
+
17
+ .sdoc-comment-container .comment-container-right .element-comments-count-value {
18
+ width: 16px;
19
+ height: 14px;
20
+ position: absolute;
21
+ left: 0;
22
+ top: 0;
23
+ cursor: pointer;
24
+ pointer-events: none;
25
+ font-size: 12px;
26
+ color: #fff;
27
+ line-height: 13px;
28
+ text-align: center;
29
+ }
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import ElementCommentCount from './element-comment-count';
3
+ import './index.css';
4
+ var ElementsCommentCount = function ElementsCommentCount(_ref) {
5
+ var elementCommentsMap = _ref.elementCommentsMap;
6
+ if (!elementCommentsMap) return null;
7
+ return /*#__PURE__*/React.createElement("div", {
8
+ className: "elements-comments-count"
9
+ }, Object.keys(elementCommentsMap).map(function (elementId) {
10
+ var comments = elementCommentsMap[elementId];
11
+ if (!Array.isArray(comments) || comments.length === 0) return null;
12
+ var unresolvedComment = comments.filter(function (item) {
13
+ return !item.resolved;
14
+ });
15
+ var unresolvedCommentCount = unresolvedComment.length;
16
+ if (unresolvedCommentCount === 0) return null;
17
+ return /*#__PURE__*/React.createElement(ElementCommentCount, {
18
+ key: elementId,
19
+ elementId: elementId,
20
+ commentsCount: unresolvedCommentCount
21
+ });
22
+ }));
23
+ };
24
+ export default ElementsCommentCount;
@@ -1,3 +1,4 @@
1
+ import { ReactEditor } from '@seafile/slate-react';
1
2
  import context from '../../context';
2
3
  import { useScrollContext } from '../hooks/use-scroll-context';
3
4
  export var getSelectionRange = function getSelectionRange() {
@@ -41,4 +42,21 @@ export var getAvatarUrl = function getAvatarUrl() {
41
42
  var server = context.getSetting('serviceUrl');
42
43
  var avatarUrl = "".concat(server, "/media/avatars/default.png");
43
44
  return avatarUrl;
45
+ };
46
+ export var getElementCommentCountTop = function getElementCommentCountTop(editor, element, scrollTop) {
47
+ var minY;
48
+ var children = element.children || [];
49
+ children.forEach(function (child) {
50
+ var childDom = ReactEditor.toDOMNode(editor, child);
51
+
52
+ // use child real dom
53
+ var childRealDom = childDom.childNodes[0];
54
+ var _ref2 = childRealDom ? childRealDom.getBoundingClientRect() : {
55
+ y: 0
56
+ },
57
+ y = _ref2.y;
58
+ if (!minY) minY = y;
59
+ minY = Math.min(minY, y);
60
+ });
61
+ return minY - 100 + scrollTop; // 100: header height(56) + toolbar height(44)
44
62
  };
@@ -44,6 +44,30 @@ export var getNode = function getNode(editor, path) {
44
44
  export var getNodeType = function getNodeType(node) {
45
45
  return Element.isElement(node) ? node.type : '';
46
46
  };
47
+ export var getNodeById = function getNodeById(nodes, nodeId) {
48
+ var node;
49
+ for (var i = 0; i < nodes.length; i++) {
50
+ var currentNode = nodes[i];
51
+ if (currentNode.id === nodeId) {
52
+ node = currentNode;
53
+ break;
54
+ }
55
+ var childrenNodes = currentNode.children;
56
+ if (!Array.isArray(childrenNodes)) continue;
57
+ var childNode = childrenNodes.find(function (node) {
58
+ return node.id === nodeId;
59
+ });
60
+ if (childNode) {
61
+ node = childNode;
62
+ break;
63
+ }
64
+ childNode = getNodeById(childrenNodes, nodeId);
65
+ if (!childNode) continue;
66
+ node = childNode;
67
+ break;
68
+ }
69
+ return node;
70
+ };
47
71
  export var isTextNode = function isTextNode(node) {
48
72
  if (!node) return false;
49
73
  if (!ObjectUtils.hasProperty(node, 'children') && ObjectUtils.hasProperty(node, 'text')) return true;
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { Fragment, useCallback, useState } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
- import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Alert } from 'reactstrap';
4
+ import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Alert, Label } from 'reactstrap';
5
5
  import { insertLink, updateLink, checkLink } from '../../helpers';
6
6
  var AddLinkDialog = function AddLinkDialog(_ref) {
7
7
  var editor = _ref.editor,
@@ -89,9 +89,8 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
89
89
  toggle: closeDialog
90
90
  }, t('Insert_link')), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
91
91
  className: "form-group"
92
- }, /*#__PURE__*/React.createElement("label", {
93
- className: "form-check-label",
94
- htmlFor: "addLink"
92
+ }, /*#__PURE__*/React.createElement(Label, {
93
+ for: "addLink"
95
94
  }, t('Link_address')), /*#__PURE__*/React.createElement("input", {
96
95
  onKeyDown: onKeyDown,
97
96
  autoFocus: true,
@@ -105,9 +104,8 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
105
104
  className: "mt-2"
106
105
  }, t(linkErrorMessage))), /*#__PURE__*/React.createElement("div", {
107
106
  className: "form-group"
108
- }, /*#__PURE__*/React.createElement("label", {
109
- className: "form-check-label",
110
- htmlFor: "addTitle"
107
+ }, /*#__PURE__*/React.createElement(Label, {
108
+ for: "addTitle"
111
109
  }, t('Link_title')), /*#__PURE__*/React.createElement("input", {
112
110
  onKeyDown: onKeyDown,
113
111
  type: "text",
@@ -203,4 +203,12 @@ export var unWrapLinkNode = /*#__PURE__*/function () {
203
203
  return function unWrapLinkNode(_x) {
204
204
  return _ref3.apply(this, arguments);
205
205
  };
206
- }();
206
+ }();
207
+ export var isSdocFile = function isSdocFile(res, url) {
208
+ var files_info = res.data.files_info;
209
+ var fileInfo = files_info[url];
210
+ var _ref4 = fileInfo || {},
211
+ is_dir = _ref4.is_dir,
212
+ file_ext = _ref4.file_ext;
213
+ return !is_dir && file_ext === 'sdoc';
214
+ };
@@ -2,9 +2,12 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Transforms, Node, Editor, Range } from '@seafile/slate';
3
3
  import slugid from 'slugid';
4
4
  import isUrl from 'is-url';
5
- import { genLinkNode } from './helpers';
5
+ import context from '../../../../context';
6
+ import { insertSdocFileLink } from '../sdoc-link/helpers';
7
+ import { genLinkNode, isSdocFile } from './helpers';
6
8
  import { getNodeType, getSelectedNodeByType } from '../../core';
7
- import { isImage } from '../../utils';
9
+ import { isImage, isSameDomain } from '../../utils';
10
+ import { LINK } from '../../constants';
8
11
  var withLink = function withLink(editor) {
9
12
  var normalizeNode = editor.normalizeNode,
10
13
  isInline = editor.isInline,
@@ -15,14 +18,14 @@ var withLink = function withLink(editor) {
15
18
  // Rewrite isInline
16
19
  newEditor.isInline = function (elem) {
17
20
  var type = elem.type;
18
- if (type === 'link') {
21
+ if (type === LINK) {
19
22
  return true;
20
23
  }
21
24
  return isInline(elem);
22
25
  };
23
26
  newEditor.insertText = function (text) {
24
27
  var path = Editor.path(editor, editor.selection);
25
- if (Range.isCollapsed(editor.selection) && getSelectedNodeByType(editor, 'link') && Editor.isEnd(editor, editor.selection.focus, path)) {
28
+ if (Range.isCollapsed(editor.selection) && getSelectedNodeByType(editor, LINK) && Editor.isEnd(editor, editor.selection.focus, path)) {
26
29
  editor.insertFragment([{
27
30
  id: slugid.nice(),
28
31
  text: text
@@ -36,10 +39,28 @@ var withLink = function withLink(editor) {
36
39
  var text = data.getData('text/plain');
37
40
  if (isUrl(text) && !isImage(text)) {
38
41
  var link = genLinkNode(text, text);
39
- Transforms.insertNodes(newEditor, [link, {
40
- id: slugid.nice(),
41
- text: ' '
42
- }]);
42
+ Transforms.insertNodes(newEditor, link);
43
+ if (isSameDomain(text, context.getSetting('serviceUrl'))) {
44
+ context.getLinkFilesInfo([text]).then(function (res) {
45
+ if (isSdocFile(res, text)) {
46
+ var _Editor$nodes = Editor.nodes(editor, {
47
+ match: function match(n) {
48
+ return n.type === LINK;
49
+ },
50
+ universal: true
51
+ }),
52
+ _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
53
+ nodeEntry = _Editor$nodes2[0];
54
+ var fileName = res.data.files_info[text].name;
55
+ var fileUuid = res.data.files_info[text].file_uuid;
56
+ Transforms.removeNodes(editor, {
57
+ at: nodeEntry[1]
58
+ });
59
+ insertSdocFileLink(editor, fileName, fileUuid);
60
+ return;
61
+ }
62
+ });
63
+ }
43
64
  return;
44
65
  }
45
66
  insertData(data);
@@ -51,7 +72,7 @@ var withLink = function withLink(editor) {
51
72
  node = _ref2[0],
52
73
  path = _ref2[1];
53
74
  var type = getNodeType(node);
54
- if (type !== 'link') {
75
+ if (type !== LINK) {
55
76
  // If the type is not link, perform default normalizeNode
56
77
  return normalizeNode([node, path]);
57
78
  }
@@ -11,20 +11,5 @@ var RenderElement = function RenderElement(props) {
11
11
  }, /*#__PURE__*/React.createElement(CustomElement, props));
12
12
  }
13
13
  return /*#__PURE__*/React.createElement(CustomElement, props);
14
-
15
- // const { element } = props;
16
- // const editor = useSlateStatic();
17
- // const comments = editor.element_comments_map?.[element.id] || [];
18
- // return (
19
- // <div className='seafile-block-container'>
20
- // <CustomElement {...props} />
21
- // {comments.length > 0 && (
22
- // <div className='comment-count'>
23
- // <span className='comment-count__btn'>{comments.length}</span>
24
- // </div>
25
- // )}
26
- // </div>
27
- // );
28
14
  };
29
-
30
15
  export default RenderElement;
@@ -6,4 +6,7 @@ export var isImage = function isImage(url) {
6
6
  var suffix = url.split('.')[1]; // http://xx/mm/*.png
7
7
  if (!suffix) return false;
8
8
  return IMAGE_TYPES.includes(suffix.toLowerCase());
9
+ };
10
+ export var isSameDomain = function isSameDomain(currentUrl, targetUrl) {
11
+ return String(currentUrl).split('/')[2] === String(targetUrl).split('/')[2];
9
12
  };
package/dist/context.js CHANGED
@@ -236,6 +236,12 @@ var Context = /*#__PURE__*/function () {
236
236
  var docUuid = this.getSetting('docUuid');
237
237
  return this.api.asyncCopyImages(docUuid, originDocUuid, imageList);
238
238
  }
239
+ }, {
240
+ key: "getLinkFilesInfo",
241
+ value: function getLinkFilesInfo(filesUrl) {
242
+ var docUuid = this.getSetting('docUuid');
243
+ return this.api.getLinkFilesInfo(docUuid, filesUrl);
244
+ }
239
245
  }]);
240
246
  return Context;
241
247
  }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.173",
3
+ "version": "0.1.174",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -10,9 +10,10 @@
10
10
  "@seafile/slate-history": "0.86.2",
11
11
  "@seafile/slate-hyperscript": "0.81.7",
12
12
  "@seafile/slate-react": "0.92.6",
13
- "ahooks": "3.7.7",
13
+ "axios": "1.4.0",
14
14
  "classnames": "2.3.2",
15
15
  "copy-to-clipboard": "^3.3.3",
16
+ "dayjs": "1.11.2",
16
17
  "deep-copy": "1.4.2",
17
18
  "is-hotkey": "0.2.0",
18
19
  "is-url": "^1.2.4",
@@ -26,8 +27,7 @@
26
27
  "socket.io-client": "4.6.1",
27
28
  "type-of": "2.0.1",
28
29
  "url-join": "4.0.1",
29
- "url-parse": "1.5.10",
30
- "uuid": "9.0.0"
30
+ "url-parse": "1.5.10"
31
31
  },
32
32
  "scripts": {
33
33
  "clean": "rm -rf dist && mkdir dist",
@@ -57,7 +57,6 @@
57
57
  "@types/jest": "29.0.0",
58
58
  "@typescript-eslint/eslint-plugin": "^2.2.0",
59
59
  "@typescript-eslint/parser": "^2.2.0",
60
- "axios": "1.4.0",
61
60
  "babel-eslint": "10.0.3",
62
61
  "babel-jest": "26.6.3",
63
62
  "babel-loader": "8.0.6",
@@ -70,7 +69,6 @@
70
69
  "core-js": "2.6.12",
71
70
  "css-loader": "^3.2.1",
72
71
  "css-minimizer-webpack-plugin": "5.0.1",
73
- "dayjs": "1.11.2",
74
72
  "dotenv": "6.2.0",
75
73
  "dotenv-expand": "5.1.0",
76
74
  "ejs": "3.1.8",
@@ -14,6 +14,10 @@
14
14
  />
15
15
  <missing-glyph />
16
16
 
17
+ <glyph glyph-name="sdoc-add-comment" unicode="&#58939;" d="M960 896c35.2 0 64-28.8 64-64v-704c0-35.2-28.8-64-64-64h-224l-224-192-224 192H64c-35.2 0-64 28.8-64 64V832C0 867.2 28.8 896 64 896h896z m-32-96H96v-640h227.2l188.8-160 188.8 160H928V800zM288 528h448v-96H288zM464 704h96v-448h-96z" horiz-adv-x="1024" />
18
+
19
+ <glyph glyph-name="sdoc-comment-count" unicode="&#58966;" d="M1024 832v-704c0-35.2-28.8-64-64-64h-192l-256-192-224 192H64c-35.2 0-64 28.8-64 64V832C0 867.2 28.8 896 64 896h896c35.2 0 64-28.8 64-64z" horiz-adv-x="1024" />
20
+
17
21
  <glyph glyph-name="sdoc-link-file" unicode="&#58964;" d="M889.6-96H134.4c-22.4 0-38.4 16-38.4 38.4V825.6C96 848 112 864 134.4 864h480c22.4 0 54.4-6.4 80-35.2 44.8-51.2 188.8-208 195.2-214.4 3.2-3.2 38.4-38.4 38.4-73.6v-598.4c0-9.6-3.2-19.2-9.6-25.6-6.4-9.6-16-12.8-28.8-12.8zM192 0h640V544h-224V768H192v-768z" horiz-adv-x="1024" />
18
22
 
19
23
  <glyph glyph-name="sdoc-sm-close" unicode="&#58965;" d="M512 439.466667L230.4 721.066667l-25.6 25.6-55.466667-55.466667 25.6-25.6 281.6-281.6-281.6-281.6-25.6-25.6 55.466667-55.466667 25.6 25.6 281.6 281.6 281.6-281.6 25.6-25.6 55.466667 55.466667-25.6 25.6-281.6 281.6 281.6 281.6 25.6 25.6-55.466667 55.466667-25.6-25.6z" horiz-adv-x="1024" />
@@ -156,8 +160,6 @@
156
160
 
157
161
  <glyph glyph-name="sdoc-unstarred" unicode="&#58942;" d="M816 368c-60.8-60.8-86.4-150.4-73.6-236.8L768-32l-137.6 76.8c-35.2 19.2-76.8 32-118.4 32s-83.2-9.6-118.4-32L256-32l25.6 163.2c12.8 86.4-12.8 176-73.6 236.8L96 483.2l153.6 22.4c83.2 12.8 153.6 67.2 192 147.2L512 800l70.4-147.2c38.4-80 108.8-134.4 192-147.2l153.6-22.4-112-115.2z m179.2 44.8c54.4 54.4 25.6 153.6-51.2 163.2l-192 28.8c-28.8 3.2-57.6 25.6-70.4 54.4l-86.4 182.4C579.2 876.8 544 896 512 896s-67.2-19.2-83.2-54.4l-86.4-182.4c-12.8-28.8-38.4-48-70.4-51.2l-192-28.8C3.2 566.4-25.6 470.4 28.8 416l140.8-140.8c22.4-22.4 32-54.4 25.6-86.4l-32-201.6c-9.6-64 38.4-112 92.8-112 12.8 0 28.8 3.2 41.6 12.8l172.8 96c12.8 6.4 28.8 9.6 41.6 9.6 16 0 28.8-3.2 41.6-9.6l172.8-96c12.8-6.4 28.8-12.8 41.6-12.8 54.4 0 102.4 51.2 92.8 112l-32 201.6c-6.4 32 3.2 64 25.6 86.4l140.8 137.6z" horiz-adv-x="1024" />
158
162
 
159
- <glyph glyph-name="sdoc-comment" unicode="&#58939;" d="M886.4 800C928 800 960 768 960 726.4v-537.6c0-41.6-32-73.6-73.6-73.6h-192l-156.8-140.8c-12.8-12.8-35.2-12.8-48 0l-156.8 140.8h-192c-41.6 0-73.6 32-73.6 73.6V726.4C64 768 96 800 137.6 800h748.8z m0-73.6H137.6v-537.6h220.8l153.6-137.6 153.6 137.6h220.8V726.4zM665.6 480c19.2 0 38.4-16 38.4-38.4 0-19.2-16-35.2-38.4-38.4h-310.4c-19.2 0-38.4 16-38.4 38.4 0 19.2 16 35.2 38.4 38.4h310.4z m-115.2-192c0-19.2-16-38.4-38.4-38.4-19.2 0-35.2 16-38.4 38.4V598.4c0 19.2 16 38.4 38.4 38.4 19.2 0 35.2-16 38.4-38.4V288z" horiz-adv-x="1024" />
160
-
161
163
  <glyph glyph-name="sdoc-cancel" unicode="&#58929;" d="M512 441.6L214.4 742.4 185.6 768 128 710.4l25.6-28.8 300.8-297.6-300.8-297.6-25.6-28.8L185.6 0l28.8 25.6 297.6 300.8 297.6-300.8 28.8-25.6 57.6 57.6-25.6 28.8-300.8 297.6 300.8 297.6 25.6 28.8L838.4 768l-28.8-25.6-297.6-300.8z" horiz-adv-x="1024" />
162
164
 
163
165
  <glyph glyph-name="sdoc-fullscreen" unicode="&#58933;" d="M390.4 832c19.2 0 41.6-16 41.6-41.6s-16-41.6-41.6-41.6H147.2v-243.2c0-19.2-16-41.6-41.6-41.6S64 483.2 64 505.6V790.4C64 816 80 832 105.6 832h284.8z m0-812.8c19.2 0 41.6-16 41.6-41.6s-19.2-41.6-41.6-41.6H99.2c-6.4 0-16 3.2-22.4 9.6-9.6 6.4-12.8 16-12.8 25.6v288c0 19.2 16 41.6 41.6 41.6s41.6-16 41.6-41.6v-185.6l204.8 204.8c16 16 41.6 16 57.6 0s16-41.6 0-57.6l-204.8-204.8 185.6 3.2zM960 793.6c0-3.2 0-3.2 0 0v-284.8c0-19.2-16-41.6-41.6-41.6s-41.6 16-41.6 41.6V694.4L672 489.6c-16-16-41.6-16-57.6 0s-16 41.6 0 57.6l208 198.4h-185.6c-19.2 0-41.6 16-41.6 41.6S611.2 832 633.6 832H928c16-3.2 28.8-12.8 32-32v-6.4z m0-534.4v-281.6c0-19.2-16-41.6-41.6-41.6h-284.8c-19.2 0-41.6 16-41.6 41.6s16 41.6 41.6 41.6h243.2v240c0 25.6 19.2 41.6 41.6 41.6 22.4 0 41.6-16 41.6-41.6z" horiz-adv-x="1024" />
@@ -1,11 +1,11 @@
1
1
  @font-face {
2
2
  font-family: "sdocfont"; /* Project id 4097705 */
3
- src: url('./sdoc-editor-font/iconfont.eot?t=1695017062235'); /* IE9 */
4
- src: url('./sdoc-editor-font/iconfont.eot?t=1695017062235#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
- url('./sdoc-editor-font/iconfont.woff2?t=1695017062235') format('woff2'),
6
- url('./sdoc-editor-font/iconfont.woff?t=1695017062235') format('woff'),
7
- url('./sdoc-editor-font/iconfont.ttf?t=1695017062235') format('truetype'),
8
- url('./sdoc-editor-font/iconfont.svg?t=1695017062235#sdocfont') format('svg');
3
+ src: url('./sdoc-editor-font/iconfont.eot?t=1696755823394'); /* IE9 */
4
+ src: url('./sdoc-editor-font/iconfont.eot?t=1696755823394#iefix') format('embedded-opentype'), /* IE6-IE8 */
5
+ url('./sdoc-editor-font/iconfont.woff2?t=1696755823394') format('woff2'),
6
+ url('./sdoc-editor-font/iconfont.woff?t=1696755823394') format('woff'),
7
+ url('./sdoc-editor-font/iconfont.ttf?t=1696755823394') format('truetype'),
8
+ url('./sdoc-editor-font/iconfont.svg?t=1696755823394#sdocfont') format('svg');
9
9
  }
10
10
 
11
11
  .sdocfont {
@@ -16,6 +16,14 @@
16
16
  -moz-osx-font-smoothing: grayscale;
17
17
  }
18
18
 
19
+ .sdoc-add-comment:before {
20
+ content: "\e63b";
21
+ }
22
+
23
+ .sdoc-comment-count:before {
24
+ content: "\e656";
25
+ }
26
+
19
27
  .sdoc-link-file:before {
20
28
  content: "\e654";
21
29
  }
@@ -300,10 +308,6 @@
300
308
  content: "\e63e";
301
309
  }
302
310
 
303
- .sdoc-comment:before {
304
- content: "\e63b";
305
- }
306
-
307
311
  .sdoc-cancel:before {
308
312
  content: "\e631";
309
313
  }