@pie-lib/editable-html 10.0.0-beta.7 → 10.0.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.
Files changed (118) hide show
  1. package/CHANGELOG.json +1 -1
  2. package/CHANGELOG.md +81 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/editor.js +410 -543
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +200 -101
  7. package/lib/index.js.map +1 -1
  8. package/lib/parse-html.js +5 -6
  9. package/lib/parse-html.js.map +1 -1
  10. package/lib/plugins/characters/custom-popper.js +12 -2
  11. package/lib/plugins/characters/custom-popper.js.map +1 -1
  12. package/lib/plugins/characters/index.js +71 -19
  13. package/lib/plugins/characters/index.js.map +1 -1
  14. package/lib/plugins/characters/utils.js.map +1 -1
  15. package/lib/plugins/html/icons/index.js +38 -0
  16. package/lib/plugins/html/icons/index.js.map +1 -0
  17. package/lib/plugins/html/index.js +75 -0
  18. package/lib/plugins/html/index.js.map +1 -0
  19. package/lib/plugins/image/alt-dialog.js +26 -0
  20. package/lib/plugins/image/alt-dialog.js.map +1 -1
  21. package/lib/plugins/image/component.js +124 -90
  22. package/lib/plugins/image/component.js.map +1 -1
  23. package/lib/plugins/image/image-toolbar.js +45 -7
  24. package/lib/plugins/image/image-toolbar.js.map +1 -1
  25. package/lib/plugins/image/index.js +91 -113
  26. package/lib/plugins/image/index.js.map +1 -1
  27. package/lib/plugins/image/insert-image-handler.js +54 -72
  28. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  29. package/lib/plugins/index.js +71 -31
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/plugins/list/index.js +129 -58
  32. package/lib/plugins/list/index.js.map +1 -1
  33. package/lib/plugins/math/index.js +152 -118
  34. package/lib/plugins/math/index.js.map +1 -1
  35. package/lib/plugins/media/index.js +185 -168
  36. package/lib/plugins/media/index.js.map +1 -1
  37. package/lib/plugins/media/media-dialog.js +197 -110
  38. package/lib/plugins/media/media-dialog.js.map +1 -1
  39. package/lib/plugins/media/media-toolbar.js +24 -4
  40. package/lib/plugins/media/media-toolbar.js.map +1 -1
  41. package/lib/plugins/media/media-wrapper.js +65 -23
  42. package/lib/plugins/media/media-wrapper.js.map +1 -1
  43. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  45. package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  47. package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  49. package/lib/plugins/respArea/icons/index.js +18 -1
  50. package/lib/plugins/respArea/icons/index.js.map +1 -1
  51. package/lib/plugins/respArea/index.js +133 -122
  52. package/lib/plugins/respArea/index.js.map +1 -1
  53. package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
  54. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  55. package/lib/plugins/respArea/utils.js +33 -15
  56. package/lib/plugins/respArea/utils.js.map +1 -1
  57. package/lib/plugins/table/icons/index.js +7 -0
  58. package/lib/plugins/table/icons/index.js.map +1 -1
  59. package/lib/plugins/table/index.js +279 -390
  60. package/lib/plugins/table/index.js.map +1 -1
  61. package/lib/plugins/table/table-toolbar.js +47 -14
  62. package/lib/plugins/table/table-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/default-toolbar.js +63 -51
  64. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  65. package/lib/plugins/toolbar/done-button.js +9 -1
  66. package/lib/plugins/toolbar/done-button.js.map +1 -1
  67. package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
  68. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  69. package/lib/plugins/toolbar/index.js +5 -0
  70. package/lib/plugins/toolbar/index.js.map +1 -1
  71. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  72. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  73. package/lib/plugins/toolbar/toolbar.js +261 -225
  74. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  75. package/lib/plugins/utils.js +16 -19
  76. package/lib/plugins/utils.js.map +1 -1
  77. package/lib/serialization.js +70 -11
  78. package/lib/serialization.js.map +1 -1
  79. package/lib/theme.js.map +1 -1
  80. package/package.json +18 -17
  81. package/src/editor.jsx +139 -434
  82. package/src/index.jsx +96 -62
  83. package/src/plugins/characters/index.jsx +17 -12
  84. package/src/plugins/html/icons/index.jsx +19 -0
  85. package/src/plugins/html/index.jsx +68 -0
  86. package/src/plugins/image/component.jsx +38 -60
  87. package/src/plugins/image/index.jsx +42 -95
  88. package/src/plugins/image/insert-image-handler.js +27 -62
  89. package/src/plugins/index.jsx +39 -21
  90. package/src/plugins/list/index.jsx +90 -62
  91. package/src/plugins/math/index.jsx +70 -93
  92. package/src/plugins/media/index.jsx +117 -146
  93. package/src/plugins/media/media-dialog.js +9 -10
  94. package/src/plugins/media/media-wrapper.jsx +27 -29
  95. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
  96. package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
  97. package/src/plugins/respArea/index.jsx +84 -114
  98. package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
  99. package/src/plugins/respArea/utils.jsx +28 -23
  100. package/src/plugins/table/index.jsx +214 -334
  101. package/src/plugins/table/table-toolbar.jsx +4 -3
  102. package/src/plugins/toolbar/default-toolbar.jsx +30 -48
  103. package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
  104. package/src/plugins/toolbar/toolbar.jsx +224 -254
  105. package/src/plugins/utils.js +0 -16
  106. package/src/serialization.jsx +1 -1
  107. package/lib/components.js +0 -92
  108. package/lib/components.js.map +0 -1
  109. package/lib/new-serialization.js +0 -280
  110. package/lib/new-serialization.js.map +0 -1
  111. package/lib/plugins/hotKeys/index.js +0 -60
  112. package/lib/plugins/hotKeys/index.js.map +0 -1
  113. package/lib/test-serializer.js +0 -138
  114. package/lib/test-serializer.js.map +0 -1
  115. package/src/components.js +0 -135
  116. package/src/new-serialization.jsx +0 -310
  117. package/src/plugins/hotKeys/index.js +0 -54
  118. package/src/test-serializer.js +0 -132
