@pie-lib/editable-html 7.17.4-next.53 → 7.17.4-next.556

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 (98) hide show
  1. package/CHANGELOG.json +150 -0
  2. package/CHANGELOG.md +421 -0
  3. package/lib/editor.js +390 -172
  4. package/lib/editor.js.map +1 -1
  5. package/lib/index.js +66 -53
  6. package/lib/index.js.map +1 -1
  7. package/lib/parse-html.js.map +1 -1
  8. package/lib/plugins/characters/custom-popper.js +73 -0
  9. package/lib/plugins/characters/custom-popper.js.map +1 -0
  10. package/lib/plugins/characters/index.js +285 -0
  11. package/lib/plugins/characters/index.js.map +1 -0
  12. package/lib/plugins/characters/utils.js +381 -0
  13. package/lib/plugins/characters/utils.js.map +1 -0
  14. package/lib/plugins/image/alt-dialog.js +119 -0
  15. package/lib/plugins/image/alt-dialog.js.map +1 -0
  16. package/lib/plugins/image/component.js +253 -77
  17. package/lib/plugins/image/component.js.map +1 -1
  18. package/lib/plugins/image/image-toolbar.js +95 -61
  19. package/lib/plugins/image/image-toolbar.js.map +1 -1
  20. package/lib/plugins/image/index.js +62 -20
  21. package/lib/plugins/image/index.js.map +1 -1
  22. package/lib/plugins/image/insert-image-handler.js +9 -15
  23. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  24. package/lib/plugins/index.js +20 -12
  25. package/lib/plugins/index.js.map +1 -1
  26. package/lib/plugins/list/index.js +82 -14
  27. package/lib/plugins/list/index.js.map +1 -1
  28. package/lib/plugins/math/index.js +50 -55
  29. package/lib/plugins/math/index.js.map +1 -1
  30. package/lib/plugins/media/index.js +71 -27
  31. package/lib/plugins/media/index.js.map +1 -1
  32. package/lib/plugins/media/media-dialog.js +248 -72
  33. package/lib/plugins/media/media-dialog.js.map +1 -1
  34. package/lib/plugins/media/media-toolbar.js +24 -30
  35. package/lib/plugins/media/media-toolbar.js.map +1 -1
  36. package/lib/plugins/media/media-wrapper.js +28 -35
  37. package/lib/plugins/media/media-wrapper.js.map +1 -1
  38. package/lib/plugins/respArea/drag-in-the-blank/choice.js +68 -46
  39. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  40. package/lib/plugins/respArea/drag-in-the-blank/index.js +12 -12
  41. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  42. package/lib/plugins/respArea/explicit-constructed-response/index.js +10 -9
  43. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  44. package/lib/plugins/respArea/icons/index.js +11 -11
  45. package/lib/plugins/respArea/icons/index.js.map +1 -1
  46. package/lib/plugins/respArea/index.js +58 -42
  47. package/lib/plugins/respArea/index.js.map +1 -1
  48. package/lib/plugins/respArea/inline-dropdown/index.js +8 -8
  49. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  50. package/lib/plugins/respArea/utils.js +5 -5
  51. package/lib/plugins/respArea/utils.js.map +1 -1
  52. package/lib/plugins/table/icons/index.js +12 -12
  53. package/lib/plugins/table/icons/index.js.map +1 -1
  54. package/lib/plugins/table/index.js +83 -27
  55. package/lib/plugins/table/index.js.map +1 -1
  56. package/lib/plugins/table/table-toolbar.js +41 -50
  57. package/lib/plugins/table/table-toolbar.js.map +1 -1
  58. package/lib/plugins/toolbar/default-toolbar.js +19 -13
  59. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  60. package/lib/plugins/toolbar/done-button.js +5 -5
  61. package/lib/plugins/toolbar/done-button.js.map +1 -1
  62. package/lib/plugins/toolbar/editor-and-toolbar.js +51 -44
  63. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  64. package/lib/plugins/toolbar/index.js +5 -5
  65. package/lib/plugins/toolbar/index.js.map +1 -1
  66. package/lib/plugins/toolbar/toolbar-buttons.js +49 -52
  67. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  68. package/lib/plugins/toolbar/toolbar.js +64 -62
  69. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  70. package/lib/plugins/utils.js +1 -1
  71. package/lib/plugins/utils.js.map +1 -1
  72. package/lib/serialization.js +32 -9
  73. package/lib/serialization.js.map +1 -1
  74. package/lib/theme.js.map +1 -1
  75. package/package.json +7 -6
  76. package/src/editor.jsx +224 -26
  77. package/src/index.jsx +22 -5
  78. package/src/plugins/characters/custom-popper.js +48 -0
  79. package/src/plugins/characters/index.jsx +268 -0
  80. package/src/plugins/characters/utils.js +447 -0
  81. package/src/plugins/image/alt-dialog.jsx +69 -0
  82. package/src/plugins/image/component.jsx +204 -21
  83. package/src/plugins/image/image-toolbar.jsx +68 -22
  84. package/src/plugins/image/index.jsx +47 -9
  85. package/src/plugins/index.jsx +4 -1
  86. package/src/plugins/list/index.jsx +67 -5
  87. package/src/plugins/math/index.jsx +31 -37
  88. package/src/plugins/media/index.jsx +49 -6
  89. package/src/plugins/media/media-dialog.js +261 -89
  90. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +28 -1
  91. package/src/plugins/respArea/explicit-constructed-response/index.jsx +3 -3
  92. package/src/plugins/respArea/index.jsx +50 -31
  93. package/src/plugins/table/index.jsx +63 -14
  94. package/src/plugins/toolbar/default-toolbar.jsx +20 -2
  95. package/src/plugins/toolbar/editor-and-toolbar.jsx +35 -4
  96. package/src/plugins/toolbar/toolbar-buttons.jsx +13 -2
  97. package/src/plugins/toolbar/toolbar.jsx +18 -3
  98. package/src/serialization.jsx +19 -3
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports["default"] = void 0;
7
9
 
