@seafile/sdoc-editor 2.0.94 → 2.0.96
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/comment/components/comment-image-previewer.js +39 -0
- package/dist/comment/components/comment-item-content.js +17 -1
- package/dist/comment/components/comment-item-reply.js +28 -12
- package/dist/comment/components/comment-list.css +4 -0
- package/dist/editor/editable-article.js +9 -6
- package/dist/extension/plugins/ai/ai-module/index.js +4 -1
- package/dist/extension/plugins/file-link/render-elem.css +1 -0
- package/dist/extension/plugins/sdoc-link/helpers.js +7 -1
- package/dist/extension/plugins/sdoc-link/hover-menu/index.js +7 -9
- package/dist/extension/plugins/text-style/render-elem.js +33 -10
- package/dist/socket/with-socket-io.js +6 -0
- package/package.json +2 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _reactImageLightbox = _interopRequireDefault(require("@seafile/react-image-lightbox"));
|
|
10
|
+
require("@seafile/react-image-lightbox/style.css");
|
|
11
|
+
function CommentImagePreviewer(props) {
|
|
12
|
+
var mainSrc = props.imageUrl;
|
|
13
|
+
var imageTitle = '';
|
|
14
|
+
try {
|
|
15
|
+
imageTitle = mainSrc ? decodeURI(mainSrc.slice(mainSrc.lastIndexOf('/') + 1)) : '';
|
|
16
|
+
} catch (error) {
|
|
17
|
+
// eslint-disable-next-line no-console
|
|
18
|
+
console.log(error);
|
|
19
|
+
}
|
|
20
|
+
return /*#__PURE__*/_react["default"].createElement(_reactImageLightbox["default"], {
|
|
21
|
+
wrapperClassName: "sf-editor-image-previewer",
|
|
22
|
+
imageTitle: /*#__PURE__*/_react["default"].createElement("span", {
|
|
23
|
+
className: "d-flex"
|
|
24
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
25
|
+
className: "text-truncate"
|
|
26
|
+
}, imageTitle)),
|
|
27
|
+
mainSrc: mainSrc,
|
|
28
|
+
toolbarButtons: [],
|
|
29
|
+
nextSrc: mainSrc,
|
|
30
|
+
prevSrc: mainSrc,
|
|
31
|
+
onCloseRequest: props.toggle,
|
|
32
|
+
onMovePrevRequest: function onMovePrevRequest() {},
|
|
33
|
+
onMoveNextRequest: function onMoveNextRequest() {},
|
|
34
|
+
reactModalProps: {
|
|
35
|
+
shouldReturnFocusAfterClose: false
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
var _default = exports["default"] = CommentImagePreviewer;
|
|
@@ -19,6 +19,7 @@ var _context2 = _interopRequireDefault(require("../../context"));
|
|
|
19
19
|
var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
|
|
20
20
|
var _notificationHooks = require("../hooks/notification-hooks");
|
|
21
21
|
var _commentEditor = _interopRequireDefault(require("./comment-editor"));
|
|
22
|
+
var _commentImagePreviewer = _interopRequireDefault(require("./comment-image-previewer"));
|
|
22
23
|
var CommentItemContent = function CommentItemContent(_ref) {
|
|
23
24
|
var isActive = _ref.isActive,
|
|
24
25
|
container = _ref.container,
|
|
@@ -42,6 +43,10 @@ var CommentItemContent = function CommentItemContent(_ref) {
|
|
|
42
43
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
43
44
|
editorContent = _useState6[0],
|
|
44
45
|
setEditorContent = _useState6[1];
|
|
46
|
+
var _useState7 = (0, _react.useState)(''),
|
|
47
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
48
|
+
imageUrl = _useState8[0],
|
|
49
|
+
setImageUrl = _useState8[1];
|
|
45
50
|
var onEditToggle = (0, _react.useCallback)(function (event) {
|
|
46
51
|
event.stopPropagation();
|
|
47
52
|
setIsEditing(true);
|
|
@@ -109,6 +114,11 @@ var CommentItemContent = function CommentItemContent(_ref) {
|
|
|
109
114
|
return "comment_".concat(comment.id);
|
|
110
115
|
}, [comment]);
|
|
111
116
|
var user = _context2["default"].getUserInfo();
|
|
117
|
+
var onCommentContentClick = (0, _react.useCallback)(function (event) {
|
|
118
|
+
if (event.target && event.target.tagName === 'IMG' && event.target.src) {
|
|
119
|
+
setImageUrl(event.target.src);
|
|
120
|
+
}
|
|
121
|
+
}, []);
|
|
112
122
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
113
123
|
className: "comment-item"
|
|
114
124
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -171,7 +181,8 @@ var CommentItemContent = function CommentItemContent(_ref) {
|
|
|
171
181
|
tag: "div",
|
|
172
182
|
onClick: resubmit
|
|
173
183
|
}, t('Resubmit')))))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
174
|
-
className: "comment-content"
|
|
184
|
+
className: "comment-content",
|
|
185
|
+
onClick: onCommentContentClick
|
|
175
186
|
}, !isEditing && /*#__PURE__*/_react["default"].createElement("div", {
|
|
176
187
|
dangerouslySetInnerHTML: {
|
|
177
188
|
__html: editorContent
|
|
@@ -181,6 +192,11 @@ var CommentItemContent = function CommentItemContent(_ref) {
|
|
|
181
192
|
content: comment.comment,
|
|
182
193
|
updateContent: updateContent,
|
|
183
194
|
setIsEditing: setIsEditing
|
|
195
|
+
}), imageUrl && /*#__PURE__*/_react["default"].createElement(_commentImagePreviewer["default"], {
|
|
196
|
+
imageUrl: imageUrl,
|
|
197
|
+
toggle: function toggle() {
|
|
198
|
+
return setImageUrl('');
|
|
199
|
+
}
|
|
184
200
|
}));
|
|
185
201
|
};
|
|
186
202
|
var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(CommentItemContent);
|
|
@@ -17,6 +17,7 @@ var _context2 = _interopRequireDefault(require("../../context"));
|
|
|
17
17
|
var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
|
|
18
18
|
var _commentDeletePopover = _interopRequireDefault(require("./comment-delete-popover"));
|
|
19
19
|
var _commentEditor = _interopRequireDefault(require("./comment-editor"));
|
|
20
|
+
var _commentImagePreviewer = _interopRequireDefault(require("./comment-image-previewer"));
|
|
20
21
|
var CommentItemReply = function CommentItemReply(_ref) {
|
|
21
22
|
var isActive = _ref.isActive,
|
|
22
23
|
container = _ref.container,
|
|
@@ -28,24 +29,28 @@ var CommentItemReply = function CommentItemReply(_ref) {
|
|
|
28
29
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
29
30
|
isDropdownOpen = _useState2[0],
|
|
30
31
|
setDropdownOpen = _useState2[1];
|
|
31
|
-
var
|
|
32
|
-
var _useState3 = (0, _react.useState)(false),
|
|
32
|
+
var _useState3 = (0, _react.useState)(''),
|
|
33
33
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var
|
|
34
|
+
imageUrl = _useState4[0],
|
|
35
|
+
setImageUrl = _useState4[1];
|
|
36
|
+
var itemRef = (0, _react.useRef)(null);
|
|
37
|
+
var _useState5 = (0, _react.useState)(false),
|
|
37
38
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
isEditing = _useState6[0],
|
|
40
|
+
setIsEditing = _useState6[1];
|
|
41
|
+
var _useState7 = (0, _react.useState)(''),
|
|
42
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
43
|
+
editorContent = _useState8[0],
|
|
44
|
+
setEditorContent = _useState8[1];
|
|
40
45
|
var replyOpToolsId = "replyOpTools_".concat(reply.id);
|
|
41
46
|
var onEditToggle = (0, _react.useCallback)(function (event) {
|
|
42
47
|
event.stopPropagation();
|
|
43
48
|
setIsEditing(true);
|
|
44
49
|
}, []);
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
isShowDeletePopover =
|
|
48
|
-
setIsShowDeletePopover =
|
|
50
|
+
var _useState9 = (0, _react.useState)(false),
|
|
51
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
52
|
+
isShowDeletePopover = _useState0[0],
|
|
53
|
+
setIsShowDeletePopover = _useState0[1];
|
|
49
54
|
var onDeleteToggle = (0, _react.useCallback)(function (event) {
|
|
50
55
|
event.stopPropagation();
|
|
51
56
|
setIsShowDeletePopover(true);
|
|
@@ -91,6 +96,11 @@ var CommentItemReply = function CommentItemReply(_ref) {
|
|
|
91
96
|
setIsEditing(false);
|
|
92
97
|
}, [reply, updateReply]);
|
|
93
98
|
var user = _context2["default"].getUserInfo();
|
|
99
|
+
var onCommentContentClick = (0, _react.useCallback)(function (event) {
|
|
100
|
+
if (event.target && event.target.tagName === 'IMG' && event.target.src) {
|
|
101
|
+
setImageUrl(event.target.src);
|
|
102
|
+
}
|
|
103
|
+
}, []);
|
|
94
104
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
95
105
|
className: "comment-item",
|
|
96
106
|
ref: itemRef
|
|
@@ -134,7 +144,8 @@ var CommentItemReply = function CommentItemReply(_ref) {
|
|
|
134
144
|
tag: "div",
|
|
135
145
|
onClick: onDeleteToggle
|
|
136
146
|
}, t('Delete')))))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
137
|
-
className: "comment-content"
|
|
147
|
+
className: "comment-content",
|
|
148
|
+
onClick: onCommentContentClick
|
|
138
149
|
}, !isEditing && /*#__PURE__*/_react["default"].createElement("div", {
|
|
139
150
|
dangerouslySetInnerHTML: {
|
|
140
151
|
__html: editorContent
|
|
@@ -151,6 +162,11 @@ var CommentItemReply = function CommentItemReply(_ref) {
|
|
|
151
162
|
deleteConfirm: _deleteReply,
|
|
152
163
|
setIsShowDeletePopover: setIsShowDeletePopover,
|
|
153
164
|
targetId: replyOpToolsId
|
|
165
|
+
}), imageUrl && /*#__PURE__*/_react["default"].createElement(_commentImagePreviewer["default"], {
|
|
166
|
+
imageUrl: imageUrl,
|
|
167
|
+
toggle: function toggle() {
|
|
168
|
+
return setImageUrl('');
|
|
169
|
+
}
|
|
154
170
|
}));
|
|
155
171
|
};
|
|
156
172
|
var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(CommentItemReply);
|
|
@@ -72,6 +72,11 @@ var EditableArticle = function EditableArticle(_ref) {
|
|
|
72
72
|
clientHeight = _scrollRef$current.clientHeight;
|
|
73
73
|
eventProxy.onKeyDown(event);
|
|
74
74
|
if (event.key === 'ArrowLeft') {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
_slate.Transforms.move(editor, {
|
|
77
|
+
unit: 'offset',
|
|
78
|
+
reverse: true
|
|
79
|
+
});
|
|
75
80
|
if (!(0, _core.isSelectionAtBlockStart)(editor)) return;
|
|
76
81
|
}
|
|
77
82
|
if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {
|
|
@@ -88,6 +93,10 @@ var EditableArticle = function EditableArticle(_ref) {
|
|
|
88
93
|
return;
|
|
89
94
|
}
|
|
90
95
|
if (event.key === 'ArrowRight') {
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
_slate.Transforms.move(editor, {
|
|
98
|
+
unit: 'offset'
|
|
99
|
+
});
|
|
91
100
|
if (!(0, _core.isSelectionAtBlockEnd)(editor)) return;
|
|
92
101
|
}
|
|
93
102
|
if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {
|
|
@@ -196,11 +205,6 @@ var EditableArticle = function EditableArticle(_ref) {
|
|
|
196
205
|
|
|
197
206
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
198
207
|
}, [scrollRef]);
|
|
199
|
-
var onCompositionEnd = (0, _react.useCallback)(function (event) {
|
|
200
|
-
if (event.data && _commonUtils.isMobile) {
|
|
201
|
-
editor.insertText(event.data);
|
|
202
|
-
}
|
|
203
|
-
}, []);
|
|
204
208
|
var handleScrollIntoView = (0, _react.useCallback)(function (editor, domRange) {
|
|
205
209
|
try {
|
|
206
210
|
var selection = editor.selection;
|
|
@@ -241,7 +245,6 @@ var EditableArticle = function EditableArticle(_ref) {
|
|
|
241
245
|
onCut: eventProxy.onCut,
|
|
242
246
|
onCopy: eventProxy.onCopy,
|
|
243
247
|
onCompositionStart: eventProxy.onCompositionStart,
|
|
244
|
-
onCompositionEnd: onCompositionEnd,
|
|
245
248
|
id: "sdoc-editor",
|
|
246
249
|
"aria-label": "textbox"
|
|
247
250
|
})), /*#__PURE__*/_react["default"].createElement(_extension.SideToolbar, null), showComment && /*#__PURE__*/_react["default"].createElement(_comment["default"], {
|
|
@@ -422,7 +422,7 @@ function AIModule(_ref) {
|
|
|
422
422
|
var aboveNode = (0, _core.getAboveBlockNode)(editor, {
|
|
423
423
|
at: end
|
|
424
424
|
});
|
|
425
|
-
nextPath = _slate.Path.next(aboveNode[1]);
|
|
425
|
+
nextPath = _slate.Path.next([aboveNode[1][0]]);
|
|
426
426
|
} else {
|
|
427
427
|
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
428
428
|
nextPath = _slate.Path.next(path);
|
|
@@ -443,6 +443,9 @@ function AIModule(_ref) {
|
|
|
443
443
|
case _constants2.OPERATION_TYPES.TRANSLATE:
|
|
444
444
|
onTranslateClick();
|
|
445
445
|
return;
|
|
446
|
+
case _constants2.OPERATION_TYPES.MORE_FLUENT:
|
|
447
|
+
onMoreFluentClick();
|
|
448
|
+
return;
|
|
446
449
|
case _constants2.OPERATION_TYPES.MORE_DETAILS:
|
|
447
450
|
onMoreDetailsClick();
|
|
448
451
|
return;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.unwrapLinkNode = exports.removeTempInput = exports.removeShortCutSymbol = exports.onCopySdocLinkNode = exports.isTriggeredByShortcut = exports.isMenuDisabled = exports.insertTextWhenRemoveFileNameCollector = exports.insertTempInput = exports.insertSdocFileLink = exports.getUrl = exports.getType = exports.getSdocLinkEntry = exports.getSdocFileIcon = exports.getNewFileListData = exports.getFileSearchInputEntry = exports.getBeforeText = exports.generateSdocFileNode = void 0;
|
|
7
|
+
exports.unwrapLinkNode = exports.removeTempInput = exports.removeShortCutSymbol = exports.onCopySdocLinkNode = exports.isTriggeredByShortcut = exports.isMenuDisabled = exports.isInTable = exports.insertTextWhenRemoveFileNameCollector = exports.insertTempInput = exports.insertSdocFileLink = exports.getUrl = exports.getType = exports.getSdocLinkEntry = exports.getSdocFileIcon = exports.getNewFileListData = exports.getFileSearchInputEntry = exports.getBeforeText = exports.generateSdocFileNode = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
@@ -275,4 +275,10 @@ var getSdocLinkEntry = exports.getSdocLinkEntry = function getSdocLinkEntry(edit
|
|
|
275
275
|
at: at
|
|
276
276
|
});
|
|
277
277
|
return aboveNodeEntry;
|
|
278
|
+
};
|
|
279
|
+
var isInTable = exports.isInTable = function isInTable(editor, element) {
|
|
280
|
+
var _getNode;
|
|
281
|
+
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
282
|
+
var isInTable = ((_getNode = (0, _core.getNode)(editor, [path[0]])) === null || _getNode === void 0 ? void 0 : _getNode.type) === _constants.TABLE;
|
|
283
|
+
return isInTable;
|
|
278
284
|
};
|
|
@@ -14,9 +14,7 @@ var _slateReact = require("@seafile/slate-react");
|
|
|
14
14
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
15
15
|
var _toast = _interopRequireDefault(require("../../../../components/toast"));
|
|
16
16
|
var _commons = require("../../../commons");
|
|
17
|
-
var _constants = require("
|
|
18
|
-
var _core = require("../../../core");
|
|
19
|
-
var _constants2 = require("../constants");
|
|
17
|
+
var _constants = require("../constants");
|
|
20
18
|
var _helpers = require("../helpers");
|
|
21
19
|
require("./index.css");
|
|
22
20
|
var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
@@ -58,10 +56,10 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
58
56
|
onHideInsertHoverMenu();
|
|
59
57
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
58
|
}, []);
|
|
61
|
-
var selectedType = element.display_type ||
|
|
59
|
+
var selectedType = element.display_type || _constants.SDOC_LINK_TYPE.TEXT_LINK;
|
|
62
60
|
var id = "sdoc-link-display-type-".concat(element.id);
|
|
63
|
-
var newSdocFileTypes =
|
|
64
|
-
return (0,
|
|
61
|
+
var newSdocFileTypes = _constants.SDOC_LINK_TYPES.filter(function (sdocLinkType) {
|
|
62
|
+
return (0, _helpers.isInTable)(editor, element) ? sdocLinkType !== _constants.SDOC_LINK_TYPE.CARD_LINK : true;
|
|
65
63
|
});
|
|
66
64
|
return /*#__PURE__*/_react["default"].createElement(_commons.ElementPopover, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
67
65
|
className: "sdoc-link-hover-menu-container",
|
|
@@ -94,7 +92,7 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
94
92
|
onClick: onShowProver,
|
|
95
93
|
id: id
|
|
96
94
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
97
|
-
className: (0, _classnames["default"])('icon-font mr-1',
|
|
95
|
+
className: (0, _classnames["default"])('icon-font mr-1', _constants.SDOC_LINK_TYPE_CONFIG[selectedType].icon)
|
|
98
96
|
}), /*#__PURE__*/_react["default"].createElement("i", {
|
|
99
97
|
className: "sdocfont sdoc-drop-down icon-font"
|
|
100
98
|
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
@@ -116,8 +114,8 @@ var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
|
116
114
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
117
115
|
className: "sdoc-dropdown-item-content"
|
|
118
116
|
}, /*#__PURE__*/_react["default"].createElement("i", {
|
|
119
|
-
className: (0, _classnames["default"])('sdoc-dropdown-item-content-icon',
|
|
120
|
-
}), /*#__PURE__*/_react["default"].createElement("span", null, t(
|
|
117
|
+
className: (0, _classnames["default"])('sdoc-dropdown-item-content-icon', _constants.SDOC_LINK_TYPE_CONFIG[sdocLinkType].icon)
|
|
118
|
+
}), /*#__PURE__*/_react["default"].createElement("span", null, t(_constants.SDOC_LINK_TYPE_CONFIG[sdocLinkType].text))), selectedType === sdocLinkType && /*#__PURE__*/_react["default"].createElement("i", {
|
|
121
119
|
className: "sdocfont sdoc-check-mark sdoc-dropdown-item-right-icon"
|
|
122
120
|
}));
|
|
123
121
|
}))));
|
|
@@ -139,15 +139,38 @@ var renderText = function renderText(props) {
|
|
|
139
139
|
className: "token ".concat(leaf.type)
|
|
140
140
|
}, markedChildren);
|
|
141
141
|
}
|
|
142
|
-
|
|
143
|
-
"
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
142
|
+
var GenericLeafStyle = function GenericLeafStyle() {
|
|
143
|
+
return /*#__PURE__*/_react["default"].createElement("span", Object.assign({
|
|
144
|
+
"data-id": leaf.id
|
|
145
|
+
}, attributes, {
|
|
146
|
+
style: style,
|
|
147
|
+
className: Object.keys(rest).join(' ')
|
|
148
|
+
}), leaf.isCaret ? /*#__PURE__*/_react["default"].createElement(_caret["default"], leaf) : null, leaf.isCaret && /*#__PURE__*/_react["default"].createElement("span", {
|
|
149
|
+
key: Math.random(),
|
|
150
|
+
"data-slate-zero-width": "z",
|
|
151
|
+
"data-slate-length": "0"
|
|
152
|
+
}, "\uFEFF"), !leaf.isCaret && markedChildren);
|
|
153
|
+
};
|
|
154
|
+
var CursorPositonFix = function CursorPositonFix() {
|
|
155
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
156
|
+
contentEditable: false,
|
|
157
|
+
style: {
|
|
158
|
+
fontSize: 1
|
|
159
|
+
}
|
|
160
|
+
}, String.fromCodePoint(160) /* Non-breaking space */);
|
|
161
|
+
};
|
|
162
|
+
var InlineCodeCustomized = function InlineCodeCustomized() {
|
|
163
|
+
return /*#__PURE__*/_react["default"].createElement("span", Object.assign({
|
|
164
|
+
"data-id": leaf.id
|
|
165
|
+
}, attributes, {
|
|
166
|
+
style: style,
|
|
167
|
+
className: Object.keys(rest).join(' ')
|
|
168
|
+
}), leaf.isCaret ? /*#__PURE__*/_react["default"].createElement(_caret["default"], leaf) : null, leaf.isCaret && /*#__PURE__*/_react["default"].createElement("span", {
|
|
169
|
+
key: Math.random(),
|
|
170
|
+
"data-slate-zero-width": "z",
|
|
171
|
+
"data-slate-length": "0"
|
|
172
|
+
}, "\uFEFF"), /*#__PURE__*/_react["default"].createElement(CursorPositonFix, null), !leaf.isCaret && markedChildren, /*#__PURE__*/_react["default"].createElement(CursorPositonFix, null));
|
|
173
|
+
};
|
|
174
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, leaf[_constants.TEXT_STYLE_MAP.CODE] && /*#__PURE__*/_react["default"].createElement(InlineCodeCustomized, null) || /*#__PURE__*/_react["default"].createElement(GenericLeafStyle, null));
|
|
152
175
|
};
|
|
153
176
|
var _default = exports["default"] = renderText;
|
|
@@ -12,6 +12,7 @@ var withSocketIO = function withSocketIO(editor, options) {
|
|
|
12
12
|
var onChange = editor.onChange;
|
|
13
13
|
var newEditor = editor;
|
|
14
14
|
var socketManager = null;
|
|
15
|
+
var lastOperations = null;
|
|
15
16
|
var user = options.config.user;
|
|
16
17
|
newEditor.user = user;
|
|
17
18
|
newEditor.openConnection = function () {
|
|
@@ -30,6 +31,11 @@ var withSocketIO = function withSocketIO(editor, options) {
|
|
|
30
31
|
var document = options.document,
|
|
31
32
|
config = options.config;
|
|
32
33
|
var operations = newEditor.operations;
|
|
34
|
+
// mobile: If the operation is exactly the same as the previous one, return directly
|
|
35
|
+
if (JSON.stringify(operations) === JSON.stringify(lastOperations)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
lastOperations = operations;
|
|
33
39
|
if (!newEditor.isRemote && operations.length > 0) {
|
|
34
40
|
var isAllSetSelection = operations.every(function (operation) {
|
|
35
41
|
return operation.type === 'set_selection';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.96",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "c2ceb9c5be6f89eea943cc6e0fd856b35791191f"
|
|
74
74
|
}
|