@pie-lib/editable-html 10.0.0-beta.5 → 10.0.0-beta.6

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 (140) hide show
  1. package/CHANGELOG.md +255 -152
  2. package/lib/components.js +15 -39
  3. package/lib/components.js.map +1 -1
  4. package/lib/editor.js +200 -356
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +25 -49
  7. package/lib/index.js.map +1 -1
  8. package/lib/new-serialization.js +6 -67
  9. package/lib/new-serialization.js.map +1 -1
  10. package/lib/parse-html.js +7 -6
  11. package/lib/parse-html.js.map +1 -1
  12. package/lib/plugins/characters/custom-popper.js +3 -13
  13. package/lib/plugins/characters/custom-popper.js.map +1 -1
  14. package/lib/plugins/characters/index.js +20 -59
  15. package/lib/plugins/characters/index.js.map +1 -1
  16. package/lib/plugins/characters/utils.js +1 -1
  17. package/lib/plugins/characters/utils.js.map +1 -1
  18. package/lib/plugins/hotKeys/index.js +9 -16
  19. package/lib/plugins/hotKeys/index.js.map +1 -1
  20. package/lib/plugins/image/alt-dialog.js +6 -27
  21. package/lib/plugins/image/alt-dialog.js.map +1 -1
  22. package/lib/plugins/image/component.js +42 -99
  23. package/lib/plugins/image/component.js.map +1 -1
  24. package/lib/plugins/image/image-toolbar.js +14 -50
  25. package/lib/plugins/image/image-toolbar.js.map +1 -1
  26. package/lib/plugins/image/index.js +16 -59
  27. package/lib/plugins/image/index.js.map +1 -1
  28. package/lib/plugins/image/insert-image-handler.js +13 -25
  29. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  30. package/lib/plugins/index.js +6 -36
  31. package/lib/plugins/index.js.map +1 -1
  32. package/lib/plugins/list/index.js +11 -46
  33. package/lib/plugins/list/index.js.map +1 -1
  34. package/lib/plugins/math/index.js +89 -93
  35. package/lib/plugins/math/index.js.map +1 -1
  36. package/lib/plugins/media/index.js +32 -109
  37. package/lib/plugins/media/index.js.map +1 -1
  38. package/lib/plugins/media/media-dialog.js +107 -195
  39. package/lib/plugins/media/media-dialog.js.map +1 -1
  40. package/lib/plugins/media/media-toolbar.js +7 -27
  41. package/lib/plugins/media/media-toolbar.js.map +1 -1
  42. package/lib/plugins/media/media-wrapper.js +9 -14
  43. package/lib/plugins/media/media-wrapper.js.map +1 -1
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js +13 -53
  45. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -20
  47. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -10
  49. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  50. package/lib/plugins/respArea/icons/index.js +16 -31
  51. package/lib/plugins/respArea/icons/index.js.map +1 -1
  52. package/lib/plugins/respArea/index.js +7 -54
  53. package/lib/plugins/respArea/index.js.map +1 -1
  54. package/lib/plugins/respArea/inline-dropdown/index.js +3 -10
  55. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  56. package/lib/plugins/respArea/utils.js +6 -21
  57. package/lib/plugins/respArea/utils.js.map +1 -1
  58. package/lib/plugins/table/icons/index.js +1 -8
  59. package/lib/plugins/table/icons/index.js.map +1 -1
  60. package/lib/plugins/table/index.js +54 -187
  61. package/lib/plugins/table/index.js.map +1 -1
  62. package/lib/plugins/table/table-toolbar.js +12 -44
  63. package/lib/plugins/table/table-toolbar.js.map +1 -1
  64. package/lib/plugins/toolbar/default-toolbar.js +17 -46
  65. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  66. package/lib/plugins/toolbar/done-button.js +2 -10
  67. package/lib/plugins/toolbar/done-button.js.map +1 -1
  68. package/lib/plugins/toolbar/editor-and-toolbar.js +134 -144
  69. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  70. package/lib/plugins/toolbar/index.js +2 -6
  71. package/lib/plugins/toolbar/index.js.map +1 -1
  72. package/lib/plugins/toolbar/toolbar-buttons.js +9 -40
  73. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  74. package/lib/plugins/toolbar/toolbar.js +29 -83
  75. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  76. package/lib/plugins/utils.js +8 -30
  77. package/lib/plugins/utils.js.map +1 -1
  78. package/lib/serialization.js +11 -69
  79. package/lib/serialization.js.map +1 -1
  80. package/lib/test-serializer.js +3 -46
  81. package/lib/test-serializer.js.map +1 -1
  82. package/lib/theme.js +1 -1
  83. package/lib/theme.js.map +1 -1
  84. package/package.json +7 -7
  85. package/playground/image/data.js +20 -20
  86. package/playground/image/index.html +20 -22
  87. package/playground/image/index.jsx +10 -12
  88. package/playground/index.html +23 -25
  89. package/playground/mathquill/index.html +20 -23
  90. package/playground/mathquill/index.jsx +22 -18
  91. package/playground/prod-test/index.html +20 -24
  92. package/playground/prod-test/index.jsx +3 -5
  93. package/playground/schema-override/data.js +10 -10
  94. package/playground/schema-override/image-plugin.jsx +4 -3
  95. package/playground/schema-override/index.html +19 -21
  96. package/playground/schema-override/index.jsx +14 -13
  97. package/playground/serialization/data.js +10 -10
  98. package/playground/serialization/image-plugin.jsx +4 -3
  99. package/playground/serialization/index.html +20 -22
  100. package/playground/table-examples.html +8 -5
  101. package/playground/webpack.config.js +10 -10
  102. package/src/editor.jsx +108 -104
  103. package/src/index.jsx +20 -13
  104. package/src/parse-html.js +1 -1
  105. package/src/plugins/characters/custom-popper.js +7 -7
  106. package/src/plugins/characters/index.jsx +34 -23
  107. package/src/plugins/characters/utils.js +81 -81
  108. package/src/plugins/image/alt-dialog.jsx +5 -4
  109. package/src/plugins/image/component.jsx +47 -44
  110. package/src/plugins/image/image-toolbar.jsx +19 -27
  111. package/src/plugins/image/index.jsx +24 -18
  112. package/src/plugins/image/insert-image-handler.js +9 -0
  113. package/src/plugins/index.jsx +7 -9
  114. package/src/plugins/list/index.jsx +7 -7
  115. package/src/plugins/math/index.jsx +71 -28
  116. package/src/plugins/media/index.jsx +7 -7
  117. package/src/plugins/media/media-dialog.js +63 -89
  118. package/src/plugins/media/media-toolbar.jsx +8 -8
  119. package/src/plugins/media/media-wrapper.jsx +8 -5
  120. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +19 -21
  121. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -4
  122. package/src/plugins/respArea/explicit-constructed-response/index.jsx +5 -4
  123. package/src/plugins/respArea/icons/index.jsx +14 -11
  124. package/src/plugins/respArea/index.jsx +9 -15
  125. package/src/plugins/respArea/inline-dropdown/index.jsx +6 -6
  126. package/src/plugins/respArea/utils.jsx +7 -3
  127. package/src/plugins/table/icons/index.jsx +11 -17
  128. package/src/plugins/table/index.jsx +14 -10
  129. package/src/plugins/table/table-toolbar.jsx +6 -6
  130. package/src/plugins/toolbar/default-toolbar.jsx +9 -9
  131. package/src/plugins/toolbar/done-button.jsx +4 -4
  132. package/src/plugins/toolbar/editor-and-toolbar.jsx +36 -33
  133. package/src/plugins/toolbar/index.jsx +3 -2
  134. package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
  135. package/src/plugins/toolbar/toolbar.jsx +6 -1
  136. package/src/plugins/utils.js +2 -2
  137. package/src/serialization.jsx +34 -32
  138. package/lib/old-serialization.js +0 -330
  139. package/lib/slate-editor.js +0 -302
  140. package/package-lock.json +0 -3762
