@seafile/sdoc-editor 0.1.28-beta1 → 0.1.28-beta3

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,13 +1,13 @@
1
- .sdoc-diff-added {
2
- background-color: #e6ffed;
1
+ .sdoc-diff {
3
2
  padding: 0 5px;
4
3
  margin: 0 -5px;
5
4
  overflow: hidden;
6
5
  }
7
6
 
7
+ .sdoc-diff-added {
8
+ background-color: #e6ffed;
9
+ }
10
+
8
11
  .sdoc-diff-removed {
9
12
  background-color: #ffeef0;
10
- padding: 0 5px;
11
- margin: 0 -5px;
12
- overflow: hidden;
13
13
  }
@@ -40,7 +40,7 @@ var getNearestElementIndex = function getNearestElementIndex(diffDocument, oldDo
40
40
  var updateDiffDocument = function updateDiffDocument(diffDocument, element, oldElement) {
41
41
  if (!diffDocument || !element || !oldElement) return;
42
42
  if (ObjectUtils.isSameObject(element, oldElement)) {
43
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
43
+ diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
44
44
  diff_type: DIFF_TYPE.COMMON
45
45
  }));
46
46
  return;
@@ -64,26 +64,11 @@ var updateDiffDocument = function updateDiffDocument(diffDocument, element, oldE
64
64
  case ELEMENT_TYPE.HEADER4:
65
65
  case ELEMENT_TYPE.HEADER5:
66
66
  case ELEMENT_TYPE.HEADER6:
67
- {
68
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
69
- diff_type: DIFF_TYPE.DELETE
70
- }));
71
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
72
- diff_type: DIFF_TYPE.ADD
73
- }));
74
- break;
75
- }
76
- case ELEMENT_TYPE.LINK:
77
- {
78
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
79
- diff_type: DIFF_TYPE.DELETE
80
- }));
81
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
82
- diff_type: DIFF_TYPE.ADD
83
- }));
84
- break;
85
- }
86
67
  case ELEMENT_TYPE.BLOCKQUOTE:
68
+ case ELEMENT_TYPE.LINK:
69
+ case ELEMENT_TYPE.CHECK_LIST_ITEM:
70
+ case ELEMENT_TYPE.CODE_BLOCK:
71
+ case ELEMENT_TYPE.IMAGE:
87
72
  {
88
73
  diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
89
74
  diff_type: DIFF_TYPE.DELETE
@@ -95,61 +80,13 @@ var updateDiffDocument = function updateDiffDocument(diffDocument, element, oldE
95
80
  }
96
81
  case ELEMENT_TYPE.ORDERED_LIST:
97
82
  case ELEMENT_TYPE.UNORDERED_LIST:
98
- {
99
- var orderDiff = getDiffValue(element, oldElement);
100
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
101
- children: orderDiff,
102
- diff_type: DIFF_TYPE.MODIFY
103
- }));
104
- break;
105
- }
106
83
  case ELEMENT_TYPE.LIST_ITEM:
107
- {
108
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
109
- diff_type: DIFF_TYPE.DELETE
110
- }));
111
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
112
- diff_type: DIFF_TYPE.ADD
113
- }));
114
- break;
115
- }
116
84
  case ELEMENT_TYPE.LIST_LIC:
117
85
  {
118
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
119
- diff_type: DIFF_TYPE.DELETE
120
- }));
86
+ var orderDiff = getElementDiffValue(element.children, oldElement.children);
121
87
  diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
122
- diff_type: DIFF_TYPE.ADD
123
- }));
124
- break;
125
- }
126
- case ELEMENT_TYPE.CHECK_LIST_ITEM:
127
- {
128
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
129
- diff_type: DIFF_TYPE.DELETE
130
- }));
131
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
132
- diff_type: DIFF_TYPE.ADD
133
- }));
134
- break;
135
- }
136
- case ELEMENT_TYPE.CODE_BLOCK:
137
- {
138
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
139
- diff_type: DIFF_TYPE.DELETE
140
- }));
141
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
142
- diff_type: DIFF_TYPE.ADD
143
- }));
144
- break;
145
- }
146
- case ELEMENT_TYPE.IMAGE:
147
- {
148
- diffDocument.push(_objectSpread(_objectSpread({}, oldElement), {}, {
149
- diff_type: DIFF_TYPE.DELETE
150
- }));
151
- diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
152
- diff_type: DIFF_TYPE.ADD
88
+ children: orderDiff,
89
+ diff_type: DIFF_TYPE.MODIFY
153
90
  }));
154
91
  break;
155
92
  }
@@ -165,17 +102,9 @@ var updateDiffDocument = function updateDiffDocument(diffDocument, element, oldE
165
102
  }
166
103
  }
167
104
  };
