@pie-lib/editable-html 10.0.0-beta.7 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.json +1 -1
  2. package/CHANGELOG.md +81 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/editor.js +410 -543
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +200 -101
  7. package/lib/index.js.map +1 -1
  8. package/lib/parse-html.js +5 -6
  9. package/lib/parse-html.js.map +1 -1
  10. package/lib/plugins/characters/custom-popper.js +12 -2
  11. package/lib/plugins/characters/custom-popper.js.map +1 -1
  12. package/lib/plugins/characters/index.js +71 -19
  13. package/lib/plugins/characters/index.js.map +1 -1
  14. package/lib/plugins/characters/utils.js.map +1 -1
  15. package/lib/plugins/html/icons/index.js +38 -0
  16. package/lib/plugins/html/icons/index.js.map +1 -0
  17. package/lib/plugins/html/index.js +75 -0
  18. package/lib/plugins/html/index.js.map +1 -0
  19. package/lib/plugins/image/alt-dialog.js +26 -0
  20. package/lib/plugins/image/alt-dialog.js.map +1 -1
  21. package/lib/plugins/image/component.js +124 -90
  22. package/lib/plugins/image/component.js.map +1 -1
  23. package/lib/plugins/image/image-toolbar.js +45 -7
  24. package/lib/plugins/image/image-toolbar.js.map +1 -1
  25. package/lib/plugins/image/index.js +91 -113
  26. package/lib/plugins/image/index.js.map +1 -1
  27. package/lib/plugins/image/insert-image-handler.js +54 -72
  28. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  29. package/lib/plugins/index.js +71 -31
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/plugins/list/index.js +129 -58
  32. package/lib/plugins/list/index.js.map +1 -1
  33. package/lib/plugins/math/index.js +152 -118
  34. package/lib/plugins/math/index.js.map +1 -1
  35. package/lib/plugins/media/index.js +185 -168
  36. package/lib/plugins/media/index.js.map +1 -1
  37. package/lib/plugins/media/media-dialog.js +197 -110
  38. package/lib/plugins/media/media-dialog.js.map +1 -1
  39. package/lib/plugins/media/media-toolbar.js +24 -4
  40. package/lib/plugins/media/media-toolbar.js.map +1 -1
  41. package/lib/plugins/media/media-wrapper.js +65 -23
  42. package/lib/plugins/media/media-wrapper.js.map +1 -1
  43. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  45. package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  47. package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  49. package/lib/plugins/respArea/icons/index.js +18 -1
  50. package/lib/plugins/respArea/icons/index.js.map +1 -1
  51. package/lib/plugins/respArea/index.js +133 -122
  52. package/lib/plugins/respArea/index.js.map +1 -1
  53. package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
  54. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  55. package/lib/plugins/respArea/utils.js +33 -15
  56. package/lib/plugins/respArea/utils.js.map +1 -1
  57. package/lib/plugins/table/icons/index.js +7 -0
  58. package/lib/plugins/table/icons/index.js.map +1 -1
  59. package/lib/plugins/table/index.js +279 -390
  60. package/lib/plugins/table/index.js.map +1 -1
  61. package/lib/plugins/table/table-toolbar.js +47 -14
  62. package/lib/plugins/table/table-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/default-toolbar.js +63 -51
  64. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  65. package/lib/plugins/toolbar/done-button.js +9 -1
  66. package/lib/plugins/toolbar/done-button.js.map +1 -1
  67. package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
  68. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  69. package/lib/plugins/toolbar/index.js +5 -0
  70. package/lib/plugins/toolbar/index.js.map +1 -1
  71. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  72. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  73. package/lib/plugins/toolbar/toolbar.js +261 -225
  74. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  75. package/lib/plugins/utils.js +16 -19
  76. package/lib/plugins/utils.js.map +1 -1
  77. package/lib/serialization.js +70 -11
  78. package/lib/serialization.js.map +1 -1
  79. package/lib/theme.js.map +1 -1
  80. package/package.json +18 -17
  81. package/src/editor.jsx +139 -434
  82. package/src/index.jsx +96 -62
  83. package/src/plugins/characters/index.jsx +17 -12
  84. package/src/plugins/html/icons/index.jsx +19 -0
  85. package/src/plugins/html/index.jsx +68 -0
  86. package/src/plugins/image/component.jsx +38 -60
  87. package/src/plugins/image/index.jsx +42 -95
  88. package/src/plugins/image/insert-image-handler.js +27 -62
  89. package/src/plugins/index.jsx +39 -21
  90. package/src/plugins/list/index.jsx +90 -62
  91. package/src/plugins/math/index.jsx +70 -93
  92. package/src/plugins/media/index.jsx +117 -146
  93. package/src/plugins/media/media-dialog.js +9 -10
  94. package/src/plugins/media/media-wrapper.jsx +27 -29
  95. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
  96. package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
  97. package/src/plugins/respArea/index.jsx +84 -114
  98. package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
  99. package/src/plugins/respArea/utils.jsx +28 -23
  100. package/src/plugins/table/index.jsx +214 -334
  101. package/src/plugins/table/table-toolbar.jsx +4 -3
  102. package/src/plugins/toolbar/default-toolbar.jsx +30 -48
  103. package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
  104. package/src/plugins/toolbar/toolbar.jsx +224 -254
  105. package/src/plugins/utils.js +0 -16
  106. package/src/serialization.jsx +1 -1
  107. package/lib/components.js +0 -92
  108. package/lib/components.js.map +0 -1
  109. package/lib/new-serialization.js +0 -280
  110. package/lib/new-serialization.js.map +0 -1
  111. package/lib/plugins/hotKeys/index.js +0 -60
  112. package/lib/plugins/hotKeys/index.js.map +0 -1
  113. package/lib/test-serializer.js +0 -138
  114. package/lib/test-serializer.js.map +0 -1
  115. package/src/components.js +0 -135
  116. package/src/new-serialization.jsx +0 -310
  117. package/src/plugins/hotKeys/index.js +0 -54
  118. package/src/test-serializer.js +0 -132
