@pie-lib/editable-html 7.17.4-next.592 → 7.17.4-next.595

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.
@@ -220,7 +220,7 @@ function MediaPlugin(type, opts) {
220
220
  type: "audio/mp3",
221
221
  src: src
222
222
  })), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
223
- onEdit: handleEdit,
223
+ hideEdit: true,
224
224
  onRemove: handleDelete
225
225
  }));
226
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar onEdit={handleEdit} 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"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["log","debug","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","opts","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","el","uploadSoundSupport","ReactDOM","render","appendChild","types","MediaPlugin","toolbar","icon","onClick","value","onChange","inline","Inline","create","isVoid","editing","ends","undefined","height","title","starts","src","url","width","change","insertInline","nodeIsThere","findDescendant","d","key","c","removeNodeByKey","focus","setNodeByKey","supports","node","object","name","deleteNode","e","preventDefault","renderNode","jsonData","toJSON","tag","handleEdit","createChange","edit","get","handleDelete","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","Element","tagName","toLowerCase","firstChild","getAttribute","parseInt","out","serialize","divProps"],"sources":["../../../src/plugins/media/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, opts, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={opts.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nconst types = ['audio', 'video'];\n\nexport default function MediaPlugin(type, opts) {\n const toolbar = {\n icon: type === 'audio' ? <VolumeUpIcon /> : <TheatersIcon />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: type,\n isVoid: true,\n data: {\n editing: false,\n ends: undefined,\n height: undefined,\n title: undefined,\n starts: undefined,\n src: undefined,\n url: undefined,\n width: undefined\n }\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n insertDialog({\n type,\n opts,\n callback: (val, data) => {\n const nodeIsThere = change.value.document.findDescendant(d => d.key === inline.key);\n\n if (nodeIsThere) {\n if (!val) {\n const c = change.removeNodeByKey(inline.key);\n onChange(c, () => opts.focus());\n } else {\n const c = change.setNodeByKey(inline.key, { data });\n onChange(c, () => opts.focus('beginning', nodeIsThere));\n }\n } else {\n opts.focus();\n }\n }\n });\n },\n supports: node => node.object === 'inline' && node.type === type\n };\n\n return {\n name: type,\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n const change = value.change().removeNodeByKey(node.key);\n\n onChange(change);\n },\n renderNode(props) {\n if (props.node.type === type) {\n const { node, key } = props;\n const { data } = node;\n const jsonData = data.toJSON();\n const { src, height, width, editing, tag, ...rest } = jsonData;\n const handleEdit = () => {\n const change = opts.createChange();\n const c = change.setNodeByKey(key, {\n data: {\n ...jsonData,\n editing: true\n }\n });\n\n opts.onChange(c, () => {\n insertDialog({\n ...jsonData,\n edit: true,\n type,\n opts,\n callback: (val, data) => {\n const { key } = node;\n\n const nodeIsThere = change.value.document.findDescendant(\n d => d.type === type && d.data.get('editing')\n );\n\n if (nodeIsThere && val) {\n const c = change.setNodeByKey(key, { data, editing: false });\n opts.onChange(c, () => opts.focus('beginning', nodeIsThere));\n } else {\n opts.focus();\n }\n }\n });\n });\n };\n const handleDelete = () => {\n const change = opts.createChange();\n const c = change.removeNodeByKey(node.key);\n\n opts.onChange(c);\n };\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n if (tag === 'audio') {\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n <MediaToolbar hideEdit onRemove={handleDelete} />\n </MediaWrapper>\n );\n }\n\n return (\n <MediaWrapper editor data-type={type} width={style.width} {...rest}>\n <iframe\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n src={src}\n 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"],"mappings":"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"}
@@ -259,7 +259,7 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
259
259
  var isInsertURL = tabValue === 0;
260
260
 
261
261
  if (!val) {
262
- if (fileUpload.localUrl) {
262
+ if (fileUpload.url) {
263
263
  _this.handleRemoveFile();
264
264
  }
265
265
 
@@ -286,7 +286,7 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
286
286
  } else {
287
287
  handleClose(val, {
288
288
  tag: 'audio',
289
- src: fileUpload.localUrl
289
+ src: fileUpload.url
290
290
  });
291
291
  }
292
292
  });
@@ -301,26 +301,20 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
301
301
 
302
302
  _this.setState({
303
303
  fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
304
- uploadIsLoading: true
304
+ error: null,
305
+ loading: true
305
306
  })
306
307
  });