@@ -1,65 +1,62 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports.isBlockActive = exports.hasNode = exports.hasMark = exports.hasBlock = exports.findSingleNode = exports.findParentNode = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _slate = require("slate");
6
+ exports.hasNode = exports.hasMark = exports.hasBlock = exports.findSingleNode = exports.findParentNode = void 0;
7
+
10
8
  var findSingleNode = function findSingleNode(value) {
11
9
  if (!value || !value.isCollapsed || !value.startKey) {
12
10
  return;
13
11
  }
12
+
14
13
  var inline = value.document.getClosestInline(value.startKey);
14
+
15
15
  if (inline) {
16
16
  return inline;
17
17
  }
18
+
18
19
  var block = value.document.getClosestBlock(value.startKey);
20
+
19
21
  if (block) {
20
22
  return block;
21
23
  }
22
24
  };
25
+
23
26
  exports.findSingleNode = findSingleNode;
27
+
24
28
  var findParentNode = function findParentNode(value, node) {
25
29
  if (!value || !node) {
26
30
  return;
27
31
  }
32
+
28
33
  return value.document.getParent(node.key);
29
34
  };
35
+
30
36
  exports.findParentNode = findParentNode;
37
+
31
38
  var hasMark = function hasMark(value, type) {
32
39
  return value && value.marks.some(function (mark) {
33
40
  return mark.type == type;
34
41
  });
35
42
  };
43
+
36
44
  exports.hasMark = hasMark;
45
+
37
46
  var hasBlock = function hasBlock(value, type) {
38
47
  return value && value.blocks.some(function (node) {
39
48
  return node.type == type;
40
49
  });
41
50
  };
51
+
42
52
  exports.hasBlock = hasBlock;