8
- var _slate = require("slate");
9
-
10
- var _debug = _interopRequireDefault(require("debug"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
11
 
14
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
13
 
16
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
14
+ var _slate = require("slate");
17
15
 
18
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
16
+ var _debug = _interopRequireDefault(require("debug"));
19
17
 
20
18
  var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
21
19
  /**
@@ -25,18 +23,15 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
25
23
  * @param {Function} onChange - callback to notify changes applied by the handler
26
24
  */
27
25
 
28
- var InsertImageHandler =
29
- /*#__PURE__*/
30
- function () {
26
+ var InsertImageHandler = /*#__PURE__*/function () {
31
27
  function InsertImageHandler(placeholderBlock, getValue, onChange) {
32
- _classCallCheck(this, InsertImageHandler);
33
-
28
+ (0, _classCallCheck2["default"])(this, InsertImageHandler);
34
29
  this.placeholderBlock = placeholderBlock;
35
30
  this.getValue = getValue;
36
31
  this.onChange = onChange;
37
32
  }
38
33
 
39
- _createClass(InsertImageHandler, [{
34
+ (0, _createClass2["default"])(InsertImageHandler, [{
40
35
  key: "getPlaceholderInDocument",
41
36
  value: function getPlaceholderInDocument(value) {
42
37
  var document = value.document;
@@ -132,7 +127,6 @@ function () {
132
127
  this.onChange(change);
133
128
  }
134
129
  }]);
135
-
136
130
  return InsertImageHandler;
137
131
  }();
138
132
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","getValue","onChange","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","getPlaceholderInDocument","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"mappings":"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","sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n const c = this.getValue()\n .change()\n .removeNodeByKey(this.placeholderBlock.key);\n this.onChange(c);\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n}\n\nexport default InsertImageHandler;\n"],"file":"insert-image-handler.js"}
1
+ {"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","placeholderBlock","getValue","onChange","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","getPlaceholderInDocument","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n //eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n const c = this.getValue()\n .change()\n .removeNodeByKey(this.placeholderBlock.key);\n this.onChange(c);\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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"}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
7
9
 
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
8
12
  var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
9
13
 
10
14
  var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
@@ -15,6 +19,8 @@ var _image = _interopRequireDefault(require("./image"));
15
19
 
16
20
  var _media = _interopRequireDefault(require("./media"));
17
21
 
22
+ var _characters = _interopRequireDefault(require("./characters"));
23
+
18
24
  var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
19
25
 
20
26
  var _math = _interopRequireDefault(require("./math"));
@@ -39,8 +45,6 @@ var _table = _interopRequireDefault(require("./table"));
39
45
 
40
46
  var _respArea = _interopRequireDefault(require("./respArea"));
41
47
 
42
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
43
-
44
48
  // import Code from '@material-ui/icons/Code';
45
49
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
46
50
 
@@ -63,7 +67,7 @@ function MarkHotkey(options) {
63
67
  renderMark: function renderMark(props) {
64
68
  if (props.mark.type === type) {
65
69
  var K = tag || type;
66
- return _react["default"].createElement(K, null, props.children);
70
+ return /*#__PURE__*/_react["default"].createElement(K, null, props.children);
67
71
  }
68
72
  },
69
73
  onKeyDown: function onKeyDown(event, change) {
@@ -79,7 +83,7 @@ function MarkHotkey(options) {
79
83
  }
80
84
 
81
85
  var ALL_PLUGINS = ['bold', // 'code',
82
- 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'table', 'video', 'audio', 'responseArea'];
86
+ 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'table', 'video', 'audio', 'responseArea'];
83
87
  exports.ALL_PLUGINS = ALL_PLUGINS;
84
88
  var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
85
89
  return plug !== 'responseArea';
@@ -100,33 +104,37 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
100
104
  return (0, _compact["default"])([addIf('table', (0, _table["default"])(opts.table, (0, _compact["default"])([imagePlugin, mathPlugin, respAreaPlugin]))), addIf('bold', MarkHotkey({
101
105
  key: 'b',
102
106
  type: 'bold',
103
- icon: _react["default"].createElement(_FormatBold["default"], null),
107
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
104
108
  tag: 'strong'
105
109
  })), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
106
110
  addIf('italic', MarkHotkey({
107
111
  key: 'i',
108
112
  type: 'italic',
109
- icon: _react["default"].createElement(_FormatItalic["default"], null),
113
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
110
114
  tag: 'em'
111
115
  })), addIf('strikethrough', MarkHotkey({
112
116
  key: '~',
113
117
  type: 'strikethrough',
114
- icon: _react["default"].createElement(_FormatStrikethrough["default"], null),
118
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
115
119
  tag: 'del'
116
120
  })), addIf('underline', MarkHotkey({
117
121
  key: 'u',
118
122
  type: 'underline',
119
- icon: _react["default"].createElement(_FormatUnderlined["default"], null),
123
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
120
124
  tag: 'u'
121
- })), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin), addIf('bulleted-list', (0, _list["default"])({
125
+ })), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin)].concat((0, _toConsumableArray2["default"])(opts.languageCharacters.map(function (config) {
126
+ return addIf('languageCharacters', (0, _characters["default"])(config));
127
+ })), [addIf('bulleted-list', (0, _list["default"])({
122
128
  key: 'l',
123
129
  type: 'ul_list',
124
- icon: _react["default"].createElement(_FormatListBulleted["default"], null)
130
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)
125
131
  })), addIf('numbered-list', (0, _list["default"])({
126
132
  key: 'n',
127
133
  type: 'ol_list',
128
- icon: _react["default"].createElement(_FormatListNumbered["default"], null)
129
- })), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])(), addIf('responseArea', respAreaPlugin)]);
134
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)
135
+ })), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
136
+ shift: true
137
+ }), addIf('responseArea', respAreaPlugin)]));
130
138
  };
