@pie-lib/editable-html 9.3.1-next.53 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/editor.js +244 -114
  3. package/lib/editor.js.map +1 -1
  4. package/lib/index.js +51 -5
  5. package/lib/index.js.map +1 -1
  6. package/lib/parse-html.js +5 -6
  7. package/lib/parse-html.js.map +1 -1
  8. package/lib/plugins/characters/custom-popper.js +12 -2
  9. package/lib/plugins/characters/custom-popper.js.map +1 -1
  10. package/lib/plugins/characters/index.js +50 -3
  11. package/lib/plugins/characters/index.js.map +1 -1
  12. package/lib/plugins/characters/utils.js.map +1 -1
  13. package/lib/plugins/image/alt-dialog.js +26 -0
  14. package/lib/plugins/image/alt-dialog.js.map +1 -1
  15. package/lib/plugins/image/component.js +82 -29
  16. package/lib/plugins/image/component.js.map +1 -1
  17. package/lib/plugins/image/image-toolbar.js +45 -7
  18. package/lib/plugins/image/image-toolbar.js.map +1 -1
  19. package/lib/plugins/image/index.js +41 -2
  20. package/lib/plugins/image/index.js.map +1 -1
  21. package/lib/plugins/image/insert-image-handler.js +22 -2
  22. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  23. package/lib/plugins/index.js +34 -13
  24. package/lib/plugins/index.js.map +1 -1
  25. package/lib/plugins/list/index.js +42 -13
  26. package/lib/plugins/list/index.js.map +1 -1
  27. package/lib/plugins/math/index.js +75 -30
  28. package/lib/plugins/math/index.js.map +1 -1
  29. package/lib/plugins/media/index.js +75 -18
  30. package/lib/plugins/media/index.js.map +1 -1
  31. package/lib/plugins/media/media-dialog.js +188 -100
  32. package/lib/plugins/media/media-dialog.js.map +1 -1
  33. package/lib/plugins/media/media-toolbar.js +24 -4
  34. package/lib/plugins/media/media-toolbar.js.map +1 -1
  35. package/lib/plugins/media/media-wrapper.js +29 -5
  36. package/lib/plugins/media/media-wrapper.js.map +1 -1
  37. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  38. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  39. package/lib/plugins/respArea/drag-in-the-blank/index.js +18 -4
  40. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  41. package/lib/plugins/respArea/explicit-constructed-response/index.js +8 -2
  42. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  43. package/lib/plugins/respArea/icons/index.js +18 -1
  44. package/lib/plugins/respArea/icons/index.js.map +1 -1
  45. package/lib/plugins/respArea/index.js +47 -1
  46. package/lib/plugins/respArea/index.js.map +1 -1
  47. package/lib/plugins/respArea/inline-dropdown/index.js +8 -1
  48. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  49. package/lib/plugins/respArea/utils.js +22 -0
  50. package/lib/plugins/respArea/utils.js.map +1 -1
  51. package/lib/plugins/table/icons/index.js +7 -0
  52. package/lib/plugins/table/icons/index.js.map +1 -1
  53. package/lib/plugins/table/index.js +94 -15
  54. package/lib/plugins/table/index.js.map +1 -1
  55. package/lib/plugins/table/table-toolbar.js +43 -11
  56. package/lib/plugins/table/table-toolbar.js.map +1 -1
  57. package/lib/plugins/toolbar/default-toolbar.js +30 -8
  58. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  59. package/lib/plugins/toolbar/done-button.js +9 -1
  60. package/lib/plugins/toolbar/done-button.js.map +1 -1
  61. package/lib/plugins/toolbar/editor-and-toolbar.js +48 -18
  62. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/index.js +5 -0
  64. package/lib/plugins/toolbar/index.js.map +1 -1
  65. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  66. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  67. package/lib/plugins/toolbar/toolbar.js +67 -19
  68. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  69. package/lib/plugins/utils.js +15 -0
  70. package/lib/plugins/utils.js.map +1 -1
  71. package/lib/serialization.js +69 -8
  72. package/lib/serialization.js.map +1 -1
  73. package/lib/theme.js.map +1 -1
  74. package/package.json +4 -4
  75. package/src/plugins/media/index.jsx +1 -0
@@ -1,49 +1,70 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = MediaPlugin;
8
9
  exports.serialization = exports.insertDialog = void 0;
10
+
9
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+
10
13
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
+
11
15
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
16
+
12
17
  var _react = _interopRequireDefault(require("react"));