@@ -1,57 +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"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+
11
13
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
14
+
12
15
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
16
+
13
17
  var _react = _interopRequireDefault(require("react"));
18
+
14
19
  var _reactDom = _interopRequireDefault(require("react-dom"));
20
+
15
21
  var _slate = require("slate");
16
- var _slateHyperscript = require("slate-hyperscript");
17
- var _slateReact = require("slate-react");
22
+
18
23
  var _Theaters = _interopRequireDefault(require("@material-ui/icons/Theaters"));
24
+
19
25
  var _VolumeUp = _interopRequireDefault(require("@material-ui/icons/VolumeUp"));
20
- var _get = _interopRequireDefault(require("lodash/get"));
21
- var _omit2 = _interopRequireDefault(require("lodash/omit"));
26
+
22
27
  var _debug = _interopRequireDefault(require("debug"));
28
+
23
29
  var _mediaDialog = _interopRequireDefault(require("./media-dialog"));
30
+
24
31
  var _mediaToolbar = _interopRequireDefault(require("./media-toolbar"));
32
+
25
33
  var _mediaWrapper = _interopRequireDefault(require("./media-wrapper"));
34
+
26
35
  var _excluded = ["type", "callback", "opts"],
27
- _excluded2 = ["src", "height", "width", "editing", "tag"];
36
+ _excluded2 = ["src", "height", "width", "editing", "tag"];
37
+
28
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
+
29
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; }
30
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
31
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
32
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
41
+
33
42
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
43
+
34
44
  var removeDialogs = function removeDialogs() {
35
45
  var prevDialogs = document.querySelectorAll('.insert-media-dialog');
36
46
  prevDialogs.forEach(function (s) {
37
47
  return s.remove();
38
48
  });
39
49
  };