131
139
 
132
140
  exports.buildPlugins = buildPlugins;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/index.jsx"],"names":["log","MarkHotkey","options","type","key","icon","tag","toolbar","isMark","onToggle","change","toggleMark","renderMark","props","mark","K","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","buildPlugins","activePlugins","opts","addIf","p","includes","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","table","media"],"mappings":"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","sourcesContent":["import Bold from '@material-ui/icons/FormatBold';\n// import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport Italic from '@material-ui/icons/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@material-ui/icons/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@material-ui/icons/FormatUnderlined';\nimport compact from 'lodash/compact';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: change => {\n log('[onToggleMark] type: ', type);\n return change.toggleMark(type);\n }\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const K = tag || type;\n return <K>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key != key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n }\n };\n}\n\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'table',\n 'video',\n 'audio',\n 'responseArea'\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter(plug => plug !== 'responseArea');\n\nexport const buildPlugins = (activePlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n const imagePlugin = opts.image && opts.image.onDelete && ImagePlugin(opts.image);\n const mathPlugin = MathPlugin(opts.math);\n const respAreaPlugin =\n opts.responseArea &&\n opts.responseArea.type &&\n RespAreaPlugin(opts.responseArea, compact([mathPlugin]));\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact([imagePlugin, mathPlugin, respAreaPlugin]))),\n addIf('bold', MarkHotkey({ key: 'b', type: 'bold', icon: <Bold />, tag: 'strong' })),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic', MarkHotkey({ key: 'i', type: 'italic', icon: <Italic />, tag: 'em' })),\n addIf(\n 'strikethrough',\n MarkHotkey({\n key: '~',\n type: 'strikethrough',\n icon: <Strikethrough />,\n tag: 'del'\n })\n ),\n addIf('underline', MarkHotkey({ key: 'u', type: 'underline', icon: <Underline />, tag: 'u' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n addIf('bulleted-list', List({ key: 'l', type: 'ul_list', icon: <BulletedListIcon /> })),\n addIf('numbered-list', List({ key: 'n', type: 'ol_list', icon: <NumberedListIcon /> })),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin(),\n addIf('responseArea', respAreaPlugin)\n ]);\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["log","debug","MarkHotkey","options","type","key","icon","tag","toolbar","isMark","onToggle","change","toggleMark","renderMark","props","mark","K","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","buildPlugins","activePlugins","opts","addIf","p","includes","imagePlugin","image","onDelete","ImagePlugin","mathPlugin","MathPlugin","math","respAreaPlugin","responseArea","RespAreaPlugin","compact","TablePlugin","table","MediaPlugin","media","languageCharacters","map","config","CharactersPlugin","List","ToolbarPlugin","SoftBreakPlugin","shift"],"sources":["../../src/plugins/index.jsx"],"sourcesContent":["import Bold from '@material-ui/icons/FormatBold';\n// import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport CharactersPlugin from './characters';\nimport Italic from '@material-ui/icons/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@material-ui/icons/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@material-ui/icons/FormatUnderlined';\nimport compact from 'lodash/compact';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: change => {\n log('[onToggleMark] type: ', type);\n return change.toggleMark(type);\n }\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const K = tag || type;\n return <K>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key != key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n }\n };\n}\n\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'table',\n 'video',\n 'audio',\n 'responseArea'\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter(plug => plug !== 'responseArea');\n\nexport const buildPlugins = (activePlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n const imagePlugin = opts.image && opts.image.onDelete && ImagePlugin(opts.image);\n const mathPlugin = MathPlugin(opts.math);\n const respAreaPlugin =\n opts.responseArea &&\n opts.responseArea.type &&\n RespAreaPlugin(opts.responseArea, compact([mathPlugin]));\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact([imagePlugin, mathPlugin, respAreaPlugin]))),\n addIf('bold', MarkHotkey({ key: 'b', type: 'bold', icon: <Bold />, tag: 'strong' })),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic', MarkHotkey({ key: 'i', type: 'italic', icon: <Italic />, tag: 'em' })),\n addIf(\n 'strikethrough',\n MarkHotkey({\n key: '~',\n type: 'strikethrough',\n icon: <Strikethrough />,\n tag: 'del'\n })\n ),\n addIf('underline', MarkHotkey({ key: 'u', type: 'underline', icon: <Underline />, tag: 'u' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n ...opts.languageCharacters.map(config => addIf('languageCharacters', CharactersPlugin(config))),\n addIf('bulleted-list', List({ key: 'l', type: 'ul_list', icon: <BulletedListIcon /> })),\n addIf('numbered-list', List({ key: 'n', type: 'ol_list', icon: <NumberedListIcon /> })),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin({ shift: true }),\n addIf('responseArea', respAreaPlugin)\n ]);\n};\n"],"mappings":"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"}