307
308
 
308
309
  fileChosen = e.target.files[0];
309
310
  reader = new FileReader();
310
311
 
311
- _this.setState({
312
- fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
313
- uploadIsLoading: true
314
- })
315
- });
316
-
317
312
  reader.onload = function () {
318
313
  var dataURL = reader.result;
319
314
 
320
315
  _this.setState({
321
316
  fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
322
- localUrl: dataURL,
323
- uploadIsLoading: false
317
+ url: dataURL
324
318
  })
325
319
  });
326
320
  };
@@ -329,12 +323,31 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
329
323
 
330
324
  _this.props.uploadSoundSupport.add({
331
325
  fileChosen: fileChosen,
332
- done: function done(e) {
333
- console.log('add done: ', e);
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
+ }
334
347
  }
335
348
  });
336
349
 
337
- case 8:
350
+ case 7:
338
351
  case "end":
339
352
  return _context.stop();
340
353
  }
@@ -351,13 +364,24 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
351
364
  while (1) {
352
365
  switch (_context2.prev = _context2.next) {
353
366
  case 0:
354
- _this.props.uploadSoundSupport["delete"](_this.state.fileUpload.localUrl, function (e) {
355
- console.log('delete done', e);
356
- });
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
+
357
380
 
358
381
  _this.setState({
359
382
  fileUpload: _objectSpread(_objectSpread({}, _this.state.fileUpload), {}, {
360
- localUrl: ''
383
+ loading: false,
384
+ url: ''
361
385
  })
362
386
  });
363
387
 
@@ -368,7 +392,7 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
368
392
  }
369
393
  }, _callee2);
370
394
  })));
371
- var src = props.src,
395
+ var _src = props.src,
372
396
  _starts = props.starts,
373
397
  _ends = props.ends,
374
398
  _height = props.height,
@@ -379,15 +403,15 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
379
403
  ends: _ends || 0,
380
404
  url: _url,
381
405
  urlToUse: _urlToUse,
382
- formattedUrl: src,
406
+ formattedUrl: _src,
383
407
  height: _height || 315,
384
408
  invalid: false,
385
409
  starts: _starts || 0,
386
410
  width: _width || 560,
387
411
  tabValue: 0,
388
412
  fileUpload: {
389
- uploadIsLoading: false,
390
- localUrl: '',
413
+ loading: false,
414
+ url: '',
391
415
  error: null
392
416
  }
393
417
  };
@@ -431,7 +455,7 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
431
455
  var isYoutube = matchYoutubeUrl(url);
432
456
  var isInsertURL = tabValue === 0;
433
457
  var isUploadMedia = tabValue === 1;
434
- var submitIsDisabled = isInsertURL ? invalid || url === null || url === undefined : !fileUpload.localUrl;
458
+ var submitIsDisabled = isInsertURL ? invalid || url === null || url === undefined : !fileUpload.url;
435
459
  return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
436
460
  classes: {
437
461
  paper: classes.paper
@@ -523,25 +547,25 @@ var MediaDialog = /*#__PURE__*/function (_React$Component) {
523
547
  onChange: this.changeHandler('ends')
524
548
  })))), isUploadMedia && /*#__PURE__*/_react["default"].createElement("div", {
525
549
  className: classes.uploadInput
526
- }, fileUpload.uploadIsLoading ? /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
527
- variant: "subheading"
528
- }, "Loading...") : /*#__PURE__*/_react["default"].createElement("div", null, fileUpload.localUrl ? /*#__PURE__*/_react["default"].createElement("div", {
550
+ }, /*#__PURE__*/_react["default"].createElement("div", null, fileUpload.url ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
529
551
  className: classes.row
530
552
  }, /*#__PURE__*/_react["default"].createElement("audio", {
531
553
  controls: "controls"
532
554
  }, /*#__PURE__*/_react["default"].createElement("source", {
533
555
  type: "audio/mp3",
534
- src: fileUpload.localUrl
556
+ src: fileUpload.url
535
557
  })), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
536
558
  "aria-label": "delete",
537
559
  className: classes.deleteIcon,
538
560
  onClick: this.handleRemoveFile
539
- }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null))) : /*#__PURE__*/_react["default"].createElement("input", {
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", {
540
564
  accept: "audio/*",
541
565
  className: classes.input,
542
566
  onChange: this.handleUploadFile,
543
567
  type: "file"
544
- }), !!fileUpload.error && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
568
+ }) : null, !!fileUpload.error && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
545
569
  className: classes.error,