43
- var isBlockActive = function isBlockActive(editor, format) {
44
- var blockType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';
45
- var selection = editor.selection;
46
- if (!selection) return false;
47
- var _Array$from = Array.from(_slate.Editor.nodes(editor, {
48
- at: _slate.Editor.unhangRange(editor, selection),
49
- match: function match(n) {
50
- return !_slate.Editor.isEditor(n) && _slate.Element.isElement(n) && n[blockType] === format;
51
- }
52
- })),
53
- _Array$from2 = (0, _slicedToArray2["default"])(_Array$from, 1),
54
- match = _Array$from2[0];
55
- return !!match;
56
- };
57
- exports.isBlockActive = isBlockActive;
53
+
58
54
  var hasNode = function hasNode(_ref, type) {
59
55
  var document = _ref.document;
60
56
  return document && document.nodes.some(function (node) {
61
57
  return node.type == type;
62
58
  });
63
59
  };
60
+
64
61
  exports.hasNode = hasNode;
65
62
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_slate","require","findSingleNode","value","isCollapsed","startKey","inline","document","getClosestInline","block","getClosestBlock","exports","findParentNode","node","getParent","key","hasMark","type","marks","some","mark","hasBlock","blocks","isBlockActive","editor","format","blockType","arguments","length","undefined","selection","_Array$from","Array","from","Editor","nodes","at","unhangRange","match","n","isEditor","SlateElement","isElement","_Array$from2","_slicedToArray2","hasNode","_ref"],"sources":["../../src/plugins/utils.js"],"sourcesContent":["import { Editor, Element as SlateElement } from \"slate\";\n\nexport 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 isBlockActive = (editor, format, blockType = 'type') => {\n const { selection } = editor;\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n[blockType] === format\n })\n );\n\n return !!match;\n};\n\nexport const hasNode = ({ document }, type) =>\n document && document.nodes.some(node => node.type == type);\n"],"mappings":"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"}
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"}
@@ -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
  */
@@ -132,9 +161,10 @@ var blocks = {
132
161
  },
133
162
  serialize: function serialize(object, children) {
134
163
  if (object.object !== 'block') return;
135
- var jsonData = object.data;
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;
@@ -164,24 +194,27 @@ var marks = {
164
194
  }
165
195
  }
166
196
  }
167
- };
197
+ }; // eslint-disable-next-line no-unused-vars
168
198
 
169
- // eslint-disable-next-line no-unused-vars
170
199
  var findPreviousText = function findPreviousText(el) {
171
200
  if (el.nodeName === '#text') {
172
201
  return el;
173
202
  }
203
+
174
204
  if (el.previousSibling) {
175
205
  return findPreviousText(el.previousSibling);
176
206
  }
207
+
177
208
  return null;
178
209
  };