@@ -1,20 +1,24 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports["default"] = exports.serialization = void 0;
8
+ exports.serialization = exports["default"] = void 0;
7
9
 
8
10
  var _react = _interopRequireDefault(require("react"));
9
11
 
12
+ var _slate = require("slate");
13
+
14
+ var _immutable = _interopRequireDefault(require("immutable"));
15
+
10
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
17
 
12
18
  var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
13
19
 
14
20
  var _debug = _interopRequireDefault(require("debug"));
15
21
 
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
-
18
22
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
19
23
 
20
24
  var b = function b(type, next, childNodes) {
@@ -45,23 +49,21 @@ var serialization = {
45
49
  if (object.object !== 'block') return;
46
50
 
47
51
  if (object.type === 'list_item') {
48
- return _react["default"].createElement("li", null, children);
52
+ return /*#__PURE__*/_react["default"].createElement("li", null, children);
49
53
  }
50
54
 
51
55
  if (object.type === 'ul_list') {
52
- return _react["default"].createElement("ul", null, children);
56
+ return /*#__PURE__*/_react["default"].createElement("ul", null, children);
53
57
  }
54
58
 
55
59
  if (object.type === 'ol_list') {
56
- return _react["default"].createElement("ol", null, children);
60
+ return /*#__PURE__*/_react["default"].createElement("ol", null, children);
57
61
  }
58
62
  }
59
63
  };
