@pie-lib/editable-html 11.4.0 → 11.6.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 (106) hide show
  1. package/CHANGELOG.md +24 -52
  2. package/package.json +8 -7
  3. package/src/editor.jsx +2 -2
  4. package/src/plugins/media/media-dialog.js +1 -1
  5. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +1 -1
  6. package/src/plugins/toolbar/editor-and-toolbar.jsx +1 -1
  7. package/lib/block-tags.js +0 -25
  8. package/lib/block-tags.js.map +0 -1
  9. package/lib/constants.js +0 -16
  10. package/lib/constants.js.map +0 -1
  11. package/lib/editor.js +0 -1355
  12. package/lib/editor.js.map +0 -1
  13. package/lib/index.js +0 -269
  14. package/lib/index.js.map +0 -1
  15. package/lib/parse-html.js +0 -16
  16. package/lib/parse-html.js.map +0 -1
  17. package/lib/plugins/characters/custom-popper.js +0 -73
  18. package/lib/plugins/characters/custom-popper.js.map +0 -1
  19. package/lib/plugins/characters/index.js +0 -305
  20. package/lib/plugins/characters/index.js.map +0 -1
  21. package/lib/plugins/characters/utils.js +0 -381
  22. package/lib/plugins/characters/utils.js.map +0 -1
  23. package/lib/plugins/css/icons/index.js +0 -37
  24. package/lib/plugins/css/icons/index.js.map +0 -1
  25. package/lib/plugins/css/index.js +0 -397
  26. package/lib/plugins/css/index.js.map +0 -1
  27. package/lib/plugins/customPlugin/index.js +0 -114
  28. package/lib/plugins/customPlugin/index.js.map +0 -1
  29. package/lib/plugins/html/icons/index.js +0 -38
  30. package/lib/plugins/html/icons/index.js.map +0 -1
  31. package/lib/plugins/html/index.js +0 -80
  32. package/lib/plugins/html/index.js.map +0 -1
  33. package/lib/plugins/image/alt-dialog.js +0 -129
  34. package/lib/plugins/image/alt-dialog.js.map +0 -1
  35. package/lib/plugins/image/component.js +0 -419
  36. package/lib/plugins/image/component.js.map +0 -1
  37. package/lib/plugins/image/image-toolbar.js +0 -177
  38. package/lib/plugins/image/image-toolbar.js.map +0 -1
  39. package/lib/plugins/image/index.js +0 -263
  40. package/lib/plugins/image/index.js.map +0 -1
  41. package/lib/plugins/image/insert-image-handler.js +0 -161
  42. package/lib/plugins/image/insert-image-handler.js.map +0 -1
  43. package/lib/plugins/index.js +0 -402
  44. package/lib/plugins/index.js.map +0 -1
  45. package/lib/plugins/list/index.js +0 -334
  46. package/lib/plugins/list/index.js.map +0 -1
  47. package/lib/plugins/math/index.js +0 -454
  48. package/lib/plugins/math/index.js.map +0 -1
  49. package/lib/plugins/media/index.js +0 -387
  50. package/lib/plugins/media/index.js.map +0 -1
  51. package/lib/plugins/media/media-dialog.js +0 -709
  52. package/lib/plugins/media/media-dialog.js.map +0 -1
  53. package/lib/plugins/media/media-toolbar.js +0 -101
  54. package/lib/plugins/media/media-toolbar.js.map +0 -1
  55. package/lib/plugins/media/media-wrapper.js +0 -93
  56. package/lib/plugins/media/media-wrapper.js.map +0 -1
  57. package/lib/plugins/rendering/index.js +0 -46
  58. package/lib/plugins/rendering/index.js.map +0 -1
  59. package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -254
  60. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
  61. package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -97
  62. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
  63. package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -57
  64. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
  65. package/lib/plugins/respArea/icons/index.js +0 -95
  66. package/lib/plugins/respArea/icons/index.js.map +0 -1
  67. package/lib/plugins/respArea/index.js +0 -341
  68. package/lib/plugins/respArea/index.js.map +0 -1
  69. package/lib/plugins/respArea/inline-dropdown/index.js +0 -75
  70. package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
  71. package/lib/plugins/respArea/math-templated/index.js +0 -130
  72. package/lib/plugins/respArea/math-templated/index.js.map +0 -1
  73. package/lib/plugins/respArea/utils.js +0 -125
  74. package/lib/plugins/respArea/utils.js.map +0 -1
  75. package/lib/plugins/table/CustomTablePlugin.js +0 -133
  76. package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
  77. package/lib/plugins/table/icons/index.js +0 -69
  78. package/lib/plugins/table/icons/index.js.map +0 -1
  79. package/lib/plugins/table/index.js +0 -483
  80. package/lib/plugins/table/index.js.map +0 -1
  81. package/lib/plugins/table/table-toolbar.js +0 -187
  82. package/lib/plugins/table/table-toolbar.js.map +0 -1
  83. package/lib/plugins/textAlign/icons/index.js +0 -226
  84. package/lib/plugins/textAlign/icons/index.js.map +0 -1
  85. package/lib/plugins/textAlign/index.js +0 -34
  86. package/lib/plugins/textAlign/index.js.map +0 -1
  87. package/lib/plugins/toolbar/default-toolbar.js +0 -229
  88. package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
  89. package/lib/plugins/toolbar/done-button.js +0 -53
  90. package/lib/plugins/toolbar/done-button.js.map +0 -1
  91. package/lib/plugins/toolbar/editor-and-toolbar.js +0 -286
  92. package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
  93. package/lib/plugins/toolbar/index.js +0 -34
  94. package/lib/plugins/toolbar/index.js.map +0 -1
  95. package/lib/plugins/toolbar/toolbar-buttons.js +0 -194
  96. package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
  97. package/lib/plugins/toolbar/toolbar.js +0 -376
  98. package/lib/plugins/toolbar/toolbar.js.map +0 -1
  99. package/lib/plugins/utils.js +0 -62
  100. package/lib/plugins/utils.js.map +0 -1
  101. package/lib/serialization.js +0 -677
  102. package/lib/serialization.js.map +0 -1
  103. package/lib/shared/alert-dialog.js +0 -75
  104. package/lib/shared/index.js +0 -136
  105. package/lib/theme.js +0 -9
  106. package/lib/theme.js.map +0 -1