546
570
  variant: "caption"
547
571
  }, fileUpload.error))))), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
@@ -1 +1 @@
1
- {"version":3,"file":"media-dialog.js","names":["log","debug","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","localUrl","handleRemoveFile","height","width","tag","preventDefault","uploadIsLoading","fileChosen","files","reader","FileReader","onload","dataURL","result","readAsDataURL","uploadSoundSupport","add","done","console","error","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","withStyles"],"sources":["../../../src/plugins/media/media-dialog.js"],"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 uploadIsLoading: false,\n localUrl: '',\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.localUrl) {\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.localUrl\n });\n }\n };\n\n handleUploadFile = async e => {\n e.preventDefault();\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n uploadIsLoading: true\n }\n });\n\n const fileChosen = e.target.files[0];\n\n const reader = new FileReader();\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n uploadIsLoading: true\n }\n });\n\n reader.onload = () => {\n const dataURL = reader.result;\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n localUrl: dataURL,\n uploadIsLoading: false\n }\n });\n };\n reader.readAsDataURL(fileChosen);\n\n this.props.uploadSoundSupport.add({\n fileChosen,\n done: e => {\n console.log('add done: ', e);\n }\n });\n };\n\n handleRemoveFile = async () => {\n this.props.uploadSoundSupport.delete(this.state.fileUpload.localUrl, e => {\n console.log('delete done', e);\n });\n\n this.setState({\n fileUpload: {\n ...this.state.fileUpload,\n localUrl: ''\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.localUrl;\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 {fileUpload.uploadIsLoading ? (\n <Typography variant=\"subheading\">Loading...</Typography>\n ) : (\n <div>\n {fileUpload.localUrl ? (\n <div className={classes.row}>\n <audio controls=\"controls\">\n <source type=\"audio/mp3\" src={fileUpload.localUrl} />\n </audio>\n <IconButton\n aria-label=\"delete\"\n className={classes.deleteIcon}\n onClick={this.handleRemoveFile}\n >\n <ActionDelete />\n </IconButton>\n </div>\n ) : (\n <input\n accept=\"audio/*\"\n className={classes.input}\n onChange={this.handleUploadFile}\n type=\"file\"\n />\n )}\n {!!fileUpload.error && (\n <Typography className={classes.error} variant=\"caption\">\n {fileUpload.error}\n </Typography>\n )}\n </div>\n )}\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"],"mappings":"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"}
1
+ {"version":3,"file":"media-dialog.js","names":["log","debug","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","withStyles"],"sources":["../../../src/plugins/media/media-dialog.js"],"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"],"mappings":"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"}
@@ -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,"file":"media-toolbar.js","names":["useStyles","withStyles","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"],"sources":["../../../src/plugins/media/media-toolbar.jsx"],"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 onRemove: PropTypes.func\n };\n\n render() {\n const { classes, onEdit, onRemove } = this.props;\n\n return (\n <span className={classes.root}>\n <span className={classes.editContainer} onClick={onEdit}>\n Edit Settings\n </span>\n <span className={classes.removeContainer} onClick={onRemove}>\n Remove\n </span>\n </span>\n );\n }\n}\n\nexport default useStyles(MediaToolbar);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,IAAAC,kBAAA,EAAW,UAAAC,KAAK;EAAA,OAAK;IACrCC,IAAI,EAAE;MACJC,QAAQ,EAAE,UADN;MAEJC,MAAM,EAAE,KAFJ;MAGJC,IAAI,EAAE,CAHF;MAIJC,KAAK,EAAE,MAJH;MAKJC,UAAU,EAAE,OALR;MAMJC,OAAO,EAAE,aANL;MAOJC,OAAO,EAAE,KAPL;MAQJC,SAAS,EAAE;IARP,CAD+B;IAWrCC,aAAa,EAAE;MACbC,MAAM,EAAE,SADK;MAEbC,IAAI,EAAE,CAFO;MAGbC,MAAM,EAAE,aAHK;MAIbC,SAAS,EAAE,OAJE;MAKbC,WAAW,EAAE,WALA;MAMbC,WAAW,EAAE,KANA;MAObC,YAAY,EAAE;IAPD,CAXsB;IAoBrCC,eAAe,EAAE;MACfP,MAAM,EAAE;IADO;EApBoB,CAAL;AAAA,CAAhB,CAAlB;;IAyBMQ,Y;;;;;;;;;;;;WAOJ,kBAAS;MACP,kBAAsC,KAAKC,KAA3C;MAAA,IAAQC,OAAR,eAAQA,OAAR;MAAA,IAAiBC,MAAjB,eAAiBA,MAAjB;MAAA,IAAyBC,QAAzB,eAAyBA,QAAzB;MAEA,oBACE;QAAM,SAAS,EAAEF,OAAO,CAACpB;MAAzB,gBACE;QAAM,SAAS,EAAEoB,OAAO,CAACX,aAAzB;QAAwC,OAAO,EAAEY;MAAjD,mBADF,eAIE;QAAM,SAAS,EAAED,OAAO,CAACH,eAAzB;QAA0C,OAAO,EAAEK;MAAnD,YAJF,CADF;IAUD;;;EApBwBC,iBAAA,CAAMC,S;;iCAA3BN,Y,eACe;EACjBE,OAAO,EAAEK,qBAAA,CAAUC,MADF;EAEjBL,MAAM,EAAEI,qBAAA,CAAUE,IAFD;EAGjBL,QAAQ,EAAEG,qBAAA,CAAUE;AAHH,C;;eAsBN9B,SAAS,CAACqB,YAAD,C"}
1
+ {"version":3,"file":"media-toolbar.js","names":["useStyles","withStyles","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"],"sources":["../../../src/plugins/media/media-toolbar.jsx"],"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"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,SAAS,GAAG,IAAAC,kBAAA,EAAW,UAAAC,KAAK;EAAA,OAAK;IACrCC,IAAI,EAAE;MACJC,QAAQ,EAAE,UADN;MAEJC,MAAM,EAAE,KAFJ;MAGJC,IAAI,EAAE,CAHF;MAIJC,KAAK,EAAE,MAJH;MAKJC,UAAU,EAAE,OALR;MAMJC,OAAO,EAAE,aANL;MAOJC,OAAO,EAAE,KAPL;MAQJC,SAAS,EAAE;IARP,CAD+B;IAWrCC,aAAa,EAAE;MACbC,MAAM,EAAE,SADK;MAEbC,IAAI,EAAE,CAFO;MAGbC,MAAM,EAAE,aAHK;MAIbC,SAAS,EAAE,OAJE;MAKbC,WAAW,EAAE,WALA;MAMbC,WAAW,EAAE,KANA;MAObC,YAAY,EAAE;IAPD,CAXsB;IAoBrCC,eAAe,EAAE;MACfP,MAAM,EAAE;IADO;EApBoB,CAAL;AAAA,CAAhB,CAAlB;;IAyBMQ,Y;;;;;;;;;;;;WAQJ,kBAAS;MACP,kBAAgD,KAAKC,KAArD;MAAA,IAAQC,OAAR,eAAQA,OAAR;MAAA,IAAiBC,QAAjB,eAAiBA,QAAjB;MAAA,IAA2BC,MAA3B,eAA2BA,MAA3B;MAAA,IAAmCC,QAAnC,eAAmCA,QAAnC;MAEA,oBACE;QAAM,SAAS,EAAEH,OAAO,CAACpB;MAAzB,GACGqB,QAAQ,GAAG,IAAH,gBACP;QAAM,SAAS,EAAED,OAAO,CAACX,aAAzB;QAAwC,OAAO,EAAEa;MAAjD,mBAFJ,eAME;QAAM,SAAS,EAAEF,OAAO,CAACH,eAAzB;QAA0C,OAAO,EAAEM;MAAnD,YANF,CADF;IAYD;;;EAvBwBC,iBAAA,CAAMC,S;;iCAA3BP,Y,eACe;EACjBE,OAAO,EAAEM,qBAAA,CAAUC,MADF;EAEjBL,MAAM,EAAEI,qBAAA,CAAUE,IAFD;EAGjBP,QAAQ,EAAEK,qBAAA,CAAUG,IAHH;EAIjBN,QAAQ,EAAEG,qBAAA,CAAUE;AAJH,C;;eAyBN/B,SAAS,CAACqB,YAAD,C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "7.17.4-next.592+3bdcdcda",
3
+ "version": "7.17.4-next.595+8cffe02e",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -47,6 +47,6 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "3bdcdcdab0e0b0556d5a0854e8779804852c5ffa",
50
+ "gitHead": "8cffe02edd6da61b38a6b929cd7d4436b220f09b",
51
51
  "scripts": {}
52
52
  }
