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.
@@ -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;