@@ -1,483 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.serialization = exports.reactAttributes = exports.parseStyleString = exports.moveFocusToBeginningOfTable = exports["default"] = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _slate = require("slate");
17
-
18
- var _debug = _interopRequireDefault(require("debug"));
19
-
20
- var _GridOn = _interopRequireDefault(require("@material-ui/icons/GridOn"));
21
-
22
- var _tableToolbar = _interopRequireDefault(require("./table-toolbar"));
23
-
24
- var _propTypes = _interopRequireDefault(require("prop-types"));
25
-
26
- var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
27
-
28
- var _styles = require("@material-ui/core/styles");
29
-
30
- var _reactAttrConverter = _interopRequireDefault(require("react-attr-converter"));
31
-
32
- var _toStyle = require("to-style");
33
-
34
- var _CustomTablePlugin = _interopRequireDefault(require("./CustomTablePlugin"));
35
-
36
- 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; }
37
-
38
- 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; }
39
-
40
- var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:table');
41
- var Table = (0, _styles.withStyles)(function () {
42
- return {
43
- table: {}
44
- };
45
- })(function (props) {
46
- var nodeAttributes = dataToAttributes(props.node.data);
47
- return /*#__PURE__*/_react["default"].createElement("table", (0, _extends2["default"])({
48
- className: props.classes.table
49
- }, props.attributes, nodeAttributes, {
50
- onFocus: props.onFocus,
51
- onBlur: props.onBlur
52
- }), /*#__PURE__*/_react["default"].createElement("tbody", null, props.children));
53
- });
54
- Table.propTypes = {
55
- attributes: _propTypes["default"].object,
56
- onFocus: _propTypes["default"].func,
57
- onBlur: _propTypes["default"].func,
58
- node: _slatePropTypes["default"].node,
59
- children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired
60
- };
61
-
62
- var TableRow = function TableRow(props) {
63
- return /*#__PURE__*/_react["default"].createElement("tr", props.attributes, props.children);
64
- };
65
-
66
- TableRow.propTypes = {
67
- attributes: _propTypes["default"].object,
68
- onFocus: _propTypes["default"].func,
69
- onBlur: _propTypes["default"].func,
70
- children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired
71
- };
72
- var TableCell = (0, _styles.withStyles)(function () {
73
- return {
74
- td: {
75
- minWidth: '25px'
76
- }
77
- };
78
- })(function (props) {
79
- var Tag = props.node.data.get('header') ? 'th' : 'td';
80
- var nodeAttributes = dataToAttributes(props.node.data);
81
- delete nodeAttributes.header;
82
- return /*#__PURE__*/_react["default"].createElement(Tag, (0, _extends2["default"])({}, props.attributes, nodeAttributes, {
83
- colSpan: props.node.data.get('colspan'),
84
- className: props.classes[Tag],
85
- onFocus: props.onFocus,
86
- onBlur: props.onBlur
87
- }), props.children);
88
- });
89
- TableCell.propTypes = {
90
- attributes: _propTypes["default"].object,
91
- onFocus: _propTypes["default"].func,
92
- onBlur: _propTypes["default"].func,
93
- children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired
94
- };
95
-
96
- var moveFocusToBeginningOfTable = function moveFocusToBeginningOfTable(change) {
97
- var addedTable = change.value.document.findDescendant(function (d) {
98
- return !!d.data && !!d.data.get('newTable');
99
- });
100
-
101
- if (!addedTable) {
102
- return;
103
- }
104
-
105
- change.collapseToStartOf(addedTable);
106
- var update = addedTable.data.remove('newTable');
107
- change.setNodeByKey(addedTable.key, {
108
- data: update
109
- });
110
- };
111
-
112
- exports.moveFocusToBeginningOfTable = moveFocusToBeginningOfTable;
113
-
114
- var _default = function _default(opts, toolbarPlugins
115
- /* : {toolbar: {}}[] */
116
- ) {
117
- var core = (0, _CustomTablePlugin["default"])(opts); // fix outdated schema
118
-
119
- if (core.schema && core.schema.blocks) {
120
- Object.keys(core.schema.blocks).forEach(function (key) {
121
- var block = core.schema.blocks[key];
122
-
123
- if (block.parent) {
124
- if (block.nodes[0].types) {
125
- block.nodes[0] = {
126
- type: block.nodes[0].types[0]
127
- };
128
- }
129
-
130
- if (block.nodes[0].objects) {
131
- block.nodes[0] = {
132
- object: block.nodes[0].objects[0]
133
- };
134
- }
135
-
136
- block.parent = {
137
- type: block.parent.types[0]
138
- };
139
- } else {
140
- block.nodes[0] = {
141
- type: block.nodes[0].types[0]
142
- };
143
- }
144
- });
145
- }
146
-
147
- core.utils.getTableBlock = function (containerNode, key) {
148
- var node = containerNode.getDescendant(key);
149
- var ancestors = containerNode.getAncestors(key).push(node);
150
- return ancestors.findLast(function (p) {
151
- return p.type === 'table';
152
- });
153
- };
154
-
155
- core.utils.createTableWithOptions = function (row, columns, extra) {
156
- var createdTable = core.utils.createTable(row, columns);
157
-
158
- var newTable = _slate.Block.create(_objectSpread(_objectSpread({}, createdTable.toJSON()), extra));
159
-
160
- return newTable;
161
- };
162
-
163
- core.toolbar = {
164
- type: 'table',
165
- icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
166
- ariaLabel: 'Insert Table',
167
- onClick: function onClick(value, onChange) {
168
- log('insert table');
169
- var change = value.change();
170
- var newTable = core.utils.createTableWithOptions(2, 2, {
171
- data: {
172
- border: '1',
173
- newTable: true
174
- }
175
- });
176
- change.insertBlock(newTable);
177
- moveFocusToBeginningOfTable(change);
178
- onChange(change);
179
- },
180
- supports: function supports(node, value) {
181
- return node && node.object === 'block' && core.utils.isSelectionInTable(value);
182
- },
183
-
184
- /**
185
- * Note - the node may not be a table node - it may be a node inside a table.
186
- */
187
- customToolbar: function customToolbar(node, value, onToolbarDone, getFocusedValue) {
188
- log('[customToolbar] node.data: ', node.data);
189
- var tableBlock = core.utils.getTableBlock(value.document, node === null || node === void 0 ? void 0 : node.key);
190
- log('[customToolbar] tableBlock: ', tableBlock);
191
-
192
- var hasBorder = function hasBorder() {
193
- return tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';
194
- };
195
-
196
- var addRow = function addRow() {
197
- var change = core.changes.insertRow(value.change());
198
- onToolbarDone(change, false);
199
- };
200
-
201
- var addColumn = function addColumn() {
202
- var change = core.changes.insertColumn(value.change());
203
- onToolbarDone(change, false);
204
- };
205
-
206
- var removeRow = function removeRow() {
207
- var change = core.changes.removeRow(value.change());
208
- onToolbarDone(change, false);
209
- };
210
-
211
- var removeColumn = function removeColumn() {
212
- var change = core.changes.removeColumn(value.change());
213
- onToolbarDone(change, false);
214
- };
215
-
216
- var removeTable = function removeTable() {
217
- var change = core.changes.removeTable(value.change());
218
- onToolbarDone(change, false);
219
- };
220
-
221
- var toggleBorder = function toggleBorder() {
222
- var data = tableBlock.data;
223
- var update = data.set('border', hasBorder() ? '0' : '1');
224
- log('[toggleBorder] update: ', update);
225
- var change = value.change().setNodeByKey(tableBlock.key, {
226
- data: update
227
- });
228
- onToolbarDone(change, false);
229
- };
230
-
231
- var onDone = function onDone() {
232
- log('[onDone] call onToolbarDone...');
233
- onToolbarDone(null, true);
234
- };
235
-
236
- var Tb = function Tb() {
237
- return /*#__PURE__*/_react["default"].createElement(_tableToolbar["default"], {
238
- getFocusedValue: getFocusedValue,
239
- plugins: toolbarPlugins,
240
- onChange: function onChange(c) {
241
- return onToolbarDone(c, false);
242
- },
243
- value: value,
244
- onAddRow: addRow,
245
- onRemoveRow: removeRow,
246
- onAddColumn: addColumn,
247
- onRemoveColumn: removeColumn,
248
- onRemoveTable: removeTable,
249
- hasBorder: hasBorder(),
250
- onToggleBorder: toggleBorder,
251
- onDone: onDone
252
- });
253
- };
254
-
255
- return Tb;
256
- }
257
- };
258
-
259
- var Node = function Node(props) {
260
- switch (props.node.type) {
261
- case 'table':
262
- return /*#__PURE__*/_react["default"].createElement(Table, (0, _extends2["default"])({}, props, {
263
- onFocus: opts.onFocus,
264
- onBlur: opts.onBlur
265
- }));
266
-
267
- case 'table_row':
268
- return /*#__PURE__*/_react["default"].createElement(TableRow, props);
269
-
270
- case 'table_cell':
271
- return /*#__PURE__*/_react["default"].createElement(TableCell, (0, _extends2["default"])({}, props, {
272
- onFocus: opts.onFocus,
273
- onBlur: opts.onBlur
274
- }));
275
-
276
- default:
277
- return null;
278
- }
279
- };
280
-
281
- Node.propTypes = {
282
- node: _propTypes["default"].object
283
- };
284
-
285
- core.normalizeNode = function (node) {
286
- var addNodeBeforeArray = [];
287
- if (node.object !== 'document') return;
288
- node.findDescendant(function (d) {
289
- if (d.type === 'table') {
290
- var tablePath = node.getPath(d.key);
291
- var prevNode = node.getPreviousNode(tablePath);
292
- var nextNode = node.getNextNode(tablePath);
293
-
294
- if (!prevNode || !nextNode) {
295
- addNodeBeforeArray.push({
296
- node: d,
297
- prevNode: prevNode,
298
- nextNode: nextNode
299
- });
300
- }
301
- }
302
- });
303
-
304
- if (!addNodeBeforeArray.length) {
305
- return;
306
- }
307
-
308
- return function (change) {
309
- var newBlock = {
310
- object: 'block',
311
- type: 'div'
312
- };
313
- addNodeBeforeArray.forEach(function (n) {
314
- var tablePath = change.value.document.getPath(n.node.key).toJSON(); // removing tableIndex
315
-
316
- var indexToAdd = tablePath.splice(-1)[0];
317
-
318
- if (!n.prevNode) {
319
- // inserting block key before table
320
- change.insertNodeByPath(tablePath, indexToAdd, newBlock); // this will trigger another normalization, which will figure out if there's not
321
- // a block after the table and add it, so we exit for now
322
-
323
- return;
324
- }
325
-
326
- if (!n.nextNode) {
327
- // inserting block key after table
328
- change.insertNodeByPath(tablePath, indexToAdd + 1, newBlock);
329
- }
330
- });
331
- };
332
- };
333
-
334
- core.renderNode = Node;
335
- core.name = 'table';
336
- return core;
337
- };
338
-
339
- exports["default"] = _default;
340
-
341
- var parseStyleString = function parseStyleString(s) {
342
- var regex = /([\w-]*)\s*:\s*([^;]*)/g;
343
- var match;
344
- var result = {};
345
-
346
- while (match = regex.exec(s)) {
347
- result[match[1]] = match[2].trim();
348
- }
349
-
350
- return result;
351
- };
352
-
353
- exports.parseStyleString = parseStyleString;
354
-
355
- var reactAttributes = function reactAttributes(o) {
356
- return (0, _toStyle.object)(o, {
357
- camelize: true,
358
- addUnits: false
359
- });
360
- };
361
-
362
- exports.reactAttributes = reactAttributes;
363
-
364
- var attributesToMap = function attributesToMap(el) {
365
- return function (acc, attribute) {
366
- var value = el.getAttribute(attribute);
367
-
368
- if (value) {
369
- if (attribute === 'style') {
370
- var styleString = el.getAttribute(attribute);
371
- var reactStyleObject = reactAttributes(parseStyleString(styleString));
372
- acc['style'] = reactStyleObject;
373
- } else {
374
- acc[attribute] = el.getAttribute(attribute);
375
- }
376
- }
377
-
378
- return acc;
379
- };
380
- };
381
-
382
- var dataToAttributes = function dataToAttributes(data) {
383
- if (!data || !data.get) {
384
- return {};
385
- }
386
-
387
- return data.reduce(function (acc, v, name) {
388
- if (v) {
389
- acc[(0, _reactAttrConverter["default"])(name)] = v;
390
- }
391
-
392
- return acc;
393
- }, {});
394
- };
395
-
396
- var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
397
- var cellAttributes = ['colspan', 'rowspan', 'class', 'style'];
398
- var serialization = {
399
- deserialize: function deserialize(el, next) {
400
- var tag = el.tagName.toLowerCase();
401
-
402
- switch (tag) {
403
- case 'table':
404
- {
405
- var children = el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody' ? el.children[0].children : el.children;
406
- var c = Array.from(children);
407
- return {
408
- object: 'block',
409
- type: 'table',
410
- nodes: next(c),
411
- data: attributes.reduce(attributesToMap(el), {})
412
- };
413
- }
414
-
415
- case 'th':
416
- {
417
- return {
418
- object: 'block',
419
- type: 'table_cell',
420
- nodes: next(el.childNodes),
421
- data: cellAttributes.reduce(attributesToMap(el), {
422
- header: true
423
- })
424
- };
425
- }
426
-
427
- case 'tr':
428
- {
429
- return {
430
- object: 'block',
431
- type: 'table_row',
432
- nodes: next(Array.from(el.children))
433
- };
434
- }
435
-
436
- case 'td':
437
- {
438
- return {
439
- object: 'block',
440
- type: 'table_cell',
441
- nodes: next(Array.from(el.childNodes)),
442
- data: cellAttributes.reduce(attributesToMap(el), {
443
- header: false
444
- })
445
- };
446
- }
447
- }
448
- },
449
- serialize: function serialize(object, children) {
450
- if (object.object !== 'block') {
451
- return;
452
- }
453
-
454
- switch (object.type) {
455
- case 'table':
456
- {
457
- var _attributes = dataToAttributes(object.data);
458
-
459
- return /*#__PURE__*/_react["default"].createElement("table", _attributes, /*#__PURE__*/_react["default"].createElement("tbody", null, children));
460
- }
461
-
462
- case 'table_row':
463
- {
464
- return /*#__PURE__*/_react["default"].createElement("tr", null, children);
465
- }
466
-
467
- case 'table_cell':
468
- {
469
- var _attributes2 = dataToAttributes(object.data);
470
-
471
- delete _attributes2.header;
472
-
473
- if (object.data.get('header')) {
474
- return /*#__PURE__*/_react["default"].createElement("th", _attributes2, children);
475
- } else {
476
- return /*#__PURE__*/_react["default"].createElement("td", _attributes2, children);
477
- }
478
- }
479
- }
480
- }
481
- };
482
- exports.serialization = serialization;
483
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/plugins/table/index.jsx"],"names":["log","Table","table","props","nodeAttributes","dataToAttributes","node","data","classes","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","SlatePropTypes","oneOfType","arrayOf","isRequired","TableRow","TableCell","td","minWidth","Tag","get","header","moveFocusToBeginningOfTable","change","addedTable","value","document","findDescendant","d","collapseToStartOf","update","remove","setNodeByKey","key","opts","toolbarPlugins","core","schema","blocks","Object","keys","forEach","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","createTableWithOptions","row","columns","extra","createdTable","createTable","newTable","Block","create","toJSON","toolbar","icon","ariaLabel","onClick","onChange","border","insertBlock","supports","isSelectionInTable","customToolbar","onToolbarDone","getFocusedValue","tableBlock","hasBorder","addRow","changes","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","set","onDone","Tb","c","Node","normalizeNode","addNodeBeforeArray","tablePath","getPath","prevNode","getPreviousNode","nextNode","getNextNode","length","newBlock","n","indexToAdd","splice","insertNodeByPath","renderNode","name","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Block } from 'slate';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport SlatePropTypes from 'slate-prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\nimport CustomTablePlugin from './CustomTablePlugin';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = withStyles(() => ({\n table: {},\n}))((props) => {\n const nodeAttributes = dataToAttributes(props.node.data);\n\n return (\n <table\n className={props.classes.table}\n {...props.attributes}\n {...nodeAttributes}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n <tbody>{props.children}</tbody>\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: SlatePropTypes.node,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableRow = (props) => <tr {...props.attributes}>{props.children}</tr>;\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableCell = withStyles(() => ({\n td: {\n minWidth: '25px',\n },\n}))((props) => {\n const Tag = props.node.data.get('header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.node.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={props.node.data.get('colspan')}\n className={props.classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nexport const moveFocusToBeginningOfTable = (change) => {\n const addedTable = change.value.document.findDescendant((d) => !!d.data && !!d.data.get('newTable'));\n\n if (!addedTable) {\n return;\n }\n\n change.collapseToStartOf(addedTable);\n\n const update = addedTable.data.remove('newTable');\n\n change.setNodeByKey(addedTable.key, { data: update });\n};\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = CustomTablePlugin(opts);\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 if (block.nodes[0].types) {\n block.nodes[0] = {\n type: block.nodes[0].types[0],\n };\n }\n\n if (block.nodes[0].objects) {\n block.nodes[0] = {\n object: block.nodes[0].objects[0],\n };\n }\n\n block.parent = {\n type: block.parent.types[0],\n };\n } else {\n block.nodes[0] = { type: block.nodes[0].types[0] };\n }\n });\n }\n\n core.utils.getTableBlock = (containerNode, key) => {\n const node = containerNode.getDescendant(key);\n const ancestors = containerNode.getAncestors(key).push(node);\n return ancestors.findLast((p) => p.type === 'table');\n };\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = Block.create({\n ...createdTable.toJSON(),\n ...extra,\n });\n\n return newTable;\n };\n\n core.toolbar = {\n type: 'table',\n icon: <GridOn />,\n ariaLabel: 'Insert Table',\n onClick: (value, onChange) => {\n log('insert table');\n const change = value.change();\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1',\n newTable: true,\n },\n });\n\n change.insertBlock(newTable);\n\n moveFocusToBeginningOfTable(change);\n onChange(change);\n },\n supports: (node, value) => node && node.object === 'block' && core.utils.isSelectionInTable(value),\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, value, onToolbarDone, getFocusedValue) => {\n log('[customToolbar] node.data: ', node.data);\n\n const tableBlock = core.utils.getTableBlock(value.document, node?.key);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () => tableBlock.data.get('border') && tableBlock.data.get('border') !== '0';\n const addRow = () => {\n const change = core.changes.insertRow(value.change());\n onToolbarDone(change, false);\n };\n\n const addColumn = () => {\n const change = core.changes.insertColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeRow = () => {\n const change = core.changes.removeRow(value.change());\n onToolbarDone(change, false);\n };\n\n const removeColumn = () => {\n const change = core.changes.removeColumn(value.change());\n onToolbarDone(change, false);\n };\n\n const removeTable = () => {\n const change = core.changes.removeTable(value.change());\n onToolbarDone(change, false);\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = data.set('border', hasBorder() ? '0' : '1');\n log('[toggleBorder] update: ', update);\n const change = value.change().setNodeByKey(tableBlock.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(null, true);\n };\n\n const Tb = () => (\n <TableToolbar\n getFocusedValue={getFocusedValue}\n plugins={toolbarPlugins}\n onChange={(c) => onToolbarDone(c, false)}\n value={value}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n\n return Tb;\n },\n };\n\n const Node = (props) => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'table_row':\n return <TableRow {...props} />;\n case 'table_cell':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object,\n };\n\n core.normalizeNode = (node) => {\n const addNodeBeforeArray = [];\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.type === 'table') {\n const tablePath = node.getPath(d.key);\n const prevNode = node.getPreviousNode(tablePath);\n const nextNode = node.getNextNode(tablePath);\n\n if (!prevNode || !nextNode) {\n addNodeBeforeArray.push({\n node: d,\n prevNode,\n nextNode,\n });\n }\n }\n });\n\n if (!addNodeBeforeArray.length) {\n return;\n }\n\n return (change) => {\n const newBlock = {\n object: 'block',\n type: 'div',\n };\n\n addNodeBeforeArray.forEach((n) => {\n const tablePath = change.value.document.getPath(n.node.key).toJSON();\n // removing tableIndex\n let indexToAdd = tablePath.splice(-1)[0];\n\n if (!n.prevNode) {\n // inserting block key before table\n change.insertNodeByPath(tablePath, indexToAdd, newBlock);\n // this will trigger another normalization, which will figure out if there's not\n // a block after the table and add it, so we exit for now\n return;\n }\n\n if (!n.nextNode) {\n // inserting block key after table\n change.insertNodeByPath(tablePath, indexToAdd + 1, newBlock);\n }\n });\n };\n };\n\n core.renderNode = Node;\n core.name = 'table';\n\n return core;\n};\n\nexport const parseStyleString = (s) => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = (el) => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = (data) => {\n if (!data || !data.get) {\n return {};\n }\n\n return data.reduce((acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n }, {});\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return {\n object: 'block',\n type: 'table',\n nodes: next(c),\n data: attributes.reduce(attributesToMap(el), {}),\n };\n }\n\n case 'th': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(el.childNodes),\n data: cellAttributes.reduce(attributesToMap(el), { header: true }),\n };\n }\n\n case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children)),\n };\n }\n\n case 'td': {\n return {\n object: 'block',\n type: 'table_cell',\n nodes: next(Array.from(el.childNodes)),\n data: cellAttributes.reduce(attributesToMap(el), { header: false }),\n };\n }\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') {\n return;\n }\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n\n return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\n\n if (object.data.get('header')) {\n return <th {...attributes}>{children}</th>;\n } else {\n return <td {...attributes}>{children}</td>;\n }\n }\n }\n },\n};\n"],"file":"index.js"}