@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.
- package/CHANGELOG.json +1 -1
- package/CHANGELOG.md +81 -0
- package/LICENSE.md +5 -0
- package/lib/editor.js +410 -543
- package/lib/editor.js.map +1 -1
- package/lib/index.js +200 -101
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +5 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +12 -2
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +71 -19
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/html/icons/index.js +38 -0
- package/lib/plugins/html/icons/index.js.map +1 -0
- package/lib/plugins/html/index.js +75 -0
- package/lib/plugins/html/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +26 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +124 -90
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +45 -7
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +91 -113
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +54 -72
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +71 -31
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +129 -58
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +152 -118
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +185 -168
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +197 -110
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -4
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +65 -23
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +18 -1
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +133 -122
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +33 -15
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +7 -0
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +279 -390
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +47 -14
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +63 -51
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +9 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +261 -225
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +16 -19
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +70 -11
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +18 -17
- package/src/editor.jsx +139 -434
- package/src/index.jsx +96 -62
- package/src/plugins/characters/index.jsx +17 -12
- package/src/plugins/html/icons/index.jsx +19 -0
- package/src/plugins/html/index.jsx +68 -0
- package/src/plugins/image/component.jsx +38 -60
- package/src/plugins/image/index.jsx +42 -95
- package/src/plugins/image/insert-image-handler.js +27 -62
- package/src/plugins/index.jsx +39 -21
- package/src/plugins/list/index.jsx +90 -62
- package/src/plugins/math/index.jsx +70 -93
- package/src/plugins/media/index.jsx +117 -146
- package/src/plugins/media/media-dialog.js +9 -10
- package/src/plugins/media/media-wrapper.jsx +27 -29
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
- package/src/plugins/respArea/index.jsx +84 -114
- package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
- package/src/plugins/respArea/utils.jsx +28 -23
- package/src/plugins/table/index.jsx +214 -334
- package/src/plugins/table/table-toolbar.jsx +4 -3
- package/src/plugins/toolbar/default-toolbar.jsx +30 -48
- package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
- package/src/plugins/toolbar/toolbar.jsx +224 -254
- package/src/plugins/utils.js +0 -16
- package/src/serialization.jsx +1 -1
- package/lib/components.js +0 -92
- package/lib/components.js.map +0 -1
- package/lib/new-serialization.js +0 -280
- package/lib/new-serialization.js.map +0 -1
- package/lib/plugins/hotKeys/index.js +0 -60
- package/lib/plugins/hotKeys/index.js.map +0 -1
- package/lib/test-serializer.js +0 -138
- package/lib/test-serializer.js.map +0 -1
- package/src/components.js +0 -135
- package/src/new-serialization.jsx +0 -310
- package/src/plugins/hotKeys/index.js +0 -54
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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(
|
|
87
|
+
onClick: function onClick(value, onChange) {
|
|
104
88
|
log('[toolbar] onClick');
|
|
105
|
-
|
|
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
|
-
|
|
120
|
-
|
|
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
|
|
129
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
117
|
+
var c = change.removeNodeByKey(inline.key);
|
|
118
|
+
onChange(c, function () {
|
|
119
|
+
return opts.focus();
|
|
134
120
|
});
|
|
135
121
|
} else {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
151
|
+
key = props.key;
|
|
176
152
|
var data = node.data;
|
|
177
|
-
var
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var handleEdit = function handleEdit(
|
|
186
|
-
var
|
|
187
|
-
var
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
type
|
|
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
|
-
|
|
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
|
-
})
|
|
225
|
+
}));
|
|
252
226
|
}
|
|
253
|
-
|
|
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
|
-
|
|
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
|
-
}))
|
|
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
|
|
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
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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 =
|
|
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
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
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"}
|