18
+
13
19
  var _reactDom = _interopRequireDefault(require("react-dom"));
20
+
14
21
  var _slate = require("slate");
22
+
15
23
  var _Theaters = _interopRequireDefault(require("@material-ui/icons/Theaters"));
24
+
16
25
  var _VolumeUp = _interopRequireDefault(require("@material-ui/icons/VolumeUp"));
26
+
17
27
  var _debug = _interopRequireDefault(require("debug"));
28
+
18
29
  var _mediaDialog = _interopRequireDefault(require("./media-dialog"));
30
+
19
31
  var _mediaToolbar = _interopRequireDefault(require("./media-toolbar"));
32
+
20
33
  var _mediaWrapper = _interopRequireDefault(require("./media-wrapper"));
34
+
21
35
  var _excluded = ["type", "callback", "opts"],
22
- _excluded2 = ["src", "height", "width", "editing", "tag"];
36
+ _excluded2 = ["src", "height", "width", "editing", "tag"];
37
+
23
38
  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; }
39
+
24
40
  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; }
41
+
25
42
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
43
+
26
44
  var removeDialogs = function removeDialogs() {
27
45
  var prevDialogs = document.querySelectorAll('.insert-media-dialog');
28
46
  prevDialogs.forEach(function (s) {
29
47
  return s.remove();
30
48
  });
31
49
  };
50
+
32
51
  var insertDialog = function insertDialog(props) {
33
52
  var newEl = document.createElement('div');
34
53
  var type = props.type,
35
- callback = props.callback,
36
- opts = props.opts,
37
- rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
54
+ callback = props.callback,
55
+ opts = props.opts,
56
+ rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
38
57
  var initialBodyOverflow = document.body.style.overflow;
39
58
  removeDialogs();
40
59
  newEl.className = 'insert-media-dialog';
41
60
  document.body.style.overflow = 'hidden';
61
+
42
62
  var handleClose = function handleClose(val, data) {
43
63
  callback(val, data);
44
64
  newEl.remove();
45
65
  document.body.style.overflow = initialBodyOverflow;
46
66
  };
67
+
47
68
  var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"], (0, _extends2["default"])({}, rest, {
48
69
  uploadSoundSupport: opts.uploadSoundSupport,
49
70
  type: type,
@@ -51,16 +72,21 @@ var insertDialog = function insertDialog(props) {
51
72
  open: true,
52
73
  handleClose: handleClose
53
74
  }));
75
+
54
76
  _reactDom["default"].render(el, newEl);
77
+
55
78
  document.body.appendChild(newEl);
56
79
  };
80
+
57
81
  exports.insertDialog = insertDialog;
58
82
  var types = ['audio', 'video'];