@@ -1,43 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = ImagePlugin;
9
8
  exports.serialization = void 0;
10
-
11
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
-
13
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
-
15
11
  var _react = _interopRequireDefault(require("react"));
16
-
17
12
  var _slateHyperscript = require("slate-hyperscript");
18
-
19
13
  var _debug = _interopRequireDefault(require("debug"));
20
-
21
14
  var _get = _interopRequireDefault(require("lodash/get"));
22
-
23
15
  var _slate = require("slate");
24
-
25
16
  var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
26
-
27
17
  var _component = _interopRequireDefault(require("./component"));
28
-
29
18
  var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
30
-
31
19
  var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
32
-
33
20
  var _slateReact = require("slate-react");
34
-
35
21
  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; }
36
-
37
22
  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; }
38
-
39
23
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
40
-
41
24
  function ImagePlugin(opts) {
42
25
  var toolbar = opts.insertImageRequested && {
43
26
  icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
@@ -54,13 +37,13 @@ function ImagePlugin(opts) {
54
37
  text: ''
55
38
  }]
56
39
  };
57
- editor.insertNode(inline); // get the element just inserted
40
+ editor.insertNode(inline);
58
41
 
42
+ // get the element just inserted
59
43
  var _Editor$node = _slate.Editor.node(editor, editor.selection),
60
- _Editor$node2 = (0, _slicedToArray2["default"])(_Editor$node, 2),
61
- node = _Editor$node2[0],
62
- nodePath = _Editor$node2[1];
63
-
44
+ _Editor$node2 = (0, _slicedToArray2["default"])(_Editor$node, 2),
45
+ node = _Editor$node2[0],
46
+ nodePath = _Editor$node2[1];
64
47
  opts.insertImageRequested(function () {
65
48
  return new _insertImageHandler["default"](node, nodePath, editor);
66
49
  });
@@ -69,10 +52,8 @@ function ImagePlugin(opts) {
69
52
  var alignment = node.data.alignment;
70
53
  var alt = node.data.alt;
71
54
  var imageLoaded = node.data.loaded !== false;
72
-
73
55
  var onChange = function onChange(newValues) {
74
56
  var update = _objectSpread(_objectSpread({}, node.data), newValues);
75
-
76
57
  editor.apply({
77
58
  type: 'set_node',
78
59
  path: nodePath,
@@ -85,16 +66,15 @@ function ImagePlugin(opts) {
85
66
  });
86
67
  onToolbarDone(null, false);
87
68
  };
88
-
89
69
  var Tb = function Tb() {
90
70
  return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
71
+ disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
91
72
  alt: alt,
92
73
  imageLoaded: imageLoaded,
93
74
  alignment: alignment || 'left',
94
75
  onChange: onChange
95
76
  });
96
77
  };
97
-
98
78
  return Tb;
99
79
  },
100
80
  showDone: true