210
+
179
211
  var TEXT_RULE = {
180
212
  deserialize: function deserialize(el) {
181
213
  /**
182
214
  * This needs to be called on the dom element in order to merge the adjacent text nodes together
183
215
  * */
184
216
  el.normalize();
217
+
185
218
  if (el.tagName && el.tagName.toLowerCase() === 'br') {
186
219
  return {
187
220
  object: 'text',
@@ -191,6 +224,7 @@ var TEXT_RULE = {
191
224
  }]
192
225
  };
193
226
  }
227
+
194
228
  if (el.nodeName === '#text') {
195
229
  if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
196
230
  log('[text:deserialize] return text object..');
@@ -215,28 +249,35 @@ var TEXT_RULE = {
215
249
  };
216
250
  exports.TEXT_RULE = TEXT_RULE;
217
251
  var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
252
+
218
253
  function allWhitespace(node) {
219
254
  // Use ECMA-262 Edition 3 String and RegExp features
220
255
  return !/[^\t\n\r ]/.test(node.textContent);
221
256
  }
257
+
222
258
  function defaultParseHtml(html) {
223
259
  if (typeof DOMParser === 'undefined') {
224
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.');
225
261
  }
262
+
226
263
  var parsed = new DOMParser().parseFromString(html, 'text/html');
227
264
  var body = parsed.body;
228
265
  var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
229
266
  var n = textNodes.nextNode();
267
+
230
268
  while (n) {
231
269
  if (allWhitespace(n) || n.nodeValue === "\u200B") {
232
270
  n.parentNode.removeChild(n);
233
271
  }
272
+
234
273
  n = textNodes.nextNode();
235
274
  }
275
+
236
276
  return body;
237
277
  }
238
-
239
278
  /** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
279
+
280
+
240
281
  var parseHtml = typeof window === 'undefined' ? function () {
241
282
  return {
242
283
  childNodes: []
@@ -247,18 +288,20 @@ var serializer = new _slateHtmlSerializer["default"]({
247
288
  rules: RULES,
248
289
  parseHtml: parseHtml
249
290
  });
291
+
250
292
  var _extends = Object.assign || function (target) {
251
293
  for (var i = 1; i < arguments.length; i++) {
252
294
  var source = arguments[i];
295
+
253
296
  for (var key in source) {
254
297
  if (Object.prototype.hasOwnProperty.call(source, key)) {
255
298
  target[key] = source[key];
256
299
  }
257
300
  }
258
301
  }
302
+
259
303
  return target;
260
304
  };
261
-
262
305
  /**
263
306
  * This is needed in order to override the function that eventually leads
264
307
  * to the max iteration of 12, which in most cases it's not enough. The newer versions
@@ -268,6 +311,8 @@ var _extends = Object.assign || function (target) {
268
311
  * Below is the code that calculates the max iterations.
269
312
  * var max = schema.stack.plugins.length + schema.rules.length + 1;
270
313
  */
314
+
315
+
271
316
  serializer.deserialize = function deserialize(html) {
272
317
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
273
318
  var _options$toJSON = options.toJSON;
@@ -276,19 +321,22 @@ serializer.deserialize = function deserialize(html) {
276
321
  var parseHtml = this.parseHtml;
277
322
  var fragment = parseHtml(html);
278
323
  var children = Array.from(fragment.childNodes);
279
- var nodes = this.deserializeElements(children);
324
+ var nodes = this.deserializeElements(children); // COMPAT: ensure that all top-level inline nodes are wrapped into a block.
280
325
 
281
- // COMPAT: ensure that all top-level inline nodes are wrapped into a block.
282
326
  nodes = nodes.reduce(function (memo, node, i, original) {
283
327
  if (node.object === 'block') {
284
328
  memo.push(node);
285
329
  return memo;
286
330
  }
331
+
287
332
  if (i > 0 && original[i - 1].object !== 'block') {
288
333
  var _block = memo[memo.length - 1];
334
+
289
335
  _block.nodes.push(node);
336
+
290
337
  return memo;
291
338
  }
339
+
292
340
  var block = _extends({
293
341
  object: 'block',
294
342
  data: {},
@@ -296,9 +344,11 @@ serializer.deserialize = function deserialize(html) {
296
344
  }, defaultBlock, {
297
345
  nodes: [node]
298
346
  });
347
+
299
348
  memo.push(block);
300
349
  return memo;
301
350
  }, []);
351
+
302
352
  if (nodes.length === 0) {
303
353
  nodes = [_extends({
304
354
  object: 'block',
@@ -315,6 +365,7 @@ serializer.deserialize = function deserialize(html) {
315
365
  }]
316
366
  })];
317
367
  }
368
+
318
369
  var json = {
319
370
  object: 'value',
320
371
  document: {
@@ -327,6 +378,7 @@ serializer.deserialize = function deserialize(html) {
327
378
  }
328
379
  };
329
380
  var i;
381
+
330
382
  for (i = 0; i < 3000; i++) {
331
383
  json.schema.rules.push({
332
384
  match: {
@@ -339,12 +391,16 @@ serializer.deserialize = function deserialize(html) {
339
391
  }]
340
392
  });
341
393
  }
394
+
342
395
  var ret = toJSON ? json : _slate.Value.fromJSON(json);
396
+
343
397
  if (ret) {
344
398
  return ret;
345
399
  }
400
+
346
401
  return null;
347
402
  };
403
+
348
404
  var htmlToValue = function htmlToValue(html) {
349
405
  try {
350
406
  return serializer.deserialize(html);
@@ -354,11 +410,12 @@ var htmlToValue = function htmlToValue(html) {
354
410
  return {};
355
411
  }
356
412
  };
413
+
357
414
  exports.htmlToValue = htmlToValue;
415
+
358
416
  var valueToHtml = function valueToHtml(value) {
359
417
  return serializer.serialize(value);
360
418
  };
361
-
362
419
  /**
363
420
  *
364
421
  * <div><div>a</div></div> -> <div>a</div>
@@ -366,5 +423,7 @@ var valueToHtml = function valueToHtml(value) {
366
423
  * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
367
424
  * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
368
425
  */
426
+
427
+
369
428
  exports.valueToHtml = valueToHtml;
370
429
  //# sourceMappingURL=serialization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.js","names":["_slateHtmlSerializer","_interopRequireDefault","require","_react","_debug","_toStyle","_image","_math","_media","_list","_table","_respArea","_slate","log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","exports","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","key","Tag","createElement","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","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;\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\n// eslint-disable-next-line no-unused-vars\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 // eslint-disable-next-line no-console\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\n// eslint-disable-next-line no-unused-vars\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 // eslint-disable-next-line no-console\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,"file":"theme.js","names":["primary","exports"],"sources":["../src/theme.js"],"sourcesContent":["export const primary = '#304ffe';\n"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAS;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
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,42 +1,43 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "10.0.0-beta.7",
3
+ "version": "10.0.0",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.jsx",
8
8
  "author": "pie-framework developers",
9
9
  "dependencies": {
10
- "@emotion/css": "^11.10.0",
10
+ "@emotion/react": "^11.11.1",
11
+ "@emotion/styled": "^11.11.0",
11
12
  "@material-ui/core": "^3.8.3",
12
13
  "@material-ui/icons": "^3.0.2",
13
14
  "@material-ui/styles": "^3.0.0-alpha.10",
14
- "@pie-lib/drag": "^2.2.1",
15
+ "@mui/icons-material": "^5.14.3",
16
+ "@mui/material": "^5.14.4",
17
+ "@pie-lib/drag": "^2.2.4",
15
18
  "@pie-lib/math-rendering": "^2.5.17",
16
- "@pie-lib/math-toolbar": "2.0.0-beta.2",
17
- "@pie-lib/render-ui": "^4.14.28",
19
+ "@pie-lib/math-toolbar": "^1.11.30",
20
+ "@pie-lib/render-ui": "^4.15.1",
18
21
  "change-case": "^3.0.2",
19
22
  "classnames": "^2.2.6",
20
23
  "debug": "^4.1.1",
21
- "escape-html": "^1.0.3",
22
24
  "immutable": "^4.0.0-rc.12",
23
- "is-hotkey": "^0.2.0",
24
25
  "keycode": "^2.2.0",
25
26
  "lodash": "^4.17.11",
26
27
  "prop-types": "^15.6.2",
27
28
  "react-attr-converter": "^0.3.1",
28
29
  "react-jss": "^8.6.1",
29
30
  "react-portal": "^4.2.0",
30
- "slate": "^0.94.1",
31
- "slate-dev-environment": "^0.2.5",
32
- "slate-history": "^0.93.0",
33
- "slate-html-serializer": "^0.8.13",
34
- "slate-hyperscript": "^0.77.0",
35
- "slate-plain-serializer": "^0.7.13",
36
- "slate-prop-types": "^0.5.44",
37
- "slate-react": "^0.97.2",
31
+ "slate": "^0.36.2",
32
+ "slate-dev-environment": "^0.2.0",
33
+ "slate-edit-list": "^0.11.3",
34
+ "slate-edit-table": "^0.17.0",
35
+ "slate-html-serializer": "^0.6.12",
36
+ "slate-plain-serializer": "^0.5.26",
37
+ "slate-prop-types": "^0.4.38",
38
+ "slate-react": "^0.14.3",
38
39
  "slate-schema-violations": "^0.1.39",
39
- "slate-soft-break": "^0.9.0",
40
+ "slate-soft-break": "^0.8.1",
40
41
  "to-style": "^1.3.3"
41
42
  },
42
43
  "devDependencies": {
@@ -50,6 +51,6 @@
50
51
  "publishConfig": {
51
52
  "access": "public"
52
53
  },
53
- "gitHead": "f3345ae70660f4ae88450512261c7ea1601003c8",
54
+ "gitHead": "8af1ec262712154587d94ef19b33f4bad15016ea",
54
55
  "scripts": {}
55
56
  }