@seafile/sdoc-editor 0.1.0 → 0.1.2
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/{new-editors/editor.js → editor.js} +38 -17
- package/dist/index.js +2 -36
- package/dist/slate-extension/core/transforms/move-children.js +1 -1
- package/dist/slate-extension/plugins/blockquote/helpers.js +3 -3
- package/dist/slate-extension/plugins/index.js +3 -2
- package/dist/slate-extension/plugins/list/transforms/normalize-list-item.js +2 -2
- package/dist/slate-extension/plugins/list/transforms/toggle-list.js +6 -8
- package/dist/slate-extension/plugins/socket/index.js +6 -0
- package/dist/slate-extension/plugins/socket/plugin.js +23 -0
- package/dist/slate-extension/socket/socket-client.js +94 -0
- package/dist/slate-extension/socket/socket-manager.js +63 -0
- package/dist/slate-extension/toolbar/index.js +1 -1
- package/dist/utils/event-bus.js +39 -0
- package/package.json +5 -25
- package/dist/assets/css/comment-dialog.css +0 -50
- package/dist/assets/css/diff-viewer.css +0 -105
- package/dist/assets/css/formula.css +0 -19
- package/dist/assets/css/history-viewer.css +0 -104
- package/dist/assets/css/image.css +0 -134
- package/dist/assets/css/issue-card.css +0 -43
- package/dist/assets/css/keyboard-shortcuts.css +0 -58
- package/dist/assets/css/link.css +0 -7
- package/dist/assets/css/markdown-editor.css +0 -12
- package/dist/assets/css/markdown-viewer.css +0 -69
- package/dist/assets/css/navbar-imgbutton.css +0 -83
- package/dist/assets/css/outline.css +0 -29
- package/dist/assets/css/table.css +0 -57
- package/dist/assets/css/textlink-hovermenu.css +0 -47
- package/dist/assets/css/topbar.css +0 -350
- package/dist/assets/css/tree-view.css +0 -67
- package/dist/assets/css/user-help.css +0 -84
- package/dist/assets/editor/plain-editor.css +0 -30
- package/dist/assets/editor/seatable-editor.css +0 -77
- package/dist/assets/editor/simple-editor.css +0 -77
- package/dist/components/click-outside.js +0 -46
- package/dist/components/context-menu.js +0 -97
- package/dist/components/dialogs/add-formula-dialog.js +0 -116
- package/dist/components/dialogs/add-image-dialog.js +0 -69
- package/dist/components/dialogs/add-link-dialog.js +0 -133
- package/dist/components/dialogs/comment-dialog.js +0 -97
- package/dist/components/dialogs/shortcut-dialog.js +0 -131
- package/dist/components/error-boundary.js +0 -28
- package/dist/components/load-script/index.js +0 -69
- package/dist/components/loading.js +0 -25
- package/dist/components/markdown-lint.js +0 -72
- package/dist/components/menu/index.js +0 -4
- package/dist/components/menu/item.js +0 -49
- package/dist/components/menu/menu.js +0 -38
- package/dist/components/menu/style.css +0 -42
- package/dist/components/modal-portal.js +0 -38
- package/dist/components/outline/index.js +0 -92
- package/dist/components/outline/outline-item.js +0 -58
- package/dist/components/select/_option.js +0 -44
- package/dist/components/select/field-setting.js +0 -106
- package/dist/components/select/index.js +0 -149
- package/dist/components/select/style.css +0 -144
- package/dist/components/svg-icons/check-mark-icon.js +0 -14
- package/dist/components/svg-icons/column-icon.js +0 -17
- package/dist/components/svg-icons/text-icon.js +0 -34
- package/dist/components/text-link-hover-menu/index.js +0 -123
- package/dist/components/toast/alert.js +0 -138
- package/dist/components/toast/index.js +0 -3
- package/dist/components/toast/toast.js +0 -159
- package/dist/components/toast/toastManager.js +0 -139
- package/dist/components/toast/toaster.js +0 -65
- package/dist/components/toolbar/header-list.js +0 -114
- package/dist/components/toolbar/help-group.js +0 -33
- package/dist/components/toolbar/index.js +0 -4
- package/dist/components/toolbar/insert-image.js +0 -106
- package/dist/components/toolbar/insert-table.js +0 -136
- package/dist/components/toolbar/table-group.js +0 -74
- package/dist/components/toolbar/toolbar.js +0 -317
- package/dist/components/toolbar/widgets/button-group.js +0 -24
- package/dist/components/toolbar/widgets/button-item.js +0 -129
- package/dist/components/toolbar/widgets/drop-list.js +0 -88
- package/dist/components/user-help/index.js +0 -179
- package/dist/config-0.js +0 -15
- package/dist/config.js +0 -16
- package/dist/constants/cell-types.js +0 -29
- package/dist/constants/column.js +0 -4
- package/dist/containers/code-highlight-package.js +0 -14
- package/dist/containers/controller/block-element-controller.js +0 -375
- package/dist/containers/controller/index.js +0 -5
- package/dist/containers/controller/inline-element-controller.js +0 -134
- package/dist/containers/controller/normalize-controller.js +0 -95
- package/dist/containers/controller/shortcut-controller.js +0 -385
- package/dist/containers/controller/void-element-controller.js +0 -9
- package/dist/containers/custom/custom.js +0 -18
- package/dist/containers/custom/get-event-transfer.js +0 -33
- package/dist/containers/custom/getNodesByTypeAtRange.js +0 -57
- package/dist/containers/custom/insertNodes.js +0 -120
- package/dist/containers/custom/is-empty-paragraph.js +0 -9
- package/dist/containers/custom/set-event-transfer.js +0 -30
- package/dist/containers/custom/split-nodes-at-point.js +0 -136
- package/dist/containers/custom/unwrap-node-by-type-at-range.js +0 -70
- package/dist/containers/editor-context.js +0 -85
- package/dist/containers/editor-utils/block-element-utils/blockquote-utils.js +0 -80
- package/dist/containers/editor-utils/block-element-utils/code-utils.js +0 -145
- package/dist/containers/editor-utils/block-element-utils/formula-utils.js +0 -51
- package/dist/containers/editor-utils/block-element-utils/index.js +0 -31
- package/dist/containers/editor-utils/block-element-utils/list-utils.js +0 -395
- package/dist/containers/editor-utils/block-element-utils/table-utils.js +0 -412
- package/dist/containers/editor-utils/clear-format-utils.js +0 -84
- package/dist/containers/editor-utils/common-editor-utils.js +0 -492
- package/dist/containers/editor-utils/inline-element-utils/index.js +0 -95
- package/dist/containers/editor-utils/mark-utils.js +0 -20
- package/dist/containers/editor-utils/range-utils.js +0 -7
- package/dist/containers/editor-utils/selection-utils.js +0 -30
- package/dist/containers/editor-utils/text-utils.js +0 -117
- package/dist/containers/editor-widgets/check-list-item.js +0 -53
- package/dist/containers/editor-widgets/code-block.js +0 -128
- package/dist/containers/editor-widgets/column.js +0 -100
- package/dist/containers/editor-widgets/formula.js +0 -67
- package/dist/containers/editor-widgets/image.js +0 -237
- package/dist/containers/editor-widgets/link.js +0 -9
- package/dist/containers/editor-widgets/table.js +0 -144
- package/dist/containers/element-model/blockquote.js +0 -13
- package/dist/containers/element-model/column.js +0 -19
- package/dist/containers/element-model/image.js +0 -16
- package/dist/containers/element-model/link.js +0 -16
- package/dist/containers/element-model/table.js +0 -57
- package/dist/containers/element-model/text.js +0 -10
- package/dist/containers/render-utils/common-utils.js +0 -80
- package/dist/containers/render-utils/editor-utils.js +0 -133
- package/dist/containers/render-utils/viewer-utils.js +0 -198
- package/dist/containers/viewer-widgets/viewer-formula/index.js +0 -54
- package/dist/containers/viewer-widgets/viewer-image/index.js +0 -70
- package/dist/containers/viewer-widgets/viewer-image/viewer-image.css +0 -3
- package/dist/editors/index.js +0 -78
- package/dist/editors/markdown-editor.js +0 -280
- package/dist/editors/plain-markdown-editor.js +0 -285
- package/dist/editors/seatable-editor.js +0 -210
- package/dist/editors/simple-editor.js +0 -200
- package/dist/utils/deserialize-html.js +0 -260
- package/dist/utils/diff/compare-strings.js +0 -35
- package/dist/utils/diff/diff.js +0 -769
- package/dist/utils/diff/index.js +0 -2
- package/dist/utils/seafile-markdown2html.js +0 -52
- package/dist/utils/slate2markdown/deserialize.js +0 -588
- package/dist/utils/slate2markdown/index.js +0 -3
- package/dist/utils/slate2markdown/serialize.js +0 -366
- package/dist/utils/utils.js +0 -69
- package/dist/viewer/diff-viewer.js +0 -85
- package/dist/viewer/index.js +0 -4
- package/dist/viewer/markdown-viewer.js +0 -121
- package/dist/viewer/seatable-viewer.js +0 -63
- package/dist/viewer/slate-viewer.js +0 -71
- /package/dist/assets/css/{new-editor-toolbar.css → sdoc-editor-toolbar.css} +0 -0
- /package/dist/assets/css/{new-editor.css → sdoc-editor.css} +0 -0
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
|
-
import { Text, Node } from 'slate';
|
|
3
|
-
import { isEmptyParagraph } from '../utils';
|
|
4
|
-
var unified = require('unified');
|
|
5
|
-
var stringify = require('remark-stringify');
|
|
6
|
-
var math = require('remark-math/block');
|
|
7
|
-
function getProcessor() {
|
|
8
|
-
var processor = unified().use(stringify, {
|
|
9
|
-
rule: '-',
|
|
10
|
-
ruleSpaces: false,
|
|
11
|
-
listItemIndent: 1,
|
|
12
|
-
bullet: '*',
|
|
13
|
-
commonmark: true,
|
|
14
|
-
fences: true
|
|
15
|
-
}).use(math);
|
|
16
|
-
return processor;
|
|
17
|
-
}
|
|
18
|
-
function _getCodeValue(node) {
|
|
19
|
-
// code > bold | code > italic
|
|
20
|
-
// code > bold > italic | code > italic > italic
|
|
21
|
-
if (node && node.children) {
|
|
22
|
-
node = node.children[0];
|
|
23
|
-
return _getCodeValue(node);
|
|
24
|
-
}
|
|
25
|
-
return node.value;
|
|
26
|
-
}
|
|
27
|
-
function _applyMark(node, markString) {
|
|
28
|
-
switch (markString) {
|
|
29
|
-
case 'BOLD':
|
|
30
|
-
return {
|
|
31
|
-
type: 'strong',
|
|
32
|
-
children: [node]
|
|
33
|
-
};
|
|
34
|
-
case 'ITALIC':
|
|
35
|
-
return {
|
|
36
|
-
type: 'emphasis',
|
|
37
|
-
children: [node]
|
|
38
|
-
};
|
|
39
|
-
case 'CODE':
|
|
40
|
-
return {
|
|
41
|
-
type: 'inlineCode',
|
|
42
|
-
value: _getCodeValue(node)
|
|
43
|
-
};
|
|
44
|
-
default:
|
|
45
|
-
console.log('unknown mark string: ' + markString);
|
|
46
|
-
return node;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function _text2MdNodes(node) {
|
|
50
|
-
var mdNode = {};
|
|
51
|
-
var textKeys = Object.keys(node);
|
|
52
|
-
var marks = [];
|
|
53
|
-
textKeys.forEach(function (key) {
|
|
54
|
-
if (node[key] && key !== 'text') marks.push(key);
|
|
55
|
-
});
|
|
56
|
-
if (marks.length === 0) {
|
|
57
|
-
mdNode = {
|
|
58
|
-
type: 'text',
|
|
59
|
-
value: node.text
|
|
60
|
-
};
|
|
61
|
-
} else {
|
|
62
|
-
mdNode = {
|
|
63
|
-
type: 'text',
|
|
64
|
-
value: node.text
|
|
65
|
-
};
|
|
66
|
-
var _iterator = _createForOfIteratorHelper(marks),
|
|
67
|
-
_step;
|
|
68
|
-
try {
|
|
69
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
70
|
-
var mark = _step.value;
|
|
71
|
-
mdNode = _applyMark(mdNode, mark);
|
|
72
|
-
}
|
|
73
|
-
} catch (err) {
|
|
74
|
-
_iterator.e(err);
|
|
75
|
-
} finally {
|
|
76
|
-
_iterator.f();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return mdNode;
|
|
80
|
-
}
|
|
81
|
-
function _image2MdNode(node) {
|
|
82
|
-
if (node.data.height || node.data.width) {
|
|
83
|
-
var text = '<img ';
|
|
84
|
-
for (var key in node.data) {
|
|
85
|
-
text = text + key + '="' + node.data[key] + '" ';
|
|
86
|
-
}
|
|
87
|
-
text += '/>';
|
|
88
|
-
return [{
|
|
89
|
-
type: 'html',
|
|
90
|
-
value: text
|
|
91
|
-
}];
|
|
92
|
-
} else {
|
|
93
|
-
return {
|
|
94
|
-
type: 'image',
|
|
95
|
-
url: node.data.src,
|
|
96
|
-
alt: node.data.alt ? node.data.alt : null,
|
|
97
|
-
title: node.data.title ? node.data.title : null
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function getTableAlignments(node) {
|
|
102
|
-
var alignments = [];
|
|
103
|
-
node.children[0].children.forEach(function (cell) {
|
|
104
|
-
var alignment = cell.data ? cell.data.align : 'left';
|
|
105
|
-
alignments.push(alignment);
|
|
106
|
-
});
|
|
107
|
-
return alignments;
|
|
108
|
-
}
|
|
109
|
-
function addChildNodeOrNodes(children, childNodeOrNodes) {
|
|
110
|
-
if (childNodeOrNodes instanceof Array) {
|
|
111
|
-
childNodeOrNodes.map(function (item) {
|
|
112
|
-
return children.push(item);
|
|
113
|
-
});
|
|
114
|
-
} else {
|
|
115
|
-
if (childNodeOrNodes !== undefined) children.push(childNodeOrNodes);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function parseChildren(node) {
|
|
119
|
-
var children = [];
|
|
120
|
-
var _iterator2 = _createForOfIteratorHelper(node.children),
|
|
121
|
-
_step2;
|
|
122
|
-
try {
|
|
123
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
124
|
-
var child = _step2.value;
|
|
125
|
-
var ret = _slateNodeToMD(child);
|
|
126
|
-
addChildNodeOrNodes(children, ret);
|
|
127
|
-
}
|
|
128
|
-
} catch (err) {
|
|
129
|
-
_iterator2.e(err);
|
|
130
|
-
} finally {
|
|
131
|
-
_iterator2.f();
|
|
132
|
-
}
|
|
133
|
-
return children;
|
|
134
|
-
}
|
|
135
|
-
function _slateNodeToMD(node) {
|
|
136
|
-
if (!Text.isText(node)) {
|
|
137
|
-
var mdNodes;
|
|
138
|
-
switch (node.type) {
|
|
139
|
-
case 'paragraph':
|
|
140
|
-
mdNodes = parseChildren(node);
|
|
141
|
-
return {
|
|
142
|
-
type: 'paragraph',
|
|
143
|
-
children: mdNodes
|
|
144
|
-
};
|
|
145
|
-
case 'header_one':
|
|
146
|
-
mdNodes = parseChildren(node);
|
|
147
|
-
return {
|
|
148
|
-
type: 'heading',
|
|
149
|
-
depth: 1,
|
|
150
|
-
children: mdNodes
|
|
151
|
-
};
|
|
152
|
-
case 'header_two':
|
|
153
|
-
mdNodes = parseChildren(node);
|
|
154
|
-
return {
|
|
155
|
-
type: 'heading',
|
|
156
|
-
depth: 2,
|
|
157
|
-
children: mdNodes
|
|
158
|
-
};
|
|
159
|
-
case 'header_three':
|
|
160
|
-
mdNodes = parseChildren(node);
|
|
161
|
-
return {
|
|
162
|
-
type: 'heading',
|
|
163
|
-
depth: 3,
|
|
164
|
-
children: mdNodes
|
|
165
|
-
};
|
|
166
|
-
case 'header_four':
|
|
167
|
-
mdNodes = parseChildren(node);
|
|
168
|
-
return {
|
|
169
|
-
type: 'heading',
|
|
170
|
-
depth: 4,
|
|
171
|
-
children: mdNodes
|
|
172
|
-
};
|
|
173
|
-
case 'header_five':
|
|
174
|
-
mdNodes = parseChildren(node);
|
|
175
|
-
return {
|
|
176
|
-
type: 'heading',
|
|
177
|
-
depth: 5,
|
|
178
|
-
children: mdNodes
|
|
179
|
-
};
|
|
180
|
-
case 'header_six':
|
|
181
|
-
mdNodes = parseChildren(node);
|
|
182
|
-
return {
|
|
183
|
-
type: 'heading',
|
|
184
|
-
depth: 6,
|
|
185
|
-
children: mdNodes
|
|
186
|
-
};
|
|
187
|
-
case 'hr':
|
|
188
|
-
return {
|
|
189
|
-
type: 'thematicBreak'
|
|
190
|
-
};
|
|
191
|
-
case 'ordered_list':
|
|
192
|
-
mdNodes = parseChildren(node);
|
|
193
|
-
var loose = false;
|
|
194
|
-
var _iterator3 = _createForOfIteratorHelper(mdNodes),
|
|
195
|
-
_step3;
|
|
196
|
-
try {
|
|
197
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
198
|
-
var _node = _step3.value;
|
|
199
|
-
if (_node.loose === true) {
|
|
200
|
-
loose = true;
|
|
201
|
-
break;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
} catch (err) {
|
|
205
|
-
_iterator3.e(err);
|
|
206
|
-
} finally {
|
|
207
|
-
_iterator3.f();
|
|
208
|
-
}
|
|
209
|
-
return {
|
|
210
|
-
type: 'list',
|
|
211
|
-
ordered: true,
|
|
212
|
-
start: 1,
|
|
213
|
-
loose: loose,
|
|
214
|
-
children: mdNodes
|
|
215
|
-
};
|
|
216
|
-
case 'unordered_list':
|
|
217
|
-
mdNodes = parseChildren(node);
|
|
218
|
-
var loose = false;
|
|
219
|
-
var _iterator4 = _createForOfIteratorHelper(mdNodes),
|
|
220
|
-
_step4;
|
|
221
|
-
try {
|
|
222
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
223
|
-
var _node2 = _step4.value;
|
|
224
|
-
if (_node2.loose === true) {
|
|
225
|
-
loose = true;
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
} catch (err) {
|
|
230
|
-
_iterator4.e(err);
|
|
231
|
-
} finally {
|
|
232
|
-
_iterator4.f();
|
|
233
|
-
}
|
|
234
|
-
return {
|
|
235
|
-
type: 'list',
|
|
236
|
-
ordered: false,
|
|
237
|
-
start: 1,
|
|
238
|
-
loose: loose,
|
|
239
|
-
children: mdNodes
|
|
240
|
-
};
|
|
241
|
-
case 'list_item':
|
|
242
|
-
mdNodes = parseChildren(node);
|
|
243
|
-
var loose = false;
|
|
244
|
-
if (mdNodes) {
|
|
245
|
-
if (mdNodes.length === 1) {
|
|
246
|
-
loose = false;
|
|
247
|
-
} else if (mdNodes.length === 2 && mdNodes[1].type === 'list') {
|
|
248
|
-
loose = false;
|
|
249
|
-
} else {
|
|
250
|
-
loose = true;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return {
|
|
254
|
-
type: 'listItem',
|
|
255
|
-
loose: loose,
|
|
256
|
-
checked: node.data.checked !== undefined ? node.data.checked : null,
|
|
257
|
-
children: mdNodes
|
|
258
|
-
};
|
|
259
|
-
case 'code_block':
|
|
260
|
-
mdNodes = parseChildren(node);
|
|
261
|
-
return {
|
|
262
|
-
type: 'code',
|
|
263
|
-
lang: node.data.syntax ? node.data.syntax : null,
|
|
264
|
-
value: mdNodes.join('')
|
|
265
|
-
};
|
|
266
|
-
case 'code_line':
|
|
267
|
-
return Node.text(node) + '\n';
|
|
268
|
-
case 'table':
|
|
269
|
-
mdNodes = parseChildren(node);
|
|
270
|
-
return {
|
|
271
|
-
type: 'table',
|
|
272
|
-
align: getTableAlignments(node),
|
|
273
|
-
children: mdNodes
|
|
274
|
-
};
|
|
275
|
-
case 'table_row':
|
|
276
|
-
mdNodes = parseChildren(node);
|
|
277
|
-
return {
|
|
278
|
-
type: 'tableRow',
|
|
279
|
-
children: mdNodes
|
|
280
|
-
};
|
|
281
|
-
case 'table_cell':
|
|
282
|
-
mdNodes = parseChildren(node);
|
|
283
|
-
return {
|
|
284
|
-
type: 'tableCell',
|
|
285
|
-
children: mdNodes
|
|
286
|
-
};
|
|
287
|
-
case 'blockquote':
|
|
288
|
-
mdNodes = parseChildren(node);
|
|
289
|
-
return {
|
|
290
|
-
type: 'blockquote',
|
|
291
|
-
children: mdNodes
|
|
292
|
-
};
|
|
293
|
-
case 'html_block':
|
|
294
|
-
return {
|
|
295
|
-
type: 'html',
|
|
296
|
-
value: node.data.html
|
|
297
|
-
};
|
|
298
|
-
case 'image':
|
|
299
|
-
return _image2MdNode(node);
|
|
300
|
-
case 'link':
|
|
301
|
-
mdNodes = parseChildren(node);
|
|
302
|
-
return {
|
|
303
|
-
type: 'link',
|
|
304
|
-
url: node.data.href,
|
|
305
|
-
title: node.data.title ? node.data.title : null,
|
|
306
|
-
children: mdNodes
|
|
307
|
-
};
|
|
308
|
-
case 'formula':
|
|
309
|
-
var data = node.data;
|
|
310
|
-
return {
|
|
311
|
-
type: 'math',
|
|
312
|
-
value: data.formula
|
|
313
|
-
};
|
|
314
|
-
case 'column':
|
|
315
|
-
{
|
|
316
|
-
var _data = node.data;
|
|
317
|
-
var newNode = {
|
|
318
|
-
text: "{".concat(_data.name, "}")
|
|
319
|
-
};
|
|
320
|
-
return _text2MdNodes(newNode);
|
|
321
|
-
}
|
|
322
|
-
default:
|
|
323
|
-
// turn the block to paragraph default when it`s type is unknown
|
|
324
|
-
mdNodes = parseChildren(node);
|
|
325
|
-
return {
|
|
326
|
-
type: 'paragraph',
|
|
327
|
-
children: mdNodes
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
} else if (Text.isText(node)) {
|
|
331
|
-
return _text2MdNodes(node);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* @param value : a JSON object of editor value
|
|
337
|
-
* @returns markdownContent
|
|
338
|
-
*/
|
|
339
|
-
|
|
340
|
-
function serialize(value) {
|
|
341
|
-
// Return an empty string when the article only has an empty paragraph
|
|
342
|
-
if (value.length === 1 && isEmptyParagraph(value[0])) {
|
|
343
|
-
return '';
|
|
344
|
-
}
|
|
345
|
-
var children = [];
|
|
346
|
-
var _iterator5 = _createForOfIteratorHelper(value),
|
|
347
|
-
_step5;
|
|
348
|
-
try {
|
|
349
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
350
|
-
var child = _step5.value;
|
|
351
|
-
addChildNodeOrNodes(children, _slateNodeToMD(child));
|
|
352
|
-
}
|
|
353
|
-
} catch (err) {
|
|
354
|
-
_iterator5.e(err);
|
|
355
|
-
} finally {
|
|
356
|
-
_iterator5.f();
|
|
357
|
-
}
|
|
358
|
-
var root = {
|
|
359
|
-
type: 'root',
|
|
360
|
-
children: children
|
|
361
|
-
};
|
|
362
|
-
var processor = getProcessor();
|
|
363
|
-
var content = processor.stringify(root);
|
|
364
|
-
return content;
|
|
365
|
-
}
|
|
366
|
-
export { serialize };
|
package/dist/utils/utils.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import { Node, Text } from 'slate';
|
|
3
|
-
export var Utils = {
|
|
4
|
-
pathNormalize: function pathNormalize(originalPath) {
|
|
5
|
-
var oldPath = originalPath.split('/');
|
|
6
|
-
var newPath = [];
|
|
7
|
-
for (var i = 0; i < oldPath.length; i++) {
|
|
8
|
-
if (oldPath[i] === '.' || oldPath[i] === '') {
|
|
9
|
-
continue;
|
|
10
|
-
} else if (oldPath[i] === '..') {
|
|
11
|
-
newPath.pop();
|
|
12
|
-
} else {
|
|
13
|
-
newPath.push(oldPath[i]);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return newPath.join('/');
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
export var isEmptyParagraph = function isEmptyParagraph(node) {
|
|
20
|
-
if (node.type !== 'paragraph') return false;
|
|
21
|
-
if (node.children.length === 1 && Text.isText(node.children[0]) && Node.text(node).length === 0) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
return false;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// root -> paragraph ->
|
|
28
|
-
export var replaceColumnData = function replaceColumnData(mdNodes, columns, getCellValue, updateImgUrl) {
|
|
29
|
-
var _loop = function _loop() {
|
|
30
|
-
var node = mdNodes[i];
|
|
31
|
-
if (node.type === 'column') {
|
|
32
|
-
var data = node.data;
|
|
33
|
-
var column = columns.find(function (column) {
|
|
34
|
-
return column.key === data.key;
|
|
35
|
-
});
|
|
36
|
-
var value = column ? getCellValue && getCellValue(column) : '';
|
|
37
|
-
// change column node to text node
|
|
38
|
-
var newNode = {
|
|
39
|
-
'text': value,
|
|
40
|
-
"BOLD": data.bold,
|
|
41
|
-
"ITALIC": data.italic
|
|
42
|
-
};
|
|
43
|
-
mdNodes.splice(i, 1, newNode);
|
|
44
|
-
return "continue";
|
|
45
|
-
}
|
|
46
|
-
// replace image node's src
|
|
47
|
-
if (node.type === 'image') {
|
|
48
|
-
var _data = node.data || {
|
|
49
|
-
src: ''
|
|
50
|
-
};
|
|
51
|
-
if (updateImgUrl && typeof updateImgUrl === 'function') {
|
|
52
|
-
var src = updateImgUrl(_data.src);
|
|
53
|
-
var newData = _objectSpread(_objectSpread({}, _data), {
|
|
54
|
-
src: src
|
|
55
|
-
});
|
|
56
|
-
node.data = newData;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// if node has children, traverse node's children
|
|
60
|
-
if (node.children) {
|
|
61
|
-
var nodes = node.children;
|
|
62
|
-
replaceColumnData(nodes, columns, getCellValue, updateImgUrl);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
for (var i = 0; i < mdNodes.length; i++) {
|
|
66
|
-
var _ret = _loop();
|
|
67
|
-
if (_ret === "continue") continue;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
-
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import LoadScript from '../components/load-script';
|
|
7
|
-
import SlateViewer from '../viewer/slate-viewer';
|
|
8
|
-
import { SlateDiff } from '../utils/diff';
|
|
9
|
-
import { renderNode, renderLeaf } from '../containers/render-utils/viewer-utils';
|
|
10
|
-
import '../assets/css/diff-viewer.css';
|
|
11
|
-
var DiffViewer = /*#__PURE__*/function (_React$PureComponent) {
|
|
12
|
-
_inherits(DiffViewer, _React$PureComponent);
|
|
13
|
-
var _super = _createSuper(DiffViewer);
|
|
14
|
-
function DiffViewer(_props) {
|
|
15
|
-
var _this;
|
|
16
|
-
_classCallCheck(this, DiffViewer);
|
|
17
|
-
_this = _super.call(this, _props);
|
|
18
|
-
_this.renderDiffNode = function (props) {
|
|
19
|
-
var element = props.element;
|
|
20
|
-
var data = element.data ? element.data : {};
|
|
21
|
-
var diffState = data['diff_state'];
|
|
22
|
-
var nodeDepth = data['node_depth'];
|
|
23
|
-
if (diffState === 'diff-added') {
|
|
24
|
-
if (nodeDepth > 1) {
|
|
25
|
-
if (element.type === 'blockquote' || element.type === 'code_block') {
|
|
26
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
27
|
-
className: 'diff-added-container'
|
|
28
|
-
}, renderNode(props));
|
|
29
|
-
}
|
|
30
|
-
return renderNode(props);
|
|
31
|
-
} else {
|
|
32
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
33
|
-
className: 'diff-added'
|
|
34
|
-
}, renderNode(props));
|
|
35
|
-
}
|
|
36
|
-
} else if (diffState === 'diff-removed') {
|
|
37
|
-
if (nodeDepth > 1) {
|
|
38
|
-
if (element.type === 'blockquote' || element.type === 'code_block') {
|
|
39
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
40
|
-
className: 'diff-removed-container'
|
|
41
|
-
}, renderNode(props));
|
|
42
|
-
}
|
|
43
|
-
return renderNode(props);
|
|
44
|
-
} else {
|
|
45
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
46
|
-
className: 'diff-removed'
|
|
47
|
-
}, renderNode(props));
|
|
48
|
-
}
|
|
49
|
-
} else if (diffState === 'diff-replaced') {
|
|
50
|
-
if (nodeDepth > 1) {
|
|
51
|
-
return renderNode(props);
|
|
52
|
-
} else {
|
|
53
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
54
|
-
className: 'diff-replaced'
|
|
55
|
-
}, renderNode(props));
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
return renderNode(props);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
_this.value = [];
|
|
62
|
-
_this.slateDiff = new SlateDiff();
|
|
63
|
-
return _this;
|
|
64
|
-
}
|
|
65
|
-
_createClass(DiffViewer, [{
|
|
66
|
-
key: "render",
|
|
67
|
-
value: function render() {
|
|
68
|
-
var newMarkdownContent = this.props.newMarkdownContent;
|
|
69
|
-
var oldMarkdownContent = this.props.oldMarkdownContent;
|
|
70
|
-
this.value = this.slateDiff.getDiffDocument(newMarkdownContent, oldMarkdownContent);
|
|
71
|
-
return /*#__PURE__*/React.createElement(LoadScript, {
|
|
72
|
-
scriptSource: this.props.scriptSource
|
|
73
|
-
}, /*#__PURE__*/React.createElement(SlateViewer, {
|
|
74
|
-
style: {
|
|
75
|
-
width: '100%'
|
|
76
|
-
},
|
|
77
|
-
renderDiffElement: this.renderDiffNode,
|
|
78
|
-
renderDiffLeaf: renderLeaf,
|
|
79
|
-
value: this.value
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
}]);
|
|
83
|
-
return DiffViewer;
|
|
84
|
-
}(React.PureComponent);
|
|
85
|
-
export default DiffViewer;
|
package/dist/viewer/index.js
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
-
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
-
import React, { Fragment } from 'react';
|
|
6
|
-
import { deserialize } from '../utils/slate2markdown';
|
|
7
|
-
import OutlineView from '../components/outline';
|
|
8
|
-
import LoadScript from '../components/load-script';
|
|
9
|
-
import SlateViewer from './slate-viewer';
|
|
10
|
-
import '../assets/css/markdown-viewer.css';
|
|
11
|
-
var URL = require('url-parse');
|
|
12
|
-
var MarkdownViewer = /*#__PURE__*/function (_React$Component) {
|
|
13
|
-
_inherits(MarkdownViewer, _React$Component);
|
|
14
|
-
var _super = _createSuper(MarkdownViewer);
|
|
15
|
-
function MarkdownViewer(props) {
|
|
16
|
-
var _this;
|
|
17
|
-
_classCallCheck(this, MarkdownViewer);
|
|
18
|
-
_this = _super.call(this, props);
|
|
19
|
-
_this.scrollToNode = function (node) {
|
|
20
|
-
var url = new URL(window.location.href);
|
|
21
|
-
url.set('hash', 'user-content-' + node.children[0].text);
|
|
22
|
-
window.location.href = url.toString();
|
|
23
|
-
};
|
|
24
|
-
_this.getTitlesInfo = function () {
|
|
25
|
-
var titlesInfo = [];
|
|
26
|
-
var headingList = document.querySelectorAll('h2[id^="user-content"], h3[id^="user-content"]');
|
|
27
|
-
for (var i = 0; i < headingList.length; i++) {
|
|
28
|
-
titlesInfo.push(headingList[i].offsetTop);
|
|
29
|
-
}
|
|
30
|
-
_this.titlesInfo = titlesInfo;
|
|
31
|
-
};
|
|
32
|
-
_this.deserializeValue = function (markdownContent) {
|
|
33
|
-
var nodes = deserialize(markdownContent);
|
|
34
|
-
if (_this.props.modifyValueBeforeRender) {
|
|
35
|
-
nodes = _this.props.modifyValueBeforeRender(nodes);
|
|
36
|
-
}
|
|
37
|
-
_this.setState({
|
|
38
|
-
value: nodes
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
_this.titlesInfo = [];
|
|
42
|
-
_this.state = {
|
|
43
|
-
value: null
|
|
44
|
-
};
|
|
45
|
-
return _this;
|
|
46
|
-
}
|
|
47
|
-
_createClass(MarkdownViewer, [{
|
|
48
|
-
key: "componentWillMount",
|
|
49
|
-
value: function componentWillMount() {
|
|
50
|
-
this.deserializeValue(this.props.markdownContent);
|
|
51
|
-
}
|
|
52
|
-
}, {
|
|
53
|
-
key: "componentDidMount",
|
|
54
|
-
value: function componentDidMount() {
|
|
55
|
-
if (this.props.showTOC) {
|
|
56
|
-
this.getTitlesInfo();
|
|
57
|
-
}
|
|
58
|
-
if (this.props.onContentRendered) {
|
|
59
|
-
this.props.onContentRendered(this);
|
|
60
|
-
}
|
|
61
|
-
window.markdownViewer = this;
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
key: "componentWillReceiveProps",
|
|
65
|
-
value: function componentWillReceiveProps(nextProps) {
|
|
66
|
-
if (this.props.markdownContent !== nextProps.markdownContent) {
|
|
67
|
-
this.deserializeValue(nextProps.markdownContent);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}, {
|
|
71
|
-
key: "componentWillUnmount",
|
|
72
|
-
value: function componentWillUnmount() {
|
|
73
|
-
window.markdownViewer = null;
|
|
74
|
-
}
|
|
75
|
-
}, {
|
|
76
|
-
key: "render",
|
|
77
|
-
value: function render() {
|
|
78
|
-
var value = this.state.value;
|
|
79
|
-
if (!value) return null;
|
|
80
|
-
var _this$props = this.props,
|
|
81
|
-
scriptSource = _this$props.scriptSource,
|
|
82
|
-
showTOC = _this$props.showTOC,
|
|
83
|
-
activeTitleIndex = _this$props.activeTitleIndex,
|
|
84
|
-
updateForNoOutline = _this$props.updateForNoOutline;
|
|
85
|
-
if (scriptSource) {
|
|
86
|
-
return /*#__PURE__*/React.createElement(LoadScript, {
|
|
87
|
-
scriptSource: this.props.scriptSource
|
|
88
|
-
}, /*#__PURE__*/React.createElement(SlateViewer, {
|
|
89
|
-
value: value
|
|
90
|
-
}), showTOC && /*#__PURE__*/React.createElement("div", {
|
|
91
|
-
className: "seafile-markdown-outline"
|
|
92
|
-
}, /*#__PURE__*/React.createElement(OutlineView, {
|
|
93
|
-
document: value,
|
|
94
|
-
isViewer: true,
|
|
95
|
-
activeTitleIndex: activeTitleIndex,
|
|
96
|
-
scrollToNode: this.scrollToNode,
|
|
97
|
-
updateForNoOutline: updateForNoOutline
|
|
98
|
-
})));
|
|
99
|
-
}
|
|
100
|
-
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(SlateViewer, {
|
|
101
|
-
value: value
|
|
102
|
-
}), showTOC && /*#__PURE__*/React.createElement("div", {
|
|
103
|
-
className: "seafile-markdown-outline"
|
|
104
|
-
}, /*#__PURE__*/React.createElement(OutlineView, {
|
|
105
|
-
document: value,
|
|
106
|
-
isViewer: true,
|
|
107
|
-
activeTitleIndex: activeTitleIndex,
|
|
108
|
-
scrollToNode: this.scrollToNode
|
|
109
|
-
})));
|
|
110
|
-
}
|
|
111
|
-
}]);
|
|
112
|
-
return MarkdownViewer;
|
|
113
|
-
}(React.Component);
|
|
114
|
-
var defaultProps = {
|
|
115
|
-
activeTitleIndex: 0,
|
|
116
|
-
markdownContent: '',
|
|
117
|
-
showTOC: true,
|
|
118
|
-
isShared: false
|
|
119
|
-
};
|
|
120
|
-
MarkdownViewer.defaultProps = defaultProps;
|
|
121
|
-
export default MarkdownViewer;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
-
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import SlateViewer from './slate-viewer';
|
|
7
|
-
import '../assets/css/markdown-viewer.css';
|
|
8
|
-
var SeatableViewer = /*#__PURE__*/function (_React$Component) {
|
|
9
|
-
_inherits(SeatableViewer, _React$Component);
|
|
10
|
-
var _super = _createSuper(SeatableViewer);
|
|
11
|
-
function SeatableViewer(props) {
|
|
12
|
-
var _this;
|
|
13
|
-
_classCallCheck(this, SeatableViewer);
|
|
14
|
-
_this = _super.call(this, props);
|
|
15
|
-
_this.updateValue = function (nodes) {
|
|
16
|
-
var newValue = nodes ? JSON.parse(nodes) : '';
|
|
17
|
-
_this.setState({
|
|
18
|
-
value: newValue
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
_this.state = {
|
|
22
|
-
value: null
|
|
23
|
-
};
|
|
24
|
-
return _this;
|
|
25
|
-
}
|
|
26
|
-
_createClass(SeatableViewer, [{
|
|
27
|
-
key: "componentWillMount",
|
|
28
|
-
value: function componentWillMount() {
|
|
29
|
-
this.updateValue(this.props.markdownContent);
|
|
30
|
-
}
|
|
31
|
-
}, {
|
|
32
|
-
key: "componentDidMount",
|
|
33
|
-
value: function componentDidMount() {
|
|
34
|
-
window.markdownViewer = this;
|
|
35
|
-
}
|
|
36
|
-
}, {
|
|
37
|
-
key: "componentWillReceiveProps",
|
|
38
|
-
value: function componentWillReceiveProps(nextProps) {
|
|
39
|
-
if (this.props.markdownContent !== nextProps.markdownContent) {
|
|
40
|
-
this.updateValue(nextProps.markdownContent);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}, {
|
|
44
|
-
key: "componentWillUnmount",
|
|
45
|
-
value: function componentWillUnmount() {
|
|
46
|
-
window.markdownViewer = null;
|
|
47
|
-
}
|
|
48
|
-
}, {
|
|
49
|
-
key: "render",
|
|
50
|
-
value: function render() {
|
|
51
|
-
var value = this.state.value;
|
|
52
|
-
if (!value) return null;
|
|
53
|
-
return /*#__PURE__*/React.createElement(SlateViewer, {
|
|
54
|
-
value: value
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}]);
|
|
58
|
-
return SeatableViewer;
|
|
59
|
-
}(React.Component);
|
|
60
|
-
SeatableViewer.defaultProps = {
|
|
61
|
-
markdownContent: ''
|
|
62
|
-
};
|
|
63
|
-
export default SeatableViewer;
|