60
64
  exports.serialization = serialization;
61
65
 
62
- var _default = function _default(options) {
63
- var type = options.type,
64
- icon = options.icon;
66
+ var createEditList = function createEditList() {
65
67
  var core = (0, _slateEditList["default"])({
66
68
  typeDefault: 'span'
67
69
  }); // fix outdated schema
@@ -78,8 +80,74 @@ var _default = function _default(options) {
78
80
  type: block.nodes[0].types[0]
79
81
  };
80
82
  });
81
- } // eslint-disable-next-line react/display-name
83
+ }
84
+ /**
85
+ * This override of the core.changes.wrapInList is needed because the version
86
+ * of immutable that we have does not support getting the element at a specific
87
+ * index with a square bracket (list[0]). We have to use the list.get function instead
88
+ */
89
+
90
+ /**
91
+ * Returns the highest list of blocks that cover the current selection
92
+ */
93
+
94
+
95
+ var getHighestSelectedBlocks = function getHighestSelectedBlocks(value) {
96
+ var range = value.selection;
97
+ var document = value.document;
98
+ var startBlock = document.getClosestBlock(range.startKey);
99
+ var endBlock = document.getClosestBlock(range.endKey);
100
+
101
+ if (startBlock === endBlock) {
102
+ return _immutable["default"].List([startBlock]);
103
+ }
104
+
105
+ var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
106
+ var startPath = ancestor.getPath(startBlock.key);
107
+ var endPath = ancestor.getPath(endBlock.key);
108
+ return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
109
+ };
110
+ /**
111
+ * Wrap the blocks in the current selection in a new list. Selected
112
+ * lists are merged together.
113
+ */
114
+
115
+
116
+ core.changes.wrapInList = function (change, type, data) {
117
+ var selectedBlocks = getHighestSelectedBlocks(change.value); // Wrap in container
118
+
119
+ change.wrapBlock({
120
+ type: type,
121
+ data: _slate.Data.create(data)
122
+ }, {
123
+ normalize: false
124
+ }); // Wrap in list items
125
+
126
+ selectedBlocks.forEach(function (node) {
127
+ if (core.utils.isList(node)) {
128
+ // Merge its items with the created list
129
+ node.nodes.forEach(function (_ref) {
130
+ var key = _ref.key;
131
+ return change.unwrapNodeByKey(key, {
132
+ normalize: false
133
+ });
134
+ });
135
+ } else if (node.type !== 'list_item') {
136
+ change.wrapBlockByKey(node.key, 'list_item', {
137
+ normalize: false
138
+ });
139
+ }
140
+ });
141
+ return change.normalize();
142
+ };
82
143
 
