@pie-lib/mask-markup 1.13.13-next.0 → 2.0.0-beta.1

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +0 -186
  2. package/lib/choices/choice.js +2 -2
  3. package/lib/choices/choice.js.map +1 -1
  4. package/lib/choices/index.js +2 -6
  5. package/lib/choices/index.js.map +1 -1
  6. package/lib/componentize.js +1 -1
  7. package/lib/componentize.js.map +1 -1
  8. package/lib/components/blank.js +1 -1
  9. package/lib/components/blank.js.map +1 -1
  10. package/lib/components/correct-input.js +1 -1
  11. package/lib/components/correct-input.js.map +1 -1
  12. package/lib/components/dropdown.js +1 -1
  13. package/lib/components/dropdown.js.map +1 -1
  14. package/lib/components/input.js +1 -1
  15. package/lib/components/input.js.map +1 -1
  16. package/lib/constructed-response.js +1 -1
  17. package/lib/constructed-response.js.map +1 -1
  18. package/lib/drag-in-the-blank.js +1 -1
  19. package/lib/drag-in-the-blank.js.map +1 -1
  20. package/lib/index.js +1 -1
  21. package/lib/index.js.map +1 -1
  22. package/lib/inline-dropdown.js +1 -1
  23. package/lib/inline-dropdown.js.map +1 -1
  24. package/lib/mask.js +10 -19
  25. package/lib/mask.js.map +1 -1
  26. package/lib/new-serialization.js +320 -0
  27. package/lib/parse-html.js +16 -0
  28. package/lib/serialization.js +33 -30
  29. package/lib/serialization.js.map +1 -1
  30. package/lib/test-serializer.js +215 -0
  31. package/lib/with-mask.js +2 -2
  32. package/lib/with-mask.js.map +1 -1
  33. package/package.json +12 -11
  34. package/src/choices/choice.jsx +13 -13
  35. package/src/choices/index.jsx +13 -17
  36. package/src/components/blank.jsx +30 -30
  37. package/src/components/correct-input.jsx +18 -18
  38. package/src/components/dropdown.jsx +38 -27
  39. package/src/components/input.jsx +3 -3
  40. package/src/constructed-response.jsx +4 -2
  41. package/src/drag-in-the-blank.jsx +11 -8
  42. package/src/index.js +8 -1
  43. package/src/inline-dropdown.jsx +3 -2
  44. package/src/mask.jsx +18 -29
  45. package/src/new-serialization.jsx +291 -0
  46. package/src/parse-html.js +8 -0
  47. package/src/serialization.js +43 -37
  48. package/src/test-serializer.js +163 -0
  49. package/src/with-mask.jsx +10 -3
  50. package/LICENSE.md +0 -5
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.valueToHtml = exports.reactAttributes = exports.parseStyleString = exports.htmlToValue = exports.getBase64 = exports.TEXT_RULE = exports.BLOCK_TAGS = void 0;
9
+
10
+ var _testSerializer = _interopRequireDefault(require("./test-serializer"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _debug = _interopRequireDefault(require("debug"));
15
+
16
+ var _toStyle = require("to-style");
17
+
18
+ var _image = require("./plugins/image");
19
+
20
+ var _math = require("./plugins/math");
21
+
22
+ var _media = require("./plugins/media");
23
+
24
+ var _list = require("./plugins/list");
25
+
26
+ var _table = require("./plugins/table");
27
+
28
+ var _respArea = require("./plugins/respArea");
29
+
30
+ var _slate = require("slate");
31
+
32
+ var _slateHyperscript = require("slate-hyperscript");
33
+
34
+ var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
35
+ /**
36
+ * Tags to blocks.
37
+ *
38
+ * @type {Object}
39
+ */
40
+
41
+ var BLOCK_TAGS = {
42
+ div: 'div',
43
+ span: 'span',
44
+ p: 'paragraph',
45
+ blockquote: 'quote',
46
+ pre: 'code',
47
+ h1: 'heading-one',
48
+ h2: 'heading-two',
49
+ h3: 'heading-three',
50
+ h4: 'heading-four',
51
+ h5: 'heading-five',
52
+ h6: 'heading-six'
53
+ };
54
+ /**
55
+ * Tags to marks.
56
+ *
57
+ * @type {Object}
58
+ */
59
+
60
+ exports.BLOCK_TAGS = BLOCK_TAGS;
61
+ var MARK_TAGS = {
62
+ b: 'bold',
63
+ em: 'italic',
64
+ u: 'underline',
65
+ s: 'strikethrough',
66
+ code: 'code',
67
+ strong: 'bold'
68
+ };
69
+
70
+ var parseStyleString = function parseStyleString(s) {
71
+ var regex = /([\w-]*)\s*:\s*([^;]*)/g;
72
+ var match;
73
+ var result = {};
74
+
75
+ while (match = regex.exec(s)) {
76
+ result[match[1]] = match[2].trim();
77
+ }
78
+
79
+ return result;
80
+ };
81
+
82
+ exports.parseStyleString = parseStyleString;
83
+
84
+ var getBase64 = function getBase64(file) {
85
+ return new Promise(function (resolve, reject) {
86
+ var reader = new FileReader();
87
+ reader.readAsDataURL(file);
88
+
89
+ reader.onload = function () {
90
+ return resolve(reader.result);
91
+ };
92
+
93
+ reader.onerror = function (error) {
94
+ return reject(error);
95
+ };
96
+ });
97
+ };
98
+
99
+ exports.getBase64 = getBase64;
100
+
101
+ var reactAttributes = function reactAttributes(o) {
102
+ return (0, _toStyle.object)(o, {
103
+ camelize: true,
104
+ addUnits: false
105
+ });
106
+ };
107
+
108
+ exports.reactAttributes = reactAttributes;
109
+
110
+ var attributesToMap = function attributesToMap(el) {
111
+ return function (acc, attribute) {
112
+ var value = el.getAttribute(attribute);
113
+
114
+ if (value) {
115
+ if (attribute === 'style') {
116
+ var styleString = el.getAttribute(attribute);
117
+ var reactStyleObject = reactAttributes(parseStyleString(styleString));
118
+ acc['style'] = reactStyleObject;
119
+ } else {
120
+ acc[attribute] = el.getAttribute(attribute);
121
+ }
122
+ }
123
+
124
+ return acc;
125
+ };
126
+ };
127
+
128
+ var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
129
+ /**
130
+ * Serializer rules.
131
+ *
132
+ * @type {Array}
133
+ */
134
+
135
+ var blocks = {
136
+ deserialize: function deserialize(el, next) {
137
+ log('[blocks:deserialize] block: ', el);
138
+ var block = BLOCK_TAGS[el.tagName.toLowerCase()];
139
+ if (!block) return;
140
+ log('[blocks:deserialize] block: ', block);
141
+
142
+ if (el.childNodes.length === 1) {
143
+ var cn = el.childNodes[0];
144
+
145
+ if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
146
+ log('[we have a child node of the same]...');
147
+ return;
148
+ }
149
+ }
150
+
151
+ return (0, _slateHyperscript.jsx)('element', {
152
+ type: block,
153
+
154
+ /**
155
+ * Here for rendering styles for all block elements
156
+ */
157
+ data: {
158
+ attributes: attributes.reduce(attributesToMap(el), {})
159
+ }
160
+ }, next(el.childNodes));
161
+ },
162
+ serialize: function serialize(object, children) {
163
+ if (object.object !== 'block') return;
164
+ var jsonData = object.data.toJSON();
165
+ log('[blocks:serialize] object: ', object, children);
166
+ var key;
167
+
168
+ for (key in BLOCK_TAGS) {
169
+ if (BLOCK_TAGS[key] === object.type) {
170
+ var Tag = key;
171
+ return /*#__PURE__*/_react["default"].createElement(Tag, jsonData.attributes, children);
172
+ }
173
+ }
174
+ }
175
+ };
176
+ var marks = {
177
+ deserialize: function deserialize(el, next) {
178
+ var mark = MARK_TAGS[el.tagName.toLowerCase()];
179
+
180
+ if (!mark) {
181
+ return;
182
+ }
183
+
184
+ log('[deserialize] mark: ', mark);
185
+ return (0, _slateHyperscript.jsx)('element', {
186
+ type: mark
187
+ }, next(el.childNodes));
188
+ },
189
+ serialize: function serialize(object, children) {
190
+ /*if (Mark.isMark(object)) {
191
+ for (var key in MARK_TAGS) {
192
+ if (MARK_TAGS[key] === object.type) {
193
+ const Tag = key;
194
+ return <Tag>{children}</Tag>;
195
+ }
196
+ }
197
+ }*/
198
+ }
199
+ };
200
+
201
+ var findPreviousText = function findPreviousText(el) {
202
+ if (el.nodeName === '#text') {
203
+ return el;
204
+ }
205
+
206
+ if (el.previousSibling) {
207
+ return findPreviousText(el.previousSibling);
208
+ }
209
+
210
+ return null;
211
+ };
212
+
213
+ var TEXT_RULE = {
214
+ deserialize: function deserialize(el) {
215
+ /**
216
+ * This needs to be called on the dom element in order to merge the adjacent text nodes together
217
+ * */
218
+ el.normalize();
219
+
220
+ if (el.tagName && el.tagName.toLowerCase() === 'br') {
221
+ return (0, _slateHyperscript.jsx)('text', {});
222
+ }
223
+
224
+ if (el.nodeName === '#text') {
225
+ if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
226
+ log('[text:deserialize] return text object..');
227
+ return (0, _slateHyperscript.jsx)('text', {}, el.nodeValue);
228
+ }
229
+ },
230
+ serialize: function serialize(obj, children) {
231
+ if (obj.object === 'string') {
232
+ return children.split('\n').reduce(function (array, text, i) {
233
+ if (i !== 0) array.push( /*#__PURE__*/_react["default"].createElement("br", null));
234
+ array.push(text);
235
+ return array;
236
+ }, []);
237
+ }
238
+ }
239
+ };
240
+ exports.TEXT_RULE = TEXT_RULE;
241
+ var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
242
+
243
+ function allWhitespace(node) {
244
+ // Use ECMA-262 Edition 3 String and RegExp features
245
+ return !/[^\t\n\r ]/.test(node.textContent);
246
+ }
247
+
248
+ function defaultParseHtml(html) {
249
+ if (typeof DOMParser === 'undefined') {
250
+ 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.');
251
+ }
252
+
253
+ var parsed = new DOMParser().parseFromString(html, 'text/html');
254
+ var body = parsed.body;
255
+ var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
256
+ var n = textNodes.nextNode();
257
+
258
+ while (n) {
259
+ if (allWhitespace(n) || n.nodeValue === "\u200B") {
260
+ n.parentNode.removeChild(n);
261
+ }
262
+
263
+ n = textNodes.nextNode();
264
+ }
265
+
266
+ return body;
267
+ }
268
+ /** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
269
+
270
+
271
+ var parseHtml = typeof window === 'undefined' ? function () {
272
+ return {
273
+ childNodes: []
274
+ };
275
+ } : defaultParseHtml;
276
+ var serializer = new _testSerializer["default"]({
277
+ defaultBlock: 'div',
278
+ rules: RULES,
279
+ parseHtml: parseHtml
280
+ });
281
+
282
+ var _extends = Object.assign || function (target) {
283
+ for (var i = 1; i < arguments.length; i++) {
284
+ var source = arguments[i];
285
+
286
+ for (var key in source) {
287
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
288
+ target[key] = source[key];
289
+ }
290
+ }
291
+ }
292
+
293
+ return target;
294
+ };
295
+
296
+ var htmlToValue = function htmlToValue(html) {
297
+ try {
298
+ return serializer.deserialize(html);
299
+ } catch (e) {
300
+ console.log("Couldn't parse html: ", e);
301
+ return {};
302
+ }
303
+ };
304
+
305
+ exports.htmlToValue = htmlToValue;
306
+
307
+ var valueToHtml = function valueToHtml(value) {
308
+ return serializer.serialize(value);
309
+ };
310
+ /**
311
+ *
312
+ * <div><div>a</div></div> -> <div>a</div>
313
+ *
314
+ * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
315
+ * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
316
+ */
317
+
318
+
319
+ exports.valueToHtml = valueToHtml;
320
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIkJMT0NLX1RBR1MiLCJkaXYiLCJzcGFuIiwicCIsImJsb2NrcXVvdGUiLCJwcmUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJNQVJLX1RBR1MiLCJiIiwiZW0iLCJ1IiwicyIsImNvZGUiLCJzdHJvbmciLCJwYXJzZVN0eWxlU3RyaW5nIiwicmVnZXgiLCJtYXRjaCIsInJlc3VsdCIsImV4ZWMiLCJ0cmltIiwiZ2V0QmFzZTY0IiwiZmlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsInJlYWRBc0RhdGFVUkwiLCJvbmxvYWQiLCJvbmVycm9yIiwiZXJyb3IiLCJyZWFjdEF0dHJpYnV0ZXMiLCJvIiwidG9TdHlsZU9iamVjdCIsImNhbWVsaXplIiwiYWRkVW5pdHMiLCJhdHRyaWJ1dGVzVG9NYXAiLCJlbCIsImFjYyIsImF0dHJpYnV0ZSIsInZhbHVlIiwiZ2V0QXR0cmlidXRlIiwic3R5bGVTdHJpbmciLCJyZWFjdFN0eWxlT2JqZWN0IiwiYXR0cmlidXRlcyIsImJsb2NrcyIsImRlc2VyaWFsaXplIiwibmV4dCIsImJsb2NrIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImNuIiwianN4IiwidHlwZSIsImRhdGEiLCJyZWR1Y2UiLCJzZXJpYWxpemUiLCJvYmplY3QiLCJjaGlsZHJlbiIsImpzb25EYXRhIiwidG9KU09OIiwia2V5IiwiVGFnIiwibWFya3MiLCJtYXJrIiwiZmluZFByZXZpb3VzVGV4dCIsIm5vZGVOYW1lIiwicHJldmlvdXNTaWJsaW5nIiwiVEVYVF9SVUxFIiwibm9ybWFsaXplIiwibm9kZVZhbHVlIiwib2JqIiwic3BsaXQiLCJhcnJheSIsInRleHQiLCJpIiwicHVzaCIsIlJVTEVTIiwibGlzdFNlcmlhbGl6YXRpb24iLCJtYXRoU2VyaWFsaXphdGlvbiIsIm1lZGlhU2VyaWFsaXphdGlvbiIsImltZ1NlcmlhbGl6YXRpb24iLCJ0YWJsZVNlcmlhbGl6YXRpb24iLCJyZXNwb25zZUFyZWFTZXJpYWxpemF0aW9uIiwiYWxsV2hpdGVzcGFjZSIsIm5vZGUiLCJ0ZXN0IiwidGV4dENvbnRlbnQiLCJkZWZhdWx0UGFyc2VIdG1sIiwiaHRtbCIsIkRPTVBhcnNlciIsIkVycm9yIiwicGFyc2VkIiwicGFyc2VGcm9tU3RyaW5nIiwiYm9keSIsInRleHROb2RlcyIsImRvY3VtZW50IiwiY3JlYXRlVHJlZVdhbGtlciIsIk5vZGVGaWx0ZXIiLCJTSE9XX1RFWFQiLCJuIiwibmV4dE5vZGUiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJwYXJzZUh0bWwiLCJ3aW5kb3ciLCJzZXJpYWxpemVyIiwiVGVzdFNlcmlhbGl6ZXIiLCJkZWZhdWx0QmxvY2siLCJydWxlcyIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwidGFyZ2V0IiwiYXJndW1lbnRzIiwic291cmNlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaHRtbFRvVmFsdWUiLCJlIiwiY29uc29sZSIsInZhbHVlVG9IdG1sIl0sInNvdXJjZXMiOlsiLi4vc3JjL25ldy1zZXJpYWxpemF0aW9uLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVzdFNlcmlhbGl6ZXIgZnJvbSAnLi90ZXN0LXNlcmlhbGl6ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBvYmplY3QgYXMgdG9TdHlsZU9iamVjdCB9IGZyb20gJ3RvLXN0eWxlJztcblxuaW1wb3J0IHsgc2VyaWFsaXphdGlvbiBhcyBpbWdTZXJpYWxpemF0aW9uIH0gZnJvbSAnLi9wbHVnaW5zL2ltYWdlJztcbmltcG9ydCB7IHNlcmlhbGl6YXRpb24gYXMgbWF0aFNlcmlhbGl6YXRpb24gfSBmcm9tICcuL3BsdWdpbnMvbWF0aCc7XG5pbXBvcnQgeyBzZXJpYWxpemF0aW9uIGFzIG1lZGlhU2VyaWFsaXphdGlvbiB9IGZyb20gJy4vcGx1Z2lucy9tZWRpYSc7XG5pbXBvcnQgeyBzZXJpYWxpemF0aW9uIGFzIGxpc3RTZXJpYWxpemF0aW9uIH0gZnJvbSAnLi9wbHVnaW5zL2xpc3QnO1xuaW1wb3J0IHsgc2VyaWFsaXphdGlvbiBhcyB0YWJsZVNlcmlhbGl6YXRpb24gfSBmcm9tICcuL3BsdWdpbnMvdGFibGUnO1xuaW1wb3J0IHsgc2VyaWFsaXphdGlvbiBhcyByZXNwb25zZUFyZWFTZXJpYWxpemF0aW9uIH0gZnJvbSAnLi9wbHVnaW5zL3Jlc3BBcmVhJztcbmltcG9ydCB7IE1hcmssIFZhbHVlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInNsYXRlLWh5cGVyc2NyaXB0XCI7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnNlcmlhbGl6YXRpb24nKTtcblxuLyoqXG4gKiBUYWdzIHRvIGJsb2Nrcy5cbiAqXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG5cbmV4cG9ydCBjb25zdCBCTE9DS19UQUdTID0ge1xuICBkaXY6ICdkaXYnLFxuICBzcGFuOiAnc3BhbicsXG4gIHA6ICdwYXJhZ3JhcGgnLFxuICBibG9ja3F1b3RlOiAncXVvdGUnLFxuICBwcmU6ICdjb2RlJyxcbiAgaDE6ICdoZWFkaW5nLW9uZScsXG4gIGgyOiAnaGVhZGluZy10d28nLFxuICBoMzogJ2hlYWRpbmctdGhyZWUnLFxuICBoNDogJ2hlYWRpbmctZm91cicsXG4gIGg1OiAnaGVhZGluZy1maXZlJyxcbiAgaDY6ICdoZWFkaW5nLXNpeCdcbn07XG5cbi8qKlxuICogVGFncyB0byBtYXJrcy5cbiAqXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG5cbmNvbnN0IE1BUktfVEFHUyA9IHtcbiAgYjogJ2JvbGQnLFxuICBlbTogJ2l0YWxpYycsXG4gIHU6ICd1bmRlcmxpbmUnLFxuICBzOiAnc3RyaWtldGhyb3VnaCcsXG4gIGNvZGU6ICdjb2RlJyxcbiAgc3Ryb25nOiAnYm9sZCdcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVN0eWxlU3RyaW5nID0gcyA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gLyhbXFx3LV0qKVxccyo6XFxzKihbXjtdKikvZztcbiAgbGV0IG1hdGNoO1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocykpKSB7XG4gICAgcmVzdWx0W21hdGNoWzFdXSA9IG1hdGNoWzJdLnRyaW0oKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEJhc2U2NCA9IGZpbGUgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWFjdEF0dHJpYnV0ZXMgPSBvID0+IHRvU3R5bGVPYmplY3QobywgeyBjYW1lbGl6ZTogdHJ1ZSwgYWRkVW5pdHM6IGZhbHNlIH0pO1xuXG5jb25zdCBhdHRyaWJ1dGVzVG9NYXAgPSBlbCA9PiAoYWNjLCBhdHRyaWJ1dGUpID0+IHtcbiAgY29uc3QgdmFsdWUgPSBlbC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKGF0dHJpYnV0ZSA9PT0gJ3N0eWxlJykge1xuICAgICAgY29uc3Qgc3R5bGVTdHJpbmcgPSBlbC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIGNvbnN0IHJlYWN0U3R5bGVPYmplY3QgPSByZWFjdEF0dHJpYnV0ZXMocGFyc2VTdHlsZVN0cmluZyhzdHlsZVN0cmluZykpO1xuICAgICAgYWNjWydzdHlsZSddID0gcmVhY3RTdHlsZU9iamVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW2F0dHJpYnV0ZV0gPSBlbC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbmNvbnN0IGF0dHJpYnV0ZXMgPSBbJ2JvcmRlcicsICdjZWxscGFkZGluZycsICdjZWxsc3BhY2luZycsICdjbGFzcycsICdzdHlsZSddO1xuXG4vKipcbiAqIFNlcmlhbGl6ZXIgcnVsZXMuXG4gKlxuICogQHR5cGUge0FycmF5fVxuICovXG5cbmNvbnN0IGJsb2NrcyA9IHtcbiAgZGVzZXJpYWxpemUoZWwsIG5leHQpIHtcbiAgICBsb2coJ1tibG9ja3M6ZGVzZXJpYWxpemVdIGJsb2NrOiAnLCBlbCk7XG4gICAgY29uc3QgYmxvY2sgPSBCTE9DS19UQUdTW2VsLnRhZ05hbWUudG9Mb3dlckNhc2UoKV07XG4gICAgaWYgKCFibG9jaykgcmV0dXJuO1xuICAgIGxvZygnW2Jsb2NrczpkZXNlcmlhbGl6ZV0gYmxvY2s6ICcsIGJsb2NrKTtcblxuICAgIGlmIChlbC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgY24gPSBlbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgaWYgKGNuICYmIGNuLnRhZ05hbWUgJiYgY24udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBibG9jaykge1xuICAgICAgICBsb2coJ1t3ZSBoYXZlIGEgY2hpbGQgbm9kZSBvZiB0aGUgc2FtZV0uLi4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBqc3goXG4gICAgICAnZWxlbWVudCcsXG4gICAgICB7XG4gICAgICAgIHR5cGU6IGJsb2NrLFxuICAgICAgICAvKipcbiAgICAgICAgICogSGVyZSBmb3IgcmVuZGVyaW5nIHN0eWxlcyBmb3IgYWxsIGJsb2NrIGVsZW1lbnRzXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhOiB7IGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMucmVkdWNlKGF0dHJpYnV0ZXNUb01hcChlbCksIHt9KSB9XG4gICAgICB9LFxuICAgICAgbmV4dChlbC5jaGlsZE5vZGVzKVxuICAgICk7XG4gIH0sXG4gIHNlcmlhbGl6ZTogKG9iamVjdCwgY2hpbGRyZW4pID0+IHtcbiAgICBpZiAob2JqZWN0Lm9iamVjdCAhPT0gJ2Jsb2NrJykgcmV0dXJuO1xuXG4gICAgY29uc3QganNvbkRhdGEgPSBvYmplY3QuZGF0YS50b0pTT04oKTtcblxuICAgIGxvZygnW2Jsb2NrczpzZXJpYWxpemVdIG9iamVjdDogJywgb2JqZWN0LCBjaGlsZHJlbik7XG4gICAgbGV0IGtleTtcblxuICAgIGZvciAoa2V5IGluIEJMT0NLX1RBR1MpIHtcbiAgICAgIGlmIChCTE9DS19UQUdTW2tleV0gPT09IG9iamVjdC50eXBlKSB7XG4gICAgICAgIGNvbnN0IFRhZyA9IGtleTtcblxuICAgICAgICByZXR1cm4gPFRhZyB7Li4uanNvbkRhdGEuYXR0cmlidXRlc30+e2NoaWxkcmVufTwvVGFnPjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IG1hcmtzID0ge1xuICBkZXNlcmlhbGl6ZShlbCwgbmV4dCkge1xuICAgIGNvbnN0IG1hcmsgPSBNQVJLX1RBR1NbZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIW1hcmspIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9nKCdbZGVzZXJpYWxpemVdIG1hcms6ICcsIG1hcmspO1xuXG4gICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHsgdHlwZTogbWFyayB9LCBuZXh0KGVsLmNoaWxkTm9kZXMpKTtcbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCwgY2hpbGRyZW4pIHtcbiAgICAvKmlmIChNYXJrLmlzTWFyayhvYmplY3QpKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gTUFSS19UQUdTKSB7XG4gICAgICAgIGlmIChNQVJLX1RBR1Nba2V5XSA9PT0gb2JqZWN0LnR5cGUpIHtcbiAgICAgICAgICBjb25zdCBUYWcgPSBrZXk7XG4gICAgICAgICAgcmV0dXJuIDxUYWc+e2NoaWxkcmVufTwvVGFnPjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0qL1xuICB9XG59O1xuXG5jb25zdCBmaW5kUHJldmlvdXNUZXh0ID0gZWwgPT4ge1xuICBpZiAoZWwubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICBpZiAoZWwucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgcmV0dXJuIGZpbmRQcmV2aW91c1RleHQoZWwucHJldmlvdXNTaWJsaW5nKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IFRFWFRfUlVMRSA9IHtcbiAgZGVzZXJpYWxpemUoZWwpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIG5lZWRzIHRvIGJlIGNhbGxlZCBvbiB0aGUgZG9tIGVsZW1lbnQgaW4gb3JkZXIgdG8gbWVyZ2UgdGhlIGFkamFjZW50IHRleHQgbm9kZXMgdG9nZXRoZXJcbiAgICAgKiAqL1xuICAgIGVsLm5vcm1hbGl6ZSgpO1xuXG4gICAgaWYgKGVsLnRhZ05hbWUgJiYgZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnInKSB7XG4gICAgICByZXR1cm4ganN4KCd0ZXh0Jywge30pO1xuICAgIH1cblxuICAgIGlmIChlbC5ub2RlTmFtZSA9PT0gJyN0ZXh0Jykge1xuICAgICAgaWYgKGVsLm5vZGVWYWx1ZSAmJiBlbC5ub2RlVmFsdWUubWF0Y2goLzwhLS0uKj8tLT4vKSkgcmV0dXJuO1xuXG4gICAgICBsb2coJ1t0ZXh0OmRlc2VyaWFsaXplXSByZXR1cm4gdGV4dCBvYmplY3QuLicpO1xuICAgICAgcmV0dXJuIGpzeCgndGV4dCcsIHt9LCBlbC5ub2RlVmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBzZXJpYWxpemUob2JqLCBjaGlsZHJlbikge1xuICAgIGlmIChvYmoub2JqZWN0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNoaWxkcmVuLnNwbGl0KCdcXG4nKS5yZWR1Y2UoKGFycmF5LCB0ZXh0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpICE9PSAwKSBhcnJheS5wdXNoKDxiciAvPik7XG4gICAgICAgIGFycmF5LnB1c2godGV4dCk7XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IFJVTEVTID0gW1xuICBsaXN0U2VyaWFsaXphdGlvbixcbiAgbWF0aFNlcmlhbGl6YXRpb24sXG4gIG1lZGlhU2VyaWFsaXphdGlvbixcbiAgaW1nU2VyaWFsaXphdGlvbixcbiAgdGFibGVTZXJpYWxpemF0aW9uLFxuICByZXNwb25zZUFyZWFTZXJpYWxpemF0aW9uLFxuICBURVhUX1JVTEUsXG4gIGJsb2NrcyxcbiAgbWFya3Ncbl07XG5cbmZ1bmN0aW9uIGFsbFdoaXRlc3BhY2Uobm9kZSkge1xuICAvLyBVc2UgRUNNQS0yNjIgRWRpdGlvbiAzIFN0cmluZyBhbmQgUmVnRXhwIGZlYXR1cmVzXG4gIHJldHVybiAhL1teXFx0XFxuXFxyIF0vLnRlc3Qobm9kZS50ZXh0Q29udGVudCk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQYXJzZUh0bWwoaHRtbCkge1xuICBpZiAodHlwZW9mIERPTVBhcnNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVGhlIG5hdGl2ZSBgRE9NUGFyc2VyYCBnbG9iYWwgd2hpY2ggdGhlIGBIdG1sYCBzZXJpYWxpemVyIHVzZXMgYnkgZGVmYXVsdCBpcyBub3QgcHJlc2VudCBpbiB0aGlzIGVudmlyb25tZW50LiBZb3UgbXVzdCBzdXBwbHkgdGhlIGBvcHRpb25zLnBhcnNlSHRtbGAgZnVuY3Rpb24gaW5zdGVhZC4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuXG4gIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VkO1xuICBjb25zdCB0ZXh0Tm9kZXMgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGJvZHksIE5vZGVGaWx0ZXIuU0hPV19URVhULCBudWxsLCBudWxsKTtcbiAgbGV0IG4gPSB0ZXh0Tm9kZXMubmV4dE5vZGUoKTtcblxuICB3aGlsZSAobikge1xuICAgIGlmIChhbGxXaGl0ZXNwYWNlKG4pIHx8IG4ubm9kZVZhbHVlID09PSAnXFx1MjAwQicpIHtcbiAgICAgIG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKTtcbiAgICB9XG4gICAgbiA9IHRleHROb2Rlcy5uZXh0Tm9kZSgpO1xuICB9XG5cbiAgcmV0dXJuIGJvZHk7XG59XG5cbi8qKiBJZiB0aGlzIGxpYiBpcyB1c2VkIG9uIHRoZSBzZXJ2ZXIgc2lkZSwgd2UgbmVlZCB0byBieXBhc3MgdXNpbmcgdGhlIERPTVBhcnNlciAtIGp1c3QgcHV0IGluIGEgc3R1Yi4gKi9cbmNvbnN0IHBhcnNlSHRtbCA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gICAgPyAoKSA9PiAoe1xuICAgICAgICBjaGlsZE5vZGVzOiBbXVxuICAgICAgfSlcbiAgICA6IGRlZmF1bHRQYXJzZUh0bWw7XG5cbmNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgVGVzdFNlcmlhbGl6ZXIoe1xuICBkZWZhdWx0QmxvY2s6ICdkaXYnLFxuICBydWxlczogUlVMRVMsXG4gIHBhcnNlSHRtbFxufSk7XG5cbmNvbnN0IF9leHRlbmRzID1cbiAgT2JqZWN0LmFzc2lnbiB8fFxuICBmdW5jdGlvbih0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG5leHBvcnQgY29uc3QgaHRtbFRvVmFsdWUgPSBodG1sID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gc2VyaWFsaXplci5kZXNlcmlhbGl6ZShodG1sKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwiQ291bGRuJ3QgcGFyc2UgaHRtbDogXCIsIGUpO1xuICAgIHJldHVybiB7fTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHZhbHVlVG9IdG1sID0gdmFsdWUgPT4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpO1xuXG4vKipcbiAqXG4gKiA8ZGl2PjxkaXY+YTwvZGl2PjwvZGl2PiAtPiA8ZGl2PmE8L2Rpdj5cbiAqXG4gKiA8ZGl2PjxkaXY+YTwvZGl2PjxkaXY+YjwvZGl2PjwvZGl2PiAtPiA8ZGl2PmE8L2Rpdj48ZGl2PmI8L2Rpdj5cbiAqIDxkaXY+PGRpdj5hPC9kaXY+NDQ0NDxkaXY+YjwvZGl2PjwvZGl2PiAtPiA8ZGl2PmE8L2Rpdj40NDQ0PGRpdj5iPC9kaXY+XG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sc0NBQU4sQ0FBWjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBTUMsVUFBVSxHQUFHO0VBQ3hCQyxHQUFHLEVBQUUsS0FEbUI7RUFFeEJDLElBQUksRUFBRSxNQUZrQjtFQUd4QkMsQ0FBQyxFQUFFLFdBSHFCO0VBSXhCQyxVQUFVLEVBQUUsT0FKWTtFQUt4QkMsR0FBRyxFQUFFLE1BTG1CO0VBTXhCQyxFQUFFLEVBQUUsYUFOb0I7RUFPeEJDLEVBQUUsRUFBRSxhQVBvQjtFQVF4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
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseDegrees = void 0;
7
+
8
+ var parseDegrees = function parseDegrees(html) {
9
+ return html // removes \( use case: 50°
10
+ .replace(/\\[(]/g, '') // removes \) use case: 50°+m<1
11
+ .replace(/\\[)]/g, '') // removes \degree use case: 50°
12
+ .replace(/\\degree/g, '&deg;');
13
+ };
14
+
15
+ exports.parseDegrees = parseDegrees;
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZURlZ3JlZXMiLCJodG1sIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZS1odG1sLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwYXJzZURlZ3JlZXMgPSBodG1sID0+XG4gIGh0bWxcbiAgICAvLyByZW1vdmVzIFxcKCAgIHVzZSBjYXNlOiA1MMKwXG4gICAgLnJlcGxhY2UoL1xcXFxbKF0vZywgJycpXG4gICAgLy8gcmVtb3ZlcyBcXCkgICB1c2UgY2FzZTogNTDCsCttPDFcbiAgICAucmVwbGFjZSgvXFxcXFspXS9nLCAnJylcbiAgICAvLyByZW1vdmVzIFxcZGVncmVlICB1c2UgY2FzZTogNTDCsFxuICAgIC5yZXBsYWNlKC9cXFxcZGVncmVlL2csICcmZGVnOycpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU8sSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsSUFBSTtFQUFBLE9BQzlCQSxJQUFJLENBQ0Y7RUFERSxDQUVEQyxPQUZILENBRVcsUUFGWCxFQUVxQixFQUZyQixFQUdFO0VBSEYsQ0FJR0EsT0FKSCxDQUlXLFFBSlgsRUFJcUIsRUFKckIsRUFLRTtFQUxGLENBTUdBLE9BTkgsQ0FNVyxXQU5YLEVBTXdCLE9BTnhCLENBRDhCO0FBQUEsQ0FBekIifQ==
@@ -11,12 +11,14 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
14
- var _slateHtmlSerializer = _interopRequireDefault(require("slate-html-serializer"));
14
+ var _slateHyperscript = require("slate-hyperscript");
15
15
 
16
16
  var _toStyle = require("to-style");
17
17
 
18
18
  var _debug = _interopRequireDefault(require("debug"));
19
19
 
20
+ var _testSerializer = _interopRequireDefault(require("./test-serializer"));
21
+
20
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
23
 
22
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -134,13 +136,15 @@ exports.MARK_TAGS = MARK_TAGS;
134
136
  var marks = {
135
137
  deserialize: function deserialize(el, next) {
136
138
  var mark = MARK_TAGS[el.tagName.toLowerCase()];
137
- if (!mark) return;
139
+
140
+ if (!mark) {
141
+ return;
142
+ }
143
+
138
144
  log('[deserialize] mark: ', mark);
139
- return {
140
- object: 'mark',
141
- type: mark,
142
- nodes: next(el.childNodes)
143
- };
145
+ return (0, _slateHyperscript.jsx)('text', {
146
+ type: mark
147
+ }, next(el.childNodes));
144
148
  }
145
149
  };
146
150
  var rules = [marks, {
@@ -153,40 +157,39 @@ var rules = [marks, {
153
157
  }
154
158
 
155
159
  if (el.nodeType === TEXT_NODE) {
156
- return {
157
- object: 'text',
158
- leaves: [{
159
- text: el.textContent
160
- }]
161
- };
160
+ return (0, _slateHyperscript.jsx)('text', el.textContent);
162
161
  }
163
162
 
164
163
  var type = el.tagName.toLowerCase();
165
164
  var normalAttrs = attr(el) || {};
166
-
167
- if (type == 'audio' && normalAttrs.controls == '') {
168
- normalAttrs.controls = true;
169
- }
170
-
171
165
  var allAttrs = attributes.reduce(attributesToMap(el), _objectSpread({}, normalAttrs));
172
- var object = getObject(type);
173
166
 
174
167
  if (el.tagName.toLowerCase() === 'math') {
175
- return {
176
- isMath: true,
177
- nodes: [el]
178
- };
168
+ return (0, _slateHyperscript.jsx)('element', {
169
+ type: 'mathml',
170
+ data: {
171
+ html: el.innerHTML
172
+ }
173
+ }); // return {
174
+ // isMath: true,
175
+ // nodes: [el]
176
+ // };
179
177
  }
180
178
 
181
- return {
182
- object: object,
179
+ if (el.tagName.toLowerCase() === 'br') {
180
+ return (0, _slateHyperscript.jsx)('element', {
181
+ type: type,
182
+ data: {}
183
+ });
184
+ }
185
+
186
+ return (0, _slateHyperscript.jsx)('element', {
183
187
  type: type,
184
188
  data: {
185
189
  dataset: _objectSpread({}, el.dataset),
186
190
  attributes: _objectSpread({}, allAttrs)
187
- },
188
- nodes: next(el.childNodes)
189
- };
191
+ }
192
+ }, next(el.childNodes));
190
193
  }
191
194
  }];
