@seafile/sdoc-editor 0.1.6 → 0.1.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.
- package/dist/api/sdoc-server-api.js +53 -0
- package/dist/assets/css/custom-editor.css +28 -0
- package/dist/{editor.js → basic-sdk/editor.js} +10 -1
- package/dist/basic-sdk/index.js +3 -0
- package/dist/{socket → basic-sdk/socket}/socket-client.js +9 -3
- package/dist/{socket → basic-sdk/socket}/socket-manager.js +6 -1
- package/dist/{viewer.js → basic-sdk/viewer.js} +7 -5
- package/dist/components/loading/index.js +26 -0
- package/dist/components/loading/style.css +49 -0
- package/dist/context.js +162 -0
- package/dist/index.js +4 -3
- package/dist/layout/content.js +30 -0
- package/dist/layout/header.js +30 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/layout.css +33 -0
- package/dist/layout/layout.js +30 -0
- package/dist/pages/simple-editor.js +123 -0
- package/dist/pages/simple-viewer.js +106 -0
- package/dist/utils/index.js +21 -0
- package/package.json +3 -1
- package/dist/config.js +0 -16
- /package/dist/{assets → basic-sdk/assets}/css/code-block.css +0 -0
- /package/dist/{assets → basic-sdk/assets}/css/layout.css +0 -0
- /package/dist/{assets/css/sdoc-editor-content.css → basic-sdk/assets/css/sdoc-editor-plugins.css} +0 -0
- /package/dist/{assets → basic-sdk/assets}/css/sdoc-editor-toolbar.css +0 -0
- /package/dist/{assets → basic-sdk/assets}/css/textlink-hovermenu.css +0 -0
- /package/dist/{extension → basic-sdk/extension}/constants/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/queries/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/transforms/focus-editor.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/transforms/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/transforms/move-children.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/transforms/remove-node-children.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/core/utils/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/menu/menu-group.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/menu/menu-item.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/menu/menu.css +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/plugin.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/blockquote/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/plugin.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/check-list/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/plugin.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/code-block/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/header/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/header/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/header/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/header/plugin.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/header/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/menu/add-link-dialog.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/menu/hover-link-dialog.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/plugin.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/link/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/plugin/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/plugin/insert-break-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/plugin/normalize-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/plugin/on-tab-handle.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/queries/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/insert-list-item.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/move-list-item-down.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/move-list-item-up.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/move-list-items-to-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/move-list-items.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/normalize-list-item.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/normalize-nested-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/remove-first-list-item.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/toggle-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/list/transforms/unwrap-list.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/text-style/helpers.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/text-style/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/text-style/menu/index.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/text-style/model.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/plugins/text-style/render-elem.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/render/render-element.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/render/render-leaf.js +0 -0
- /package/dist/{extension → basic-sdk/extension}/toolbar/index.js +0 -0
- /package/dist/{node-id → basic-sdk/node-id}/constants.js +0 -0
- /package/dist/{node-id → basic-sdk/node-id}/helpers.js +0 -0
- /package/dist/{node-id → basic-sdk/node-id}/index.js +0 -0
- /package/dist/{socket → basic-sdk/socket}/helpers.js +0 -0
- /package/dist/{socket → basic-sdk/socket}/index.js +0 -0
- /package/dist/{socket → basic-sdk/socket}/with-socket-io.js +0 -0
- /package/dist/{utils → basic-sdk/utils}/debug.js +0 -0
- /package/dist/{utils → basic-sdk/utils}/event-bus.js +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
var SDocServerApi = /*#__PURE__*/function () {
|
|
5
|
+
function SDocServerApi(options) {
|
|
6
|
+
_classCallCheck(this, SDocServerApi);
|
|
7
|
+
if (!options.docUuid) {
|
|
8
|
+
throw new Error('settings has no docUuid');
|
|
9
|
+
}
|
|
10
|
+
if (!options.sdocServer) {
|
|
11
|
+
throw new Error('settings has no sdocServer');
|
|
12
|
+
}
|
|
13
|
+
if (!options.accessToken) {
|
|
14
|
+
throw new Error('settings has no accessToken');
|
|
15
|
+
}
|
|
16
|
+
this.server = options.sdocServer;
|
|
17
|
+
this.docUuid = options.docUuid;
|
|
18
|
+
this.accessToken = options.accessToken;
|
|
19
|
+
}
|
|
20
|
+
_createClass(SDocServerApi, [{
|
|
21
|
+
key: "getDocContent",
|
|
22
|
+
value: function getDocContent(docPath, docName) {
|
|
23
|
+
var server = this.server,
|
|
24
|
+
docUuid = this.docUuid,
|
|
25
|
+
accessToken = this.accessToken;
|
|
26
|
+
var url = "".concat(server, "/api/v1/docs/").concat(docUuid, "/?doc_path=").concat(encodeURIComponent(docPath), "&doc_name=").concat(encodeURIComponent(docName));
|
|
27
|
+
return axios.get(url, {
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: "Token ".concat(accessToken)
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}, {
|
|
34
|
+
key: "saveDocContent",
|
|
35
|
+
value: function saveDocContent(docPath, docName, content) {
|
|
36
|
+
var server = this.server,
|
|
37
|
+
docUuid = this.docUuid,
|
|
38
|
+
accessToken = this.accessToken;
|
|
39
|
+
var url = "".concat(server, "/api/v1/docs/").concat(docUuid, "/");
|
|
40
|
+
var formData = new FormData();
|
|
41
|
+
formData.append('doc_path', docPath);
|
|
42
|
+
formData.append('doc_name', docName);
|
|
43
|
+
formData.append('doc_content', content);
|
|
44
|
+
return axios.post(url, formData, {
|
|
45
|
+
headers: {
|
|
46
|
+
Authorization: "Token ".concat(accessToken)
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}]);
|
|
51
|
+
return SDocServerApi;
|
|
52
|
+
}();
|
|
53
|
+
export default SDocServerApi;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
html, body {
|
|
2
|
+
height: 100%;
|
|
3
|
+
width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
#root {
|
|
7
|
+
height: 100%;
|
|
8
|
+
width: 100%;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.markdown-wrapper {
|
|
12
|
+
flex: 1;
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
min-height: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.markdown-header {
|
|
19
|
+
display: flex;
|
|
20
|
+
justify-content: flex-end;
|
|
21
|
+
padding: 0 1rem;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.markdown-content {
|
|
25
|
+
flex: 1;
|
|
26
|
+
min-height: 0;
|
|
27
|
+
display: flex;
|
|
28
|
+
}
|
|
@@ -9,7 +9,7 @@ import editor, { renderLeaf as _renderLeaf, renderElement as _renderElement, Too
|
|
|
9
9
|
import { SocketManager, withSocketIO } from './socket';
|
|
10
10
|
import withNodeId from './node-id';
|
|
11
11
|
import './assets/css/layout.css';
|
|
12
|
-
import './assets/css/sdoc-editor-
|
|
12
|
+
import './assets/css/sdoc-editor-plugins.css';
|
|
13
13
|
var SDocEditor = /*#__PURE__*/function (_React$Component) {
|
|
14
14
|
_inherits(SDocEditor, _React$Component);
|
|
15
15
|
var _super = _createSuper(SDocEditor);
|
|
@@ -17,6 +17,9 @@ var SDocEditor = /*#__PURE__*/function (_React$Component) {
|
|
|
17
17
|
var _this;
|
|
18
18
|
_classCallCheck(this, SDocEditor);
|
|
19
19
|
_this = _super.call(this, props);
|
|
20
|
+
_this.getSocketManager = function () {
|
|
21
|
+
return _this.socketManager;
|
|
22
|
+
};
|
|
20
23
|
_this.onChange = function (slateValue) {
|
|
21
24
|
var onValueChanged = _this.props.onValueChanged;
|
|
22
25
|
_this.setState({
|
|
@@ -48,6 +51,12 @@ var SDocEditor = /*#__PURE__*/function (_React$Component) {
|
|
|
48
51
|
this.socketManager = SocketManager.getInstance(this.editor, document, config);
|
|
49
52
|
}
|
|
50
53
|
}
|
|
54
|
+
}, {
|
|
55
|
+
key: "componentWillUnmount",
|
|
56
|
+
value: function componentWillUnmount() {
|
|
57
|
+
this.socketManager.closeSocketConnect();
|
|
58
|
+
this.socketManager = null;
|
|
59
|
+
}
|
|
51
60
|
}, {
|
|
52
61
|
key: "render",
|
|
53
62
|
value: function render() {
|
|
@@ -69,6 +69,11 @@ var SocketClient = /*#__PURE__*/_createClass(function SocketClient(config) {
|
|
|
69
69
|
var socketManager = SocketManager.getInstance();
|
|
70
70
|
socketManager.dispatchConnectState('disconnect');
|
|
71
71
|
};
|
|
72
|
+
this.onConnectError = function () {
|
|
73
|
+
debug('connect_error.');
|
|
74
|
+
var socketManager = SocketManager.getInstance();
|
|
75
|
+
socketManager.dispatchConnectState('connect_error');
|
|
76
|
+
};
|
|
72
77
|
this.onJoinRoom = function (username) {
|
|
73
78
|
debug('%s joined room success.', username);
|
|
74
79
|
var socketManager = SocketManager.getInstance();
|
|
@@ -101,9 +106,6 @@ var SocketClient = /*#__PURE__*/_createClass(function SocketClient(config) {
|
|
|
101
106
|
var socketManager = SocketManager.getInstance();
|
|
102
107
|
socketManager.receiveOperations(params);
|
|
103
108
|
};
|
|
104
|
-
this.disconnectWithServer = function () {
|
|
105
|
-
_this.socket.disconnect();
|
|
106
|
-
};
|
|
107
109
|
this.syncDocumentBySocket = function () {
|
|
108
110
|
var docUuid = _this.config.docUuid;
|
|
109
111
|
var socketManager = SocketManager.getInstance();
|
|
@@ -117,6 +119,9 @@ var SocketClient = /*#__PURE__*/_createClass(function SocketClient(config) {
|
|
|
117
119
|
}
|
|
118
120
|
});
|
|
119
121
|
};
|
|
122
|
+
this.disconnectWithServer = function () {
|
|
123
|
+
_this.socket.disconnect();
|
|
124
|
+
};
|
|
120
125
|
this.config = config;
|
|
121
126
|
this.isReconnect = false;
|
|
122
127
|
this.socket = io(config.sdocServer, {
|
|
@@ -127,6 +132,7 @@ var SocketClient = /*#__PURE__*/_createClass(function SocketClient(config) {
|
|
|
127
132
|
});
|
|
128
133
|
this.socket.on('connect', this.onConnected);
|
|
129
134
|
this.socket.on('disconnect', this.onDisconnected);
|
|
135
|
+
this.socket.on('connect_error', this.onConnectError);
|
|
130
136
|
this.socket.on('join-room', this.onJoinRoom);
|
|
131
137
|
this.socket.on('leave-room', this.onLeaveRoom);
|
|
132
138
|
this.socket.on('update-document', this.receiveOperations);
|
|
@@ -25,6 +25,7 @@ var SocketManager = /*#__PURE__*/_createClass(function SocketManager(editor, doc
|
|
|
25
25
|
_this.isSending = false;
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
|
+
_this.dispatchConnectState('is-saving');
|
|
28
29
|
var version = _this.document.version;
|
|
29
30
|
var operations = _this.pendingOperationList.shift();
|
|
30
31
|
_this.socketClient.sendOperations(operations, version, _this.sendOperationsCallback);
|
|
@@ -33,6 +34,7 @@ var SocketManager = /*#__PURE__*/_createClass(function SocketManager(editor, doc
|
|
|
33
34
|
if (result && result.success) {
|
|
34
35
|
var serverVersion = result.version;
|
|
35
36
|
_this.document['version'] = serverVersion;
|
|
37
|
+
_this.dispatchConnectState('saved');
|
|
36
38
|
_this.sendNextOperations();
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
@@ -155,7 +157,10 @@ var SocketManager = /*#__PURE__*/_createClass(function SocketManager(editor, doc
|
|
|
155
157
|
});
|
|
156
158
|
};
|
|
157
159
|
this.dispatchConnectState = function (type, message) {
|
|
158
|
-
|
|
160
|
+
_this.eventBus.dispatch(type, message);
|
|
161
|
+
};
|
|
162
|
+
this.closeSocketConnect = function () {
|
|
163
|
+
_this.socketClient.disconnectWithServer();
|
|
159
164
|
};
|
|
160
165
|
this.editor = editor;
|
|
161
166
|
this.document = document;
|
|
@@ -9,7 +9,8 @@ import editor, { renderLeaf as _renderLeaf, renderElement as _renderElement } fr
|
|
|
9
9
|
import { SocketManager, withSocketIO } from './socket';
|
|
10
10
|
import withNodeId from './node-id';
|
|
11
11
|
import './assets/css/layout.css';
|
|
12
|
-
import './assets/css/sdoc-editor-
|
|
12
|
+
import './assets/css/sdoc-editor-plugins.css';
|
|
13
|
+
import { generateDefaultDocContent } from '../utils';
|
|
13
14
|
var SDocViewer = /*#__PURE__*/function (_React$Component) {
|
|
14
15
|
_inherits(SDocViewer, _React$Component);
|
|
15
16
|
var _super = _createSuper(SDocViewer);
|
|
@@ -17,7 +18,8 @@ var SDocViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
17
18
|
var _this;
|
|
18
19
|
_classCallCheck(this, SDocViewer);
|
|
19
20
|
_this = _super.call(this, props);
|
|
20
|
-
var
|
|
21
|
+
var _ref = props.document || generateDefaultDocContent(),
|
|
22
|
+
children = _ref.children;
|
|
21
23
|
_this.state = {
|
|
22
24
|
slateValue: children,
|
|
23
25
|
isLoading: true
|
|
@@ -47,15 +49,15 @@ var SDocViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
47
49
|
var _this2 = this;
|
|
48
50
|
var slateValue = this.state.slateValue;
|
|
49
51
|
return /*#__PURE__*/React.createElement("div", {
|
|
50
|
-
className: "
|
|
52
|
+
className: "sdoc-editor-container"
|
|
51
53
|
}, /*#__PURE__*/React.createElement("div", {
|
|
52
|
-
className: "
|
|
54
|
+
className: "sdoc-editor-content"
|
|
53
55
|
}, /*#__PURE__*/React.createElement(Slate, {
|
|
54
56
|
editor: this.editor,
|
|
55
57
|
value: slateValue,
|
|
56
58
|
onChange: function onChange() {}
|
|
57
59
|
}, /*#__PURE__*/React.createElement("div", {
|
|
58
|
-
className: "
|
|
60
|
+
className: "article"
|
|
59
61
|
}, /*#__PURE__*/React.createElement(Editable, {
|
|
60
62
|
readOnly: true,
|
|
61
63
|
placeholder: "",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import './style.css';
|
|
7
|
+
var Loading = /*#__PURE__*/function (_React$Component) {
|
|
8
|
+
_inherits(Loading, _React$Component);
|
|
9
|
+
var _super = _createSuper(Loading);
|
|
10
|
+
function Loading() {
|
|
11
|
+
_classCallCheck(this, Loading);
|
|
12
|
+
return _super.apply(this, arguments);
|
|
13
|
+
}
|
|
14
|
+
_createClass(Loading, [{
|
|
15
|
+
key: "render",
|
|
16
|
+
value: function render() {
|
|
17
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
18
|
+
className: "empty-loading-page"
|
|
19
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
20
|
+
className: "lds-ripple page-centered"
|
|
21
|
+
}, /*#__PURE__*/React.createElement("div", null), /*#__PURE__*/React.createElement("div", null)));
|
|
22
|
+
}
|
|
23
|
+
}]);
|
|
24
|
+
return Loading;
|
|
25
|
+
}(React.Component);
|
|
26
|
+
export default Loading;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.empty-loading-page {
|
|
2
|
+
position: fixed;
|
|
3
|
+
height: 100%;
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.page-centered {
|
|
8
|
+
position: fixed;
|
|
9
|
+
top: 50%;
|
|
10
|
+
left: 50%;
|
|
11
|
+
/* bring your own prefixes */
|
|
12
|
+
transform: translate(-50%, -50%);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.lds-ripple {
|
|
16
|
+
display: inline-block;
|
|
17
|
+
position: relative;
|
|
18
|
+
width: 64px;
|
|
19
|
+
height: 64px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.lds-ripple div {
|
|
23
|
+
position: absolute;
|
|
24
|
+
border: 4px solid #eb8205;
|
|
25
|
+
opacity: 1;
|
|
26
|
+
border-radius: 50%;
|
|
27
|
+
animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.lds-ripple div:nth-child(2) {
|
|
31
|
+
animation-delay: -0.5s;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@keyframes lds-ripple {
|
|
35
|
+
0% {
|
|
36
|
+
top: 28px;
|
|
37
|
+
left: 28px;
|
|
38
|
+
width: 0;
|
|
39
|
+
height: 0;
|
|
40
|
+
opacity: 1;
|
|
41
|
+
}
|
|
42
|
+
100% {
|
|
43
|
+
top: -1px;
|
|
44
|
+
left: -1px;
|
|
45
|
+
width: 58px;
|
|
46
|
+
height: 58px;
|
|
47
|
+
opacity: 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import cookie from 'react-cookies';
|
|
4
|
+
import { SeafileAPI } from 'seafile-js';
|
|
5
|
+
import Url from 'url-parse';
|
|
6
|
+
import SDocServerApi from './api/sdoc-server-api';
|
|
7
|
+
import { getDirPath } from './utils';
|
|
8
|
+
var Context = /*#__PURE__*/function () {
|
|
9
|
+
function Context() {
|
|
10
|
+
var _this = this;
|
|
11
|
+
_classCallCheck(this, Context);
|
|
12
|
+
this.initSettings = function () {
|
|
13
|
+
_this.settings = window.seafile ? window.seafile : window.seafileConfig;
|
|
14
|
+
var isOpenSocket = _this.getSetting('isOpenSocket');
|
|
15
|
+
if (isOpenSocket) {
|
|
16
|
+
_this.sdocServerApi = new SDocServerApi(_this.settings);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
this.settings = null;
|
|
20
|
+
this.sdocServerApi = null;
|
|
21
|
+
this.api = null;
|
|
22
|
+
this.config = null;
|
|
23
|
+
}
|
|
24
|
+
_createClass(Context, [{
|
|
25
|
+
key: "initApi",
|
|
26
|
+
value: function initApi() {
|
|
27
|
+
this.initSettings(); // lazy init context class
|
|
28
|
+
var seafileAPI = new SeafileAPI();
|
|
29
|
+
if (this.getSetting('isDevelopment')) {
|
|
30
|
+
var server = this.getSetting('serviceUrl');
|
|
31
|
+
var username = this.getSetting('username');
|
|
32
|
+
var password = this.getSetting('password');
|
|
33
|
+
seafileAPI.init({
|
|
34
|
+
server: server,
|
|
35
|
+
username: username,
|
|
36
|
+
password: password
|
|
37
|
+
});
|
|
38
|
+
this.api = seafileAPI;
|
|
39
|
+
return seafileAPI.login();
|
|
40
|
+
} else {
|
|
41
|
+
var siteRoot = this.getSetting('siteRoot');
|
|
42
|
+
var xcsrfHeaders = cookie.load('dtable_csrftoken');
|
|
43
|
+
seafileAPI.initForSeahubUsage({
|
|
44
|
+
siteRoot: siteRoot,
|
|
45
|
+
xcsrfHeaders: xcsrfHeaders
|
|
46
|
+
});
|
|
47
|
+
this.api = seafileAPI;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
key: "getSettings",
|
|
52
|
+
value: function getSettings() {
|
|
53
|
+
return this.settings;
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
key: "getSetting",
|
|
57
|
+
value: function getSetting(key) {
|
|
58
|
+
if (this.settings[key] === false) return this.settings[key];
|
|
59
|
+
return this.settings[key] || '';
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
key: "getViewConfig",
|
|
63
|
+
value: function getViewConfig() {
|
|
64
|
+
if (this.config) return this.config;
|
|
65
|
+
var _this$getSettings = this.getSettings(),
|
|
66
|
+
rawPath = _this$getSettings.rawPath,
|
|
67
|
+
docName = _this$getSettings.docName;
|
|
68
|
+
this.config = {
|
|
69
|
+
rawPath: rawPath,
|
|
70
|
+
docName: docName
|
|
71
|
+
};
|
|
72
|
+
return this.config;
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "getEditorConfig",
|
|
76
|
+
value: function getEditorConfig() {
|
|
77
|
+
if (this.config) return this.config;
|
|
78
|
+
var _this$getSettings2 = this.getSettings(),
|
|
79
|
+
docName = _this$getSettings2.docName,
|
|
80
|
+
docPath = _this$getSettings2.docPath,
|
|
81
|
+
docUuid = _this$getSettings2.docUuid,
|
|
82
|
+
accessToken = _this$getSettings2.accessToken,
|
|
83
|
+
sdocServer = _this$getSettings2.sdocServer;
|
|
84
|
+
this.config = {
|
|
85
|
+
docName: docName,
|
|
86
|
+
docPath: docPath,
|
|
87
|
+
docUuid: docUuid,
|
|
88
|
+
accessToken: accessToken,
|
|
89
|
+
sdocServer: new Url(sdocServer).origin
|
|
90
|
+
};
|
|
91
|
+
return this.config;
|
|
92
|
+
}
|
|
93
|
+
}, {
|
|
94
|
+
key: "getFileContent",
|
|
95
|
+
value: function getFileContent() {
|
|
96
|
+
var isOpenSocket = this.getSetting('isOpenSocket');
|
|
97
|
+
if (isOpenSocket) {
|
|
98
|
+
return this.getFileContent1();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// visit by shared link
|
|
102
|
+
var rawPath = this.getSetting('rawPath');
|
|
103
|
+
if (rawPath) {
|
|
104
|
+
return this.api.getFileContent(rawPath);
|
|
105
|
+
}
|
|
106
|
+
return this.getFileContent2();
|
|
107
|
+
}
|
|
108
|
+
}, {
|
|
109
|
+
key: "saveContent",
|
|
110
|
+
value: function saveContent(content) {
|
|
111
|
+
var isOpenSocket = this.getSetting('isOpenSocket');
|
|
112
|
+
if (isOpenSocket) {
|
|
113
|
+
return this.saveContent1(content);
|
|
114
|
+
}
|
|
115
|
+
return this.saveContent2(content);
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
118
|
+
key: "getFileContent1",
|
|
119
|
+
value: function getFileContent1() {
|
|
120
|
+
var settings = this.getSettings();
|
|
121
|
+
var docPath = settings.docPath,
|
|
122
|
+
docName = settings.docName;
|
|
123
|
+
return this.sdocServerApi.getDocContent(docPath, docName);
|
|
124
|
+
}
|
|
125
|
+
}, {
|
|
126
|
+
key: "saveContent1",
|
|
127
|
+
value: function saveContent1(content) {
|
|
128
|
+
var settings = this.getSettings();
|
|
129
|
+
var docPath = settings.docPath,
|
|
130
|
+
docName = settings.docName;
|
|
131
|
+
return this.sdocServerApi.saveDocContent(docPath, docName, content);
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
key: "getFileContent2",
|
|
135
|
+
value: function getFileContent2() {
|
|
136
|
+
var _this2 = this;
|
|
137
|
+
var repoID = this.getSetting('repoID');
|
|
138
|
+
var docPath = this.getSetting('docPath');
|
|
139
|
+
return this.api.getFileDownloadLink(repoID, docPath).then(function (res) {
|
|
140
|
+
var downloadLink = res.data;
|
|
141
|
+
return _this2.api.getFileContent(downloadLink);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}, {
|
|
145
|
+
key: "saveContent2",
|
|
146
|
+
value: function saveContent2(content) {
|
|
147
|
+
var _this3 = this;
|
|
148
|
+
var settings = this.getSettings();
|
|
149
|
+
var repoID = settings.repoID,
|
|
150
|
+
docPath = settings.docPath,
|
|
151
|
+
docName = settings.docName;
|
|
152
|
+
var dirPath = getDirPath(docPath);
|
|
153
|
+
return this.api.getUpdateLink(repoID, dirPath).then(function (res) {
|
|
154
|
+
var uploadLink = res.data;
|
|
155
|
+
return _this3.api.updateFile(uploadLink, docPath, docName, content);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}]);
|
|
159
|
+
return Context;
|
|
160
|
+
}();
|
|
161
|
+
var context = new Context();
|
|
162
|
+
export default context;
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { SDocViewer } from './basic-sdk';
|
|
2
|
+
import SimpleEditor from './pages/simple-editor';
|
|
3
|
+
import SimpleViewer from './pages/simple-viewer';
|
|
4
|
+
export { SDocViewer, SimpleEditor, SimpleViewer };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
6
|
+
var _excluded = ["children", "className"];
|
|
7
|
+
import React, { Component } from 'react';
|
|
8
|
+
import classnames from 'classnames';
|
|
9
|
+
var Content = /*#__PURE__*/function (_Component) {
|
|
10
|
+
_inherits(Content, _Component);
|
|
11
|
+
var _super = _createSuper(Content);
|
|
12
|
+
function Content() {
|
|
13
|
+
_classCallCheck(this, Content);
|
|
14
|
+
return _super.apply(this, arguments);
|
|
15
|
+
}
|
|
16
|
+
_createClass(Content, [{
|
|
17
|
+
key: "render",
|
|
18
|
+
value: function render() {
|
|
19
|
+
var _this$props = this.props,
|
|
20
|
+
children = _this$props.children,
|
|
21
|
+
className = _this$props.className,
|
|
22
|
+
restProps = _objectWithoutProperties(_this$props, _excluded);
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
24
|
+
className: classnames('sdoc-editor-page-content', className)
|
|
25
|
+
}, restProps), children);
|
|
26
|
+
}
|
|
27
|
+
}]);
|
|
28
|
+
return Content;
|
|
29
|
+
}(Component);
|
|
30
|
+
export { Content as default };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
6
|
+
var _excluded = ["children", "className"];
|
|
7
|
+
import React, { Component } from 'react';
|
|
8
|
+
import classnames from 'classnames';
|
|
9
|
+
var Header = /*#__PURE__*/function (_Component) {
|
|
10
|
+
_inherits(Header, _Component);
|
|
11
|
+
var _super = _createSuper(Header);
|
|
12
|
+
function Header() {
|
|
13
|
+
_classCallCheck(this, Header);
|
|
14
|
+
return _super.apply(this, arguments);
|
|
15
|
+
}
|
|
16
|
+
_createClass(Header, [{
|
|
17
|
+
key: "render",
|
|
18
|
+
value: function render() {
|
|
19
|
+
var _this$props = this.props,
|
|
20
|
+
children = _this$props.children,
|
|
21
|
+
className = _this$props.className,
|
|
22
|
+
restProps = _objectWithoutProperties(_this$props, _excluded);
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
24
|
+
className: classnames('sdoc-editor-page-header', className)
|
|
25
|
+
}, restProps), children);
|
|
26
|
+
}
|
|
27
|
+
}]);
|
|
28
|
+
return Header;
|
|
29
|
+
}(Component);
|
|
30
|
+
export { Header as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
html, body {
|
|
2
|
+
height: 100%;
|
|
3
|
+
width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
#root, #wrapper {
|
|
7
|
+
height: 100%;
|
|
8
|
+
width: 100%;
|
|
9
|
+
display: flex;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.sdoc-editor-page-wrapper {
|
|
13
|
+
flex: 1;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
min-height: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.sdoc-editor-page-wrapper .sdoc-editor-page-header {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
padding: 4px 10px;
|
|
24
|
+
border-bottom: 1px solid #c9c9c9;
|
|
25
|
+
flex-shrink: 0;
|
|
26
|
+
height: 58px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.sdoc-editor-page-wrapper .sdoc-editor-page-content {
|
|
30
|
+
flex: 1;
|
|
31
|
+
min-height: 0;
|
|
32
|
+
display: flex;
|
|
33
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
5
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
6
|
+
var _excluded = ["children", "className"];
|
|
7
|
+
import React, { Component } from 'react';
|
|
8
|
+
import classnames from 'classnames';
|
|
9
|
+
var Layout = /*#__PURE__*/function (_Component) {
|
|
10
|
+
_inherits(Layout, _Component);
|
|
11
|
+
var _super = _createSuper(Layout);
|
|
12
|
+
function Layout() {
|
|
13
|
+
_classCallCheck(this, Layout);
|
|
14
|
+
return _super.apply(this, arguments);
|
|
15
|
+
}
|
|
16
|
+
_createClass(Layout, [{
|
|
17
|
+
key: "render",
|
|
18
|
+
value: function render() {
|
|
19
|
+
var _this$props = this.props,
|
|
20
|
+
children = _this$props.children,
|
|
21
|
+
className = _this$props.className,
|
|
22
|
+
restProps = _objectWithoutProperties(_this$props, _excluded);
|
|
23
|
+
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
24
|
+
className: classnames('sdoc-editor-page-wrapper', className)
|
|
25
|
+
}, restProps), children);
|
|
26
|
+
}
|
|
27
|
+
}]);
|
|
28
|
+
return Layout;
|
|
29
|
+
}(Component);
|
|
30
|
+
export { Layout as default };
|