50
+
40
51
  var insertDialog = function insertDialog(props) {
41
52
  var newEl = document.createElement('div');
42
53
  var type = props.type,
43
- callback = props.callback,
44
- opts = props.opts,
45
- rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
54
+ callback = props.callback,
55
+ opts = props.opts,
56
+ rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
46
57
  var initialBodyOverflow = document.body.style.overflow;
47
58
  removeDialogs();
48
59
  newEl.className = 'insert-media-dialog';
49
60
  document.body.style.overflow = 'hidden';
61
+
50
62
  var handleClose = function handleClose(val, data) {
51
63
  callback(val, data);
52
64
  newEl.remove();
53
65
  document.body.style.overflow = initialBodyOverflow;
54
66
  };
67
+
55
68
  var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"], (0, _extends2["default"])({}, rest, {
56
69
  uploadSoundSupport: opts.uploadSoundSupport,
57
70
  type: type,
@@ -59,54 +72,25 @@ var insertDialog = function insertDialog(props) {
59
72
  open: true,
60
73
  handleClose: handleClose
61
74
  }));
75
+
62
76
  _reactDom["default"].render(el, newEl);
77
+
63
78
  document.body.appendChild(newEl);
64
79
  };
80
+
65
81
  exports.insertDialog = insertDialog;
66
- var getNodeBy = function getNodeBy(editor, callback) {
67
- var descendants = _slate.Node.descendants(editor, {
68
- reverse: true
69
- });
70
- var _iterator = _createForOfIteratorHelper(descendants),
71
- _step;
72
- try {
73
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
74
- var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
75
- descendant = _step$value[0],
76
- descendantPath = _step$value[1];
77
- if (callback(descendant, descendantPath)) {
78
- return [descendant, descendantPath];
79
- }
80
- }
81
- } catch (err) {
82
- _iterator.e(err);
83
- } finally {
84
- _iterator.f();
85
- }
86
- };
87
- var moveFocusAfterMedia = function moveFocusAfterMedia(editor, node) {
88
- if (!editor || !node) {
89
- return;
90
- }
91
- setTimeout(function () {
92
- _slateReact.ReactEditor.focus(editor);
93
- _slate.Transforms.move(editor, {
94
- distance: 1,
95
- unit: 'offset'
96
- });
97
- }, 0);
98
- };
99
82
  var types = ['audio', 'video'];
