@seafile/sdoc-editor 0.5.6 → 0.5.8

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.
Files changed (31) hide show
  1. package/dist/basic-sdk/assets/css/layout.css +1 -1
  2. package/dist/basic-sdk/assets/css/sdoc-comment-editor-plugin.css +7 -0
  3. package/dist/basic-sdk/comment/components/comment-editor.js +1 -0
  4. package/dist/basic-sdk/comment/components/comment-list.css +7 -2
  5. package/dist/basic-sdk/editor/comment-article.js +8 -3
  6. package/dist/basic-sdk/editor/sdoc-comment-editor.js +3 -1
  7. package/dist/basic-sdk/extension/core/utils/index.js +3 -2
  8. package/dist/basic-sdk/extension/plugins/paragraph/index.css +4 -0
  9. package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +11 -5
  10. package/dist/basic-sdk/extension/plugins/table/constants/index.js +2 -1
  11. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/column-vertical-alignment-menu.js +46 -0
  12. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +4 -0
  13. package/dist/basic-sdk/extension/plugins/table/render/index.css +7 -1
  14. package/dist/basic-sdk/extension/render/render-comment-editor-element.js +83 -0
  15. package/dist/basic-sdk/layout/editor-container.js +1 -0
  16. package/dist/basic-sdk/utils/Kebab-to-camel.js +4 -0
  17. package/package.json +1 -1
  18. package/public/locales/cs/sdoc-editor.json +4 -1
  19. package/public/locales/de/sdoc-editor.json +4 -1
  20. package/public/locales/en/sdoc-editor.json +4 -1
  21. package/public/locales/es/sdoc-editor.json +4 -1
  22. package/public/locales/fr/sdoc-editor.json +4 -1
  23. package/public/locales/it/sdoc-editor.json +4 -1
  24. package/public/locales/ru/sdoc-editor.json +5 -2
  25. package/public/locales/zh_CN/sdoc-editor.json +4 -1
  26. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  27. package/public/media/sdoc-editor-font/iconfont.svg +10 -2
  28. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  29. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  30. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  31. package/public/media/sdoc-editor-font.css +20 -4
@@ -119,7 +119,7 @@
119
119
  display: flex;
120
120
  flex: 1;
121
121
  position: relative;
122
- height: 44px;
122
+ height: 32px;
123
123
  align-items: center;
124
124
  user-select: none;
125
125
  position: relative;
