@pie-lib/editable-html 7.18.0 → 7.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/lib/editor.js +27 -20
  3. package/lib/editor.js.map +1 -1
  4. package/lib/index.js +27 -21
  5. package/lib/index.js.map +1 -1
  6. package/lib/plugins/image/component.js +20 -18
  7. package/lib/plugins/image/component.js.map +1 -1
  8. package/lib/plugins/image/image-toolbar.js +21 -19
  9. package/lib/plugins/image/image-toolbar.js.map +1 -1
  10. package/lib/plugins/image/index.js +7 -7
  11. package/lib/plugins/image/index.js.map +1 -1
  12. package/lib/plugins/image/insert-image-handler.js +2 -4
  13. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  14. package/lib/plugins/index.js +7 -7
  15. package/lib/plugins/index.js.map +1 -1
  16. package/lib/plugins/list/index.js +7 -7
  17. package/lib/plugins/list/index.js.map +1 -1
  18. package/lib/plugins/math/index.js +13 -12
  19. package/lib/plugins/math/index.js.map +1 -1
  20. package/lib/plugins/media/index.js +16 -13
  21. package/lib/plugins/media/index.js.map +1 -1
  22. package/lib/plugins/media/media-dialog.js +27 -23
  23. package/lib/plugins/media/media-dialog.js.map +1 -1
  24. package/lib/plugins/media/media-toolbar.js +19 -15
  25. package/lib/plugins/media/media-toolbar.js.map +1 -1
  26. package/lib/plugins/media/media-wrapper.js +20 -14
  27. package/lib/plugins/media/media-wrapper.js.map +1 -1
  28. package/lib/plugins/respArea/drag-in-the-blank/choice.js +25 -19
  29. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  30. package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -6
  31. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  32. package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -3
  33. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  34. package/lib/plugins/respArea/icons/index.js +7 -7
  35. package/lib/plugins/respArea/icons/index.js.map +1 -1
  36. package/lib/plugins/respArea/index.js +36 -9
  37. package/lib/plugins/respArea/index.js.map +1 -1
  38. package/lib/plugins/respArea/inline-dropdown/index.js +4 -4
  39. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  40. package/lib/plugins/respArea/utils.js +3 -3
  41. package/lib/plugins/respArea/utils.js.map +1 -1
  42. package/lib/plugins/table/icons/index.js +8 -8
  43. package/lib/plugins/table/icons/index.js.map +1 -1
  44. package/lib/plugins/table/index.js +19 -19
  45. package/lib/plugins/table/index.js.map +1 -1
  46. package/lib/plugins/table/table-toolbar.js +26 -24
  47. package/lib/plugins/table/table-toolbar.js.map +1 -1
  48. package/lib/plugins/toolbar/default-toolbar.js +7 -7
  49. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  50. package/lib/plugins/toolbar/done-button.js +3 -3
  51. package/lib/plugins/toolbar/done-button.js.map +1 -1
  52. package/lib/plugins/toolbar/editor-and-toolbar.js +23 -19
  53. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  54. package/lib/plugins/toolbar/index.js +1 -1
  55. package/lib/plugins/toolbar/index.js.map +1 -1
  56. package/lib/plugins/toolbar/toolbar-buttons.js +22 -18
  57. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  58. package/lib/plugins/toolbar/toolbar.js +25 -21
  59. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  60. package/lib/plugins/utils.js +1 -1
  61. package/lib/serialization.js +4 -4
  62. package/lib/serialization.js.map +1 -1
  63. package/package.json +2 -2
  64. package/src/editor.jsx +4 -2
  65. package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -1
  66. package/src/plugins/respArea/index.jsx +28 -2
  67. package/src/plugins/toolbar/toolbar.jsx +1 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.serialization = void 0;
6
+ exports.serialization = exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -45,15 +45,15 @@ var serialization = {
45
45
  if (object.object !== 'block') return;
46
46
 
47
47
  if (object.type === 'list_item') {
48
- return _react["default"].createElement("li", null, children);
48
+ return /*#__PURE__*/_react["default"].createElement("li", null, children);
49
49
  }
50
50
 
51
51
  if (object.type === 'ul_list') {
52
- return _react["default"].createElement("ul", null, children);
52
+ return /*#__PURE__*/_react["default"].createElement("ul", null, children);
53
53
  }
54
54
 
55
55
  if (object.type === 'ol_list') {
56
- return _react["default"].createElement("ol", null, children);
56
+ return /*#__PURE__*/_react["default"].createElement("ol", null, children);
57
57
  }
58
58
  }
59
59
  };
@@ -88,13 +88,13 @@ var _default = function _default(options) {
88
88
 
89
89
  switch (node.type) {
90
90
  case 'ul_list':
91
- return _react["default"].createElement("ul", attributes, children);
91
+ return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
92
92
 
93
93
  case 'ol_list':
94
- return _react["default"].createElement("ol", attributes, children);
94
+ return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
95
95
 
96
96
  case 'list_item':
97
- return _react["default"].createElement("li", attributes, children);
97
+ return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
98
98
  }
99
99
  };
