@pie-lib/editable-html 7.17.19 → 7.19.1
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 +120 -0
- package/CHANGELOG.md +44 -0
- package/lib/editor.js +27 -20
- package/lib/editor.js.map +1 -1
- package/lib/index.js +27 -21
- package/lib/index.js.map +1 -1
- package/lib/plugins/image/component.js +20 -18
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +21 -19
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +7 -7
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +2 -4
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +7 -7
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +7 -7
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +13 -12
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +16 -13
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +27 -23
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +19 -15
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +20 -14
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +25 -19
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -6
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -3
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +7 -7
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +36 -9
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +4 -4
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +3 -3
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +8 -8
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +32 -24
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +26 -24
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +7 -7
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +3 -3
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +23 -19
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +1 -1
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +22 -18
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +25 -21
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +1 -1
- package/lib/serialization.js +4 -4
- package/lib/serialization.js.map +1 -1
- package/package.json +2 -2
- package/src/editor.jsx +4 -2
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -1
- package/src/plugins/respArea/index.jsx +28 -2
- package/src/plugins/table/index.jsx +11 -6
- package/src/plugins/toolbar/toolbar.jsx +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkC;AAAA,MAA/BC,UAA+B,QAA/BA,UAA+B;AAAA,MAAnBC,YAAmB,QAAnBA,YAAmB;AACvD;AACA;AACA,MAAMC,IAAI,GAAGD,YAAY,IAAI,kBAA7B;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/plugins/respArea/inline-dropdown/index.jsx"],"names":["InlineDropdown","attributes","selectedItem","html","display","height","margin","cursor","minWidth","background","border","boxSizing","borderRadius","position","flex","overflow","padding","whiteSpace","textOverflow","lineHeight","__html","top","right","propTypes","PropTypes","object","oneOfType","string"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAAkC;AAAA,MAA/BC,UAA+B,QAA/BA,UAA+B;AAAA,MAAnBC,YAAmB,QAAnBA,YAAmB;AACvD;AACA;AACA,MAAMC,IAAI,GAAGD,YAAY,IAAI,kBAA7B;AAEA,sBACE,qDACMD,UADN;AAEE,IAAA,KAAK,EAAE;AACLG,MAAAA,OAAO,EAAE,aADJ;AAELC,MAAAA,MAAM,EAAE,MAFH;AAGLC,MAAAA,MAAM,EAAE,OAHH;AAILC,MAAAA,MAAM,EAAE;AAJH;AAFT,mBASE;AACE,IAAA,KAAK,EAAE;AACLH,MAAAA,OAAO,EAAE,aADJ;AAELI,MAAAA,QAAQ,EAAE,OAFL;AAGLH,MAAAA,MAAM,EAAE,MAHH;AAILI,MAAAA,UAAU,EAAE,MAJP;AAKLC,MAAAA,MAAM,EAAE,mBALH;AAMLC,MAAAA,SAAS,EAAE,YANN;AAOLC,MAAAA,YAAY,EAAE,KAPT;AAQLC,MAAAA,QAAQ,EAAE;AARL;AADT,kBAYE;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE,CADD;AAELC,MAAAA,QAAQ,EAAE,QAFL;AAGLC,MAAAA,OAAO,EAAE,cAHJ;AAILC,MAAAA,UAAU,EAAE,QAJP;AAKLC,MAAAA,YAAY,EAAE,UALT;AAMLC,MAAAA,UAAU,EAAE;AANP,KADT;AASE,IAAA,uBAAuB,EAAE;AACvBC,MAAAA,MAAM,EAAEjB;AADe;AAT3B,IAZF,eAyBE,gCAAC,cAAD;AACE,IAAA,SAAS,EAAC,MADZ;AAEE,IAAA,KAAK,EAAE;AACLU,MAAAA,QAAQ,EAAE,UADL;AAELQ,MAAAA,GAAG,EAAE,KAFA;AAGLC,MAAAA,KAAK,EAAE;AAHF;AAFT,IAzBF,CATF,CADF;AA8CD,CAnDD;;AAqDAtB,cAAc,CAACuB,SAAf,GAA2B;AACzBtB,EAAAA,UAAU,EAAEuB,sBAAUC,MADG;AAEzBvB,EAAAA,YAAY,EAAEsB,sBAAUE,SAAV,CAAoB,CAACF,sBAAUG,MAAX,EAAmBH,sBAAUC,MAA7B,CAApB;AAFW,CAA3B;eAKezB,c","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Chevron } from '../icons';\n\nconst InlineDropdown = ({ attributes, selectedItem }) => {\n // TODO: Investigate\n // Needed because items with values inside have different positioning for some reason\n const html = selectedItem || '<div> </div>';\n\n return (\n <span\n {...attributes}\n style={{\n display: 'inline-flex',\n height: '50px',\n margin: '0 5px',\n cursor: 'pointer'\n }}\n >\n <div\n style={{\n display: 'inline-flex',\n minWidth: '178px',\n height: '36px',\n background: '#FFF',\n border: '1px solid #C0C3CF',\n boxSizing: 'border-box',\n borderRadius: '3px',\n position: 'relative'\n }}\n >\n <div\n style={{\n flex: 1,\n overflow: 'hidden',\n padding: '0 25px 0 8px',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n lineHeight: '35px'\n }}\n dangerouslySetInnerHTML={{\n __html: html\n }}\n />\n <Chevron\n direction=\"down\"\n style={{\n position: 'absolute',\n top: '5px',\n right: '5px'\n }}\n />\n </div>\n </span>\n );\n};\n\nInlineDropdown.propTypes = {\n attributes: PropTypes.object,\n selectedItem: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n};\n\nexport default InlineDropdown;\n"],"file":"index.js"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.isNumber = exports.insertSnackBar = exports.getDefaultElement = exports.defaultIDD = exports.defaultECR = exports.defaultDIB = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -29,7 +29,7 @@ var insertSnackBar = function insertSnackBar(message) {
|
|
|
29
29
|
var newEl = document.createElement('div');
|
|
30
30
|
newEl.className = 'response-area-alert';
|
|
31
31
|
|
|
32
|
-
var el = _react["default"].createElement(_Snackbar["default"], {
|
|
32
|
+
var el = /*#__PURE__*/_react["default"].createElement(_Snackbar["default"], {
|
|
33
33
|
anchorOrigin: {
|
|
34
34
|
vertical: 'top',
|
|
35
35
|
horizontal: 'center'
|
|
@@ -38,7 +38,7 @@ var insertSnackBar = function insertSnackBar(message) {
|
|
|
38
38
|
ContentProps: {
|
|
39
39
|
'aria-describedby': 'message-id'
|
|
40
40
|
},
|
|
41
|
-
message: _react["default"].createElement("span", {
|
|
41
|
+
message: /*#__PURE__*/_react["default"].createElement("span", {
|
|
42
42
|
id: "message-id"
|
|
43
43
|
}, message)
|
|
44
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/respArea/utils.jsx"],"names":["isNumber","val","isNaN","parseFloat","isFinite","insertSnackBar","message","prevSnacks","document","querySelectorAll","forEach","s","remove","newEl","createElement","className","el","vertical","horizontal","ReactDOM","render","body","appendChild","setTimeout","defaultECR","index","Inline","create","type","isVoid","data","defaultDIB","opts","duplicates","options","value","defaultIDD","object","getDefaultElement"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAAAC,GAAG;AAAA,SAAI,CAACC,KAAK,CAACC,UAAU,CAACF,GAAD,CAAX,CAAN,IAA2BG,QAAQ,CAACH,GAAD,CAAvC;AAAA,CAApB;;;;AAEA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,OAAO,EAAI;AACvC,MAAMC,UAAU,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,sBAA1B,CAAnB;AAEAF,EAAAA,UAAU,CAACG,OAAX,CAAmB,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACC,MAAF,EAAJ;AAAA,GAApB;AAEA,MAAMC,KAAK,GAAGL,QAAQ,CAACM,aAAT,CAAuB,KAAvB,CAAd;AAEAD,EAAAA,KAAK,CAACE,SAAN,GAAkB,qBAAlB;;AAEA,MAAMC,EAAE,
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/respArea/utils.jsx"],"names":["isNumber","val","isNaN","parseFloat","isFinite","insertSnackBar","message","prevSnacks","document","querySelectorAll","forEach","s","remove","newEl","createElement","className","el","vertical","horizontal","ReactDOM","render","body","appendChild","setTimeout","defaultECR","index","Inline","create","type","isVoid","data","defaultDIB","opts","duplicates","options","value","defaultIDD","object","getDefaultElement"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAAAC,GAAG;AAAA,SAAI,CAACC,KAAK,CAACC,UAAU,CAACF,GAAD,CAAX,CAAN,IAA2BG,QAAQ,CAACH,GAAD,CAAvC;AAAA,CAApB;;;;AAEA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,OAAO,EAAI;AACvC,MAAMC,UAAU,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,sBAA1B,CAAnB;AAEAF,EAAAA,UAAU,CAACG,OAAX,CAAmB,UAAAC,CAAC;AAAA,WAAIA,CAAC,CAACC,MAAF,EAAJ;AAAA,GAApB;AAEA,MAAMC,KAAK,GAAGL,QAAQ,CAACM,aAAT,CAAuB,KAAvB,CAAd;AAEAD,EAAAA,KAAK,CAACE,SAAN,GAAkB,qBAAlB;;AAEA,MAAMC,EAAE,gBACN,gCAAC,oBAAD;AACE,IAAA,YAAY,EAAE;AAAEC,MAAAA,QAAQ,EAAE,KAAZ;AAAmBC,MAAAA,UAAU,EAAE;AAA/B,KADhB;AAEE,IAAA,IAAI,EAAE,IAFR;AAGE,IAAA,YAAY,EAAE;AACZ,0BAAoB;AADR,KAHhB;AAME,IAAA,OAAO,eAAE;AAAM,MAAA,EAAE,EAAC;AAAT,OAAuBZ,OAAvB;AANX,IADF;;AAWAa,uBAASC,MAAT,CAAgBJ,EAAhB,EAAoBH,KAApB;;AAEAL,EAAAA,QAAQ,CAACa,IAAT,CAAcC,WAAd,CAA0BT,KAA1B;AAEAU,EAAAA,UAAU,CAAC,YAAM;AACfV,IAAAA,KAAK,CAACD,MAAN;AACD,GAFS,EAEP,IAFO,CAAV;AAGD,CA3BM;;;;AA6BA,IAAMY,UAAU,GAAG,SAAbA,UAAa,CAAAC,KAAK;AAAA,SAC7BC,cAAOC,MAAP,CAAc;AACZC,IAAAA,IAAI,EAAE,+BADM;AAEZC,IAAAA,MAAM,EAAE,IAFI;AAGZC,IAAAA,IAAI,EAAE;AACJL,MAAAA,KAAK,EAALA;AADI;AAHM,GAAd,CAD6B;AAAA,CAAxB;;;;AASA,IAAMM,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAOP,KAAP;AAAA,SACxBC,cAAOC,MAAP,CAAc;AACZC,IAAAA,IAAI,EAAE,mBADM;AAEZC,IAAAA,MAAM,EAAE,IAFI;AAGZC,IAAAA,IAAI,EAAE;AACJL,MAAAA,KAAK,EAALA,KADI;AAEJQ,MAAAA,UAAU,EAAED,IAAI,CAACE,OAAL,CAAaD,UAFrB;AAGJE,MAAAA,KAAK,EAAE;AAHH;AAHM,GAAd,CADwB;AAAA,CAAnB;;;;AAWA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAAAX,KAAK;AAAA,SAC7BC,cAAOC,MAAP,CAAc;AACZU,IAAAA,MAAM,EAAE,QADI;AAEZT,IAAAA,IAAI,EAAE,iBAFM;AAGZC,IAAAA,MAAM,EAAE,IAHI;AAIZC,IAAAA,IAAI,EAAE;AACJL,MAAAA,KAAK,EAALA;AADI;AAJM,GAAd,CAD6B;AAAA,CAAxB;;;;AAUA,IAAMa,iBAAiB,GAAG,SAApBA,iBAAoB,CAACN,IAAD,EAAOP,KAAP,EAAiB;AAChD,UAAQO,IAAI,CAACJ,IAAb;AACE,SAAK,+BAAL;AACE,aAAOJ,UAAU,CAACC,KAAD,CAAjB;;AACF,SAAK,mBAAL;AACE,aAAOM,UAAU,CAACC,IAAD,EAAOP,KAAP,CAAjB;;AACF;AACE;AACA,aAAOW,UAAU,CAACX,KAAD,CAAjB;AAPJ;AASD,CAVM","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Inline } from 'slate';\nimport Snackbar from '@material-ui/core/Snackbar';\n\nexport const isNumber = val => !isNaN(parseFloat(val)) && isFinite(val);\n\nexport const insertSnackBar = message => {\n const prevSnacks = document.querySelectorAll('.response-area-alert');\n\n prevSnacks.forEach(s => s.remove());\n\n const newEl = document.createElement('div');\n\n newEl.className = 'response-area-alert';\n\n const el = (\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n open={true}\n ContentProps={{\n 'aria-describedby': 'message-id'\n }}\n message={<span id=\"message-id\">{message}</span>}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n\n setTimeout(() => {\n newEl.remove();\n }, 2000);\n};\n\nexport const defaultECR = index =>\n Inline.create({\n type: 'explicit_constructed_response',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const defaultDIB = (opts, index) =>\n Inline.create({\n type: 'drag_in_the_blank',\n isVoid: true,\n data: {\n index,\n duplicates: opts.options.duplicates,\n value: null\n }\n });\n\nexport const defaultIDD = index =>\n Inline.create({\n object: 'inline',\n type: 'inline_dropdown',\n isVoid: true,\n data: {\n index\n }\n });\n\nexport const getDefaultElement = (opts, index) => {\n switch (opts.type) {\n case 'explicit-constructed-response':\n return defaultECR(index);\n case 'drag-in-the-blank':\n return defaultDIB(opts, index);\n default:\n // inline-dropdown\n return defaultIDD(index);\n }\n};\n"],"file":"utils.js"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.RemoveTable = exports.
|
|
6
|
+
exports.RemoveTable = exports.RemoveRow = exports.RemoveColumn = exports.AddRow = exports.AddColumn = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -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", _extends({}, props, {
|
|
40
|
+
return /*#__PURE__*/_react["default"].createElement("path", _extends({}, 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", _extends({}, props, {
|
|
46
|
+
return /*#__PURE__*/_react["default"].createElement("path", _extends({}, 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", _extends({}, props, {
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement("path", _extends({}, 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", _extends({}, props, {
|
|
58
|
+
return /*#__PURE__*/_react["default"].createElement("path", _extends({}, 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", _extends({}, props, {
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement("path", _extends({}, 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,"sources":["../../../../src/plugins/table/icons/index.jsx"],"names":["styles","icon","fill","SvgIcon","Component","props","classes","AddRow","RemoveRow","AddColumn","RemoveColumn","RemoveTable"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG;AACbC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,MADF;AAEJ,eAAW;AACTA,MAAAA,IAAI,EAAE;AADG;AAFP;AADO,CAAf;;AASA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,SAAS,EAAI;AAC3B,SAAO,wBAAWJ,MAAX,EAAmB,UAAAK,KAAK;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/plugins/table/icons/index.jsx"],"names":["styles","icon","fill","SvgIcon","Component","props","classes","AddRow","RemoveRow","AddColumn","RemoveColumn","RemoveTable"],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,MAAM,GAAG;AACbC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,MADF;AAEJ,eAAW;AACTA,MAAAA,IAAI,EAAE;AADG;AAFP;AADO,CAAf;;AASA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAC,SAAS,EAAI;AAC3B,SAAO,wBAAWJ,MAAX,EAAmB,UAAAK,KAAK;AAAA,wBAC7B;AACE,MAAA,KAAK,EAAC,4BADR;AAEE,MAAA,OAAO,EAAC,KAFV;AAGE,MAAA,KAAK,EAAC,IAHR;AAIE,MAAA,MAAM,EAAC,IAJT;AAKE,MAAA,OAAO,EAAC;AALV,oBAOE,gCAAC,SAAD;AAAW,MAAA,SAAS,EAAEA,KAAK,CAACC,OAAN,CAAcL;AAApC,MAPF,CAD6B;AAAA,GAAxB,CAAP;AAWD,CAZD;;AAaO,IAAMM,MAAM,GAAGJ,OAAO,CAAC,UAAAE,KAAK;AAAA,sBACjC,qDACMA,KADN;AAEE,IAAA,CAAC,EAAC;AAFJ,KADiC;AAAA,CAAN,CAAtB;;AAOA,IAAMG,SAAS,GAAGL,OAAO,CAAC,UAAAE,KAAK;AAAA,sBACpC,qDACMA,KADN;AAEE,IAAA,CAAC,EAAC;AAFJ,KADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMI,SAAS,GAAGN,OAAO,CAAC,UAAAE,KAAK;AAAA,sBACpC,qDACMA,KADN;AAEE,IAAA,CAAC,EAAC;AAFJ,KADoC;AAAA,CAAN,CAAzB;;AAOA,IAAMK,YAAY,GAAGP,OAAO,CAAC,UAAAE,KAAK;AAAA,sBACvC,qDACMA,KADN;AAEE,IAAA,CAAC,EAAC;AAFJ,KADuC;AAAA,CAAN,CAA5B;;AAOA,IAAMM,WAAW,GAAGR,OAAO,CAAC,UAAAE,KAAK;AAAA,sBACtC,qDACMA,KADN;AAEE,IAAA,CAAC,EAAC;AAFJ,KADsC;AAAA,CAAN,CAA3B","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"],"file":"index.js"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.serialization = exports.reactAttributes = exports.parseStyleString = exports["default"] =
|
|
6
|
+
exports.serialization = exports.reactAttributes = exports.parseStyleString = exports.moveFocusToBeginningOfTable = exports["default"] = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -29,9 +29,9 @@ var _toStyle = require("to-style");
|
|
|
29
29
|
|
|
30
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
31
31
|
|
|
32
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
32
|
+
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; }
|
|
33
33
|
|
|
34
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
34
|
+
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) { _defineProperty(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; }
|
|
35
35
|
|
|
36
36
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
37
37
|
|
|
@@ -44,12 +44,12 @@ var Table = (0, _styles.withStyles)(function () {
|
|
|
44
44
|
};
|
|
45
45
|
})(function (props) {
|
|
46
46
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
47
|
-
return _react["default"].createElement("table", _extends({
|
|
47
|
+
return /*#__PURE__*/_react["default"].createElement("table", _extends({
|
|
48
48
|
className: props.classes.table
|
|
49
49
|
}, props.attributes, nodeAttributes, {
|
|
50
50
|
onFocus: props.onFocus,
|
|
51
51
|
onBlur: props.onBlur
|
|
52
|
-
}), _react["default"].createElement("tbody", null, props.children));
|
|
52
|
+
}), /*#__PURE__*/_react["default"].createElement("tbody", null, props.children));
|
|
53
53
|
});
|
|
54
54
|
Table.propTypes = {
|
|
55
55
|
attributes: _propTypes["default"].object,
|
|
@@ -60,7 +60,7 @@ Table.propTypes = {
|
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
var TableRow = function TableRow(props) {
|
|
63
|
-
return _react["default"].createElement("tr", props.attributes, props.children);
|
|
63
|
+
return /*#__PURE__*/_react["default"].createElement("tr", props.attributes, props.children);
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
TableRow.propTypes = {
|
|
@@ -79,7 +79,7 @@ var TableCell = (0, _styles.withStyles)(function () {
|
|
|
79
79
|
var Tag = props.node.data.get('header') ? 'th' : 'td';
|
|
80
80
|
var nodeAttributes = dataToAttributes(props.node.data);
|
|
81
81
|
delete nodeAttributes.header;
|
|
82
|
-
return _react["default"].createElement(Tag, _extends({}, props.attributes, nodeAttributes, {
|
|
82
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, _extends({}, props.attributes, nodeAttributes, {
|
|
83
83
|
colSpan: props.node.data.get('colspan'),
|
|
84
84
|
className: props.classes[Tag],
|
|
85
85
|
onFocus: props.onFocus,
|
|
@@ -157,13 +157,13 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
157
157
|
core.utils.createTableWithOptions = function (row, columns, extra) {
|
|
158
158
|
var createdTable = core.utils.createTable(row, columns);
|
|
159
159
|
|
|
160
|
-
var newTable = _slate.Block.create(_objectSpread({}, createdTable.toJSON(),
|
|
160
|
+
var newTable = _slate.Block.create(_objectSpread(_objectSpread({}, createdTable.toJSON()), extra));
|
|
161
161
|
|
|
162
162
|
return newTable;
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
core.toolbar = {
|
|
166
|
-
icon: _react["default"].createElement(_GridOn["default"], null),
|
|
166
|
+
icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
|
|
167
167
|
onClick: function onClick(value, onChange) {
|
|
168
168
|
log('insert table');
|
|
169
169
|
var change = value.change();
|
|
@@ -234,7 +234,7 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
234
234
|
};
|
|
235
235
|
|
|
236
236
|
var Tb = function Tb() {
|
|
237
|
-
return _react["default"].createElement(_tableToolbar["default"], {
|
|
237
|
+
return /*#__PURE__*/_react["default"].createElement(_tableToolbar["default"], {
|
|
238
238
|
plugins: toolbarPlugins,
|
|
239
239
|
onChange: function onChange(c) {
|
|
240
240
|
return onToolbarDone(c, false);
|
|
@@ -258,16 +258,16 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
258
258
|
var Node = function Node(props) {
|
|
259
259
|
switch (props.node.type) {
|
|
260
260
|
case 'table':
|
|
261
|
-
return _react["default"].createElement(Table, _extends({}, props, {
|
|
261
|
+
return /*#__PURE__*/_react["default"].createElement(Table, _extends({}, props, {
|
|
262
262
|
onFocus: opts.onFocus,
|
|
263
263
|
onBlur: opts.onBlur
|
|
264
264
|
}));
|
|
265
265
|
|
|
266
266
|
case 'table_row':
|
|
267
|
-
return _react["default"].createElement(TableRow, props);
|
|
267
|
+
return /*#__PURE__*/_react["default"].createElement(TableRow, props);
|
|
268
268
|
|
|
269
269
|
case 'table_cell':
|
|
270
|
-
return _react["default"].createElement(TableCell, _extends({}, props, {
|
|
270
|
+
return /*#__PURE__*/_react["default"].createElement(TableCell, _extends({}, props, {
|
|
271
271
|
onFocus: opts.onFocus,
|
|
272
272
|
onBlur: opts.onBlur
|
|
273
273
|
}));
|
|
@@ -286,9 +286,18 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
286
286
|
return;
|
|
287
287
|
}
|
|
288
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;
|
|
289
298
|
var shouldAddTextAfterNode = false;
|
|
290
|
-
var indexToNotHaveTableOn =
|
|
291
|
-
var indexOfLastTable =
|
|
299
|
+
var indexToNotHaveTableOn = nodeToSearch.nodes.size - 1;
|
|
300
|
+
var indexOfLastTable = nodeToSearch.nodes.findLastIndex(function (d) {
|
|
292
301
|
return d.type === 'table';
|
|
293
302
|
}); // if the last table in the document is of type table, we need to do the change
|
|
294
303
|
|
|
@@ -300,13 +309,12 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
300
309
|
return;
|
|
301
310
|
}
|
|
302
311
|
|
|
303
|
-
var tableNode = node.nodes.get(indexOfLastTable);
|
|
304
312
|
return function (change) {
|
|
305
313
|
if (shouldAddTextAfterNode) {
|
|
306
|
-
var tableJSON =
|
|
314
|
+
var tableJSON = tableAdded.toJSON(); // we remove the table node because otherwise we can't add the empty block after it
|
|
307
315
|
// we need a block that contains text in order to do it
|
|
308
316
|
|
|
309
|
-
change.removeNodeByKey(
|
|
317
|
+
change.removeNodeByKey(tableAdded.key);
|
|
310
318
|
|
|
311
319
|
var newBlock = _slate.Block.create({
|
|
312
320
|
object: 'block',
|
|
@@ -327,8 +335,8 @@ var _default = function _default(opts, toolbarPlugins
|
|
|
327
335
|
} // we insert the table block between the first block with text and the last block with text
|
|
328
336
|
|
|
329
337
|
|
|
330
|
-
change.insertBlock(_objectSpread({}, tableJSON, {
|
|
331
|
-
data: _objectSpread({}, tableJSON.data, {
|
|
338
|
+
change.insertBlock(_objectSpread(_objectSpread({}, tableJSON), {}, {
|
|
339
|
+
data: _objectSpread(_objectSpread({}, tableJSON.data), {}, {
|
|
332
340
|
newTable: true
|
|
333
341
|
})
|
|
334
342
|
}));
|
|
@@ -462,12 +470,12 @@ var serialization = {
|
|
|
462
470
|
{
|
|
463
471
|
var _attributes = dataToAttributes(object.data);
|
|
464
472
|
|
|
465
|
-
return _react["default"].createElement("table", _attributes, _react["default"].createElement("tbody", null, children));
|
|
473
|
+
return /*#__PURE__*/_react["default"].createElement("table", _attributes, /*#__PURE__*/_react["default"].createElement("tbody", null, children));
|
|
466
474
|
}
|
|
467
475
|
|
|
468
476
|
case 'table_row':
|
|
469
477
|
{
|
|
470
|
-
return _react["default"].createElement("tr", null, children);
|
|
478
|
+
return /*#__PURE__*/_react["default"].createElement("tr", null, children);
|
|
471
479
|
}
|
|
472
480
|
|
|
473
481
|
case 'table_cell':
|
|
@@ -477,9 +485,9 @@ var serialization = {
|
|
|
477
485
|
delete _attributes2.header;
|
|
478
486
|
|
|
479
487
|
if (object.data.get('header')) {
|
|
480
|
-
return _react["default"].createElement("th", _attributes2, children);
|
|
488
|
+
return /*#__PURE__*/_react["default"].createElement("th", _attributes2, children);
|
|
481
489
|
} else {
|
|
482
|
-
return _react["default"].createElement("td", _attributes2, children);
|
|
490
|
+
return /*#__PURE__*/_react["default"].createElement("td", _attributes2, children);
|
|
483
491
|
}
|
|
484
492
|
}
|
|
485
493
|
}
|
|
@@ -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","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","shouldAddTextAfterNode","indexToNotHaveTableOn","size","indexOfLastTable","findLastIndex","tableNode","tableJSON","removeNodeByKey","newBlock","withoutNormalization","prevText","getPreviousText","moveFocusTo","text","length","moveAnchorTo","renderNode","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","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 } 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(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 = 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 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({\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"],"file":"index.js"}
|
|
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","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","camelize","addUnits","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 } 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(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 = 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"],"file":"index.js"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -25,38 +27,38 @@ var _debug = _interopRequireDefault(require("debug"));
|
|
|
25
27
|
|
|
26
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
29
|
|
|
28
|
-
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
29
|
-
|
|
30
30
|
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); }
|
|
31
31
|
|
|
32
32
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
33
33
|
|
|
34
34
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
35
35
|
|
|
36
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
36
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
37
37
|
|
|
38
|
-
function
|
|
38
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
39
39
|
|
|
40
|
-
function
|
|
40
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
41
|
+
|
|
42
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
43
|
+
|
|
44
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
41
45
|
|
|
42
46
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
43
47
|
|
|
44
|
-
function
|
|
48
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
49
|
|
|
46
|
-
function
|
|
50
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
47
51
|
|
|
48
52
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
53
|
|
|
50
54
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:table-toolbar');
|
|
51
55
|
|
|
52
|
-
var TableToolbar =
|
|
53
|
-
/*#__PURE__*/
|
|
54
|
-
function (_React$Component) {
|
|
56
|
+
var TableToolbar = /*#__PURE__*/function (_React$Component) {
|
|
55
57
|
_inherits(TableToolbar, _React$Component);
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
var _getPrototypeOf2;
|
|
59
|
+
var _super = _createSuper(TableToolbar);
|
|
59
60
|
|
|
61
|
+
function TableToolbar() {
|
|
60
62
|
var _this;
|
|
61
63
|
|
|
62
64
|
_classCallCheck(this, TableToolbar);
|
|
@@ -65,7 +67,7 @@ function (_React$Component) {
|
|
|
65
67
|
args[_key] = arguments[_key];
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
_this =
|
|
70
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
71
|
|
|
70
72
|
_defineProperty(_assertThisInitialized(_this), "onDone", function (e) {
|
|
71
73
|
var onDone = _this.props.onDone;
|
|
@@ -92,31 +94,31 @@ function (_React$Component) {
|
|
|
92
94
|
hasBorder = _this$props.hasBorder,
|
|
93
95
|
classes = _this$props.classes;
|
|
94
96
|
log('[render] hasBorder:', hasBorder);
|
|
95
|
-
return _react["default"].createElement("div", {
|
|
97
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
96
98
|
className: classes.tableToolbar
|
|
97
|
-
}, _react["default"].createElement("div", {
|
|
99
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
98
100
|
className: classes.toolbarButtons
|
|
99
|
-
}, _react["default"].createElement(_toolbarButtons.Button, {
|
|
101
|
+
}, /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
100
102
|
onClick: onAddRow
|
|
101
|
-
}, _react["default"].createElement(_icons.AddRow, null)), _react["default"].createElement(_toolbarButtons.Button, {
|
|
103
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.AddRow, null)), /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
102
104
|
onClick: onRemoveRow
|
|
103
|
-
}, _react["default"].createElement(_icons.RemoveRow, null)), _react["default"].createElement(_toolbarButtons.Button, {
|
|
105
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.RemoveRow, null)), /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
104
106
|
onClick: onAddColumn
|
|
105
|
-
}, _react["default"].createElement(_icons.AddColumn, null)), _react["default"].createElement(_toolbarButtons.Button, {
|
|
107
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.AddColumn, null)), /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
106
108
|
onClick: onRemoveColumn
|
|
107
|
-
}, _react["default"].createElement(_icons.RemoveColumn, null)), _react["default"].createElement(_toolbarButtons.Button, {
|
|
109
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.RemoveColumn, null)), /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
108
110
|
onClick: onRemoveTable
|
|
109
|
-
}, _react["default"].createElement(_icons.RemoveTable, null)), plugins.map(function (p, index) {
|
|
110
|
-
return _react["default"].createElement(_defaultToolbar.ToolbarButton, _extends({
|
|
111
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.RemoveTable, null)), plugins.map(function (p, index) {
|
|
112
|
+
return /*#__PURE__*/_react["default"].createElement(_defaultToolbar.ToolbarButton, _extends({
|
|
111
113
|
key: "plugin-".concat(index)
|
|
112
114
|
}, p.toolbar, {
|
|
113
115
|
value: value,
|
|
114
116
|
onChange: onChange
|
|
115
117
|
}));
|
|
116
|
-
}), _react["default"].createElement(_toolbarButtons.Button, {
|
|
118
|
+
}), /*#__PURE__*/_react["default"].createElement(_toolbarButtons.Button, {
|
|
117
119
|
onClick: onToggleBorder,
|
|
118
120
|
active: hasBorder
|
|
119
|
-
}, _react["default"].createElement(_BorderAll["default"], null))), _react["default"].createElement(_doneButton.DoneButton, {
|
|
121
|
+
}, /*#__PURE__*/_react["default"].createElement(_BorderAll["default"], null))), /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
|
|
120
122
|
onClick: this.onDone
|
|
121
123
|
}));
|
|
122
124
|
}
|