@@ -0,0 +1,7 @@
1
+ .sdoc-comment-editor-wrapper .sdoc-comment-editor .list-container {
2
+ padding-left: 1em !important;
3
+ }
4
+
5
+ .sdoc-comment-editor .list-container li p {
6
+ margin: 0 !important;
7
+ }
@@ -117,6 +117,7 @@ const CommentEditor = _ref => {
117
117
  className: "comment-editor-user-name"
118
118
  }, userInfo.name)), /*#__PURE__*/React.createElement(SdocCommentEditor, {
119
119
  editor: editor,
120
+ type: type,
120
121
  document: document
121
122
  }), /*#__PURE__*/React.createElement("div", {
122
123
  className: "comment-operations"
@@ -85,6 +85,11 @@
85
85
  word-wrap: break-word;
86
86
  }
87
87
 
88
+ .comment-item .comment-content ol,
89
+ .comment-item .comment-content ul {
90
+ padding-left: 1em;
91
+ }
92
+
88
93
  .sdoc-comment-list-container .comment-header .comment-author__avatar {
89
94
  display: flex;
90
95
  align-items: center;
@@ -212,8 +217,8 @@
212
217
  .comment-editor-wrapper .sdoc-comment-editor-wrapper .article.sdoc-comment-editor {
213
218
  width: 365px;
214
219
  padding: 0 5px;
215
- min-height: 75px;
216
- max-height: 80px;
220
+ min-height: 130px;
221
+ max-height: 130px;
217
222
  box-shadow: none;
218
223
  overflow-y: auto;
219
224
  overflow-x: hidden;
@@ -1,7 +1,8 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
2
  import React, { useCallback, useMemo } from 'react';
2
3
  import { Editable, ReactEditor, Slate } from '@seafile/slate-react';
3
4
  import { Editor, Node, Range } from '@seafile/slate';
4
- import { renderLeaf, renderElement } from '../extension';
5
+ import { renderLeaf } from '../extension';
5
6
  import { getAboveBlockNode, getNextNode, getPrevNode, isSelectionAtBlockEnd, isSelectionAtBlockStart } from '../extension/core';
6
7
  import EventProxy from '../utils/event-handler';
7
8
  import { useCursors } from '../cursor/use-cursors';
@@ -11,11 +12,13 @@ import { getCursorPosition, getDomHeight, getDomMarginTop } from '../utils/dom-u
11
12
  import EventBus from '../utils/event-bus';
12
13
  import { useScrollContext } from '../hooks/use-scroll-context';
13
14
  import { IMAGE } from '../extension/constants';
15
+ import RenderCommentEditorCustomRenderElement from '../extension/render/render-comment-editor-element';
14
16
  const CommentArticle = _ref => {
15
17
  let {
16
18
  editor,
17
19
  slateValue,
18
- updateSlateValue
20
+ updateSlateValue,
21
+ type
19
22
  } = _ref;
20
23
  const {
21
24
  cursors
@@ -160,7 +163,9 @@ const CommentArticle = _ref => {
160
163
  }, /*#__PURE__*/React.createElement(Editable, {
161
164
  scrollSelectionIntoView: handleScrollIntoView,
162
165
  cursors: cursors,
163
- renderElement: renderElement,
166
+ renderElement: props => RenderCommentEditorCustomRenderElement(_objectSpread(_objectSpread({}, props), {}, {
167
+ commentType: type
168
+ })),
164
169
  renderLeaf: renderLeaf,
165
170
  onKeyDown: onKeyDown,
166
171
  onMouseDown: onMouseDown,
@@ -19,7 +19,8 @@ const SdocCommentEditor = forwardRef((_ref, ref) => {
19
19
  let {
20
20
  editor: propsEditor,
21
21
  document,
22
- isReloading
22
+ isReloading,
23
+ type
23
24
  } = _ref;
24
25
  const [slateValue, setSlateValue] = useState(document.children);
25
26
  const validEditor = propsEditor || useMemo(() => {
@@ -98,6 +99,7 @@ const SdocCommentEditor = forwardRef((_ref, ref) => {
98
99
  }, /*#__PURE__*/React.createElement("div", {
99
100
  className: "article sdoc-comment-editor"
100
101
  }, /*#__PURE__*/React.createElement(CommentArticle, {
102
+ type: type,
101
103
  editor: validEditor,
102
104
  slateValue: slateValue,
103
105
  updateSlateValue: setSlateValue
@@ -41,7 +41,8 @@ export const generateEmptyElement = function (type) {
41
41
  };
42
42
  export function Placeholder(props) {
43
43
  const {
44
- title
44
+ title,
45
+ top = 5
45
46
  } = props;
46
47
  const {
47
48
  t
@@ -49,7 +50,7 @@ export function Placeholder(props) {
49
50
  return /*#__PURE__*/React.createElement("span", {
50
51
  style: {
51
52
  position: 'absolute',
52
- top: '5px',
53
+ top: "".concat(top, "px"),
53
54
  color: 'rgba(191,191,191,1)',
54
55
  pointerEvents: 'none',
55
56
  width: '100%',
@@ -0,0 +1,4 @@
1
+ .sdoc-comment-editor-paragraph {
2
+ margin: 0.8em 0 !important;
3
+ padding: 0 !important;
4
+ }
@@ -4,19 +4,23 @@ import { Node } from '@seafile/slate';
4
4
  import { useSlateStatic } from '@seafile/slate-react';
5
5
  import { Placeholder } from '../../core';
6
6
  import { isEmptyNode } from './helper';
7
+ import { COMMENT_EDITOR } from '../../../constants';
8
+ import './index.css';
7
9
  const PLACEHOLDER = 'Please_enter_text';
8
10
  const Paragraph = _ref => {
9
11
  let {
10
12
  isComposing,
11
13
  element,
12
14
  attributes,
13
- children
15
+ children,
16
+ className,
17
+ placeholder = PLACEHOLDER
14
18
  } = _ref;
15
19
  const {
16
- indent,
17
- placeholder = PLACEHOLDER
20
+ indent
18
21
  } = element;
19
22
  const editor = useSlateStatic();
23
+ const isCommentEditor = editor.editorType === COMMENT_EDITOR;
20
24
  let isShowPlaceHolder = false;
21
25
  if (editor.children.length === 1) {
22
26
  const node = editor.children[0];
@@ -37,9 +41,11 @@ const Paragraph = _ref => {
37
41
  }, attributes, {
38
42
  style: _objectSpread({
39
43
  position: isShowPlaceHolder ? 'relative' : ''
40
- }, style)
44
+ }, style),
45
+ className: className
41
46
  }), children, isShowPlaceHolder && /*#__PURE__*/React.createElement(Placeholder, {
42
- title: placeholder
47
+ title: placeholder,
48
+ top: isCommentEditor ? 0 : 5
43
49
  }));
44
50
  };
45
51
  export const renderParagraph = props => {
@@ -26,7 +26,8 @@ export const TABLE_ELEMENT_POSITION = {
26
26
  export const SELECTED_TABLE_CELL_BACKGROUND_COLOR = '#dee8fe';
27
27
  export const TABLE_CELL_STYLE = {
28
28
  TEXT_ALIGN: 'text_align',
29
- BACKGROUND_COLOR: 'background_color'
29
+ BACKGROUND_COLOR: 'background_color',
30
+ ALIGN_ITEMS: 'align_items'
30
31
  };
31
32
  export const TABLE_ROW_STYLE = {
32
33
  MIN_HEIGHT: 'min_height'
@@ -0,0 +1,46 @@
1
+ import React, { useCallback, useRef } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import CommonMenu from './common-menu';
4
+ import { setCellStyle } from '../../helpers';
5
+ import { TABLE_CELL_STYLE } from '../../constants';
6
+ import KebabToCamel from '../../../../../utils/Kebab-to-camel';
7
+ const ColumnVerticalAlignmentMenu = _ref => {
8
+ let {
9
+ editor,
10
+ readonly
11
+ } = _ref;
12
+ const textAlignRef = useRef(null);
13
+ const {
14
+ t
15
+ } = useTranslation();
16
+ const setVerticalAlignStyle = useCallback(position => {
17
+ if (readonly) return;
18
+ const alignItems = KebabToCamel(TABLE_CELL_STYLE.ALIGN_ITEMS);
19
+ setCellStyle(editor, {
20
+ [alignItems]: position
21
+ });
22
+ textAlignRef.current && textAlignRef.current.hidePopover();
23
+ }, [editor, readonly]);
24
+ return /*#__PURE__*/React.createElement(CommonMenu, {
25
+ id: "vertical-align",
26
+ iconClass: "sdocfont sdoc-top-alignment",
27
+ ref: textAlignRef,
28
+ disabled: readonly
29
+ }, /*#__PURE__*/React.createElement("div", {
30
+ className: "sdoc-dropdown-menu-item",
31
+ onClick: () => setVerticalAlignStyle('flex-start')
32
+ }, /*#__PURE__*/React.createElement("i", {
33
+ className: "sdocfont sdoc-top-alignment mr-2"
34
+ }), t('Top_align')), /*#__PURE__*/React.createElement("div", {
35
+ className: "sdoc-dropdown-menu-item",
36
+ onClick: () => setVerticalAlignStyle('center')
37
+ }, /*#__PURE__*/React.createElement("i", {
38
+ className: "sdocfont sdoc-center-alignment mr-2"
39
+ }), t('Center_align')), /*#__PURE__*/React.createElement("div", {
40
+ className: "sdoc-dropdown-menu-item",
41
+ onClick: () => setVerticalAlignStyle('flex-end')
42
+ }, /*#__PURE__*/React.createElement("i", {
43
+ className: "sdocfont sdoc-bottom-alignment mr-2"
44
+ }), t('Bottom_align')));
45
+ };
46
+ export default ColumnVerticalAlignmentMenu;
@@ -8,6 +8,7 @@ import CombineCells from './combine-cells';
8
8
  import RemoveTable from './remove-table-menu';
9
9
  import TableColumnMenu from './table-column-menu';
10
10
  import TableRowMenu from './table-row-menu';
11
+ import ColumnVerticalAlignmentMenu from './column-vertical-alignment-menu';
11
12
  import './index.css';
12
13
  const ActiveTableMenu = _ref => {
13
14
  let {
@@ -22,6 +23,9 @@ const ActiveTableMenu = _ref => {
22
23
  }, /*#__PURE__*/React.createElement(CellTextAlignMenu, {
23
24
  editor: editor,
24
25
  readonly: readonly
26
+ }), /*#__PURE__*/React.createElement(ColumnVerticalAlignmentMenu, {
27
+ editor: editor,
28
+ readonly: readonly
25
29
  }), /*#__PURE__*/React.createElement(TableColumnMenu, {
26
30
  editor: editor,
27
31
  readonly: readonly
@@ -50,11 +50,17 @@
50
50
  }
51
51
 
52
52
  .sdoc-table-wrapper .table-cell {
53
+ display: flex;
53
54
  padding: 10px 10px;
54
55
  border-right: 1px solid #ccc;
55
56
  border-bottom: 1px solid #ccc;
56
57
  line-height: 1.5;
57
- vertical-align: top;
58
+ align-items: flex-start;
59
+
60
+ }
61
+
62
+ .table-cell>span {
63
+ min-width: 1px;
58
64
  }
59
65
 
60
66
  .sdoc-table-wrapper .cell-selected {
@@ -0,0 +1,83 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import { useReadOnly, useSlateStatic } from '@seafile/slate-react';
3
+ import { LINK, LIST_ITEM, ORDERED_LIST, PARAGRAPH, UNORDERED_LIST, IMAGE, IMAGE_BLOCK, MENTION, MENTION_TEMP } from '../constants';
4
+ import { LinkPlugin, ListPlugin, ImagePlugin, ParagraphPlugin, MentionPlugin } from '../plugins';
5
+ import { getParentNode } from '../core';
6
+ const RenderCommentEditorCustomRenderElement = props => {
7
+ const editor = useSlateStatic();
8
+ const readonly = useReadOnly();
9
+ const {
10
+ element,
11
+ commentType
12
+ } = props;
13
+ switch (element.type) {
14
+ case PARAGRAPH:
15
+ {
16
+ const parentNode = getParentNode(editor.children, element.id);
17
+ const _props = _objectSpread(_objectSpread({}, props), {}, {
18
+ className: 'sdoc-comment-editor-paragraph'
19
+ });
20
+ if (parentNode && parentNode.type === LIST_ITEM) {
21
+ const [renderParagraph] = ParagraphPlugin.renderElements;
22
+ return renderParagraph(_props);
23
+ }
24
+ const placeholder = commentType === 'comment' ? 'Enter_a_comment' : 'Enter_a_reply';
25
+ const [renderParagraph] = ParagraphPlugin.renderElements;
26
+ return renderParagraph(_objectSpread(_objectSpread({}, _props), {}, {
27
+ placeholder
28
+ }));
29
+ }
30
+ case LINK:
31
+ {
32
+ const [renderLink] = LinkPlugin.renderElements;
33
+ return renderLink(props, editor, readonly);
34
+ }
35
+ case ORDERED_LIST:
36
+ case UNORDERED_LIST:
37
+ {
38
+ const [renderList] = ListPlugin.renderElements;
39
+ return renderList(props, editor);
40
+ }
41
+ case LIST_ITEM:
42
+ {
43
+ const [, renderListItem] = ListPlugin.renderElements;
44
+ return renderListItem(props, editor);
45
+ }
46
+ case IMAGE:
47
+ {
48
+ var _editor$element_comme;
49
+ const parentNode = getParentNode(editor.children, element.id);
50
+ const comments = ((_editor$element_comme = editor.element_comments_map) === null || _editor$element_comme === void 0 ? void 0 : _editor$element_comme[parentNode.id]) || [];
51
+ const unresolvedComments = comments && comments.filter(item => !item.resolved);
52
+ let leaf = {};
53
+ if (unresolvedComments && unresolvedComments.length > 0) {
54
+ leaf['computed_background_color'] = 'rgba(129, 237, 247, 0.5)';
55
+ }
56
+ const [renderImage] = ImagePlugin.renderElements;
57
+ return renderImage(_objectSpread(_objectSpread({}, props), {}, {
58
+ leaf
59
+ }), editor);
60
+ }
61
+ case IMAGE_BLOCK:
62
+ {
63
+ const [, renderImageBlock] = ImagePlugin.renderElements;
64
+ return renderImageBlock(_objectSpread({}, props), editor);
65
+ }
66
+ case MENTION:
67
+ {
68
+ const [renderMention] = MentionPlugin.renderElements;
69
+ return renderMention(props, editor);
70
+ }
71
+ case MENTION_TEMP:
72
+ {
73
+ const [, renderMentionTemporaryInput] = MentionPlugin.renderElements;
74
+ return renderMentionTemporaryInput(props, editor);
75
+ }
76
+ default:
77
+ {
78
+ const [renderParagraph] = ParagraphPlugin.renderElements;
79
+ return renderParagraph(props);
80
+ }
81
+ }
82
+ };
83
+ export default RenderCommentEditorCustomRenderElement;
@@ -4,6 +4,7 @@ import { isMobile } from '../../utils';
4
4
  import '../assets/css/default.css';
5
5
  import '../assets/css/layout.css';
6
6
  import '../assets/css/sdoc-editor-plugins.css';
7
+ import '../assets/css/sdoc-comment-editor-plugin.css';
7
8
  import '../assets/css/dropdown-menu.css';
8
9
  const EditorContainer = _ref => {
9
10
  let {
@@ -0,0 +1,4 @@
1
+ const KebabToCamel = str => {
2
+ return str.replace(/(_[a-z])/g, match => "".concat(match.slice(1).toUpperCase()));
3
+ };
4
+ export default KebabToCamel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.5.6",
3
+ "version": "0.5.8",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Vytvořit"
448
+ "Create": "Vytvořit",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Erstellen"
448
+ "Create": "Erstellen",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Create"
448
+ "Create": "Create",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Crear"
448
+ "Create": "Crear",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Créer"
448
+ "Create": "Créer",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Recent visited",
446
446
  "The_document_does_not_exist": "The document does not exist",
447
447
  "Create_a_new_sdoc_file": "Create a new sdoc file",
448
- "Create": "Crea"
448
+ "Create": "Crea",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -418,7 +418,7 @@
418
418
  "Freezed": "Заморожено",
419
419
  "Callout": "Выноска",
420
420
  "The_current_location_does_not_support_pasting": "Текущее местоположение не поддерживает вставку ",
421
- "Please_enter": "Please enter",
421
+ "Please_enter": "Пожалуйста, введите",
422
422
  "Combine_cell": "Объединить ячейки",
423
423
  "Split_cell": "Разделить ячейку",
424
424
  "Row_number": "Номер строки",
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "Недавно посещенные",
446
446
  "The_document_does_not_exist": "Документ не существует",
447
447
  "Create_a_new_sdoc_file": "Создать новый файл sdoc",
448
- "Create": "Создать"
448
+ "Create": "Создать",
449
+ "Top_align": "Top",
450
+ "Center_align": "Middle",
451
+ "Bottom_align": "Bottom"
449
452
  }
@@ -445,5 +445,8 @@
445
445
  "Recent_visited": "最近浏览",
446
446
  "The_document_does_not_exist": "不存在该文档",
447
447
  "Create_a_new_sdoc_file": "新建 sdoc 文件",
448
- "Create": "创建"
448
+ "Create": "创建",
449
+ "Top_align": "顶端对齐",
450
+ "Center_align": "剧中对齐",
451
+ "Bottom_align": "底端对齐"
449
452
  }
@@ -14,6 +14,16 @@
14
14
  />
15
15
  <missing-glyph />
16
16
 
17
+ <glyph glyph-name="sdoc-center-alignment" unicode="&#58984;" d="M560 896v-160H832v-320h-272v-96H928v-320H560v-128h-96v128H96V320h368v96H192V736h272V896h96zM832 224H192v-128h640v128zM736 640H288v-128h448V640z" horiz-adv-x="1024" />
18
+
19
+ <glyph glyph-name="sdoc-bottom-alignment" unicode="&#58985;" d="M0-64v96h1024v-96H0z m448 192V832H128v-704h320z m-96 96H224V736h128v-512z m544-96V640H576v-512h320z m-96 96h-128V544h128v-320z" horiz-adv-x="1024" />
20
+
21
+ <glyph glyph-name="sdoc-top-alignment" unicode="&#58986;" d="M0 832v-96h1024V832H0z m448-192v-704H128V640h320z m-96-96H224v-512h128V544z m544 96v-512H576V640h320z m-96-96h-128v-320h128V544z" horiz-adv-x="1024" />
22
+
23
+ <glyph glyph-name="sdoc-all-read" unicode="&#58973;" d="M883.2 768h121.6c9.6 0 19.2-9.6 19.2-19.2v-60.8c0-6.4-9.6-16-19.2-16h-121.6c-9.6 0-19.2 9.6-19.2 19.2V748.8c0 9.6 9.6 19.2 19.2 19.2z m-284.8-704h406.4c12.8 0 22.4-9.6 22.4-19.2v-60.8c0-9.6-9.6-19.2-22.4-19.2H598.4c-12.8 0-22.4 9.6-22.4 19.2v60.8c0 9.6 9.6 19.2 22.4 19.2z m403.2 352c12.8 0 22.4-9.6 22.4-19.2v-60.8c0-9.6-9.6-19.2-22.4-19.2h-246.4c-12.8 0-22.4 9.6-22.4 19.2v60.8c0 9.6 9.6 19.2 22.4 19.2h246.4zM761.6 860.8c-3.2 3.2-9.6 3.2-12.8 3.2-6.4 0-9.6-3.2-12.8-9.6L304 70.4 67.2 256c-9.6 6.4-22.4 3.2-28.8-6.4L0 188.8c-3.2-9.6 0-22.4 9.6-28.8l336-256L819.2 803.2c6.4 9.6 3.2 22.4-6.4 28.8l-51.2 28.8z" horiz-adv-x="1027" />
24
+
25
+ <glyph glyph-name="sdoc-freezed" unicode="&#58983;" d="M512 384m-512 0a512 512 0 1 1 1024 0 512 512 0 1 1-1024 0ZM316.8 716.8c118.4 70.4 265.6 70.4 384 3.2s192-195.2 192-332.8c0-137.6-73.6-265.6-195.2-332.8-182.4-105.6-416-41.6-521.6 140.8S134.4 608 316.8 716.8z m348.8-604.8c137.6 80 195.2 249.6 131.2 396.8L259.2 195.20000000000005c92.8-124.8 268.8-163.2 406.4-83.2zM352 652.8c-137.6-80-192-249.6-128-393.6l537.6 310.4c-96 128-272 163.2-409.6 83.2z" horiz-adv-x="1024" />
26
+
17
27
  <glyph glyph-name="sdoc-callout-color" unicode="&#58982;" d="M819.2 777.6c147.2-121.6 195.2-291.2 195.2-300.8v-3.2c22.4-118.4 3.2-208-51.2-262.4-86.4-83.2-227.2-57.6-249.6-54.4-25.6 3.2-44.8-6.4-60.8-22.4-16-19.2-19.2-44.8-12.8-60.8 12.8-44.8 16-76.8 6.4-102.4-28.8-67.2-89.6-99.2-182.4-99.2-22.4 0-44.8 3.2-67.2 6.4h-6.4C217.6-96 96 76.8 92.8 86.4-76.8 348.8 9.6 611.2 166.4 758.4c160 147.2 422.4 208 652.8 19.2zM230.4 688c-118.4-112-198.4-352-54.4-544C224 80 288 32 352 0s144-32 176 0 16 64 16 112 16 80 48 112 99.2 38.4 144 32 99.2-28.8 160 32c38.4 38.4 41.6 80 25.6 169.6-3.2 12.8-44.8 150.4-163.2 246.4-185.6 153.6-396.8 102.4-528-16z m-9.6-259.2c35.2 0 60.8-28.8 60.8-64s-28.8-64-60.8-64-60.8 28.8-60.8 64 25.6 64 60.8 64z m563.2 73.6c35.2 0 60.8-28.8 60.8-64s-28.8-64-60.8-64c-35.2 0-60.8 28.8-60.8 64s25.6 64 60.8 64zM291.2 614.4c35.2 0 60.8-28.8 60.8-64 0-22.4-12.8-41.6-32-54.4-19.2-12.8-41.6-12.8-60.8 0-19.2 12.8-32 32-32 54.4 3.2 38.4 32 64 64 64z m390.4 54.4c35.2 0 60.8-28.8 60.8-64s-28.8-64-60.8-64-60.8 28.8-60.8 64 25.6 64 60.8 64z m-204.8 51.2c35.2 0 60.8-28.8 60.8-64s-28.8-64-60.8-64-60.8 32-60.8 67.2 25.6 60.8 60.8 60.8z" horiz-adv-x="1024" />
18
28
 
19
29
  <glyph glyph-name="sdoc-callout-icon" unicode="&#58981;" d="M512-32c230.4 0 416 185.6 416 416S742.4 800 512 800 96 614.4 96 384s185.6-416 416-416z m0-96C230.4-128 0 102.4 0 384S230.4 896 512 896s512-230.4 512-512-230.4-512-512-512z m-160 528c44.8 0 80 35.2 80 80s-35.2 80-80 80-80-35.2-80-80 35.2-80 80-80z m320 0c44.8 0 80 35.2 80 80s-35.2 80-80 80-80-35.2-80-80 35.2-80 80-80z m-160-246.4c-80 0-153.6 51.2-188.8 128 0 0-3.2 32-38.4 32-35.2 0-32-32-32-32 35.2-108.8 137.6-192 256-192s227.2 83.2 256 192c0 0 0 32-32 32s-35.2-32-35.2-32c-25.6-73.6-102.4-128-185.6-128z" horiz-adv-x="1024" />
@@ -34,8 +44,6 @@
34
44
 
35
45
  <glyph glyph-name="sdoc-find-replace" unicode="&#58975;" d="M468.66016 896C260.66016 896 81.46016 761.6 20.66016 566.4s16-409.6 185.6-521.6 396.8-102.4 553.6 25.6l185.6-185.6c19.2-16 48-16 64 0 19.2 19.2 19.2 48 0 64l-185.6 185.6c115.2 140.8 137.6 332.8 60.8 492.8S647.86016 896 468.66016 896zM97.46016 432C97.46016 636.8 260.66016 800 465.46016 800S833.46016 636.8 833.46016 432 670.26016 64 465.46016 64 97.46016 227.2 97.46016 432z" horiz-adv-x="1025" />
36
46
 
37
- <glyph glyph-name="sdoc-freezed" unicode="&#58973;" d="M512 384m-512 0a512 512 0 1 1 1024 0 512 512 0 1 1-1024 0ZM316.8 716.8c118.4 70.4 265.6 70.4 384 3.2s192-195.2 192-332.8c0-137.6-73.6-265.6-195.2-332.8-182.4-105.6-416-41.6-521.6 140.8S134.4 608 316.8 716.8z m348.8-604.8c137.6 80 195.2 249.6 131.2 396.8L259.2 195.2c92.8-124.8 268.8-163.2 406.4-83.2zM352 652.8c-137.6-80-192-249.6-128-393.6l537.6 310.4c-96 128-272 163.2-409.6 83.2z" horiz-adv-x="1024" />
38
-
39
47
  <glyph glyph-name="sdoc-jump-to" unicode="&#58970;" d="M361.6 896c32 0 54.4-16 54.4-48S393.6 800 361.6 800H96v-832h832v262.4c0 32 16 57.6 48 57.6s48-25.6 48-57.6v-300.8c0-32-28.8-57.6-60.8-57.6H60.8c-32 0-60.8 25.6-60.8 57.6V835.2C0 870.4 25.6 896 60.8 896h300.8zM992 896c19.2 0 32-12.8 32-32v-332.8c0-28.8-19.2-51.2-48-51.2s-48 22.4-48 51.2V729.6L531.2 336c-6.4-9.6-19.2-16-35.2-16-12.8 0-25.6 6.4-35.2 16-19.2 19.2-19.2 51.2 0 70.4L857.6 800h-198.4c-28.8 0-51.2 19.2-51.2 48S630.4 896 656 896H992z" horiz-adv-x="1024" />
40
48
 
41
49
  <glyph glyph-name="sdoc-callout" unicode="&#58972;" d="M992 352H32c-19.2 0-32 12.8-32 32V832c0 19.2 12.8 32 32 32h960c19.2 0 32-12.8 32-32v-448c0-19.2-12.8-32-32-32zM96 448h832V768H96v-320z m-96-224v-96h1024v96H0z m0-224v-96h576v96H0z" horiz-adv-x="1024" />
@@ -16,6 +16,26 @@
16
16
  -moz-osx-font-smoothing: grayscale;
17
17
  }
18
18
 
19
+ .sdoc-center-alignment:before {
20
+ content: "\e668";
21
+ }
22
+
23
+ .sdoc-bottom-alignment:before {
24
+ content: "\e669";
25
+ }
26
+
27
+ .sdoc-top-alignment:before {
28
+ content: "\e66a";
29
+ }
30
+
31
+ .sdoc-all-read:before {
32
+ content: "\e65d";
33
+ }
34
+
35
+ .sdoc-freezed:before {
36
+ content: "\e667";
37
+ }
38
+
19
39
  .sdoc-callout-color:before {
20
40
  content: "\e666";
21
41
  }
@@ -56,10 +76,6 @@
56
76
  content: "\e65f";
57
77
  }
58
78
 
59
- .sdoc-freezed:before {
60
- content: "\e65d";
61
- }
62
-
63
79
  .sdoc-jump-to:before {
64
80
  content: "\e65a";
65
81
  }