@@ -104,16 +84,13 @@ function ImagePlugin(opts) {
104
84
  toolbar: toolbar,
105
85
  rules: function rules(editor) {
106
86
  var isVoid = editor.isVoid,
107
- isInline = editor.isInline;
108
-
87
+ isInline = editor.isInline;
109
88
  editor.isVoid = function (element) {
110
89
  return element.type === 'image' ? true : isVoid(element);
111
90
  };
112
-
113
91
  editor.isInline = function (element) {
114
92
  return element.type === 'image' ? true : isInline(element);
115
93
  };
116
-
117
94
  return editor;
118
95
  },
119
96
  supports: function supports(node) {
@@ -121,12 +98,10 @@ function ImagePlugin(opts) {
121
98
  },
122
99
  deleteNode: function deleteNode(e, node, nodePath, editor, onChange) {
123
100
  e.preventDefault();
124
-
125
101
  if (opts.onDelete) {
126
102
  var update = _objectSpread(_objectSpread({}, node.data), {}, {
127
103
  deleteStatus: 'pending'
128
104
  });
129
-
130
105
  editor.apply({
131
106
  type: 'set_node',
132
107
  path: nodePath,
@@ -160,7 +135,6 @@ function ImagePlugin(opts) {
160
135
  }
161
136
  });
162
137
  }
163
-
164
138
  editor.selection = null;
165
139
  onChange(editor, function () {
166
140
  setTimeout(function () {
@@ -186,11 +160,9 @@ function ImagePlugin(opts) {
186
160
  if (n.type !== 'image') {
187
161
  return;
188
162
  }
189
-
190
163
  return n.data.loaded === false;
191
164
  });
192
165
  /** don't reset if there is an image pending insertion */
193
-
194
166
  return imgPendingInsertion !== undefined && imgPendingInsertion !== null;
195
167
  },
196
168
  renderNode: function renderNode(props) {
@@ -214,13 +186,11 @@ function ImagePlugin(opts) {
214
186
  if (d.object === 'text') {
215
187
  textNodeMap[index] = d;
216
188
  }
217
-
218
189
  if (d.type === 'image') {
219
190
  if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
220
191
  updateNodesArray.push(textNodeMap[index - 1]);
221
192
  }
222
193
  }
223
-
224
194
  index++;
225
195
  });
226
196
  if (!updateNodesArray.length) return;
@@ -234,11 +204,8 @@ function ImagePlugin(opts) {
234
204
  }
235
205
  };
236
206
  }
237
-
238
207
  var serialization = {
239
- deserialize: function deserialize(el
240
- /*, next*/
241
- ) {
208
+ deserialize: function deserialize(el /*, next*/) {
242
209
  var name = el.tagName.toLowerCase();
243
210
  if (name !== 'img') return;
244
211
  log('deserialize: ', name);
@@ -265,54 +232,44 @@ var serialization = {
265
232
  log('return object: ', out);
266
233
  return out;
267
234
  },
268
- serialize: function serialize(object
269
- /*, children*/
270
- ) {
235
+ serialize: function serialize(object /*, children*/) {
271
236
  if (object.type !== 'image') return;
272
237
  var data = object.data;
273
238
  var alignment = data.alignment,
274
- alt = data.alt,
275
- src = data.src,
276
- height = data.height,
277
- margin = data.margin,
278
- justifyContent = data.justifyContent,
279
- width = data.width;
239
+ alt = data.alt,
240
+ src = data.src,
241
+ height = data.height,
242
+ margin = data.margin,
243
+ justifyContent = data.justifyContent,
244
+ width = data.width;
280
245
  var style = {};
281
-
282
246
  if (width) {
283
247
  style.width = "".concat(width, "px");
284
248
  }
285
-
286
249
  if (height) {
287
250
  style.height = "".concat(height, "px");
288
251
  }
289
-
290
252
  style.margin = margin;
291
253
  style.justifyContent = justifyContent;
292
-
293
254
  if (alignment) {
294
255
  switch (alignment) {
295
256
  case 'left':
296
257
  style.justifyContent = 'flex-start';
297
258
  style.margin = '0';
298
259
  break;
299
-
300
260
  case 'center':
301
261
  style.justifyContent = 'center';
302
262
  style.margin = '0 auto';
303
263
  break;
304
-
305
264
  case 'right':
306
265
  style.justifyContent = 'flex-end';
307
266
  style.margin = 'auto 0 0 auto';
308
267
  break;
309
-
310
268
  default:
311
269
  style.justifyContent = 'flex-start';
312
270
  break;
313
271
  }
314
272
  }
315
-
316
273
  style.objectFit = 'contain';
317
274
  var props = {
318
275
  src: src,
@@ -324,4 +281,4 @@ var serialization = {
324
281
  }
325
282
  };
326
283
  exports.serialization = serialization;
327
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIkltYWdlUGx1Z2luIiwib3B0cyIsInRvb2xiYXIiLCJpbnNlcnRJbWFnZVJlcXVlc3RlZCIsImljb24iLCJvbkNsaWNrIiwiZWRpdG9yIiwiaW5saW5lIiwidHlwZSIsImRhdGEiLCJuZXdJbWFnZSIsImxvYWRlZCIsInNyYyIsInVuZGVmaW5lZCIsImNoaWxkcmVuIiwidGV4dCIsImluc2VydE5vZGUiLCJFZGl0b3IiLCJub2RlIiwic2VsZWN0aW9uIiwibm9kZVBhdGgiLCJJbnNlcnRJbWFnZUhhbmRsZXIiLCJjdXN0b21Ub29sYmFyIiwib25Ub29sYmFyRG9uZSIsImFsaWdubWVudCIsImFsdCIsImltYWdlTG9hZGVkIiwib25DaGFuZ2UiLCJuZXdWYWx1ZXMiLCJ1cGRhdGUiLCJhcHBseSIsInBhdGgiLCJwcm9wZXJ0aWVzIiwibmV3UHJvcGVydGllcyIsIlRiIiwic2hvd0RvbmUiLCJuYW1lIiwicnVsZXMiLCJpc1ZvaWQiLCJpc0lubGluZSIsImVsZW1lbnQiLCJzdXBwb3J0cyIsImRlbGV0ZU5vZGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJvbkRlbGV0ZSIsImRlbGV0ZVN0YXR1cyIsImVyciIsInNldFRpbWVvdXQiLCJSZWFjdEVkaXRvciIsImZvY3VzIiwic3RvcFJlc2V0IiwidmFsdWUiLCJpbWdQZW5kaW5nSW5zZXJ0aW9uIiwiZG9jdW1lbnQiLCJmaW5kRGVzY2VuZGFudCIsIm4iLCJyZW5kZXJOb2RlIiwicHJvcHMiLCJhbGwiLCJPYmplY3QiLCJhc3NpZ24iLCJvbkZvY3VzIiwib25CbHVyIiwibWF4SW1hZ2VXaWR0aCIsIm1heEltYWdlSGVpZ2h0Iiwibm9ybWFsaXplTm9kZSIsInRleHROb2RlTWFwIiwidXBkYXRlTm9kZXNBcnJheSIsImluZGV4Iiwib2JqZWN0IiwiZCIsInB1c2giLCJsZW5ndGgiLCJjaGFuZ2UiLCJ3aXRob3V0Tm9ybWFsaXphdGlvbiIsImZvckVhY2giLCJpbnNlcnRUZXh0QnlLZXkiLCJrZXkiLCJzZXJpYWxpemF0aW9uIiwiZGVzZXJpYWxpemUiLCJlbCIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJtYXJnaW4iLCJqdXN0aWZ5Q29udGVudCIsInBhcnNlSW50IiwicmVwbGFjZSIsIm91dCIsImpzeCIsImdldEF0dHJpYnV0ZSIsInNlcmlhbGl6ZSIsIm9iamVjdEZpdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2ltYWdlL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnc2xhdGUtaHlwZXJzY3JpcHQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgeyBOb2RlIGFzIFNsYXRlTm9kZSwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuXG5pbXBvcnQgSW1hZ2UgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCBJbWFnZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgSW1hZ2VUb29sYmFyIGZyb20gJy4vaW1hZ2UtdG9vbGJhcic7XG5pbXBvcnQgSW5zZXJ0SW1hZ2VIYW5kbGVyIGZyb20gJy4vaW5zZXJ0LWltYWdlLWhhbmRsZXInO1xuaW1wb3J0IHsgUmVhY3RFZGl0b3IgfSBmcm9tICdzbGF0ZS1yZWFjdCc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6aW1hZ2UnKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSW1hZ2VQbHVnaW4ob3B0cykge1xuICBjb25zdCB0b29sYmFyID0gb3B0cy5pbnNlcnRJbWFnZVJlcXVlc3RlZCAmJiB7XG4gICAgaWNvbjogPEltYWdlIC8+LFxuICAgIG9uQ2xpY2s6IGVkaXRvciA9PiB7XG4gICAgICBsb2coJ1t0b29sYmFyXSBvbkNsaWNrJyk7XG4gICAgICBjb25zdCBpbmxpbmUgPSB7XG4gICAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBuZXdJbWFnZTogdHJ1ZSxcbiAgICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICAgIHNyYzogdW5kZWZpbmVkXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XVxuICAgICAgfTtcblxuICAgICAgZWRpdG9yLmluc2VydE5vZGUoaW5saW5lKTtcblxuICAgICAgLy8gZ2V0IHRoZSBlbGVtZW50IGp1c3QgaW5zZXJ0ZWRcbiAgICAgIGNvbnN0IFtub2RlLCBub2RlUGF0aF0gPSBFZGl0b3Iubm9kZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24pO1xuXG4gICAgICBvcHRzLmluc2VydEltYWdlUmVxdWVzdGVkKCgpID0+IG5ldyBJbnNlcnRJbWFnZUhhbmRsZXIobm9kZSwgbm9kZVBhdGgsIGVkaXRvcikpO1xuICAgIH0sXG4gICAgY3VzdG9tVG9vbGJhcjogKG5vZGUsIG5vZGVQYXRoLCBlZGl0b3IsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IG5vZGUuZGF0YS5hbGlnbm1lbnQ7XG4gICAgICBjb25zdCBhbHQgPSBub2RlLmRhdGEuYWx0O1xuICAgICAgY29uc3QgaW1hZ2VMb2FkZWQgPSBub2RlLmRhdGEubG9hZGVkICE9PSBmYWxzZTtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gbmV3VmFsdWVzID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAgIC4uLm5vZGUuZGF0YSxcbiAgICAgICAgICAuLi5uZXdWYWx1ZXNcbiAgICAgICAgfTtcblxuICAgICAgICBlZGl0b3IuYXBwbHkoe1xuICAgICAgICAgIHR5cGU6ICdzZXRfbm9kZScsXG4gICAgICAgICAgcGF0aDogbm9kZVBhdGgsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgZGF0YTogbm9kZS5kYXRhXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXdQcm9wZXJ0aWVzOiB7IGRhdGE6IHVwZGF0ZSB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uVG9vbGJhckRvbmUobnVsbCwgZmFsc2UpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgVGIgPSAoKSA9PiAoXG4gICAgICAgIDxJbWFnZVRvb2xiYXIgYWx0PXthbHR9IGltYWdlTG9hZGVkPXtpbWFnZUxvYWRlZH0gYWxpZ25tZW50PXthbGlnbm1lbnQgfHwgJ2xlZnQnfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+XG4gICAgICApO1xuICAgICAgcmV0dXJuIFRiO1xuICAgIH0sXG4gICAgc2hvd0RvbmU6IHRydWVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbWFnZScsXG4gICAgdG9vbGJhcixcbiAgICBydWxlczogZWRpdG9yID0+IHtcbiAgICAgIGNvbnN0IHsgaXNWb2lkLCBpc0lubGluZSB9ID0gZWRpdG9yO1xuXG4gICAgICBlZGl0b3IuaXNWb2lkID0gZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09ICdpbWFnZScgPyB0cnVlIDogaXNWb2lkKGVsZW1lbnQpO1xuICAgICAgfTtcblxuICAgICAgZWRpdG9yLmlzSW5saW5lID0gZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09ICdpbWFnZScgPyB0cnVlIDogaXNJbmxpbmUoZWxlbWVudCk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRpdG9yO1xuICAgIH0sXG4gICAgc3VwcG9ydHM6IG5vZGUgPT4gbm9kZS50eXBlID09PSAnaW1hZ2UnLFxuICAgIGRlbGV0ZU5vZGU6IChlLCBub2RlLCBub2RlUGF0aCwgZWRpdG9yLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAob3B0cy5vbkRlbGV0ZSkge1xuICAgICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgICAgLi4ubm9kZS5kYXRhLFxuICAgICAgICAgIGRlbGV0ZVN0YXR1czogJ3BlbmRpbmcnXG4gICAgICAgIH07XG5cbiAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICB0eXBlOiAnc2V0X25vZGUnLFxuICAgICAgICAgIHBhdGg6IG5vZGVQYXRoLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB1cGRhdGUgfVxuICAgICAgICB9KTtcblxuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uID0gbnVsbDtcbiAgICAgICAgb25DaGFuZ2UoZWRpdG9yKTtcbiAgICAgICAgb3B0cy5vbkRlbGV0ZShub2RlLmRhdGEuc3JjLCAoZXJyKSA9PiB7XG4gICAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICAgIGVkaXRvci5hcHBseSh7XG4gICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmVfbm9kZScsXG4gICAgICAgICAgICAgIHBhdGg6IG5vZGVQYXRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nKCdbZXJyb3JdOiAnLCBlcnIpO1xuICAgICAgICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgICAgICAgICAgcGF0aDogbm9kZVBhdGgsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB7IC4uLm5vZGUuZGF0YSwgZGVsZXRlU3RhdHVzOiAnZmFpbGVkJyB9IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICAgIG9uQ2hhbmdlKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBSZWFjdEVkaXRvci5mb2N1cyhlZGl0b3IpLCA1MCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgIGVkaXRvci5hcHBseSh7XG4gICAgICAgICAgdHlwZTogJ3JlbW92ZV9ub2RlJyxcbiAgICAgICAgICBwYXRoOiBub2RlUGF0aFxuICAgICAgICB9KTtcbiAgICAgICAgb25DaGFuZ2UoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBSZWFjdEVkaXRvci5mb2N1cyhlZGl0b3IpLCA1MCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RvcFJlc2V0OiB2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBpbWdQZW5kaW5nSW5zZXJ0aW9uID0gdmFsdWUuZG9jdW1lbnQuZmluZERlc2NlbmRhbnQobiA9PiB7XG4gICAgICAgIGlmIChuLnR5cGUgIT09ICdpbWFnZScpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG4uZGF0YS5sb2FkZWQgPT09IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICAvKiogZG9uJ3QgcmVzZXQgaWYgdGhlcmUgaXMgYW4gaW1hZ2UgcGVuZGluZyBpbnNlcnRpb24gKi9cbiAgICAgIHJldHVybiBpbWdQZW5kaW5nSW5zZXJ0aW9uICE9PSB1bmRlZmluZWQgJiYgaW1nUGVuZGluZ0luc2VydGlvbiAhPT0gbnVsbDtcbiAgICB9LFxuICAgIHJlbmRlck5vZGUocHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5ub2RlLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvbkRlbGV0ZTogb3B0cy5vbkRlbGV0ZSxcbiAgICAgICAgICAgIG9uRm9jdXM6IG9wdHMub25Gb2N1cyxcbiAgICAgICAgICAgIG9uQmx1cjogb3B0cy5vbkJsdXIsXG4gICAgICAgICAgICBtYXhJbWFnZVdpZHRoOiBvcHRzLm1heEltYWdlV2lkdGgsXG4gICAgICAgICAgICBtYXhJbWFnZUhlaWdodDogb3B0cy5tYXhJbWFnZUhlaWdodFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvcHNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8SW1hZ2VDb21wb25lbnQgey4uLmFsbH0+XG4gICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgPC9JbWFnZUNvbXBvbmVudD5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5vcm1hbGl6ZU5vZGU6IG5vZGUgPT4ge1xuICAgICAgY29uc3QgdGV4dE5vZGVNYXAgPSB7fTtcbiAgICAgIGNvbnN0IHVwZGF0ZU5vZGVzQXJyYXkgPSBbXTtcbiAgICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICAgIGlmIChub2RlLm9iamVjdCAhPT0gJ2RvY3VtZW50JykgcmV0dXJuO1xuXG4gICAgICBub2RlLmZpbmREZXNjZW5kYW50KGQgPT4ge1xuICAgICAgICBpZiAoZC5vYmplY3QgPT09ICd0ZXh0Jykge1xuICAgICAgICAgIHRleHROb2RlTWFwW2luZGV4XSA9IGQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZC50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID4gMCAmJiB0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdICYmIHRleHROb2RlTWFwW2luZGV4IC0gMV0udGV4dCA9PT0gJycpIHtcbiAgICAgICAgICAgIHVwZGF0ZU5vZGVzQXJyYXkucHVzaCh0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghdXBkYXRlTm9kZXNBcnJheS5sZW5ndGgpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGNoYW5nZSA9PiB7XG4gICAgICAgIGNoYW5nZS53aXRob3V0Tm9ybWFsaXphdGlvbigoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlTm9kZXNBcnJheS5mb3JFYWNoKG4gPT4gY2hhbmdlLmluc2VydFRleHRCeUtleShuLmtleSwgMCwgJyAnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCAvKiwgbmV4dCovKSB7XG4gICAgY29uc3QgbmFtZSA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobmFtZSAhPT0gJ2ltZycpIHJldHVybjtcblxuICAgIGxvZygnZGVzZXJpYWxpemU6ICcsIG5hbWUpO1xuICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGUgfHwgeyB3aWR0aDogJycsIGhlaWdodDogJycsIG1hcmdpbjogJycsIGp1c3RpZnlDb250ZW50OiAnJyB9O1xuICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoc3R5bGUud2lkdGgucmVwbGFjZSgncHgnLCAnJyksIDEwKSB8fCBudWxsO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KHN0eWxlLmhlaWdodC5yZXBsYWNlKCdweCcsICcnKSwgMTApIHx8IG51bGw7XG5cbiAgICBjb25zdCBvdXQgPSBqc3goJ2VsZW1lbnQnLCB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgZGF0YToge1xuICAgICAgICBzcmM6IGVsLmdldEF0dHJpYnV0ZSgnc3JjJyksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIG1hcmdpbjogZWwuc3R5bGUubWFyZ2luLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogZWwuc3R5bGUuanVzdGlmeUNvbnRlbnQsXG4gICAgICAgIGFsaWdubWVudDogZWwuZ2V0QXR0cmlidXRlKCdhbGlnbm1lbnQnKSxcbiAgICAgICAgYWx0OiBlbC5nZXRBdHRyaWJ1dGUoJ2FsdCcpXG4gICAgICB9XG4gICAgfSk7XG4gICAgbG9nKCdyZXR1cm4gb2JqZWN0OiAnLCBvdXQpO1xuICAgIHJldHVybiBvdXQ7XG4gIH0sXG4gIHNlcmlhbGl6ZShvYmplY3QgLyosIGNoaWxkcmVuKi8pIHtcbiAgICBpZiAob2JqZWN0LnR5cGUgIT09ICdpbWFnZScpIHJldHVybjtcblxuICAgIGNvbnN0IHsgZGF0YSB9ID0gb2JqZWN0O1xuICAgIGNvbnN0IHtcbiAgICAgIGFsaWdubWVudCxcbiAgICAgIGFsdCxcbiAgICAgIHNyYyxcbiAgICAgIGhlaWdodCxcbiAgICAgIG1hcmdpbixcbiAgICAgIGp1c3RpZnlDb250ZW50LFxuICAgICAgd2lkdGhcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKHdpZHRoKSB7XG4gICAgICBzdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICB9XG5cbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICBzdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgIH1cblxuICAgIHN0eWxlLm1hcmdpbiA9IG1hcmdpbjtcbiAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9IGp1c3RpZnlDb250ZW50O1xuXG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnZmxleC1zdGFydCc7XG4gICAgICAgICAgc3R5bGUubWFyZ2luID0gJzAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgIHN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XG4gICAgICAgICAgc3R5bGUubWFyZ2luID0gJzAgYXV0byc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdmbGV4LWVuZCc7XG4gICAgICAgICAgc3R5bGUubWFyZ2luID0gJ2F1dG8gMCAwIGF1dG8nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtc3RhcnQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0eWxlLm9iamVjdEZpdCA9ICdjb250YWluJztcblxuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgc3JjLFxuICAgICAgc3R5bGUsXG4gICAgICBhbGlnbm1lbnQsXG4gICAgICBhbHRcbiAgICB9O1xuXG4gICAgcmV0dXJuIDxpbWcgey4uLnByb3BzfSAvPjtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sc0NBQU4sQ0FBWjs7QUFFZSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQjtFQUN4QyxJQUFNQyxPQUFPLEdBQUdELElBQUksQ0FBQ0Usb0JBQUwsSUFBNkI7SUFDM0NDLElBQUksZUFBRSxnQ0FBQyxpQkFBRCxPQURxQztJQUUzQ0MsT0FBTyxFQUFFLGlCQUFBQyxNQUFNLEVBQUk7TUFDakJSLEdBQUcsQ0FBQyxtQkFBRCxDQUFIO01BQ0EsSUFBTVMsTUFBTSxHQUFHO1FBQ2JDLElBQUksRUFBRSxPQURPO1FBRWJDLElBQUksRUFBRTtVQUNKQyxRQUFRLEVBQUUsSUFETjtVQUVKQyxNQUFNLEVBQUUsS0FGSjtVQUdKQyxHQUFHLEVBQUVDO1FBSEQsQ0FGTztRQU9iQyxRQUFRLEVBQUUsQ0FBQztVQUFF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
284
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["log","debug","getNodeBy","editor","callback","descendants","SlateNode","reverse","descendant","descendantPath","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","inline","type","data","newImage","loaded","src","undefined","children","text","insertNode","get","node","nodePath","InsertImageHandler","customToolbar","value","onToolbarDone","alignment","alt","imageLoaded","onChange","newValues","update","toObject","change","setNodeByKey","key","Tb","showDone","name","rules","isVoid","isInline","element","supports","deleteNode","e","preventDefault","onDelete","merge","Data","create","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","object","d","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport get from 'lodash/get';\nimport { Data, Editor, Inline, Node as SlateNode } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst getNodeBy = (editor, callback) => {\n const descendants = SlateNode.descendants(editor, {\n reverse: true\n });\n\n for (const [descendant, descendantPath] of descendants) {\n if (callback(descendant, descendantPath)) {\n return [descendant, descendantPath];\n }\n }\n};\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: editor => {\n log('[toolbar] onClick');\n const inline = {\n type: 'image',\n data: {\n newImage: true,\n loaded: false,\n src: undefined\n },\n children: [{ text: '' }]\n };\n\n editor.insertNode(inline);\n\n const [node, nodePath] = getNodeBy(\n editor,\n descendant => descendant.type === 'image' && get(descendant, 'data.newImage')\n );\n\n opts.insertImageRequested(() => new InsertImageHandler(node, nodePath, editor));\n },\n customToolbar: (node, value, editor, onToolbarDone) => {\n const alignment = node.data.alignment;\n const alt = node.data.alt;\n const imageLoaded = node.data.loaded !== false;\n const onChange = newValues => {\n const update = {\n ...node.data.toObject(),\n ...newValues\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const Tb = () => (\n <ImageToolbar alt={alt} imageLoaded={imageLoaded} alignment={alignment || 'left'} onChange={onChange} />\n );\n return Tb;\n },\n showDone: true\n };\n\n return {\n name: 'image',\n toolbar,\n rules: editor => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = element => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n editor.isInline = element => {\n return element.type === 'image' ? true : isInline(element);\n };\n\n return editor;\n },\n supports: node => node.type === 'image',\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v\n .change()\n .setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: value => {\n const imgPendingInsertion = value.document.findDescendant(n => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight\n },\n props\n );\n return (\n <ImageComponent {...all}>\n {props.children}\n </ImageComponent>\n );\n }\n },\n normalizeNode: node => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant(d => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return change => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach(n => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n }\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt')\n }\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment');\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt\n };\n\n return <img {...props} />;\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_slateHyperscript","_debug","_get","_slate","_Image","_component","_imageToolbar","_insertImageHandler","_slateReact","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","ImagePlugin","opts","toolbar","insertImageRequested","icon","createElement","onClick","editor","inline","type","data","newImage","loaded","src","undefined","children","text","insertNode","_Editor$node","Editor","node","selection","_Editor$node2","_slicedToArray2","nodePath","InsertImageHandler","customToolbar","onToolbarDone","alignment","alt","imageLoaded","onChange","newValues","update","path","properties","newProperties","Tb","disableImageAlignmentButtons","showDone","name","rules","isVoid","isInline","element","supports","deleteNode","e","preventDefault","onDelete","deleteStatus","err","setTimeout","ReactEditor","focus","stopReset","value","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","change","withoutNormalization","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","jsx","getAttribute","serialize","concat","objectFit","exports"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import React from 'react';\nimport { jsx } from 'slate-hyperscript';\nimport debug from 'debug';\nimport get from 'lodash/get';\nimport { Node as SlateNode, Editor } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport { ReactEditor } from 'slate-react';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: editor => {\n log('[toolbar] onClick');\n const inline = {\n type: 'image',\n data: {\n newImage: true,\n loaded: false,\n src: undefined,\n },\n children: [{ text: '' }],\n };\n\n editor.insertNode(inline);\n\n // get the element just inserted\n const [node, nodePath] = Editor.node(editor, editor.selection);\n\n opts.insertImageRequested(() => new InsertImageHandler(node, nodePath, editor));\n },\n customToolbar: (node, nodePath, editor, onToolbarDone) => {\n const alignment = node.data.alignment;\n const alt = node.data.alt;\n const imageLoaded = node.data.loaded !== false;\n const onChange = newValues => {\n const update = {\n ...node.data,\n ...newValues\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n\n onToolbarDone(null, false);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n rules: editor => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = element => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n editor.isInline = element => {\n return element.type === 'image' ? true : isInline(element);\n };\n\n return editor;\n },\n supports: node => node.type === 'image',\n deleteNode: (e, node, nodePath, editor, onChange) => {\n e.preventDefault();\n\n if (opts.onDelete) {\n const update = {\n ...node.data,\n deleteStatus: 'pending'\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n\n editor.selection = null;\n onChange(editor);\n opts.onDelete(node.data.src, (err) => {\n if (!err) {\n editor.apply({\n type: 'remove_node',\n path: nodePath\n });\n } else {\n log('[error]: ', err);\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: { ...node.data, deleteStatus: 'failed' } },\n });\n }\n\n editor.selection = null;\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n });\n } else {\n editor.selection = null;\n editor.apply({\n type: 'remove_node',\n path: nodePath\n });\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.loaded === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return (\n <ImageComponent {...all}>\n {props.children}\n </ImageComponent>\n );\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = jsx('element', {\n type: 'image',\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n });\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const {\n alignment,\n alt,\n src,\n height,\n margin,\n justifyContent,\n width\n } = data;\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"mappings":"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"}
@@ -1,27 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
11
  var _omit = _interopRequireDefault(require("lodash/omit"));
17
-
18
12
  var _debug = _interopRequireDefault(require("debug"));
19
-
20
13
  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
-
22
14
  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; }
23
-
24
15
  var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
16
+
25
17
  /**
26
18
  * Handles user selection, insertion (or cancellation) of an image into the editor.
27
19
  * @param {Block} placeHolderPath - a block that has been added to the editor as a place holder for the image
@@ -29,7 +21,6 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
29
21
  * @param {Function} onChange - callback to notify changes applied by the handler
30
22
  * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
31
23
  */
32
-
33
24
  var InsertImageHandler = /*#__PURE__*/function () {
34
25
  function InsertImageHandler(node, placeHolderPath, editor) {
35
26
  var isPasted = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -38,20 +29,17 @@ var InsertImageHandler = /*#__PURE__*/function () {
38
29
  this.placeHolderPath = placeHolderPath;
39
30
  this.editor = editor;
40
31
  this.isPasted = isPasted;
32
+ this.chosenFile = null;
41
33
  }
42
-
43
34
  (0, _createClass2["default"])(InsertImageHandler, [{
44
35
  key: "getPlaceholderInDocument",
45
36
  value: function getPlaceholderInDocument(value) {
46
37
  var document = value.document;
47
38
  var directChild = document.getChild(this.placeHolderPath);
48
-
49
39
  if (directChild) {
50
40
  return directChild;
51
41
  }
52
-
53
42
  var child = document.getDescendant(this.placeHolderPath);
54
-
55
43
  if (child) {
56
44
  return child;
57
45
  } else {
@@ -72,7 +60,6 @@ var InsertImageHandler = /*#__PURE__*/function () {
72
60
  key: "done",
73
61
  value: function done(err, src) {
74
62
  log('done: err:', err);
75
-
76
63
  if (err) {
77
64
  //eslint-disable-next-line
78
65
  console.log(err);
@@ -91,39 +78,36 @@ var InsertImageHandler = /*#__PURE__*/function () {
91
78
  }
92
79
  }
93
80
  });
94
-
95
81
  var newData = _objectSpread(_objectSpread({}, this.node.data), {}, {
96
82
  src: src,
97
83
  loaded: true,
98
84
  percent: 100
99
85
  });
100
-
101
86
  this.node = Object.assign({}, this.node, {
102
87
  data: (0, _omit["default"])(newData, 'newImage')
103
88
  });
104
89
  }
105
90
  }
91
+
106
92
  /**
107
93
  * Notify handler that the user chose a file - will create a change with a preview in the editor.
108
94
  *
109
95
  * @param {File} file - the file that the user chose using a file input.
110
96
  */
111
-
112
97
  }, {
113
98
  key: "fileChosen",
114
99
  value: function fileChosen(file) {
115
100
  var _this = this;
116
-
117
101
  if (!file) {
118
102
  return;
119
103
  }
120
104
 
105
+ // Save the chosen file to this.chosenFile
106
+ this.chosenFile = file;
121
107
  log('[fileChosen] file: ', file);
122
108
  var reader = new FileReader();
123
-
124
109
  reader.onload = function () {
125
110
  var dataURL = reader.result;
126
-
127
111
  _this.editor.apply({
128
112
  type: 'set_node',
129
113
  path: _this.placeHolderPath,
@@ -136,14 +120,12 @@ var InsertImageHandler = /*#__PURE__*/function () {
136
120
  })
137
121
  }
138
122
  });
139
-
140
123
  _this.node = Object.assign({}, _this.node, {
141
124
  data: {
142
125
  src: dataURL
143
126
  }
144
127
  });
145
128
  };
146
-
147
129
  reader.readAsDataURL(file);
148
130
  }
149
131
  }, {
@@ -168,10 +150,16 @@ var InsertImageHandler = /*#__PURE__*/function () {
168
150
  }
169
151
  });
170
152
  }
153
+
154
+ // Add a getter method to retrieve the chosen file
155
+ }, {
156
+ key: "getChosenFile",
157
+ value: function getChosenFile() {
158
+ return this.chosenFile;
159
+ }
171
160
  }]);
172
161
  return InsertImageHandler;
173
162
  }();
174
-
175
163
  var _default = InsertImageHandler;
176
164
  exports["default"] = _default;
177
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIkluc2VydEltYWdlSGFuZGxlciIsIm5vZGUiLCJwbGFjZUhvbGRlclBhdGgiLCJlZGl0b3IiLCJpc1Bhc3RlZCIsInZhbHVlIiwiZG9jdW1lbnQiLCJkaXJlY3RDaGlsZCIsImdldENoaWxkIiwiY2hpbGQiLCJnZXREZXNjZW5kYW50IiwiRXJyb3IiLCJhcHBseSIsInR5cGUiLCJwYXRoIiwiZXJyIiwic3JjIiwiY29uc29sZSIsInByb3BlcnRpZXMiLCJkYXRhIiwibmV3UHJvcGVydGllcyIsImxvYWRlZCIsInBlcmNlbnQiLCJuZXdEYXRhIiwiT2JqZWN0IiwiYXNzaWduIiwib21pdCIsImZpbGUiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiZGF0YVVSTCIsInJlc3VsdCIsInJlYWRBc0RhdGFVUkwiLCJieXRlcyIsInRvdGFsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvaW1hZ2UvaW5zZXJ0LWltYWdlLWhhbmRsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9taXQgZnJvbSAnbG9kYXNoL29taXQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6aW1hZ2U6aW5zZXJ0LWltYWdlLWhhbmRsZXInKTtcblxuLyoqXG4gKiBIYW5kbGVzIHVzZXIgc2VsZWN0aW9uLCBpbnNlcnRpb24gKG9yIGNhbmNlbGxhdGlvbikgb2YgYW4gaW1hZ2UgaW50byB0aGUgZWRpdG9yLlxuICogQHBhcmFtIHtCbG9ja30gcGxhY2VIb2xkZXJQYXRoIC0gYSBibG9jayB0aGF0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBlZGl0b3IgYXMgYSBwbGFjZSBob2xkZXIgZm9yIHRoZSBpbWFnZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZ2V0VmFsdWUgLSBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVkaXRvclxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25DaGFuZ2UgLSBjYWxsYmFjayB0byBub3RpZnkgY2hhbmdlcyBhcHBsaWVkIGJ5IHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzUGFzdGVkIC0gYSBib29sZWFuIHRoYXQga2VlcHMgdHJhY2sgaWYgdGhlIGZpbGUgaXMgcGFzdGVkXG4gKi9cbmNsYXNzIEluc2VydEltYWdlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKG5vZGUsIHBsYWNlSG9sZGVyUGF0aCwgZWRpdG9yLCBpc1Bhc3RlZCA9IGZhbHNlKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnBsYWNlSG9sZGVyUGF0aCA9IHBsYWNlSG9sZGVyUGF0aDtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLmlzUGFzdGVkID0gaXNQYXN0ZWQ7XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlckluRG9jdW1lbnQodmFsdWUpIHtcbiAgICBjb25zdCB7IGRvY3VtZW50IH0gPSB2YWx1ZTtcbiAgICBjb25zdCBkaXJlY3RDaGlsZCA9IGRvY3VtZW50LmdldENoaWxkKHRoaXMucGxhY2VIb2xkZXJQYXRoKTtcblxuICAgIGlmIChkaXJlY3RDaGlsZCkge1xuICAgICAgcmV0dXJuIGRpcmVjdENoaWxkO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkID0gZG9jdW1lbnQuZ2V0RGVzY2VuZGFudCh0aGlzLnBsYWNlSG9sZGVyUGF0aCk7XG5cbiAgICBpZiAoY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImluc2VydC1pbWFnZTogQ2FuJ3QgZmluZCBwbGFjZWhvbGRlciFcIik7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGxvZygnaW5zZXJ0IGNhbmNlbGxlZCcpO1xuICAgIHRoaXMuZWRpdG9yLmFwcGx5KHtcbiAgICAgIHR5cGU6ICdyZW1vdmVfbm9kZScsXG4gICAgICBwYXRoOiB0aGlzLnBsYWNlSG9sZGVyUGF0aFxuICAgIH0pO1xuICB9XG5cbiAgZG9uZShlcnIsIHNyYykge1xuICAgIGxvZygnZG9uZTogZXJyOicsIGVycik7XG4gICAgaWYgKGVycikge1xuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgICAgcGF0aDogdGhpcy5wbGFjZUhvbGRlclBhdGgsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBkYXRhOiB0aGlzLm5vZGUuZGF0YVxuICAgICAgICB9LFxuICAgICAgICBuZXdQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgc3JjLFxuICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgcGVyY2VudDogMTAwXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB7XG4gICAgICAgIC4uLnRoaXMubm9kZS5kYXRhLFxuICAgICAgICBzcmMsXG4gICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgcGVyY2VudDogMTAwXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm5vZGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm5vZGUsIHtcbiAgICAgICAgZGF0YTogb21pdChuZXdEYXRhLCAnbmV3SW1hZ2UnKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBoYW5kbGVyIHRoYXQgdGhlIHVzZXIgY2hvc2UgYSBmaWxlIC0gd2lsbCBjcmVhdGUgYSBjaGFuZ2Ugd2l0aCBhIHByZXZpZXcgaW4gdGhlIGVkaXRvci5cbiAgICpcbiAgICogQHBhcmFtIHtGaWxlfSBmaWxlIC0gdGhlIGZpbGUgdGhhdCB0aGUgdXNlciBjaG9zZSB1c2luZyBhIGZpbGUgaW5wdXQuXG4gICAqL1xuICBmaWxlQ2hvc2VuKGZpbGUpIHtcbiAgICBpZiAoIWZpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2coJ1tmaWxlQ2hvc2VuXSBmaWxlOiAnLCBmaWxlKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gcmVhZGVyLnJlc3VsdDtcblxuICAgICAgdGhpcy5lZGl0b3IuYXBwbHkoe1xuICAgICAgICB0eXBlOiAnc2V0X25vZGUnLFxuICAgICAgICBwYXRoOiB0aGlzLnBsYWNlSG9sZGVyUGF0aCxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGRhdGE6IHRoaXMubm9kZS5kYXRhXG4gICAgICAgIH0sXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAuLi50aGlzLm5vZGUuZGF0YSxcbiAgICAgICAgICAgIHNyYzogZGF0YVVSTFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLm5vZGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm5vZGUsIHsgZGF0YTogeyBzcmM6IGRhdGFVUkwgfSB9KTtcbiAgICB9O1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICB9XG5cbiAgcHJvZ3Jlc3MocGVyY2VudCwgYnl0ZXMsIHRvdGFsKSB7XG4gICAgbG9nKCdwcm9ncmVzczogJywgcGVyY2VudCwgYnl0ZXMsIHRvdGFsKTtcblxuICAgIHRoaXMuZWRpdG9yLmFwcGx5KHtcbiAgICAgIHR5cGU6ICdzZXRfbm9kZScsXG4gICAgICBwYXRoOiB0aGlzLnBsYWNlSG9sZGVyUGF0aCxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZGF0YTogdGhpcy5ub2RlLmRhdGFcbiAgICAgIH0sXG4gICAgICBuZXdQcm9wZXJ0aWVzOiB7XG4gICAgICAgIGRhdGE6IHsgLi4udGhpcy5ub2RlLmRhdGEsIHBlcmNlbnQgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubm9kZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMubm9kZSwgeyBkYXRhOiB7IHBlcmNlbnQgfSB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnNlcnRJbWFnZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsSUFBQUMsaUJBQUEsRUFBTSxtREFBTixDQUFaO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBQ01DLGtCO0VBQ0osNEJBQVlDLElBQVosRUFBa0JDLGVBQWxCLEVBQW1DQyxNQUFuQyxFQUE2RDtJQUFBLElBQWxCQyxRQUFrQix1RUFBUCxLQUFPO0lBQUE7SUFDM0QsS0FBS0gsSUFBTCxHQUFZQSxJQUFaO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkEsZUFBdkI7SUFDQSxLQUFLQyxNQUFMLEdBQWNBLE1BQWQ7SUFDQSxLQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtFQUNEOzs7O1dBRUQsa0NBQXlCQyxLQUF6QixFQUFnQztNQUM5QixJQUFRQyxRQUFSLEdBQXFCRCxLQUFyQixDQUFRQyxRQUFSO01BQ0EsSUFBTUMsV0FBVyxHQUFHRCxRQUFRLENBQUNFLFFBQVQsQ0FBa0IsS0FBS04sZUFBdkIsQ0FBcEI7O01BRUEsSUFBSUssV0FBSixFQUFpQjtRQUNmLE9BQU9BLFdBQVA7TUFDRDs7TUFFRCxJQUFNRSxLQUFLLEdBQUdILFFBQVEsQ0FBQ0ksYUFBVCxDQUF1QixLQUFLUixlQUE1QixDQUFkOztNQUVBLElBQUlPLEtBQUosRUFBVztRQUNULE9BQU9BLEtBQVA7TUFDRCxDQUZELE1BRU87UUFDTDtRQUNBLE1BQU0sSUFBSUUsS0FBSixDQUFVLHVDQUFWLENB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
165
+ //# sourceMappingURL=insert-image-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","node","placeHolderPath","editor","isPasted","value","document","directChild","getChild","child","getDescendant","Error","apply","type","path","err","src","console","properties","data","newProperties","loaded","percent","newData","Object","assign","omit","file","reader","FileReader","onload","dataURL","result","readAsDataURL","bytes","total"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import omit from 'lodash/omit';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeHolderPath - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(node, placeHolderPath, editor, isPasted = false) {\n this.node = node;\n this.placeHolderPath = placeHolderPath;\n this.editor = editor;\n this.isPasted = isPasted;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeHolderPath);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeHolderPath);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n this.editor.apply({\n type: 'remove_node',\n path: this.placeHolderPath\n });\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: {\n src,\n loaded: true,\n percent: 100\n }\n }\n });\n const newData = {\n ...this.node.data,\n src,\n loaded: true,\n percent: 100\n };\n\n this.node = Object.assign({}, this.node, {\n data: omit(newData, 'newImage')\n });\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: {\n ...this.node.data,\n src: dataURL\n }\n }\n });\n this.node = Object.assign({}, this.node, { data: { src: dataURL } });\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: { ...this.node.data, percent }\n }\n });\n this.node = Object.assign({}, this.node, { data: { percent } });\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"insert-image-handler.js","names":["_omit","_interopRequireDefault","require","_debug","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","InsertImageHandler","node","placeHolderPath","editor","isPasted","undefined","_classCallCheck2","chosenFile","_createClass2","value","getPlaceholderInDocument","document","directChild","getChild","child","getDescendant","Error","cancel","type","path","done","err","src","console","properties","data","newProperties","loaded","percent","newData","assign","omit","fileChosen","file","_this","reader","FileReader","onload","dataURL","result","readAsDataURL","progress","bytes","total","getChosenFile","_default","exports"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import omit from 'lodash/omit';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeHolderPath - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(node, placeHolderPath, editor, isPasted = false) {\n this.node = node;\n this.placeHolderPath = placeHolderPath;\n this.editor = editor;\n this.isPasted = isPasted;\n this.chosenFile = null;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeHolderPath);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeHolderPath);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n this.editor.apply({\n type: 'remove_node',\n path: this.placeHolderPath\n });\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: {\n src,\n loaded: true,\n percent: 100\n }\n }\n });\n const newData = {\n ...this.node.data,\n src,\n loaded: true,\n percent: 100\n };\n\n this.node = Object.assign({}, this.node, {\n data: omit(newData, 'newImage')\n });\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n // Save the chosen file to this.chosenFile\n this.chosenFile = file;\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: {\n ...this.node.data,\n src: dataURL\n }\n }\n });\n this.node = Object.assign({}, this.node, { data: { src: dataURL } });\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n\n this.editor.apply({\n type: 'set_node',\n path: this.placeHolderPath,\n properties: {\n data: this.node.data\n },\n newProperties: {\n data: { ...this.node.data, percent }\n }\n });\n this.node = Object.assign({}, this.node, { data: { percent } });\n }\n\n // Add a getter method to retrieve the chosen file\n getChosenFile() {\n return this.chosenFile;\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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"}