@seafile/sdoc-editor 2.0.145 → 2.0.147
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 +11 -0
- package/dist/api/seafile-api.js +6 -0
- package/dist/comment/components/comment-item-content.js +1 -1
- package/dist/comment/components/comment-item-reply.js +1 -1
- package/dist/comment/components/comment-list.js +4 -4
- package/dist/comment/components/global-comment/global-comment-editor.js +1 -1
- package/dist/constants/index.js +2 -1
- package/dist/context.js +20 -0
- package/dist/extension/commons/file-link-preview/helper.js +24 -0
- package/dist/extension/commons/file-link-preview/index.css +148 -0
- package/dist/extension/commons/file-link-preview/index.js +159 -0
- package/dist/extension/index.js +4 -2
- package/dist/extension/plugins/callout/render-elem/index.js +24 -4
- package/dist/extension/plugins/code-block/render-elem.js +9 -11
- package/dist/extension/plugins/file-link/render-elem.js +22 -0
- package/dist/extension/plugins/image/render-elem.js +28 -6
- package/dist/extension/plugins/link/render-elem.js +21 -0
- package/dist/extension/plugins/quick-insert/render-elem.js +22 -0
- package/dist/extension/plugins/sdoc-link/hover-menu/index.js +41 -10
- package/dist/extension/plugins/sdoc-link/render/render-elem.js +22 -0
- package/dist/extension/plugins/whiteboard/render-elem.js +26 -6
- package/dist/hooks/use-plugins.js +9 -1
- package/dist/right-panel/index.js +30 -4
- package/dist/utils/default-mode.js +1 -1
- package/package.json +3 -3
|
@@ -37,6 +37,17 @@ var SDocServerApi = /*#__PURE__*/function () {
|
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
+
}, {
|
|
41
|
+
key: "getFileContentByDocUuidAndAccessToken",
|
|
42
|
+
value: function getFileContentByDocUuidAndAccessToken(docUuid, access_token) {
|
|
43
|
+
var server = this.server;
|
|
44
|
+
var url = "".concat(server, "/api/v1/docs/").concat(docUuid, "/");
|
|
45
|
+
return _axios["default"].get(url, {
|
|
46
|
+
headers: {
|
|
47
|
+
Authorization: "Token ".concat(access_token)
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
40
51
|
}, {
|
|
41
52
|
key: "normalizeSdocContent",
|
|
42
53
|
value: function normalizeSdocContent() {
|
package/dist/api/seafile-api.js
CHANGED
|
@@ -299,6 +299,12 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
299
299
|
form.append('file_uuid', docUuid);
|
|
300
300
|
return this.req.post(url, form);
|
|
301
301
|
}
|
|
302
|
+
}, {
|
|
303
|
+
key: "getTokenByDocUuid",
|
|
304
|
+
value: function getTokenByDocUuid(docUuid) {
|
|
305
|
+
var url = "/api/v2.1/seadoc/access-token-by-uuid/".concat(docUuid, "/");
|
|
306
|
+
return this.req.get(url);
|
|
307
|
+
}
|
|
302
308
|
}]);
|
|
303
309
|
}();
|
|
304
310
|
var _default = exports["default"] = SeafileAPI;
|
|
@@ -137,7 +137,7 @@ var CommentItemContent = function CommentItemContent(_ref) {
|
|
|
137
137
|
insertContent: updateContent,
|
|
138
138
|
hiddenComment: setIsEditing,
|
|
139
139
|
api: {
|
|
140
|
-
uploadLocalImage: _context2["default"].
|
|
140
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
141
141
|
}
|
|
142
142
|
};
|
|
143
143
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -121,7 +121,7 @@ var CommentItemReply = function CommentItemReply(_ref) {
|
|
|
121
121
|
insertContent: updateContent,
|
|
122
122
|
hiddenComment: setIsEditing,
|
|
123
123
|
api: {
|
|
124
|
-
uploadLocalImage: _context2["default"].
|
|
124
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -220,7 +220,7 @@ var CommentList = function CommentList(_ref) {
|
|
|
220
220
|
hiddenComment: hiddenComment,
|
|
221
221
|
closePanel: closeComment,
|
|
222
222
|
api: {
|
|
223
|
-
uploadLocalImage: _context2["default"].
|
|
223
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
224
224
|
}
|
|
225
225
|
}), !isEmptyComment && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !isActiveEditor && /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
|
|
226
226
|
value: inputContent !== null && inputContent !== void 0 && inputContent.trim() ? '.....' : '',
|
|
@@ -247,7 +247,7 @@ var CommentList = function CommentList(_ref) {
|
|
|
247
247
|
},
|
|
248
248
|
hiddenComment: hiddenComment,
|
|
249
249
|
api: {
|
|
250
|
-
uploadLocalImage: _context2["default"].
|
|
250
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
251
251
|
}
|
|
252
252
|
}))));
|
|
253
253
|
}), Object.values(commentDetail).length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -267,7 +267,7 @@ var CommentList = function CommentList(_ref) {
|
|
|
267
267
|
hiddenComment: hiddenComment,
|
|
268
268
|
closePanel: closeComment,
|
|
269
269
|
api: {
|
|
270
|
-
uploadLocalImage: _context2["default"].
|
|
270
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
271
271
|
}
|
|
272
272
|
}), !isEmptyComment && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !showEditor && /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
|
|
273
273
|
value: inputContent !== null && inputContent !== void 0 && inputContent.trim() ? '.....' : '',
|
|
@@ -292,7 +292,7 @@ var CommentList = function CommentList(_ref) {
|
|
|
292
292
|
},
|
|
293
293
|
hiddenComment: hiddenComment,
|
|
294
294
|
api: {
|
|
295
|
-
uploadLocalImage: _context2["default"].
|
|
295
|
+
uploadLocalImage: _context2["default"].uploadCommentImage
|
|
296
296
|
}
|
|
297
297
|
}))));
|
|
298
298
|
};
|
|
@@ -39,7 +39,7 @@ var GlobalCommentEditor = function GlobalCommentEditor(_ref) {
|
|
|
39
39
|
collaborators: collaborators,
|
|
40
40
|
participants: participants,
|
|
41
41
|
api: {
|
|
42
|
-
uploadLocalImage: _context["default"].
|
|
42
|
+
uploadLocalImage: _context["default"].uploadCommentImage
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
package/dist/constants/index.js
CHANGED
|
@@ -76,7 +76,8 @@ var INTERNAL_EVENT = exports.INTERNAL_EVENT = {
|
|
|
76
76
|
CREATE_WIKI_PAGE: 'create_wiki_page',
|
|
77
77
|
IMAGE_COLUMN_TOGGLE: 'Image_column_toggle',
|
|
78
78
|
CREATE_WHITEBOARD_FILE: 'create_whiteboard_file',
|
|
79
|
-
GENERATE_EXDRAW_READ_ONLY_LINK: 'generate_exdraw_read_only_link'
|
|
79
|
+
GENERATE_EXDRAW_READ_ONLY_LINK: 'generate_exdraw_read_only_link',
|
|
80
|
+
TRANSFER_PREVIEW_FILE_ID: 'transfer_preview_file_id'
|
|
80
81
|
};
|
|
81
82
|
var PAGE_EDIT_AREA_WIDTH = exports.PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
|
|
82
83
|
var COMMENT_EDITOR_EDIT_AREA_WIDTH = exports.COMMENT_EDITOR_EDIT_AREA_WIDTH = 364;
|
package/dist/context.js
CHANGED
|
@@ -42,6 +42,16 @@ var Context = /*#__PURE__*/function () {
|
|
|
42
42
|
return relative_path;
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
+
(0, _defineProperty2["default"])(this, "uploadCommentImage", function (imageFiles) {
|
|
46
|
+
var docUuid = _this.getSetting('docUuid');
|
|
47
|
+
var serviceUrl = context.getSetting('serviceUrl');
|
|
48
|
+
var assetsUrl = context.getSetting('assetsUrl');
|
|
49
|
+
return _this.api.uploadSdocImage(docUuid, imageFiles).then(function (res) {
|
|
50
|
+
var relative_path = res.data.relative_path;
|
|
51
|
+
var filePath = serviceUrl + assetsUrl + relative_path[0];
|
|
52
|
+
return [filePath];
|
|
53
|
+
});
|
|
54
|
+
});
|
|
45
55
|
(0, _defineProperty2["default"])(this, "uploadLocalVideo", function (videoFiles) {
|
|
46
56
|
var docUuid = _this.getSetting('docUuid');
|
|
47
57
|
return _this.api.uploadSdocVideo(docUuid, videoFiles).then(function (res) {
|
|
@@ -119,6 +129,11 @@ var Context = /*#__PURE__*/function () {
|
|
|
119
129
|
return res;
|
|
120
130
|
});
|
|
121
131
|
}
|
|
132
|
+
}, {
|
|
133
|
+
key: "getFileContentByDocUuidAndAccessToken",
|
|
134
|
+
value: function getFileContentByDocUuidAndAccessToken(docUuid, access_token) {
|
|
135
|
+
return this.sdocServerApi.getFileContentByDocUuidAndAccessToken(docUuid, access_token);
|
|
136
|
+
}
|
|
122
137
|
}, {
|
|
123
138
|
key: "normalizeSdocContent",
|
|
124
139
|
value: function normalizeSdocContent() {
|
|
@@ -364,6 +379,11 @@ var Context = /*#__PURE__*/function () {
|
|
|
364
379
|
if (!this.config) return;
|
|
365
380
|
this.config['docUuid'] = docUuid;
|
|
366
381
|
}
|
|
382
|
+
}, {
|
|
383
|
+
key: "getTokenByDocUuid",
|
|
384
|
+
value: function getTokenByDocUuid(docUuid) {
|
|
385
|
+
return this.api.getTokenByDocUuid(docUuid);
|
|
386
|
+
}
|
|
367
387
|
}]);
|
|
368
388
|
}();
|
|
369
389
|
var context = new Context();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.saveSdocToken = exports.getSdocToken = void 0;
|
|
7
|
+
var saveSdocToken = exports.saveSdocToken = function saveSdocToken(docUuid, token) {
|
|
8
|
+
var now = Date.now();
|
|
9
|
+
// 3 days is the valid time token set by back-end
|
|
10
|
+
var expireTime = now + 3 * 24 * 60 * 60 * 1000;
|
|
11
|
+
localStorage.setItem("access_token_".concat(docUuid), token);
|
|
12
|
+
localStorage.setItem("access_token_".concat(docUuid, "_expire"), expireTime.toString());
|
|
13
|
+
};
|
|
14
|
+
var getSdocToken = exports.getSdocToken = function getSdocToken(docUuid) {
|
|
15
|
+
var token = localStorage.getItem("access_token_".concat(docUuid));
|
|
16
|
+
var expire = localStorage.getItem("access_token_".concat(docUuid, "_expire"));
|
|
17
|
+
if (!token || !expire) return null;
|
|
18
|
+
if (Date.now() > parseInt(expire)) {
|
|
19
|
+
localStorage.removeItem("access_token_".concat(docUuid));
|
|
20
|
+
localStorage.removeItem("access_token_".concat(docUuid, "_expire"));
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return token;
|
|
24
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
.sdoc-file-preview-drawer {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sdoc-file-preview-drawer .file-preview-panel-wrapper {
|
|
7
|
+
/* 100vh - toolbar height*/
|
|
8
|
+
height: calc(100vh - 93px);
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
background: #fff;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sdoc-file-preview-drawer .file-preview-panel-header {
|
|
15
|
+
padding: 0 16px;
|
|
16
|
+
height: 46px;
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
border-bottom: 1px solid #EAECEF;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-left {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.sdoc-file-preview-drawer .file-preview-panel-header-right .file-preview-full-screen {
|
|
29
|
+
align-items: center;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
display: flex;
|
|
32
|
+
height: 24px;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
width: 24px;
|
|
35
|
+
margin-right: 8px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.sdoc-file-preview-drawer .file-preview-panel-header-right .file-preview-full-screen:hover {
|
|
39
|
+
border-radius: 3px;
|
|
40
|
+
background-color: #EFEFEF;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.sdoc-file-preview-drawer .file-preview-panel-header-right .file-preview-full-screen .icon-font {
|
|
44
|
+
color: #999;
|
|
45
|
+
font-size: 14px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
.sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-left .detail-header-icon-container {
|
|
50
|
+
align-items: center;
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-shrink: 0;
|
|
53
|
+
height: 32px;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
width: 32px
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-left .name.ellipsis {
|
|
59
|
+
color: var(--bs-body-color);
|
|
60
|
+
font-size: 1rem;
|
|
61
|
+
line-height: 1.5rem;
|
|
62
|
+
margin: 0 .5rem 0 6px;
|
|
63
|
+
vertical-align: middle;
|
|
64
|
+
white-space: nowrap;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
text-overflow: ellipsis;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-left .sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-left .title {
|
|
70
|
+
color: #212529;
|
|
71
|
+
font-size: 16px;
|
|
72
|
+
font-weight: 500;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.sdoc-file-preview-drawer .file-preview-panel-header .file-preview-panel-header-right {
|
|
76
|
+
display: flex;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.sdoc-file-preview-drawer .file-preview-panel-body {
|
|
80
|
+
display: flex;
|
|
81
|
+
flex: 1 1;
|
|
82
|
+
flex-direction: column;
|
|
83
|
+
overflow-x: hidden;
|
|
84
|
+
overflow-y: auto;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.file-preview-panel-body .file-preview-container {
|
|
88
|
+
overflow: auto;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.sdoc-file-preview-drawer .file-preview-panel-body .sdoc-article-container {
|
|
92
|
+
width: 100% !important;
|
|
93
|
+
padding: 0px;
|
|
94
|
+
pointer-events: none;
|
|
95
|
+
user-select: auto;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.file-preview-panel-body .sdoc-article-container .article.sdoc-editor__article {
|
|
99
|
+
border: none;
|
|
100
|
+
box-shadow: none;
|
|
101
|
+
padding: 8px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-editor__article {
|
|
105
|
+
padding: calc(100vw / 794 * 40) calc(100vw / 794 * 60) !important;
|
|
106
|
+
font-size: calc(100vw / 794 * 14.7) !important;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-checkbox-input {
|
|
110
|
+
width: calc(100vw / 794 * 13) !important;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-code-block-pre {
|
|
114
|
+
font-size: calc(100vw / 794 * 13.3) !important;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-title {
|
|
118
|
+
font-size: calc(100vw / 794 * 33.7) !important;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-subtitle {
|
|
122
|
+
font-size: calc(100vw / 794 * 20) !important;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-1 {
|
|
126
|
+
font-size: calc(100vw / 794 * 26.7) !important;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-2 {
|
|
130
|
+
font-size: calc(100vw / 794 * 21.3) !important;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-3 {
|
|
134
|
+
font-size: calc(100vw / 794 * 18.7) !important;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-4 {
|
|
138
|
+
font-size: calc(100vw / 794 * 16) !important;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-5,
|
|
142
|
+
.file-preview-panel-body .file-preview-container:fullscreen .sdoc-header-6 {
|
|
143
|
+
font-size: calc(100vw / 794 * 14.7) !important;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.file-preview-panel-body .sdoc-article-container .sdoc-table-wrapper {
|
|
147
|
+
max-width: none !important;
|
|
148
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _slate = require("@seafile/slate");
|
|
14
|
+
var _slateReact = require("@seafile/slate-react");
|
|
15
|
+
var _fileLoading = _interopRequireDefault(require("../../../components/file-loading"));
|
|
16
|
+
var _context2 = _interopRequireDefault(require("../../../context"));
|
|
17
|
+
var _usePlugins2 = require("../../../hooks/use-plugins");
|
|
18
|
+
var _useScrollContext = require("../../../hooks/use-scroll-context");
|
|
19
|
+
var _readonlyArticle = _interopRequireDefault(require("../../../views/readonly-article"));
|
|
20
|
+
var _helpers = require("../select-file-dialog/helpers");
|
|
21
|
+
var _helper = require("./helper");
|
|
22
|
+
require("./index.css");
|
|
23
|
+
var FilePreviewWrapper = function FilePreviewWrapper(_ref) {
|
|
24
|
+
var docUuid = _ref.docUuid,
|
|
25
|
+
title = _ref.title;
|
|
26
|
+
var _useState = (0, _react.useState)(null),
|
|
27
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
28
|
+
fileContent = _useState2[0],
|
|
29
|
+
setFileContent = _useState2[1];
|
|
30
|
+
var _useState3 = (0, _react.useState)(null),
|
|
31
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
32
|
+
Component = _useState4[0],
|
|
33
|
+
setComponent = _useState4[1];
|
|
34
|
+
var _useState5 = (0, _react.useState)(true),
|
|
35
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
36
|
+
isReloading = _useState6[0],
|
|
37
|
+
setIsReloading = _useState6[1];
|
|
38
|
+
var readonlyEditor = (0, _react.useMemo)(function () {
|
|
39
|
+
return (0, _slateReact.withReact)((0, _slate.createEditor)());
|
|
40
|
+
}, [docUuid]);
|
|
41
|
+
var _usePlugins = (0, _usePlugins2.usePlugins)(),
|
|
42
|
+
closePlugin = _usePlugins.closePlugin;
|
|
43
|
+
var filePreviewRef = (0, _react.useRef)();
|
|
44
|
+
var fileTypeIcon = (0, _helpers.parcelFileTypeIcon)(title);
|
|
45
|
+
var openFullscreen = function openFullscreen() {
|
|
46
|
+
if (filePreviewRef.current.requestFullscreen) {
|
|
47
|
+
// Chrome
|
|
48
|
+
filePreviewRef.current.requestFullscreen();
|
|
49
|
+
} else if (filePreviewRef.current.webkitRequestFullscreen) {
|
|
50
|
+
// Safari
|
|
51
|
+
filePreviewRef.current.webkitRequestFullscreen();
|
|
52
|
+
} else if (filePreviewRef.current.msRequestFullscreen) {
|
|
53
|
+
// IE11
|
|
54
|
+
filePreviewRef.current.msRequestFullscreen();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
(0, _react.useEffect)(function () {
|
|
58
|
+
var fetchFileContent = /*#__PURE__*/function () {
|
|
59
|
+
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee() {
|
|
60
|
+
var token, tokenRes, result, _t;
|
|
61
|
+
return (0, _regenerator2["default"])().w(function (_context) {
|
|
62
|
+
while (1) switch (_context.p = _context.n) {
|
|
63
|
+
case 0:
|
|
64
|
+
_context.p = 0;
|
|
65
|
+
token = (0, _helper.getSdocToken)(docUuid);
|
|
66
|
+
if (token) {
|
|
67
|
+
_context.n = 2;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
_context.n = 1;
|
|
71
|
+
return _context2["default"].getTokenByDocUuid(docUuid);
|
|
72
|
+
case 1:
|
|
73
|
+
tokenRes = _context.v;
|
|
74
|
+
(0, _helper.saveSdocToken)(docUuid, tokenRes.data.access_token);
|
|
75
|
+
token = tokenRes.data.access_token;
|
|
76
|
+
case 2:
|
|
77
|
+
_context.n = 3;
|
|
78
|
+
return _context2["default"].getFileContentByDocUuidAndAccessToken(docUuid, token);
|
|
79
|
+
case 3:
|
|
80
|
+
result = _context.v;
|
|
81
|
+
setIsReloading(false);
|
|
82
|
+
setFileContent(result.data.elements);
|
|
83
|
+
setComponent(function () {
|
|
84
|
+
return _readonlyArticle["default"];
|
|
85
|
+
});
|
|
86
|
+
_context.n = 5;
|
|
87
|
+
break;
|
|
88
|
+
case 4:
|
|
89
|
+
_context.p = 4;
|
|
90
|
+
_t = _context.v;
|
|
91
|
+
console.log(_t);
|
|
92
|
+
setFileContent(null);
|
|
93
|
+
setIsReloading(false);
|
|
94
|
+
case 5:
|
|
95
|
+
return _context.a(2);
|
|
96
|
+
}
|
|
97
|
+
}, _callee, null, [[0, 4]]);
|
|
98
|
+
}));
|
|
99
|
+
return function fetchFileContent() {
|
|
100
|
+
return _ref2.apply(this, arguments);
|
|
101
|
+
};
|
|
102
|
+
}();
|
|
103
|
+
if (docUuid) {
|
|
104
|
+
setIsReloading(true);
|
|
105
|
+
fetchFileContent();
|
|
106
|
+
}
|
|
107
|
+
}, [docUuid]);
|
|
108
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
109
|
+
className: "sdoc-file-preview-drawer"
|
|
110
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
111
|
+
className: "file-preview-panel-wrapper"
|
|
112
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
113
|
+
className: "file-preview-panel-header"
|
|
114
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
115
|
+
className: "file-preview-panel-header-left"
|
|
116
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
117
|
+
className: "detail-header-icon-container"
|
|
118
|
+
}, /*#__PURE__*/_react["default"].createElement("img", {
|
|
119
|
+
src: fileTypeIcon,
|
|
120
|
+
width: "32px",
|
|
121
|
+
height: "32px",
|
|
122
|
+
alt: ""
|
|
123
|
+
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
124
|
+
className: "name ellipsis",
|
|
125
|
+
title: title
|
|
126
|
+
}, title)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
127
|
+
className: "file-preview-panel-header-right"
|
|
128
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
129
|
+
id: "file-preview_full_screen_mode",
|
|
130
|
+
role: "button",
|
|
131
|
+
className: "file-preview-full-screen",
|
|
132
|
+
onClick: openFullscreen
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
134
|
+
className: "sdocfont sdoc-fullscreen icon-font"
|
|
135
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
136
|
+
className: "sdoc-icon-btn",
|
|
137
|
+
onClick: closePlugin
|
|
138
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
139
|
+
className: "sdocfont sdoc-sm-close"
|
|
140
|
+
})))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
141
|
+
className: "file-preview-panel-body"
|
|
142
|
+
}, isReloading && /*#__PURE__*/_react["default"].createElement("div", {
|
|
143
|
+
className: "h-100 w-100 d-flex align-items-center justify-content-center"
|
|
144
|
+
}, /*#__PURE__*/_react["default"].createElement(_fileLoading["default"], null)), Component && !isReloading && /*#__PURE__*/_react["default"].createElement(_useScrollContext.ScrollContext.Provider, {
|
|
145
|
+
value: {
|
|
146
|
+
scrollRef: {
|
|
147
|
+
current: null
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
151
|
+
className: "file-preview-container",
|
|
152
|
+
ref: filePreviewRef
|
|
153
|
+
}, /*#__PURE__*/_react["default"].createElement(Component, {
|
|
154
|
+
key: docUuid,
|
|
155
|
+
editor: readonlyEditor,
|
|
156
|
+
slateValue: fileContent
|
|
157
|
+
}))))));
|
|
158
|
+
};
|
|
159
|
+
var _default = exports["default"] = FilePreviewWrapper;
|
package/dist/extension/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
@@ -43,8 +43,10 @@ var _plugins = _interopRequireWildcard(require("./plugins"));
|
|
|
43
43
|
var _renderElement = _interopRequireDefault(require("./render/render-element"));
|
|
44
44
|
var _renderLeaf = _interopRequireDefault(require("./render/render-leaf"));
|
|
45
45
|
var _toolbar = require("./toolbar");
|
|
46
|
+
var _ref;
|
|
46
47
|
var baseEditor = (0, _slateHistory.withHistory)((0, _slateReact.withReact)((0, _slate.createEditor)()));
|
|
47
|
-
var defaultEditor = _plugins["default"] === null ||
|
|
48
|
+
var defaultEditor = (_ref = _plugins["default"] || []) === null || _ref === void 0 ? void 0 : _ref.reduce(function (editor, pluginItem) {
|
|
49
|
+
if (!pluginItem) return editor;
|
|
48
50
|
var withPlugin = pluginItem.editorPlugin;
|
|
49
51
|
if (withPlugin) {
|
|
50
52
|
return withPlugin(editor);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _reactI18next = require("react-i18next");
|
|
@@ -77,10 +78,8 @@ var renderCallout = function renderCallout(_ref, editor) {
|
|
|
77
78
|
var handleScroll = (0, _react.useCallback)(function (e) {
|
|
78
79
|
if (readOnly) return;
|
|
79
80
|
if (!isShowColorSelector) return;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
setPopoverPosition(menuPosition);
|
|
83
|
-
}
|
|
81
|
+
var menuPosition = (0, _utils.getMenuPosition)(calloutRef.current, editor);
|
|
82
|
+
setPopoverPosition(menuPosition);
|
|
84
83
|
}, [editor, isShowColorSelector, readOnly]);
|
|
85
84
|
(0, _react.useEffect)(function () {
|
|
86
85
|
var eventBus = _eventBus["default"].getInstance();
|
|
@@ -90,12 +89,33 @@ var renderCallout = function renderCallout(_ref, editor) {
|
|
|
90
89
|
(0, _react.useEffect)(function () {
|
|
91
90
|
if (readOnly) return;
|
|
92
91
|
var observerRefValue = null;
|
|
92
|
+
var resizeObserver = null;
|
|
93
93
|
if (scrollRef.current) {
|
|
94
94
|
scrollRef.current.addEventListener('scroll', handleScroll);
|
|
95
95
|
observerRefValue = scrollRef.current;
|
|
96
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
97
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
98
|
+
_step;
|
|
99
|
+
try {
|
|
100
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
101
|
+
var entry = _step.value;
|
|
102
|
+
if (resizeObserver) {
|
|
103
|
+
handleScroll();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} catch (err) {
|
|
107
|
+
_iterator.e(err);
|
|
108
|
+
} finally {
|
|
109
|
+
_iterator.f();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
resizeObserver.observe(scrollRef.current);
|
|
96
113
|
}
|
|
97
114
|
return function () {
|
|
98
115
|
observerRefValue.removeEventListener('scroll', handleScroll);
|
|
116
|
+
if (resizeObserver) {
|
|
117
|
+
resizeObserver.disconnect();
|
|
118
|
+
}
|
|
99
119
|
};
|
|
100
120
|
}, [handleScroll, readOnly, scrollRef]);
|
|
101
121
|
(0, _react.useEffect)(function () {
|
|
@@ -99,17 +99,15 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
99
99
|
var onScroll = (0, _react.useCallback)(function (e) {
|
|
100
100
|
if (readOnly) return;
|
|
101
101
|
if (!showHoverMenu) return;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
setMenuPosition(newMenuPosition);
|
|
112
|
-
}
|
|
102
|
+
var _codeBlockRef$current2 = codeBlockRef.current.getBoundingClientRect(),
|
|
103
|
+
top = _codeBlockRef$current2.top,
|
|
104
|
+
left = _codeBlockRef$current2.left;
|
|
105
|
+
var menuTop = top - 42; // top = top distance - menu height
|
|
106
|
+
var newMenuPosition = {
|
|
107
|
+
top: menuTop,
|
|
108
|
+
left: left // left = code-block left distance
|
|
109
|
+
};
|
|
110
|
+
setMenuPosition(newMenuPosition);
|
|
113
111
|
}, [readOnly, showHoverMenu]);
|
|
114
112
|
(0, _react.useEffect)(function () {
|
|
115
113
|
if (readOnly) return;
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _slateReact = require("@seafile/slate-react");
|
|
@@ -73,9 +74,27 @@ var FileLink = function FileLink(_ref) {
|
|
|
73
74
|
}, []);
|
|
74
75
|
(0, _react.useEffect)(function () {
|
|
75
76
|
var observerRefValue = null;
|
|
77
|
+
var resizeObserver = null;
|
|
76
78
|
if (isShowInsertHoverMenu) {
|
|
77
79
|
scrollRef.current && scrollRef.current.addEventListener('scroll', onScroll);
|
|
78
80
|
observerRefValue = scrollRef.current;
|
|
81
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
82
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
83
|
+
_step;
|
|
84
|
+
try {
|
|
85
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
86
|
+
var entry = _step.value;
|
|
87
|
+
if (resizeObserver) {
|
|
88
|
+
onScroll();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
} catch (err) {
|
|
92
|
+
_iterator.e(err);
|
|
93
|
+
} finally {
|
|
94
|
+
_iterator.f();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
resizeObserver.observe(scrollRef.current);
|
|
79
98
|
} else {
|
|
80
99
|
scrollRef.current && scrollRef.current.removeEventListener('scroll', onScroll);
|
|
81
100
|
}
|
|
@@ -83,6 +102,9 @@ var FileLink = function FileLink(_ref) {
|
|
|
83
102
|
if (observerRefValue) {
|
|
84
103
|
observerRefValue.removeEventListener('scroll', onScroll);
|
|
85
104
|
}
|
|
105
|
+
if (resizeObserver) {
|
|
106
|
+
resizeObserver.disconnect();
|
|
107
|
+
}
|
|
86
108
|
};
|
|
87
109
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
110
|
}, [isShowInsertHoverMenu]);
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.renderImage = renderImage;
|
|
9
9
|
exports.renderImageBlock = renderImageBlock;
|
|
10
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
11
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
11
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
12
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -169,6 +170,7 @@ var Image = function Image(_ref) {
|
|
|
169
170
|
}, [isResizing]);
|
|
170
171
|
(0, _react.useEffect)(function () {
|
|
171
172
|
var observerRefValue = null;
|
|
173
|
+
var resizeObserver = null;
|
|
172
174
|
if (isShowImageHoverMenu) {
|
|
173
175
|
registerEvent([{
|
|
174
176
|
'eventName': 'click',
|
|
@@ -176,6 +178,23 @@ var Image = function Image(_ref) {
|
|
|
176
178
|
}]);
|
|
177
179
|
scrollRef.current && scrollRef.current.addEventListener('scroll', onScroll);
|
|
178
180
|
observerRefValue = scrollRef.current;
|
|
181
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
182
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
183
|
+
_step;
|
|
184
|
+
try {
|
|
185
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
186
|
+
var entry = _step.value;
|
|
187
|
+
if (resizeObserver) {
|
|
188
|
+
onScroll();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
} catch (err) {
|
|
192
|
+
_iterator.e(err);
|
|
193
|
+
} finally {
|
|
194
|
+
_iterator.f();
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
resizeObserver.observe(scrollRef.current);
|
|
179
198
|
} else {
|
|
180
199
|
unregisterEvent([{
|
|
181
200
|
'eventName': 'click',
|
|
@@ -191,6 +210,9 @@ var Image = function Image(_ref) {
|
|
|
191
210
|
if (observerRefValue) {
|
|
192
211
|
observerRefValue.removeEventListener('scroll', onScroll);
|
|
193
212
|
}
|
|
213
|
+
if (resizeObserver) {
|
|
214
|
+
resizeObserver.disconnect();
|
|
215
|
+
}
|
|
194
216
|
};
|
|
195
217
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
196
218
|
}, [isShowImageHoverMenu, onHideImageHoverMenu]);
|
|
@@ -271,8 +293,8 @@ var Image = function Image(_ref) {
|
|
|
271
293
|
onMouseOver: function onMouseOver(e) {
|
|
272
294
|
return (0, _helpers.selectImageWhenSelectPartial)(e, editor, element, isSelected);
|
|
273
295
|
},
|
|
274
|
-
contentEditable: "false",
|
|
275
296
|
"data-src": (0, _helpers.getImageURL)(data, editor),
|
|
297
|
+
contentEditable: "false",
|
|
276
298
|
suppressContentEditableWarning: true
|
|
277
299
|
}), /*#__PURE__*/_react["default"].createElement("img", {
|
|
278
300
|
ref: imageRef,
|
|
@@ -287,8 +309,8 @@ var Image = function Image(_ref) {
|
|
|
287
309
|
onMouseOver: function onMouseOver(e) {
|
|
288
310
|
return (0, _helpers.selectImageWhenSelectPartial)(e, editor, element, isSelected);
|
|
289
311
|
},
|
|
290
|
-
contentEditable: "false",
|
|
291
312
|
"data-src": data.src,
|
|
313
|
+
contentEditable: "false",
|
|
292
314
|
suppressContentEditableWarning: true
|
|
293
315
|
}), /*#__PURE__*/_react["default"].createElement(_copyImageErrorSvg["default"], {
|
|
294
316
|
t: t,
|
|
@@ -298,12 +320,12 @@ var Image = function Image(_ref) {
|
|
|
298
320
|
"data-id": element.id,
|
|
299
321
|
className: (0, _classnames["default"])('sdoc-image-wrapper', className)
|
|
300
322
|
}, attributes, {
|
|
323
|
+
contentEditable: "true",
|
|
324
|
+
suppressContentEditableWarning: true,
|
|
301
325
|
style: (0, _objectSpread2["default"])({}, style),
|
|
302
326
|
onMouseOver: function onMouseOver(e) {
|
|
303
327
|
return (0, _helpers.selectImageWhenSelectPartial)(e, editor, element, isSelected);
|
|
304
|
-
}
|
|
305
|
-
contentEditable: "false",
|
|
306
|
-
suppressContentEditableWarning: true
|
|
328
|
+
}
|
|
307
329
|
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
308
330
|
className: "sdoc-image-inner"
|
|
309
331
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
@@ -410,7 +432,7 @@ function renderImageBlock(props, editor) {
|
|
|
410
432
|
onMouseOver: function onMouseOver(e) {
|
|
411
433
|
return (0, _helpers.selectImageWhenSelectPartial)(e, editor, element, isSelected);
|
|
412
434
|
},
|
|
413
|
-
contentEditable: "
|
|
435
|
+
contentEditable: "true",
|
|
414
436
|
suppressContentEditableWarning: true
|
|
415
437
|
}), children);
|
|
416
438
|
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
8
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
|
|
9
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
|
|
10
11
|
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
|
|
@@ -24,11 +25,27 @@ var Link = /*#__PURE__*/function (_React$Component) {
|
|
|
24
25
|
var _this;
|
|
25
26
|
(0, _classCallCheck2["default"])(this, Link);
|
|
26
27
|
_this = (0, _callSuper2["default"])(this, Link, [props]);
|
|
28
|
+
(0, _defineProperty2["default"])(_this, "resizeObserver", null);
|
|
27
29
|
(0, _defineProperty2["default"])(_this, "registerEventHandle", function () {
|
|
28
30
|
document.addEventListener('click', _this.onHideLinkMenu);
|
|
29
31
|
var scrollRef = _this.context.scrollRef;
|
|
30
32
|
if (scrollRef.current) {
|
|
31
33
|
scrollRef.current.addEventListener('scroll', _this.onScroll);
|
|
34
|
+
_this.resizeObserver = new ResizeObserver(function (entries) {
|
|
35
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
36
|
+
_step;
|
|
37
|
+
try {
|
|
38
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
39
|
+
var entry = _step.value;
|
|
40
|
+
_this.onScroll();
|
|
41
|
+
}
|
|
42
|
+
} catch (err) {
|
|
43
|
+
_iterator.e(err);
|
|
44
|
+
} finally {
|
|
45
|
+
_iterator.f();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
_this.resizeObserver.observe(scrollRef.current);
|
|
32
49
|
}
|
|
33
50
|
});
|
|
34
51
|
(0, _defineProperty2["default"])(_this, "unregisterEventHandle", function () {
|
|
@@ -37,6 +54,10 @@ var Link = /*#__PURE__*/function (_React$Component) {
|
|
|
37
54
|
if (scrollRef.current) {
|
|
38
55
|
scrollRef.current.addEventListener('scroll', _this.onScroll);
|
|
39
56
|
}
|
|
57
|
+
if (_this.resizeObserver) {
|
|
58
|
+
_this.resizeObserver.disconnect();
|
|
59
|
+
_this.resizeObserver = null;
|
|
60
|
+
}
|
|
40
61
|
});
|
|
41
62
|
(0, _defineProperty2["default"])(_this, "onHideLinkMenu", function () {
|
|
42
63
|
_this.setState({
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _slate = require("@seafile/slate");
|
|
@@ -69,13 +70,34 @@ var RenderQuickInsert = function RenderQuickInsert(_ref, editor, readonly) {
|
|
|
69
70
|
(0, _react.useEffect)(function () {
|
|
70
71
|
if (readonly) return;
|
|
71
72
|
if (!sideMenuRef.current) return;
|
|
73
|
+
var resizeObserver = null;
|
|
72
74
|
var scrollDom = scrollRef.current;
|
|
73
75
|
handleInsertMenuStyle();
|
|
74
76
|
document.addEventListener('click', handleClick);
|
|
75
77
|
scrollDom.addEventListener('scroll', handleScroll);
|
|
78
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
79
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
80
|
+
_step;
|
|
81
|
+
try {
|
|
82
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
83
|
+
var entry = _step.value;
|
|
84
|
+
if (resizeObserver) {
|
|
85
|
+
handleScroll();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch (err) {
|
|
89
|
+
_iterator.e(err);
|
|
90
|
+
} finally {
|
|
91
|
+
_iterator.f();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
resizeObserver.observe(scrollDom);
|
|
76
95
|
return function () {
|
|
77
96
|
document.removeEventListener('click', handleClick);
|
|
78
97
|
scrollDom.removeEventListener('scroll', handleScroll);
|
|
98
|
+
if (resizeObserver) {
|
|
99
|
+
resizeObserver.disconnect();
|
|
100
|
+
}
|
|
79
101
|
};
|
|
80
102
|
}, [editor, element, handleClick, handleInsertMenuStyle, handleScroll, readonly, scrollRef]);
|
|
81
103
|
var handleInsertBlock = function handleInsertBlock(node) {
|
|
@@ -13,8 +13,12 @@ var _slate = require("@seafile/slate");
|
|
|
13
13
|
var _slateReact = require("@seafile/slate-react");
|
|
14
14
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
15
|
var _toast = _interopRequireDefault(require("../../../../components/toast"));
|
|
16
|
+
var _constants = require("../../../../constants");
|
|
17
|
+
var _usePlugins2 = require("../../../../hooks/use-plugins");
|
|
18
|
+
var _outline = require("../../../../outline");
|
|
19
|
+
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
16
20
|
var _commons = require("../../../commons");
|
|
17
|
-
var
|
|
21
|
+
var _constants2 = require("../constants");
|
|
18
22
|
var _helpers = require("../helpers");
|
|
19
23
|
require("./index.css");
|
|
20
24
|
var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
@@ -25,6 +29,8 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
25
29
|
onHideInsertHoverMenu = _ref.onHideInsertHoverMenu,
|
|
26
30
|
t = _ref.t,
|
|
27
31
|
url = _ref.url;
|
|
32
|
+
var _usePlugins = (0, _usePlugins2.usePlugins)(),
|
|
33
|
+
updateDisplayPlugin = _usePlugins.updateDisplayPlugin;
|
|
28
34
|
var readOnly = (0, _slateReact.useReadOnly)();
|
|
29
35
|
var _useState = (0, _react.useState)(false),
|
|
30
36
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -56,10 +62,25 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
56
62
|
onHideInsertHoverMenu();
|
|
57
63
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
64
|
}, []);
|
|
59
|
-
var
|
|
65
|
+
var handleOpenLinkPreview = (0, _react.useCallback)(function (pluginName) {
|
|
66
|
+
updateDisplayPlugin(pluginName, true);
|
|
67
|
+
var doc_uuid = element.doc_uuid,
|
|
68
|
+
title = element.title,
|
|
69
|
+
type = element.type;
|
|
70
|
+
var eventBus = _eventBus["default"].getInstance();
|
|
71
|
+
eventBus.dispatch(_constants.INTERNAL_EVENT.TRANSFER_PREVIEW_FILE_ID, {
|
|
72
|
+
doc_uuid: doc_uuid,
|
|
73
|
+
title: title,
|
|
74
|
+
type: type
|
|
75
|
+
});
|
|
76
|
+
setTimeout(function () {
|
|
77
|
+
onHideInsertHoverMenu();
|
|
78
|
+
}, 0);
|
|
79
|
+
}, [updateDisplayPlugin]);
|
|
80
|
+
var selectedType = element.display_type || _constants2.SDOC_LINK_TYPE.TEXT_LINK;
|
|
60
81
|
var id = "sdoc-link-display-type-".concat(element.id);
|
|
61
|
-
var newSdocFileTypes =
|
|
62
|
-
return (0, _helpers.isInTable)(editor, element) ? sdocLinkType !==
|
|
82
|
+
var newSdocFileTypes = _constants2.SDOC_LINK_TYPES.filter(function (sdocLinkType) {
|
|
83
|
+
return (0, _helpers.isInTable)(editor, element) ? sdocLinkType !== _constants2.SDOC_LINK_TYPE.CARD_LINK : true;
|
|
63
84
|
});
|
|
64
85
|
return /*#__PURE__*/_react["default"].createElement(_commons.ElementPopover, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
65
86
|
className: "sdoc-link-hover-menu-container",
|
|
@@ -78,7 +99,7 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
78
99
|
target: "_blank",
|
|
79
100
|
rel: "noopener noreferrer",
|
|
80
101
|
className: "link-op-menu-link"
|
|
81
|
-
}, t('Open_link')))), !readOnly && /*#__PURE__*/_react["default"].createElement("span", {
|
|
102
|
+
}, t('Open_link')))), !readOnly && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
82
103
|
className: "op-group-item"
|
|
83
104
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
84
105
|
role: "button",
|
|
@@ -92,16 +113,26 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
92
113
|
onClick: onShowProver,
|
|
93
114
|
id: id
|
|
94
115
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
95
|
-
className: (0, _classnames["default"])('icon-font mr-1',
|
|
116
|
+
className: (0, _classnames["default"])('icon-font mr-1', _constants2.SDOC_LINK_TYPE_CONFIG[selectedType].icon)
|
|
96
117
|
}), /*#__PURE__*/_react["default"].createElement("i", {
|
|
97
118
|
className: "sdocfont sdoc-drop-down icon-font"
|
|
98
|
-
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
119
|
+
}))), /*#__PURE__*/_react["default"].createElement("span", {
|
|
120
|
+
className: "op-group-item"
|
|
121
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
99
122
|
role: "button",
|
|
100
123
|
className: 'op-item',
|
|
101
124
|
onClick: onUnwrapFileLinkNode
|
|
102
125
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
103
126
|
className: "sdocfont sdoc-unlink icon-font"
|
|
104
|
-
}))
|
|
127
|
+
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
128
|
+
role: "button",
|
|
129
|
+
className: "op-item",
|
|
130
|
+
onClick: function onClick() {
|
|
131
|
+
return handleOpenLinkPreview('sdoc-file-preview');
|
|
132
|
+
}
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
134
|
+
className: "sdocfont eye icon-font"
|
|
135
|
+
}))))), isShowDisplayStylePopover && /*#__PURE__*/_react["default"].createElement("div", {
|
|
105
136
|
className: "sdoc-file-display-style-popover sdoc-dropdown-menu"
|
|
106
137
|
}, newSdocFileTypes.map(function (sdocLinkType) {
|
|
107
138
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -114,8 +145,8 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
114
145
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
115
146
|
className: "sdoc-dropdown-item-content"
|
|
116
147
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
117
|
-
className: (0, _classnames["default"])('sdoc-dropdown-item-content-icon',
|
|
118
|
-
}), /*#__PURE__*/_react["default"].createElement("span", null, t(
|
|
148
|
+
className: (0, _classnames["default"])('sdoc-dropdown-item-content-icon', _constants2.SDOC_LINK_TYPE_CONFIG[sdocLinkType].icon)
|
|
149
|
+
}), /*#__PURE__*/_react["default"].createElement("span", null, t(_constants2.SDOC_LINK_TYPE_CONFIG[sdocLinkType].text))), selectedType === sdocLinkType && /*#__PURE__*/_react["default"].createElement("i", {
|
|
119
150
|
className: "sdocfont sdoc-check-mark sdoc-dropdown-item-right-icon"
|
|
120
151
|
}));
|
|
121
152
|
}))));
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _slate = require("@seafile/slate");
|
|
@@ -75,9 +76,27 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
75
76
|
}, []);
|
|
76
77
|
(0, _react.useEffect)(function () {
|
|
77
78
|
var observerRefValue = null;
|
|
79
|
+
var resizeObserver = null;
|
|
78
80
|
if (isShowInsertHoverMenu) {
|
|
79
81
|
scrollRef.current && scrollRef.current.addEventListener('scroll', onScroll);
|
|
80
82
|
observerRefValue = scrollRef.current;
|
|
83
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
84
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
85
|
+
_step;
|
|
86
|
+
try {
|
|
87
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
88
|
+
var entry = _step.value;
|
|
89
|
+
if (resizeObserver) {
|
|
90
|
+
onScroll();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
} catch (err) {
|
|
94
|
+
_iterator.e(err);
|
|
95
|
+
} finally {
|
|
96
|
+
_iterator.f();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
resizeObserver.observe(scrollRef.current);
|
|
81
100
|
} else {
|
|
82
101
|
scrollRef.current && scrollRef.current.removeEventListener('scroll', onScroll);
|
|
83
102
|
}
|
|
@@ -85,6 +104,9 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
85
104
|
if (observerRefValue) {
|
|
86
105
|
observerRefValue.removeEventListener('scroll', onScroll);
|
|
87
106
|
}
|
|
107
|
+
if (resizeObserver) {
|
|
108
|
+
resizeObserver.disconnect();
|
|
109
|
+
}
|
|
88
110
|
};
|
|
89
111
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
90
112
|
}, [isShowInsertHoverMenu]);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.renderWhiteboard = renderWhiteboard;
|
|
9
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _slate = require("@seafile/slate");
|
|
@@ -80,27 +81,46 @@ var Whiteboard = function Whiteboard(_ref) {
|
|
|
80
81
|
var handleScroll = (0, _react.useCallback)(function (e) {
|
|
81
82
|
if (readOnly) return;
|
|
82
83
|
if (!isSelected) return;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
setMenuPosition(_menuPosition);
|
|
86
|
-
}
|
|
84
|
+
var menuPosition = (0, _utils.getMenuPosition)(whiteboardRef.current, editor);
|
|
85
|
+
setMenuPosition(menuPosition);
|
|
87
86
|
}, [editor, isSelected, readOnly]);
|
|
88
87
|
(0, _react.useEffect)(function () {
|
|
89
88
|
if (readOnly) return;
|
|
90
89
|
var observerRefValue = null;
|
|
90
|
+
var resizeObserver = null;
|
|
91
91
|
if (scrollRef.current) {
|
|
92
92
|
scrollRef.current.addEventListener('scroll', handleScroll);
|
|
93
93
|
observerRefValue = scrollRef.current;
|
|
94
|
+
resizeObserver = new ResizeObserver(function (entries) {
|
|
95
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])(entries),
|
|
96
|
+
_step;
|
|
97
|
+
try {
|
|
98
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
99
|
+
var entry = _step.value;
|
|
100
|
+
if (resizeObserver) {
|
|
101
|
+
handleScroll();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
} catch (err) {
|
|
105
|
+
_iterator.e(err);
|
|
106
|
+
} finally {
|
|
107
|
+
_iterator.f();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
resizeObserver.observe(scrollRef.current);
|
|
94
111
|
}
|
|
95
112
|
return function () {
|
|
96
113
|
observerRefValue.removeEventListener('scroll', handleScroll);
|
|
114
|
+
if (resizeObserver) {
|
|
115
|
+
resizeObserver.disconnect();
|
|
116
|
+
}
|
|
97
117
|
};
|
|
98
118
|
}, [handleScroll, readOnly, scrollRef]);
|
|
99
119
|
var handleOnClick = (0, _react.useCallback)(function () {
|
|
100
120
|
if (readOnly) return;
|
|
101
121
|
if (isSelected) {
|
|
102
|
-
var
|
|
103
|
-
setMenuPosition(
|
|
122
|
+
var _menuPosition = (0, _utils.getMenuPosition)(whiteboardRef.current, editor);
|
|
123
|
+
setMenuPosition(_menuPosition);
|
|
104
124
|
}
|
|
105
125
|
}, [editor, isSelected, readOnly]);
|
|
106
126
|
var openFullscreen = function openFullscreen() {
|
|
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _comment = _interopRequireDefault(require("../comment"));
|
|
12
12
|
var _commentOperation = _interopRequireDefault(require("../comment/components/comment-operation"));
|
|
13
13
|
var _constants = require("../constants");
|
|
14
|
+
var _fileLinkPreview = _interopRequireDefault(require("../extension/commons/file-link-preview"));
|
|
14
15
|
var PluginsContext = /*#__PURE__*/_react["default"].createContext(null);
|
|
15
16
|
var PluginsProvider = exports.PluginsProvider = function PluginsProvider(_ref) {
|
|
16
17
|
var showComment = _ref.showComment,
|
|
@@ -29,6 +30,12 @@ var PluginsProvider = exports.PluginsProvider = function PluginsProvider(_ref) {
|
|
|
29
30
|
}, []);
|
|
30
31
|
var plugins = (0, _react.useMemo)(function () {
|
|
31
32
|
var allPlugins = propsPlugins;
|
|
33
|
+
allPlugins.push({
|
|
34
|
+
name: 'sdoc-file-preview',
|
|
35
|
+
resizable_width: true,
|
|
36
|
+
display_type: _constants.PLUGIN_DISPLAY_TYPE.RIGHT_PANEL,
|
|
37
|
+
component: _fileLinkPreview["default"]
|
|
38
|
+
});
|
|
32
39
|
if (showComment) {
|
|
33
40
|
allPlugins.push({
|
|
34
41
|
name: 'sdoc-comment',
|
|
@@ -41,7 +48,8 @@ var PluginsProvider = exports.PluginsProvider = function PluginsProvider(_ref) {
|
|
|
41
48
|
return allPlugins;
|
|
42
49
|
}, [showComment, propsPlugins]);
|
|
43
50
|
var updateDisplayPlugin = (0, _react.useCallback)(function (name) {
|
|
44
|
-
|
|
51
|
+
var isFilePreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
52
|
+
if ((!name || displayName === name) && !isFilePreview) {
|
|
45
53
|
setDisplayName('');
|
|
46
54
|
return;
|
|
47
55
|
}
|
|
@@ -25,10 +25,18 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
25
25
|
plugins = _usePlugins.plugins,
|
|
26
26
|
displayPluginName = _usePlugins.displayPluginName,
|
|
27
27
|
closePlugin = _usePlugins.closePlugin;
|
|
28
|
-
var _useState = (0, _react.useState)(
|
|
28
|
+
var _useState = (0, _react.useState)(''),
|
|
29
29
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
title = _useState2[0],
|
|
31
|
+
setTitle = _useState2[1];
|
|
32
|
+
var _useState3 = (0, _react.useState)(''),
|
|
33
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
34
|
+
docUuid = _useState4[0],
|
|
35
|
+
setDocUuid = _useState4[1];
|
|
36
|
+
var _useState5 = (0, _react.useState)(MIN_PANEL_WIDTH),
|
|
37
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
38
|
+
width = _useState6[0],
|
|
39
|
+
setWidth = _useState6[1];
|
|
32
40
|
if (editor.editorType === _constants.WIKI_EDITOR) {
|
|
33
41
|
plugins = [{
|
|
34
42
|
name: 'sdoc-comment',
|
|
@@ -88,6 +96,22 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
88
96
|
var eventBus = _eventBus["default"].getInstance();
|
|
89
97
|
eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
|
|
90
98
|
}, [displayPluginName]);
|
|
99
|
+
var updateFilePreviewPlugin = (0, _react.useCallback)(function (_ref2) {
|
|
100
|
+
var doc_uuid = _ref2.doc_uuid,
|
|
101
|
+
title = _ref2.title,
|
|
102
|
+
type = _ref2.type;
|
|
103
|
+
if (type && type === 'sdoc_link') {
|
|
104
|
+
setTitle(title + '.sdoc');
|
|
105
|
+
}
|
|
106
|
+
setDocUuid(doc_uuid);
|
|
107
|
+
}, []);
|
|
108
|
+
(0, _react.useEffect)(function () {
|
|
109
|
+
var eventBus = _eventBus["default"].getInstance();
|
|
110
|
+
var unsubscribeTransferFileId = eventBus.subscribe(_constants.INTERNAL_EVENT.TRANSFER_PREVIEW_FILE_ID, updateFilePreviewPlugin);
|
|
111
|
+
return function () {
|
|
112
|
+
unsubscribeTransferFileId();
|
|
113
|
+
};
|
|
114
|
+
}, []);
|
|
91
115
|
if (!displayPluginName) return null;
|
|
92
116
|
var plugin = plugins.find(function (p) {
|
|
93
117
|
return p.name === displayPluginName;
|
|
@@ -111,7 +135,9 @@ var RightPanel = function RightPanel(_ref) {
|
|
|
111
135
|
editor: editor,
|
|
112
136
|
type: "global",
|
|
113
137
|
onClose: closePlugin,
|
|
114
|
-
width: width
|
|
138
|
+
width: width,
|
|
139
|
+
title: title,
|
|
140
|
+
docUuid: docUuid
|
|
115
141
|
})));
|
|
116
142
|
};
|
|
117
143
|
var _default = exports["default"] = RightPanel;
|
|
@@ -15,7 +15,7 @@ var getStyleByDefaultMode = exports.getStyleByDefaultMode = function getStyleByD
|
|
|
15
15
|
} : {};
|
|
16
16
|
|
|
17
17
|
// Has outline
|
|
18
|
-
if (isShowOutline && editor.editorType !== _constants.WIKI_EDITOR) {
|
|
18
|
+
if (isShowOutline && scrollRef.current && editor.editorType !== _constants.WIKI_EDITOR) {
|
|
19
19
|
var rect = scrollRef.current.getBoundingClientRect();
|
|
20
20
|
if ((rect.width - Number(_constants.ARTICLE_DEFAULT_WIDTH.slice(0, 3))) / 2 < 280) {
|
|
21
21
|
containerStyle['marginLeft'] = "".concat(_constants.LEFT_OUTLINE_WIDTH, "px");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.147",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"description": "",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@seafile/comment-editor": "0.0.
|
|
20
|
+
"@seafile/comment-editor": "^0.0.12",
|
|
21
21
|
"@seafile/print-js": "1.6.6",
|
|
22
22
|
"@seafile/react-image-lightbox": "4.0.2",
|
|
23
23
|
"@seafile/slate": "0.91.8",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "c3c26480c7f0959a1425e0f6f7048154f5aa87f4"
|
|
75
75
|
}
|