83
+
100
84
  function MediaPlugin(type, opts) {
101
85
  var toolbar = {
102
86
  icon: type === 'audio' ? /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null) : /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
103
- onClick: function onClick(editor) {
87
+ onClick: function onClick(value, onChange) {
104
88
  log('[toolbar] onClick');
105
- var inline = {
89
+
90
+ var inline = _slate.Inline.create({
106
91
  type: type,
107
92
  isVoid: true,
108
93
  data: {
109
- newMedia: true,
110
94
  editing: false,
111
95
  ends: undefined,
112
96
  height: undefined,
@@ -115,132 +99,122 @@ function MediaPlugin(type, opts) {
115
99
  src: undefined,
116
100
  url: undefined,
117
101
  width: undefined
118
- },
119
- children: [{
120
- text: ''
121
- }]
122
- };
123
- editor.insertNode(inline);
102
+ }
103
+ });
104
+
105
+ var change = value.change().insertInline(inline);
106
+ onChange(change);
124
107
  insertDialog({
125
108
  type: type,
126
109
  opts: opts,
127
110
  callback: function callback(val, data) {
128
- var nodePath = _slateReact.ReactEditor.findPath(editor, inline);
129
- if (inline) {
111
+ var nodeIsThere = change.value.document.findDescendant(function (d) {
112
+ return d.key === inline.key;
113
+ });
114
+
115
+ if (nodeIsThere) {
130
116
  if (!val) {
131
- editor.apply({
132
- type: 'remove_node',
133
- path: nodePath
117
+ var c = change.removeNodeByKey(inline.key);
118
+ onChange(c, function () {
119
+ return opts.focus();
134
120
  });
135
121
  } else {
136
- editor.apply({
137
- type: 'set_node',
138
- path: nodePath,
139
- properties: {
140
- data: inline.data
141
- },
142
- newProperties: {
143
- data: _objectSpread(_objectSpread({}, data), {}, {
144
- newMedia: false
145
- })
146
- }
122
+ var _c = change.setNodeByKey(inline.key, {
123
+ data: data
124
+ });
125
+
126
+ onChange(_c, function () {
127
+ return opts.focus('beginning', nodeIsThere);
147
128
  });
148
129
  }
130
+ } else {
131
+ opts.focus();
149
132
  }
150
- moveFocusAfterMedia(editor, inline);
151
133
  }
152
134
  });
135
+ },
136
+ supports: function supports(node) {
137
+ return node.object === 'inline' && node.type === type;
153
138
  }
154
139
  };
155
140
  return {
156
141
  name: type,
157
142
  toolbar: toolbar,
158
- rules: function rules(editor) {
159
- var isVoid = editor.isVoid,
160
- isInline = editor.isInline;
161
- editor.isVoid = function (element) {
162
- return ['audio', 'video'].includes(element.type) ? true : isVoid(element);
163
- };
164
- editor.isInline = function (element) {
165
- return ['audio', 'video'].includes(element.type) ? true : isInline(element);
166
- };
167
- return editor;
168
- },
169
- supports: function supports(node) {
170
- return node.type === type;
143
+ deleteNode: function deleteNode(e, node, value, onChange) {
144
+ e.preventDefault();
145
+ var change = value.change().removeNodeByKey(node.key);
146
+ onChange(change);
171
147
  },
172
148
  renderNode: function renderNode(props) {
173
149
  if (props.node.type === type) {
174
150
  var node = props.node,
175
- editor = props.editor;
151
+ key = props.key;
176
152
  var data = node.data;
177
- var _omit = (0, _omit2["default"])(data, ['newMedia', 'urlToUse']),
178
- src = _omit.src,
179
- height = _omit.height,
180
- width = _omit.width,
181
- editing = _omit.editing,
182
- tag = _omit.tag,
183
- rest = (0, _objectWithoutProperties2["default"])(_omit, _excluded2);
184
- var attributes = _objectSpread(_objectSpread({}, rest), props.attributes);
185
- var handleEdit = function handleEdit(event) {
186
- var nodeToEdit = _slateReact.ReactEditor.toSlateNode(editor, event.target);
187
- var nodePath = _slateReact.ReactEditor.findPath(editor, nodeToEdit);
188
- editor.apply({
189
- type: 'set_node',
190
- path: nodePath,
191
- properties: {
192
- data: node.data
193
- },
194
- newProperties: {
195
- data: _objectSpread(_objectSpread({}, data), {}, {
196
- editing: true
197
- })
198
- }
153
+ var jsonData = data.toJSON();
154
+ var src = jsonData.src,
155
+ height = jsonData.height,
156
+ width = jsonData.width,
157
+ editing = jsonData.editing,
158
+ tag = jsonData.tag,
159
+ rest = (0, _objectWithoutProperties2["default"])(jsonData, _excluded2);
160
+
161
+ var handleEdit = function handleEdit() {
162
+ var change = opts.createChange();
163
+ var c = change.setNodeByKey(key, {
164
+ data: _objectSpread(_objectSpread({}, jsonData), {}, {
165
+ editing: true
166
+ })
199
167
  });
200
- insertDialog(_objectSpread(_objectSpread({}, data), {}, {
201
- edit: true,
202
- type: type,
203
- opts: opts,
204
- callback: function callback(val, data) {
205
- var nodePath = _slateReact.ReactEditor.findPath(editor, nodeToEdit);
206
- if (nodePath && val) {
207
- editor.apply({
208
- type: 'set_node',
209
- path: nodePath,
210
- properties: {
211
- data: node.data
212
- },
213
- newProperties: {
214
- data: _objectSpread(_objectSpread({}, data), {}, {
215
- editing: true
216
- })
217
- }
168
+ opts.onChange(c, function () {
169
+ insertDialog(_objectSpread(_objectSpread({}, jsonData), {}, {
170
+ edit: true,
171
+ type: type,
172
+ opts: opts,
173
+ callback: function callback(val, data) {
174
+ var key = node.key;
175
+ var nodeIsThere = change.value.document.findDescendant(function (d) {
176
+ return d.type === type && d.data.get('editing');
218
177
  });
178
+
179
+ if (nodeIsThere && val) {
180
+ var _c2 = change.setNodeByKey(key, {
181
+ data: data,
182
+ editing: false
183
+ });
184
+
185
+ opts.onChange(_c2, function () {
186
+ return opts.focus('beginning', nodeIsThere);
187
+ });
188
+ } else {
189
+ opts.focus();
190
+ }
219
191
  }
220
- }
221
- }));
222
- };
223
- var handleDelete = function handleDelete(event) {
224
- var nodeToEdit = _slateReact.ReactEditor.toSlateNode(editor, event.target);
225
- var nodePath = _slateReact.ReactEditor.findPath(editor, nodeToEdit);
226
- editor.apply({
227
- type: 'remove_node',
228
- path: nodePath
192
+ }));
229
193
  });
230
194
  };
195
+
196
+ var handleDelete = function handleDelete() {
197
+ var change = opts.createChange();
198
+ var c = change.removeNodeByKey(node.key);
199
+ opts.onChange(c);
200
+ };
201
+
231
202
  var style = {};
203
+
232
204
  if (width) {
233
205
  style.width = "".concat(width, "px");
234
206
  }
207
+
235
208
  if (height) {
236
209
  style.height = "".concat(height, "px");
237
210
  }
211
+
238
212
  if (tag === 'audio') {
239
- return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], {
213
+ return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
214
+ editor: true,
240
215
  "data-type": type,
241
- width: style.width,
242
- attributes: attributes
243
- }, /*#__PURE__*/_react["default"].createElement("audio", {
216
+ width: style.width
217
+ }, rest), /*#__PURE__*/_react["default"].createElement("audio", {
244
218
  controls: "controls"
245
219
  }, /*#__PURE__*/_react["default"].createElement("source", {
246
220
  type: "audio/mp3",
@@ -248,15 +222,14 @@ function MediaPlugin(type, opts) {
248
222
  })), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
249
223
  hideEdit: true,
250
224
  onRemove: handleDelete
251
- }), props.children);
225
+ }));
252
226
  }
253
- return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], {
227
+
228
+ return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], (0, _extends2["default"])({
229
+ editor: true,
254
230
  "data-type": type,
255
- width: style.width,
256
- attributes: attributes
257
- }, /*#__PURE__*/_react["default"].createElement("div", {
258
- contentEditable: false
259
- }, /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
231
+ width: style.width
232
+ }, rest), /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
260
233
  frameBorder: "0",
261
234
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
262
235
  allowFullScreen: true,
@@ -265,20 +238,54 @@ function MediaPlugin(type, opts) {
265
238
  }, rest, style)), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
266
239
  onEdit: handleEdit,
267
240
  onRemove: handleDelete
268
- })), props.children);
241
+ }));
269
242
  }
243
+ },
244
+ normalizeNode: function normalizeNode(node) {
245
+ var textNodeMap = {};
246
+ var updateNodesArray = [];
247
+ var index = 0;
248
+ if (node.object !== 'document') return;
249
+ node.findDescendant(function (d) {
250
+ if (d.object === 'text') {
251
+ textNodeMap[index] = d;
252
+ }
253
+
254
+ var isMedia = types.indexOf(d.type) >= 0;
255
+
256
+ if (isMedia) {
257
+ if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
258
+ updateNodesArray.push(textNodeMap[index - 1]);
259
+ }
260
+ }
261
+
262
+ index++;
263
+ });
264
+ if (!updateNodesArray.length) return;
265
+ return function (change) {
266
+ change.withoutNormalization(function () {
267
+ updateNodesArray.forEach(function (n) {
268
+ return change.insertTextByKey(n.key, 0, ' ');
269
+ });
270
+ });
271
+ };
270
272
  }
