@kids-reporter/draft-editor 0.4.11 → 0.4.13
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/block-renderer-fn.js +4 -8
- package/lib/block-renderers/blockquote.js +3 -18
- package/lib/block-renderers/image.js +79 -0
- package/lib/block-renderers/info-box.js +3 -18
- package/lib/block-renderers/slideshow.js +75 -0
- package/lib/block-renderers/styled.js +28 -0
- package/lib/buttons/annotation.js +1 -1
- package/lib/buttons/image.js +5 -7
- package/lib/buttons/info-box.js +1 -1
- package/lib/buttons/news-reading.js +9 -1
- package/lib/buttons/selector/image-selector.js +88 -180
- package/lib/buttons/slideshow.js +5 -10
- package/package.json +2 -2
- package/lib/.selector/align-selector.js +0 -62
- package/lib/.selector/audio-selector.js +0 -239
- package/lib/.selector/image-selector.js +0 -387
- package/lib/.selector/pagination.js +0 -78
- package/lib/.selector/post-selector.js +0 -280
- package/lib/.selector/search-box.js +0 -37
- package/lib/.selector/video-selector.js +0 -257
|
@@ -19,36 +19,25 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
19
19
|
const _ = {
|
|
20
20
|
debounce: _debounce.default
|
|
21
21
|
};
|
|
22
|
-
const
|
|
22
|
+
const SearchBox = (0, _styledComponents.default)(_searchBox.SearchBox)`
|
|
23
23
|
margin-top: 10px;
|
|
24
24
|
`;
|
|
25
|
-
const
|
|
25
|
+
const MainBlock = _styledComponents.default.div`
|
|
26
26
|
overflow: auto;
|
|
27
27
|
margin-top: 10px;
|
|
28
28
|
`;
|
|
29
|
-
const
|
|
30
|
-
const ImageGridsWrapper = _styledComponents.default.div`
|
|
29
|
+
const GridsBlock = _styledComponents.default.div`
|
|
31
30
|
display: flex;
|
|
32
31
|
flex-wrap: wrap;
|
|
33
32
|
overflow: auto;
|
|
34
33
|
margin-top: 5px;
|
|
35
34
|
`;
|
|
36
|
-
const
|
|
35
|
+
const GridBlock = _styledComponents.default.div`
|
|
37
36
|
flex: 0 0 33.3333%;
|
|
38
37
|
cursor: pointer;
|
|
39
38
|
padding: 0 10px 10px;
|
|
40
39
|
`;
|
|
41
|
-
const
|
|
42
|
-
display: flex;
|
|
43
|
-
flex-wrap: wrap;
|
|
44
|
-
overflow: auto;
|
|
45
|
-
`;
|
|
46
|
-
const ImageMetaGridWrapper = _styledComponents.default.div`
|
|
47
|
-
flex: 0 0 33.3333%;
|
|
48
|
-
cursor: pointer;
|
|
49
|
-
padding: 0 10px 10px;
|
|
50
|
-
`;
|
|
51
|
-
const Image = _styledComponents.default.img`
|
|
40
|
+
const Img = _styledComponents.default.img`
|
|
52
41
|
display: block;
|
|
53
42
|
width: 100%;
|
|
54
43
|
aspect-ratio: 2;
|
|
@@ -64,9 +53,6 @@ const SeparationLine = _styledComponents.default.div`
|
|
|
64
53
|
margin-top: 10px;
|
|
65
54
|
margin-bottom: 10px;
|
|
66
55
|
`;
|
|
67
|
-
const ImageSelected = _styledComponents.default.div`
|
|
68
|
-
height: 1.4rem;
|
|
69
|
-
`;
|
|
70
56
|
const ErrorWrapper = _styledComponents.default.div`
|
|
71
57
|
& * {
|
|
72
58
|
margin: 0;
|
|
@@ -75,32 +61,16 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
75
61
|
function ImageGrids(props) {
|
|
76
62
|
const {
|
|
77
63
|
images,
|
|
78
|
-
selected,
|
|
79
64
|
onSelect
|
|
80
65
|
} = props;
|
|
81
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
82
|
-
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(GridsBlock, null, images.map(image => {
|
|
67
|
+
var _image$imageFile;
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(GridBlock, {
|
|
83
69
|
key: image.id,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
image:
|
|
87
|
-
});
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
function ImageGrid(props) {
|
|
91
|
-
var _image$imageFile;
|
|
92
|
-
const {
|
|
93
|
-
image,
|
|
94
|
-
onSelect,
|
|
95
|
-
isSelected
|
|
96
|
-
} = props;
|
|
97
|
-
return /*#__PURE__*/_react.default.createElement(ImageGridWrapper, {
|
|
98
|
-
key: image === null || image === void 0 ? void 0 : image.id,
|
|
99
|
-
onClick: () => onSelect(image)
|
|
100
|
-
}, /*#__PURE__*/_react.default.createElement(ImageSelected, null, isSelected ? /*#__PURE__*/_react.default.createElement("i", {
|
|
101
|
-
className: "fas fa-check-circle"
|
|
102
|
-
}) : null), /*#__PURE__*/_react.default.createElement(Image, {
|
|
103
|
-
src: image === null || image === void 0 || (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url
|
|
70
|
+
onClick: () => onSelect(image)
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement(Img, {
|
|
72
|
+
src: image === null || image === void 0 || (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url
|
|
73
|
+
}));
|
|
104
74
|
}));
|
|
105
75
|
}
|
|
106
76
|
function ImageMetaGrids(props) {
|
|
@@ -108,78 +78,37 @@ function ImageMetaGrids(props) {
|
|
|
108
78
|
imageMetas,
|
|
109
79
|
onChange,
|
|
110
80
|
enableCaption,
|
|
111
|
-
|
|
81
|
+
enableDelete
|
|
112
82
|
} = props;
|
|
113
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
114
|
-
var _imageMeta$
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
enableCaption,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
id: "caption",
|
|
143
|
-
type: "text",
|
|
144
|
-
placeholder: image === null || image === void 0 ? void 0 : image.name,
|
|
145
|
-
defaultValue: desc,
|
|
146
|
-
onChange: _.debounce(e => {
|
|
147
|
-
onChange({
|
|
148
|
-
image,
|
|
149
|
-
desc: e.target.value,
|
|
150
|
-
url
|
|
151
|
-
});
|
|
152
|
-
})
|
|
153
|
-
})), enableUrl && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
154
|
-
htmlFor: "url"
|
|
155
|
-
}, "Url:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
|
|
156
|
-
id: "url",
|
|
157
|
-
type: "text",
|
|
158
|
-
placeholder: "(Optional)",
|
|
159
|
-
defaultValue: url,
|
|
160
|
-
onChange: _.debounce(e => {
|
|
161
|
-
onChange({
|
|
162
|
-
image,
|
|
163
|
-
desc,
|
|
164
|
-
url: e.target.value
|
|
165
|
-
});
|
|
166
|
-
})
|
|
167
|
-
})));
|
|
168
|
-
}
|
|
169
|
-
function DelayInput(props) {
|
|
170
|
-
const {
|
|
171
|
-
delay,
|
|
172
|
-
onChange
|
|
173
|
-
} = props;
|
|
174
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, null, "Slideshow delay:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
|
|
175
|
-
type: "number",
|
|
176
|
-
placeholder: "\u8ACB\u8F38\u5165\u81EA\u52D5\u5207\u63DB\u79D2\u6578",
|
|
177
|
-
step: "0.5",
|
|
178
|
-
min: "1",
|
|
179
|
-
value: delay,
|
|
180
|
-
onChange: e => {
|
|
181
|
-
onChange(e.target.value);
|
|
182
|
-
}
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(GridsBlock, null, imageMetas.map((imageMeta, idx) => {
|
|
84
|
+
var _imageMeta$imageFile;
|
|
85
|
+
const {
|
|
86
|
+
desc,
|
|
87
|
+
url
|
|
88
|
+
} = imageMeta;
|
|
89
|
+
return /*#__PURE__*/_react.default.createElement(GridBlock, {
|
|
90
|
+
key: idx
|
|
91
|
+
}, enableDelete && /*#__PURE__*/_react.default.createElement("i", {
|
|
92
|
+
onClick: () => {
|
|
93
|
+
onChange(imageMeta, 'delete');
|
|
94
|
+
},
|
|
95
|
+
className: "fas fa-check-circle"
|
|
96
|
+
}), /*#__PURE__*/_react.default.createElement(Img, {
|
|
97
|
+
src: imageMeta === null || imageMeta === void 0 || (_imageMeta$imageFile = imageMeta.imageFile) === null || _imageMeta$imageFile === void 0 ? void 0 : _imageMeta$imageFile.url
|
|
98
|
+
}), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
99
|
+
htmlFor: "caption"
|
|
100
|
+
}, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
|
|
101
|
+
id: "caption",
|
|
102
|
+
type: "text",
|
|
103
|
+
placeholder: imageMeta === null || imageMeta === void 0 ? void 0 : imageMeta.name,
|
|
104
|
+
defaultValue: desc,
|
|
105
|
+
onChange: _.debounce(e => {
|
|
106
|
+
onChange(Object.assign({}, imageMeta, {
|
|
107
|
+
desc: e.target.value,
|
|
108
|
+
url
|
|
109
|
+
}), 'modify');
|
|
110
|
+
})
|
|
111
|
+
})));
|
|
183
112
|
}));
|
|
184
113
|
}
|
|
185
114
|
const imagesQuery = (0, _apollo.gql)`
|
|
@@ -208,6 +137,7 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
208
137
|
}
|
|
209
138
|
`;
|
|
210
139
|
function ImageSelector(props) {
|
|
140
|
+
const alignment = props.alignment || 'default';
|
|
211
141
|
const [queryImages, {
|
|
212
142
|
loading,
|
|
213
143
|
error,
|
|
@@ -220,13 +150,12 @@ function ImageSelector(props) {
|
|
|
220
150
|
});
|
|
221
151
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
222
152
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
223
|
-
const [selected, setSelected] = (0, _react.useState)([]);
|
|
224
|
-
const [
|
|
225
|
-
const
|
|
226
|
-
const contentWrapperRef = (0, _react.useRef)();
|
|
153
|
+
const [selected, setSelected] = (0, _react.useState)(props.selected || []);
|
|
154
|
+
const [align, setAlign] = (0, _react.useState)(alignment);
|
|
155
|
+
const contentWrapperRef = (0, _react.useRef)(null);
|
|
227
156
|
const pageSize = 6;
|
|
228
157
|
const options = [{
|
|
229
|
-
value:
|
|
158
|
+
value: 'default',
|
|
230
159
|
label: 'default',
|
|
231
160
|
isDisabled: false
|
|
232
161
|
}, {
|
|
@@ -245,15 +174,11 @@ function ImageSelector(props) {
|
|
|
245
174
|
const {
|
|
246
175
|
enableMultiSelect = false,
|
|
247
176
|
enableCaption = false,
|
|
248
|
-
enableUrl = false,
|
|
249
177
|
enableAlignment = false,
|
|
250
|
-
enableDelay = false,
|
|
251
178
|
onChange
|
|
252
179
|
} = props;
|
|
253
180
|
const onSave = () => {
|
|
254
|
-
|
|
255
|
-
adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
|
|
256
|
-
onChange(selected, align, adjustedDelay);
|
|
181
|
+
onChange(selected, align);
|
|
257
182
|
};
|
|
258
183
|
const onCancel = () => {
|
|
259
184
|
onChange([]);
|
|
@@ -262,61 +187,47 @@ function ImageSelector(props) {
|
|
|
262
187
|
setSearchText(searchInput);
|
|
263
188
|
setCurrentPage(1);
|
|
264
189
|
};
|
|
265
|
-
const onDealyChange = delay => {
|
|
266
|
-
setDelay(delay);
|
|
267
|
-
};
|
|
268
190
|
const onAlignSelectChange = align => {
|
|
269
191
|
setAlign(align);
|
|
270
192
|
};
|
|
271
193
|
const onAlignSelectOpen = () => {
|
|
272
194
|
var _contentWrapperRef$cu;
|
|
273
195
|
const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
|
|
274
|
-
scrollWrapper
|
|
196
|
+
if (scrollWrapper) {
|
|
197
|
+
scrollWrapper.scrollTop = scrollWrapper === null || scrollWrapper === void 0 ? void 0 : scrollWrapper.scrollHeight;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const changeSelectedImage = (imageEntityWithMeta, actionType) => {
|
|
201
|
+
switch (actionType) {
|
|
202
|
+
case 'delete':
|
|
203
|
+
{
|
|
204
|
+
setSelected(selected.filter(s => s.idForImageSelectorOnly !== imageEntityWithMeta.idForImageSelectorOnly));
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 'modify':
|
|
208
|
+
{
|
|
209
|
+
const foundIndex = selected.findIndex(ele => ele.idForImageSelectorOnly === imageEntityWithMeta.idForImageSelectorOnly);
|
|
210
|
+
if (foundIndex !== -1) {
|
|
211
|
+
const newSelected = [...selected];
|
|
212
|
+
newSelected[foundIndex] = imageEntityWithMeta;
|
|
213
|
+
setSelected(newSelected);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
275
218
|
};
|
|
276
|
-
const
|
|
219
|
+
const selectImage = imageEntity => {
|
|
220
|
+
const newImageEntity = Object.assign({
|
|
221
|
+
// `idForImageSelectorOnly` is designed for selecting one image multiple times
|
|
222
|
+
idForImageSelectorOnly: `${imageEntity.id}_${selected.length + 1}`,
|
|
223
|
+
desc: ''
|
|
224
|
+
}, imageEntity);
|
|
277
225
|
if (enableMultiSelect) {
|
|
278
|
-
|
|
279
|
-
var _ele$image, _imageEntityWithMeta$;
|
|
280
|
-
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);
|
|
281
|
-
});
|
|
282
|
-
if (foundIndex !== -1) {
|
|
283
|
-
selected[foundIndex] = imageEntityWithMeta;
|
|
284
|
-
setSelected(selected);
|
|
285
|
-
}
|
|
226
|
+
setSelected(selected.concat(newImageEntity));
|
|
286
227
|
return;
|
|
287
228
|
}
|
|
288
|
-
setSelected([
|
|
229
|
+
setSelected([newImageEntity]);
|
|
289
230
|
};
|
|
290
|
-
const onImagesGridSelect = imageEntity => {
|
|
291
|
-
setSelected(selected => {
|
|
292
|
-
const filterdSelected = selected.filter(ele => {
|
|
293
|
-
var _ele$image2;
|
|
294
|
-
return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// deselect the image
|
|
298
|
-
if (filterdSelected.length !== selected.length) {
|
|
299
|
-
return filterdSelected;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// add new selected one
|
|
303
|
-
if (enableMultiSelect) {
|
|
304
|
-
return selected.concat([{
|
|
305
|
-
image: imageEntity,
|
|
306
|
-
desc: ''
|
|
307
|
-
}]);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// single select
|
|
311
|
-
return [{
|
|
312
|
-
image: imageEntity,
|
|
313
|
-
desc: ''
|
|
314
|
-
}];
|
|
315
|
-
});
|
|
316
|
-
};
|
|
317
|
-
const selectedImages = selected.map(ele => {
|
|
318
|
-
return ele.image;
|
|
319
|
-
});
|
|
320
231
|
(0, _react.useEffect)(() => {
|
|
321
232
|
if (currentPage !== 0) {
|
|
322
233
|
queryImages({
|
|
@@ -328,10 +239,9 @@ function ImageSelector(props) {
|
|
|
328
239
|
});
|
|
329
240
|
}
|
|
330
241
|
}, [currentPage, searchText]);
|
|
331
|
-
let searchResult = /*#__PURE__*/_react.default.createElement(
|
|
242
|
+
let searchResult = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
|
|
332
243
|
images: images,
|
|
333
|
-
|
|
334
|
-
onSelect: onImagesGridSelect
|
|
244
|
+
onSelect: selectImage
|
|
335
245
|
}), /*#__PURE__*/_react.default.createElement(_pagination.Pagination, {
|
|
336
246
|
currentPage: currentPage,
|
|
337
247
|
total: imagesCount,
|
|
@@ -344,7 +254,8 @@ function ImageSelector(props) {
|
|
|
344
254
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
345
255
|
}
|
|
346
256
|
if (error) {
|
|
347
|
-
|
|
257
|
+
var _imagesQuery$loc;
|
|
258
|
+
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 = imagesQuery.loc) === null || _imagesQuery$loc === void 0 ? void 0 : _imagesQuery$loc.source.body)));
|
|
348
259
|
}
|
|
349
260
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
350
261
|
isOpen: true
|
|
@@ -362,20 +273,17 @@ function ImageSelector(props) {
|
|
|
362
273
|
}
|
|
363
274
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
364
275
|
ref: contentWrapperRef
|
|
365
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
276
|
+
}, /*#__PURE__*/_react.default.createElement(SearchBox, {
|
|
366
277
|
onChange: onSearchBoxChange
|
|
367
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
278
|
+
}), /*#__PURE__*/_react.default.createElement(MainBlock, null, searchResult, selected.length > 0 && /*#__PURE__*/_react.default.createElement(SeparationLine, null), /*#__PURE__*/_react.default.createElement(ImageMetaGrids, {
|
|
368
279
|
imageMetas: selected,
|
|
369
|
-
onChange:
|
|
280
|
+
onChange: changeSelectedImage,
|
|
370
281
|
enableCaption: enableCaption,
|
|
371
|
-
|
|
372
|
-
})),
|
|
373
|
-
delay: delay,
|
|
374
|
-
onChange: onDealyChange
|
|
375
|
-
}), enableAlignment && /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
|
|
282
|
+
enableDelete: enableMultiSelect
|
|
283
|
+
})), enableAlignment && /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
|
|
376
284
|
align: align,
|
|
377
285
|
options: options,
|
|
378
286
|
onChange: onAlignSelectChange,
|
|
379
287
|
onOpen: onAlignSelectOpen
|
|
380
|
-
}))))
|
|
288
|
+
}))));
|
|
381
289
|
}
|
package/lib/buttons/slideshow.js
CHANGED
|
@@ -20,21 +20,16 @@ function SlideshowButton(props) {
|
|
|
20
20
|
const promptForImageSelector = () => {
|
|
21
21
|
setToShowImageSelector(true);
|
|
22
22
|
};
|
|
23
|
-
const onImageSelectorChange = (selected,
|
|
23
|
+
const onImageSelectorChange = (selected, alignment, delay) => {
|
|
24
24
|
if (selected.length === 0) {
|
|
25
25
|
setToShowImageSelector(false);
|
|
26
26
|
return;
|
|
27
27
|
}
|
|
28
28
|
const contentState = editorState.getCurrentContent();
|
|
29
29
|
const contentStateWithEntity = contentState.createEntity('SLIDESHOW', 'IMMUTABLE', {
|
|
30
|
-
alignment
|
|
30
|
+
alignment,
|
|
31
31
|
delay,
|
|
32
|
-
images: selected
|
|
33
|
-
return {
|
|
34
|
-
...(ele === null || ele === void 0 ? void 0 : ele.image),
|
|
35
|
-
desc: ele === null || ele === void 0 ? void 0 : ele.desc
|
|
36
|
-
};
|
|
37
|
-
})
|
|
32
|
+
images: selected
|
|
38
33
|
});
|
|
39
34
|
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
|
|
40
35
|
const newEditorState = _draftJs.EditorState.set(editorState, {
|
|
@@ -49,8 +44,8 @@ function SlideshowButton(props) {
|
|
|
49
44
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(ImageSelector, {
|
|
50
45
|
onChange: onImageSelectorChange,
|
|
51
46
|
enableCaption: true,
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
enableMultiSelect: true,
|
|
48
|
+
enableAlignment: false
|
|
54
49
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
55
50
|
className: className,
|
|
56
51
|
onClick: promptForImageSelector
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kids-reporter/draft-editor",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.13",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
],
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@kids-reporter/draft-renderer": "^0.4.
|
|
26
|
+
"@kids-reporter/draft-renderer": "^0.4.13",
|
|
27
27
|
"@twreporter/errors": "^1.1.2",
|
|
28
28
|
"draft-js": "^0.11.7"
|
|
29
29
|
},
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.AlignSelector = AlignSelector;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
|
-
var _fields = require("@keystone-ui/fields");
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
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); }
|
|
12
|
-
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; }
|
|
13
|
-
const Label = _styledComponents.default.label`
|
|
14
|
-
display: block;
|
|
15
|
-
margin: 10px 0;
|
|
16
|
-
font-weight: 600;
|
|
17
|
-
`;
|
|
18
|
-
const AlignSelect = (0, _styledComponents.default)(_fields.Select)`
|
|
19
|
-
${({
|
|
20
|
-
menuHeight
|
|
21
|
-
}) => {
|
|
22
|
-
return `margin-bottom: ${menuHeight}px;`;
|
|
23
|
-
}}
|
|
24
|
-
`;
|
|
25
|
-
function AlignSelector(props) {
|
|
26
|
-
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
27
|
-
const [menuHeight, setMenuHeight] = (0, _react.useState)(0);
|
|
28
|
-
const {
|
|
29
|
-
align,
|
|
30
|
-
options,
|
|
31
|
-
onChange,
|
|
32
|
-
onOpen
|
|
33
|
-
} = props;
|
|
34
|
-
(0, _react.useEffect)(() => {
|
|
35
|
-
const selectMenu = document.querySelector('.css-nabggt-menu');
|
|
36
|
-
if (selectMenu) {
|
|
37
|
-
const styles = window.getComputedStyle(selectMenu);
|
|
38
|
-
const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
|
|
39
|
-
setMenuHeight(selectMenu.offsetHeight + margin);
|
|
40
|
-
} else {
|
|
41
|
-
setMenuHeight(0);
|
|
42
|
-
}
|
|
43
|
-
if (isOpen && onOpen) {
|
|
44
|
-
onOpen();
|
|
45
|
-
}
|
|
46
|
-
}, [isOpen]);
|
|
47
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
48
|
-
htmlFor: "alignment"
|
|
49
|
-
}, "\u5C0D\u9F4A"), /*#__PURE__*/_react.default.createElement(AlignSelect, {
|
|
50
|
-
id: "alignment"
|
|
51
|
-
// default align === undefined
|
|
52
|
-
,
|
|
53
|
-
value: options.find(option => option.value === align),
|
|
54
|
-
options: options,
|
|
55
|
-
onChange: option => {
|
|
56
|
-
onChange(option.value);
|
|
57
|
-
},
|
|
58
|
-
onMenuOpen: () => setIsOpen(true),
|
|
59
|
-
onMenuClose: () => setIsOpen(false),
|
|
60
|
-
menuHeight: menuHeight
|
|
61
|
-
}));
|
|
62
|
-
}
|