dtable-ui-component 0.1.61 → 0.1.65
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/es/components/cell-formatter/long-text-formatter.js +15 -1
- package/es/utils/normalize-long-text-value.js +76 -49
- package/es/utils/slate2markdown/core.js +172 -0
- package/es/utils/slate2markdown/deserialize.js +645 -0
- package/es/utils/slate2markdown/index.js +4 -0
- package/es/utils/slate2markdown/markdown2html.js +43 -0
- package/es/utils/slate2markdown/serialize.js +415 -0
- package/es/utils/slate2markdown/unified.js +470 -0
- package/es/utils/slate2markdown/vfile.js +48 -0
- package/lib/components/cell-formatter/long-text-formatter.js +15 -1
- package/lib/utils/normalize-long-text-value.js +78 -49
- package/lib/utils/slate2markdown/core.js +172 -0
- package/lib/utils/slate2markdown/deserialize.js +625 -0
- package/lib/utils/slate2markdown/index.js +16 -0
- package/lib/utils/slate2markdown/markdown2html.js +62 -0
- package/lib/utils/slate2markdown/serialize.js +368 -0
- package/lib/utils/slate2markdown/unified.js +470 -0
- package/lib/utils/slate2markdown/vfile.js +48 -0
- package/package.json +23 -4
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.deserialize = deserialize;
|
|
5
|
+
|
|
6
|
+
var _slate = require("slate");
|
|
7
|
+
|
|
8
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
|
|
10
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
+
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
+
|
|
14
|
+
var unified = require('./unified');
|
|
15
|
+
|
|
16
|
+
var markdown = require('remark-parse');
|
|
17
|
+
|
|
18
|
+
var definitions = require('mdast-util-definitions');
|
|
19
|
+
|
|
20
|
+
var processor = unified().use(markdown, {
|
|
21
|
+
commonmark: true
|
|
22
|
+
}); // transform code value: a function used to tranform code value of markdown format to slate document
|
|
23
|
+
|
|
24
|
+
function mdCodeNodeToSlate(codeValue) {
|
|
25
|
+
// statement an array : filled width code value splited by '\n'
|
|
26
|
+
var codeValueArr = codeValue.split('\n');
|
|
27
|
+
var slateTextObj, slateBlockObj; // map codeValueArr item to slate document 'code_line'
|
|
28
|
+
|
|
29
|
+
var slate_code_arr = codeValueArr.map(function (text) {
|
|
30
|
+
// transform string to slateText object
|
|
31
|
+
slateTextObj = _slate.Text.create({
|
|
32
|
+
text: text
|
|
33
|
+
}); // transform slateText to Block object
|
|
34
|
+
|
|
35
|
+
slateBlockObj = _slate.Block.create({
|
|
36
|
+
nodes: [slateTextObj],
|
|
37
|
+
type: 'code_line'
|
|
38
|
+
});
|
|
39
|
+
return slateBlockObj;
|
|
40
|
+
});
|
|
41
|
+
return slate_code_arr;
|
|
42
|
+
} // deserialize mdTable to SlateNode
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
function mdTableToSlateTable(tableNode, opts) {
|
|
46
|
+
// get align array
|
|
47
|
+
var tableAlignArr = tableNode.align; // get all table_rows, return:array
|
|
48
|
+
|
|
49
|
+
var tableRows = tableNode.children; // slate table_row Node into it
|
|
50
|
+
|
|
51
|
+
var tableRowsArr = []; // traverse table_rows
|
|
52
|
+
|
|
53
|
+
for (var rowIndex = 0; rowIndex < tableRows.length; rowIndex++) {
|
|
54
|
+
// slate table_cell Node into it
|
|
55
|
+
var tableCellsArr = [];
|
|
56
|
+
/*
|
|
57
|
+
* traverse every table_cells of an table_rows,
|
|
58
|
+
* the length of every table_rows is equal to tableAlign array
|
|
59
|
+
* */
|
|
60
|
+
|
|
61
|
+
for (var columnsIndex = 0; columnsIndex < tableAlignArr.length; columnsIndex++) {
|
|
62
|
+
// get table_cell and tranlate it to slate Node: table_cell
|
|
63
|
+
var tableCell = tableRows[rowIndex].children[columnsIndex];
|
|
64
|
+
|
|
65
|
+
if (!tableCell) {
|
|
66
|
+
tableCell = {
|
|
67
|
+
type: 'tableCell',
|
|
68
|
+
children: [{
|
|
69
|
+
type: 'text',
|
|
70
|
+
value: ''
|
|
71
|
+
}]
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
var children = parseChildren(tableCell, opts);
|
|
76
|
+
tableCell = _slate.Block.create({
|
|
77
|
+
type: 'table_cell',
|
|
78
|
+
nodes: [_slate.Block.create({
|
|
79
|
+
type: 'paragraph',
|
|
80
|
+
nodes: children
|
|
81
|
+
})],
|
|
82
|
+
data: {
|
|
83
|
+
align: tableAlignArr[columnsIndex]
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
tableCellsArr.push(tableCell);
|
|
87
|
+
} // push add table_rows into tableRowsArr
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
tableRowsArr.push(_slate.Block.create({
|
|
91
|
+
type: 'table_row',
|
|
92
|
+
nodes: tableCellsArr
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return tableRowsArr;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function mdImageToSlate(node, opts) {
|
|
100
|
+
var _DOMParser$parseFromS = new DOMParser().parseFromString(node.value, 'text/html'),
|
|
101
|
+
body = _DOMParser$parseFromS.body;
|
|
102
|
+
|
|
103
|
+
var img = body.firstChild;
|
|
104
|
+
var data = {};
|
|
105
|
+
data['src'] = img.getAttribute('src');
|
|
106
|
+
|
|
107
|
+
if (!isNaN(img.getAttribute('width')) && img.getAttribute('width') > 0) {
|
|
108
|
+
data['width'] = img.getAttribute('width');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!isNaN(img.getAttribute('height')) && img.getAttribute('height') > 0) {
|
|
112
|
+
data['height'] = img.getAttribute('height');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (img.getAttribute('alt')) {
|
|
116
|
+
data['alt'] = img.getAttribute('alt');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (img.getAttribute('title')) {
|
|
120
|
+
data['title'] = img.getAttribute('title');
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (data['src']) {
|
|
124
|
+
return _slate.Inline.create({
|
|
125
|
+
type: 'image',
|
|
126
|
+
data: data
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function _applyMark(childNodeOrNodes, mark) {
|
|
132
|
+
if (childNodeOrNodes instanceof Array) {
|
|
133
|
+
return childNodeOrNodes.map(function (item) {
|
|
134
|
+
return _applyMark(item, mark);
|
|
135
|
+
});
|
|
136
|
+
} else if (childNodeOrNodes.object == 'text') {
|
|
137
|
+
var length = childNodeOrNodes.text.length;
|
|
138
|
+
return childNodeOrNodes.addMark(0, length, mark);
|
|
139
|
+
} else {
|
|
140
|
+
return childNodeOrNodes;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function addChildNodeOrNodes(children, childNodeOrNodes) {
|
|
145
|
+
if (childNodeOrNodes instanceof Array) {
|
|
146
|
+
childNodeOrNodes.map(function (item) {
|
|
147
|
+
return children.push(item);
|
|
148
|
+
});
|
|
149
|
+
} else {
|
|
150
|
+
if (childNodeOrNodes !== undefined) children.push(childNodeOrNodes);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/*
|
|
154
|
+
parse a mark node.
|
|
155
|
+
Always return an array.
|
|
156
|
+
|
|
157
|
+
Example
|
|
158
|
+
*fdsfd __fdsf__ fdf*
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
function parseMark(node, markString, opts) {
|
|
163
|
+
var mark = _slate.Mark.create({
|
|
164
|
+
type: markString
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
var children = [];
|
|
168
|
+
|
|
169
|
+
for (var _iterator = _createForOfIteratorHelperLoose(node.children), _step; !(_step = _iterator()).done;) {
|
|
170
|
+
var child = _step.value;
|
|
171
|
+
|
|
172
|
+
var childNodeOrNodes = _nodeToSlate(child, opts);
|
|
173
|
+
|
|
174
|
+
childNodeOrNodes = _applyMark(childNodeOrNodes, mark);
|
|
175
|
+
addChildNodeOrNodes(children, childNodeOrNodes);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return children;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function parseChildren(node, opts) {
|
|
182
|
+
var children = [];
|
|
183
|
+
|
|
184
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(node.children), _step2; !(_step2 = _iterator2()).done;) {
|
|
185
|
+
var child = _step2.value;
|
|
186
|
+
|
|
187
|
+
var ret = _nodeToSlate(child, opts);
|
|
188
|
+
|
|
189
|
+
addChildNodeOrNodes(children, ret);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return children;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function _nodeToSlate(node, opts) {
|
|
196
|
+
var children = [];
|
|
197
|
+
var mark;
|
|
198
|
+
var definition = opts.definition;
|
|
199
|
+
|
|
200
|
+
switch (node.type) {
|
|
201
|
+
case 'heading':
|
|
202
|
+
var header_string;
|
|
203
|
+
children = parseChildren(node, opts);
|
|
204
|
+
|
|
205
|
+
switch (node.depth) {
|
|
206
|
+
case 1:
|
|
207
|
+
header_string = 'header_one';
|
|
208
|
+
break;
|
|
209
|
+
|
|
210
|
+
case 2:
|
|
211
|
+
header_string = 'header_two';
|
|
212
|
+
break;
|
|
213
|
+
|
|
214
|
+
case 3:
|
|
215
|
+
header_string = 'header_three';
|
|
216
|
+
break;
|
|
217
|
+
|
|
218
|
+
case 4:
|
|
219
|
+
header_string = 'header_four';
|
|
220
|
+
break;
|
|
221
|
+
|
|
222
|
+
case 5:
|
|
223
|
+
header_string = 'header_five';
|
|
224
|
+
break;
|
|
225
|
+
|
|
226
|
+
case 6:
|
|
227
|
+
header_string = 'header_six';
|
|
228
|
+
break;
|
|
229
|
+
|
|
230
|
+
default:
|
|
231
|
+
console.log('Invalid depth: ' + node.depth);
|
|
232
|
+
header_string = 'header_one';
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return _slate.Block.create({
|
|
237
|
+
type: header_string,
|
|
238
|
+
nodes: children
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
case 'paragraph':
|
|
242
|
+
children = parseChildren(node, opts);
|
|
243
|
+
return _slate.Block.create({
|
|
244
|
+
type: 'paragraph',
|
|
245
|
+
nodes: children
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
case 'blockquote':
|
|
249
|
+
children = parseChildren(node, opts);
|
|
250
|
+
return _slate.Block.create({
|
|
251
|
+
type: 'blockquote',
|
|
252
|
+
nodes: children
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
case 'list':
|
|
256
|
+
opts.loose = node.loose;
|
|
257
|
+
children = parseChildren(node, opts);
|
|
258
|
+
|
|
259
|
+
if (node.ordered) {
|
|
260
|
+
return _slate.Block.create({
|
|
261
|
+
type: 'ordered_list',
|
|
262
|
+
nodes: children
|
|
263
|
+
});
|
|
264
|
+
} else {
|
|
265
|
+
return _slate.Block.create({
|
|
266
|
+
type: 'unordered_list',
|
|
267
|
+
nodes: children
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
case 'listItem':
|
|
272
|
+
children = parseChildren(node, opts);
|
|
273
|
+
|
|
274
|
+
if (children.length === 0) {
|
|
275
|
+
/**
|
|
276
|
+
* if children is an empty array push an empy paragaph to it
|
|
277
|
+
*/
|
|
278
|
+
children.push(_slate.Block.create({
|
|
279
|
+
type: 'paragraph',
|
|
280
|
+
nodes: [_slate.Text.create('')]
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
var data = {};
|
|
285
|
+
|
|
286
|
+
if (node.checked !== null) {
|
|
287
|
+
data.checked = node.checked;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return _slate.Block.create({
|
|
291
|
+
type: 'list_item',
|
|
292
|
+
data: data,
|
|
293
|
+
nodes: children
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
case 'code':
|
|
297
|
+
var data = {};
|
|
298
|
+
|
|
299
|
+
if (node.lang) {
|
|
300
|
+
data.syntax = node.lang;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
var slate_code_arr = mdCodeNodeToSlate(node.value);
|
|
304
|
+
return _slate.Block.create({
|
|
305
|
+
type: 'code_block',
|
|
306
|
+
data: data,
|
|
307
|
+
nodes: slate_code_arr
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
case 'strong':
|
|
311
|
+
return parseMark(node, 'BOLD', opts);
|
|
312
|
+
|
|
313
|
+
case 'emphasis':
|
|
314
|
+
return parseMark(node, 'ITALIC', opts);
|
|
315
|
+
|
|
316
|
+
case 'inlineCode':
|
|
317
|
+
// Inline code need to be handled differently
|
|
318
|
+
var mark = _slate.Mark.create({
|
|
319
|
+
type: 'CODE'
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
return _slate.Text.create({
|
|
323
|
+
text: node.value,
|
|
324
|
+
marks: [mark]
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
case 'text':
|
|
328
|
+
// A plain text in markdown
|
|
329
|
+
// text is the botton node in Markdown AST
|
|
330
|
+
return _slate.Text.create({
|
|
331
|
+
text: node.value
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
case 'break':
|
|
335
|
+
return _slate.Text.create({
|
|
336
|
+
text: '\n'
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
case 'thematicBreak':
|
|
340
|
+
return _slate.Block.create({
|
|
341
|
+
type: 'hr'
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
case 'table':
|
|
345
|
+
// get all children of table by mdTableToSlateTable
|
|
346
|
+
children = mdTableToSlateTable(node, opts);
|
|
347
|
+
return _slate.Block.create({
|
|
348
|
+
type: 'table',
|
|
349
|
+
nodes: children,
|
|
350
|
+
data: {
|
|
351
|
+
align: node.align
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
case 'html':
|
|
356
|
+
if (node.value.slice(0, 4).toLowerCase() === '<img') {
|
|
357
|
+
return mdImageToSlate(node, opts);
|
|
358
|
+
} else {
|
|
359
|
+
var child = _slate.Text.create({
|
|
360
|
+
text: ''
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
children.push(child);
|
|
364
|
+
return _slate.Inline.create({
|
|
365
|
+
type: 'html_block',
|
|
366
|
+
data: {
|
|
367
|
+
html: node.value
|
|
368
|
+
},
|
|
369
|
+
nodes: children
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
case 'link':
|
|
374
|
+
children = parseChildren(node, opts);
|
|
375
|
+
var data = {
|
|
376
|
+
href: node.url
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
if (node.title) {
|
|
380
|
+
data.title = node.title;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
return _slate.Inline.create({
|
|
384
|
+
type: 'link',
|
|
385
|
+
data: data,
|
|
386
|
+
nodes: children
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
case 'image':
|
|
390
|
+
var data = {
|
|
391
|
+
src: node.url
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
if (node.title) {
|
|
395
|
+
data.title = node.title;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
if (node.alt) {
|
|
399
|
+
data.alt = node.alt;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
if (node.width) {
|
|
403
|
+
data.width = node.width;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (node.height) {
|
|
407
|
+
data.height = node.height;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return _slate.Inline.create({
|
|
411
|
+
type: 'image',
|
|
412
|
+
data: data
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
case 'linkReference':
|
|
416
|
+
children = parseChildren(node, opts);
|
|
417
|
+
var def = definition(node.identifier);
|
|
418
|
+
var data = {};
|
|
419
|
+
|
|
420
|
+
if (def) {
|
|
421
|
+
data.href = def.url;
|
|
422
|
+
|
|
423
|
+
if (def.title) {
|
|
424
|
+
data.title = def.title;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
return _slate.Inline.create({
|
|
428
|
+
type: 'link',
|
|
429
|
+
data: data,
|
|
430
|
+
nodes: children
|
|
431
|
+
});
|
|
432
|
+
} else {
|
|
433
|
+
return _slate.Text.create({
|
|
434
|
+
text: '[' + node.identifier + ']'
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
case 'imageReference':
|
|
439
|
+
var def = definition(node.identifier);
|
|
440
|
+
var data = {};
|
|
441
|
+
|
|
442
|
+
if (def) {
|
|
443
|
+
data.src = def.url;
|
|
444
|
+
|
|
445
|
+
if (def.title) {
|
|
446
|
+
data.title = def.title;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
if (node.alt) {
|
|
450
|
+
data.alt = node.alt;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return _slate.Inline.create({
|
|
454
|
+
type: 'image',
|
|
455
|
+
data: data
|
|
456
|
+
});
|
|
457
|
+
} else {
|
|
458
|
+
return _slate.Text.create({
|
|
459
|
+
text: '![' + node.alt + ']'
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
case 'definition':
|
|
464
|
+
return;
|
|
465
|
+
|
|
466
|
+
default:
|
|
467
|
+
console.log('unrecognized type: ' + node.type);
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
function fixValue(nodes) {
|
|
473
|
+
var c = [];
|
|
474
|
+
|
|
475
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(nodes), _step3; !(_step3 = _iterator3()).done;) {
|
|
476
|
+
var node = _step3.value;
|
|
477
|
+
|
|
478
|
+
if (node.object === 'inline') {
|
|
479
|
+
if (node.type === 'image') {
|
|
480
|
+
var data = {};
|
|
481
|
+
data['src'] = node.data.get('src');
|
|
482
|
+
data['width'] = node.data.get('width') || null;
|
|
483
|
+
data['height'] = node.data.get('height') || null;
|
|
484
|
+
|
|
485
|
+
if (node.data.get('alt')) {
|
|
486
|
+
data['alt'] = node.data.get('alt');
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
if (node.data.get('title')) {
|
|
490
|
+
data['title'] = node.data.get('title');
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
var nodeNew = _slate.Block.create({
|
|
494
|
+
type: 'paragraph',
|
|
495
|
+
nodes: [_slate.Text.create(''), _slate.Inline.create({
|
|
496
|
+
type: 'image',
|
|
497
|
+
data: data
|
|
498
|
+
}), _slate.Text.create('')]
|
|
499
|
+
});
|
|
500
|
+
|
|
501
|
+
c.push(nodeNew);
|
|
502
|
+
} else {
|
|
503
|
+
c.push(node);
|
|
504
|
+
}
|
|
505
|
+
} else if (node.object === 'block') {
|
|
506
|
+
if (node.type === 'html_block') {
|
|
507
|
+
// convert from inline to block
|
|
508
|
+
node = _slate.Block.create({
|
|
509
|
+
type: 'html_block',
|
|
510
|
+
data: {
|
|
511
|
+
html: node.get('data').get('html')
|
|
512
|
+
},
|
|
513
|
+
nodes: node.nodes
|
|
514
|
+
});
|
|
515
|
+
c.push(node);
|
|
516
|
+
} else if (node.type === 'code_block') {
|
|
517
|
+
c.push(node);
|
|
518
|
+
} else if (node.type === 'paragraph') {
|
|
519
|
+
(function () {
|
|
520
|
+
var nodes = [];
|
|
521
|
+
var textLeaves = [];
|
|
522
|
+
|
|
523
|
+
if (node.nodes.size === 0) {
|
|
524
|
+
nodes.push(_slate.Text.create(''));
|
|
525
|
+
} else {
|
|
526
|
+
node.nodes.forEach(function (node, index, nodesList) {
|
|
527
|
+
if (node.object === 'text') {
|
|
528
|
+
textLeaves.push(_slate.Leaf.create({
|
|
529
|
+
text: node.text,
|
|
530
|
+
marks: node.leaves.get(0).get('marks')
|
|
531
|
+
}));
|
|
532
|
+
|
|
533
|
+
if (index === nodesList.size - 1) {
|
|
534
|
+
nodes.push(_slate.Text.create({
|
|
535
|
+
leaves: textLeaves
|
|
536
|
+
}));
|
|
537
|
+
textLeaves = [];
|
|
538
|
+
}
|
|
539
|
+
} else {
|
|
540
|
+
nodes.push(_slate.Text.create({
|
|
541
|
+
leaves: textLeaves
|
|
542
|
+
}));
|
|
543
|
+
textLeaves = [];
|
|
544
|
+
var nextNode = nodesList.get(index + 1);
|
|
545
|
+
nodes.push(node);
|
|
546
|
+
|
|
547
|
+
if (!nextNode || nextNode.object !== 'text') {
|
|
548
|
+
nodes.push(_slate.Text.create(''));
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
c.push(_slate.Block.create({
|
|
555
|
+
type: 'paragraph',
|
|
556
|
+
nodes: nodes
|
|
557
|
+
}));
|
|
558
|
+
})();
|
|
559
|
+
} else {
|
|
560
|
+
var newNodes = fixValue(node.nodes);
|
|
561
|
+
c.push(_slate.Block.create({
|
|
562
|
+
type: node.type,
|
|
563
|
+
nodes: newNodes,
|
|
564
|
+
data: node.data
|
|
565
|
+
}));
|
|
566
|
+
}
|
|
567
|
+
} else if (node.object === 'text') {
|
|
568
|
+
c.push(node);
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
return c;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
function deserialize(content) {
|
|
576
|
+
var root = processor.parse(content);
|
|
577
|
+
var definition = definitions(root);
|
|
578
|
+
var nodes = [];
|
|
579
|
+
|
|
580
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose(root.children), _step4; !(_step4 = _iterator4()).done;) {
|
|
581
|
+
var _child = _step4.value;
|
|
582
|
+
addChildNodeOrNodes(nodes, _nodeToSlate(_child, {
|
|
583
|
+
definition: definition
|
|
584
|
+
}));
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
if (nodes.length === 0) {
|
|
588
|
+
// add default paragraph
|
|
589
|
+
var child = _slate.Text.create({
|
|
590
|
+
text: ''
|
|
591
|
+
});
|
|
592
|
+
|
|
593
|
+
var node = _slate.Block.create({
|
|
594
|
+
type: 'paragraph',
|
|
595
|
+
nodes: [child]
|
|
596
|
+
});
|
|
597
|
+
|
|
598
|
+
nodes.push(node);
|
|
599
|
+
} // handle image and html_block
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
var c;
|
|
603
|
+
c = fixValue(nodes);
|
|
604
|
+
var firstBlockType = c[0].type;
|
|
605
|
+
|
|
606
|
+
if (firstBlockType === 'table' || firstBlockType === 'code_block' || firstBlockType === 'blockquote') {
|
|
607
|
+
c.unshift(_slate.Block.create({
|
|
608
|
+
type: 'paragraph',
|
|
609
|
+
nodes: [_slate.Text.create('')]
|
|
610
|
+
}));
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
var document = _slate.Document.create({
|
|
614
|
+
nodes: c
|
|
615
|
+
}); // normalize will cost a lot time, for 40K document, it costs 1.5 seconds
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
var value = _slate.Value.create({
|
|
619
|
+
document: document
|
|
620
|
+
}, {
|
|
621
|
+
normalize: false
|
|
622
|
+
});
|
|
623
|
+
|
|
624
|
+
return value;
|
|
625
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _serialize = require("./serialize");
|
|
6
|
+
|
|
7
|
+
exports.serialize = _serialize.serialize;
|
|
8
|
+
|
|
9
|
+
var _deserialize = require("./deserialize");
|
|
10
|
+
|
|
11
|
+
exports.deserialize = _deserialize.deserialize;
|
|
12
|
+
|
|
13
|
+
var _markdown2html = require("./markdown2html");
|
|
14
|
+
|
|
15
|
+
exports.processor = _markdown2html.processor;
|
|
16
|
+
exports.processorGetAST = _markdown2html.processorGetAST;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.processorGetAST = exports.processor = void 0;
|
|
7
|
+
|
|
8
|
+
var _github = _interopRequireDefault(require("hast-util-sanitize/lib/github.json"));
|
|
9
|
+
|
|
10
|
+
var _unified = _interopRequireDefault(require("./unified"));
|
|
11
|
+
|
|
12
|
+
var _remarkParse = _interopRequireDefault(require("remark-parse"));
|
|
13
|
+
|
|
14
|
+
var _remarkSlug = _interopRequireDefault(require("remark-slug"));
|
|
15
|
+
|
|
16
|
+
var _remarkBreaks = _interopRequireDefault(require("remark-breaks"));
|
|
17
|
+
|
|
18
|
+
var _remarkRehype = _interopRequireDefault(require("remark-rehype"));
|
|
19
|
+
|
|
20
|
+
var _rehypeFormat = _interopRequireDefault(require("rehype-format"));
|
|
21
|
+
|
|
22
|
+
var _rehypeRaw = _interopRequireDefault(require("rehype-raw"));
|
|
23
|
+
|
|
24
|
+
var _xtend = _interopRequireDefault(require("xtend"));
|
|
25
|
+
|
|
26
|
+
var _hastUtilToHtml = _interopRequireDefault(require("hast-util-to-html"));
|
|
27
|
+
|
|
28
|
+
var _hastUtilSanitize = _interopRequireDefault(require("hast-util-sanitize"));
|
|
29
|
+
|
|
30
|
+
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
31
|
+
|
|
32
|
+
function stringify(config) {
|
|
33
|
+
var settings = (0, _xtend.default)(config, this.data('settings'));
|
|
34
|
+
var schema = (0, _deepmerge.default)(_github.default, {
|
|
35
|
+
'attributes': {
|
|
36
|
+
'input': ['type'],
|
|
37
|
+
'li': ['className'],
|
|
38
|
+
'code': ['className']
|
|
39
|
+
},
|
|
40
|
+
'tagNames': ['input', 'code']
|
|
41
|
+
});
|
|
42
|
+
this.Compiler = compiler;
|
|
43
|
+
|
|
44
|
+
function compiler(tree) {
|
|
45
|
+
// use sanity to remove dangerous html, the default is
|
|
46
|
+
// GitHub style sanitation
|
|
47
|
+
var hast = (0, _hastUtilSanitize.default)(tree, schema);
|
|
48
|
+
return (0, _hastUtilToHtml.default)(hast, settings);
|
|
49
|
+
}
|
|
50
|
+
} // markdown -> mdast -> html AST -> html
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
var processor = (0, _unified.default)().use(_remarkParse.default, {
|
|
54
|
+
commonmark: true
|
|
55
|
+
}).use(_remarkBreaks.default).use(_remarkSlug.default).use(_remarkRehype.default, {
|
|
56
|
+
allowDangerousHTML: true
|
|
57
|
+
}).use(_rehypeRaw.default).use(_rehypeFormat.default).use(stringify);
|
|
58
|
+
exports.processor = processor;
|
|
59
|
+
var processorGetAST = (0, _unified.default)().use(_remarkParse.default, {
|
|
60
|
+
commonmark: true
|
|
61
|
+
}).use(_remarkSlug.default);
|
|
62
|
+
exports.processorGetAST = processorGetAST;
|