@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
|
|
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({},
|
|
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
|
-
|
|
119
|
-
diff_type: DIFF_TYPE.DELETE
|
|
120
|
-
}));
|
|
86
|
+
var orderDiff = getElementDiffValue(element.children, oldElement.children);
|
|
121
87
|
diffDocument.push(_objectSpread(_objectSpread({}, element), {}, {
|
|
122
|
-
|
|
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
|
-
|
|
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'
|