@pie-lib/editable-html 9.3.1-next.53 → 9.4.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 (75) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/editor.js +244 -114
  3. package/lib/editor.js.map +1 -1
  4. package/lib/index.js +51 -5
  5. package/lib/index.js.map +1 -1
  6. package/lib/parse-html.js +5 -6
  7. package/lib/parse-html.js.map +1 -1
  8. package/lib/plugins/characters/custom-popper.js +12 -2
  9. package/lib/plugins/characters/custom-popper.js.map +1 -1
  10. package/lib/plugins/characters/index.js +50 -3
  11. package/lib/plugins/characters/index.js.map +1 -1
  12. package/lib/plugins/characters/utils.js.map +1 -1
  13. package/lib/plugins/image/alt-dialog.js +26 -0
  14. package/lib/plugins/image/alt-dialog.js.map +1 -1
  15. package/lib/plugins/image/component.js +82 -29
  16. package/lib/plugins/image/component.js.map +1 -1
  17. package/lib/plugins/image/image-toolbar.js +45 -7
  18. package/lib/plugins/image/image-toolbar.js.map +1 -1
  19. package/lib/plugins/image/index.js +41 -2
  20. package/lib/plugins/image/index.js.map +1 -1
  21. package/lib/plugins/image/insert-image-handler.js +22 -2
  22. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  23. package/lib/plugins/index.js +34 -13
  24. package/lib/plugins/index.js.map +1 -1
  25. package/lib/plugins/list/index.js +42 -13
  26. package/lib/plugins/list/index.js.map +1 -1
  27. package/lib/plugins/math/index.js +75 -30
  28. package/lib/plugins/math/index.js.map +1 -1
  29. package/lib/plugins/media/index.js +75 -18
  30. package/lib/plugins/media/index.js.map +1 -1
  31. package/lib/plugins/media/media-dialog.js +188 -100
  32. package/lib/plugins/media/media-dialog.js.map +1 -1
  33. package/lib/plugins/media/media-toolbar.js +24 -4
  34. package/lib/plugins/media/media-toolbar.js.map +1 -1
  35. package/lib/plugins/media/media-wrapper.js +29 -5
  36. package/lib/plugins/media/media-wrapper.js.map +1 -1
  37. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  38. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  39. package/lib/plugins/respArea/drag-in-the-blank/index.js +18 -4
  40. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  41. package/lib/plugins/respArea/explicit-constructed-response/index.js +8 -2
  42. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  43. package/lib/plugins/respArea/icons/index.js +18 -1
  44. package/lib/plugins/respArea/icons/index.js.map +1 -1
  45. package/lib/plugins/respArea/index.js +47 -1
  46. package/lib/plugins/respArea/index.js.map +1 -1
  47. package/lib/plugins/respArea/inline-dropdown/index.js +8 -1
  48. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  49. package/lib/plugins/respArea/utils.js +22 -0
  50. package/lib/plugins/respArea/utils.js.map +1 -1
  51. package/lib/plugins/table/icons/index.js +7 -0
  52. package/lib/plugins/table/icons/index.js.map +1 -1
  53. package/lib/plugins/table/index.js +94 -15
  54. package/lib/plugins/table/index.js.map +1 -1
  55. package/lib/plugins/table/table-toolbar.js +43 -11
  56. package/lib/plugins/table/table-toolbar.js.map +1 -1
  57. package/lib/plugins/toolbar/default-toolbar.js +30 -8
  58. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  59. package/lib/plugins/toolbar/done-button.js +9 -1
  60. package/lib/plugins/toolbar/done-button.js.map +1 -1
  61. package/lib/plugins/toolbar/editor-and-toolbar.js +48 -18
  62. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/index.js +5 -0
  64. package/lib/plugins/toolbar/index.js.map +1 -1
  65. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  66. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  67. package/lib/plugins/toolbar/toolbar.js +67 -19
  68. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  69. package/lib/plugins/utils.js +15 -0
  70. package/lib/plugins/utils.js.map +1 -1
  71. package/lib/serialization.js +69 -8
  72. package/lib/serialization.js.map +1 -1
  73. package/lib/theme.js.map +1 -1
  74. package/package.json +4 -4
  75. package/src/plugins/media/index.jsx +1 -0