144
+ return core;
145
+ };
146
+
147
+ var _default = function _default(options) {
148
+ var type = options.type,
149
+ icon = options.icon;
150
+ var core = createEditList(); // eslint-disable-next-line react/display-name
83
151
 
84
152
  core.renderNode = function (props) {
85
153
  var node = props.node,
@@ -88,13 +156,13 @@ var _default = function _default(options) {
88
156
 
89
157
  switch (node.type) {
90
158
  case 'ul_list':
91
- return _react["default"].createElement("ul", attributes, children);
159
+ return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
92
160
 
93
161
  case 'ol_list':
94
- return _react["default"].createElement("ol", attributes, children);
162
+ return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
95
163
 
96
164
  case 'list_item':
97
- return _react["default"].createElement("li", attributes, children);
165
+ return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
98
166
  }
99
167
  };
100
168
 
@@ -108,7 +176,7 @@ var _default = function _default(options) {
108
176
  }
109
177
 
110
178
  var current = core.utils.getCurrentList(value);
111
- return current.type === type;
179
+ return current ? current.type === type : false;
112
180
  },
113
181
  onClick: function onClick(value, onChange) {
114
182
  log('[onClick]', value);
@@ -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,"file":"index.js","names":["log","debug","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","EditList","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","options","icon","renderNode","props","attributes","toolbar","isMark","isActive","isSelectionInList","current","getCurrentList","onClick","onChange","inList","call","unwrapList","propTypes","PropTypes","func"],"sources":["../../../src/plugins/list/index.jsx"],"sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\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\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span'\n });\n\n // fix outdated schema\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 /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = value => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false\n });\n }\n });\n\n return change.normalize();\n };\n\n return core;\n};\n\nexport default options => {\n const { type, icon } = options;\n\n const core = createEditList();\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 ? current.type === type : false;\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"],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
8
+ exports.CustomToolbarComp = void 0;
6
9
  exports["default"] = MathPlugin;
7
- exports.serialization = exports.inlineMath = exports.CustomToolbarComp = void 0;
10
+ exports.serialization = exports.inlineMath = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
15
 
9
16
  var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
10
17
 
@@ -24,15 +31,9 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
24
31
 
25
32
  var _serialization = require("../../serialization");
26
33
 
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
28
-
29
- 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
- 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
-
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 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; }
34
35
 
35
- 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
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
36
37
 
37
38
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:math');
38
39
  var TEXT_NODE = 3;
