@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.
- package/CHANGELOG.md +255 -152
- package/lib/components.js +15 -39
- package/lib/components.js.map +1 -1
- package/lib/editor.js +200 -356
- package/lib/editor.js.map +1 -1
- package/lib/index.js +25 -49
- package/lib/index.js.map +1 -1
- package/lib/new-serialization.js +6 -67
- package/lib/new-serialization.js.map +1 -1
- package/lib/parse-html.js +7 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +3 -13
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +20 -59
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/hotKeys/index.js +9 -16
- package/lib/plugins/hotKeys/index.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +6 -27
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +42 -99
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +14 -50
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +16 -59
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +13 -25
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +6 -36
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +11 -46
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +89 -93
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +32 -109
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +107 -195
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +7 -27
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +9 -14
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +13 -53
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -20
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -10
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +16 -31
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +7 -54
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +3 -10
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +6 -21
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +1 -8
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +54 -187
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +12 -44
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +17 -46
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +2 -10
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +134 -144
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +2 -6
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +9 -40
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +29 -83
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +8 -30
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +11 -69
- package/lib/serialization.js.map +1 -1
- package/lib/test-serializer.js +3 -46
- package/lib/test-serializer.js.map +1 -1
- package/lib/theme.js +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +7 -7
- package/playground/image/data.js +20 -20
- package/playground/image/index.html +20 -22
- package/playground/image/index.jsx +10 -12
- package/playground/index.html +23 -25
- package/playground/mathquill/index.html +20 -23
- package/playground/mathquill/index.jsx +22 -18
- package/playground/prod-test/index.html +20 -24
- package/playground/prod-test/index.jsx +3 -5
- package/playground/schema-override/data.js +10 -10
- package/playground/schema-override/image-plugin.jsx +4 -3
- package/playground/schema-override/index.html +19 -21
- package/playground/schema-override/index.jsx +14 -13
- package/playground/serialization/data.js +10 -10
- package/playground/serialization/image-plugin.jsx +4 -3
- package/playground/serialization/index.html +20 -22
- package/playground/table-examples.html +8 -5
- package/playground/webpack.config.js +10 -10
- package/src/editor.jsx +108 -104
- package/src/index.jsx +20 -13
- package/src/parse-html.js +1 -1
- package/src/plugins/characters/custom-popper.js +7 -7
- package/src/plugins/characters/index.jsx +34 -23
- package/src/plugins/characters/utils.js +81 -81
- package/src/plugins/image/alt-dialog.jsx +5 -4
- package/src/plugins/image/component.jsx +47 -44
- package/src/plugins/image/image-toolbar.jsx +19 -27
- package/src/plugins/image/index.jsx +24 -18
- package/src/plugins/image/insert-image-handler.js +9 -0
- package/src/plugins/index.jsx +7 -9
- package/src/plugins/list/index.jsx +7 -7
- package/src/plugins/math/index.jsx +71 -28
- package/src/plugins/media/index.jsx +7 -7
- package/src/plugins/media/media-dialog.js +63 -89
- package/src/plugins/media/media-toolbar.jsx +8 -8
- package/src/plugins/media/media-wrapper.jsx +8 -5
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +19 -21
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -4
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +5 -4
- package/src/plugins/respArea/icons/index.jsx +14 -11
- package/src/plugins/respArea/index.jsx +9 -15
- package/src/plugins/respArea/inline-dropdown/index.jsx +6 -6
- package/src/plugins/respArea/utils.jsx +7 -3
- package/src/plugins/table/icons/index.jsx +11 -17
- package/src/plugins/table/index.jsx +14 -10
- package/src/plugins/table/table-toolbar.jsx +6 -6
- package/src/plugins/toolbar/default-toolbar.jsx +9 -9
- package/src/plugins/toolbar/done-button.jsx +4 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +36 -33
- package/src/plugins/toolbar/index.jsx +3 -2
- package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
- package/src/plugins/toolbar/toolbar.jsx +6 -1
- package/src/plugins/utils.js +2 -2
- package/src/serialization.jsx +34 -32
- package/lib/old-serialization.js +0 -330
- package/lib/slate-editor.js +0 -302
- 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);
|
|
40
|
+
editor.insertNode(inline);
|
|
58
41
|
|
|
42
|
+
// get the element just inserted
|
|
59
43
|
var _Editor$node = _slate.Editor.node(editor, editor.selection),
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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=
|
|
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","
|
|
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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"}
|