192
195
  /**
@@ -194,7 +197,7 @@ var rules = [marks, {
194
197
  * Having a default div block will just put every div on it's own line, which is not ideal.
195
198
  */
196
199
 
197
- var html = new _slateHtmlSerializer["default"]({
200
+ var html = new _testSerializer["default"]({
198
201
  rules: rules,
199
202
  defaultBlock: 'span'
200
203
  });
@@ -206,4 +209,4 @@ var deserialize = function deserialize(s) {
206
209
  };
207
210
 
208
211
  exports.deserialize = deserialize;
209
- //# sourceMappingURL=serialization.js.map
212
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIklOTElORSIsIk1BUksiLCJURVhUX05PREUiLCJDT01NRU5UX05PREUiLCJhdHRyIiwiZWwiLCJhdHRyaWJ1dGVzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwib3V0IiwiaSIsImEiLCJuYW1lIiwidmFsdWUiLCJnZXRPYmplY3QiLCJ0eXBlIiwiaW5jbHVkZXMiLCJwYXJzZVN0eWxlU3RyaW5nIiwicyIsInJlZ2V4IiwibWF0Y2giLCJyZXN1bHQiLCJleGVjIiwidHJpbSIsInJlYWN0QXR0cmlidXRlcyIsIm8iLCJ0b1N0eWxlT2JqZWN0IiwiY2FtZWxpemUiLCJhZGRVbml0cyIsImhhbmRsZVN0eWxlcyIsImF0dHJpYnV0ZSIsInN0eWxlU3RyaW5nIiwiZ2V0QXR0cmlidXRlIiwiaGFuZGxlQ2xhc3MiLCJhY2MiLCJjbGFzc05hbWVzIiwiYXR0cmlidXRlc1RvTWFwIiwic3R5bGUiLCJjbGFzc05hbWUiLCJNQVJLX1RBR1MiLCJiIiwiZW0iLCJ1IiwiY29kZSIsInN0cm9uZyIsIm1hcmtzIiwiZGVzZXJpYWxpemUiLCJuZXh0IiwibWFyayIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsImpzeCIsImNoaWxkTm9kZXMiLCJydWxlcyIsIm5vZGVUeXBlIiwidGV4dENvbnRlbnQiLCJub3JtYWxBdHRycyIsImFsbEF0dHJzIiwicmVkdWNlIiwiZGF0YSIsImh0bWwiLCJpbm5lckhUTUwiLCJkYXRhc2V0IiwiSHRtbCIsImRlZmF1bHRCbG9jayIsInRvSlNPTiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJpYWxpemF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdzbGF0ZS1oeXBlcnNjcmlwdCc7XG5pbXBvcnQgeyBvYmplY3QgYXMgdG9TdHlsZU9iamVjdCB9IGZyb20gJ3RvLXN0eWxlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCBIdG1sIGZyb20gJy4vdGVzdC1zZXJpYWxpemVyJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOm1hc2stbWFya3VwOnNlcmlhbGl6YXRpb24nKTtcblxuY29uc3QgSU5MSU5FID0gWydzcGFuJ107XG5jb25zdCBNQVJLID0gWydlbScsICdzdHJvbmcnLCAndSddO1xuY29uc3QgVEVYVF9OT0RFID0gMztcbmNvbnN0IENPTU1FTlRfTk9ERSA9IDg7XG5cbmNvbnN0IGF0dHIgPSBlbCA9PiB7XG4gIGlmICghZWwuYXR0cmlidXRlcyB8fCBlbC5hdHRyaWJ1dGVzLmxlbmd0aCA8PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG91dCA9IHt9O1xuICBsZXQgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgZWwuYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGEgPSBlbC5hdHRyaWJ1dGVzW2ldO1xuXG4gICAgb3V0W2EubmFtZV0gPSBhLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbmNvbnN0IGdldE9iamVjdCA9IHR5cGUgPT4ge1xuICBpZiAoSU5MSU5FLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgcmV0dXJuICdpbmxpbmUnO1xuICB9IGVsc2UgaWYgKE1BUksuaW5jbHVkZXModHlwZSkpIHtcbiAgICByZXR1cm4gJ21hcmsnO1xuICB9XG4gIHJldHVybiAnYmxvY2snO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlU3R5bGVTdHJpbmcgPSBzID0+IHtcbiAgY29uc3QgcmVnZXggPSAvKFtcXHctXSopXFxzKjpcXHMqKFteO10qKS9nO1xuICBsZXQgbWF0Y2g7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhzKSkpIHtcbiAgICByZXN1bHRbbWF0Y2hbMV1dID0gbWF0Y2hbMl0udHJpbSgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVhY3RBdHRyaWJ1dGVzID0gbyA9PiB0b1N0eWxlT2JqZWN0KG8sIHsgY2FtZWxpemU6IHRydWUsIGFkZFVuaXRzOiBmYWxzZSB9KTtcblxuY29uc3QgaGFuZGxlU3R5bGVzID0gKGVsLCBhdHRyaWJ1dGUpID0+IHtcbiAgY29uc3Qgc3R5bGVTdHJpbmcgPSBlbC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcblxuICByZXR1cm4gcmVhY3RBdHRyaWJ1dGVzKHBhcnNlU3R5bGVTdHJpbmcoc3R5bGVTdHJpbmcpKTtcbn07XG5cbmNvbnN0IGhhbmRsZUNsYXNzID0gKGVsLCBhY2MsIGF0dHJpYnV0ZSkgPT4ge1xuICBjb25zdCBjbGFzc05hbWVzID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG5cbiAgZGVsZXRlIGFjYy5jbGFzcztcblxuICByZXR1cm4gY2xhc3NOYW1lcztcbn07XG5cbmNvbnN0IGF0dHJpYnV0ZXNUb01hcCA9IGVsID0+IChhY2MsIGF0dHJpYnV0ZSkgPT4ge1xuICBpZiAoIWVsLmdldEF0dHJpYnV0ZSkge1xuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuXG4gIGlmICh2YWx1ZSkge1xuICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XG4gICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgIGFjYy5zdHlsZSA9IGhhbmRsZVN0eWxlcyhlbCwgYXR0cmlidXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgIGFjYy5jbGFzc05hbWUgPSBoYW5kbGVDbGFzcyhlbCwgYWNjLCBhdHRyaWJ1dGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFjY1thdHRyaWJ1dGVdID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY2M7XG59O1xuXG5jb25zdCBhdHRyaWJ1dGVzID0gWydib3JkZXInLCAnY2xhc3MnLCAnc3R5bGUnXTtcblxuLyoqXG4gKiBUYWdzIHRvIG1hcmtzLlxuICpcbiAqIEB0eXBlIHtPYmplY3R9XG4gKi9cblxuZXhwb3J0IGNvbnN0IE1BUktfVEFHUyA9IHtcbiAgYjogJ2JvbGQnLFxuICBlbTogJ2l0YWxpYycsXG4gIHU6ICd1bmRlcmxpbmUnLFxuICBzOiAnc3RyaWtldGhyb3VnaCcsXG4gIGNvZGU6ICdjb2RlJyxcbiAgc3Ryb25nOiAnc3Ryb25nJ1xufTtcblxuY29uc3QgbWFya3MgPSB7XG4gIGRlc2VyaWFsaXplKGVsLCBuZXh0KSB7XG4gICAgY29uc3QgbWFyayA9IE1BUktfVEFHU1tlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgaWYgKCFtYXJrKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nKCdbZGVzZXJpYWxpemVdIG1hcms6ICcsIG1hcmspO1xuICAgIHJldHVybiBqc3goJ3RleHQnLCB7IHR5cGU6IG1hcmsgfSwgbmV4dChlbC5jaGlsZE5vZGVzKSk7XG4gIH1cbn07XG5cbmNvbnN0IHJ1bGVzID0gW1xuICBtYXJrcyxcbiAge1xuICAgIC8qKlxuICAgICAqIGRlc2VyaWFsaXplIGV2ZXJ5dGhpbmcsIHdlJ3JlIG5vdCBmdXNzeSBhYm91dCB0aGUgZG9tIHN0cnVjdHVyZSBmb3Igbm93LlxuICAgICAqL1xuICAgIGRlc2VyaWFsaXplOiAoZWwsIG5leHQpID0+IHtcbiAgICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gQ09NTUVOVF9OT0RFKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gVEVYVF9OT0RFKSB7XG4gICAgICAgIHJldHVybiBqc3goJ3RleHQnLCBlbC50ZXh0Q29udGVudCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGNvbnN0IG5vcm1hbEF0dHJzID0gYXR0cihlbCkgfHwge307XG4gICAgICBjb25zdCBhbGxBdHRycyA9IGF0dHJpYnV0ZXMucmVkdWNlKGF0dHJpYnV0ZXNUb01hcChlbCksIHsgLi4ubm9ybWFsQXR0cnMgfSk7XG5cbiAgICAgIGlmIChlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdtYXRoJykge1xuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50Jywge1xuICAgICAgICAgIHR5cGU6ICdtYXRobWwnLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGh0bWw6IGVsLmlubmVySFRNTFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gcmV0dXJuIHtcbiAgICAgICAgLy8gICBpc01hdGg6IHRydWUsXG4gICAgICAgIC8vICAgbm9kZXM6IFtlbF1cbiAgICAgICAgLy8gfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JyJykge1xuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlLCBkYXRhOiB7fSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGpzeChcbiAgICAgICAgJ2VsZW1lbnQnLFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBkYXRhOiB7IGRhdGFzZXQ6IHsgLi4uZWwuZGF0YXNldCB9LCBhdHRyaWJ1dGVzOiB7IC4uLmFsbEF0dHJzIH0gfVxuICAgICAgICB9LFxuICAgICAgICBuZXh0KGVsLmNoaWxkTm9kZXMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgc2VyaWFsaXplciBpbnN0YW5jZSB3aXRoIG91ciBgcnVsZXNgIGZyb20gYWJvdmUuXG4gKiBIYXZpbmcgYSBkZWZhdWx0IGRpdiBibG9jayB3aWxsIGp1c3QgcHV0IGV2ZXJ5IGRpdiBvbiBpdCdzIG93biBsaW5lLCB3aGljaCBpcyBub3QgaWRlYWwuXG4gKi9cbmNvbnN0IGh0bWwgPSBuZXcgSHRtbCh7IHJ1bGVzLCBkZWZhdWx0QmxvY2s6ICdzcGFuJyB9KTtcblxuZXhwb3J0IGNvbnN0IGRlc2VyaWFsaXplID0gcyA9PiBodG1sLmRlc2VyaWFsaXplKHMsIHsgdG9KU09OOiB0cnVlIH0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsSUFBQUMsaUJBQUEsRUFBTSxvQ0FBTixDQUFaO0FBRUEsSUFBTUMsTUFBTSxHQUFHLENBQUMsTUFBRCxDQUFmO0FBQ0EsSUFBTUMsSUFBSSxHQUFHLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsR0FBakIsQ0FBYjtBQUNBLElBQU1DLFNBQVMsR0FBRyxDQUFsQjtBQUNBLElBQU1DLFlBQVksR0FBRyxDQUFyQjs7QUFFQSxJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBTyxDQUFBQyxFQUFFLEVBQUk7RUFDakIsSUFBSSxDQUFDQSxFQUFFLENBQUNDLFVBQUosSUFBa0JELEVBQUUsQ0FBQ0MsVUFBSCxDQUFjQyxNQUFkLElBQXdCLENBQTlDLEVBQWlEO0lBQy9DLE9BQU9DLFNBQVA7RUFDRDs7RUFFRCxJQUFNQyxHQUFHLEdBQUcsRUFBWjtFQUNBLElBQUlDLENBQUo7O0VBRUEsS0FBS0EsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHTCxFQUFFLENBQUNDLFVBQUgsQ0FBY0MsTUFBOUIsRUFBc0NHLENBQUMsRUFBdkMsRUFBMkM7SUFDekMsSUFBTUMsQ0FBQyxHQUFHTixFQUFFLENBQUNDLFVBQUgsQ0FBY0ksQ0FBZCxDQUFWO0lBRUFELEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDQyxJQUFILENBQUgsR0FBY0QsQ0FBQyxDQUFDRSxLQUFoQjtFQUNEOztFQUVELE9BQU9KLEdBQVA7QUFDRCxDQWZEOztBQWlCQSxJQUFNSyxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFBQyxJQUFJLEVBQUk7RUFDeEIsSUFBSWYsTUFBTSxDQUFDZ0Is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
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/serialization.js"],"names":["log","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","length","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","controls","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON"],"mappings":"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","sourcesContent":["import React from 'react';\nimport Html from 'slate-html-serializer';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = (el) => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = (type) => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = (el) => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nexport const MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'strong',\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};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return {\n object: 'text',\n leaves: [{ text: el.textContent }],\n };\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n\n if (type == 'audio' && normalAttrs.controls == '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n const object = getObject(type);\n\n if (el.tagName.toLowerCase() === 'math') {\n return {\n isMath: true,\n nodes: [el],\n };\n }\n\n return {\n object,\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n nodes: next(el.childNodes),\n };\n },\n },\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = (s) => html.deserialize(s, { toJSON: true });\n"],"file":"serialization.js"}
1
+ {"version":3,"file":"serialization.js","names":["log","debug","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","length","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON"],"sources":["../src/serialization.js"],"sourcesContent":["import React from 'react';\nimport Html from './html-serializer';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = el => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = type => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = el => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nexport const MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'strong'\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};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return {\n object: 'text',\n leaves: [{ text: el.textContent }]\n };\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n const object = getObject(type);\n\n if (el.tagName.toLowerCase() === 'math') {\n return {\n isMath: true,\n nodes: [el]\n };\n }\n\n return {\n object,\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n nodes: next(el.childNodes)\n };\n }\n }\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = s => html.deserialize(s, { toJSON: true });\n"],"mappings":"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"}