@kids-reporter/draft-editor 0.4.0 → 0.4.2
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/.selector/align-selector.js +2 -11
- package/lib/.selector/audio-selector.js +7 -36
- package/lib/.selector/image-selector.js +12 -55
- package/lib/.selector/pagination.js +2 -6
- package/lib/.selector/post-selector.js +15 -46
- package/lib/.selector/search-box.js +0 -9
- package/lib/.selector/video-selector.js +7 -35
- package/lib/block-renderer-fn.js +0 -12
- package/lib/block-renderers/blockquote.js +2 -13
- package/lib/buttons/annotation.js +0 -19
- package/lib/buttons/blockquote.js +11 -30
- package/lib/buttons/embedded-code.js +5 -16
- package/lib/buttons/enlarge.js +0 -3
- package/lib/buttons/image.js +5 -16
- package/lib/buttons/info-box.js +11 -27
- package/lib/buttons/link.js +0 -19
- package/lib/buttons/select.js +0 -6
- package/lib/buttons/selector/align-selector.js +2 -11
- package/lib/buttons/selector/image-selector.js +10 -52
- package/lib/buttons/selector/pagination.js +2 -6
- package/lib/buttons/selector/search-box.js +0 -9
- package/lib/buttons/slideshow.js +5 -15
- package/lib/draft-editor.js +8 -68
- package/lib/index.js +23 -5
- package/package.json +1 -1
|
@@ -4,31 +4,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ImageSelector = ImageSelector;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
11
|
-
|
|
12
9
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
-
|
|
14
10
|
var _fields = require("@keystone-ui/fields");
|
|
15
|
-
|
|
16
11
|
var _modals = require("@keystone-ui/modals");
|
|
17
|
-
|
|
18
12
|
var _apollo = require("@keystone-6/core/admin-ui/apollo");
|
|
19
|
-
|
|
20
13
|
var _alignSelector = require("./align-selector");
|
|
21
|
-
|
|
22
14
|
var _searchBox = require("./search-box");
|
|
23
|
-
|
|
24
15
|
var _pagination = require("./pagination");
|
|
25
|
-
|
|
26
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
17
|
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); }
|
|
29
|
-
|
|
30
18
|
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; }
|
|
31
|
-
|
|
32
19
|
const _ = {
|
|
33
20
|
debounce: _debounce.default
|
|
34
21
|
};
|
|
@@ -85,7 +72,6 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
85
72
|
margin: 0;
|
|
86
73
|
}
|
|
87
74
|
`;
|
|
88
|
-
|
|
89
75
|
function ImageGrids(props) {
|
|
90
76
|
const {
|
|
91
77
|
images,
|
|
@@ -101,10 +87,8 @@ function ImageGrids(props) {
|
|
|
101
87
|
});
|
|
102
88
|
}));
|
|
103
89
|
}
|
|
104
|
-
|
|
105
90
|
function ImageGrid(props) {
|
|
106
91
|
var _image$imageFile;
|
|
107
|
-
|
|
108
92
|
const {
|
|
109
93
|
image,
|
|
110
94
|
onSelect,
|
|
@@ -116,10 +100,9 @@ function ImageGrid(props) {
|
|
|
116
100
|
}, /*#__PURE__*/_react.default.createElement(ImageSelected, null, isSelected ? /*#__PURE__*/_react.default.createElement("i", {
|
|
117
101
|
className: "fas fa-check-circle"
|
|
118
102
|
}) : null), /*#__PURE__*/_react.default.createElement(Image, {
|
|
119
|
-
src: image === null || image === void 0
|
|
103
|
+
src: image === null || image === void 0 || (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url
|
|
120
104
|
}));
|
|
121
105
|
}
|
|
122
|
-
|
|
123
106
|
function ImageMetaGrids(props) {
|
|
124
107
|
const {
|
|
125
108
|
imageMetas,
|
|
@@ -129,9 +112,8 @@ function ImageMetaGrids(props) {
|
|
|
129
112
|
} = props;
|
|
130
113
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
|
|
131
114
|
var _imageMeta$image;
|
|
132
|
-
|
|
133
115
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
|
|
134
|
-
key: imageMeta === null || imageMeta === void 0
|
|
116
|
+
key: imageMeta === null || imageMeta === void 0 || (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
|
|
135
117
|
imageMeta: imageMeta,
|
|
136
118
|
enableCaption: enableCaption,
|
|
137
119
|
enableUrl: enableUrl,
|
|
@@ -139,10 +121,8 @@ function ImageMetaGrids(props) {
|
|
|
139
121
|
});
|
|
140
122
|
}));
|
|
141
123
|
}
|
|
142
|
-
|
|
143
124
|
function ImageMetaGrid(props) {
|
|
144
125
|
var _image$imageFile2;
|
|
145
|
-
|
|
146
126
|
const {
|
|
147
127
|
imageMeta,
|
|
148
128
|
enableCaption,
|
|
@@ -155,7 +135,7 @@ function ImageMetaGrid(props) {
|
|
|
155
135
|
url
|
|
156
136
|
} = imageMeta;
|
|
157
137
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGridWrapper, null, /*#__PURE__*/_react.default.createElement(Image, {
|
|
158
|
-
src: image === null || image === void 0
|
|
138
|
+
src: image === null || image === void 0 || (_image$imageFile2 = image.imageFile) === null || _image$imageFile2 === void 0 ? void 0 : _image$imageFile2.url
|
|
159
139
|
}), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
160
140
|
htmlFor: "caption"
|
|
161
141
|
}, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
|
|
@@ -186,7 +166,6 @@ function ImageMetaGrid(props) {
|
|
|
186
166
|
})
|
|
187
167
|
})));
|
|
188
168
|
}
|
|
189
|
-
|
|
190
169
|
function DelayInput(props) {
|
|
191
170
|
const {
|
|
192
171
|
delay,
|
|
@@ -203,7 +182,6 @@ function DelayInput(props) {
|
|
|
203
182
|
}
|
|
204
183
|
}));
|
|
205
184
|
}
|
|
206
|
-
|
|
207
185
|
const imagesQuery = (0, _apollo.gql)`
|
|
208
186
|
query Photos($searchText: String!, $take: Int, $skip: Int) {
|
|
209
187
|
photosCount(where: { name: { contains: $searchText } })
|
|
@@ -229,7 +207,6 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
229
207
|
}
|
|
230
208
|
}
|
|
231
209
|
`;
|
|
232
|
-
|
|
233
210
|
function ImageSelector(props) {
|
|
234
211
|
const [queryImages, {
|
|
235
212
|
loading,
|
|
@@ -242,7 +219,6 @@ function ImageSelector(props) {
|
|
|
242
219
|
fetchPolicy: 'no-cache'
|
|
243
220
|
});
|
|
244
221
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
245
|
-
|
|
246
222
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
247
223
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
248
224
|
const [delay, setDelay] = (0, _react.useState)('5');
|
|
@@ -270,84 +246,70 @@ function ImageSelector(props) {
|
|
|
270
246
|
enableDelay = false,
|
|
271
247
|
onChange
|
|
272
248
|
} = props;
|
|
273
|
-
|
|
274
249
|
const onSave = () => {
|
|
275
250
|
let adjustedDelay = +delay;
|
|
276
251
|
adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
|
|
277
252
|
onChange(selected, align, adjustedDelay);
|
|
278
253
|
};
|
|
279
|
-
|
|
280
254
|
const onCancel = () => {
|
|
281
255
|
onChange([]);
|
|
282
256
|
};
|
|
283
|
-
|
|
284
257
|
const onSearchBoxChange = async searchInput => {
|
|
285
258
|
setSearchText(searchInput);
|
|
286
259
|
setCurrentPage(1);
|
|
287
260
|
};
|
|
288
|
-
|
|
289
261
|
const onDealyChange = delay => {
|
|
290
262
|
setDelay(delay);
|
|
291
263
|
};
|
|
292
|
-
|
|
293
264
|
const onAlignSelectChange = align => {
|
|
294
265
|
setAlign(align);
|
|
295
266
|
};
|
|
296
|
-
|
|
297
267
|
const onAlignSelectOpen = () => {
|
|
298
268
|
var _contentWrapperRef$cu;
|
|
299
|
-
|
|
300
269
|
const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
|
|
301
270
|
scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
|
|
302
271
|
};
|
|
303
|
-
|
|
304
272
|
const onImageMetaChange = imageEntityWithMeta => {
|
|
305
273
|
if (enableMultiSelect) {
|
|
306
274
|
const foundIndex = selected.findIndex(ele => {
|
|
307
275
|
var _ele$image, _imageEntityWithMeta$;
|
|
308
|
-
|
|
309
|
-
return (ele === null || ele === void 0 ? void 0 : (_ele$image = ele.image) === null || _ele$image === void 0 ? void 0 : _ele$image.id) === (imageEntityWithMeta === null || imageEntityWithMeta === void 0 ? void 0 : (_imageEntityWithMeta$ = imageEntityWithMeta.image) === null || _imageEntityWithMeta$ === void 0 ? void 0 : _imageEntityWithMeta$.id);
|
|
276
|
+
return (ele === null || ele === void 0 || (_ele$image = ele.image) === null || _ele$image === void 0 ? void 0 : _ele$image.id) === (imageEntityWithMeta === null || imageEntityWithMeta === void 0 || (_imageEntityWithMeta$ = imageEntityWithMeta.image) === null || _imageEntityWithMeta$ === void 0 ? void 0 : _imageEntityWithMeta$.id);
|
|
310
277
|
});
|
|
311
|
-
|
|
312
278
|
if (foundIndex !== -1) {
|
|
313
279
|
selected[foundIndex] = imageEntityWithMeta;
|
|
314
280
|
setSelected(selected);
|
|
315
281
|
}
|
|
316
|
-
|
|
317
282
|
return;
|
|
318
283
|
}
|
|
319
|
-
|
|
320
284
|
setSelected([imageEntityWithMeta]);
|
|
321
285
|
};
|
|
322
|
-
|
|
323
286
|
const onImagesGridSelect = imageEntity => {
|
|
324
287
|
setSelected(selected => {
|
|
325
288
|
const filterdSelected = selected.filter(ele => {
|
|
326
289
|
var _ele$image2;
|
|
327
|
-
|
|
328
290
|
return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
|
|
329
|
-
});
|
|
291
|
+
});
|
|
330
292
|
|
|
293
|
+
// deselect the image
|
|
331
294
|
if (filterdSelected.length !== selected.length) {
|
|
332
295
|
return filterdSelected;
|
|
333
|
-
}
|
|
334
|
-
|
|
296
|
+
}
|
|
335
297
|
|
|
298
|
+
// add new selected one
|
|
336
299
|
if (enableMultiSelect) {
|
|
337
300
|
return selected.concat([{
|
|
338
301
|
image: imageEntity,
|
|
339
302
|
desc: ''
|
|
340
303
|
}]);
|
|
341
|
-
}
|
|
342
|
-
|
|
304
|
+
}
|
|
343
305
|
|
|
306
|
+
// single select
|
|
344
307
|
return [{
|
|
345
308
|
image: imageEntity,
|
|
346
309
|
desc: ''
|
|
347
310
|
}];
|
|
348
311
|
});
|
|
349
312
|
};
|
|
350
|
-
|
|
351
313
|
const selectedImages = selected.map(ele => {
|
|
352
314
|
return ele.image;
|
|
353
315
|
});
|
|
@@ -362,7 +324,6 @@ function ImageSelector(props) {
|
|
|
362
324
|
});
|
|
363
325
|
}
|
|
364
326
|
}, [currentPage, searchText]);
|
|
365
|
-
|
|
366
327
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
|
|
367
328
|
images: images,
|
|
368
329
|
selected: selectedImages,
|
|
@@ -375,15 +336,12 @@ function ImageSelector(props) {
|
|
|
375
336
|
setCurrentPage(pageIndex);
|
|
376
337
|
}
|
|
377
338
|
}));
|
|
378
|
-
|
|
379
339
|
if (loading) {
|
|
380
340
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
381
341
|
}
|
|
382
|
-
|
|
383
342
|
if (error) {
|
|
384
343
|
searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `images` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, imagesQuery.loc.source.body)));
|
|
385
344
|
}
|
|
386
|
-
|
|
387
345
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
388
346
|
isOpen: true
|
|
389
347
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Pagination = Pagination;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
const PaginationWrapper = _styledComponents.default.div`
|
|
15
11
|
display: flex;
|
|
16
12
|
justify-content: end;
|
|
@@ -33,7 +29,6 @@ const ArrowButtonWrapper = _styledComponents.default.a`
|
|
|
33
29
|
}
|
|
34
30
|
}}
|
|
35
31
|
`;
|
|
36
|
-
|
|
37
32
|
function Pagination({
|
|
38
33
|
currentPage,
|
|
39
34
|
total,
|
|
@@ -43,8 +38,9 @@ function Pagination({
|
|
|
43
38
|
const minPage = 1;
|
|
44
39
|
const limit = Math.ceil(total / pageSize);
|
|
45
40
|
const nextPage = currentPage + 1;
|
|
46
|
-
const prevPage = currentPage - 1;
|
|
41
|
+
const prevPage = currentPage - 1;
|
|
47
42
|
|
|
43
|
+
// Don't render the pagiantion component if the pageSize is greater than the total number of items in the list.
|
|
48
44
|
if (total <= pageSize) return null;
|
|
49
45
|
return /*#__PURE__*/_react.default.createElement(PaginationWrapper, null, /*#__PURE__*/_react.default.createElement("div", null, currentPage, " of ", limit, " pages"), /*#__PURE__*/_react.default.createElement(Arrows, null, /*#__PURE__*/_react.default.createElement(ArrowButtonWrapper, {
|
|
50
46
|
onClick: () => {
|
|
@@ -4,25 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SearchBox = SearchBox;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
-
|
|
12
9
|
var _button = require("@keystone-ui/button");
|
|
13
|
-
|
|
14
10
|
var _fields = require("@keystone-ui/fields");
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
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
|
-
|
|
20
13
|
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
|
-
|
|
22
14
|
const SearchBoxWrapper = _styledComponents.default.div`
|
|
23
15
|
display: flex;
|
|
24
16
|
`;
|
|
25
|
-
|
|
26
17
|
function SearchBox(props) {
|
|
27
18
|
const {
|
|
28
19
|
onChange,
|
package/lib/buttons/slideshow.js
CHANGED
|
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SlideshowButton = SlideshowButton;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _imageSelector = require("./selector/image-selector");
|
|
11
|
-
|
|
12
9
|
var _draftJs = require("draft-js");
|
|
13
|
-
|
|
14
10
|
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); }
|
|
15
|
-
|
|
16
11
|
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; }
|
|
17
|
-
|
|
18
12
|
function SlideshowButton(props) {
|
|
19
13
|
const {
|
|
20
14
|
editorState,
|
|
@@ -23,39 +17,35 @@ function SlideshowButton(props) {
|
|
|
23
17
|
ImageSelector = _imageSelector.ImageSelector
|
|
24
18
|
} = props;
|
|
25
19
|
const [toShowImageSelector, setToShowImageSelector] = (0, _react.useState)(false);
|
|
26
|
-
|
|
27
20
|
const promptForImageSelector = () => {
|
|
28
21
|
setToShowImageSelector(true);
|
|
29
22
|
};
|
|
30
|
-
|
|
31
23
|
const onImageSelectorChange = (selected, align, delay) => {
|
|
32
24
|
if (selected.length === 0) {
|
|
33
25
|
setToShowImageSelector(false);
|
|
34
26
|
return;
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
const contentState = editorState.getCurrentContent();
|
|
38
29
|
const contentStateWithEntity = contentState.createEntity('SLIDESHOW', 'IMMUTABLE', {
|
|
39
30
|
alignment: align,
|
|
40
31
|
delay,
|
|
41
32
|
images: selected.map(ele => {
|
|
42
|
-
return {
|
|
33
|
+
return {
|
|
34
|
+
...(ele === null || ele === void 0 ? void 0 : ele.image),
|
|
43
35
|
desc: ele === null || ele === void 0 ? void 0 : ele.desc
|
|
44
36
|
};
|
|
45
37
|
})
|
|
46
38
|
});
|
|
47
39
|
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
|
|
48
|
-
|
|
49
40
|
const newEditorState = _draftJs.EditorState.set(editorState, {
|
|
50
41
|
currentContent: contentStateWithEntity
|
|
51
|
-
});
|
|
52
|
-
// If you set an empty string, you will get an error: Unknown DraftEntity key: null
|
|
53
|
-
|
|
42
|
+
});
|
|
54
43
|
|
|
44
|
+
// The third parameter here is a space string, not an empty string
|
|
45
|
+
// If you set an empty string, you will get an error: Unknown DraftEntity key: null
|
|
55
46
|
onChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
|
|
56
47
|
setToShowImageSelector(false);
|
|
57
48
|
};
|
|
58
|
-
|
|
59
49
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(ImageSelector, {
|
|
60
50
|
onChange: onImageSelectorChange,
|
|
61
51
|
enableCaption: true,
|
package/lib/draft-editor.js
CHANGED
|
@@ -11,43 +11,24 @@ Object.defineProperty(exports, "decorator", {
|
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
13
|
exports.default = void 0;
|
|
14
|
-
|
|
15
14
|
var _react = _interopRequireDefault(require("react"));
|
|
16
|
-
|
|
17
15
|
var _btNames = _interopRequireDefault(require("./buttons/bt-names"));
|
|
18
|
-
|
|
19
16
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
20
|
-
|
|
21
17
|
var _draftJs = require("draft-js");
|
|
22
|
-
|
|
23
18
|
var _blockquote = require("./buttons/blockquote");
|
|
24
|
-
|
|
25
19
|
var _embeddedCode = require("./buttons/embedded-code");
|
|
26
|
-
|
|
27
20
|
var _enlarge = require("./buttons/enlarge");
|
|
28
|
-
|
|
29
21
|
var _image = require("./buttons/image");
|
|
30
|
-
|
|
31
22
|
var _link = require("./buttons/link");
|
|
32
|
-
|
|
33
23
|
var _slideshow = require("./buttons/slideshow");
|
|
34
|
-
|
|
35
24
|
var _imageSelector = require("./buttons/selector/image-selector");
|
|
36
|
-
|
|
37
25
|
var _blockRendererFn = require("./block-renderer-fn");
|
|
38
|
-
|
|
39
26
|
var _draftRenderer = require("@kids-reporter/draft-renderer");
|
|
40
|
-
|
|
41
27
|
var _annotation = require("./buttons/annotation");
|
|
42
|
-
|
|
43
28
|
var _infoBox = require("./buttons/info-box");
|
|
44
|
-
|
|
45
29
|
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); }
|
|
46
|
-
|
|
47
30
|
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; }
|
|
48
|
-
|
|
49
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
50
|
-
|
|
51
32
|
const buttonStyle = (0, _styledComponents.css)`
|
|
52
33
|
cursor: pointer;
|
|
53
34
|
border-radius: 6px;
|
|
@@ -65,11 +46,9 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
65
46
|
if (props.readOnly) {
|
|
66
47
|
return '#c1c7d0';
|
|
67
48
|
}
|
|
68
|
-
|
|
69
49
|
if (props.isActive) {
|
|
70
50
|
return '#3b82f6';
|
|
71
51
|
}
|
|
72
|
-
|
|
73
52
|
return '#6b7280';
|
|
74
53
|
}};
|
|
75
54
|
border: solid 1px
|
|
@@ -77,22 +56,18 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
77
56
|
if (props.readOnly) {
|
|
78
57
|
return '#c1c7d0';
|
|
79
58
|
}
|
|
80
|
-
|
|
81
59
|
if (props.isActive) {
|
|
82
60
|
return '#3b82f6';
|
|
83
61
|
}
|
|
84
|
-
|
|
85
62
|
return '#6b7280';
|
|
86
63
|
}};
|
|
87
64
|
box-shadow: ${props => {
|
|
88
65
|
if (props.readOnly) {
|
|
89
66
|
return 'unset';
|
|
90
67
|
}
|
|
91
|
-
|
|
92
68
|
if (props.isActive) {
|
|
93
69
|
return 'rgba(38, 132, 255, 20%) 0px 1px 4px ';
|
|
94
70
|
}
|
|
95
|
-
|
|
96
71
|
return 'unset';
|
|
97
72
|
}};
|
|
98
73
|
transition: box-shadow 100ms linear;
|
|
@@ -101,7 +76,6 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
101
76
|
if (props.isDisabled) {
|
|
102
77
|
return 'none';
|
|
103
78
|
}
|
|
104
|
-
|
|
105
79
|
return 'inline-flex';
|
|
106
80
|
}};
|
|
107
81
|
`;
|
|
@@ -215,10 +189,8 @@ const EnlargeButtonWrapper = _styledComponents.default.div`
|
|
|
215
189
|
right: 0;
|
|
216
190
|
margin: 0;
|
|
217
191
|
`;
|
|
218
|
-
|
|
219
192
|
class RichTextEditor extends _react.default.Component {
|
|
220
193
|
editorRef = null;
|
|
221
|
-
|
|
222
194
|
constructor(props) {
|
|
223
195
|
super(props);
|
|
224
196
|
this.state = {
|
|
@@ -226,18 +198,15 @@ class RichTextEditor extends _react.default.Component {
|
|
|
226
198
|
readOnly: false
|
|
227
199
|
};
|
|
228
200
|
}
|
|
229
|
-
|
|
230
201
|
onChange = editorState => {
|
|
231
202
|
this.props.onChange(editorState);
|
|
232
203
|
};
|
|
233
204
|
handleKeyCommand = (command, editorState) => {
|
|
234
205
|
const newState = _draftJs.RichUtils.handleKeyCommand(editorState, command);
|
|
235
|
-
|
|
236
206
|
if (newState) {
|
|
237
207
|
this.onChange(newState);
|
|
238
208
|
return 'handled';
|
|
239
209
|
}
|
|
240
|
-
|
|
241
210
|
return 'not-handled';
|
|
242
211
|
};
|
|
243
212
|
handleReturn = event => {
|
|
@@ -249,24 +218,17 @@ class RichTextEditor extends _react.default.Component {
|
|
|
249
218
|
onChange(_draftJs.RichUtils.insertSoftNewline(editorState));
|
|
250
219
|
return 'handled';
|
|
251
220
|
}
|
|
252
|
-
|
|
253
221
|
return 'not-handled';
|
|
254
222
|
};
|
|
255
223
|
mapKeyToEditorCommand = e => {
|
|
256
|
-
if (e.keyCode === 9
|
|
257
|
-
|
|
258
|
-
) {
|
|
259
|
-
const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4
|
|
260
|
-
/* maxDepth */
|
|
261
|
-
);
|
|
224
|
+
if (e.keyCode === 9 /* TAB */) {
|
|
225
|
+
const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4 /* maxDepth */);
|
|
262
226
|
|
|
263
227
|
if (newEditorState !== this.props.editorState) {
|
|
264
228
|
this.onChange(newEditorState);
|
|
265
229
|
}
|
|
266
|
-
|
|
267
230
|
return null;
|
|
268
231
|
}
|
|
269
|
-
|
|
270
232
|
return (0, _draftJs.getDefaultKeyBinding)(e);
|
|
271
233
|
};
|
|
272
234
|
toggleBlockType = blockType => {
|
|
@@ -283,23 +245,18 @@ class RichTextEditor extends _react.default.Component {
|
|
|
283
245
|
const endOffset = selection.getEndOffset();
|
|
284
246
|
let entityInstance;
|
|
285
247
|
let entityKey;
|
|
286
|
-
|
|
287
248
|
if (!selection.isCollapsed()) {
|
|
288
249
|
entityKey = startBlock.getEntityAt(startOffset);
|
|
289
250
|
} else {
|
|
290
251
|
entityKey = startBlock.getEntityAt(endOffset);
|
|
291
252
|
}
|
|
292
|
-
|
|
293
253
|
if (entityKey !== null) {
|
|
294
254
|
entityInstance = contentState.getEntity(entityKey);
|
|
295
255
|
}
|
|
296
|
-
|
|
297
256
|
let entityType = '';
|
|
298
|
-
|
|
299
257
|
if (entityInstance) {
|
|
300
258
|
entityType = entityInstance.getType();
|
|
301
259
|
}
|
|
302
|
-
|
|
303
260
|
return entityType;
|
|
304
261
|
};
|
|
305
262
|
toggleEnlarge = () => {
|
|
@@ -309,7 +266,6 @@ class RichTextEditor extends _react.default.Component {
|
|
|
309
266
|
};
|
|
310
267
|
blockRendererFn = block => {
|
|
311
268
|
const atomicBlockObj = (0, _blockRendererFn.atomicBlockRenderer)(block);
|
|
312
|
-
|
|
313
269
|
if (atomicBlockObj) {
|
|
314
270
|
const onEditStart = () => {
|
|
315
271
|
this.setState({
|
|
@@ -325,7 +281,6 @@ class RichTextEditor extends _react.default.Component {
|
|
|
325
281
|
readOnly: true
|
|
326
282
|
});
|
|
327
283
|
};
|
|
328
|
-
|
|
329
284
|
const onEditFinish = ({
|
|
330
285
|
entityKey,
|
|
331
286
|
entityData
|
|
@@ -336,30 +291,28 @@ class RichTextEditor extends _react.default.Component {
|
|
|
336
291
|
this.onChange(_draftJs.EditorState.set(this.props.editorState, {
|
|
337
292
|
currentContent: newContentState
|
|
338
293
|
}));
|
|
339
|
-
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Custom block interaction is finished.
|
|
340
297
|
// Therefore, we set readOnly={false} to
|
|
341
298
|
// make editor editable.
|
|
342
|
-
|
|
343
|
-
|
|
344
299
|
this.setState({
|
|
345
300
|
readOnly: false
|
|
346
301
|
});
|
|
347
|
-
};
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
// `onEditStart` and `onEditFinish` will be passed
|
|
348
305
|
// into custom block component.
|
|
349
306
|
// We can get them via `props.blockProps.onEditStart`
|
|
350
307
|
// and `props.blockProps.onEditFinish` in the custom block components.
|
|
351
|
-
|
|
352
|
-
|
|
353
308
|
atomicBlockObj['props'] = {
|
|
354
309
|
onEditStart,
|
|
355
310
|
onEditFinish,
|
|
356
311
|
getMainEditorReadOnly: () => this.state.readOnly
|
|
357
312
|
};
|
|
358
313
|
}
|
|
359
|
-
|
|
360
314
|
return atomicBlockObj;
|
|
361
315
|
};
|
|
362
|
-
|
|
363
316
|
render() {
|
|
364
317
|
const {
|
|
365
318
|
disabledButtons = []
|
|
@@ -367,11 +320,9 @@ class RichTextEditor extends _react.default.Component {
|
|
|
367
320
|
let {
|
|
368
321
|
editorState
|
|
369
322
|
} = this.props;
|
|
370
|
-
|
|
371
323
|
if (!(editorState instanceof _draftJs.EditorState)) {
|
|
372
324
|
editorState = _draftJs.EditorState.createEmpty(_draftRenderer.decorator);
|
|
373
325
|
}
|
|
374
|
-
|
|
375
326
|
const {
|
|
376
327
|
isEnlarged,
|
|
377
328
|
readOnly
|
|
@@ -447,7 +398,6 @@ class RichTextEditor extends _react.default.Component {
|
|
|
447
398
|
onClick: () => {
|
|
448
399
|
if (this.editorRef) {
|
|
449
400
|
var _this$editorRef;
|
|
450
|
-
|
|
451
401
|
// eslint-disable-next-line prettier/prettier
|
|
452
402
|
(_this$editorRef = this.editorRef) === null || _this$editorRef === void 0 ? void 0 : _this$editorRef.focus();
|
|
453
403
|
}
|
|
@@ -466,17 +416,13 @@ class RichTextEditor extends _react.default.Component {
|
|
|
466
416
|
readOnly: readOnly
|
|
467
417
|
}))));
|
|
468
418
|
}
|
|
469
|
-
|
|
470
419
|
}
|
|
471
|
-
|
|
472
420
|
exports.RichTextEditor = RichTextEditor;
|
|
473
|
-
|
|
474
421
|
class StyleButton extends _react.default.Component {
|
|
475
422
|
onToggle = e => {
|
|
476
423
|
e.preventDefault();
|
|
477
424
|
this.props.onToggle(this.props.style);
|
|
478
425
|
};
|
|
479
|
-
|
|
480
426
|
render() {
|
|
481
427
|
return /*#__PURE__*/_react.default.createElement(CustomButton, {
|
|
482
428
|
isDisabled: this.props.isDisabled,
|
|
@@ -487,9 +433,7 @@ class StyleButton extends _react.default.Component {
|
|
|
487
433
|
className: this.props.icon
|
|
488
434
|
}), /*#__PURE__*/_react.default.createElement("span", null, !this.props.icon ? this.props.label : ''));
|
|
489
435
|
}
|
|
490
|
-
|
|
491
436
|
}
|
|
492
|
-
|
|
493
437
|
const blockStyles = [{
|
|
494
438
|
label: 'H2',
|
|
495
439
|
style: 'header-two',
|
|
@@ -515,7 +459,6 @@ const blockStyles = [{
|
|
|
515
459
|
style: 'code-block',
|
|
516
460
|
icon: 'fas fa-code'
|
|
517
461
|
}];
|
|
518
|
-
|
|
519
462
|
const BlockStyleControls = props => {
|
|
520
463
|
const {
|
|
521
464
|
editorState,
|
|
@@ -534,7 +477,6 @@ const BlockStyleControls = props => {
|
|
|
534
477
|
readOnly: props.readOnly
|
|
535
478
|
})));
|
|
536
479
|
};
|
|
537
|
-
|
|
538
480
|
const inlineStyles = [{
|
|
539
481
|
label: 'Bold',
|
|
540
482
|
style: 'BOLD',
|
|
@@ -552,7 +494,6 @@ const inlineStyles = [{
|
|
|
552
494
|
style: 'CODE',
|
|
553
495
|
icon: 'fas fa-terminal'
|
|
554
496
|
}];
|
|
555
|
-
|
|
556
497
|
const InlineStyleControls = props => {
|
|
557
498
|
const currentStyle = props.editorState.getCurrentInlineStyle();
|
|
558
499
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, inlineStyles.map(type => /*#__PURE__*/_react.default.createElement(StyleButton, {
|
|
@@ -566,7 +507,6 @@ const InlineStyleControls = props => {
|
|
|
566
507
|
readOnly: props.readOnly
|
|
567
508
|
})));
|
|
568
509
|
};
|
|
569
|
-
|
|
570
510
|
const AnnotationButton = (0, _annotation.createAnnotationButton)({
|
|
571
511
|
InnerEditor: RichTextEditor,
|
|
572
512
|
decorator: _draftRenderer.decorator
|
package/lib/index.js
CHANGED
|
@@ -3,13 +3,31 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "RichTextEditor", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _draftEditor.RichTextEditor;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "buttonNames", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _btNames.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "decorator", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _draftEditor.decorator;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
6
24
|
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
25
|
+
var _draftEditor = require("./draft-editor");
|
|
26
|
+
var _btNames = _interopRequireDefault(require("./buttons/bt-names"));
|
|
10
27
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
28
|
var _default = {
|
|
13
|
-
|
|
29
|
+
RichTextEditor: _draftEditor.RichTextEditor,
|
|
30
|
+
buttonNames: _btNames.default,
|
|
31
|
+
decorator: _draftEditor.decorator
|
|
14
32
|
};
|
|
15
33
|
exports.default = _default;
|