100
100
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","options","icon","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","renderNode","props","node","attributes","toolbar","isMark","isActive","value","utils","isSelectionInList","current","getCurrentList","onClick","onChange","inList","change","call","changes","unwrapList","wrapInList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current.type === type;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","options","icon","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","renderNode","props","node","attributes","toolbar","isMark","isActive","value","utils","isSelectionInList","current","getCurrentList","onClick","onChange","inList","change","call","changes","unwrapList","wrapInList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\n\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach(key => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n // eslint-disable-next-line react/display-name\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current.type === type;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"file":"index.js"}
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.CustomToolbarComp = void 0;
6
7
  exports["default"] = MathPlugin;
7
- exports.serialization = exports.inlineMath = exports.CustomToolbarComp = void 0;
8
+ exports.serialization = exports.inlineMath = void 0;
8
9
 
9
10
  var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
10
11
 
@@ -28,9 +29,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
28
29
 
29
30
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
30
31
 
31
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
32
+ 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; }
32
33
 
33
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
34
+ 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) { _defineProperty(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; }
34
35
 
35
36
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
36
37
 
@@ -49,7 +50,7 @@ function generateAdditionalKeys() {
49
50
  });
50
51
  }
51
52
 
52
- var CustomToolbarComp = _react["default"].memo(function (props) {
53
+ var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
53
54
  var node = props.node,
54
55
  value = props.value,
55
56
  onFocus = props.onFocus,
@@ -69,7 +70,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
69
70
  controlledKeypadMode = _ref3$controlledKeypa === void 0 ? true : _ref3$controlledKeypa;
70
71
 
71
72
  var onDone = function onDone(latex) {
72
- var update = _objectSpread({}, node.data.toObject(), {
73
+ var update = _objectSpread(_objectSpread({}, node.data.toObject()), {}, {
73
74
  latex: latex
74
75
  });
75
76
 
@@ -82,7 +83,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
82
83
  };
83
84
 
84
85
  var onChange = function onChange(latex) {
85
- var update = _objectSpread({}, node.data.toObject(), {
86
+ var update = _objectSpread(_objectSpread({}, node.data.toObject()), {}, {
86
87
  latex: latex
87
88
  });
88
89
 
@@ -94,7 +95,7 @@ var CustomToolbarComp = _react["default"].memo(function (props) {
94
95
  };
95
96
 
96
97
  var latex = node.data.get('latex');
97
- return _react["default"].createElement(_mathToolbar.MathToolbar, {
98
+ return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathToolbar, {
98
99
  autoFocus: true,
99
100
  additionalKeys: generateAdditionalKeys(customKeys),
100
101
  latex: latex,
@@ -142,7 +143,7 @@ function MathPlugin() {
142
143
  return {
143
144
  name: 'math',
144
145
  toolbar: {
145
- icon: _react["default"].createElement(_Functions["default"], null),
146
+ icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
146
147
  onClick: function onClick(value, onChange) {
147
148
  log('[insertMath]');
148
149
  var math = inlineMath();
@@ -180,7 +181,7 @@ function MathPlugin() {
180
181
  renderNode: function renderNode(props) {
181
182
  if (props.node.type === 'math') {
182
183
  log('[renderNode]: data:', props.node.data);
183
- return _react["default"].createElement(_mathToolbar.MathPreview, props);
184
+ return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathPreview, props);
184
185
  }
185
186
  /**
186
187
  * Here for rendering mathml content
@@ -189,7 +190,7 @@ function MathPlugin() {
189
190
 
190
191
  if (props.node.type === 'mathml') {
191
192
  var html = props.node.data.get('html');
192
- return _react["default"].createElement("span", _extends({}, props.attributes, {
193
+ return /*#__PURE__*/_react["default"].createElement("span", _extends({}, props.attributes, {
193
194
  dangerouslySetInnerHTML: {
194
195
  __html: html
195
196
  }
@@ -321,7 +322,7 @@ var serialization = {
321
322
  var wrapper = object.data.get('wrapper');
322
323
  log('[serialize] latex: ', l);
323
324
  var decoded = htmlDecode(lessThanHandling(l));
324
- return _react["default"].createElement("span", {
325
+ return /*#__PURE__*/_react["default"].createElement("span", {
325
326
  "data-latex": "",
326
327
  "data-raw": decoded
327
328
  }, (0, _mathRendering.wrapMath)(decoded, wrapper));
@@ -333,7 +334,7 @@ var serialization = {
333
334
 
334
335
  if (object.type === 'mathml') {
335
336
  var html = object.data.get('html');
336
- return _react["default"].createElement("span", {
337
+ return /*#__PURE__*/_react["default"].createElement("span", {
337
338
  "data-type": "mathml",
338
339
  dangerouslySetInnerHTML: {
339
340
  __html: html
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","value","onFocus","onBlur","onClick","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","toObject","change","setNodeByKey","nextText","document","getNextText","moveFocusTo","moveAnchorTo","onToolbarDone","onChange","onDataChange","get","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","equals","propTypes","SlatePropTypes","isRequired","PropTypes","func","MathPlugin","toolbar","icon","inlineMath","insertInline","supports","object","type","schema","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","Inline","create","isVoid","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","nodeType","hasLatex","hasAttribute","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded"],"mappings":"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","sourcesContent":["import Functions from '@material-ui/icons/Functions';\nimport { Inline } from 'slate';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath } from '@pie-lib/math-rendering';\nimport React from 'react';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport PropTypes from 'prop-types';\n\nimport { BLOCK_TAGS } from '../../serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map(key => ({\n name: key,\n latex: key,\n write: key,\n label: key\n }));\n}\n\nexport const CustomToolbarComp = React.memo(\n props => {\n const { node, value, onFocus, onBlur, onClick } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n props.onToolbarDone(change, false);\n };\n\n const onChange = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n log('call onToolbarChange:', change);\n props.onDataChange(node.key, update);\n };\n\n const latex = node.data.get('latex');\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onChange={onChange}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: {\n math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {}\n } = {}\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = node.equals(nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n }\n);\n\nCustomToolbarComp.propTypes = {\n node: SlatePropTypes.node.isRequired,\n value: SlatePropTypes.value,\n onToolbarDone: PropTypes.func,\n onDataChange: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nexport default function MathPlugin() {\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (value, onChange) => {\n log('[insertMath]');\n const math = inlineMath();\n const change = value.change().insertInline(math);\n onChange(change);\n },\n supports: node => node && node.object === 'inline' && node.type === 'math',\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp\n },\n schema: {\n document: { match: [{ type: 'math' }] }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n },\n\n renderNode: props => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\n\nexport const inlineMath = () =>\n Inline.create({\n object: 'inline',\n type: 'math',\n isVoid: true,\n data: {\n latex: ''\n }\n });\n\nconst htmlDecode = input => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = el => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = input => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/ig)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '&lt;' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild =\n BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n return {\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: newHtml\n }\n };\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType\n }\n };\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const l = object.data.get('latex');\n const wrapper = object.data.get('wrapper');\n log('[serialize] latex: ', l);\n const decoded = htmlDecode(lessThanHandling(l));\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const html = object.data.get('html');\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","value","onFocus","onBlur","onClick","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","toObject","change","setNodeByKey","nextText","document","getNextText","moveFocusTo","moveAnchorTo","onToolbarDone","onChange","onDataChange","get","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","equals","propTypes","SlatePropTypes","isRequired","PropTypes","func","MathPlugin","toolbar","icon","inlineMath","insertInline","supports","object","type","schema","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","Inline","create","isVoid","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","nodeType","hasLatex","hasAttribute","unwrapped","wrapType","nodes","wrapper","serialize","l","decoded"],"mappings":"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","sourcesContent":["import Functions from '@material-ui/icons/Functions';\nimport { Inline } from 'slate';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath } from '@pie-lib/math-rendering';\nimport React from 'react';\nimport debug from 'debug';\nimport SlatePropTypes from 'slate-prop-types';\nimport PropTypes from 'prop-types';\n\nimport { BLOCK_TAGS } from '../../serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map(key => ({\n name: key,\n latex: key,\n write: key,\n label: key\n }));\n}\n\nexport const CustomToolbarComp = React.memo(\n props => {\n const { node, value, onFocus, onBlur, onClick } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n props.onToolbarDone(change, false);\n };\n\n const onChange = latex => {\n const update = {\n ...node.data.toObject(),\n latex\n };\n const change = value.change().setNodeByKey(node.key, { data: update });\n log('call onToolbarChange:', change);\n props.onDataChange(node.key, update);\n };\n\n const latex = node.data.get('latex');\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onChange={onChange}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: {\n math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {}\n } = {}\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = node.equals(nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n }\n);\n\nCustomToolbarComp.propTypes = {\n node: SlatePropTypes.node.isRequired,\n value: SlatePropTypes.value,\n onToolbarDone: PropTypes.func,\n onDataChange: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nexport default function MathPlugin() {\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (value, onChange) => {\n log('[insertMath]');\n const math = inlineMath();\n const change = value.change().insertInline(math);\n onChange(change);\n },\n supports: node => node && node.object === 'inline' && node.type === 'math',\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp\n },\n schema: {\n document: { match: [{ type: 'math' }] }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n },\n\n renderNode: props => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\n\nexport const inlineMath = () =>\n Inline.create({\n object: 'inline',\n type: 'math',\n isVoid: true,\n data: {\n latex: ''\n }\n });\n\nconst htmlDecode = input => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = el => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = input => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/ig)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '&lt;' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild =\n BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n return {\n object: 'inline',\n isVoid: true,\n type: 'mathml',\n data: {\n html: newHtml\n }\n };\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n return {\n object: 'inline',\n type: 'math',\n isVoid: true,\n nodes: [],\n data: {\n latex: unwrapped,\n wrapper: wrapType\n }\n };\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const l = object.data.get('latex');\n const wrapper = object.data.get('wrapper');\n log('[serialize] latex: ', l);\n const decoded = htmlDecode(lessThanHandling(l));\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const html = object.data.get('html');\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n};\n"],"file":"index.js"}
@@ -24,11 +24,14 @@ var _mediaToolbar = _interopRequireDefault(require("./media-toolbar"));
24
24
 
25
25
  var _mediaWrapper = _interopRequireDefault(require("./media-wrapper"));
26
26
 
27
+ var _excluded = ["type", "callback"],
28
+ _excluded2 = ["src", "height", "width", "editing"];
29
+
27
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
28
31
 
29
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
32
+ 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; }
30
33
 
31
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
34
+ 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) { _defineProperty(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; }
32
35
 
33
36
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
34
37
 
@@ -52,7 +55,7 @@ var insertDialog = function insertDialog(props) {
52
55
 
53
56
  var type = props.type,
54
57
  callback = props.callback,
55
- rest = _objectWithoutProperties(props, ["type", "callback"]);
58
+ rest = _objectWithoutProperties(props, _excluded);
56
59
 
57
60
  removeDialogs();
58
61
  newEl.className = 'insert-media-dialog';
@@ -62,7 +65,7 @@ var insertDialog = function insertDialog(props) {
62
65
  newEl.remove();
63
66
  };
64
67
 
65
- var el = _react["default"].createElement(_mediaDialog["default"], _extends({}, rest, {
68
+ var el = /*#__PURE__*/_react["default"].createElement(_mediaDialog["default"], _extends({}, rest, {
66
69
  type: type,
67
70
  disablePortal: true,
68
71
  open: true,
@@ -79,7 +82,7 @@ var types = ['audio', 'video'];
79
82
 
80
83
  function MediaPlugin(type, opts) {
81
84
  var toolbar = {
82
- icon: type === 'audio' ? _react["default"].createElement(_VolumeUp["default"], null) : _react["default"].createElement(_Theaters["default"], null),
85
+ icon: type === 'audio' ? /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null) : /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
83
86
  onClick: function onClick(value, onChange) {
84
87
  log('[toolbar] onClick');
85
88
 
@@ -151,17 +154,17 @@ function MediaPlugin(type, opts) {
151
154
  height = jsonData.height,
152
155
  width = jsonData.width,
153
156
  editing = jsonData.editing,
154
- rest = _objectWithoutProperties(jsonData, ["src", "height", "width", "editing"]);
157
+ rest = _objectWithoutProperties(jsonData, _excluded2);
155
158
 
156
159
  var handleEdit = function handleEdit() {
157
160
  var change = opts.createChange();
158
161
  var c = change.setNodeByKey(key, {
159
- data: _objectSpread({}, jsonData, {
162
+ data: _objectSpread(_objectSpread({}, jsonData), {}, {
160
163
  editing: true
161
164
  })
162
165
  });
163
166
  opts.onChange(c, function () {
164
- insertDialog(_objectSpread({}, jsonData, {
167
+ insertDialog(_objectSpread(_objectSpread({}, jsonData), {}, {
165
168
  edit: true,
166
169
  type: type,
167
170
  callback: function callback(val, data) {
@@ -203,17 +206,17 @@ function MediaPlugin(type, opts) {
203
206
  style.height = "".concat(height, "px");
204
207
  }
205
208
 
206
- return _react["default"].createElement(_mediaWrapper["default"], _extends({
209
+ return /*#__PURE__*/_react["default"].createElement(_mediaWrapper["default"], _extends({
207
210
  editor: true,
208
211
  "data-type": type,
209
212
  width: style.width
210
- }, rest), _react["default"].createElement("iframe", _extends({
213
+ }, rest), /*#__PURE__*/_react["default"].createElement("iframe", _extends({
211
214
  frameBorder: "0",
212
215
  allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
213
216
  allowFullScreen: true,
214
217
  src: src,
215
218
  editing: editing ? 1 : 0
216
- }, rest, style)), _react["default"].createElement(_mediaToolbar["default"], {
219
+ }, rest, style)), /*#__PURE__*/_react["default"].createElement(_mediaToolbar["default"], {
217
220
  onEdit: handleEdit,
218
221
  onRemove: handleDelete
219
222
  }));
@@ -320,11 +323,11 @@ var serialization = {
320
323
  'data-url': url
321
324
  };
322
325
 
323
- var props = _objectSpread({}, style, {
326
+ var props = _objectSpread(_objectSpread({}, style), {}, {
324
327
  src: src
325
328
  });
326
329
 
327
- return _react["default"].createElement("iframe", _extends({
330
+ return /*#__PURE__*/_react["default"].createElement("iframe", _extends({
328
331
  "data-type": type,
329
332
  src: src
330
333
  }, divProps, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","rest","className","handleClose","val","data","el","ReactDOM","render","body","appendChild","types","MediaPlugin","opts","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","handleEdit","createChange","edit","get","handleDelete","style","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","parseInt","getAttribute","out","serialize","divProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport TheatersIcon from '@material-ui/icons/Theaters';\nimport VolumeUpIcon from '@material-ui/icons/VolumeUp';\nimport debug from 'debug';\n\nimport MediaDialog from './media-dialog';\nimport MediaToolbar from './media-toolbar';\nimport MediaWrapper from './media-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach(s => s.remove());\n};\n\nexport const insertDialog = props => {\n const newEl = document.createElement('div');\n const { type, callback, ...rest } = props;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n };\n\n const el = (\n <MediaDialog {...rest} type={type} disablePortal={true} open={true} handleClose={handleClose} />\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 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, ...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 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 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 const type = el.dataset && el.dataset.type;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) return;\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 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 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 return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/plugins/media/index.jsx"],"names":["log","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","props","newEl","createElement","type","callback","rest","className","handleClose","val","data","el","ReactDOM","render","body","appendChild","types","MediaPlugin","opts","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","handleEdit","createChange","edit","get","handleDelete","style","normalizeNode","textNodeMap","updateNodesArray","index","isMedia","indexOf","text","push","length","withoutNormalization","n","insertTextByKey","serialization","deserialize","dataset","typeIndex","parseInt","getAttribute","out","serialize","divProps"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,sCAAN,CAAZ;;AAEA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B,MAAMC,WAAW,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,sBAA1B,CAApB;AAEAF,EAAAA,WAAW,CAACG,OAAZ,CAAoB,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACC,MAAF,EAAJ;AAAA,GAArB;AACD,CAJD;;AAMO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAAC,KAAK,EAAI;AACnC,MAAMC,KAAK,GAAGP,QAAQ,CAACQ,aAAT,CAAuB,KAAvB,CAAd;;AACA,MAAQC,IAAR,GAAoCH,KAApC,CAAQG,IAAR;AAAA,MAAcC,QAAd,GAAoCJ,KAApC,CAAcI,QAAd;AAAA,MAA2BC,IAA3B,4BAAoCL,KAApC;;AAEAR,EAAAA,aAAa;AAEbS,EAAAA,KAAK,CAACK,SAAN,GAAkB,qBAAlB;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD,EAAMC,IAAN,EAAe;AACjCL,IAAAA,QAAQ,CAACI,GAAD,EAAMC,IAAN,CAAR;AACAR,IAAAA,KAAK,CAACH,MAAN;AACD,GAHD;;AAKA,MAAMY,EAAE,gBACN,gCAAC,uBAAD,eAAiBL,IAAjB;AAAuB,IAAA,IAAI,EAAEF,IAA7B;AAAmC,IAAA,aAAa,EAAE,IAAlD;AAAwD,IAAA,IAAI,EAAE,IAA9D;AAAoE,IAAA,WAAW,EAAEI;AAAjF,KADF;;AAIAI,uBAASC,MAAT,CAAgBF,EAAhB,EAAoBT,KAApB;;AAEAP,EAAAA,QAAQ,CAACmB,IAAT,CAAcC,WAAd,CAA0Bb,KAA1B;AACD,CApBM;;;AAsBP,IAAMc,KAAK,GAAG,CAAC,OAAD,EAAU,OAAV,CAAd;;AAEe,SAASC,WAAT,CAAqBb,IAArB,EAA2Bc,IAA3B,EAAiC;AAC9C,MAAMC,OAAO,GAAG;AACdC,IAAAA,IAAI,EAAEhB,IAAI,KAAK,OAAT,gBAAmB,gCAAC,oBAAD,OAAnB,gBAAsC,gCAAC,oBAAD,OAD9B;AAEdiB,IAAAA,OAAO,EAAE,iBAACC,KAAD,EAAQC,QAAR,EAAqB;AAC5B/B,MAAAA,GAAG,CAAC,mBAAD,CAAH;;AACA,UAAMgC,MAAM,GAAGC,cAAOC,MAAP,CAAc;AAC3BtB,QAAAA,IAAI,EAAEA,IADqB;AAE3BuB,QAAAA,MAAM,EAAE,IAFmB;AAG3BjB,QAAAA,IAAI,EAAE;AACJkB,UAAAA,OAAO,EAAE,KADL;AAEJC,UAAAA,IAAI,EAAEC,SAFF;AAGJC,UAAAA,MAAM,EAAED,SAHJ;AAIJE,UAAAA,KAAK,EAAEF,SAJH;AAKJG,UAAAA,MAAM,EAAEH,SALJ;AAMJI,UAAAA,GAAG,EAAEJ,SAND;AAOJK,UAAAA,GAAG,EAAEL,SAPD;AAQJM,UAAAA,KAAK,EAAEN;AARH;AAHqB,OAAd,CAAf;;AAeA,UAAMO,MAAM,GAAGf,KAAK,CAACe,MAAN,GAAeC,YAAf,CAA4Bd,MAA5B,CAAf;AACAD,MAAAA,QAAQ,CAACc,MAAD,CAAR;AACArC,MAAAA,YAAY,CAAC;AACXI,QAAAA,IAAI,EAAJA,IADW;AAEXC,QAAAA,QAAQ,EAAE,kBAACI,GAAD,EAAMC,IAAN,EAAe;AACvB,cAAM6B,WAAW,GAAGF,MAAM,CAACf,KAAP,CAAa3B,QAAb,CAAsB6C,cAAtB,CAAqC,UAAAC,CAAC;AAAA,mBAAIA,CAAC,CAACC,GAAF,KAAUlB,MAAM,CAACkB,GAArB;AAAA,WAAtC,CAApB;;AAEA,cAAIH,WAAJ,EAAiB;AACf,gBAAI,CAAC9B,GAAL,EAAU;AACR,kBAAMkC,CAAC,GAAGN,MAAM,CAACO,eAAP,CAAuBpB,MAAM,CAACkB,GAA9B,CAAV;AACAnB,cAAAA,QAAQ,CAACoB,CAAD,EAAI;AAAA,uBAAMzB,IAAI,CAAC2B,KAAL,EAAN;AAAA,eAAJ,CAAR;AACD,aAHD,MAGO;AACL,kBAAMF,EAAC,GAAGN,MAAM,CAACS,YAAP,CAAoBtB,MAAM,CAACkB,GAA3B,EAAgC;AAAEhC,gBAAAA,IAAI,EAAJA;AAAF,eAAhC,CAAV;;AACAa,cAAAA,QAAQ,CAACoB,EAAD,EAAI;AAAA,uBAAMzB,IAAI,CAAC2B,KAAL,CAAW,WAAX,EAAwBN,WAAxB,CAAN;AAAA,eAAJ,CAAR;AACD;AACF,WARD,MAQO;AACLrB,YAAAA,IAAI,CAAC2B,KAAL;AACD;AACF;AAhBU,OAAD,CAAZ;AAkBD,KAvCa;AAwCdE,IAAAA,QAAQ,EAAE,kBAAAC,IAAI;AAAA,aAAIA,IAAI,CAACC,MAAL,KAAgB,QAAhB,IAA4BD,IAAI,CAAC5C,IAAL,KAAcA,IAA9C;AAAA;AAxCA,GAAhB;AA2CA,SAAO;AACL8C,IAAAA,IAAI,EAAE9C,IADD;AAELe,IAAAA,OAAO,EAAPA,OAFK;AAGLgC,IAAAA,UAAU,EAAE,oBAACC,CAAD,EAAIJ,IAAJ,EAAU1B,KAAV,EAAiBC,QAAjB,EAA8B;AACxC6B,MAAAA,CAAC,CAACC,cAAF;AACA,UAAMhB,MAAM,GAAGf,KAAK,CAACe,MAAN,GAAeO,eAAf,CAA+BI,IAAI,CAACN,GAApC,CAAf;AAEAnB,MAAAA,QAAQ,CAACc,MAAD,CAAR;AACD,KARI;AASLiB,IAAAA,UATK,sBASMrD,KATN,EASa;AAChB,UAAIA,KAAK,CAAC+C,IAAN,CAAW5C,IAAX,KAAoBA,IAAxB,EAA8B;AAC5B,YAAQ4C,IAAR,GAAsB/C,KAAtB,CAAQ+C,IAAR;AAAA,YAAcN,GAAd,GAAsBzC,KAAtB,CAAcyC,GAAd;AACA,YAAQhC,IAAR,GAAiBsC,IAAjB,CAAQtC,IAAR;AACA,YAAM6C,QAAQ,GAAG7C,IAAI,CAAC8C,MAAL,EAAjB;;AACA,YAAQtB,GAAR,GAAiDqB,QAAjD,CAAQrB,GAAR;AAAA,YAAaH,MAAb,GAAiDwB,QAAjD,CAAaxB,MAAb;AAAA,YAAqBK,KAArB,GAAiDmB,QAAjD,CAAqBnB,KAArB;AAAA,YAA4BR,OAA5B,GAAiD2B,QAAjD,CAA4B3B,OAA5B;AAAA,YAAwCtB,IAAxC,4BAAiDiD,QAAjD;;AACA,YAAME,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,cAAMpB,MAAM,GAAGnB,IAAI,CAACwC,YAAL,EAAf;AACA,cAAMf,CAAC,GAAGN,MAAM,CAACS,YAAP,CAAoBJ,GAApB,EAAyB;AACjChC,YAAAA,IAAI,kCACC6C,QADD;AAEF3B,cAAAA,OAAO,EAAE;AAFP;AAD6B,WAAzB,CAAV;AAOAV,UAAAA,IAAI,CAACK,QAAL,CAAcoB,CAAd,EAAiB,YAAM;AACrB3C,YAAAA,YAAY,iCACPuD,QADO;AAEVI,cAAAA,IAAI,EAAE,IAFI;AAGVvD,cAAAA,IAAI,EAAJA,IAHU;AAIVC,cAAAA,QAAQ,EAAE,kBAACI,GAAD,EAAMC,IAAN,EAAe;AACvB,oBAAQgC,GAAR,GAAgBM,IAAhB,CAAQN,GAAR;AAEA,oBAAMH,WAAW,GAAGF,MAAM,CAACf,KAAP,CAAa3B,QAAb,CAAsB6C,cAAtB,CAClB,UAAAC,CAAC;AAAA,yBAAIA,CAAC,CAACrC,IAAF,KAAWA,IAAX,IAAmBqC,CAAC,CAAC/B,IAAF,CAAOkD,GAAP,CAAW,SAAX,CAAvB;AAAA,iBADiB,CAApB;;AAIA,oBAAIrB,WAAW,IAAI9B,GAAnB,EAAwB;AACtB,sBAAMkC,GAAC,GAAGN,MAAM,CAACS,YAAP,CAAoBJ,GAApB,EAAyB;AAAEhC,oBAAAA,IAAI,EAAJA,IAAF;AAAQkB,oBAAAA,OAAO,EAAE;AAAjB,mBAAzB,CAAV;;AACAV,kBAAAA,IAAI,CAACK,QAAL,CAAcoB,GAAd,EAAiB;AAAA,2BAAMzB,IAAI,CAAC2B,KAAL,CAAW,WAAX,EAAwBN,WAAxB,CAAN;AAAA,mBAAjB;AACD,iBAHD,MAGO;AACLrB,kBAAAA,IAAI,CAAC2B,KAAL;AACD;AACF;AAjBS,eAAZ;AAmBD,WApBD;AAqBD,SA9BD;;AA+BA,YAAMgB,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,cAAMxB,MAAM,GAAGnB,IAAI,CAACwC,YAAL,EAAf;AACA,cAAMf,CAAC,GAAGN,MAAM,CAACO,eAAP,CAAuBI,IAAI,CAACN,GAA5B,CAAV;AAEAxB,UAAAA,IAAI,CAACK,QAAL,CAAcoB,CAAd;AACD,SALD;;AAMA,YAAMmB,KAAK,GAAG,EAAd;;AAEA,YAAI1B,KAAJ,EAAW;AACT0B,UAAAA,KAAK,CAAC1B,KAAN,aAAiBA,KAAjB;AACD;;AAED,YAAIL,MAAJ,EAAY;AACV+B,UAAAA,KAAK,CAAC/B,MAAN,aAAkBA,MAAlB;AACD;;AAED,4BACE,gCAAC,wBAAD;AAAc,UAAA,MAAM,MAApB;AAAqB,uBAAW3B,IAAhC;AAAsC,UAAA,KAAK,EAAE0D,KAAK,CAAC1B;AAAnD,WAA8D9B,IAA9D,gBACE;AACE,UAAA,WAAW,EAAC,GADd;AAEE,UAAA,KAAK,EAAC,0FAFR;AAGE,UAAA,eAAe,MAHjB;AAIE,UAAA,GAAG,EAAE4B,GAJP;AAKE,UAAA,OAAO,EAAEN,OAAO,GAAG,CAAH,GAAO;AALzB,WAMMtB,IANN,EAOMwD,KAPN,EADF,eAUE,gCAAC,wBAAD;AAAc,UAAA,MAAM,EAAEL,UAAtB;AAAkC,UAAA,QAAQ,EAAEI;AAA5C,UAVF,CADF;AAcD;AACF,KA7EI;AA8ELE,IAAAA,aAAa,EAAE,uBAAAf,IAAI,EAAI;AACrB,UAAMgB,WAAW,GAAG,EAApB;AACA,UAAMC,gBAAgB,GAAG,EAAzB;AACA,UAAIC,KAAK,GAAG,CAAZ;AAEA,UAAIlB,IAAI,CAACC,MAAL,KAAgB,UAApB,EAAgC;AAEhCD,MAAAA,IAAI,CAACR,cAAL,CAAoB,UAAAC,CAAC,EAAI;AACvB,YAAIA,CAAC,CAACQ,MAAF,KAAa,MAAjB,EAAyB;AACvBe,UAAAA,WAAW,CAACE,KAAD,CAAX,GAAqBzB,CAArB;AACD;;AAED,YAAM0B,OAAO,GAAGnD,KAAK,CAACoD,OAAN,CAAc3B,CAAC,CAACrC,IAAhB,KAAyB,CAAzC;;AAEA,YAAI+D,OAAJ,EAAa;AACX,cAAID,KAAK,GAAG,CAAR,IAAaF,WAAW,CAACE,KAAK,GAAG,CAAT,CAAxB,IAAuCF,WAAW,CAACE,KAAK,GAAG,CAAT,CAAX,CAAuBG,IAAvB,KAAgC,EAA3E,EAA+E;AAC7EJ,YAAAA,gBAAgB,CAACK,IAAjB,CAAsBN,WAAW,CAACE,KAAK,GAAG,CAAT,CAAjC;AACD;AACF;;AAEDA,QAAAA,KAAK;AACN,OAdD;AAgBA,UAAI,CAACD,gBAAgB,CAACM,MAAtB,EAA8B;AAE9B,aAAO,UAAAlC,MAAM,EAAI;AACfA,QAAAA,MAAM,CAACmC,oBAAP,CAA4B,YAAM;AAChCP,UAAAA,gBAAgB,CAACpE,OAAjB,CAAyB,UAAA4E,CAAC;AAAA,mBAAIpC,MAAM,CAACqC,eAAP,CAAuBD,CAAC,CAAC/B,GAAzB,EAA8B,CAA9B,EAAiC,GAAjC,CAAJ;AAAA,WAA1B;AACD,SAFD;AAGD,OAJD;AAKD;AA5GI,GAAP;AA8GD;;AAEM,IAAMiC,aAAa,GAAG;AAC3BC,EAAAA,WAD2B,uBACfjE;AAAG;AADY,IACA;AACzB,QAAMP,IAAI,GAAGO,EAAE,CAACkE,OAAH,IAAclE,EAAE,CAACkE,OAAH,CAAWzE,IAAtC;AACA,QAAM0E,SAAS,GAAG9D,KAAK,CAACoD,OAAN,CAAchE,IAAd,CAAlB;AAEA,QAAI0E,SAAS,GAAG,CAAhB,EAAmB;;AAEnB,eAA8CnE,EAAE,CAACkE,OAAH,IAAc,EAA5D;AAAA,QAAQhD,IAAR,QAAQA,IAAR;AAAA,QAAcI,MAAd,QAAcA,MAAd;AAAA,QAAsBD,KAAtB,QAAsBA,KAAtB;AAAA,QAA6BJ,OAA7B,QAA6BA,OAA7B;AAAA,QAAsCO,GAAtC,QAAsCA,GAAtC;;AAEA3C,IAAAA,GAAG,CAAC,eAAD,EAAkB0D,IAAlB,CAAH;AACA,QAAMd,KAAK,GAAG2C,QAAQ,CAACpE,EAAE,CAACqE,YAAH,CAAgB,OAAhB,CAAD,EAA2B,EAA3B,CAAR,IAA0C,IAAxD;AACA,QAAMjD,MAAM,GAAGgD,QAAQ,CAACpE,EAAE,CAACqE,YAAH,CAAgB,QAAhB,CAAD,EAA4B,EAA5B,CAAR,IAA2C,IAA1D;AAEA,QAAMC,GAAG,GAAG;AACVhC,MAAAA,MAAM,EAAE,QADE;AAEV7C,MAAAA,IAAI,EAAEA,IAFI;AAGVuB,MAAAA,MAAM,EAAE,IAHE;AAIVjB,MAAAA,IAAI,EAAE;AACJwB,QAAAA,GAAG,EAAEvB,EAAE,CAACqE,YAAH,CAAgB,KAAhB,CADD;AAEJpD,QAAAA,OAAO,EAAPA,OAFI;AAGJC,QAAAA,IAAI,EAAJA,IAHI;AAIJE,QAAAA,MAAM,EAANA,MAJI;AAKJE,QAAAA,MAAM,EAANA,MALI;AAMJD,QAAAA,KAAK,EAALA,KANI;AAOJI,QAAAA,KAAK,EAALA,KAPI;AAQJD,QAAAA,GAAG,EAAHA;AARI;AAJI,KAAZ;AAeA3C,IAAAA,GAAG,CAAC,iBAAD,EAAoByF,GAApB,CAAH;AACA,WAAOA,GAAP;AACD,GA9B0B;AA+B3BC,EAAAA,SA/B2B,qBA+BjBjC;AAAO;AA/BU,IA+BM;AAC/B,QAAM6B,SAAS,GAAG9D,KAAK,CAACoD,OAAN,CAAcnB,MAAM,CAAC7C,IAArB,CAAlB;AAEA,QAAI0E,SAAS,GAAG,CAAhB,EAAmB;AAEnB,QAAM1E,IAAI,GAAGY,KAAK,CAAC8D,SAAD,CAAlB;AAEA,QAAQpE,IAAR,GAAiBuC,MAAjB,CAAQvC,IAAR;AACA,QAAMkB,OAAO,GAAGlB,IAAI,CAACkD,GAAL,CAAS,SAAT,CAAhB;AACA,QAAM/B,IAAI,GAAGnB,IAAI,CAACkD,GAAL,CAAS,MAAT,CAAb;AACA,QAAM1B,GAAG,GAAGxB,IAAI,CAACkD,GAAL,CAAS,KAAT,CAAZ;AACA,QAAM3B,MAAM,GAAGvB,IAAI,CAACkD,GAAL,CAAS,QAAT,CAAf;AACA,QAAM5B,KAAK,GAAGtB,IAAI,CAACkD,GAAL,CAAS,OAAT,CAAd;AACA,QAAMxB,KAAK,GAAG1B,IAAI,CAACkD,GAAL,CAAS,OAAT,CAAd;AACA,QAAM7B,MAAM,GAAGrB,IAAI,CAACkD,GAAL,CAAS,QAAT,CAAf;AACA,QAAMzB,GAAG,GAAGzB,IAAI,CAACkD,GAAL,CAAS,KAAT,CAAZ;AACA,QAAME,KAAK,GAAG,EAAd;;AAEA,QAAI1B,KAAJ,EAAW;AACT0B,MAAAA,KAAK,CAAC1B,KAAN,aAAiBA,KAAjB;AACD;;AAED,QAAIL,MAAJ,EAAY;AACV+B,MAAAA,KAAK,CAAC/B,MAAN,aAAkBA,MAAlB;AACD;;AAED,QAAMoD,QAAQ,GAAG;AACf,sBAAgBvD,OADD;AAEf,mBAAaC,IAFE;AAGf,qBAAeI,MAHA;AAIf,oBAAcD,KAJC;AAKf,kBAAYG;AALG,KAAjB;;AAOA,QAAMlC,KAAK,mCACN6D,KADM;AAET5B,MAAAA,GAAG,EAAHA;AAFS,MAAX;;AAKA,wBACE;AACE,mBAAW9B,IADb;AAEE,MAAA,GAAG,EAAE8B;AAFP,OAGMiD,QAHN;AAIE,MAAA,WAAW,EAAC,GAJd;AAKE,MAAA,KAAK,EAAC,0FALR;AAME,MAAA,eAAe;AANjB,OAOMlF,KAPN,EADF;AAWD;AAhF0B,CAAtB","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, ...rest } = props;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n };\n\n const el = (\n <MediaDialog {...rest} type={type} disablePortal={true} open={true} handleClose={handleClose} />\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 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, ...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 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 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 const type = el.dataset && el.dataset.type;\n const typeIndex = types.indexOf(type);\n\n if (typeIndex < 0) return;\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 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 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 return (\n <iframe\n data-type={type}\n src={src}\n {...divProps}\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n {...props}\n />\n );\n }\n};\n"],"file":"index.js"}