@pie-lib/editable-html 12.1.0-next.2 → 12.1.0-next.30

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