@@ -1,27 +1,41 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = ImagePlugin;
8
9
  exports.serialization = void 0;
10
+
9
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+
10
13
  var _slate = require("slate");
14
+
11
15
  var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
16
+
12
17
  var _component = _interopRequireDefault(require("./component"));
18
+
13
19
  var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
20
+
14
21
  var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
22
+
15
23
  var _react = _interopRequireDefault(require("react"));
24
+
16
25
  var _debug = _interopRequireDefault(require("debug"));
26
+
17
27
  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; }
28
+
18
29
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+
19
31
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
32
+
20
33
  function ImagePlugin(opts) {
21
34
  var toolbar = opts.insertImageRequested && {
22
35
  icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
23
36
  onClick: function onClick(value, onChange) {
24
37
  log('[toolbar] onClick');
38
+
25
39
  var inline = _slate.Inline.create({
26
40
  type: 'image',
27
41
  isVoid: true,
@@ -30,6 +44,7 @@ function ImagePlugin(opts) {
30
44
  src: undefined
31
45
  }
32
46
  });
47
+
33
48
  var change = value.change().insertInline(inline);
34
49
  onChange(change);
35
50
  opts.insertImageRequested(function (getValue) {
@@ -43,13 +58,16 @@ function ImagePlugin(opts) {
43
58
  var alignment = node.data.get('alignment');
44
59
  var alt = node.data.get('alt');
45
60
  var imageLoaded = node.data.get('loaded') !== false;
61
+
46
62
  var onChange = function onChange(newValues, done) {
47
63
  var update = _objectSpread(_objectSpread({}, node.data.toObject()), newValues);
64
+
48
65
  var change = value.change().setNodeByKey(node.key, {
49
66
  data: update
50
67
  });
51
68
  onToolbarDone(change, done);
52
69
  };
70
+
53
71
  var Tb = function Tb() {
54
72
  return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
55
73
  disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
@@ -59,6 +77,7 @@ function ImagePlugin(opts) {
59
77
  onChange: onChange
60
78
  });
61
79
  };
80
+
62
81
  return Tb;
63
82
  },
64
83
  showDone: true
@@ -68,6 +87,7 @@ function ImagePlugin(opts) {
68
87
  toolbar: toolbar,
69
88
  deleteNode: function deleteNode(e, node, value, onChange) {
70
89
  e.preventDefault();
90
+
71
91
  if (opts.onDelete) {
72
92
  var update = node.data.merge(_slate.Data.create({
73
93
  deleteStatus: 'pending'
@@ -85,10 +105,12 @@ function ImagePlugin(opts) {
85
105
  deleteStatus: 'failed'
86
106
  })));
87
107
  }
108
+
88
109
  onChange(change);
89
110
  });
90
111
  } else {
91
112
  var _change = value.change().removeNodeByKey(node.key);
113
+
92
114
  onChange(_change);
93
115
  }
94
116
  },
@@ -97,9 +119,11 @@ function ImagePlugin(opts) {
97
119
  if (n.type !== 'image') {
98
120
  return;
99
121
  }
122
+
100
123
  return n.data.get('loaded') === false;
101
124
  });
102
125
  /** don't reset if there is an image pending insertion */
126
+
103
127
  return imgPendingInsertion !== undefined && imgPendingInsertion !== null;
104
128
  },
105
129
  renderNode: function renderNode(props) {
@@ -123,11 +147,13 @@ function ImagePlugin(opts) {
123
147
  if (d.object === 'text') {
124
148
  textNodeMap[index] = d;
125
149
  }
150
+
126
151
  if (d.type === 'image') {
127
152
  if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
128
153
  updateNodesArray.push(textNodeMap[index - 1]);
129
154
  }
130
155
  }
156
+
131
157
  index++;
132
158
  });
133
159
  if (!updateNodesArray.length) return;
@@ -141,8 +167,11 @@ function ImagePlugin(opts) {
141
167
  }
142
168
  };
143
169
  }
