@seafile/sdoc-editor 0.1.125 → 0.1.127

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 (44) hide show
  1. package/dist/basic-sdk/comment/comment/editor-comment.js +11 -2
  2. package/dist/basic-sdk/comment/comment/style.css +1 -0
  3. package/dist/basic-sdk/constants/index.js +2 -1
  4. package/dist/basic-sdk/editor.js +2 -1
  5. package/dist/basic-sdk/extension/constants/index.js +71 -0
  6. package/dist/basic-sdk/extension/index.js +2 -2
  7. package/dist/basic-sdk/extension/plugins/blockquote/render-elem.js +2 -1
  8. package/dist/basic-sdk/extension/plugins/check-list/index.js +2 -2
  9. package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +7 -10
  10. package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +8 -9
  11. package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -2
  12. package/dist/basic-sdk/extension/plugins/link/menu/add-link-dialog.js +7 -2
  13. package/dist/basic-sdk/extension/plugins/list/render-elem.js +3 -1
  14. package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +2 -1
  15. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/index.css +55 -0
  16. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-file-dialog.js → dialogs/select-sdoc-file-dialog/index.js} +36 -29
  17. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/local-files/index.css +75 -0
  18. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/local-files.js → dialogs/select-sdoc-file-dialog/local-files/index.js} +42 -32
  19. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.js → hover-menu/index.js} +1 -1
  20. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +3 -3
  21. package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +2 -2
  22. package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +11 -4
  23. package/dist/basic-sdk/extension/plugins/table/render/table-root.js +1 -0
  24. package/dist/basic-sdk/extension/render/render-element.js +20 -7
  25. package/dist/basic-sdk/extension/toolbar/index.js +2 -1
  26. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +121 -0
  27. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.css +24 -0
  28. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +123 -0
  29. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-below-menu.js +23 -0
  30. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +95 -0
  31. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu-item.js +35 -0
  32. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css +64 -0
  33. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +76 -0
  34. package/dist/basic-sdk/extension/toolbar/side-toolbar/transform-menus.js +41 -0
  35. package/dist/basic-sdk/layout/article-container.js +3 -2
  36. package/dist/basic-sdk/outline/index.js +6 -6
  37. package/dist/basic-sdk/socket/socket-client.js +1 -1
  38. package/dist/basic-sdk/socket/socket-manager.js +0 -4
  39. package/package.json +1 -1
  40. package/public/locales/en/sdoc-editor.json +7 -1
  41. package/public/locales/zh-CN/sdoc-editor.json +8 -1
  42. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/local-files.css +0 -98
  43. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/sdoc-link-file-dialog.css +0 -35
  44. /package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.css → hover-menu/index.css} +0 -0