83
+
59
84
  function MediaPlugin(type, opts) {
60
85
  var toolbar = {
61
86
  icon: type === 'audio' ? /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null) : /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
62
87
  onClick: function onClick(value, onChange) {
63
88
  log('[toolbar] onClick');
89
+
64
90
  var inline = _slate.Inline.create({
65
91
  type: type,
66
92
  isVoid: true,
@@ -75,6 +101,7 @@ function MediaPlugin(type, opts) {
75
101
  width: undefined
76
102
  }
77
103
  });
104
+
78
105
  var change = value.change().insertInline(inline);
79
106
  onChange(change);
80
107
  insertDialog({
@@ -84,6 +111,7 @@ function MediaPlugin(type, opts) {
84
111
  var nodeIsThere = change.value.document.findDescendant(function (d) {
85
112
  return d.key === inline.key;
86
113
  });
114
+
87
115
  if (nodeIsThere) {
88
116
  if (!val) {
89
117
  var c = change.removeNodeByKey(inline.key);
@@ -94,6 +122,7 @@ function MediaPlugin(type, opts) {
94
122
  var _c = change.setNodeByKey(inline.key, {
95
123
  data: data
96
124
  });
125
+
97
126
  onChange(_c, function () {
98
127
  return opts.focus('beginning', nodeIsThere);
99
128
  });
@@ -119,15 +148,16 @@ function MediaPlugin(type, opts) {
119
148
  renderNode: function renderNode(props) {
120
149
  if (props.node.type === type) {
121
150
  var node = props.node,
122
- key = props.key;
151
+ key = props.key;
123
152
  var data = node.data;
124
153
  var jsonData = data.toJSON();
125
154
  var src = jsonData.src,
126
- height = jsonData.height,
127
- width = jsonData.width,
128
- editing = jsonData.editing,
129
- tag = jsonData.tag,
130
- rest = (0, _objectWithoutProperties2["default"])(jsonData, _excluded2);
155
+ height = jsonData.height,
156
+ width = jsonData.width,
157
+ editing = jsonData.editing,
158
+ tag = jsonData.tag,
159
+ rest = (0, _objectWithoutProperties2["default"])(jsonData, _excluded2);
160
+
131
161
  var handleEdit = function handleEdit() {
132
162
  var change = opts.createChange();
133
163
  var c = change.setNodeByKey(key, {
@@ -145,11 +175,13 @@ function MediaPlugin(type, opts) {
145
175
  var nodeIsThere = change.value.document.findDescendant(function (d) {
146
176
  return d.type === type && d.data.get('editing');
147
177
  });
178
+
148
179
  if (nodeIsThere && val) {
149
180
  var _c2 = change.setNodeByKey(key, {
150
181
  data: data,
151
182
  editing: false
152
183
  });
184
+
153
185
  opts.onChange(_c2, function () {
154
186
  return opts.focus('beginning', nodeIsThere);
155
187
  });
@@ -160,18 +192,23 @@ function MediaPlugin(type, opts) {
160
192
  }));
161
193
  });
162
194
  };
195
+
163
196
  var handleDelete = function handleDelete() {
164
197
  var change = opts.createChange();
165
198
  var c = change.removeNodeByKey(node.key);
166
199
  opts.onChange(c);
167
200
  };
201
+
168
202
  var style = {};
203
+
169
204
  if (width) {
170
205
  style.width = "".concat(width, "px");
171
206
  }
207
+
172
208
  if (height) {
173
209
  style.height = "".concat(height, "px");
174
210
  }
211
+
175
212
  if (tag === 'audio') {
176
213
  return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
177
214
  editor: true,
@@ -187,6 +224,7 @@ function MediaPlugin(type, opts) {
187
224
  onRemove: handleDelete
188
225
  }));
189
226
  }
227
+
190
228
  return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
191
229
  editor: true,
192
230
  "data-type": type,
@@ -195,7 +233,8 @@ function MediaPlugin(type, opts) {
195
233
  frameBorder: "0",
196
234
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
197
235
  allowFullScreen: true,
198
- src: src
236
+ src: src,
237
+ editing: editing ? 1 : 0
199
238
  }, rest, style)), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
200
239
  onEdit: handleEdit,
201
240
  onRemove: handleDelete
@@ -211,12 +250,15 @@ function MediaPlugin(type, opts) {
211
250
  if (d.object === 'text') {
212
251
  textNodeMap[index] = d;
213
252
  }
253
+
214
254
  var isMedia = types.indexOf(d.type) >= 0;
255
+
215
256
  if (isMedia) {
216
257
  if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
217
258
  updateNodesArray.push(textNodeMap[index - 1]);
218
259
  }
219
260
  }
261
+
220
262
  index++;
221
263
  });
222
264
  if (!updateNodesArray.length) return;
@@ -230,15 +272,20 @@ function MediaPlugin(type, opts) {
230
272
  }
231
273
  };
232
274
  }
275
+
233
276
  var serialization = {
234
- deserialize: function deserialize(el /*, next*/) {
277
+ deserialize: function deserialize(el
278
+ /*, next*/
279
+ ) {
235
280
  var type = el.dataset && el.dataset.type;
236
281
  var tag = 'iframe';
237
282
  var src;
238
283
  var typeIndex = types.indexOf(type);
284
+
239
285
  if (typeIndex < 0) {
240
286
  if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {
241
287
  var _el$firstChild;
288
+
242
289
  type = 'audio';
243
290
  tag = 'audio';
244
291
  src = (_el$firstChild = el.firstChild) === null || _el$firstChild === void 0 ? void 0 : _el$firstChild.getAttribute('src');
@@ -246,12 +293,14 @@ var serialization = {
246
293
  return;
247
294
  }
248
295
  }
296
+
249
297
  var _ref = el.dataset || {},
250
- ends = _ref.ends,
251
- starts = _ref.starts,
252
- title = _ref.title,
253
- editing = _ref.editing,
254
- url = _ref.url;
298
+ ends = _ref.ends,
299
+ starts = _ref.starts,
300
+ title = _ref.title,
301
+ editing = _ref.editing,
302
+ url = _ref.url;
303
+
255
304
  log('deserialize: ', name);
256
305
  var width = parseInt(el.getAttribute('width'), 10) || null;
257
306
  var height = parseInt(el.getAttribute('height'), 10) || null;
@@ -274,7 +323,9 @@ var serialization = {
274
323
  log('return object: ', out);
275
324
  return out;
276
325
  },
277
- serialize: function serialize(object /*, children*/) {
326
+ serialize: function serialize(object
327
+ /*, children*/
328
+ ) {
278
329
  var typeIndex = types.indexOf(object.type);
279
330
  if (typeIndex < 0) return;
280
331
  var type = types[typeIndex];
@@ -289,12 +340,15 @@ var serialization = {
289
340
  var height = data.get('height');
290
341
  var url = data.get('url');
291
342
  var style = {};
343
+
292
344
  if (width) {
293
345
  style.width = "".concat(width, "px");
294
346
  }
347
+
295
348
  if (height) {
296
349
  style.height = "".concat(height, "px");
297
350
  }
351
+
298
352
  var divProps = {
299
353
  'data-editing': editing,
300
354
  'data-ends': ends,
@@ -302,9 +356,11 @@ var serialization = {
302
356
  'data-title': title,
303
357
  'data-url': url
304
358
  };
359
+
305
360
  var props = _objectSpread(_objectSpread({}, style), {}, {
306
361
  src: src
307
362
  });
363
+
308
364
  if (tag === 'audio') {
309
365
  return /*#__PURE__*/_react["default"].createElement("audio", {
310
366
  controls: "controls"
@@ -313,6 +369,7 @@ var serialization = {
313
369
  src: src
314
370
  }));
315
371
  }
372
+
316
373
  return /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
317
374
  "data-type": type,
318
375
  src: src
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nexport const insertDialog = (props) => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant((d) => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n },\n });\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true,\n },\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n (d) => d.type === type && d.data.get('editing'),\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n },\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\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 if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar hideEdit onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\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 const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\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 let type = el.dataset && el.dataset.type;\n let tag = 'iframe';\n let src;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) {\n if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {\n type = 'audio';\n tag = 'audio';\n src = el.firstChild?.getAttribute('src');\n } else {\n return;\n }\n }\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n tag,\n src: src || el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url,\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const tag = data.get('tag');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\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 const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url,\n };\n const props = {\n ...style,\n src,\n };\n\n if (tag === 'audio') {\n return (\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n );\n }\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nexport const insertDialog = (props) => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant((d) => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n },\n });\n },\n supports: (node) => node.object === 'inline' && node.type === type,\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true,\n },\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n (d) => d.type === type && d.data.get('editing'),\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n },\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\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 if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar hideEdit onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n editing={editing ? 1 : 0}\n {...rest}\n {...style}\n />\n <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />\n </MediaWrapper>\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 const isMedia = types.indexOf(d.type) >= 0;\n\n if (isMedia) {\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 let type = el.dataset && el.dataset.type;\n let tag = 'iframe';\n let src;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) {\n if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {\n type = 'audio';\n tag = 'audio';\n src = el.firstChild?.getAttribute('src');\n } else {\n return;\n }\n }\n\n const { ends, starts, title, editing, url } = el.dataset || {};\n\n log('deserialize: ', name);\n const width = parseInt(el.getAttribute('width'), 10) || null;\n const height = parseInt(el.getAttribute('height'), 10) || null;\n\n const out = {\n object: 'inline',\n type: type,\n isVoid: true,\n data: {\n tag,\n src: src || el.getAttribute('src'),\n editing,\n ends,\n height,\n starts,\n title,\n width,\n url,\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) return;\n\n const type = types[typeIndex];\n\n const { data } = object;\n const editing = data.get('editing');\n const tag = data.get('tag');\n const ends = data.get('ends');\n const src = data.get('src');\n const starts = data.get('starts');\n const title = data.get('title');\n const width = data.get('width');\n const height = data.get('height');\n const url = data.get('url');\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 const divProps = {\n 'data-editing': editing,\n 'data-ends': ends,\n 'data-starts': starts,\n 'data-title': title,\n 'data-url': url,\n };\n const props = {\n ...style,\n src,\n };\n\n if (tag === 'audio') {\n return (\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n );\n }\n\n return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n },\n};\n"],"file":"index.js"}