170
+
144
171
  var serialization = {
145
- deserialize: function deserialize(el /*, next*/) {
172
+ deserialize: function deserialize(el
173
+ /*, next*/
174
+ ) {
146
175
  var name = el.tagName.toLowerCase();
147
176
  if (name !== 'img') return;
148
177
  log('deserialize: ', name);
@@ -171,7 +200,9 @@ var serialization = {
171
200
  log('return object: ', out);
172
201
  return out;
173
202
  },
174
- serialize: function serialize(object /*, children*/) {
203
+ serialize: function serialize(object
204
+ /*, children*/
205
+ ) {
175
206
  if (object.type !== 'image') return;
176
207
  var data = object.data;
177
208
  var src = data.get('src');
@@ -182,33 +213,41 @@ var serialization = {
182
213
  var justifyContent = data.get('margin');
183
214
  var alt = data.get('alt');
184
215
  var style = {};
216
+
185
217
  if (width) {
186
218
  style.width = "".concat(width, "px");
187
219
  }
220
+
188
221
  if (height) {
189
222
  style.height = "".concat(height, "px");
190
223
  }
224
+
191
225
  style.margin = margin;
192
226
  style.justifyContent = justifyContent;
227
+
193
228
  if (alignment) {
194
229
  switch (alignment) {
195
230
  case 'left':
196
231
  style.justifyContent = 'flex-start';
197
232
  style.margin = '0';
198
233
  break;
234
+
199
235
  case 'center':
200
236
  style.justifyContent = 'center';
201
237
  style.margin = '0 auto';
202
238
  break;
239
+
203
240
  case 'right':
204
241
  style.justifyContent = 'flex-end';
205
242
  style.margin = 'auto 0 0 auto';
206
243
  break;
244
+
207
245
  default:
208
246
  style.justifyContent = 'flex-start';
209
247
  break;
210
248
  }
211
249
  }
250
+
212
251
  style.objectFit = 'contain';
213
252
  var props = {
214
253
  src: src,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["log","debug","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","e","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n opts.insertImageRequested((getValue) => new InsertImageHandler(inline, getValue, onChange));\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return <ImageComponent {...all} />;\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 if (d.type === 'image') {\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 name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","e","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"mappings":"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","sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n opts.insertImageRequested((getValue) => new InsertImageHandler(inline, getValue, onChange));\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return <ImageComponent {...all} />;\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 if (d.type === 'image') {\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 name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"file":"index.js"}
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
9
+
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
9
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
10
14
  var _slate = require("slate");
15
+
11
16
  var _debug = _interopRequireDefault(require("debug"));
12
- var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
13
17
 
18
+ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
14
19
  /**
15
20
  * Handles user selection, insertion (or cancellation) of an image into the editor.
16
21
  * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
@@ -18,6 +23,7 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-hand
18
23
  * @param {Function} onChange - callback to notify changes applied by the handler
19
24
  * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
20
25
  */
26
+
21
27
  var InsertImageHandler = /*#__PURE__*/function () {
22
28
  function InsertImageHandler(placeholderBlock, getValue, onChange) {
23
29
  var isPasted = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -27,15 +33,19 @@ var InsertImageHandler = /*#__PURE__*/function () {
27
33
  this.onChange = onChange;
28
34
  this.isPasted = isPasted;
29
35
  }
36
+
30
37
  (0, _createClass2["default"])(InsertImageHandler, [{
31
38
  key: "getPlaceholderInDocument",
32
39
  value: function getPlaceholderInDocument(value) {
33
40
  var document = value.document;
34
41
  var directChild = document.getChild(this.placeholderBlock.key);
42
+
35
43
  if (directChild) {
36
44
  return directChild;
37
45
  }
46
+
38
47
  var child = document.getDescendant(this.placeholderBlock.key);
48
+
39
49
  if (child) {
40
50
  return child;
41
51
  } else {
@@ -54,6 +64,7 @@ var InsertImageHandler = /*#__PURE__*/function () {
54
64
  key: "done",
55
65
  value: function done(err, src) {
56
66
  log('done: err:', err);
67
+
57
68
  if (err) {
58
69
  //eslint-disable-next-line
59
70
  console.log(err);
@@ -71,31 +82,39 @@ var InsertImageHandler = /*#__PURE__*/function () {
71
82
  this.onChange(change);
72
83
  }
73
84
  }
74
-
75
85
  /**
76
86
  * Notify handler that the user chose a file - will create a change with a preview in the editor.
77
87
  *
78
88
  * @param {File} file - the file that the user chose using a file input.
79
89
  */
90
+
80
91
  }, {
81
92
  key: "fileChosen",
82
93
  value: function fileChosen(file) {
83
94
  var _this = this;
95
+
84
96
  if (!file) {
85
97
  return;
86
98
  }
99
+
87
100
  log('[fileChosen] file: ', file);
88
101
  var reader = new FileReader();
102
+
89
103
  reader.onload = function () {
90
104
  var value = _this.getValue();
105
+
91
106
  var dataURL = reader.result;
107
+
92
108
  var child = _this.getPlaceholderInDocument(value);
109
+
93
110
  var data = child.data.set('src', dataURL);
94
111
  var change = value.change().setNodeByKey(_this.placeholderBlock.key, {
95
112
  data: data
96
113
  });
114
+
97
115
  _this.onChange(change);
98
116
  };
117
+
99
118
  reader.readAsDataURL(file);
100
119
  }
101
120
  }, {
@@ -113,6 +132,7 @@ var InsertImageHandler = /*#__PURE__*/function () {
113
132
  }]);
114
133
  return InsertImageHandler;
115
134
  }();
135
+
116
136
  var _default = InsertImageHandler;
117
137
  exports["default"] = _default;
118
138
  //# sourceMappingURL=insert-image-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert-image-handler.js","names":["log","debug","InsertImageHandler","placeholderBlock","getValue","onChange","isPasted","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 * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n this.isPasted = isPasted;\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
+ {"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","getValue","onChange","isPasted","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":";;;;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,GAAG,GAAG,uBAAM,mDAAN,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMC,kB;AACJ,8BAAYC,gBAAZ,EAA8BC,QAA9B,EAAwCC,QAAxC,EAAoE;AAAA,QAAlBC,QAAkB,uEAAP,KAAO;AAAA;AAClE,SAAKH,gBAAL,GAAwBA,gBAAxB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACD;;;;WAED,kCAAyBC,KAAzB,EAAgC;AAC9B,UAAQC,QAAR,GAAqBD,KAArB,CAAQC,QAAR;AACA,UAAMC,WAAW,GAAGD,QAAQ,CAACE,QAAT,CAAkB,KAAKP,gBAAL,CAAsBQ,GAAxC,CAApB;;AAEA,UAAIF,WAAJ,EAAiB;AACf,eAAOA,WAAP;AACD;;AAED,UAAMG,KAAK,GAAGJ,QAAQ,CAACK,aAAT,CAAuB,KAAKV,gBAAL,CAAsBQ,GAA7C,CAAd;;AAEA,UAAIC,KAAJ,EAAW;AACT,eAAOA,KAAP;AACD,OAFD,MAEO;AACL;AACA,cAAM,IAAIE,KAAJ,CAAU,uCAAV,CAAN;AACD;AACF;;;WAED,kBAAS;AACPb,MAAAA,GAAG,CAAC,kBAAD,CAAH;AACA,UAAMc,CAAC,GAAG,KAAKX,QAAL,GACPY,MADO,GAEPC,eAFO,CAES,KAAKd,gBAAL,CAAsBQ,GAF/B,CAAV;AAGA,WAAKN,QAAL,CAAcU,CAAd;AACD;;;WAED,cAAKG,GAAL,EAAUC,GAAV,EAAe;AACblB,MAAAA,GAAG,CAAC,YAAD,EAAeiB,GAAf,CAAH;;AACA,UAAIA,GAAJ,EAAS;AACP;AACAE,QAAAA,OAAO,CAACnB,GAAR,CAAYiB,GAAZ;AACD,OAHD,MAGO;AACL,YAAMX,KAAK,GAAG,KAAKH,QAAL,EAAd;AACA,YAAMQ,KAAK,GAAG,KAAKS,wBAAL,CAA8Bd,KAA9B,CAAd;AACA,YAAMe,IAAI,GAAGV,KAAK,CAACU,IAAN,CAAWC,KAAX,CAAiBC,YAAKC,MAAL,CAAY;AAAEC,UAAAA,MAAM,EAAE,IAAV;AAAgBP,UAAAA,GAAG,EAAHA,GAAhB;AAAqBQ,UAAAA,OAAO,EAAE;AAA9B,SAAZ,CAAjB,CAAb;AAEA,YAAMX,MAAM,GAAGT,KAAK,CAACS,MAAN,GAAeY,YAAf,CAA4B,KAAKzB,gBAAL,CAAsBQ,GAAlD,EAAuD;AAAEW,UAAAA,IAAI,EAAJA;AAAF,SAAvD,CAAf;AACA,aAAKjB,QAAL,CAAcW,MAAd;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,oBAAWa,IAAX,EAAiB;AAAA;;AACf,UAAI,CAACA,IAAL,EAAW;AACT;AACD;;AAED5B,MAAAA,GAAG,CAAC,qBAAD,EAAwB4B,IAAxB,CAAH;AACA,UAAMC,MAAM,GAAG,IAAIC,UAAJ,EAAf;;AACAD,MAAAA,MAAM,CAACE,MAAP,GAAgB,YAAM;AACpB,YAAMzB,KAAK,GAAG,KAAI,CAACH,QAAL,EAAd;;AACA,YAAM6B,OAAO,GAAGH,MAAM,CAACI,MAAvB;;AACA,YAAMtB,KAAK,GAAG,KAAI,CAACS,wBAAL,CAA8Bd,KAA9B,CAAd;;AACA,YAAMe,IAAI,GAAGV,KAAK,CAACU,IAAN,CAAWa,GAAX,CAAe,KAAf,EAAsBF,OAAtB,CAAb;AACA,YAAMjB,MAAM,GAAGT,KAAK,CAACS,MAAN,GAAeY,YAAf,CAA4B,KAAI,CAACzB,gBAAL,CAAsBQ,GAAlD,EAAuD;AAAEW,UAAAA,IAAI,EAAJA;AAAF,SAAvD,CAAf;;AACA,QAAA,KAAI,CAACjB,QAAL,CAAcW,MAAd;AACD,OAPD;;AAQAc,MAAAA,MAAM,CAACM,aAAP,CAAqBP,IAArB;AACD;;;WAED,kBAASF,OAAT,EAAkBU,KAAlB,EAAyBC,KAAzB,EAAgC;AAC9BrC,MAAAA,GAAG,CAAC,YAAD,EAAe0B,OAAf,EAAwBU,KAAxB,EAA+BC,KAA/B,CAAH;AACA,UAAM/B,KAAK,GAAG,KAAKH,QAAL,EAAd;AACA,UAAMQ,KAAK,GAAG,KAAKS,wBAAL,CAA8Bd,KAA9B,CAAd;AACA,UAAMe,IAAI,GAAGV,KAAK,CAACU,IAAN,CAAWa,GAAX,CAAe,SAAf,EAA0BR,OAA1B,CAAb;AACA,UAAMX,MAAM,GAAGT,KAAK,CAACS,MAAN,GAAeY,YAAf,CAA4B,KAAKzB,gBAAL,CAAsBQ,GAAlD,EAAuD;AAAEW,QAAAA,IAAI,EAAJA;AAAF,OAAvD,CAAf;AACA,WAAKjB,QAAL,CAAcW,MAAd;AACD;;;;;eAGYd,kB","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 * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onChange = onChange;\n this.isPasted = isPasted;\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,39 +1,59 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
9
+
8
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
9
12
  var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
13
+
10
14
  var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
15
+
11
16
  var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
17
+
12
18
  var _image = _interopRequireDefault(require("./image"));
19
+
13
20
  var _media = _interopRequireDefault(require("./media"));
21
+
14
22
  var _characters = _interopRequireDefault(require("./characters"));
23
+
15
24
  var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
25
+
16
26
  var _math = _interopRequireDefault(require("./math"));
27
+
17
28
  var _react = _interopRequireDefault(require("react"));
29
+
18
30
  var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
31
+
19
32
  var _toolbar = _interopRequireDefault(require("./toolbar"));
33
+
20
34
  var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
35
+
21
36
  var _compact = _interopRequireDefault(require("lodash/compact"));
37
+
22
38
  var _slateSoftBreak = _interopRequireDefault(require("slate-soft-break"));
39
+
23
40
  var _debug = _interopRequireDefault(require("debug"));
41
+
24
42
  var _list = _interopRequireDefault(require("./list"));
43
+
25
44
  var _table = _interopRequireDefault(require("./table"));
45
+
26
46
  var _respArea = _interopRequireDefault(require("./respArea"));
27
- // import Code from '@material-ui/icons/Code';
28
47
 
48
+ // import Code from '@material-ui/icons/Code';
29
49
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
50
+
30
51
  function MarkHotkey(options) {
31
52
  var type = options.type,
32
- key = options.key,
33
- icon = options.icon,
34
- tag = options.tag;
53
+ key = options.key,
54
+ icon = options.icon,
55
+ tag = options.tag; // Return our "plugin" object, containing the `onKeyDown` handler.
35
56
 
36
- // Return our "plugin" object, containing the `onKeyDown` handler.
37
57
  return {
38
58
  toolbar: {
39
59
  isMark: true,
@@ -52,31 +72,32 @@ function MarkHotkey(options) {
52
72
  },
53
73
  onKeyDown: function onKeyDown(event, change) {
54
74
  // Check that the key pressed matches our `key` option.
55
- if (!event.metaKey || event.key != key) return;
75
+ if (!event.metaKey || event.key != key) return; // Prevent the default characters from being inserted.
56
76
 
57
- // Prevent the default characters from being inserted.
58
- event.preventDefault();
77
+ event.preventDefault(); // Toggle the mark `type`.
59
78
 
60
- // Toggle the mark `type`.
61
79
  change.toggleMark(type);
62
80
  return true;
63
81
  }
64
82
  };
65
83
  }
66
- var ALL_PLUGINS = ['bold',
67
- // 'code',
84
+
85
+ var ALL_PLUGINS = ['bold', // 'code',
68
86
  'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'table', 'video', 'audio', 'responseArea'];
69
87
  exports.ALL_PLUGINS = ALL_PLUGINS;
70
88
  var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
71
89
  return plug !== 'responseArea';
72
90
  });
73
91
  exports.DEFAULT_PLUGINS = DEFAULT_PLUGINS;
92
+
74
93
  var buildPlugins = function buildPlugins(activePlugins, opts) {
75
94
  log('[buildPlugins] opts: ', opts);
76
95
  activePlugins = activePlugins || DEFAULT_PLUGINS;
96
+
77
97
  var addIf = function addIf(key, p) {
78
98
  return activePlugins.includes(key) && p;
79
99
  };
100
+
80
101
  var imagePlugin = opts.image && opts.image.onDelete && (0, _image["default"])(opts.image);
81
102
  var mathPlugin = (0, _math["default"])(opts.math);
82
103
  var respAreaPlugin = opts.responseArea && opts.responseArea.type && (0, _respArea["default"])(opts.responseArea, (0, _compact["default"])([mathPlugin]));
@@ -85,8 +106,7 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
85
106
  type: 'bold',
86
107
  icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
87
108
  tag: 'strong'
88
- })),
89
- // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
109
+ })), // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),
90
110
  addIf('italic', MarkHotkey({
91
111
  key: 'i',
92
112
  type: 'italic',
@@ -116,5 +136,6 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
116
136
  shift: true
117
137
  }), addIf('responseArea', respAreaPlugin)]));
118
138
  };
139
+
119
140
  exports.buildPlugins = buildPlugins;
120
141
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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 && opts.responseArea.type && 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
+ {"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","languageCharacters","map","config","shift"],"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 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 && opts.responseArea.type && 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"],"file":"index.js"}