@@ -0,0 +1,95 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import React, { useRef, useCallback, useState } from 'react';
3
+ import { withTranslation } from 'react-i18next';
4
+ import { Transforms } from '@seafile/slate';
5
+ import { useSlateStatic } from '@seafile/slate-react';
6
+ import context from '../../../../context';
7
+ import AddLinkDialog from '../../plugins/link/menu/add-link-dialog';
8
+ import { insertImage } from '../../plugins/image/helpers';
9
+ import { insertTable } from '../../plugins/table/helpers';
10
+ import SideMenuItem from './side-menu-item';
11
+ import TableSizePopover from '../../plugins/table/popover/table-size-popover';
12
+ import { changeToCodeBlock } from '../../plugins/code-block/helpers';
13
+ var InsertBlockMenu = function InsertBlockMenu(_ref) {
14
+ var propsInsertImage = _ref.insertImage,
15
+ propsInsertLink = _ref.insertLink,
16
+ propsInsertTable = _ref.insertTable,
17
+ propsInsertCodeBlock = _ref.insertCodeBlock,
18
+ t = _ref.t;
19
+ var inputRef = useRef(null);
20
+ var editor = useSlateStatic();
21
+ var _useState = useState(false),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ isShowLinkDialog = _useState2[0],
24
+ setShowLinkDialog = _useState2[1];
25
+ var onInsertImageToggle = useCallback(function () {
26
+ if (propsInsertImage) {
27
+ inputRef.current.click();
28
+ return;
29
+ }
30
+ Transforms.select(editor, editor.selection.focus);
31
+ inputRef.current.click();
32
+ }, [editor, propsInsertImage]);
33
+ var onFileChanged = useCallback(function (event) {
34
+ var file = event.target.files[0];
35
+ context.uploadLocalImage(file).then(function (fileUrl) {
36
+ if (propsInsertImage) {
37
+ propsInsertImage(editor, fileUrl, editor.selection);
38
+ } else {
39
+ insertImage(editor, fileUrl, editor.selection);
40
+ }
41
+ });
42
+ }, [editor, propsInsertImage]);
43
+ var createTable = useCallback(function (size) {
44
+ if (propsInsertTable) {
45
+ propsInsertTable(editor, size, editor.selection);
46
+ } else {
47
+ insertTable(editor, size, editor.selection);
48
+ }
49
+ }, [editor, propsInsertTable]);
50
+ var onLinkDialogToggle = useCallback(function () {
51
+ setShowLinkDialog(!isShowLinkDialog);
52
+ }, [isShowLinkDialog]);
53
+ var onInsertCodeBlock = useCallback(function () {
54
+ if (propsInsertCodeBlock) {
55
+ propsInsertCodeBlock(editor, 'plaintext');
56
+ } else {
57
+ changeToCodeBlock(editor, 'plaintext');
58
+ }
59
+ }, [editor, propsInsertCodeBlock]);
60
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SideMenuItem, {
61
+ iconClass: "sdocfont sdoc-image",
62
+ iconName: t('Image'),
63
+ onClick: onInsertImageToggle
64
+ }, /*#__PURE__*/React.createElement("input", {
65
+ ref: inputRef,
66
+ type: "file",
67
+ accept: "image/*",
68
+ className: "sdoc-upload-locale-image",
69
+ onChange: onFileChanged
70
+ })), /*#__PURE__*/React.createElement(SideMenuItem, {
71
+ menuId: "sdoc-side-menu-item-table",
72
+ iconClass: "sdocfont sdoc-table",
73
+ iconName: t('Table'),
74
+ hasRight: true
75
+ }, /*#__PURE__*/React.createElement(TableSizePopover, {
76
+ target: "sdoc-side-menu-item-table",
77
+ trigger: "hover",
78
+ placement: "right-start",
79
+ popperClassName: "sdoc-side-menu-table-size",
80
+ createTable: createTable
81
+ })), /*#__PURE__*/React.createElement(SideMenuItem, {
82
+ iconClass: "sdocfont sdoc-link",
83
+ iconName: t('Link'),
84
+ onClick: onLinkDialogToggle
85
+ }, isShowLinkDialog && /*#__PURE__*/React.createElement(AddLinkDialog, {
86
+ editor: editor,
87
+ insertLink: propsInsertLink,
88
+ onLinkDialogToggle: onLinkDialogToggle
89
+ })), /*#__PURE__*/React.createElement(SideMenuItem, {
90
+ iconClass: "sdocfont sdoc-code-block",
91
+ iconName: t('Code_block'),
92
+ onClick: onInsertCodeBlock
93
+ }));
94
+ };
95
+ export default withTranslation('sdoc-editor')(InsertBlockMenu);
@@ -0,0 +1,35 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import React, { useEffect, useState } from 'react';
3
+ var SideMenuItem = function SideMenuItem(_ref) {
4
+ var menuId = _ref.menuId,
5
+ iconClass = _ref.iconClass,
6
+ iconName = _ref.iconName,
7
+ _ref$hasRight = _ref.hasRight,
8
+ hasRight = _ref$hasRight === void 0 ? false : _ref$hasRight,
9
+ _ref$children = _ref.children,
10
+ children = _ref$children === void 0 ? null : _ref$children,
11
+ onClick = _ref.onClick;
12
+ // onMount
13
+ var _useState = useState(false),
14
+ _useState2 = _slicedToArray(_useState, 2),
15
+ isShowChildren = _useState2[0],
16
+ setShowChildren = _useState2[1];
17
+ useEffect(function () {
18
+ setShowChildren(!isShowChildren);
19
+ // eslint-disable-next-line react-hooks/exhaustive-deps
20
+ }, []);
21
+ return /*#__PURE__*/React.createElement("div", {
22
+ id: menuId,
23
+ className: "sdoc-side-menu-item",
24
+ onClick: onClick
25
+ }, /*#__PURE__*/React.createElement("span", {
26
+ className: "sdoc-side-menu-item__left"
27
+ }, /*#__PURE__*/React.createElement("span", {
28
+ className: iconClass
29
+ }), /*#__PURE__*/React.createElement("span", null, iconName)), hasRight && /*#__PURE__*/React.createElement("span", {
30
+ className: "sdoc-side-menu-item__right"
31
+ }, /*#__PURE__*/React.createElement("span", {
32
+ className: "sdocfont sdoc-right-slide"
33
+ })), isShowChildren && children);
34
+ };
35
+ export default React.memo(SideMenuItem);
@@ -0,0 +1,64 @@
1
+ .sdoc-side-menu-popover {
2
+ position: absolute;
3
+ }
4
+
5
+ .sdoc-side-menu {
6
+ position: absolute;
7
+ width: 200px;
8
+ background-color: #fff;
9
+ border: 1px solid rgba(0, 0, 0, .12);
10
+ border-radius: 4px;
11
+ transform: translateX(-200px);
12
+ padding: 8px 0px;
13
+ box-shadow: 0 2px 12px 2px rgba(68, 73, 77, .16);
14
+ z-index: 999;
15
+ }
16
+
17
+ .sdoc-side-menu .sdoc-side-menu-item:nth-child(2),
18
+ .sdoc-side-inner-menu .sdoc-side-menu-item:nth-child(2) {
19
+ border-bottom: 1px solid var(--border-weak,rgba(0,0,0,.04));
20
+ }
21
+
22
+ .sdoc-side-menu .sdoc-side-menu-item,
23
+ .sdoc-side-inner-menu .sdoc-side-menu-item {
24
+ padding: 6px 16px;
25
+ display: flex;
26
+ justify-content: space-between;
27
+ font-size: 12px;
28
+ }
29
+
30
+ .sdoc-side-menu .sdoc-upload-locale-image,
31
+ .sdoc-side-inner-menu .sdoc-upload-locale-image {
32
+ display: none;
33
+ }
34
+
35
+ .sdoc-side-menu .sdoc-side-menu-item:hover,
36
+ .sdoc-side-inner-menu .sdoc-side-menu-item:hover {
37
+ background-color: #F2F2F2;
38
+ border-radius: 2px;
39
+ }
40
+
41
+ .sdoc-side-menu .sdoc-side-menu-item :nth-child(2),
42
+ .sdoc-side-inner-menu .sdoc-side-menu-item :nth-child(2) {
43
+ transform: scale(0.6);
44
+ }
45
+
46
+ .sdoc-side-menu .sdoc-side-menu-item :first-child,
47
+ .sdoc-side-inner-menu .sdoc-side-menu-item :first-child {
48
+ padding-right: 5px;
49
+ font-size: 12px;
50
+ }
51
+
52
+ .sdoc-side-menu-insert-below-popover .popover {
53
+ background-color: #fff;
54
+ min-width: 150px;
55
+ min-height: 120px;
56
+ border-radius: 2px;
57
+ left: -6px !important;
58
+ cursor: pointer;
59
+ }
60
+
61
+ .sdoc-side-operation-translate-popover .popover,
62
+ .sdoc-selected-table-size-popover .sdoc-side-menu-table-size {
63
+ left: -6px !important;
64
+ }
@@ -0,0 +1,76 @@
1
+ import React, { useCallback, useEffect, useMemo } from 'react';
2
+ import { withTranslation } from 'react-i18next';
3
+ import { useSlateStatic } from '@seafile/slate-react';
4
+ import EventBus from '../../../utils/event-bus';
5
+ import { ElementPopover } from '../../commons';
6
+ import InsertBelowMenu from './insert-below-menu';
7
+ import InsertBlockMenu from './insert-block-menu';
8
+ import SideMenuItem from './side-menu-item';
9
+ import { onCopyNode, onDeleteNode } from './helpers';
10
+ import './side-menu.css';
11
+ import TransformMenus from './transform-menus';
12
+ var SideMenu = function SideMenu(_ref) {
13
+ var slateNode = _ref.slateNode,
14
+ isNodeEmpty = _ref.isNodeEmpty,
15
+ menuPosition = _ref.menuPosition,
16
+ onReset = _ref.onReset,
17
+ t = _ref.t;
18
+ var editor = useSlateStatic();
19
+ useEffect(function () {
20
+ var eventBus = EventBus.getInstance();
21
+ var unsubscribeChange = eventBus.subscribe('change', onReset);
22
+ return unsubscribeChange;
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, []);
25
+ var onCopy = useCallback(function () {
26
+ onCopyNode(editor);
27
+ onReset();
28
+ }, [editor, onReset]);
29
+ var onCut = useCallback(function () {
30
+ onCopyNode(editor);
31
+ onDeleteNode(editor, slateNode);
32
+ onReset();
33
+ }, [editor, onReset, slateNode]);
34
+ var onDelete = useCallback(function () {
35
+ onDeleteNode(editor, slateNode);
36
+ onReset();
37
+ }, [editor, onReset, slateNode]);
38
+ var menuStyle = useMemo(function () {
39
+ return "top: ".concat(menuPosition.top, "px; left: ").concat(menuPosition.left, "px");
40
+ }, [menuPosition]);
41
+ return /*#__PURE__*/React.createElement(ElementPopover, {
42
+ className: "sdoc-side-menu-popover",
43
+ style: menuStyle
44
+ }, /*#__PURE__*/React.createElement("div", {
45
+ className: "sdoc-side-menu"
46
+ }, /*#__PURE__*/React.createElement(SideMenuItem, {
47
+ menuId: "sdoc-side-menu-item__transform",
48
+ iconClass: "sdocfont sdoc-table-of-content",
49
+ iconName: t('Transform_to'),
50
+ hasRight: true
51
+ }, /*#__PURE__*/React.createElement(TransformMenus, {
52
+ target: "sdoc-side-menu-item__transform",
53
+ slateNode: slateNode,
54
+ onReset: onReset
55
+ })), isNodeEmpty && /*#__PURE__*/React.createElement(InsertBlockMenu, null), !isNodeEmpty && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SideMenuItem, {
56
+ menuId: "sdoc-side-menu-item__below",
57
+ iconClass: "sdocfont sdoc-insert",
58
+ iconName: t('Insert_below'),
59
+ hasRight: true
60
+ }, /*#__PURE__*/React.createElement(InsertBelowMenu, {
61
+ target: "sdoc-side-menu-item__below"
62
+ })), /*#__PURE__*/React.createElement(SideMenuItem, {
63
+ iconClass: "sdocfont sdoc-copy",
64
+ iconName: t('Copy'),
65
+ onClick: onCopy
66
+ }), /*#__PURE__*/React.createElement(SideMenuItem, {
67
+ iconClass: "sdocfont sdoc-cut",
68
+ iconName: t('Cut'),
69
+ onClick: onCut
70
+ }), /*#__PURE__*/React.createElement(SideMenuItem, {
71
+ iconClass: "sdocfont sdoc-delete",
72
+ iconName: t('Delete'),
73
+ onClick: onDelete
74
+ }))));
75
+ };
76
+ export default withTranslation('sdoc-editor')(SideMenu);
@@ -0,0 +1,41 @@
1
+ import React, { useCallback } from 'react';
2
+ import { UncontrolledPopover } from 'reactstrap';
3
+ import { withTranslation } from 'react-i18next';
4
+ import { useSlateStatic } from '@seafile/slate-react';
5
+ import { onSetNodeType } from './helpers';
6
+ import { SIDE_MENUS_CONFIG } from '../../constants';
7
+ var TransformMenus = function TransformMenus(_ref) {
8
+ var target = _ref.target,
9
+ slateNode = _ref.slateNode,
10
+ onReset = _ref.onReset,
11
+ t = _ref.t;
12
+ var editor = useSlateStatic();
13
+ var onSetType = useCallback(function (newType) {
14
+ onSetNodeType(editor, slateNode, newType);
15
+ onReset();
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ }, []);
18
+ return /*#__PURE__*/React.createElement(UncontrolledPopover, {
19
+ target: target,
20
+ className: "sdoc-side-operation-translate-popover",
21
+ trigger: "hover",
22
+ placement: "right-start",
23
+ hideArrow: true,
24
+ fade: false
25
+ }, /*#__PURE__*/React.createElement("div", {
26
+ className: "sdoc-side-inner-menu"
27
+ }, SIDE_MENUS_CONFIG.map(function (item) {
28
+ return /*#__PURE__*/React.createElement("div", {
29
+ key: item.id,
30
+ className: "sdoc-side-menu-item",
31
+ onClick: function onClick() {
32
+ onSetType(item.type);
33
+ }
34
+ }, /*#__PURE__*/React.createElement("span", {
35
+ className: "sdoc-side-menu-item__left"
36
+ }, /*#__PURE__*/React.createElement("span", {
37
+ className: item.iconClass
38
+ }), /*#__PURE__*/React.createElement("span", null, t(item.title))));
39
+ })));
40
+ };
41
+ export default withTranslation('sdoc-editor')(TransformMenus);
@@ -1,3 +1,4 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
3
  import React, { useEffect, useRef, useState } from 'react';