271
273
  };
272
274
  }
275
+
273
276
  var serialization = {
274
- deserialize: function deserialize(el /*, next*/) {
277
+ deserialize: function deserialize(el
278
+ /*, next*/
279
+ ) {
275
280
  var type = el.dataset && el.dataset.type;
276
281
  var tag = 'iframe';
277
282
  var src;
278
283
  var typeIndex = types.indexOf(type);
284
+
279
285
  if (typeIndex < 0) {
280
286
  if (el instanceof Element && el.tagName.toLowerCase() === 'audio') {
281
287
  var _el$firstChild;
288
+
282
289
  type = 'audio';
283
290
  tag = 'audio';
284
291
  src = (_el$firstChild = el.firstChild) === null || _el$firstChild === void 0 ? void 0 : _el$firstChild.getAttribute('src');
@@ -286,17 +293,21 @@ var serialization = {
286
293
  return;
287
294
  }
288
295
  }
296
+
289
297
  var _ref = el.dataset || {},
290
- ends = _ref.ends,
291
- starts = _ref.starts,
292
- title = _ref.title,
293
- editing = _ref.editing,
294
- url = _ref.url;
298
+ ends = _ref.ends,
299
+ starts = _ref.starts,
300
+ title = _ref.title,
301
+ editing = _ref.editing,
302
+ url = _ref.url;
303
+
295
304
  log('deserialize: ', name);
296
305
  var width = parseInt(el.getAttribute('width'), 10) || null;
297
306
  var height = parseInt(el.getAttribute('height'), 10) || null;
298
- var out = (0, _slateHyperscript.jsx)('element', {
307
+ var out = {
308
+ object: 'inline',
299
309
  type: type,
310
+ isVoid: true,
300
311
  data: {
301
312
  tag: tag,
302
313
  src: src || el.getAttribute('src'),
@@ -308,33 +319,36 @@ var serialization = {
308
319
  width: width,
309
320
  url: url
310
321
  }
311
- });
322
+ };
312
323
  log('return object: ', out);
313
324
  return out;
314
325
  },
315
- serialize: function serialize(object) {
326
+ serialize: function serialize(object
327
+ /*, children*/
328
+ ) {
316
329
  var typeIndex = types.indexOf(object.type);
317
- if (typeIndex < 0) {
318
- return;
319
- }
330
+ if (typeIndex < 0) return;
320
331
  var type = types[typeIndex];
321
- var _ref2 = object.data || {},
322
- editing = _ref2.editing,
323
- tag = _ref2.tag,
324
- ends = _ref2.ends,
325
- src = _ref2.src,
326
- starts = _ref2.starts,
327
- title = _ref2.title,
328
- width = _ref2.width,
329
- height = _ref2.height,
330
- url = _ref2.url;
332
+ var data = object.data;
333
+ var editing = data.get('editing');
334
+ var tag = data.get('tag');
335
+ var ends = data.get('ends');
336
+ var src = data.get('src');
337
+ var starts = data.get('starts');
338
+ var title = data.get('title');
339
+ var width = data.get('width');
340
+ var height = data.get('height');
341
+ var url = data.get('url');
331
342
  var style = {};
343
+
332
344
  if (width) {
333
345
  style.width = "".concat(width, "px");
334
346
  }
347
+
335
348
  if (height) {
336
349
  style.height = "".concat(height, "px");
337
350
  }
351
+
338
352
  var divProps = {
339
353
  'data-editing': editing,
340
354
  'data-ends': ends,
@@ -342,9 +356,11 @@ var serialization = {
342
356
  'data-title': title,
343
357
  'data-url': url
344
358
  };
359
+
345
360
  var props = _objectSpread(_objectSpread({}, style), {}, {
346
361
  src: src
347
362
  });
363
+
348
364
  if (tag === 'audio') {
349
365
  return /*#__PURE__*/_react["default"].createElement("audio", {
350
366
  controls: "controls"
@@ -353,6 +369,7 @@ var serialization = {
353
369
  src: src
354
370
  }));
355
371
  }
372
+
356
373
  return /*#__PURE__*/_react["default"].createElement("iframe", (0, _extends2["default"])({
357
374
  "data-type": type,
358
375
  src: src
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_reactDom","_slate","_slateHyperscript","_slateReact","_Theaters","_VolumeUp","_get","_omit2","_debug","_mediaDialog","_mediaToolbar","_mediaWrapper","_excluded","_excluded2","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","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","log","debug","removeDialogs","prevDialogs","document","querySelectorAll","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","_objectWithoutProperties2","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","_extends2","uploadSoundSupport","disablePortal","open","ReactDOM","render","appendChild","exports","getNodeBy","editor","descendants","SlateNode","reverse","_iterator","_step","_step$value","_slicedToArray2","descendant","descendantPath","moveFocusAfterMedia","node","setTimeout","ReactEditor","focus","Transforms","move","distance","unit","types","MediaPlugin","toolbar","icon","onClick","inline","isVoid","newMedia","editing","ends","undefined","height","title","starts","src","url","width","children","text","insertNode","nodePath","findPath","path","properties","newProperties","rules","isInline","element","includes","supports","renderNode","_omit","omit","tag","attributes","handleEdit","event","nodeToEdit","toSlateNode","edit","handleDelete","concat","controls","hideEdit","onRemove","contentEditable","frameBorder","allow","allowFullScreen","onEdit","serialization","deserialize","dataset","typeIndex","indexOf","Element","tagName","toLowerCase","_el$firstChild","firstChild","getAttribute","_ref","parseInt","out","jsx","serialize","_ref2","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Node as SlateNode, Transforms } from 'slate';\nimport { jsx } from 'slate-hyperscript';\nimport { ReactEditor } from 'slate-react';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\n\nimport debug from 'debug';\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 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\nconst moveFocusAfterMedia = (editor, node) => {\n if (!editor || !node) {\n return;\n }\n\n setTimeout(() => {\n ReactEditor.focus(editor);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n }, 0);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: editor => {\n log('[toolbar] onClick');\n const inline = {\n type: type,\n isVoid: true,\n data: {\n newMedia: true,\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 children: [{ text: '' }],\n };\n\n editor.insertNode(inline);\n\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodePath = ReactEditor.findPath(editor, inline);\n\n if (inline) {\n if (!val) {\n editor.apply({\n type: 'remove_node',\n path: nodePath\n });\n } else {\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: inline.data\n },\n newProperties: {\n data: {\n ...data,\n newMedia: false\n }\n }\n });\n }\n }\n\n moveFocusAfterMedia(editor, inline);\n }\n });\n }\n };\n\n return {\n name: type,\n toolbar,\n rules: editor => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = element => {\n return ['audio', 'video'].includes(element.type) ? true : isVoid(element);\n };\n\n editor.isInline = element => {\n return ['audio', 'video'].includes(element.type) ? true : isInline(element);\n };\n\n return editor;\n },\n supports: node => node.type === type,\n renderNode(props) {\n if (props.node.type === type) {\n const { node, editor } = props;\n const { data } = node;\n const { src, height, width, editing, tag, ...rest } = omit(data, ['newMedia', 'urlToUse']);\n const attributes = { ...rest, ...props.attributes };\n const handleEdit = event => {\n const nodeToEdit = ReactEditor.toSlateNode(editor, event.target);\n const nodePath = ReactEditor.findPath(editor, nodeToEdit);\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: {\n data: {\n ...data,\n editing: true\n }\n }\n });\n\n insertDialog({\n ...data,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const nodePath = ReactEditor.findPath(editor, nodeToEdit);\n\n if (nodePath && val) {\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: {\n data: {\n ...data,\n editing: true\n }\n }\n });\n }\n }\n });\n };\n const handleDelete = event => {\n const nodeToEdit = ReactEditor.toSlateNode(editor, event.target);\n const nodePath = ReactEditor.findPath(editor, nodeToEdit);\n\n editor.apply({\n type: 'remove_node',\n path: nodePath\n });\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 data-type={type} width={style.width} attributes={attributes}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar hideEdit onRemove={handleDelete} />\n {props.children}\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper data-type={type} width={style.width} attributes={attributes}>\n <div contentEditable={false}>\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 </div>\n {props.children}\n </MediaWrapper>\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 = jsx('element', {\n type,\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\n log('return object: ', out);\n return out;\n },\n serialize(object) {\n const typeIndex = types.indexOf(object.type);\n\n if (typeIndex < 0) {\n return;\n }\n\n const type = types[typeIndex];\n\n const { editing, tag, ends, src, starts, title, width, height, url } = object.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 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"}