@seafile/sdoc-editor 3.0.47 → 3.0.49
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/assets/css/sdoc-editor-plugins.css +4 -0
- package/dist/editor/sdoc-editor.js +2 -1
- package/dist/editor/wiki-editor.js +2 -1
- package/dist/extension/plugins/ai/ai-module/index.js +3 -2
- package/dist/extension/plugins/code-block/plugin.js +2 -1
- package/dist/extension/plugins/link/plugin.js +2 -1
- package/dist/extension/plugins/list/plugin/insert-fragment-list.js +5 -4
- package/dist/extension/plugins/video/plugin.js +20 -0
- package/dist/extension/plugins/video/render-elem.js +5 -5
- package/package.json +4 -4
|
@@ -76,8 +76,9 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
76
76
|
// Fix: The editor's children are not updated when the document is updated in revision
|
|
77
77
|
// In revision mode, the document is updated, but the editor's children are not updated,as onValueChange override the new document.elements. This unexpected action cause the editor to display the old content
|
|
78
78
|
(0, _react.useEffect)(function () {
|
|
79
|
+
validEditor.children = document.elements;
|
|
79
80
|
_setSlateValue(document.elements);
|
|
80
|
-
}, [document.elements]);
|
|
81
|
+
}, [document.elements, validEditor]);
|
|
81
82
|
(0, _react.useEffect)(function () {
|
|
82
83
|
validEditor.readonly = false;
|
|
83
84
|
return function () {
|
|
@@ -62,8 +62,9 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
62
62
|
// Fix: The editor's children are not updated when the document is updated in revision
|
|
63
63
|
// In revision mode, the document is updated, but the editor's children are not updated,as onValueChange override the new document.elements. This unexpected action cause the editor to display the old content
|
|
64
64
|
(0, _react.useEffect)(function () {
|
|
65
|
+
validEditor.children = document.elements;
|
|
65
66
|
_setSlateValue(document.elements);
|
|
66
|
-
}, [document.elements]);
|
|
67
|
+
}, [document.elements, validEditor]);
|
|
67
68
|
(0, _react.useEffect)(function () {
|
|
68
69
|
validEditor.readonly = false;
|
|
69
70
|
return function () {
|
|
@@ -611,11 +611,12 @@ function AIModule(_ref) {
|
|
|
611
611
|
className: "sdoc-ai-result-content"
|
|
612
612
|
}, isGenerating ? t('Processing_message') : (0, _helpers.markdownTableRenderer)(searchResult))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
613
613
|
className: "sdoc-ai-search"
|
|
614
|
-
}, /*#__PURE__*/_react["default"].createElement(_aiIcon["default"], null), /*#__PURE__*/_react["default"].createElement("
|
|
614
|
+
}, /*#__PURE__*/_react["default"].createElement(_aiIcon["default"], null), /*#__PURE__*/_react["default"].createElement("textarea", {
|
|
615
615
|
placeholder: t('Ask_AI_anything'),
|
|
616
616
|
value: inputValue,
|
|
617
617
|
onKeyDown: onKeyDown,
|
|
618
|
-
onChange: onSearchValueChanged
|
|
618
|
+
onChange: onSearchValueChanged,
|
|
619
|
+
rows: 1
|
|
619
620
|
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
620
621
|
className: "sdocfont sdoc-send-arrow ".concat(!searchValue ? 'disable' : ''),
|
|
621
622
|
onClick: onEnter
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
|
+
var _arrayLikeToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/arrayLikeToArray"));
|
|
9
10
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toArray"));
|
|
10
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
11
12
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
@@ -99,7 +100,7 @@ var withCodeBlock = function withCodeBlock(editor) {
|
|
|
99
100
|
if (string.length !== 0 && _slate.Range.isCollapsed(newEditor.selection)) {
|
|
100
101
|
var _newData = (0, _toArray2["default"])(newData),
|
|
101
102
|
node = _newData[0],
|
|
102
|
-
restNode = _newData.slice(1);
|
|
103
|
+
restNode = (0, _arrayLikeToArray2["default"])(_newData).slice(1);
|
|
103
104
|
var text = _slate.Node.string(node);
|
|
104
105
|
insertText(text);
|
|
105
106
|
if (restNode.length !== 0) {
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _arrayLikeToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/arrayLikeToArray"));
|
|
8
9
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toArray"));
|
|
9
10
|
var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regenerator"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
@@ -159,7 +160,7 @@ var withLink = function withLink(editor) {
|
|
|
159
160
|
var _getSelectedElems = (0, _core.getSelectedElems)(newEditor),
|
|
160
161
|
_getSelectedElems2 = (0, _toArray2["default"])(_getSelectedElems),
|
|
161
162
|
firstSelectedNode = _getSelectedElems2[0],
|
|
162
|
-
restNodes = _getSelectedElems2.slice(1);
|
|
163
|
+
restNodes = (0, _arrayLikeToArray2["default"])(_getSelectedElems2).slice(1);
|
|
163
164
|
if (!firstSelectedNode || restNodes.length) return; // If select more than one node or not select any node, return
|
|
164
165
|
var isSelectTextNodes = firstSelectedNode.children.some(function (node) {
|
|
165
166
|
return _slate.Text.isText(node);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.insertFragmentList = exports.getTextAndListItemNodes = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
9
|
+
var _arrayLikeToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/arrayLikeToArray"));
|
|
9
10
|
var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toArray"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
12
|
var _slate = require("@seafile/slate");
|
|
@@ -52,7 +53,7 @@ var trimList = function trimList(listRoot) {
|
|
|
52
53
|
var _ref2 = isListRoot(commonAncestorEntry[0]) ? commonAncestorEntry[0].children : [commonAncestorEntry[0]],
|
|
53
54
|
_ref3 = (0, _toArray2["default"])(_ref2),
|
|
54
55
|
first = _ref3[0],
|
|
55
|
-
rest = _ref3.slice(1);
|
|
56
|
+
rest = (0, _arrayLikeToArray2["default"])(_ref3).slice(1);
|
|
56
57
|
return [].concat((0, _toConsumableArray2["default"])(findListItemsWithContent(first)), (0, _toConsumableArray2["default"])(rest));
|
|
57
58
|
};
|
|
58
59
|
var wrapNodeIntoListItem = function wrapNodeIntoListItem(node) {
|
|
@@ -87,7 +88,7 @@ var getTextAndListItemNodes = exports.getTextAndListItemNodes = function getText
|
|
|
87
88
|
var _fragment$flatMap$map = fragment.flatMap(trimList).map(wrapNodeIntoListItem),
|
|
88
89
|
_fragment$flatMap$map2 = (0, _toArray2["default"])(_fragment$flatMap$map),
|
|
89
90
|
first = _fragment$flatMap$map2[0],
|
|
90
|
-
rest = _fragment$flatMap$map2.slice(1);
|
|
91
|
+
rest = (0, _arrayLikeToArray2["default"])(_fragment$flatMap$map2).slice(1);
|
|
91
92
|
var textNode = null;
|
|
92
93
|
var listItemNodes = [];
|
|
93
94
|
if (isListRoot(fragment[0])) {
|
|
@@ -97,11 +98,11 @@ var getTextAndListItemNodes = exports.getTextAndListItemNodes = function getText
|
|
|
97
98
|
} else if (isEmptyNode) {
|
|
98
99
|
var li = (0, _core.getNode)(editor, liPath);
|
|
99
100
|
var _li$children = (0, _toArray2["default"])(li.children),
|
|
100
|
-
currentSubLists = _li$children.slice(1); // old
|
|
101
|
+
currentSubLists = (0, _arrayLikeToArray2["default"])(_li$children).slice(1); // old
|
|
101
102
|
|
|
102
103
|
var _first$children = (0, _toArray2["default"])(first.children),
|
|
103
104
|
newLic = _first$children[0],
|
|
104
|
-
newSubLists = _first$children.slice(1); // copied
|
|
105
|
+
newSubLists = (0, _arrayLikeToArray2["default"])(_first$children).slice(1); // copied
|
|
105
106
|
// insert copied contents
|
|
106
107
|
_slate.Transforms.insertNodes(editor, newLic, {
|
|
107
108
|
at: _slate.Path.next(licPath),
|
|
@@ -29,6 +29,26 @@ var withVideo = function withVideo(editor) {
|
|
|
29
29
|
_ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
30
30
|
videoNode = _ref2[0],
|
|
31
31
|
path = _ref2[1];
|
|
32
|
+
if ((0, _isHotkey["default"])(['left', 'right'], event)) {
|
|
33
|
+
var selection = editor.selection;
|
|
34
|
+
if (!_slate.Range.isCollapsed(selection)) return true;
|
|
35
|
+
if ((0, _isHotkey["default"])('right', event)) {
|
|
36
|
+
var _nextEntry$;
|
|
37
|
+
var nextEntry = (0, _core.getNextNode)(editor);
|
|
38
|
+
if (nextEntry && ((_nextEntry$ = nextEntry[0]) === null || _nextEntry$ === void 0 ? void 0 : _nextEntry$.type) === _constants.VIDEO) {
|
|
39
|
+
_slate.Transforms.select(editor, nextEntry[1]);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if ((0, _isHotkey["default"])('left', event)) {
|
|
44
|
+
var _prevEntry$;
|
|
45
|
+
var prevEntry = (0, _core.getPrevNode)(editor);
|
|
46
|
+
if (prevEntry && ((_prevEntry$ = prevEntry[0]) === null || _prevEntry$ === void 0 ? void 0 : _prevEntry$.type) === _constants.VIDEO) {
|
|
47
|
+
_slate.Transforms.select(editor, prevEntry[1]);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
32
52
|
if (path) {
|
|
33
53
|
// Insert empty paragraph node after video when clicking 'enter' on selected video
|
|
34
54
|
if ((0, _isHotkey["default"])('enter', event)) {
|
|
@@ -74,9 +74,8 @@ var Video = function Video(_ref) {
|
|
|
74
74
|
setIsLoaded(true);
|
|
75
75
|
};
|
|
76
76
|
var onClickVideo = (0, _react.useCallback)(function (e) {
|
|
77
|
+
e.preventDefault();
|
|
77
78
|
e.stopPropagation();
|
|
78
|
-
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
79
|
-
_slate.Transforms.select(editor, path);
|
|
80
79
|
setIsSelected(true);
|
|
81
80
|
}, [editor, element]);
|
|
82
81
|
var setPosition = (0, _react.useCallback)(function (elem) {
|
|
@@ -239,16 +238,17 @@ var Video = function Video(_ref) {
|
|
|
239
238
|
}))))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
240
239
|
"data-id": element.id,
|
|
241
240
|
className: "sdoc-video-wrapper",
|
|
241
|
+
contentEditable: false,
|
|
242
242
|
style: {
|
|
243
243
|
display: isLoaded ? 'flex' : 'none'
|
|
244
|
-
}
|
|
244
|
+
},
|
|
245
|
+
onClick: onClickVideo
|
|
245
246
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
246
247
|
className: "sdoc-video-inner",
|
|
247
248
|
ref: wrapperRef,
|
|
248
249
|
style: (0, _objectSpread4["default"])({
|
|
249
250
|
visibility: isLoaded ? 'visible' : 'hidden'
|
|
250
|
-
}, getVideoWidthStyle())
|
|
251
|
-
onClick: onClickVideo
|
|
251
|
+
}, getVideoWidthStyle())
|
|
252
252
|
}, !isEmbeddableLink && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("video", {
|
|
253
253
|
className: "sdoc-video-element",
|
|
254
254
|
ref: videoRef,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.49",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"description": "",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@seafile/comment-editor": "1.0.
|
|
20
|
+
"@seafile/comment-editor": "1.0.8",
|
|
21
21
|
"@seafile/print-js": "1.6.6",
|
|
22
|
-
"@seafile/react-image-lightbox": "5.0.
|
|
22
|
+
"@seafile/react-image-lightbox": "5.0.4",
|
|
23
23
|
"@seafile/seafile-database": "0.0.17",
|
|
24
24
|
"@seafile/slate": "0.91.8",
|
|
25
25
|
"@seafile/slate-history": "0.86.2",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "2a5bab0471c6769feddc3442bdd7fa9492aa3126"
|
|
76
76
|
}
|