3
4
  import { useScrollContext } from '../hooks/use-scroll-context';
@@ -39,10 +40,10 @@ export default function ArticleContainer(_ref) {
39
40
  }, React.Children.count(children) === 1 && /*#__PURE__*/React.createElement("div", {
40
41
  className: "article",
41
42
  ref: articleRef
42
- }, children), React.Children.count(children) === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
43
+ }, children), React.Children.count(children) > 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
43
44
  className: "article",
44
45
  ref: articleRef
45
- }, children[0]), children[1]));
46
+ }, children[0]), _toConsumableArray(children.slice(1))));
46
47
  }
47
48
  ArticleContainer.defaultProps = {
48
49
  readOnly: false
@@ -4,18 +4,18 @@ import { withTranslation } from 'react-i18next';
4
4
  import { UncontrolledTooltip } from 'reactstrap';
5
5
  import OutlineItem from './outline-item';
6
6
  import './style.css';
7
- var getOutlineSetting = function getOutlineSetting(docUuid) {
8
- var currentValue = localStorage.getItem(docUuid);
7
+ var getOutlineSetting = function getOutlineSetting() {
8
+ var currentValue = localStorage.getItem('sdoc');
9
9
  var config = currentValue ? JSON.parse(currentValue) : {};
10
10
  var _config$outlineOpen = config.outlineOpen,
11
11
  outlineOpen = _config$outlineOpen === void 0 ? false : _config$outlineOpen;
12
12
  return outlineOpen;
13
13
  };
14
- var setOutlineSetting = function setOutlineSetting(docUuid, isShown) {
15
- var currentValue = localStorage.getItem(docUuid);
14
+ var setOutlineSetting = function setOutlineSetting(isShown) {
15
+ var currentValue = localStorage.getItem('sdoc');
16
16
  var config = currentValue ? JSON.parse(currentValue) : {};
17
17
  config['outlineOpen'] = isShown;
18
- localStorage.setItem(docUuid, JSON.stringify(config));
18
+ localStorage.setItem('sdoc', JSON.stringify(config));
19
19
  };
20
20
  var SDocOutline = function SDocOutline(_ref) {
21
21
  var scrollLeft = _ref.scrollLeft,
@@ -27,7 +27,7 @@ var SDocOutline = function SDocOutline(_ref) {
27
27
  isShown = _useState2[0],
28
28
  setIsShown = _useState2[1];
29
29
  useEffect(function () {
30
- var outlineOpen = getOutlineSetting(docUuid);
30
+ var outlineOpen = getOutlineSetting();
31
31
  setIsShown(outlineOpen);
32
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
33
33
  }, []);
@@ -49,7 +49,7 @@ var SocketClient = /*#__PURE__*/_createClass(function SocketClient(config) {
49
49
  socketManager.dispatchConnectState('reconnect_attempt', attemptNumber);
50
50
  };
51
51
  this.onReconnectError = function () {
52
- debug('reconnect_error. %s');
52
+ debug('reconnect_error.');
53
53
  var socketManager = SocketManager.getInstance();
54
54
  socketManager.dispatchConnectState('reconnect_error');
55
55
  };
@@ -262,10 +262,6 @@ var SocketManager = /*#__PURE__*/_createClass(function SocketManager(editor, doc
262
262
  _this._sendingOperations = null;
263
263
  }
264
264
  _this.state = STATE.DISCONNECT;
265
-
266
- // Update saved state
267
- var lastSavedAt = new Date().getTime();
268
- _this.dispatchConnectState('saved', lastSavedAt);
269
265
  }
270
266
  _this.eventBus.dispatch(type, message);
271
267
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.125",
3
+ "version": "0.1.127",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -350,5 +350,11 @@
350
350
  "Select_sdoc_document": "Select sdoc document",
351
351
  "Local_file": "Local file",
352
352
  "Internal_server_exec_operations_error": "An exception occurred on the server, please refresh the page and try again",
353
- "Failed_to_sync_with_server_operations": "Synchronization with the server failed, please refresh the page"
353
+ "Failed_to_sync_with_server_operations": "Synchronization with the server failed, please refresh the page",
354
+ "Style": "Style",
355
+ "Insert": "Insert",
356
+ "Image": "Image",
357
+ "Table": "Table",
358
+ "Link": "Link",
359
+ "Transform_to": "Transform to"
354
360
  }
@@ -352,5 +352,12 @@
352
352
  "Select_sdoc_document": "选择sdoc文档",
353
353
  "Local_file": "本地文件",
354
354
  "Internal_server_exec_operations_error": "在服务器执行操作异常,请刷新页面后重试",
355
- "Failed_to_sync_with_server_operations": "与服务器同步操作失败,请刷新页面"
355
+ "Failed_to_sync_with_server_operations": "与服务器同步操作失败,请刷新页面",
356
+ "Operations_save_error_tip": "操作执行失败,服务器内部错误,请刷新页面",
357
+ "Style": "样式",
358
+ "Insert": "插入",
359
+ "Image": "图片",
360
+ "Table": "表格",
361
+ "Link": "链接",
362
+ "Transform_to": "转化为"
356
363
  }
@@ -1,98 +0,0 @@
1
- .sdoc-local-files-library {
2
- color: #212529;
3
- cursor: pointer;
4
- font-size: 14px;
5
- }
6
-
7
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-info {
8
- display: flex;
9
- }
10
-
11
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-info > span:nth-child(-n+2) {
12
- padding-right: 3px;
13
- }
14
-
15
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-info :first-child {
16
- transform: scale(0.6)
17
- }
18
-
19
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .active {
20
- background: #ff8000;
21
- border-radius: 2px;
22
- box-shadow: inset 0 0 1px #999;
23
- color: #fff;
24
- }
25
-
26
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .active .sdoc-local-file-icon {
27
- color: #fff;
28
- }
29
-
30
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .inactive:hover {
31
- background: #fdefb9;
32
- border-radius: 2px;
33
- box-shadow: inset 0 0 1px #999;
34
- }
35
-
36
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .inactive > span:nth-child(-n+2) {
37
- color: #9aa0ac;
38
- }
39
-
40
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-info .icon-drop-down-scale {
41
- transform: scale(1.1) !important;
42
- }
43
-
44
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-info > span:nth-child(3) {
45
- padding-left: 3px;
46
- white-space: nowrap;
47
- overflow: hidden;
48
- text-overflow: ellipsis;
49
- line-height: 24px;
50
- }
51
-
52
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-files {
53
- padding-left: 24px;
54
- }
55
-
56
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-files .active {
57
- background: #ff8000;
58
- border-radius: 2px;
59
- box-shadow: inset 0 0 1px #999;
60
- color: #fff;
61
- }
62
-
63
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-files .inactive:hover {
64
- background: #fdefb9;
65
- border-radius: 2px;
66
- box-shadow: inset 0 0 1px #999;
67
- }
68
-
69
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-children {
70
- padding-left: 24px
71
- }
72
-
73
- .sdoc-local-files-library .sdoc-local-folder-container .sdoc-local-folder .sdoc-local-folder-children .inactive .sdoc-local-file-icon {
74
- color: #ff9800;
75
- }
76
-
77
- .sdoc-local-files-library .sdoc-local-folder-container .inactive:hover {
78
- background: #fdefb9;
79
- border-radius: 2px;
80
- box-shadow: inset 0 0 1px #999;
81
- }
82
-
83
- .sdoc-local-files-library .sdoc-local-folder-container .active {
84
- background: #ff8000;
85
- border-radius: 2px;
86
- box-shadow: inset 0 0 1px #999;
87
- color: #fff;
88
- }
89
-
90
- .sdoc-local-files-library .sdoc-local-folder-container .active .sdoc-local-file-icon {
91
- color: #fff;
92
- padding-right: 5px;
93
- }
94
-
95
- .sdoc-local-files-library .sdoc-local-folder-container .inactive .sdoc-local-file-icon {
96
- color: #ff9800;
97
- padding-right: 5px;
98
- }
@@ -1,35 +0,0 @@
1
- .sdoc-file-addition-container {
2
- display: flex;
3
- flex-direction: row;
4
- }
5
-
6
- .sdoc-file-addition-left {
7
- border-right: 1px solid #e9ecef;
8
- width: 150px;
9
- padding: 12px 8px;
10
- }
11
-
12
- .sdoc-file-addition-left .sdoc-addition-item {
13
- padding: 5px 0 5px 8px;
14
- border-radius: 3px;
15
- display: inline-block;
16
- cursor: pointer;
17
- width: 100%;
18
- }
19
-
20
- .sdoc-file-addition-left .sdoc-addition-item:hover {
21
- background-color: #f5f5f5;
22
- }
23
-
24
- .sdoc-file-addition-container .sdoc-file-addition-left .selected-sdoc-addition-item {
25
- background-color: #ff8000;
26
- color: #fff;
27
- }
28
-
29
- .sdoc-file-addition-right {
30
- height: 440px;
31
- overflow-y: auto;
32
- overflow-x: hidden;
33
- padding: 16px 16px;
34
- width: 470px;
35
- }