@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.
- package/dist/basic-sdk/comment/comment/editor-comment.js +11 -2
- package/dist/basic-sdk/comment/comment/style.css +1 -0
- package/dist/basic-sdk/constants/index.js +2 -1
- package/dist/basic-sdk/editor.js +2 -1
- package/dist/basic-sdk/extension/constants/index.js +71 -0
- package/dist/basic-sdk/extension/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/blockquote/render-elem.js +2 -1
- package/dist/basic-sdk/extension/plugins/check-list/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +7 -10
- package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +8 -9
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -2
- package/dist/basic-sdk/extension/plugins/link/menu/add-link-dialog.js +7 -2
- package/dist/basic-sdk/extension/plugins/list/render-elem.js +3 -1
- package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +2 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/index.css +55 -0
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-file-dialog.js → dialogs/select-sdoc-file-dialog/index.js} +36 -29
- package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/local-files/index.css +75 -0
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/local-files.js → dialogs/select-sdoc-file-dialog/local-files/index.js} +42 -32
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.js → hover-menu/index.js} +1 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +11 -4
- package/dist/basic-sdk/extension/plugins/table/render/table-root.js +1 -0
- package/dist/basic-sdk/extension/render/render-element.js +20 -7
- package/dist/basic-sdk/extension/toolbar/index.js +2 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +121 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/index.css +24 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +123 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-below-menu.js +23 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +95 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu-item.js +35 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css +64 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +76 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/transform-menus.js +41 -0
- package/dist/basic-sdk/layout/article-container.js +3 -2
- package/dist/basic-sdk/outline/index.js +6 -6
- package/dist/basic-sdk/socket/socket-client.js +1 -1
- package/dist/basic-sdk/socket/socket-manager.js +0 -4
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +7 -1
- package/public/locales/zh-CN/sdoc-editor.json +8 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/local-files.css +0 -98
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/sdoc-link-file-dialog.css +0 -35
- /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)
|
|
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
|
|
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(
|
|
8
|
-
var currentValue = localStorage.getItem(
|
|
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(
|
|
15
|
-
var currentValue = localStorage.getItem(
|
|
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(
|
|
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(
|
|
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.
|
|
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
|
@@ -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
|
-
}
|
|
File without changes
|