@@ -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,48 +190,12 @@ 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", (0, _extends2["default"])({}, props.attributes, {
193
194
  dangerouslySetInnerHTML: {
194
195
  __html: html
195
196
  }
196
197
  }));
197
198
  }
198
- },
199
- normalizeNode: function normalizeNode(node) {
200
- if (node.object !== 'document') {
201
- return;
202
- }
203
-
204
- var addSpacesArray = [];
205
- var allElements = node.filterDescendants(function (d) {
206
- return d.type === 'math';
207
- });
208
- allElements.forEach(function (el) {
209
- var prevText = node.getPreviousText(el.key);
210
- var lastCharIsNewLine = prevText.text[prevText.text.length - 1] === '\n';
211
-
212
- if (prevText.text.length === 0 || lastCharIsNewLine) {
213
- addSpacesArray.push({
214
- nr: lastCharIsNewLine ? 1 : 2,
215
- key: prevText.key
216
- });
217
- }
218
- });
219
-
220
- if (!addSpacesArray.length) {
221
- return;
222
- }
223
-
224
- return function (change) {
225
- change.withoutNormalization(function () {
226
- addSpacesArray.forEach(function (_ref4) {
227
- var key = _ref4.key,
228
- nr = _ref4.nr;
229
- var node = change.value.document.getNode(key);
230
- change.insertTextByKey(key, node.text.length, "\xA0".repeat(nr));
231
- });
232
- });
233
- };
234
199
  }
235
200
  };
236
201
  }
@@ -261,6 +226,36 @@ var htmlDecode = function htmlDecode(input) {
261
226
  var getTagName = function getTagName(el) {
262
227
  return (el && el.tagName || '').toLowerCase();
263
228
  };
229
+ /**
230
+ * Makes sure that strings that contain stuff like:
231
+ * x<y are not transformed into x by the DOMParser because it thinks
232
+ * that <y is the start of a dom element tag
233
+ * @param input
234
+ * @returns {*}
235
+ */
236
+
237
+
238
+ var lessThanHandling = function lessThanHandling(input) {
239
+ var arrowSplit = input.split('<'); // if we don't have at least 2 characters there's no point in checking
240
+
241
+ if (input.length > 2) {
242
+ return arrowSplit.reduce(function (st, part) {
243
+ /*
244
+ We check if this element resulted is:
245
+ div - continuation of a beginning of a HTML element
246
+ /div - closing of a HTML tag
247
+ br/> - beginning and closing of a html TAG
248
+ */
249
+ if (part.match(/<[a-zA-Z/][\s\S]*>/ig)) {
250
+ return "".concat(st).concat(st ? '<' : '').concat(part);
251
+ }
252
+
253
+ return "".concat(st).concat(st ? '&lt;' : '').concat(part);
254
+ }, '');
255
+ }
256
+
257
+ return input;
258
+ };
264
259
 
265
260
  var serialization = {
266
261
  deserialize: function deserialize(el) {
@@ -326,8 +321,8 @@ var serialization = {
326
321
  var l = object.data.get('latex');
327
322
  var wrapper = object.data.get('wrapper');
328
323
  log('[serialize] latex: ', l);
329
- var decoded = htmlDecode(l);
330
- return _react["default"].createElement("span", {
324
+ var decoded = htmlDecode(lessThanHandling(l));
325
+ return /*#__PURE__*/_react["default"].createElement("span", {
331
326
  "data-latex": "",
332
327
  "data-raw": decoded
333
328
  }, (0, _mathRendering.wrapMath)(decoded, wrapper));
@@ -339,7 +334,7 @@ var serialization = {
339
334
 
340
335
  if (object.type === 'mathml') {
341
336
  var html = object.data.get('html');
342
- return _react["default"].createElement("span", {
337
+ return /*#__PURE__*/_react["default"].createElement("span", {
343
338
  "data-type": "mathml",
344
339
  dangerouslySetInnerHTML: {
345
340
  __html: html