@mirrormedia/lilith-draft-editor 1.1.0-alpha.3 → 1.1.0-alpha.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/draft-js/buttons/annotation.js +22 -0
- package/lib/draft-js/buttons/audio.js +16 -3
- package/lib/draft-js/buttons/background-color.js +26 -0
- package/lib/draft-js/buttons/background-image.js +32 -13
- package/lib/draft-js/buttons/background-video.js +32 -13
- package/lib/draft-js/buttons/color-box.js +21 -5
- package/lib/draft-js/buttons/divider.js +12 -3
- package/lib/draft-js/buttons/embedded-code.js +16 -5
- package/lib/draft-js/buttons/enlarge.js +3 -0
- package/lib/draft-js/buttons/font-color.js +26 -0
- package/lib/draft-js/buttons/image.js +18 -7
- package/lib/draft-js/buttons/info-box.js +21 -5
- package/lib/draft-js/buttons/link.js +68 -22
- package/lib/draft-js/buttons/media.js +16 -3
- package/lib/draft-js/buttons/related-post.js +14 -3
- package/lib/draft-js/buttons/selector/align-selector.js +11 -2
- package/lib/draft-js/buttons/selector/audio-selector.js +33 -5
- package/lib/draft-js/buttons/selector/image-selector.js +64 -16
- package/lib/draft-js/buttons/selector/pagination.js +6 -2
- package/lib/draft-js/buttons/selector/post-selector.js +39 -6
- package/lib/draft-js/buttons/selector/search-box.js +9 -0
- package/lib/draft-js/buttons/selector/video-selector.js +33 -4
- package/lib/draft-js/buttons/side-index.js +31 -15
- package/lib/draft-js/buttons/slideshow.js +16 -7
- package/lib/draft-js/buttons/table.js +11 -5
- package/lib/draft-js/buttons/text-align.js +14 -0
- package/lib/draft-js/buttons/video.js +19 -5
- package/lib/draft-js/buttons/youtube.js +147 -0
- package/lib/draft-js/const.js +2 -0
- package/lib/draft-js/draft-converter/api-data-instance.js +14 -0
- package/lib/draft-js/draft-converter/atomic-block-processor.js +42 -12
- package/lib/draft-js/draft-converter/entities.js +3 -1
- package/lib/draft-js/draft-converter/index.js +29 -10
- package/lib/draft-js/draft-converter/inline-styles-processor.js +55 -22
- package/lib/draft-js/modifier.js +13 -5
- package/lib/draft-js/util.js +32 -0
- package/lib/index.js +4 -0
- package/lib/website/mirrormedia/block-renderer/background-image-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/background-video-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/color-box-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/embedded-code-block.js +12 -3
- package/lib/website/mirrormedia/block-renderer/image-block.js +108 -0
- package/lib/website/mirrormedia/block-renderer/info-box-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/side-index-block.js +13 -2
- package/lib/website/mirrormedia/block-renderer/slideshow-block.js +93 -7
- package/lib/website/mirrormedia/block-renderer/table-block.js +62 -28
- package/lib/website/mirrormedia/block-renderer-fn.js +48 -5
- package/lib/website/mirrormedia/draft-editor.js +138 -14
- package/lib/website/mirrormedia/entity-decorator.js +12 -1
- package/lib/website/mirrormedia/index.js +3 -0
- package/lib/website/mirrormedia/selector/align-selector.js +11 -2
- package/lib/website/mirrormedia/selector/audio-selector.js +34 -5
- package/lib/website/mirrormedia/selector/image-selector.js +75 -18
- package/lib/website/mirrormedia/selector/pagination.js +6 -2
- package/lib/website/mirrormedia/selector/post-selector.js +40 -6
- package/lib/website/mirrormedia/selector/search-box.js +9 -0
- package/lib/website/mirrormedia/selector/video-selector.js +36 -7
- package/lib/website/mirrormedia/shared-style/index.js +17 -0
- package/lib/website/mirrormedia/theme/index.js +28 -0
- package/lib/website/readr/block-renderer/background-image-block.js +66 -6
- package/lib/website/readr/block-renderer/background-video-block.js +76 -6
- package/lib/website/readr/block-renderer/color-box-block.js +14 -2
- package/lib/website/readr/block-renderer/image-block.js +106 -0
- package/lib/website/readr/block-renderer/info-box-block.js +14 -2
- package/lib/website/readr/block-renderer/side-index-block.js +13 -2
- package/lib/website/readr/block-renderer/table-block.js +62 -28
- package/lib/website/readr/block-renderer-fn.js +32 -3
- package/lib/website/readr/draft-editor.js +112 -12
- package/lib/website/readr/entity-decorator.js +4 -0
- package/lib/website/readr/index.js +3 -0
- package/lib/website/readr/selector/align-selector.js +11 -2
- package/lib/website/readr/selector/audio-selector.js +34 -17
- package/lib/website/readr/selector/image-selector.js +62 -16
- package/lib/website/readr/selector/pagination.js +6 -2
- package/lib/website/readr/selector/post-selector.js +40 -13
- package/lib/website/readr/selector/search-box.js +9 -0
- package/lib/website/readr/selector/video-selector.js +33 -4
- package/lib/website/readr/theme/index.js +39 -0
- package/package.json +8 -8
|
@@ -4,20 +4,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.InfoBoxEditorBlock = InfoBoxEditorBlock;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _draftConverter = _interopRequireDefault(require("../../../draft-js/draft-converter"));
|
|
13
|
+
|
|
10
14
|
var _infoBox = require("../../../draft-js/buttons/info-box");
|
|
15
|
+
|
|
11
16
|
var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
|
|
17
|
+
|
|
12
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
13
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
14
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
15
24
|
const {
|
|
16
25
|
InfoBoxBlock
|
|
17
26
|
} = _readr.default.blockRenderers;
|
|
18
27
|
const InfoBoxRenderButton = _styledComponents.default.div`
|
|
19
28
|
cursor: pointer;
|
|
20
29
|
`;
|
|
30
|
+
|
|
21
31
|
function InfoBoxEditorBlock(props) {
|
|
22
32
|
const [toShowInput, setToShowInput] = (0, _react.useState)(false);
|
|
23
33
|
const {
|
|
@@ -36,6 +46,7 @@ function InfoBoxEditorBlock(props) {
|
|
|
36
46
|
title,
|
|
37
47
|
rawContentState
|
|
38
48
|
} = entity.getData();
|
|
49
|
+
|
|
39
50
|
const onChange = ({
|
|
40
51
|
title: newTitle,
|
|
41
52
|
rawContentState: newRawContentState
|
|
@@ -51,6 +62,7 @@ function InfoBoxEditorBlock(props) {
|
|
|
51
62
|
}
|
|
52
63
|
});
|
|
53
64
|
};
|
|
65
|
+
|
|
54
66
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_infoBox.InfoBoxInput, {
|
|
55
67
|
renderBasicEditor: renderBasicEditor,
|
|
56
68
|
title: title,
|
|
@@ -64,8 +76,8 @@ function InfoBoxEditorBlock(props) {
|
|
|
64
76
|
}), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(InfoBoxBlock, props), /*#__PURE__*/_react.default.createElement(InfoBoxRenderButton, {
|
|
65
77
|
onClick: () => {
|
|
66
78
|
// call `onEditStart` prop as we are trying to update the InfoBox entity
|
|
67
|
-
onEditStart();
|
|
68
|
-
|
|
79
|
+
onEditStart(); // open `InfoBoxInput`
|
|
80
|
+
|
|
69
81
|
setToShowInput(true);
|
|
70
82
|
}
|
|
71
83
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
@@ -4,13 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SideIndexEditorBlock = SideIndexEditorBlock;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _sideIndex = require("../../../draft-js/buttons/side-index");
|
|
13
|
+
|
|
10
14
|
var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
|
|
15
|
+
|
|
11
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
12
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
13
20
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
14
22
|
const {
|
|
15
23
|
SideIndexBlock
|
|
16
24
|
} = _readr.default.blockRenderers;
|
|
@@ -18,6 +26,7 @@ const SideIndexBlockButton = _styledComponents.default.div`
|
|
|
18
26
|
cursor: pointer;
|
|
19
27
|
margin-left: 20px;
|
|
20
28
|
`;
|
|
29
|
+
|
|
21
30
|
function SideIndexEditorBlock(props) {
|
|
22
31
|
const [toShowInput, setToShowInput] = (0, _react.useState)(false);
|
|
23
32
|
const {
|
|
@@ -37,6 +46,7 @@ function SideIndexEditorBlock(props) {
|
|
|
37
46
|
sideIndexUrl,
|
|
38
47
|
sideIndexImage
|
|
39
48
|
} = entity.getData();
|
|
49
|
+
|
|
40
50
|
const onChange = ({
|
|
41
51
|
h2Text,
|
|
42
52
|
sideIndexText,
|
|
@@ -55,6 +65,7 @@ function SideIndexEditorBlock(props) {
|
|
|
55
65
|
}
|
|
56
66
|
});
|
|
57
67
|
};
|
|
68
|
+
|
|
58
69
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_sideIndex.SideIndexInput, {
|
|
59
70
|
h2Text: h2Text,
|
|
60
71
|
sideIndexText: sideIndexText,
|
|
@@ -69,8 +80,8 @@ function SideIndexEditorBlock(props) {
|
|
|
69
80
|
}), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(SideIndexBlock, props), /*#__PURE__*/_react.default.createElement(SideIndexBlockButton, {
|
|
70
81
|
onClick: () => {
|
|
71
82
|
// call `onEditStart` prop as we are trying to update the SideIndex entity
|
|
72
|
-
onEditStart();
|
|
73
|
-
|
|
83
|
+
onEditStart(); // open `SideIndexInput`
|
|
84
|
+
|
|
74
85
|
setToShowInput(true);
|
|
75
86
|
}
|
|
76
87
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
@@ -4,34 +4,49 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.TableEditorBlock = void 0;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _draftJs = require("draft-js");
|
|
13
|
+
|
|
10
14
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
15
|
+
|
|
11
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
12
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
13
20
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
14
22
|
const _ = {
|
|
15
23
|
cloneDeep: _cloneDeep.default
|
|
16
24
|
};
|
|
17
|
-
var ActionType
|
|
25
|
+
var ActionType;
|
|
26
|
+
|
|
27
|
+
(function (ActionType) {
|
|
18
28
|
ActionType["Insert"] = "insert";
|
|
19
29
|
ActionType["Delete"] = "delete";
|
|
20
30
|
ActionType["Update"] = "update";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var TableEnum
|
|
31
|
+
})(ActionType || (ActionType = {}));
|
|
32
|
+
|
|
33
|
+
var TableEnum;
|
|
34
|
+
|
|
35
|
+
(function (TableEnum) {
|
|
24
36
|
TableEnum["Row"] = "row";
|
|
25
37
|
TableEnum["Column"] = "column";
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
})(TableEnum || (TableEnum = {}));
|
|
39
|
+
|
|
28
40
|
function createEmptyRow(colLen = 0, emptyValue) {
|
|
29
41
|
const rtn = [];
|
|
42
|
+
|
|
30
43
|
for (let i = 0; i < colLen; i++) {
|
|
31
44
|
rtn.push(emptyValue);
|
|
32
45
|
}
|
|
46
|
+
|
|
33
47
|
return rtn;
|
|
34
48
|
}
|
|
49
|
+
|
|
35
50
|
function resolveTableStyles(action, tableStyles) {
|
|
36
51
|
switch (action === null || action === void 0 ? void 0 : action.type) {
|
|
37
52
|
case ActionType.Insert:
|
|
@@ -41,10 +56,12 @@ function resolveTableStyles(action, tableStyles) {
|
|
|
41
56
|
return Object.assign({}, tableStyles, {
|
|
42
57
|
rows
|
|
43
58
|
});
|
|
44
|
-
}
|
|
45
|
-
|
|
59
|
+
} // TODO: handle target === TableEnum.Column if needed
|
|
60
|
+
|
|
61
|
+
|
|
46
62
|
return tableStyles;
|
|
47
63
|
}
|
|
64
|
+
|
|
48
65
|
case ActionType.Delete:
|
|
49
66
|
{
|
|
50
67
|
if (action.target === TableEnum.Row) {
|
|
@@ -52,61 +69,75 @@ function resolveTableStyles(action, tableStyles) {
|
|
|
52
69
|
return Object.assign({}, tableStyles, {
|
|
53
70
|
rows
|
|
54
71
|
});
|
|
55
|
-
}
|
|
56
|
-
|
|
72
|
+
} // TODO: handle target === TableEnum.Column if needed
|
|
73
|
+
|
|
74
|
+
|
|
57
75
|
return tableStyles;
|
|
58
76
|
}
|
|
59
77
|
// TODO: handle action.type === ActionType.Update if needed
|
|
78
|
+
|
|
60
79
|
default:
|
|
61
80
|
{
|
|
62
81
|
return tableStyles;
|
|
63
82
|
}
|
|
64
83
|
}
|
|
65
84
|
}
|
|
85
|
+
|
|
66
86
|
function resolveTableData(action, tableData) {
|
|
67
87
|
switch (action === null || action === void 0 ? void 0 : action.type) {
|
|
68
88
|
case ActionType.Insert:
|
|
69
89
|
{
|
|
70
90
|
var _tableData$;
|
|
91
|
+
|
|
71
92
|
if (typeof (action === null || action === void 0 ? void 0 : action.index) !== 'number') {
|
|
72
93
|
return tableData;
|
|
73
94
|
}
|
|
95
|
+
|
|
74
96
|
if ((action === null || action === void 0 ? void 0 : action.target) === TableEnum.Column) {
|
|
75
97
|
// add the new column at specific position in each row
|
|
76
98
|
return tableData.map(r => [...r.slice(0, action === null || action === void 0 ? void 0 : action.index), _draftJs.EditorState.createEmpty(), ...r.slice(action === null || action === void 0 ? void 0 : action.index)]);
|
|
77
|
-
}
|
|
78
|
-
|
|
99
|
+
} // add the new row
|
|
100
|
+
|
|
101
|
+
|
|
79
102
|
return [...tableData.slice(0, action === null || action === void 0 ? void 0 : action.index), createEmptyRow(tableData === null || tableData === void 0 ? void 0 : (_tableData$ = tableData[0]) === null || _tableData$ === void 0 ? void 0 : _tableData$.length, _draftJs.EditorState.createEmpty()), ...tableData.slice(action === null || action === void 0 ? void 0 : action.index)];
|
|
80
103
|
}
|
|
104
|
+
|
|
81
105
|
case ActionType.Delete:
|
|
82
106
|
{
|
|
83
107
|
if (typeof (action === null || action === void 0 ? void 0 : action.index) !== 'number') {
|
|
84
108
|
return tableData;
|
|
85
109
|
}
|
|
110
|
+
|
|
86
111
|
if ((action === null || action === void 0 ? void 0 : action.target) === 'column') {
|
|
87
112
|
// delete the column at specific position in each row
|
|
88
113
|
return tableData.map(r => [...r.slice(0, action.index), ...r.slice(action.index + 1)]);
|
|
89
|
-
}
|
|
90
|
-
|
|
114
|
+
} // delete the column
|
|
115
|
+
|
|
116
|
+
|
|
91
117
|
return [...tableData.slice(0, action.index), ...tableData.slice(action.index + 1)];
|
|
92
118
|
}
|
|
119
|
+
|
|
93
120
|
case ActionType.Update:
|
|
94
121
|
{
|
|
95
122
|
// The reason we copy the array is to make sure
|
|
96
123
|
// that React component re-renders.
|
|
97
124
|
const copiedData = [...tableData];
|
|
125
|
+
|
|
98
126
|
if (typeof (action === null || action === void 0 ? void 0 : action.rIndex) !== 'number' || typeof (action === null || action === void 0 ? void 0 : action.cIndex) !== 'number') {
|
|
99
127
|
return copiedData;
|
|
100
128
|
}
|
|
129
|
+
|
|
101
130
|
copiedData[action.rIndex][action.cIndex] = action === null || action === void 0 ? void 0 : action.value;
|
|
102
131
|
return copiedData;
|
|
103
132
|
}
|
|
133
|
+
|
|
104
134
|
default:
|
|
105
135
|
{
|
|
106
136
|
return tableData;
|
|
107
137
|
}
|
|
108
138
|
}
|
|
109
139
|
}
|
|
140
|
+
|
|
110
141
|
function convertTableDataFromRaw(rawTableData) {
|
|
111
142
|
return rawTableData.map(rowData => {
|
|
112
143
|
return rowData.map(colData => {
|
|
@@ -115,6 +146,7 @@ function convertTableDataFromRaw(rawTableData) {
|
|
|
115
146
|
});
|
|
116
147
|
});
|
|
117
148
|
}
|
|
149
|
+
|
|
118
150
|
function convertTableDataToRaw(tableData) {
|
|
119
151
|
return tableData.map(rowData => {
|
|
120
152
|
return rowData.map(colData => {
|
|
@@ -122,6 +154,7 @@ function convertTableDataToRaw(tableData) {
|
|
|
122
154
|
});
|
|
123
155
|
});
|
|
124
156
|
}
|
|
157
|
+
|
|
125
158
|
const Table = _styledComponents.default.div`
|
|
126
159
|
display: table;
|
|
127
160
|
width: 95%;
|
|
@@ -222,8 +255,10 @@ const TableBlockContainer = _styledComponents.default.div`
|
|
|
222
255
|
overflow: scroll;
|
|
223
256
|
padding: 15px;
|
|
224
257
|
`;
|
|
258
|
+
|
|
225
259
|
const TableEditorBlock = props => {
|
|
226
260
|
var _tableData$2;
|
|
261
|
+
|
|
227
262
|
const {
|
|
228
263
|
block,
|
|
229
264
|
blockProps,
|
|
@@ -240,26 +275,24 @@ const TableEditorBlock = props => {
|
|
|
240
275
|
tableData: rawTableData,
|
|
241
276
|
tableStyles: _tableStyles
|
|
242
277
|
} = entity.getData();
|
|
243
|
-
const [tableData, setTableData] = (0, _react.useState)(convertTableDataFromRaw(rawTableData));
|
|
244
|
-
// deep clone `_tableStyles` to prevent updating the entity data directly
|
|
245
|
-
const [tableStyles, setTableStyles] = (0, _react.useState)(_.cloneDeep(_tableStyles));
|
|
246
|
-
const tableRef = (0, _react.useRef)(null);
|
|
278
|
+
const [tableData, setTableData] = (0, _react.useState)(convertTableDataFromRaw(rawTableData)); // deep clone `_tableStyles` to prevent updating the entity data directly
|
|
247
279
|
|
|
248
|
-
|
|
280
|
+
const [tableStyles, setTableStyles] = (0, _react.useState)(_.cloneDeep(_tableStyles));
|
|
281
|
+
const tableRef = (0, _react.useRef)(null); // `TableBlock` will render other inner/nested DraftJS Editors inside the main Editor.
|
|
249
282
|
// However, main Editor's `readOnly` needs to be mutually exclusive with nested Editors' `readOnly`.
|
|
250
283
|
// If the main Editor and nested Editor are editable (`readOnly={false}`) at the same time,
|
|
251
284
|
// there will be a DraftJS Edtior Selection bug.
|
|
252
|
-
const [cellEditorReadOnly, setCellEditorReadOnly] = (0, _react.useState)(!getMainEditorReadOnly());
|
|
253
285
|
|
|
254
|
-
// The user clicks the table for editing
|
|
286
|
+
const [cellEditorReadOnly, setCellEditorReadOnly] = (0, _react.useState)(!getMainEditorReadOnly()); // The user clicks the table for editing
|
|
287
|
+
|
|
255
288
|
const onTableClick = () => {
|
|
256
289
|
// call `onEditStart` function to tell the main DraftJS Editor
|
|
257
290
|
// that we are going to interact with the custom atomic block.
|
|
258
|
-
onEditStart();
|
|
291
|
+
onEditStart(); // make nested DraftJS Editors editable
|
|
259
292
|
|
|
260
|
-
// make nested DraftJS Editors editable
|
|
261
293
|
setCellEditorReadOnly(false);
|
|
262
294
|
};
|
|
295
|
+
|
|
263
296
|
(0, _react.useEffect)(() => {
|
|
264
297
|
// The user clicks other places except the table,
|
|
265
298
|
// so we think he/she doesn't want to edit the table anymore.
|
|
@@ -271,10 +304,9 @@ const TableEditorBlock = props => {
|
|
|
271
304
|
// this `handleClickOutside` will only handle the just updated one.
|
|
272
305
|
if (tableRef.current && !tableRef.current.contains(event.target) && !cellEditorReadOnly) {
|
|
273
306
|
// make inner DraftJS Editors NOT editable
|
|
274
|
-
setCellEditorReadOnly(true);
|
|
275
|
-
|
|
276
|
-
// call `onEditFinish` function tell the main DraftJS Editor
|
|
307
|
+
setCellEditorReadOnly(true); // call `onEditFinish` function tell the main DraftJS Editor
|
|
277
308
|
// that we are finishing interacting with the custom atomic block.
|
|
309
|
+
|
|
278
310
|
onEditFinish({
|
|
279
311
|
entityKey,
|
|
280
312
|
entityData: {
|
|
@@ -284,6 +316,7 @@ const TableEditorBlock = props => {
|
|
|
284
316
|
});
|
|
285
317
|
}
|
|
286
318
|
}
|
|
319
|
+
|
|
287
320
|
console.debug('(rich-text-editor/table): add click outside event listener');
|
|
288
321
|
document.addEventListener('mousedown', handleClickOutside);
|
|
289
322
|
return () => {
|
|
@@ -291,8 +324,7 @@ const TableEditorBlock = props => {
|
|
|
291
324
|
console.debug('(rich-text-editor/table): remove click outside event listener');
|
|
292
325
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
293
326
|
};
|
|
294
|
-
},
|
|
295
|
-
// Skip running effect if `tableData` and `cellEditorReadOnly` are not changed.
|
|
327
|
+
}, // Skip running effect if `tableData` and `cellEditorReadOnly` are not changed.
|
|
296
328
|
[tableData, cellEditorReadOnly]);
|
|
297
329
|
return /*#__PURE__*/_react.default.createElement(TableBlockContainer, null, /*#__PURE__*/_react.default.createElement(Table, {
|
|
298
330
|
key: entityKey,
|
|
@@ -324,6 +356,7 @@ const TableEditorBlock = props => {
|
|
|
324
356
|
}));
|
|
325
357
|
})), tableData.map((rowData, rIndex) => {
|
|
326
358
|
var _tableStyles$rows;
|
|
359
|
+
|
|
327
360
|
const colsJsx = rowData.map((colData, cIndex) => {
|
|
328
361
|
return /*#__PURE__*/_react.default.createElement(Td, {
|
|
329
362
|
key: `col_${cIndex}`
|
|
@@ -371,4 +404,5 @@ const TableEditorBlock = props => {
|
|
|
371
404
|
})), colsJsx));
|
|
372
405
|
})));
|
|
373
406
|
};
|
|
407
|
+
|
|
374
408
|
exports.TableEditorBlock = TableEditorBlock;
|
|
@@ -4,18 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.atomicBlockRenderer = atomicBlockRenderer;
|
|
7
|
+
|
|
7
8
|
var _infoBoxBlock = require("./block-renderer/info-box-block");
|
|
9
|
+
|
|
8
10
|
var _tableBlock = require("./block-renderer/table-block");
|
|
11
|
+
|
|
9
12
|
var _colorBoxBlock = require("./block-renderer/color-box-block");
|
|
13
|
+
|
|
10
14
|
var _backgroundImageBlock = require("./block-renderer/background-image-block");
|
|
15
|
+
|
|
11
16
|
var _backgroundVideoBlock = require("./block-renderer/background-video-block");
|
|
17
|
+
|
|
12
18
|
var _sideIndexBlock = require("./block-renderer/side-index-block");
|
|
19
|
+
|
|
20
|
+
var _imageBlock = require("./block-renderer/image-block");
|
|
21
|
+
|
|
13
22
|
var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
|
|
23
|
+
|
|
14
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
15
26
|
const {
|
|
16
27
|
EmbeddedCodeBlock,
|
|
17
28
|
MediaBlock,
|
|
18
|
-
ImageBlock,
|
|
19
29
|
SlideshowBlock,
|
|
20
30
|
SlideshowBlockV2,
|
|
21
31
|
DividerBlock,
|
|
@@ -23,9 +33,11 @@ const {
|
|
|
23
33
|
VideoBlock,
|
|
24
34
|
AudioBlock
|
|
25
35
|
} = _readr.default.blockRenderers;
|
|
36
|
+
|
|
26
37
|
const AtomicBlock = props => {
|
|
27
38
|
const entity = props.contentState.getEntity(props.block.getEntityAt(0));
|
|
28
39
|
const entityType = entity.getType();
|
|
40
|
+
|
|
29
41
|
switch (entityType) {
|
|
30
42
|
case 'audioLink':
|
|
31
43
|
case 'imageLink':
|
|
@@ -33,65 +45,81 @@ const AtomicBlock = props => {
|
|
|
33
45
|
{
|
|
34
46
|
return MediaBlock(entity);
|
|
35
47
|
}
|
|
48
|
+
|
|
36
49
|
case 'image':
|
|
37
50
|
{
|
|
38
|
-
return
|
|
51
|
+
return (0, _imageBlock.ImageEditorBlock)(props);
|
|
39
52
|
}
|
|
53
|
+
|
|
40
54
|
case 'slideshow':
|
|
41
55
|
{
|
|
42
56
|
return SlideshowBlock(entity);
|
|
43
57
|
}
|
|
58
|
+
|
|
44
59
|
case 'slideshow-v2':
|
|
45
60
|
{
|
|
46
61
|
return SlideshowBlockV2(entity);
|
|
47
62
|
}
|
|
63
|
+
|
|
48
64
|
case 'EMBEDDEDCODE':
|
|
49
65
|
{
|
|
50
66
|
return EmbeddedCodeBlock(entity);
|
|
51
67
|
}
|
|
68
|
+
|
|
52
69
|
case 'INFOBOX':
|
|
53
70
|
{
|
|
54
71
|
return (0, _infoBoxBlock.InfoBoxEditorBlock)(props);
|
|
55
72
|
}
|
|
73
|
+
|
|
56
74
|
case 'DIVIDER':
|
|
57
75
|
{
|
|
58
76
|
return DividerBlock();
|
|
59
77
|
}
|
|
78
|
+
|
|
60
79
|
case 'TABLE':
|
|
61
80
|
{
|
|
62
81
|
return (0, _tableBlock.TableEditorBlock)(props);
|
|
63
82
|
}
|
|
83
|
+
|
|
64
84
|
case 'COLORBOX':
|
|
65
85
|
{
|
|
66
86
|
return (0, _colorBoxBlock.ColorBoxEditorBlock)(props);
|
|
67
87
|
}
|
|
88
|
+
|
|
68
89
|
case 'BACKGROUNDIMAGE':
|
|
69
90
|
{
|
|
70
91
|
return (0, _backgroundImageBlock.BGImageEditorBlock)(props);
|
|
71
92
|
}
|
|
93
|
+
|
|
72
94
|
case 'BACKGROUNDVIDEO':
|
|
73
95
|
{
|
|
74
96
|
return (0, _backgroundVideoBlock.BGVideoEditorBlock)(props);
|
|
75
97
|
}
|
|
98
|
+
|
|
76
99
|
case 'RELATEDPOST':
|
|
77
100
|
{
|
|
78
101
|
return RelatedPostBlock(entity);
|
|
79
102
|
}
|
|
103
|
+
|
|
80
104
|
case 'SIDEINDEX':
|
|
81
105
|
{
|
|
82
106
|
return (0, _sideIndexBlock.SideIndexEditorBlock)(props);
|
|
83
107
|
}
|
|
108
|
+
|
|
84
109
|
case 'VIDEO':
|
|
85
110
|
{
|
|
86
111
|
return VideoBlock(entity);
|
|
87
112
|
}
|
|
88
|
-
|
|
113
|
+
|
|
114
|
+
case 'AUDIO':
|
|
89
115
|
{
|
|
90
116
|
return AudioBlock(entity);
|
|
91
117
|
}
|
|
92
118
|
}
|
|
119
|
+
|
|
93
120
|
return null;
|
|
94
121
|
};
|
|
122
|
+
|
|
95
123
|
function atomicBlockRenderer(block) {
|
|
96
124
|
if (block.getType() === 'atomic') {
|
|
97
125
|
return {
|
|
@@ -99,5 +127,6 @@ function atomicBlockRenderer(block) {
|
|
|
99
127
|
editable: false
|
|
100
128
|
};
|
|
101
129
|
}
|
|
130
|
+
|
|
102
131
|
return null;
|
|
103
132
|
}
|