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