@seafile/seafile-editor 1.0.72 → 1.0.74

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.
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeAcrossBlocks = exports.isLastNode = exports.isLastChild = exports.isFirstNode = exports.isFirstChild = exports.isEndPoint = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getSelectedNodeEntryByTypes = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEditorString = exports.getDeepInlineChildren = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
7
+ exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeAcrossBlocks = exports.isLastNode = exports.isLastChild = exports.isFirstNode = exports.isFirstChild = exports.isEndPoint = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getSelectedNodeEntryByTypes = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getInlineNodes = exports.getEditorString = exports.getDeepInlineChildren = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
7
8
  var _slate = require("slate");
8
9
  var _slateReact = require("slate-react");
10
+ var _slugid = _interopRequireDefault(require("slugid"));
9
11
  var _utils = require("../utils");
12
+ var _elementTypes = require("../../constants/element-types");
10
13
  // options
11
14
  const getQueryOptions = (editor, options) => {
12
15
  const {
@@ -443,4 +446,34 @@ const isTextNode = node => {
443
446
  if (!node) return false;
444
447
  if (Reflect.has(node, 'children')) return false;
445
448
  };
446
- exports.isTextNode = isTextNode;
449
+ exports.isTextNode = isTextNode;
450
+ const getInlineNodes = node => {
451
+ if (!node.type) return [node];
452
+ // image
453
+ if (node.type === _elementTypes.IMAGE) return [node];
454
+ // link
455
+ if (node.type === _elementTypes.LINK) return [node];
456
+ // column
457
+ if (node.type === _elementTypes.COLUMN) return [node];
458
+ const {
459
+ children
460
+ } = node;
461
+ const defaultNode = {
462
+ id: _slugid.default.nice(),
463
+ text: ''
464
+ };
465
+ if (!children) return [defaultNode];
466
+ const result = children.map(item => {
467
+ // text
468
+ if (!item.type) return item;
469
+ // image
470
+ if (item.type === _elementTypes.IMAGE) return item;
471
+ // link
472
+ if (item.type === _elementTypes.LINK) return item;
473
+ // column
474
+ if (item.type === _elementTypes.COLUMN) return item;
475
+ return getInlineNodes(node);
476
+ });
477
+ return result.flat();
478
+ };
479
+ exports.getInlineNodes = getInlineNodes;
@@ -8,6 +8,7 @@ var _slate = require("slate");
8
8
  var _core = require("../../core");
9
9
  var _elementTypes = require("../../constants/element-types");
10
10
  var _helper = require("../paragraph/helper");
11
+ var _constants = require("../../constants");
11
12
  const withCheckList = editor => {
12
13
  const {
13
14
  insertBreak,
@@ -40,12 +41,9 @@ const withCheckList = editor => {
40
41
  } = newEditor;
41
42
  if (selection && _slate.Range.isCollapsed(selection)) {
42
43
  const selectedCheckListNode = (0, _core.getSelectedNodeByType)(newEditor, _elementTypes.CHECK_LIST_ITEM);
43
- if (selectedCheckListNode) {
44
- const checkListNodeText = _slate.Node.string(selectedCheckListNode);
45
- if (!checkListNodeText.length) {
46
- (0, _helper.transformToParagraph)(newEditor);
47
- return;
48
- }
44
+ if (selectedCheckListNode && (0, _core.isSelectionAtBlockStart)(editor)) {
45
+ (0, _helper.transformToParagraph)(newEditor);
46
+ return;
49
47
  }
50
48
  }
51
49
  deleteBackward(unit);
@@ -59,6 +57,27 @@ const withCheckList = editor => {
59
57
  });
60
58
  if (!checkListEntry) return insertFragment(fragment);
61
59
  const firstChild = fragment[0];
60
+ if (fragment.length === 1 && _constants.LIST_TYPE_ARRAY.includes(firstChild.type)) {
61
+ // insert text
62
+ if (firstChild.children.length === 1) {
63
+ const text = _slate.Node.string(fragment[0]);
64
+ (0, _slate.insertText)(text);
65
+ return;
66
+ }
67
+
68
+ // insert list at current path
69
+ if ((0, _core.isSelectionAtBlockStart)(editor)) {
70
+ _slate.Transforms.insertNodes(newEditor, fragment);
71
+ return;
72
+ }
73
+
74
+ // insert list at next path
75
+ const nextPath = _slate.Path.next(checkListEntry[1]);
76
+ _slate.Transforms.insertNodes(newEditor, fragment, {
77
+ at: nextPath
78
+ });
79
+ return;
80
+ }
62
81
  if (fragment.length === 1 && firstChild.type === _elementTypes.TABLE) {
63
82
  const nextPath = _slate.Path.next(checkListEntry[1]);
64
83
  _slate.Transforms.insertNodes(newEditor, fragment, {
@@ -102,6 +102,12 @@ const withHeader = editor => {
102
102
  insertText(text);
103
103
  return;
104
104
  }
105
+
106
+ // insert list at current path
107
+ if ((0, _core.isSelectionAtBlockStart)(editor)) {
108
+ _slate.Transforms.insertNodes(newEditor, fragment);
109
+ return;
110
+ }
105
111
  const nextPath = _slate.Path.next(headerEntry[1]);
106
112
  _slate.Transforms.insertNodes(newEditor, fragment, {
107
113
  at: nextPath
@@ -51,16 +51,14 @@ const trimList = listRoot => {
51
51
  };
52
52
  const wrapNodeIntoListItem = node => {
53
53
  if (node.type === _elementTypes.LIST_ITEM) return node;
54
+ const children = (0, _core.getInlineNodes)(node);
54
55
  return {
55
56
  id: _slugid.default.nice(),
56
57
  type: _elementTypes.LIST_ITEM,
57
58
  children: [{
58
59
  id: _slugid.default.nice(),
59
60
  type: _elementTypes.PARAGRAPH,
60
- children: [{
61
- id: _slugid.default.nice(),
62
- text: _slate.Node.string(node)
63
- }]
61
+ children
64
62
  }]
65
63
  };
66
64
  };
@@ -7,6 +7,7 @@ exports.default = void 0;
7
7
  var _slate = require("slate");
8
8
  var _core = require("../../core");
9
9
  var _elementTypes = require("../../constants/element-types");
10
+ var _constants = require("../../constants");
10
11
  const isSelectionAtLineEnd = (editor, path) => {
11
12
  const {
12
13
  selection
@@ -98,6 +99,27 @@ const withParagraph = editor => {
98
99
  });
99
100
  if (!paragraphEntry) return insertFragment(fragment);
100
101
  const firstChild = fragment[0];
102
+ if (fragment.length === 1 && _constants.LIST_TYPE_ARRAY.includes(firstChild.type)) {
103
+ // insert text
104
+ if (firstChild.children.length === 1) {
105
+ const text = _slate.Node.string(fragment[0]);
106
+ (0, _slate.insertText)(text);
107
+ return;
108
+ }
109
+
110
+ // insert list at current path
111
+ if ((0, _core.isSelectionAtBlockStart)(editor)) {
112
+ _slate.Transforms.insertNodes(newEditor, fragment);
113
+ return;
114
+ }
115
+
116
+ // insert list at next path
117
+ const nextPath = _slate.Path.next(paragraphEntry[1]);
118
+ _slate.Transforms.insertNodes(newEditor, fragment, {
119
+ at: nextPath
120
+ });
121
+ return;
122
+ }
101
123
  if (fragment.length === 1 && firstChild.type === _elementTypes.TABLE) {
102
124
  const hasVoidNode = paragraphEntry[0].children.some(item => _slate.Editor.isVoid(newEditor, item));
103
125
  if (_slate.Node.string(paragraphEntry[0]).length === 0 && !hasVoidNode) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "1.0.72",
3
+ "version": "1.0.74",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {