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