@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.
@@ -42,6 +42,10 @@
42
42
  cursor: pointer;
43
43
  }
44
44
 
45
+ .sdoc-editor__article .list-container .sdoc-li-content {
46
+ display: inline-grid;
47
+ }
48
+
45
49
  .sdoc-editor__article .list-container .sdoc-li-prefix {
46
50
  font-size: 12px;
47
51
  color: #666;
@@ -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("input", {
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.47",
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.7",
20
+ "@seafile/comment-editor": "1.0.8",
21
21
  "@seafile/print-js": "1.6.6",
22
- "@seafile/react-image-lightbox": "5.0.3",
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": "79dfe0305899d552675866198e44cbe257358f64"
75
+ "gitHead": "2a5bab0471c6769feddc3442bdd7fa9492aa3126"
76
76
  }