@pie-lib/editable-html 9.1.6 → 9.2.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.md +23 -0
- package/lib/editor.js +10 -2
- package/lib/editor.js.map +1 -1
- package/lib/plugins/media/index.js +47 -4
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +238 -27
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +3 -1
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +14 -4
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +1 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/package.json +3 -3
- package/src/editor.jsx +10 -2
- package/src/plugins/media/index.jsx +46 -6
- package/src/plugins/media/media-dialog.js +285 -89
- package/src/plugins/media/media-toolbar.jsx +7 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +15 -7
- package/src/plugins/toolbar/index.jsx +1 -0
|
@@ -7,6 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = exports.MediaDialog = void 0;
|
|
9
9
|
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
10
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
15
|
|
|
12
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -27,10 +31,18 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
27
31
|
|
|
28
32
|
var _debug = _interopRequireDefault(require("debug"));
|
|
29
33
|
|
|
34
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
35
|
+
|
|
30
36
|
var _styles = require("@material-ui/core/styles");
|
|
31
37
|
|
|
38
|
+
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
39
|
+
|
|
32
40
|
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
|
|
33
41
|
|
|
42
|
+
var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
|
|
43
|
+
|
|
44
|
+
var _Tab = _interopRequireDefault(require("@material-ui/core/Tab"));
|
|
45
|
+
|
|
34
46
|
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
|
|
35
47
|
|
|
36
48
|
var _DialogContent = _interopRequireDefault(require("@material-ui/core/DialogContent"));
|
|
@@ -39,10 +51,18 @@ var _DialogContentText = _interopRequireDefault(require("@material-ui/core/Dialo
|
|
|
39
51
|
|
|
40
52
|
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
|
|
41
53
|
|
|
42
|
-
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
43
|
-
|
|
44
54
|
var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
|
|
45
55
|
|
|
56
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
57
|
+
|
|
58
|
+
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
|
|
59
|
+
|
|
60
|
+
var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
|
|
61
|
+
|
|
62
|
+
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; }
|
|
63
|
+
|
|
64
|
+
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; }
|
|
65
|
+
|
|
46
66
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
47
67
|
|
|
48
68
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -233,19 +253,28 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
233
253
|
});
|
|
234
254
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleDone", function (val) {
|
|
235
255
|
var handleClose = _this.props.handleClose;
|
|
256
|
+
var _this$state2 = _this.state,
|
|
257
|
+
tabValue = _this$state2.tabValue,
|
|
258
|
+
fileUpload = _this$state2.fileUpload;
|
|
259
|
+
var isInsertURL = tabValue === 0;
|
|
236
260
|
|
|
237
261
|
if (!val) {
|
|
262
|
+
if (fileUpload.url) {
|
|
263
|
+
_this.handleRemoveFile();
|
|
264
|
+
}
|
|
265
|
+
|
|
238
266
|
handleClose(val);
|
|
239
|
-
} else {
|
|
240
|
-
var _this$
|
|
241
|
-
ends = _this$
|
|
242
|
-
height = _this$
|
|
243
|
-
url = _this$
|
|
244
|
-
urlToUse = _this$
|
|
245
|
-
formattedUrl = _this$
|
|
246
|
-
starts = _this$
|
|
247
|
-
width = _this$
|
|
267
|
+
} else if (isInsertURL) {
|
|
268
|
+
var _this$state3 = _this.state,
|
|
269
|
+
ends = _this$state3.ends,
|
|
270
|
+
height = _this$state3.height,
|
|
271
|
+
url = _this$state3.url,
|
|
272
|
+
urlToUse = _this$state3.urlToUse,
|
|
273
|
+
formattedUrl = _this$state3.formattedUrl,
|
|
274
|
+
starts = _this$state3.starts,
|
|
275
|
+
width = _this$state3.width;
|
|
248
276
|
handleClose(val, {
|
|
277
|
+
tag: 'iframe',
|
|
249
278
|
ends: ends,
|
|
250
279
|
height: height,
|
|
251
280
|
starts: starts,
|
|
@@ -254,9 +283,116 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
254
283
|
urlToUse: urlToUse,
|
|
255
284
|
src: formattedUrl
|
|
256
285
|
});
|
|
286
|
+
} else {
|
|
287
|
+
handleClose(val, {
|
|
288
|
+
tag: 'audio',
|
|
289
|
+
src: fileUpload.url
|
|
290
|
+
});
|
|
257
291
|
}
|
|
258
292
|
});
|
|
259
|
-
|
|
293
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleUploadFile", /*#__PURE__*/function () {
|
|
294
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(e) {
|
|
295
|
+
var fileChosen, reader;
|
|
296
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
297
|
+
while (1) {
|
|
298
|
+
switch (_context.prev = _context.next) {
|
|
299
|
+
case 0:
|
|
300
|
+
e.preventDefault();
|
|
301
|
+
|
|
302
|
+
_this.setState({
|
|
303
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
304
|
+
error: null,
|
|
305
|
+
loading: true
|
|
306
|
+
})
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
fileChosen = e.target.files[0];
|
|
310
|
+
reader = new FileReader();
|
|
311
|
+
|
|
312
|
+
reader.onload = function () {
|
|
313
|
+
var dataURL = reader.result;
|
|
314
|
+
|
|
315
|
+
_this.setState({
|
|
316
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
317
|
+
url: dataURL
|
|
318
|
+
})
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
reader.readAsDataURL(fileChosen);
|
|
323
|
+
|
|
324
|
+
_this.props.uploadSoundSupport.add({
|
|
325
|
+
fileChosen: fileChosen,
|
|
326
|
+
done: function done(err, src) {
|
|
327
|
+
log('done: err:', err);
|
|
328
|
+
|
|
329
|
+
if (err) {
|
|
330
|
+
//eslint-disable-next-line
|
|
331
|
+
console.log(err);
|
|
332
|
+
|
|
333
|
+
_this.setState({
|
|
334
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
335
|
+
loading: false,
|
|
336
|
+
error: err
|
|
337
|
+
})
|
|
338
|
+
});
|
|
339
|
+
} else {
|
|
340
|
+
_this.setState({
|
|
341
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
342
|
+
loading: false,
|
|
343
|
+
url: src
|
|
344
|
+
})
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
case 7:
|
|
351
|
+
case "end":
|
|
352
|
+
return _context.stop();
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}, _callee);
|
|
356
|
+
}));
|
|
357
|
+
|
|
358
|
+
return function (_x) {
|
|
359
|
+
return _ref2.apply(this, arguments);
|
|
360
|
+
};
|
|
361
|
+
}());
|
|
362
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleRemoveFile", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
363
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
364
|
+
while (1) {
|
|
365
|
+
switch (_context2.prev = _context2.next) {
|
|
366
|
+
case 0:
|
|
367
|
+
_this.props.uploadSoundSupport["delete"](_this.state.fileUpload.url, function (err) {
|
|
368
|
+
if (err) {
|
|
369
|
+
//eslint-disable-next-line
|
|
370
|
+
console.log(err);
|
|
371
|
+
|
|
372
|
+
_this.setState({
|
|
373
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
374
|
+
error: err
|
|
375
|
+
})
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}); // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
_this.setState({
|
|
382
|
+
fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
|
|
383
|
+
loading: false,
|
|
384
|
+
url: ''
|
|
385
|
+
})
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
case 2:
|
|
389
|
+
case "end":
|
|
390
|
+
return _context2.stop();
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}, _callee2);
|
|
394
|
+
})));
|
|
395
|
+
var _src = props.src,
|
|
260
396
|
_starts = props.starts,
|
|
261
397
|
_ends = props.ends,
|
|
262
398
|
_height = props.height,
|
|
@@ -267,11 +403,17 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
267
403
|
ends: _ends || 0,
|
|
268
404
|
url: _url,
|
|
269
405
|
urlToUse: _urlToUse,
|
|
270
|
-
formattedUrl:
|
|
406
|
+
formattedUrl: _src,
|
|
271
407
|
height: _height || 315,
|
|
272
408
|
invalid: false,
|
|
273
409
|
starts: _starts || 0,
|
|
274
|
-
width: _width || 560
|
|
410
|
+
width: _width || 560,
|
|
411
|
+
tabValue: 0,
|
|
412
|
+
fileUpload: {
|
|
413
|
+
loading: false,
|
|
414
|
+
url: '',
|
|
415
|
+
error: null
|
|
416
|
+
}
|
|
275
417
|
};
|
|
276
418
|
return _this;
|
|
277
419
|
}
|
|
@@ -297,17 +439,23 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
297
439
|
open = _this$props.open,
|
|
298
440
|
disablePortal = _this$props.disablePortal,
|
|
299
441
|
type = _this$props.type,
|
|
300
|
-
edit = _this$props.edit
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
442
|
+
edit = _this$props.edit,
|
|
443
|
+
uploadSoundSupport = _this$props.uploadSoundSupport;
|
|
444
|
+
var _this$state4 = this.state,
|
|
445
|
+
ends = _this$state4.ends,
|
|
446
|
+
height = _this$state4.height,
|
|
447
|
+
invalid = _this$state4.invalid,
|
|
448
|
+
starts = _this$state4.starts,
|
|
449
|
+
width = _this$state4.width,
|
|
450
|
+
url = _this$state4.url,
|
|
451
|
+
formattedUrl = _this$state4.formattedUrl,
|
|
452
|
+
updating = _this$state4.updating,
|
|
453
|
+
tabValue = _this$state4.tabValue,
|
|
454
|
+
fileUpload = _this$state4.fileUpload;
|
|
310
455
|
var isYoutube = matchYoutubeUrl(url);
|
|
456
|
+
var isInsertURL = tabValue === 0;
|
|
457
|
+
var isUploadMedia = tabValue === 1;
|
|
458
|
+
var submitIsDisabled = isInsertURL ? invalid || url === null || url === undefined : !fileUpload.url;
|
|
311
459
|
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
312
460
|
classes: {
|
|
313
461
|
paper: classes.paper
|
|
@@ -320,7 +468,21 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
320
468
|
"aria-labelledby": "form-dialog-title"
|
|
321
469
|
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], {
|
|
322
470
|
id: "form-dialog-title"
|
|
323
|
-
}, "Insert ", typeMap[type]), /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], null, /*#__PURE__*/_react["default"].createElement(
|
|
471
|
+
}, "Insert ", typeMap[type]), /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], null, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
472
|
+
className: classes.row
|
|
473
|
+
}, /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
474
|
+
indicatorColor: "primary",
|
|
475
|
+
value: tabValue,
|
|
476
|
+
onChange: function onChange(event, value) {
|
|
477
|
+
_this2.setState({
|
|
478
|
+
tabValue: value
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
}, /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
|
|
482
|
+
label: type === 'video' ? 'Insert YouTube or Vimeo URL' : 'Insert SoundCloud URL'
|
|
483
|
+
}), uploadSoundSupport !== null && uploadSoundSupport !== void 0 && uploadSoundSupport.add && uploadSoundSupport !== null && uploadSoundSupport !== void 0 && uploadSoundSupport["delete"] && type !== 'video' ? /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
|
|
484
|
+
label: "Upload file"
|
|
485
|
+
}) : null)), isInsertURL && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
|
|
324
486
|
autoFocus: true,
|
|
325
487
|
error: invalid,
|
|
326
488
|
helperText: invalid ? 'Invalid URL' : '',
|
|
@@ -383,13 +545,36 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
|
|
|
383
545
|
placeholder: "Ends",
|
|
384
546
|
value: ends,
|
|
385
547
|
onChange: this.changeHandler('ends')
|
|
386
|
-
})))),
|
|
548
|
+
})))), isUploadMedia && /*#__PURE__*/_react["default"].createElement("div", {
|
|
549
|
+
className: classes.uploadInput
|
|
550
|
+
}, /*#__PURE__*/_react["default"].createElement("div", null, fileUpload.url ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
551
|
+
className: classes.row
|
|
552
|
+
}, /*#__PURE__*/_react["default"].createElement("audio", {
|
|
553
|
+
controls: "controls"
|
|
554
|
+
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
555
|
+
type: "audio/mp3",
|
|
556
|
+
src: fileUpload.url
|
|
557
|
+
})), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
|
|
558
|
+
"aria-label": "delete",
|
|
559
|
+
className: classes.deleteIcon,
|
|
560
|
+
onClick: this.handleRemoveFile
|
|
561
|
+
}, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null))), fileUpload.loading ? /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
562
|
+
variant: "subheading"
|
|
563
|
+
}, "Loading...") : null) : !fileUpload.loading ? /*#__PURE__*/_react["default"].createElement("input", {
|
|
564
|
+
accept: "audio/*",
|
|
565
|
+
className: classes.input,
|
|
566
|
+
onChange: this.handleUploadFile,
|
|
567
|
+
type: "file"
|
|
568
|
+
}) : null, !!fileUpload.error && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
569
|
+
className: classes.error,
|
|
570
|
+
variant: "caption"
|
|
571
|
+
}, fileUpload.error))))), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
387
572
|
onClick: function onClick() {
|
|
388
573
|
return _this2.handleDone(false);
|
|
389
574
|
},
|
|
390
575
|
color: "primary"
|
|
391
576
|
}, "Cancel"), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
392
|
-
disabled:
|
|
577
|
+
disabled: submitIsDisabled,
|
|
393
578
|
onClick: function onClick() {
|
|
394
579
|
return _this2.handleDone(true);
|
|
395
580
|
},
|
|
@@ -407,6 +592,10 @@ exports.MediaDialog = MediaDialog;
|
|
|
407
592
|
edit: _propTypes["default"].bool,
|
|
408
593
|
disablePortal: _propTypes["default"].bool,
|
|
409
594
|
handleClose: _propTypes["default"].func,
|
|
595
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
596
|
+
add: _propTypes["default"].func,
|
|
597
|
+
"delete": _propTypes["default"].func
|
|
598
|
+
}),
|
|
410
599
|
type: _propTypes["default"].string,
|
|
411
600
|
src: _propTypes["default"].string,
|
|
412
601
|
url: _propTypes["default"].string,
|
|
@@ -424,6 +613,28 @@ var styles = function styles() {
|
|
|
424
613
|
},
|
|
425
614
|
properties: {
|
|
426
615
|
padding: 0
|
|
616
|
+
},
|
|
617
|
+
row: {
|
|
618
|
+
display: 'flex',
|
|
619
|
+
flexDirection: 'space-between'
|
|
620
|
+
},
|
|
621
|
+
rowItem: {
|
|
622
|
+
marginRight: '12px',
|
|
623
|
+
cursor: 'pointer'
|
|
624
|
+
},
|
|
625
|
+
active: {
|
|
626
|
+
color: _renderUi.color.primary(),
|
|
627
|
+
borderBottom: "2px solid ".concat(_renderUi.color.primary())
|
|
628
|
+
},
|
|
629
|
+
uploadInput: {
|
|
630
|
+
marginTop: '12px'
|
|
631
|
+
},
|
|
632
|
+
error: {
|
|
633
|
+
marginTop: '12px',
|
|
634
|
+
color: 'red'
|
|
635
|
+
},
|
|
636
|
+
deleteIcon: {
|
|
637
|
+
marginLeft: '12px'
|
|
427
638
|
}
|
|
428
639
|
};
|
|
429
640
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/media/media-dialog.js"],"names":["log","matchYoutubeUrl","url","p","match","matchVimeoUrl","test","matchSoundCloudUrl","regexp","makeApiRequest","Promise","resolve","fetch","then","response","json","d","document","createElement","innerHTML","html","iframe","querySelector","src","err","typeMap","video","audio","MediaDialog","props","state","urlToUse","starts","ends","isYoutube","isVimeo","formattedUrl","params","paramName","paramStart","push","length","join","callback","setState","updating","newState","formatUrl","e","target","value","type","handleStateChange","invalid","regExp","id","replace","val","handleClose","height","width","urlChange","classes","open","disablePortal","edit","paper","handleDone","root","properties","changeHandler","undefined","React","Component","PropTypes","object","isRequired","bool","func","string","number","styles","minWidth","padding"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\n\nconst log = debug('@pie-lib:editable-html:plugins:media:dialog');\n\nconst matchYoutubeUrl = url => {\n if (!url) {\n return false;\n }\n\n const p = /^(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n if (url.match(p)) {\n return url.match(p)[1];\n }\n return false;\n};\n\nconst matchVimeoUrl = url =>\n url &&\n /(http|https)?:\\/\\/(www\\.)?(player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(video\\/)?(\\d+)(?:|\\/\\?)/.test(\n url\n );\n\nconst matchSoundCloudUrl = url => {\n if (!url) {\n return false;\n }\n\n const regexp = /^https?:\\/\\/(soundcloud\\.com|snd\\.sc)\\/(.*)$/;\n return url.match(regexp) && url.match(regexp)[2];\n};\n\nconst makeApiRequest = url => {\n return new Promise(resolve => {\n try {\n fetch(`https://soundcloud.com/oembed?format=json&url=${url}`)\n .then(response => response.json())\n .then(json => {\n const d = document.createElement('div');\n\n d.innerHTML = json.html;\n\n const iframe = d.querySelector('iframe');\n\n resolve(iframe.src);\n })\n .catch(err => {\n resolve('');\n log(err);\n });\n } catch (err) {\n resolve('');\n }\n });\n};\n\nconst typeMap = {\n video: 'Video',\n audio: 'Audio'\n};\n\nexport class MediaDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n open: PropTypes.bool,\n edit: PropTypes.bool,\n disablePortal: PropTypes.bool,\n handleClose: PropTypes.func,\n type: PropTypes.string,\n src: PropTypes.string,\n url: PropTypes.string,\n urlToUse: PropTypes.string,\n starts: PropTypes.number,\n ends: PropTypes.number,\n height: PropTypes.number,\n width: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n\n const { src, starts, ends, height, url, urlToUse, width } = props;\n\n this.state = {\n ends: ends || 0,\n url: url,\n urlToUse: urlToUse,\n formattedUrl: src,\n height: height || 315,\n invalid: false,\n starts: starts || 0,\n width: width || 560\n };\n }\n\n componentDidMount() {\n if (this.props.url) {\n this.urlChange({\n target: {\n value: this.props.url\n }\n });\n }\n }\n\n formatUrl = () => {\n const { url, urlToUse, starts, ends } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isVimeo = matchVimeoUrl(url);\n let formattedUrl = urlToUse;\n\n if ((isYoutube || isVimeo) && urlToUse) {\n const params = [];\n\n let paramName;\n let paramStart;\n\n switch (true) {\n case isVimeo:\n paramName = 't';\n paramStart = '#';\n break;\n case isYoutube:\n paramName = 'start';\n paramStart = '?';\n break;\n default:\n paramName = 'start';\n paramStart = '?';\n }\n\n if (starts) {\n params.push(`${paramName}=${starts}`);\n }\n\n if (ends) {\n params.push(`end=${ends}`);\n }\n\n formattedUrl = `${urlToUse}${params.length ? paramStart : ''}${params.join('&')}`;\n }\n\n const callback = () => this.setState({ formattedUrl, updating: false });\n\n this.setState({ formattedUrl: null, updating: true }, callback);\n };\n\n handleStateChange = newState => this.setState(newState, this.formatUrl);\n\n urlChange = e => {\n const { value } = e.target || {};\n const { type } = this.props;\n\n if (type && type === 'audio') {\n if (matchSoundCloudUrl(value)) {\n makeApiRequest(value)\n .then(urlToUse => {\n this.handleStateChange({\n urlToUse,\n invalid: !urlToUse,\n url: value\n });\n })\n .catch(log);\n\n return;\n }\n } else if (type && type === 'video') {\n if (matchYoutubeUrl(value)) {\n const regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = value.match(regExp);\n const id = match[2];\n const urlToUse = `https://youtube.com/embed/${id}`;\n\n log('is youtube');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n invalid: false\n });\n\n return;\n }\n\n if (matchVimeoUrl(value)) {\n const id = value.replace(/.*vimeo.com\\/(.*)/g, '$1');\n const urlToUse = `https://player.vimeo.com/video/${id}`;\n\n log('is vimeo');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false\n });\n\n return;\n }\n }\n\n this.handleStateChange({\n urlToUse: null,\n url: null,\n invalid: true\n });\n };\n\n changeHandler = type => e => this.handleStateChange({ [type]: e.target.value });\n\n handleDone = val => {\n const { handleClose } = this.props;\n\n if (!val) {\n handleClose(val);\n } else {\n const { ends, height, url, urlToUse, formattedUrl, starts, width } = this.state;\n\n handleClose(val, {\n ends,\n height,\n starts,\n width,\n url,\n urlToUse,\n src: formattedUrl\n });\n }\n };\n\n render() {\n const { classes, open, disablePortal, type, edit } = this.props;\n const { ends, height, invalid, starts, width, url, formattedUrl, updating } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n\n return (\n <Dialog\n classes={{\n paper: classes.paper\n }}\n disablePortal={disablePortal}\n open={open}\n onClose={() => this.handleDone(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">Insert {typeMap[type]}</DialogTitle>\n <DialogContent>\n <DialogContentText>\n {type === 'video' ? 'Insert YouTube or Vimeo URL' : 'Insert SoundCloud URL'}\n </DialogContentText>\n <TextField\n autoFocus\n error={invalid}\n helperText={invalid ? 'Invalid URL' : ''}\n margin=\"dense\"\n id=\"name\"\n label=\"URL\"\n placeholder={`Paste URL of ${type}...`}\n type=\"text\"\n onChange={this.urlChange}\n value={url}\n fullWidth\n />\n {type === 'video' && (\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <DialogContentText>Video Properties</DialogContentText>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"width\"\n label=\"Width\"\n type=\"number\"\n placeholder=\"Width\"\n value={width}\n onChange={this.changeHandler('width')}\n />\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"height\"\n label=\"Height\"\n type=\"number\"\n placeholder=\"Height\"\n value={height}\n onChange={this.changeHandler('height')}\n />\n </DialogContent>\n )}\n {formattedUrl && (\n <iframe\n width={width}\n height={height}\n src={formattedUrl}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n {type === 'video' && (formattedUrl || updating) && !invalid && (\n <React.Fragment>\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"starts\"\n label=\"Starts\"\n type=\"number\"\n placeholder=\"Starts\"\n value={starts}\n onChange={this.changeHandler('starts')}\n />\n {isYoutube && (\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"ends\"\n label=\"Ends\"\n type=\"number\"\n placeholder=\"Ends\"\n value={ends}\n onChange={this.changeHandler('ends')}\n />\n )}\n </DialogContent>\n </React.Fragment>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.handleDone(false)} color=\"primary\">\n Cancel\n </Button>\n <Button\n disabled={invalid || url === null || url === undefined}\n onClick={() => this.handleDone(true)}\n color=\"primary\"\n >\n {edit ? 'Update' : 'Insert'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nconst styles = () => ({\n paper: {\n minWidth: '500px'\n },\n properties: {\n padding: 0\n }\n});\n\nexport default withStyles(styles)(MediaDialog);\n"],"file":"media-dialog.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-dialog.js"],"names":["log","matchYoutubeUrl","url","p","match","matchVimeoUrl","test","matchSoundCloudUrl","regexp","makeApiRequest","Promise","resolve","fetch","then","response","json","d","document","createElement","innerHTML","html","iframe","querySelector","src","err","typeMap","video","audio","MediaDialog","props","state","urlToUse","starts","ends","isYoutube","isVimeo","formattedUrl","params","paramName","paramStart","push","length","join","callback","setState","updating","newState","formatUrl","e","target","value","type","handleStateChange","invalid","regExp","id","replace","val","handleClose","tabValue","fileUpload","isInsertURL","handleRemoveFile","height","width","tag","preventDefault","error","loading","fileChosen","files","reader","FileReader","onload","dataURL","result","readAsDataURL","uploadSoundSupport","add","done","console","urlChange","classes","open","disablePortal","edit","isUploadMedia","submitIsDisabled","undefined","paper","handleDone","row","event","root","properties","changeHandler","uploadInput","deleteIcon","input","handleUploadFile","React","Component","PropTypes","object","isRequired","bool","func","shape","string","number","styles","minWidth","padding","display","flexDirection","rowItem","marginRight","cursor","active","color","primary","borderBottom","marginTop","marginLeft"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { color } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiTabs from '@material-ui/core/Tabs';\nimport MuiTab from '@material-ui/core/Tab';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport ActionDelete from '@material-ui/icons/Delete';\n\nconst log = debug('@pie-lib:editable-html:plugins:media:dialog');\n\nconst matchYoutubeUrl = url => {\n if (!url) {\n return false;\n }\n\n const p = /^(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})(?:\\S+)?$/;\n if (url.match(p)) {\n return url.match(p)[1];\n }\n return false;\n};\n\nconst matchVimeoUrl = url =>\n url &&\n /(http|https)?:\\/\\/(www\\.)?(player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|)(video\\/)?(\\d+)(?:|\\/\\?)/.test(\n url\n );\n\nconst matchSoundCloudUrl = url => {\n if (!url) {\n return false;\n }\n\n const regexp = /^https?:\\/\\/(soundcloud\\.com|snd\\.sc)\\/(.*)$/;\n return url.match(regexp) && url.match(regexp)[2];\n};\n\nconst makeApiRequest = url => {\n return new Promise(resolve => {\n try {\n fetch(`https://soundcloud.com/oembed?format=json&url=${url}`)\n .then(response => response.json())\n .then(json => {\n const d = document.createElement('div');\n\n d.innerHTML = json.html;\n\n const iframe = d.querySelector('iframe');\n\n resolve(iframe.src);\n })\n .catch(err => {\n resolve('');\n log(err);\n });\n } catch (err) {\n resolve('');\n }\n });\n};\n\nconst typeMap = {\n video: 'Video',\n audio: 'Audio'\n};\n\nexport class MediaDialog extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n open: PropTypes.bool,\n edit: PropTypes.bool,\n disablePortal: PropTypes.bool,\n handleClose: PropTypes.func,\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func,\n delete: PropTypes.func\n }),\n type: PropTypes.string,\n src: PropTypes.string,\n url: PropTypes.string,\n urlToUse: PropTypes.string,\n starts: PropTypes.number,\n ends: PropTypes.number,\n height: PropTypes.number,\n width: PropTypes.number\n };\n\n constructor(props) {\n super(props);\n\n const { src, starts, ends, height, url, urlToUse, width } = props;\n\n this.state = {\n ends: ends || 0,\n url: url,\n urlToUse: urlToUse,\n formattedUrl: src,\n height: height || 315,\n invalid: false,\n starts: starts || 0,\n width: width || 560,\n tabValue: 0,\n fileUpload: {\n loading: false,\n url: '',\n error: null\n }\n };\n }\n\n componentDidMount() {\n if (this.props.url) {\n this.urlChange({\n target: {\n value: this.props.url\n }\n });\n }\n }\n\n formatUrl = () => {\n const { url, urlToUse, starts, ends } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isVimeo = matchVimeoUrl(url);\n let formattedUrl = urlToUse;\n\n if ((isYoutube || isVimeo) && urlToUse) {\n const params = [];\n\n let paramName;\n let paramStart;\n\n switch (true) {\n case isVimeo:\n paramName = 't';\n paramStart = '#';\n break;\n case isYoutube:\n paramName = 'start';\n paramStart = '?';\n break;\n default:\n paramName = 'start';\n paramStart = '?';\n }\n\n if (starts) {\n params.push(`${paramName}=${starts}`);\n }\n\n if (ends) {\n params.push(`end=${ends}`);\n }\n\n formattedUrl = `${urlToUse}${params.length ? paramStart : ''}${params.join('&')}`;\n }\n\n const callback = () => this.setState({ formattedUrl, updating: false });\n\n this.setState({ formattedUrl: null, updating: true }, callback);\n };\n\n handleStateChange = newState => this.setState(newState, this.formatUrl);\n\n urlChange = e => {\n const { value } = e.target || {};\n const { type } = this.props;\n\n if (type && type === 'audio') {\n if (matchSoundCloudUrl(value)) {\n makeApiRequest(value)\n .then(urlToUse => {\n this.handleStateChange({\n urlToUse,\n invalid: !urlToUse,\n url: value\n });\n })\n .catch(log);\n\n return;\n }\n } else if (type && type === 'video') {\n if (matchYoutubeUrl(value)) {\n const regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = value.match(regExp);\n const id = match[2];\n const urlToUse = `https://youtube.com/embed/${id}`;\n\n log('is youtube');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n invalid: false\n });\n\n return;\n }\n\n if (matchVimeoUrl(value)) {\n const id = value.replace(/.*vimeo.com\\/(.*)/g, '$1');\n const urlToUse = `https://player.vimeo.com/video/${id}`;\n\n log('is vimeo');\n\n this.handleStateChange({\n urlToUse,\n url: value,\n ends: null,\n invalid: false\n });\n\n return;\n }\n }\n\n this.handleStateChange({\n urlToUse: null,\n url: null,\n invalid: true\n });\n };\n\n changeHandler = type => e => this.handleStateChange({ [type]: e.target.value });\n\n handleDone = val => {\n const { handleClose } = this.props;\n const { tabValue, fileUpload } = this.state;\n const isInsertURL = tabValue === 0;\n\n if (!val) {\n if (fileUpload.url) {\n this.handleRemoveFile();\n }\n\n handleClose(val);\n } else if (isInsertURL) {\n const { ends, height, url, urlToUse, formattedUrl, starts, width } = this.state;\n\n handleClose(val, {\n tag: 'iframe',\n ends,\n height,\n starts,\n width,\n url,\n urlToUse,\n src: formattedUrl\n });\n } else {\n handleClose(val, {\n tag: 'audio',\n src: fileUpload.url\n });\n }\n };\n\n handleUploadFile = async e => {\n e.preventDefault();\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n error: null,\n loading: true\n }\n });\n\n const fileChosen = e.target.files[0];\n\n const reader = new FileReader();\n\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n url: dataURL\n }\n });\n };\n reader.readAsDataURL(fileChosen);\n\n this.props.uploadSoundSupport.add({\n fileChosen,\n done: (err, src) => {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n loading: false,\n error: err\n }\n });\n } else {\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n loading: false,\n url: src\n }\n });\n }\n }\n });\n };\n\n handleRemoveFile = async () => {\n this.props.uploadSoundSupport.delete(this.state.fileUpload.url, err => {\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n error: err\n }\n });\n }\n });\n\n // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n loading: false,\n url: ''\n }\n });\n };\n\n render() {\n const { classes, open, disablePortal, type, edit, uploadSoundSupport } = this.props;\n const {\n ends,\n height,\n invalid,\n starts,\n width,\n url,\n formattedUrl,\n updating,\n tabValue,\n fileUpload\n } = this.state;\n const isYoutube = matchYoutubeUrl(url);\n const isInsertURL = tabValue === 0;\n const isUploadMedia = tabValue === 1;\n const submitIsDisabled = isInsertURL\n ? invalid || url === null || url === undefined\n : !fileUpload.url;\n\n return (\n <Dialog\n classes={{\n paper: classes.paper\n }}\n disablePortal={disablePortal}\n open={open}\n onClose={() => this.handleDone(false)}\n aria-labelledby=\"form-dialog-title\"\n >\n <DialogTitle id=\"form-dialog-title\">Insert {typeMap[type]}</DialogTitle>\n <DialogContent>\n <div>\n <div className={classes.row}>\n <MuiTabs\n indicatorColor=\"primary\"\n value={tabValue}\n onChange={(event, value) => {\n this.setState({ tabValue: value });\n }}\n >\n <MuiTab\n label={type === 'video' ? 'Insert YouTube or Vimeo URL' : 'Insert SoundCloud URL'}\n />\n {uploadSoundSupport?.add && uploadSoundSupport?.delete && type !== 'video' ? (\n <MuiTab label=\"Upload file\" />\n ) : null}\n </MuiTabs>\n </div>\n {isInsertURL && (\n <div>\n <TextField\n autoFocus\n error={invalid}\n helperText={invalid ? 'Invalid URL' : ''}\n margin=\"dense\"\n id=\"name\"\n label=\"URL\"\n placeholder={`Paste URL of ${type}...`}\n type=\"text\"\n onChange={this.urlChange}\n value={url}\n fullWidth\n />\n {type === 'video' && (\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <DialogContentText>Video Properties</DialogContentText>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"width\"\n label=\"Width\"\n type=\"number\"\n placeholder=\"Width\"\n value={width}\n onChange={this.changeHandler('width')}\n />\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"height\"\n label=\"Height\"\n type=\"number\"\n placeholder=\"Height\"\n value={height}\n onChange={this.changeHandler('height')}\n />\n </DialogContent>\n )}\n {formattedUrl && (\n <iframe\n width={width}\n height={height}\n src={formattedUrl}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n {type === 'video' && (formattedUrl || updating) && !invalid && (\n <React.Fragment>\n <DialogContent\n classes={{\n root: classes.properties\n }}\n >\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"starts\"\n label=\"Starts\"\n type=\"number\"\n placeholder=\"Starts\"\n value={starts}\n onChange={this.changeHandler('starts')}\n />\n {isYoutube && (\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"ends\"\n label=\"Ends\"\n type=\"number\"\n placeholder=\"Ends\"\n value={ends}\n onChange={this.changeHandler('ends')}\n />\n )}\n </DialogContent>\n </React.Fragment>\n )}\n </div>\n )}\n {isUploadMedia && (\n <div className={classes.uploadInput}>\n <div>\n {fileUpload.url ? (\n <>\n <div className={classes.row}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={fileUpload.url} />\n </audio>\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteIcon}\n onClick={this.handleRemoveFile}\n >\n <ActionDelete />\n </IconButton>\n </div>\n {fileUpload.loading ? (\n <Typography variant=\"subheading\">Loading...</Typography>\n ) : null}\n </>\n ) : !fileUpload.loading ? (\n <input\n accept=\"audio/*\"\n className={classes.input}\n onChange={this.handleUploadFile}\n type=\"file\"\n />\n ) : null}\n {!!fileUpload.error && (\n <Typography className={classes.error} variant=\"caption\">\n {fileUpload.error}\n </Typography>\n )}\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => this.handleDone(false)} color=\"primary\">\n Cancel\n </Button>\n <Button disabled={submitIsDisabled} onClick={() => this.handleDone(true)} color=\"primary\">\n {edit ? 'Update' : 'Insert'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n\nconst styles = () => ({\n paper: {\n minWidth: '500px'\n },\n properties: {\n padding: 0\n },\n row: {\n display: 'flex',\n flexDirection: 'space-between'\n },\n rowItem: {\n marginRight: '12px',\n cursor: 'pointer'\n },\n active: {\n color: color.primary(),\n borderBottom: `2px solid ${color.primary()}`\n },\n uploadInput: {\n marginTop: '12px'\n },\n error: {\n marginTop: '12px',\n color: 'red'\n },\n deleteIcon: {\n marginLeft: '12px'\n }\n});\n\nexport default withStyles(styles)(MediaDialog);\n"],"file":"media-dialog.js"}
|
|
@@ -71,11 +71,12 @@ var MediaToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
71
71
|
value: function render() {
|
|
72
72
|
var _this$props = this.props,
|
|
73
73
|
classes = _this$props.classes,
|
|
74
|
+
hideEdit = _this$props.hideEdit,
|
|
74
75
|
onEdit = _this$props.onEdit,
|
|
75
76
|
onRemove = _this$props.onRemove;
|
|
76
77
|
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
77
78
|
className: classes.root
|
|
78
|
-
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
79
|
+
}, hideEdit ? null : /*#__PURE__*/_react["default"].createElement("span", {
|
|
79
80
|
className: classes.editContainer,
|
|
80
81
|
onClick: onEdit
|
|
81
82
|
}, "Edit Settings"), /*#__PURE__*/_react["default"].createElement("span", {
|
|
@@ -90,6 +91,7 @@ var MediaToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
90
91
|
(0, _defineProperty2["default"])(MediaToolbar, "propTypes", {
|
|
91
92
|
classes: _propTypes["default"].object,
|
|
92
93
|
onEdit: _propTypes["default"].func,
|
|
94
|
+
hideEdit: _propTypes["default"].bool,
|
|
93
95
|
onRemove: _propTypes["default"].func
|
|
94
96
|
});
|
|
95
97
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/media/media-toolbar.jsx"],"names":["useStyles","theme","root","position","bottom","left","width","background","display","padding","boxShadow","editContainer","cursor","flex","border","textAlign","borderWidth","marginRight","paddingRight","removeContainer","MediaToolbar","props","classes","onEdit","onRemove","React","Component","PropTypes","object","func"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,wBAAW,UAAAC,KAAK;AAAA,SAAK;AACrCC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE,UADN;AAEJC,MAAAA,MAAM,EAAE,KAFJ;AAGJC,MAAAA,IAAI,EAAE,CAHF;AAIJC,MAAAA,KAAK,EAAE,MAJH;AAKJC,MAAAA,UAAU,EAAE,OALR;AAMJC,MAAAA,OAAO,EAAE,aANL;AAOJC,MAAAA,OAAO,EAAE,KAPL;AAQJC,MAAAA,SAAS,EAAE;AARP,KAD+B;AAWrCC,IAAAA,aAAa,EAAE;AACbC,MAAAA,MAAM,EAAE,SADK;AAEbC,MAAAA,IAAI,EAAE,CAFO;AAGbC,MAAAA,MAAM,EAAE,aAHK;AAIbC,MAAAA,SAAS,EAAE,OAJE;AAKbC,MAAAA,WAAW,EAAE,WALA;AAMbC,MAAAA,WAAW,EAAE,KANA;AAObC,MAAAA,YAAY,EAAE;AAPD,KAXsB;AAoBrCC,IAAAA,eAAe,EAAE;AACfP,MAAAA,MAAM,EAAE;AADO;AApBoB,GAAL;AAAA,CAAhB,CAAlB;;IAyBMQ,Y;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/media/media-toolbar.jsx"],"names":["useStyles","theme","root","position","bottom","left","width","background","display","padding","boxShadow","editContainer","cursor","flex","border","textAlign","borderWidth","marginRight","paddingRight","removeContainer","MediaToolbar","props","classes","hideEdit","onEdit","onRemove","React","Component","PropTypes","object","func","bool"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,wBAAW,UAAAC,KAAK;AAAA,SAAK;AACrCC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE,UADN;AAEJC,MAAAA,MAAM,EAAE,KAFJ;AAGJC,MAAAA,IAAI,EAAE,CAHF;AAIJC,MAAAA,KAAK,EAAE,MAJH;AAKJC,MAAAA,UAAU,EAAE,OALR;AAMJC,MAAAA,OAAO,EAAE,aANL;AAOJC,MAAAA,OAAO,EAAE,KAPL;AAQJC,MAAAA,SAAS,EAAE;AARP,KAD+B;AAWrCC,IAAAA,aAAa,EAAE;AACbC,MAAAA,MAAM,EAAE,SADK;AAEbC,MAAAA,IAAI,EAAE,CAFO;AAGbC,MAAAA,MAAM,EAAE,aAHK;AAIbC,MAAAA,SAAS,EAAE,OAJE;AAKbC,MAAAA,WAAW,EAAE,WALA;AAMbC,MAAAA,WAAW,EAAE,KANA;AAObC,MAAAA,YAAY,EAAE;AAPD,KAXsB;AAoBrCC,IAAAA,eAAe,EAAE;AACfP,MAAAA,MAAM,EAAE;AADO;AApBoB,GAAL;AAAA,CAAhB,CAAlB;;IAyBMQ,Y;;;;;;;;;;;;WAQJ,kBAAS;AACP,wBAAgD,KAAKC,KAArD;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,QAAjB,eAAiBA,QAAjB;AAAA,UAA2BC,MAA3B,eAA2BA,MAA3B;AAAA,UAAmCC,QAAnC,eAAmCA,QAAnC;AAEA,0BACE;AAAM,QAAA,SAAS,EAAEH,OAAO,CAACpB;AAAzB,SACGqB,QAAQ,GAAG,IAAH,gBACP;AAAM,QAAA,SAAS,EAAED,OAAO,CAACX,aAAzB;AAAwC,QAAA,OAAO,EAAEa;AAAjD,yBAFJ,eAME;AAAM,QAAA,SAAS,EAAEF,OAAO,CAACH,eAAzB;AAA0C,QAAA,OAAO,EAAEM;AAAnD,kBANF,CADF;AAYD;;;EAvBwBC,kBAAMC,S;;iCAA3BP,Y,eACe;AACjBE,EAAAA,OAAO,EAAEM,sBAAUC,MADF;AAEjBL,EAAAA,MAAM,EAAEI,sBAAUE,IAFD;AAGjBP,EAAAA,QAAQ,EAAEK,sBAAUG,IAHH;AAIjBN,EAAAA,QAAQ,EAAEG,sBAAUE;AAJH,C;;eAyBN9B,SAAS,CAACoB,YAAD,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst useStyles = withStyles(theme => ({\n root: {\n position: 'relative',\n bottom: '5px',\n left: 0,\n width: '100%',\n background: 'white',\n display: 'inline-flex',\n padding: '5px',\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.25)'\n },\n editContainer: {\n cursor: 'pointer',\n flex: 3,\n border: 'solid black',\n textAlign: 'right',\n borderWidth: '0 2px 0 0',\n marginRight: '5px',\n paddingRight: '5px'\n },\n removeContainer: {\n cursor: 'pointer'\n }\n}));\n\nclass MediaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n onEdit: PropTypes.func,\n hideEdit: PropTypes.bool,\n onRemove: PropTypes.func\n };\n\n render() {\n const { classes, hideEdit, onEdit, onRemove } = this.props;\n\n return (\n <span className={classes.root}>\n {hideEdit ? null : (\n <span className={classes.editContainer} onClick={onEdit}>\n Edit Settings\n </span>\n )}\n <span className={classes.removeContainer} onClick={onRemove}>\n Remove\n </span>\n </span>\n );\n }\n}\n\nexport default useStyles(MediaToolbar);\n"],"file":"media-toolbar.js"}
|
|
@@ -69,8 +69,9 @@ var EditorAndToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
69
69
|
}, {
|
|
70
70
|
key: "render",
|
|
71
71
|
value: function render() {
|
|
72
|
-
var
|
|
73
|
-
|
|
72
|
+
var _classNames,
|
|
73
|
+
_this = this,
|
|
74
|
+
_classNames2;
|
|
74
75
|
|
|
75
76
|
var _this$props = this.props,
|
|
76
77
|
classes = _this$props.classes,
|
|
@@ -83,13 +84,14 @@ var EditorAndToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
83
84
|
focusedNode = _this$props.focusedNode,
|
|
84
85
|
autoWidth = _this$props.autoWidth,
|
|
85
86
|
readOnly = _this$props.readOnly,
|
|
87
|
+
disableScrollbar = _this$props.disableScrollbar,
|
|
86
88
|
disableUnderline = _this$props.disableUnderline,
|
|
87
89
|
pluginProps = _this$props.pluginProps,
|
|
88
90
|
toolbarOpts = _this$props.toolbarOpts,
|
|
89
91
|
onDataChange = _this$props.onDataChange,
|
|
90
92
|
toolbarRef = _this$props.toolbarRef;
|
|
91
93
|
var inFocus = value.isFocused || focusedNode !== null && focusedNode !== undefined;
|
|
92
|
-
var holderNames = (0, _classnames["default"])(classes.editorHolder,
|
|
94
|
+
var holderNames = (0, _classnames["default"])(classes.editorHolder, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.editorInFocus, inFocus), (0, _defineProperty2["default"])(_classNames, classes.readOnly, readOnly), (0, _defineProperty2["default"])(_classNames, classes.disabledUnderline, disableUnderline), (0, _defineProperty2["default"])(_classNames, classes.disabledScrollbar, disableScrollbar), _classNames));
|
|
93
95
|
var clonedChildren = children;
|
|
94
96
|
|
|
95
97
|
if (typeof children !== 'string') {
|
|
@@ -102,7 +104,7 @@ var EditorAndToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
102
104
|
|
|
103
105
|
log('[render] inFocus: ', inFocus, 'value.isFocused:', value.isFocused, 'focused node: ', focusedNode);
|
|
104
106
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
105
|
-
className: (0, _classnames["default"])((
|
|
107
|
+
className: (0, _classnames["default"])((_classNames2 = {}, (0, _defineProperty2["default"])(_classNames2, classes.noBorder, toolbarOpts && toolbarOpts.noBorder), (0, _defineProperty2["default"])(_classNames2, classes.error, toolbarOpts && toolbarOpts.error), _classNames2), classes.root)
|
|
106
108
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
107
109
|
className: holderNames
|
|
108
110
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -138,6 +140,7 @@ exports.EditorAndToolbar = EditorAndToolbar;
|
|
|
138
140
|
toolbarRef: _propTypes["default"].func,
|
|
139
141
|
focusedNode: _slatePropTypes["default"].node,
|
|
140
142
|
readOnly: _propTypes["default"].bool,
|
|
143
|
+
disableScrollbar: _propTypes["default"].bool,
|
|
141
144
|
disableUnderline: _propTypes["default"].bool,
|
|
142
145
|
autoWidth: _propTypes["default"].bool,
|
|
143
146
|
classes: _propTypes["default"].object.isRequired,
|
|
@@ -217,6 +220,13 @@ var style = {
|
|
|
217
220
|
display: 'none'
|
|
218
221
|
}
|
|
219
222
|
},
|
|
223
|
+
disabledScrollbar: {
|
|
224
|
+
'&::-webkit-scrollbar': {
|
|
225
|
+
display: 'none'
|
|
226
|
+
},
|
|
227
|
+
scrollbarWidth: 'none',
|
|
228
|
+
'-ms-overflow-style': 'none'
|
|
229
|
+
},
|
|
220
230
|
readOnly: {
|
|
221
231
|
'&::before': {
|
|
222
232
|
background: 'transparent',
|