@pie-lib/editable-html 9.3.1-next.53 → 9.4.0
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/CHANGELOG.md +17 -0
- package/lib/editor.js +244 -114
- package/lib/editor.js.map +1 -1
- package/lib/index.js +51 -5
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +5 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +12 -2
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +50 -3
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +26 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +82 -29
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +45 -7
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +41 -2
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +22 -2
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +34 -13
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +42 -13
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +75 -30
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +75 -18
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +188 -100
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -4
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +29 -5
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +18 -4
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +8 -2
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +18 -1
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +47 -1
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +8 -1
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +22 -0
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +7 -0
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +94 -15
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +43 -11
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +30 -8
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +9 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +48 -18
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +67 -19
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +15 -0
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +69 -8
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +4 -4
- package/src/plugins/media/index.jsx +1 -0
package/lib/plugins/utils.js
CHANGED
|
@@ -4,44 +4,59 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.hasNode = exports.hasMark = exports.hasBlock = exports.findSingleNode = exports.findParentNode = void 0;
|
|
7
|
+
|
|
7
8
|
var findSingleNode = function findSingleNode(value) {
|
|
8
9
|
if (!value || !value.isCollapsed || !value.startKey) {
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
12
|
+
|
|
11
13
|
var inline = value.document.getClosestInline(value.startKey);
|
|
14
|
+
|
|
12
15
|
if (inline) {
|
|
13
16
|
return inline;
|
|
14
17
|
}
|
|
18
|
+
|
|
15
19
|
var block = value.document.getClosestBlock(value.startKey);
|
|
20
|
+
|
|
16
21
|
if (block) {
|
|
17
22
|
return block;
|
|
18
23
|
}
|
|
19
24
|
};
|
|
25
|
+
|
|
20
26
|
exports.findSingleNode = findSingleNode;
|
|
27
|
+
|
|
21
28
|
var findParentNode = function findParentNode(value, node) {
|
|
22
29
|
if (!value || !node) {
|
|
23
30
|
return;
|
|
24
31
|
}
|
|
32
|
+
|
|
25
33
|
return value.document.getParent(node.key);
|
|
26
34
|
};
|
|
35
|
+
|
|
27
36
|
exports.findParentNode = findParentNode;
|
|
37
|
+
|
|
28
38
|
var hasMark = function hasMark(value, type) {
|
|
29
39
|
return value && value.marks.some(function (mark) {
|
|
30
40
|
return mark.type == type;
|
|
31
41
|
});
|
|
32
42
|
};
|
|
43
|
+
|
|
33
44
|
exports.hasMark = hasMark;
|
|
45
|
+
|
|
34
46
|
var hasBlock = function hasBlock(value, type) {
|
|
35
47
|
return value && value.blocks.some(function (node) {
|
|
36
48
|
return node.type == type;
|
|
37
49
|
});
|
|
38
50
|
};
|
|
51
|
+
|
|
39
52
|
exports.hasBlock = hasBlock;
|
|
53
|
+
|
|
40
54
|
var hasNode = function hasNode(_ref, type) {
|
|
41
55
|
var document = _ref.document;
|
|
42
56
|
return document && document.nodes.some(function (node) {
|
|
43
57
|
return node.type == type;
|
|
44
58
|
});
|
|
45
59
|
};
|
|
60
|
+
|
|
46
61
|
exports.hasNode = hasNode;
|
|
47
62
|
//# sourceMappingURL=utils.js.map
|
package/lib/plugins/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/utils.js"],"names":["findSingleNode","value","isCollapsed","startKey","inline","document","getClosestInline","block","getClosestBlock","findParentNode","node","getParent","key","hasMark","type","marks","some","mark","hasBlock","blocks","hasNode","nodes"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAW;AACvC,MAAI,CAACA,KAAD,IAAU,CAACA,KAAK,CAACC,WAAjB,IAAgC,CAACD,KAAK,CAACE,QAA3C,EAAqD;AACnD;AACD;;AAED,MAAMC,MAAM,GAAGH,KAAK,CAACI,QAAN,CAAeC,gBAAf,CAAgCL,KAAK,CAACE,QAAtC,CAAf;;AAEA,MAAIC,MAAJ,EAAY;AACV,WAAOA,MAAP;AACD;;AAED,MAAMG,KAAK,GAAGN,KAAK,CAACI,QAAN,CAAeG,eAAf,CAA+BP,KAAK,CAACE,QAArC,CAAd;;AAEA,MAAII,KAAJ,EAAW;AACT,WAAOA,KAAP;AACD;AACF,CAhBM;;;;AAkBA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACR,KAAD,EAAQS,IAAR,EAAiB;AAC7C,MAAI,CAACT,KAAD,IAAU,CAACS,IAAf,EAAqB;AACnB;AACD;;AAED,SAAOT,KAAK,CAACI,QAAN,CAAeM,SAAf,CAAyBD,IAAI,CAACE,GAA9B,CAAP;AACD,CANM;;;;AAQA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACZ,KAAD,EAAQa,IAAR;AAAA,SAAiBb,KAAK,IAAIA,KAAK,CAACc,KAAN,CAAYC,IAAZ,CAAiB,UAACC,IAAD;AAAA,WAAUA,IAAI,CAACH,IAAL,IAAaA,IAAvB;AAAA,GAAjB,CAA1B;AAAA,CAAhB;;;;AAEA,IAAMI,QAAQ,GAAG,SAAXA,QAAW,CAACjB,KAAD,EAAQa,IAAR;AAAA,SAAiBb,KAAK,IAAIA,KAAK,CAACkB,MAAN,CAAaH,IAAb,CAAkB,UAACN,IAAD;AAAA,WAAUA,IAAI,CAACI,IAAL,IAAaA,IAAvB;AAAA,GAAlB,CAA1B;AAAA,CAAjB;;;;AAEA,IAAMM,OAAO,GAAG,SAAVA,OAAU,OAAeN,IAAf;AAAA,MAAGT,QAAH,QAAGA,QAAH;AAAA,SAAwBA,QAAQ,IAAIA,QAAQ,CAACgB,KAAT,CAAeL,IAAf,CAAoB,UAACN,IAAD;AAAA,WAAUA,IAAI,CAACI,IAAL,IAAaA,IAAvB;AAAA,GAApB,CAApC;AAAA,CAAhB","sourcesContent":["export const findSingleNode = (value) => {\n if (!value || !value.isCollapsed || !value.startKey) {\n return;\n }\n\n const inline = value.document.getClosestInline(value.startKey);\n\n if (inline) {\n return inline;\n }\n\n const block = value.document.getClosestBlock(value.startKey);\n\n if (block) {\n return block;\n }\n};\n\nexport const findParentNode = (value, node) => {\n if (!value || !node) {\n return;\n }\n\n return value.document.getParent(node.key);\n};\n\nexport const hasMark = (value, type) => value && value.marks.some((mark) => mark.type == type);\n\nexport const hasBlock = (value, type) => value && value.blocks.some((node) => node.type == type);\n\nexport const hasNode = ({ document }, type) => document && document.nodes.some((node) => node.type == type);\n"],"file":"utils.js"}
|
package/lib/serialization.js
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.valueToHtml = exports.reactAttributes = exports.parseStyleString = exports.htmlToValue = exports.getBase64 = exports.TEXT_RULE = exports.BLOCK_TAGS = void 0;
|
|
9
|
+
|
|
8
10
|
var _slateHtmlSerializer = _interopRequireDefault(require("slate-html-serializer"));
|
|
11
|
+
|
|
9
12
|
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
10
14
|
var _debug = _interopRequireDefault(require("debug"));
|
|
15
|
+
|
|
11
16
|
var _toStyle = require("to-style");
|
|
17
|
+
|
|
12
18
|
var _image = require("./plugins/image");
|
|
19
|
+
|
|
13
20
|
var _math = require("./plugins/math");
|
|
21
|
+
|
|
14
22
|
var _media = require("./plugins/media");
|
|
23
|
+
|
|
15
24
|
var _list = require("./plugins/list");
|
|
25
|
+
|
|
16
26
|
var _table = require("./plugins/table");
|
|
27
|
+
|
|
17
28
|
var _respArea = require("./plugins/respArea");
|
|
29
|
+
|
|
18
30
|
var _slate = require("slate");
|
|
19
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
20
31
|
|
|
32
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
21
33
|
/**
|
|
22
34
|
* Tags to blocks.
|
|
23
35
|
*
|
|
@@ -37,12 +49,12 @@ var BLOCK_TAGS = {
|
|
|
37
49
|
h5: 'heading-five',
|
|
38
50
|
h6: 'heading-six'
|
|
39
51
|
};
|
|
40
|
-
|
|
41
52
|
/**
|
|
42
53
|
* Tags to marks.
|
|
43
54
|
*
|
|
44
55
|
* @type {Object}
|
|
45
56
|
*/
|
|
57
|
+
|
|
46
58
|
exports.BLOCK_TAGS = BLOCK_TAGS;
|
|
47
59
|
var MARK_TAGS = {
|
|
48
60
|
b: 'bold',
|
|
@@ -52,39 +64,51 @@ var MARK_TAGS = {
|
|
|
52
64
|
code: 'code',
|
|
53
65
|
strong: 'bold'
|
|
54
66
|
};
|
|
67
|
+
|
|
55
68
|
var parseStyleString = function parseStyleString(s) {
|
|
56
69
|
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
57
70
|
var match;
|
|
58
71
|
var result = {};
|
|
72
|
+
|
|
59
73
|
while (match = regex.exec(s)) {
|
|
60
74
|
result[match[1]] = match[2].trim();
|
|
61
75
|
}
|
|
76
|
+
|
|
62
77
|
return result;
|
|
63
78
|
};
|
|
79
|
+
|
|
64
80
|
exports.parseStyleString = parseStyleString;
|
|
81
|
+
|
|
65
82
|
var getBase64 = function getBase64(file) {
|
|
66
83
|
return new Promise(function (resolve, reject) {
|
|
67
84
|
var reader = new FileReader();
|
|
68
85
|
reader.readAsDataURL(file);
|
|
86
|
+
|
|
69
87
|
reader.onload = function () {
|
|
70
88
|
return resolve(reader.result);
|
|
71
89
|
};
|
|
90
|
+
|
|
72
91
|
reader.onerror = function (error) {
|
|
73
92
|
return reject(error);
|
|
74
93
|
};
|
|
75
94
|
});
|
|
76
95
|
};
|
|
96
|
+
|
|
77
97
|
exports.getBase64 = getBase64;
|
|
98
|
+
|
|
78
99
|
var reactAttributes = function reactAttributes(o) {
|
|
79
100
|
return (0, _toStyle.object)(o, {
|
|
80
101
|
camelize: true,
|
|
81
102
|
addUnits: false
|
|
82
103
|
});
|
|
83
104
|
};
|
|
105
|
+
|
|
84
106
|
exports.reactAttributes = reactAttributes;
|
|
107
|
+
|
|
85
108
|
var attributesToMap = function attributesToMap(el) {
|
|
86
109
|
return function (acc, attribute) {
|
|
87
110
|
var value = el.getAttribute(attribute);
|
|
111
|
+
|
|
88
112
|
if (value) {
|
|
89
113
|
if (attribute === 'style') {
|
|
90
114
|
var styleString = el.getAttribute(attribute);
|
|
@@ -94,11 +118,12 @@ var attributesToMap = function attributesToMap(el) {
|
|
|
94
118
|
acc[attribute] = el.getAttribute(attribute);
|
|
95
119
|
}
|
|
96
120
|
}
|
|
121
|
+
|
|
97
122
|
return acc;
|
|
98
123
|
};
|
|
99
124
|
};
|
|
100
|
-
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
101
125
|
|
|
126
|
+
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
102
127
|
/**
|
|
103
128
|
* Serializer rules.
|
|
104
129
|
*
|
|
@@ -111,16 +136,20 @@ var blocks = {
|
|
|
111
136
|
var block = BLOCK_TAGS[el.tagName.toLowerCase()];
|
|
112
137
|
if (!block) return;
|
|
113
138
|
log('[blocks:deserialize] block: ', block);
|
|
139
|
+
|
|
114
140
|
if (el.childNodes.length === 1) {
|
|
115
141
|
var cn = el.childNodes[0];
|
|
142
|
+
|
|
116
143
|
if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
|
|
117
144
|
log('[we have a child node of the same]...');
|
|
118
145
|
return;
|
|
119
146
|
}
|
|
120
147
|
}
|
|
148
|
+
|
|
121
149
|
return {
|
|
122
150
|
object: 'block',
|
|
123
151
|
type: block,
|
|
152
|
+
|
|
124
153
|
/**
|
|
125
154
|
* Here for rendering styles for all block elements
|
|
126
155
|
*/
|
|
@@ -135,6 +164,7 @@ var blocks = {
|
|
|
135
164
|
var jsonData = object.data.toJSON();
|
|
136
165
|
log('[blocks:serialize] object: ', object, children);
|
|
137
166
|
var key;
|
|
167
|
+
|
|
138
168
|
for (key in BLOCK_TAGS) {
|
|
139
169
|
if (BLOCK_TAGS[key] === object.type) {
|
|
140
170
|
var Tag = key;
|
|
@@ -165,21 +195,26 @@ var marks = {
|
|
|
165
195
|
}
|
|
166
196
|
}
|
|
167
197
|
};
|
|
198
|
+
|
|
168
199
|
var findPreviousText = function findPreviousText(el) {
|
|
169
200
|
if (el.nodeName === '#text') {
|
|
170
201
|
return el;
|
|
171
202
|
}
|
|
203
|
+
|
|
172
204
|
if (el.previousSibling) {
|
|
173
205
|
return findPreviousText(el.previousSibling);
|
|
174
206
|
}
|
|
207
|
+
|
|
175
208
|
return null;
|
|
176
209
|
};
|
|
210
|
+
|
|
177
211
|
var TEXT_RULE = {
|
|
178
212
|
deserialize: function deserialize(el) {
|
|
179
213
|
/**
|
|
180
214
|
* This needs to be called on the dom element in order to merge the adjacent text nodes together
|
|
181
215
|
* */
|
|
182
216
|
el.normalize();
|
|
217
|
+
|
|
183
218
|
if (el.tagName && el.tagName.toLowerCase() === 'br') {
|
|
184
219
|
return {
|
|
185
220
|
object: 'text',
|
|
@@ -189,6 +224,7 @@ var TEXT_RULE = {
|
|
|
189
224
|
}]
|
|
190
225
|
};
|
|
191
226
|
}
|
|
227
|
+
|
|
192
228
|
if (el.nodeName === '#text') {
|
|
193
229
|
if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
|
|
194
230
|
log('[text:deserialize] return text object..');
|
|
@@ -213,28 +249,35 @@ var TEXT_RULE = {
|
|
|
213
249
|
};
|
|
214
250
|
exports.TEXT_RULE = TEXT_RULE;
|
|
215
251
|
var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
|
|
252
|
+
|
|
216
253
|
function allWhitespace(node) {
|
|
217
254
|
// Use ECMA-262 Edition 3 String and RegExp features
|
|
218
255
|
return !/[^\t\n\r ]/.test(node.textContent);
|
|
219
256
|
}
|
|
257
|
+
|
|
220
258
|
function defaultParseHtml(html) {
|
|
221
259
|
if (typeof DOMParser === 'undefined') {
|
|
222
260
|
throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');
|
|
223
261
|
}
|
|
262
|
+
|
|
224
263
|
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
225
264
|
var body = parsed.body;
|
|
226
265
|
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
227
266
|
var n = textNodes.nextNode();
|
|
267
|
+
|
|
228
268
|
while (n) {
|
|
229
269
|
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
230
270
|
n.parentNode.removeChild(n);
|
|
231
271
|
}
|
|
272
|
+
|
|
232
273
|
n = textNodes.nextNode();
|
|
233
274
|
}
|
|
275
|
+
|
|
234
276
|
return body;
|
|
235
277
|
}
|
|
236
|
-
|
|
237
278
|
/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
|
|
279
|
+
|
|
280
|
+
|
|
238
281
|
var parseHtml = typeof window === 'undefined' ? function () {
|
|
239
282
|
return {
|
|
240
283
|
childNodes: []
|
|
@@ -245,18 +288,20 @@ var serializer = new _slateHtmlSerializer["default"]({
|
|
|
245
288
|
rules: RULES,
|
|
246
289
|
parseHtml: parseHtml
|
|
247
290
|
});
|
|
291
|
+
|
|
248
292
|
var _extends = Object.assign || function (target) {
|
|
249
293
|
for (var i = 1; i < arguments.length; i++) {
|
|
250
294
|
var source = arguments[i];
|
|
295
|
+
|
|
251
296
|
for (var key in source) {
|
|
252
297
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
253
298
|
target[key] = source[key];
|
|
254
299
|
}
|
|
255
300
|
}
|
|
256
301
|
}
|
|
302
|
+
|
|
257
303
|
return target;
|
|
258
304
|
};
|
|
259
|
-
|
|
260
305
|
/**
|
|
261
306
|
* This is needed in order to override the function that eventually leads
|
|
262
307
|
* to the max iteration of 12, which in most cases it's not enough. The newer versions
|
|
@@ -266,6 +311,8 @@ var _extends = Object.assign || function (target) {
|
|
|
266
311
|
* Below is the code that calculates the max iterations.
|
|
267
312
|
* var max = schema.stack.plugins.length + schema.rules.length + 1;
|
|
268
313
|
*/
|
|
314
|
+
|
|
315
|
+
|
|
269
316
|
serializer.deserialize = function deserialize(html) {
|
|
270
317
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
271
318
|
var _options$toJSON = options.toJSON;
|
|
@@ -274,19 +321,22 @@ serializer.deserialize = function deserialize(html) {
|
|
|
274
321
|
var parseHtml = this.parseHtml;
|
|
275
322
|
var fragment = parseHtml(html);
|
|
276
323
|
var children = Array.from(fragment.childNodes);
|
|
277
|
-
var nodes = this.deserializeElements(children);
|
|
324
|
+
var nodes = this.deserializeElements(children); // COMPAT: ensure that all top-level inline nodes are wrapped into a block.
|
|
278
325
|
|
|
279
|
-
// COMPAT: ensure that all top-level inline nodes are wrapped into a block.
|
|
280
326
|
nodes = nodes.reduce(function (memo, node, i, original) {
|
|
281
327
|
if (node.object === 'block') {
|
|
282
328
|
memo.push(node);
|
|
283
329
|
return memo;
|
|
284
330
|
}
|
|
331
|
+
|
|
285
332
|
if (i > 0 && original[i - 1].object !== 'block') {
|
|
286
333
|
var _block = memo[memo.length - 1];
|
|
334
|
+
|
|
287
335
|
_block.nodes.push(node);
|
|
336
|
+
|
|
288
337
|
return memo;
|
|
289
338
|
}
|
|
339
|
+
|
|
290
340
|
var block = _extends({
|
|
291
341
|
object: 'block',
|
|
292
342
|
data: {},
|
|
@@ -294,9 +344,11 @@ serializer.deserialize = function deserialize(html) {
|
|
|
294
344
|
}, defaultBlock, {
|
|
295
345
|
nodes: [node]
|
|
296
346
|
});
|
|
347
|
+
|
|
297
348
|
memo.push(block);
|
|
298
349
|
return memo;
|
|
299
350
|
}, []);
|
|
351
|
+
|
|
300
352
|
if (nodes.length === 0) {
|
|
301
353
|
nodes = [_extends({
|
|
302
354
|
object: 'block',
|
|
@@ -313,6 +365,7 @@ serializer.deserialize = function deserialize(html) {
|
|
|
313
365
|
}]
|
|
314
366
|
})];
|
|
315
367
|
}
|
|
368
|
+
|
|
316
369
|
var json = {
|
|
317
370
|
object: 'value',
|
|
318
371
|
document: {
|
|
@@ -325,6 +378,7 @@ serializer.deserialize = function deserialize(html) {
|
|
|
325
378
|
}
|
|
326
379
|
};
|
|
327
380
|
var i;
|
|
381
|
+
|
|
328
382
|
for (i = 0; i < 3000; i++) {
|
|
329
383
|
json.schema.rules.push({
|
|
330
384
|
match: {
|
|
@@ -337,12 +391,16 @@ serializer.deserialize = function deserialize(html) {
|
|
|
337
391
|
}]
|
|
338
392
|
});
|
|
339
393
|
}
|
|
394
|
+
|
|
340
395
|
var ret = toJSON ? json : _slate.Value.fromJSON(json);
|
|
396
|
+
|
|
341
397
|
if (ret) {
|
|
342
398
|
return ret;
|
|
343
399
|
}
|
|
400
|
+
|
|
344
401
|
return null;
|
|
345
402
|
};
|
|
403
|
+
|
|
346
404
|
var htmlToValue = function htmlToValue(html) {
|
|
347
405
|
try {
|
|
348
406
|
return serializer.deserialize(html);
|
|
@@ -351,11 +409,12 @@ var htmlToValue = function htmlToValue(html) {
|
|
|
351
409
|
return {};
|
|
352
410
|
}
|
|
353
411
|
};
|
|
412
|
+
|
|
354
413
|
exports.htmlToValue = htmlToValue;
|
|
414
|
+
|
|
355
415
|
var valueToHtml = function valueToHtml(value) {
|
|
356
416
|
return serializer.serialize(value);
|
|
357
417
|
};
|
|
358
|
-
|
|
359
418
|
/**
|
|
360
419
|
*
|
|
361
420
|
* <div><div>a</div></div> -> <div>a</div>
|
|
@@ -363,5 +422,7 @@ var valueToHtml = function valueToHtml(value) {
|
|
|
363
422
|
* <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
|
|
364
423
|
* <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
|
|
365
424
|
*/
|
|
425
|
+
|
|
426
|
+
|
|
366
427
|
exports.valueToHtml = valueToHtml;
|
|
367
428
|
//# sourceMappingURL=serialization.js.map
|
package/lib/serialization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","names":["log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","MARK_TAGS","b","em","u","s","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","object","type","data","reduce","nodes","serialize","children","jsonData","toJSON","key","Tag","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","nodeValue","obj","split","array","i","push","RULES","listSerialization","mathSerialization","mediaSerialization","imgSerialization","tableSerialization","responseAreaSerialization","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","parentNode","removeChild","parseHtml","window","serializer","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"sources":["../src/serialization.jsx"],"sourcesContent":["import Html from 'slate-html-serializer';\nimport React from 'react';\nimport debug from 'debug';\nimport { object as toStyleObject } from 'to-style';\n\nimport { serialization as imgSerialization } from './plugins/image';\nimport { serialization as mathSerialization } from './plugins/math';\nimport { serialization as mediaSerialization } from './plugins/media';\nimport { serialization as listSerialization } from './plugins/list';\nimport { serialization as tableSerialization } from './plugins/table';\nimport { serialization as responseAreaSerialization } from './plugins/respArea';\nimport { Mark, Value } from 'slate';\n\nconst log = debug('@pie-lib:editable-html:serialization');\n\n/**\n * Tags to blocks.\n *\n * @type {Object}\n */\n\nexport const BLOCK_TAGS = {\n div: 'div',\n span: 'span',\n p: 'paragraph',\n blockquote: 'quote',\n pre: 'code',\n h1: 'heading-one',\n h2: 'heading-two',\n h3: 'heading-three',\n h4: 'heading-four',\n h5: 'heading-five',\n h6: 'heading-six',\n};\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'bold',\n};\n\nexport const parseStyleString = (s) => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const getBase64 = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n};\n\nexport const reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = (el) => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\n/**\n * Serializer rules.\n *\n * @type {Array}\n */\n\nconst blocks = {\n deserialize(el, next) {\n log('[blocks:deserialize] block: ', el);\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (!block) return;\n log('[blocks:deserialize] block: ', block);\n\n if (el.childNodes.length === 1) {\n const cn = el.childNodes[0];\n if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {\n log('[we have a child node of the same]...');\n return;\n }\n }\n\n return {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: next(el.childNodes),\n };\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data.toJSON();\n\n log('[blocks:serialize] object: ', object, children);\n let key;\n\n for (key in BLOCK_TAGS) {\n if (BLOCK_TAGS[key] === object.type) {\n const Tag = key;\n\n return <Tag {...jsonData.attributes}>{children}</Tag>;\n }\n }\n },\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n },\n};\n\nconst findPreviousText = (el) => {\n if (el.nodeName === '#text') {\n return el;\n }\n\n if (el.previousSibling) {\n return findPreviousText(el.previousSibling);\n }\n\n return null;\n};\n\nexport const TEXT_RULE = {\n deserialize(el) {\n /**\n * This needs to be called on the dom element in order to merge the adjacent text nodes together\n * */\n el.normalize();\n\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n',\n },\n ],\n };\n }\n\n if (el.nodeName === '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n log('[text:deserialize] return text object..');\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue,\n },\n ],\n };\n }\n },\n\n serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce((array, text, i) => {\n if (i !== 0) array.push(<br />);\n array.push(text);\n return array;\n }, []);\n }\n },\n};\n\nconst RULES = [\n listSerialization,\n mathSerialization,\n mediaSerialization,\n imgSerialization,\n tableSerialization,\n responseAreaSerialization,\n TEXT_RULE,\n blocks,\n marks,\n];\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.',\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\n/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */\nconst parseHtml =\n typeof window === 'undefined'\n ? () => ({\n childNodes: [],\n })\n : defaultParseHtml;\n\nconst serializer = new Html({\n defaultBlock: 'div',\n rules: RULES,\n parseHtml,\n});\n\nconst _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node],\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }],\n }),\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes,\n },\n schema: {\n rules: [],\n },\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }],\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = (html) => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n console.log(\"Couldn't parse html: \", e);\n return {};\n }\n};\n\nexport const valueToHtml = (value) => serializer.serialize(value);\n\n/**\n *\n * <div><div>a</div></div> -> <div>a</div>\n *\n * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>\n * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>\n */\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/serialization.jsx"],"names":["log","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","MARK_TAGS","b","em","u","s","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","object","type","data","reduce","nodes","serialize","children","jsonData","toJSON","key","Tag","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","nodeValue","obj","split","array","i","push","RULES","listSerialization","mathSerialization","mediaSerialization","imgSerialization","tableSerialization","responseAreaSerialization","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","parentNode","removeChild","parseHtml","window","serializer","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"mappings":"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","sourcesContent":["import Html from 'slate-html-serializer';\nimport React from 'react';\nimport debug from 'debug';\nimport { object as toStyleObject } from 'to-style';\n\nimport { serialization as imgSerialization } from './plugins/image';\nimport { serialization as mathSerialization } from './plugins/math';\nimport { serialization as mediaSerialization } from './plugins/media';\nimport { serialization as listSerialization } from './plugins/list';\nimport { serialization as tableSerialization } from './plugins/table';\nimport { serialization as responseAreaSerialization } from './plugins/respArea';\nimport { Mark, Value } from 'slate';\n\nconst log = debug('@pie-lib:editable-html:serialization');\n\n/**\n * Tags to blocks.\n *\n * @type {Object}\n */\n\nexport const BLOCK_TAGS = {\n div: 'div',\n span: 'span',\n p: 'paragraph',\n blockquote: 'quote',\n pre: 'code',\n h1: 'heading-one',\n h2: 'heading-two',\n h3: 'heading-three',\n h4: 'heading-four',\n h5: 'heading-five',\n h6: 'heading-six',\n};\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'bold',\n};\n\nexport const parseStyleString = (s) => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const getBase64 = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n};\n\nexport const reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = (el) => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\n/**\n * Serializer rules.\n *\n * @type {Array}\n */\n\nconst blocks = {\n deserialize(el, next) {\n log('[blocks:deserialize] block: ', el);\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (!block) return;\n log('[blocks:deserialize] block: ', block);\n\n if (el.childNodes.length === 1) {\n const cn = el.childNodes[0];\n if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {\n log('[we have a child node of the same]...');\n return;\n }\n }\n\n return {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: next(el.childNodes),\n };\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data.toJSON();\n\n log('[blocks:serialize] object: ', object, children);\n let key;\n\n for (key in BLOCK_TAGS) {\n if (BLOCK_TAGS[key] === object.type) {\n const Tag = key;\n\n return <Tag {...jsonData.attributes}>{children}</Tag>;\n }\n }\n },\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n },\n};\n\nconst findPreviousText = (el) => {\n if (el.nodeName === '#text') {\n return el;\n }\n\n if (el.previousSibling) {\n return findPreviousText(el.previousSibling);\n }\n\n return null;\n};\n\nexport const TEXT_RULE = {\n deserialize(el) {\n /**\n * This needs to be called on the dom element in order to merge the adjacent text nodes together\n * */\n el.normalize();\n\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n',\n },\n ],\n };\n }\n\n if (el.nodeName === '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n log('[text:deserialize] return text object..');\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue,\n },\n ],\n };\n }\n },\n\n serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce((array, text, i) => {\n if (i !== 0) array.push(<br />);\n array.push(text);\n return array;\n }, []);\n }\n },\n};\n\nconst RULES = [\n listSerialization,\n mathSerialization,\n mediaSerialization,\n imgSerialization,\n tableSerialization,\n responseAreaSerialization,\n TEXT_RULE,\n blocks,\n marks,\n];\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.',\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\n/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */\nconst parseHtml =\n typeof window === 'undefined'\n ? () => ({\n childNodes: [],\n })\n : defaultParseHtml;\n\nconst serializer = new Html({\n defaultBlock: 'div',\n rules: RULES,\n parseHtml,\n});\n\nconst _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node],\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }],\n }),\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes,\n },\n schema: {\n rules: [],\n },\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }],\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = (html) => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n console.log(\"Couldn't parse html: \", e);\n return {};\n }\n};\n\nexport const valueToHtml = (value) => serializer.serialize(value);\n\n/**\n *\n * <div><div>a</div></div> -> <div>a</div>\n *\n * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>\n * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>\n */\n"],"file":"serialization.js"}
|
package/lib/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/theme.js"],"names":["primary"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAhB","sourcesContent":["export const primary = '#304ffe';\n"],"file":"theme.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/editable-html",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"@material-ui/core": "^3.8.3",
|
|
11
11
|
"@material-ui/icons": "^3.0.2",
|
|
12
12
|
"@material-ui/styles": "^3.0.0-alpha.10",
|
|
13
|
-
"@pie-lib/drag": "^2.0.
|
|
13
|
+
"@pie-lib/drag": "^2.0.5",
|
|
14
14
|
"@pie-lib/math-rendering": "^2.5.1",
|
|
15
|
-
"@pie-lib/math-toolbar": "^1.11.6
|
|
15
|
+
"@pie-lib/math-toolbar": "^1.11.6",
|
|
16
16
|
"@pie-lib/render-ui": "^4.13.7",
|
|
17
17
|
"change-case": "^3.0.2",
|
|
18
18
|
"classnames": "^2.2.6",
|
|
@@ -47,6 +47,6 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "252c387e845b7f3b5887d10ae458cefb76ad3fa5",
|
|
51
51
|
"scripts": {}
|
|
52
52
|
}
|