168
- export var getDiffValue = function getDiffValue(currentValue, oldValue) {
169
- var currentVersion = currentValue.version,
170
- currentChildren = currentValue.children;
171
- var oldVersion = oldValue.version,
172
- oldChildren = oldValue.children;
173
- if (currentVersion === oldVersion) return currentChildren;
174
- var diffDocument = [];
175
- console.log('currentChildren: ', currentChildren);
176
- console.log('oldChildren: ', oldChildren);
177
-
105
+ var getElementDiffValue = function getElementDiffValue(currentChildren, oldChildren) {
178
106
  // init
107
+ var diffDocument = [];
179
108
  var currentChildrenMap = {};
180
109
  var oldChildrenMap = {};
181
110
  currentChildren.forEach(function (element) {
@@ -207,4 +136,12 @@ export var getDiffValue = function getDiffValue(currentValue, oldValue) {
207
136
  }
208
137
  });
209
138
  return diffDocument;
139
+ };
140
+ export var getDiffValue = function getDiffValue(currentValue, oldValue) {
141
+ var currentVersion = currentValue.version,
142
+ currentChildren = currentValue.children;
143
+ var oldVersion = oldValue.version,
144
+ oldChildren = oldValue.children;
145
+ if (currentVersion === oldVersion) return currentChildren;
146
+ return getElementDiffValue(currentChildren, oldChildren);
210
147
  };
@@ -8,7 +8,7 @@ import { Editable, Slate } from '@seafile/slate-react';
8
8
  import editor, { renderLeaf, renderElement } from '../../basic-sdk/extension';
9
9
  import withNodeId from '../../basic-sdk/node-id';
10
10
  import { getDiffValue } from '../../basic-sdk/utils/diff';
11
- import { DIFF_TYPE } from '../../basic-sdk/extension/constants';
11
+ import { DIFF_TYPE, ELEMENT_TYPE } from '../../basic-sdk/extension/constants';
12
12
  import '../../assets/css/diff-viewer.css';
13
13
  var DiffViewer = /*#__PURE__*/function (_Component) {
14
14
  _inherits(DiffViewer, _Component);
@@ -22,10 +22,18 @@ var DiffViewer = /*#__PURE__*/function (_Component) {
22
22
  };
23
23
  _this.renderElement = function (props) {
24
24
  var element = props.element;
25
- var diff_type = element.diff_type;
25
+ var diff_type = element.diff_type,
26
+ type = element.type;
26
27
  if (diff_type === DIFF_TYPE.ADD) {
28
+ if (type === ELEMENT_TYPE.LIST_ITEM) {
29
+ return renderElement(_objectSpread(_objectSpread({}, props), {}, {
30
+ attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
31
+ className: 'sdoc-diff-added'
32
+ })
33
+ }), _this.editor);
34
+ }
27
35
  return /*#__PURE__*/React.createElement("div", {
28
- className: "sdoc-diff-added"
36
+ className: "sdoc-diff sdoc-diff-added"
29
37
  }, renderElement(_objectSpread(_objectSpread({}, props), {}, {
30
38
  attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
31
39
  className: 'sdoc-diff-added'
@@ -33,8 +41,15 @@ var DiffViewer = /*#__PURE__*/function (_Component) {
33
41
  }), _this.editor));
34
42
  }
35
43
  if (diff_type === DIFF_TYPE.DELETE) {
44
+ if (type === ELEMENT_TYPE.LIST_ITEM) {
45
+ return renderElement(_objectSpread(_objectSpread({}, props), {}, {
46
+ attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
47
+ className: 'sdoc-diff-removed'
48
+ })
49
+ }), _this.editor);
50
+ }
36
51
  return /*#__PURE__*/React.createElement("div", {
37
- className: "sdoc-diff-removed"
52
+ className: "sdoc-diff sdoc-diff-removed"
38
53
  }, renderElement(_objectSpread(_objectSpread({}, props), {}, {
39
54
  attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
40
55
  className: 'sdoc-diff-removed'
@@ -42,8 +57,15 @@ var DiffViewer = /*#__PURE__*/function (_Component) {
42
57
  }), _this.editor));
43
58
  }
44
59
  if (diff_type === DIFF_TYPE.MODIFY) {
60
+ if (type === ELEMENT_TYPE.ORDERED_LIST || type === ELEMENT_TYPE.UNORDERED_LIST) {
61
+ return renderElement(_objectSpread(_objectSpread({}, props), {}, {
62
+ attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
63
+ className: 'sdoc-diff-modify'
64
+ })
65
+ }), _this.editor);
66
+ }
45
67
  return /*#__PURE__*/React.createElement("div", {
46
- className: "sdoc-diff-modify"
68
+ className: "sdoc-diff sdoc-diff-modify"
47
69
  }, renderElement(_objectSpread(_objectSpread({}, props), {}, {
48
70
  attributes: _objectSpread(_objectSpread({}, props.attributes), {}, {
49
71
  className: 'sdoc-diff-modify'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.28beta1",
3
+ "version": "0.1.28beta3",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",