@@ -165,7 +165,7 @@ export default function MediaPlugin(type, opts) {
165
165
  <audio controls="controls">
166
166
  <source type="audio/mp3" src={src} />
167
167
  </audio>
168
- <MediaToolbar onEdit={handleEdit} onRemove={handleDelete} />
168
+ <MediaToolbar hideEdit onRemove={handleDelete} />
169
169
  </MediaWrapper>
170
170
  );
171
171
  }
@@ -111,8 +111,8 @@ export class MediaDialog extends React.Component {
111
111
  width: width || 560,
112
112
  tabValue: 0,
113
113
  fileUpload: {
114
- uploadIsLoading: false,
115
- localUrl: '',
114
+ loading: false,
115
+ url: '',
116
116
  error: null
117
117
  }
118
118
  };
@@ -240,7 +240,7 @@ export class MediaDialog extends React.Component {
240
240
  const isInsertURL = tabValue === 0;
241
241
 
242
242
  if (!val) {
243
- if (fileUpload.localUrl) {
243
+ if (fileUpload.url) {
244
244
  this.handleRemoveFile();
245
245
  }
246
246
 
@@ -261,7 +261,7 @@ export class MediaDialog extends React.Component {
261
261
  } else {
262
262
  handleClose(val, {
263
263
  tag: 'audio',
264
- src: fileUpload.localUrl
264
+ src: fileUpload.url
265
265
  });
266
266
  }
267
267
  };
@@ -272,7 +272,8 @@ export class MediaDialog extends React.Component {
272
272
  this.setState({
273
273
  fileUpload: {
274
274
  ...this.state.fileUpload,
275
- uploadIsLoading: true
275
+ error: null,
276
+ loading: true
276
277
  }
277
278
  });
278
279
 
@@ -280,21 +281,13 @@ export class MediaDialog extends React.Component {
280
281
 
281
282
  const reader = new FileReader();
282
283
 
283
- this.setState({
284
- fileUpload: {
285
- ...this.state.fileUpload,
286
- uploadIsLoading: true
287
- }
288
- });
289
-
290
284
  reader.onload = () => {
291
285
  const dataURL = reader.result;
292
286
 
293
287
  this.setState({
294
288
  fileUpload: {
295
289
  ...this.state.fileUpload,
296
- localUrl: dataURL,
297
- uploadIsLoading: false
290
+ url: dataURL
298
291
  }
299
292
  });
300
293
  };
@@ -302,21 +295,51 @@ export class MediaDialog extends React.Component {
302
295
 
303
296
  this.props.uploadSoundSupport.add({
304
297
  fileChosen,
305
- done: e => {
306
- console.log('add done: ', e);
298
+ done: (err, src) => {
299
+ log('done: err:', err);
300
+ if (err) {
301
+ //eslint-disable-next-line
302
+ console.log(err);
303
+ this.setState({
304
+ fileUpload: {
305
+ ...this.state.fileUpload,
306
+ loading: false,
307
+ error: err
308
+ }
309
+ });
310
+ } else {
311
+ this.setState({
312
+ fileUpload: {
313
+ ...this.state.fileUpload,
314
+ loading: false,
315
+ url: src
316
+ }
317
+ });
318
+ }
307
319
  }
308
320
  });
309
321
  };
310
322
 
311
323
  handleRemoveFile = async () => {
312
- this.props.uploadSoundSupport.delete(this.state.fileUpload.localUrl, e => {
313
- console.log('delete done', e);
324
+ this.props.uploadSoundSupport.delete(this.state.fileUpload.url, err => {
325
+ if (err) {
326
+ //eslint-disable-next-line
327
+ console.log(err);
328
+ this.setState({
329
+ fileUpload: {
330
+ ...this.state.fileUpload,
331
+ error: err
332
+ }
333
+ });
334
+ }
314
335
  });
315
336
 
337
+ // we should put it inside uploadSoundSupport.delete but we can leave it here for testing purposes
316
338
  this.setState({
317
339
  fileUpload: {
318
340
  ...this.state.fileUpload,
319
- localUrl: ''
341
+ loading: false,
342
+ url: ''
320
343
  }
321
344
  });
322
345
  };
@@ -340,7 +363,7 @@ export class MediaDialog extends React.Component {
340
363
  const isUploadMedia = tabValue === 1;
341
364
  const submitIsDisabled = isInsertURL
342
365
  ? invalid || url === null || url === undefined
343
- : !fileUpload.localUrl;
366
+ : !fileUpload.url;
344
367
 
345
368
  return (
346
369
  <Dialog
@@ -461,14 +484,12 @@ export class MediaDialog extends React.Component {
461
484
  )}
462
485
  {isUploadMedia && (
463
486
  <div className={classes.uploadInput}>
464
- {fileUpload.uploadIsLoading ? (
465
- <Typography variant="subheading">Loading...</Typography>
466
- ) : (
467
- <div>
468
- {fileUpload.localUrl ? (
487
+ <div>
488
+ {fileUpload.url ? (
489
+ <>
469
490
  <div className={classes.row}>
470
491
  <audio controls="controls">
471
- <source type="audio/mp3" src={fileUpload.localUrl} />
492
+ <source type="audio/mp3" src={fileUpload.url} />
472
493
  </audio>
473
494
  <IconButton
474
495
  aria-label="delete"
@@ -478,21 +499,24 @@ export class MediaDialog extends React.Component {
478
499
  <ActionDelete />
479
500
  </IconButton>
480
501
  </div>
481
- ) : (
482
- <input
483
- accept="audio/*"
484
- className={classes.input}
485
- onChange={this.handleUploadFile}
486
- type="file"
487
- />
488
- )}
489
- {!!fileUpload.error && (
490
- <Typography className={classes.error} variant="caption">
491
- {fileUpload.error}
492
- </Typography>
493
- )}
494
- </div>
495
- )}
502
+ {fileUpload.loading ? (
503
+ <Typography variant="subheading">Loading...</Typography>
504
+ ) : null}
505
+ </>
506
+ ) : !fileUpload.loading ? (
507
+ <input
508
+ accept="audio/*"
509
+ className={classes.input}
510
+ onChange={this.handleUploadFile}
511
+ type="file"
512
+ />
513
+ ) : null}
514
+ {!!fileUpload.error && (
515
+ <Typography className={classes.error} variant="caption">
516
+ {fileUpload.error}
517
+ </Typography>
518
+ )}
519
+ </div>
496
520
  </div>
497
521
  )}
498
522
  </div>
@@ -31,17 +31,20 @@ class MediaToolbar extends React.Component {
31
31
  static propTypes = {
32
32
  classes: PropTypes.object,
33
33
  onEdit: PropTypes.func,
34
+ hideEdit: PropTypes.bool,
34
35
  onRemove: PropTypes.func
35
36
  };
36
37
 
37
38
  render() {
38
- const { classes, onEdit, onRemove } = this.props;
39
+ const { classes, hideEdit, onEdit, onRemove } = this.props;
39
40
 
40
41
  return (
41
42
  <span className={classes.root}>
42
- <span className={classes.editContainer} onClick={onEdit}>
43
- Edit Settings
44
- </span>
43
+ {hideEdit ? null : (
44
+ <span className={classes.editContainer} onClick={onEdit}>
45
+ Edit Settings
46
+ </span>
47
+ )}
45
48
  <span className={classes.removeContainer} onClick={onRemove}>
46
49
  Remove
47
50
  </span>