@pie-lib/editable-html 7.17.4-next.53 → 7.17.4-next.556
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.json +150 -0
- package/CHANGELOG.md +421 -0
- package/lib/editor.js +390 -172
- package/lib/editor.js.map +1 -1
- package/lib/index.js +66 -53
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js.map +1 -1
- 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 +285 -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/image/alt-dialog.js +119 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -0
- package/lib/plugins/image/component.js +253 -77
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +95 -61
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +62 -20
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +9 -15
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +20 -12
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +82 -14
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +50 -55
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +71 -27
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +248 -72
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -30
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +28 -35
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +68 -46
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +12 -12
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +10 -9
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +11 -11
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +58 -42
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +8 -8
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +5 -5
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +12 -12
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +83 -27
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +41 -50
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +19 -13
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +5 -5
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +51 -44
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +49 -52
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +64 -62
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +1 -1
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +32 -9
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +7 -6
- package/src/editor.jsx +224 -26
- package/src/index.jsx +22 -5
- package/src/plugins/characters/custom-popper.js +48 -0
- package/src/plugins/characters/index.jsx +268 -0
- package/src/plugins/characters/utils.js +447 -0
- package/src/plugins/image/alt-dialog.jsx +69 -0
- package/src/plugins/image/component.jsx +204 -21
- package/src/plugins/image/image-toolbar.jsx +68 -22
- package/src/plugins/image/index.jsx +47 -9
- package/src/plugins/index.jsx +4 -1
- package/src/plugins/list/index.jsx +67 -5
- package/src/plugins/math/index.jsx +31 -37
- package/src/plugins/media/index.jsx +49 -6
- package/src/plugins/media/media-dialog.js +261 -89
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +28 -1
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +3 -3
- package/src/plugins/respArea/index.jsx +50 -31
- package/src/plugins/table/index.jsx +63 -14
- package/src/plugins/toolbar/default-toolbar.jsx +20 -2
- package/src/plugins/toolbar/editor-and-toolbar.jsx +35 -4
- package/src/plugins/toolbar/toolbar-buttons.jsx +13 -2
- package/src/plugins/toolbar/toolbar.jsx +18 -3
- package/src/serialization.jsx +19 -3
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.RemoveTable = exports.
|
|
8
|
+
exports.RemoveTable = exports.RemoveRow = exports.RemoveColumn = exports.AddRow = exports.AddColumn = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
11
|
|
|
8
12
|
var _react = _interopRequireDefault(require("react"));
|
|
9
13
|
|
|
10
14
|
var _styles = require("@material-ui/core/styles");
|
|
11
15
|
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
|
-
|
|
14
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
15
|
-
|
|
16
16
|
var styles = {
|
|
17
17
|
icon: {
|
|
18
18
|
fill: 'grey',
|
|
@@ -24,44 +24,44 @@ var styles = {
|
|
|
24
24
|
|
|
25
25
|
var SvgIcon = function SvgIcon(Component) {
|
|
26
26
|
return (0, _styles.withStyles)(styles)(function (props) {
|
|
27
|
-
return _react["default"].createElement("svg", {
|
|
27
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
28
28
|
xmlns: "http://www.w3.org/2000/svg",
|
|
29
29
|
version: "1.1",
|
|
30
30
|
width: "24",
|
|
31
31
|
height: "24",
|
|
32
32
|
viewBox: "0 0 24 24"
|
|
33
|
-
}, _react["default"].createElement(Component, {
|
|
33
|
+
}, /*#__PURE__*/_react["default"].createElement(Component, {
|
|
34
34
|
className: props.classes.icon
|
|
35
35
|
}));
|
|
36
36
|
});
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
var AddRow = SvgIcon(function (props) {
|
|
40
|
-
return _react["default"].createElement("path",
|
|
40
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
41
41
|
d: "M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z"
|
|
42
42
|
}));
|
|
43
43
|
});
|
|
44
44
|
exports.AddRow = AddRow;
|
|
45
45
|
var RemoveRow = SvgIcon(function (props) {
|
|
46
|
-
return _react["default"].createElement("path",
|
|
46
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
47
47
|
d: "M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z"
|
|
48
48
|
}));
|
|
49
49
|
});
|
|
50
50
|
exports.RemoveRow = RemoveRow;
|
|
51
51
|
var AddColumn = SvgIcon(function (props) {
|
|
52
|
-
return _react["default"].createElement("path",
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
53
53
|
d: "M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z"
|
|
54
54
|
}));
|
|
55
55
|
});
|
|
56
56
|
exports.AddColumn = AddColumn;
|
|
57
57
|
var RemoveColumn = SvgIcon(function (props) {
|
|
58
|
-
return _react["default"].createElement("path",
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
59
59
|
d: "M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z"
|
|
60
60
|
}));
|
|
61
61
|
});
|
|
62
62
|
exports.RemoveColumn = RemoveColumn;
|
|
63
63
|
var RemoveTable = SvgIcon(function (props) {
|
|
64
|
-
return _react["default"].createElement("path",
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({}, props, {
|
|
65
65
|
d: "M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z"
|
|
66
66
|
}));
|
|
67
67
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["styles","icon","fill","SvgIcon","Component","withStyles","props","classes","AddRow","RemoveRow","AddColumn","RemoveColumn","RemoveTable"],"sources":["../../../../src/plugins/table/icons/index.jsx"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst styles = {\n icon: {\n fill: 'grey',\n '&:hover': {\n fill: 'black'\n }\n }\n};\n\nconst SvgIcon = Component => {\n return withStyles(styles)(props => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <Component className={props.classes.icon} />\n </svg>\n ));\n};\nexport const AddRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z\"\n />\n));\n\nexport const RemoveRow = SvgIcon(props => (\n <path\n {...props}\n d=\"M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z\"\n />\n));\n\nexport const AddColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z\"\n />\n));\n\nexport const RemoveColumn = SvgIcon(props => (\n <path\n {...props}\n d=\"M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z\"\n />\n));\n\nexport const RemoveTable = SvgIcon(props => (\n <path\n {...props}\n d=\"M15.46,15.88L16.88,14.46L19,16.59L21.12,14.46L22.54,15.88L20.41,18L22.54,20.12L21.12,21.54L19,19.41L16.88,21.54L15.46,20.12L17.59,18L15.46,15.88M4,3H18A2,2 0 0,1 20,5V12.08C18.45,11.82 16.92,12.18 15.68,13H12V17H13.08C12.97,17.68 12.97,18.35 13.08,19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,7V11H10V7H4M12,7V11H18V7H12M4,13V17H10V13H4Z\"\n />\n));\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,MAAM,GAAG;EACbC,IAAI,EAAE;IACJC,IAAI,EAAE,MADF;IAEJ,WAAW;MACTA,IAAI,EAAE;IADG;EAFP;AADO,CAAf;;AASA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,SAAS,EAAI;EAC3B,OAAO,IAAAC,kBAAA,EAAWL,MAAX,EAAmB,UAAAM,KAAK;IAAA,oBAC7B;MACE,KAAK,EAAC,4BADR;MAEE,OAAO,EAAC,KAFV;MAGE,KAAK,EAAC,IAHR;MAIE,MAAM,EAAC,IAJT;MAKE,OAAO,EAAC;IALV,gBAOE,gCAAC,SAAD;MAAW,SAAS,EAAEA,KAAK,CAACC,OAAN,CAAcN;IAApC,EAPF,CAD6B;EAAA,CAAxB,CAAP;AAWD,CAZD;;AAaO,IAAMO,MAAM,GAAGL,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACjC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADiC;AAAA,CAAN,CAAtB;;AAOA,IAAMG,SAAS,GAAGN,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACpC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMI,SAAS,GAAGP,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACpC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMK,YAAY,GAAGR,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACvC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADuC;AAAA,CAAN,CAA5B;;AAOA,IAAMM,WAAW,GAAGT,OAAO,CAAC,UAAAG,KAAK;EAAA,oBACtC,sEACMA,KADN;IAEE,CAAC,EAAC;EAFJ,GADsC;AAAA,CAAN,CAA3B"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.serialization = exports.reactAttributes = exports.parseStyleString = exports["default"] = void 0;
|
|
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"));
|
|
7
13
|
|
|
8
14
|
var _react = _interopRequireDefault(require("react"));
|
|
9
15
|
|
|
@@ -27,9 +33,9 @@ var _reactAttrConverter = _interopRequireDefault(require("react-attr-converter")
|
|
|
27
33
|
|
|
28
34
|
var _toStyle = require("to-style");
|
|
29
35
|
|
|
30
|
-
function
|
|
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; }
|
|
31
37
|
|
|
32
|
-
function
|
|
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; }
|
|
33
39
|
|
|
34
40
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:table');
|
|
35
41
|
var Table = (0, _styles.withStyles)(function () {
|
|
@@ -38,12 +44,12 @@ var Table = (0, _styles.withStyles)(function () {
|
|
|
38
44
|
};
|
|
39
45
|
})(function (props) {
|
|
40
46
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
41
|
-
return _react["default"].createElement("table",
|
|
47
|
+
return /*#__PURE__*/_react["default"].createElement("table", (0, _extends2["default"])({
|
|
42
48
|
className: props.classes.table
|
|
43
49
|
}, props.attributes, nodeAttributes, {
|
|
44
50
|
onFocus: props.onFocus,
|
|
45
51
|
onBlur: props.onBlur
|
|
46
|
-
}), _react["default"].createElement("tbody", null, props.children));
|
|
52
|
+
}), /*#__PURE__*/_react["default"].createElement("tbody", null, props.children));
|
|
47
53
|
});
|
|
48
54
|
Table.propTypes = {
|
|
49
55
|
attributes: _propTypes["default"].object,
|
|
@@ -54,7 +60,7 @@ Table.propTypes = {
|
|
|
54
60
|
};
|
|
55
61
|
|
|
56
62
|
var TableRow = function TableRow(props) {
|
|
57
|
-
return _react["default"].createElement("tr", props.attributes, props.children);
|
|
63
|
+
return /*#__PURE__*/_react["default"].createElement("tr", props.attributes, props.children);
|
|
58
64
|
};
|
|
59
65
|
|
|
60
66
|
TableRow.propTypes = {
|
|
@@ -73,7 +79,7 @@ var TableCell = (0, _styles.withStyles)(function () {
|
|
|
73
79
|
var Tag = props.node.data.get('header') ? 'th' : 'td';
|
|
74
80
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
75
81
|
delete nodeAttributes.header;
|
|
76
|
-
return _react["default"].createElement(Tag,
|
|
82
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, (0, _extends2["default"])({}, props.attributes, nodeAttributes, {
|
|
77
83
|
colSpan: props.node.data.get('colspan'),
|
|
78
84
|
className: props.classes[Tag],
|
|
79
85
|
onFocus: props.onFocus,
|
|
@@ -87,6 +93,24 @@ TableCell.propTypes = {
|
|
|
87
93
|
children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired
|
|
88
94
|
};
|
|
89
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
|
+
|
|
90
114
|
var _default = function _default(opts, toolbarPlugins
|
|
91
115
|
/* : {toolbar: {}}[] */
|
|
92
116
|
) {
|
|
@@ -130,12 +154,28 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
130
154
|
});
|
|
131
155
|
};
|
|
132
156
|
|
|
157
|
+
core.utils.createTableWithOptions = function (row, columns, extra) {
|
|
158
|
+
var createdTable = core.utils.createTable(row, columns);
|
|
159
|
+
|
|
160
|
+
var newTable = _slate.Block.create(_objectSpread(_objectSpread({}, createdTable.toJSON()), extra));
|
|
161
|
+
|
|
162
|
+
return newTable;
|
|
163
|
+
};
|
|
164
|
+
|
|
133
165
|
core.toolbar = {
|
|
134
|
-
icon: _react["default"].createElement(_GridOn["default"], null),
|
|
166
|
+
icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
|
|
135
167
|
onClick: function onClick(value, onChange) {
|
|
136
168
|
log('insert table');
|
|
137
|
-
var
|
|
138
|
-
|
|
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);
|
|
139
179
|
},
|
|
140
180
|
supports: function supports(node, value) {
|
|
141
181
|
return node && node.object === 'block' && core.utils.isSelectionInTable(value);
|
|
@@ -146,7 +186,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
146
186
|
*/
|
|
147
187
|
customToolbar: function customToolbar(node, value, onToolbarDone) {
|
|
148
188
|
log('[customToolbar] node.data: ', node.data);
|
|
149
|
-
var tableBlock = core.utils.getTableBlock(value.document, node.key);
|
|
189
|
+
var tableBlock = core.utils.getTableBlock(value.document, node === null || node === void 0 ? void 0 : node.key);
|
|
150
190
|
log('[customToolbar] tableBlock: ', tableBlock);
|
|
151
191
|
|
|
152
192
|
var hasBorder = function hasBorder() {
|
|
@@ -194,7 +234,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
194
234
|
};
|
|
195
235
|
|
|
196
236
|
var Tb = function Tb() {
|
|
197
|
-
return _react["default"].createElement(_tableToolbar["default"], {
|
|
237
|
+
return /*#__PURE__*/_react["default"].createElement(_tableToolbar["default"], {
|
|
198
238
|
plugins: toolbarPlugins,
|
|
199
239
|
onChange: function onChange(c) {
|
|
200
240
|
return onToolbarDone(c, false);
|
|
@@ -218,16 +258,16 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
218
258
|
var Node = function Node(props) {
|
|
219
259
|
switch (props.node.type) {
|
|
220
260
|
case 'table':
|
|
221
|
-
return _react["default"].createElement(Table,
|
|
261
|
+
return /*#__PURE__*/_react["default"].createElement(Table, (0, _extends2["default"])({}, props, {
|
|
222
262
|
onFocus: opts.onFocus,
|
|
223
263
|
onBlur: opts.onBlur
|
|
224
264
|
}));
|
|
225
265
|
|
|
226
266
|
case 'table_row':
|
|
227
|
-
return _react["default"].createElement(TableRow, props);
|
|
267
|
+
return /*#__PURE__*/_react["default"].createElement(TableRow, props);
|
|
228
268
|
|
|
229
269
|
case 'table_cell':
|
|
230
|
-
return _react["default"].createElement(TableCell,
|
|
270
|
+
return /*#__PURE__*/_react["default"].createElement(TableCell, (0, _extends2["default"])({}, props, {
|
|
231
271
|
onFocus: opts.onFocus,
|
|
232
272
|
onBlur: opts.onBlur
|
|
233
273
|
}));
|
|
@@ -246,9 +286,18 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
246
286
|
return;
|
|
247
287
|
}
|
|
248
288
|
|
|
289
|
+
var tableAdded = node.findDescendant(function (d) {
|
|
290
|
+
return d.data && d.data.get('newTable');
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
if (!tableAdded) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
var nodeToSearch = node.getParent(tableAdded.key) || node;
|
|
249
298
|
var shouldAddTextAfterNode = false;
|
|
250
|
-
var indexToNotHaveTableOn =
|
|
251
|
-
var indexOfLastTable =
|
|
299
|
+
var indexToNotHaveTableOn = nodeToSearch.nodes.size - 1;
|
|
300
|
+
var indexOfLastTable = nodeToSearch.nodes.findLastIndex(function (d) {
|
|
252
301
|
return d.type === 'table';
|
|
253
302
|
}); // if the last table in the document is of type table, we need to do the change
|
|
254
303
|
|
|
@@ -260,13 +309,12 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
260
309
|
return;
|
|
261
310
|
}
|
|
262
311
|
|
|
263
|
-
var tableNode = node.nodes.get(indexOfLastTable);
|
|
264
312
|
return function (change) {
|
|
265
313
|
if (shouldAddTextAfterNode) {
|
|
266
|
-
var tableJSON =
|
|
314
|
+
var tableJSON = tableAdded.toJSON(); // we remove the table node because otherwise we can't add the empty block after it
|
|
267
315
|
// we need a block that contains text in order to do it
|
|
268
316
|
|
|
269
|
-
change.removeNodeByKey(
|
|
317
|
+
change.removeNodeByKey(tableAdded.key);
|
|
270
318
|
|
|
271
319
|
var newBlock = _slate.Block.create({
|
|
272
320
|
object: 'block',
|
|
@@ -282,12 +330,19 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
282
330
|
var prevText = change.value.document.getPreviousText(newBlock.key);
|
|
283
331
|
|
|
284
332
|
if (prevText) {
|
|
333
|
+
var _prevText$text, _prevText$text2;
|
|
334
|
+
|
|
285
335
|
// we move focus to the previous text
|
|
286
|
-
change.moveFocusTo(prevText.key, prevText.text.length).moveAnchorTo(prevText.key, prevText.text.length);
|
|
336
|
+
change.moveFocusTo(prevText.key, (_prevText$text = prevText.text) === null || _prevText$text === void 0 ? void 0 : _prevText$text.length).moveAnchorTo(prevText.key, (_prevText$text2 = prevText.text) === null || _prevText$text2 === void 0 ? void 0 : _prevText$text2.length);
|
|
287
337
|
} // we insert the table block between the first block with text and the last block with text
|
|
288
338
|
|
|
289
339
|
|
|
290
|
-
change.insertBlock(tableJSON)
|
|
340
|
+
change.insertBlock(_objectSpread(_objectSpread({}, tableJSON), {}, {
|
|
341
|
+
data: _objectSpread(_objectSpread({}, tableJSON.data), {}, {
|
|
342
|
+
newTable: true
|
|
343
|
+
})
|
|
344
|
+
}));
|
|
345
|
+
moveFocusToBeginningOfTable(change);
|
|
291
346
|
});
|
|
292
347
|
}
|
|
293
348
|
};
|
|
@@ -315,7 +370,8 @@ exports.parseStyleString = parseStyleString;
|
|
|
315
370
|
|
|
316
371
|
var reactAttributes = function reactAttributes(o) {
|
|
317
372
|
return (0, _toStyle.object)(o, {
|
|
318
|
-
camelize: true
|
|
373
|
+
camelize: true,
|
|
374
|
+
addUnits: false
|
|
319
375
|
});
|
|
320
376
|
};
|
|
321
377
|
|
|
@@ -416,12 +472,12 @@ var serialization = {
|
|
|
416
472
|
{
|
|
417
473
|
var _attributes = dataToAttributes(object.data);
|
|
418
474
|
|
|
419
|
-
return _react["default"].createElement("table", _attributes, _react["default"].createElement("tbody", null, children));
|
|
475
|
+
return /*#__PURE__*/_react["default"].createElement("table", _attributes, /*#__PURE__*/_react["default"].createElement("tbody", null, children));
|
|
420
476
|
}
|
|
421
477
|
|
|
422
478
|
case 'table_row':
|
|
423
479
|
{
|
|
424
|
-
return _react["default"].createElement("tr", null, children);
|
|
480
|
+
return /*#__PURE__*/_react["default"].createElement("tr", null, children);
|
|
425
481
|
}
|
|
426
482
|
|
|
427
483
|
case 'table_cell':
|
|
@@ -431,9 +487,9 @@ var serialization = {
|
|
|
431
487
|
delete _attributes2.header;
|
|
432
488
|
|
|
433
489
|
if (object.data.get('header')) {
|
|
434
|
-
return _react["default"].createElement("th", _attributes2, children);
|
|
490
|
+
return /*#__PURE__*/_react["default"].createElement("th", _attributes2, children);
|
|
435
491
|
} else {
|
|
436
|
-
return _react["default"].createElement("td", _attributes2, children);
|
|
492
|
+
return /*#__PURE__*/_react["default"].createElement("td", _attributes2, children);
|
|
437
493
|
}
|
|
438
494
|
}
|
|
439
495
|
}
|
|
@@ -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","opts","toolbarPlugins","core","typeContent","schema","blocks","Object","keys","forEach","key","block","parent","nodes","types","type","objects","utils","getTableBlock","containerNode","getDescendant","ancestors","getAncestors","push","findLast","p","toolbar","icon","onClick","value","onChange","c","changes","insertTable","change","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","document","hasBorder","addRow","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","update","set","setNodeByKey","onDone","Tb","Node","normalizeNode","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","d","tableNode","tableJSON","toJSON","removeNodeByKey","newBlock","Block","create","insertBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"mappings":"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","sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\nimport { Block, Inline } 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';\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 default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = EditTable({\n typeContent: 'div'\n });\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.toolbar = {\n icon: <GridOn />,\n onClick: (value, onChange) => {\n log('insert table');\n const c = core.changes.insertTable(value.change(), 2, 2);\n onChange(c);\n },\n supports: (node, value) =>\n 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) => {\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 = () =>\n 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 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 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 if (node.object !== 'document') {\n return;\n }\n\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = node.nodes.size - 1;\n const indexOfLastTable = node.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n const tableNode = node.nodes.get(indexOfLastTable);\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableNode.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableNode.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text.length)\n .moveAnchorTo(prevText.key, prevText.text.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock(tableJSON);\n });\n }\n };\n };\n\n core.renderNode = Node;\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 });\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 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 case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\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 return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\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":["log","debug","Table","withStyles","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","EditTable","typeContent","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","onClick","onChange","border","insertBlock","supports","isSelectionInTable","customToolbar","onToolbarDone","tableBlock","hasBorder","addRow","changes","insertRow","addColumn","insertColumn","removeRow","removeColumn","removeTable","toggleBorder","set","onDone","Tb","c","Node","normalizeNode","tableAdded","nodeToSearch","getParent","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","tableJSON","removeNodeByKey","newBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","getAttribute","styleString","reactStyleObject","reduce","v","name","convert","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","Array","from","childNodes","serialize"],"sources":["../../../src/plugins/table/index.jsx"],"sourcesContent":["import React from 'react';\nimport EditTable from 'slate-edit-table';\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';\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(\n d => !!d.data && !!d.data.get('newTable')\n );\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 = EditTable({\n typeContent: 'div'\n });\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 icon: <GridOn />,\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) =>\n 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) => {\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 = () =>\n 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 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 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 if (node.object !== 'document') {\n return;\n }\n\n const tableAdded = node.findDescendant(d => d.data && d.data.get('newTable'));\n\n if (!tableAdded) {\n return;\n }\n\n const nodeToSearch = node.getParent(tableAdded.key) || node;\n let shouldAddTextAfterNode = false;\n const indexToNotHaveTableOn = nodeToSearch.nodes.size - 1;\n const indexOfLastTable = nodeToSearch.nodes.findLastIndex(d => d.type === 'table');\n\n // if the last table in the document is of type table, we need to do the change\n if (indexOfLastTable === indexToNotHaveTableOn) {\n shouldAddTextAfterNode = true;\n }\n\n if (!shouldAddTextAfterNode) {\n return;\n }\n\n return change => {\n if (shouldAddTextAfterNode) {\n const tableJSON = tableAdded.toJSON();\n\n // we remove the table node because otherwise we can't add the empty block after it\n // we need a block that contains text in order to do it\n change.removeNodeByKey(tableAdded.key);\n\n const newBlock = Block.create({\n object: 'block',\n type: 'div'\n });\n\n // we add an empty block but that it's going to be normalized\n // because it will add the empty text to it like it should\n change.insertBlock(newBlock);\n\n change.withoutNormalization(() => {\n // we do these changes without normalization\n\n // we get the text previous to the new block added\n const prevText = change.value.document.getPreviousText(newBlock.key);\n\n if (prevText) {\n // we move focus to the previous text\n change\n .moveFocusTo(prevText.key, prevText.text?.length)\n .moveAnchorTo(prevText.key, prevText.text?.length);\n }\n\n // we insert the table block between the first block with text and the last block with text\n change.insertBlock({\n ...tableJSON,\n data: {\n ...tableJSON.data,\n newTable: true\n }\n });\n\n moveFocusToBeginningOfTable(change);\n });\n }\n };\n };\n\n core.renderNode = Node;\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 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 case 'tr': {\n return {\n object: 'block',\n type: 'table_row',\n nodes: next(Array.from(el.children))\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 return (\n <table {...attributes}>\n <tbody>{children}</tbody>\n </table>\n );\n }\n case 'table_row': {\n return <tr>{children}</tr>;\n }\n case 'table_cell': {\n const attributes = dataToAttributes(object.data);\n delete attributes.header;\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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"}
|