@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,39 +4,79 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.buttonNames = void 0;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
11
|
+
|
|
12
|
+
var _theme = _interopRequireDefault(require("./theme"));
|
|
13
|
+
|
|
9
14
|
var _draftJs = require("draft-js");
|
|
15
|
+
|
|
10
16
|
var _blockRendererFn = require("./block-renderer-fn");
|
|
17
|
+
|
|
11
18
|
var _entityDecorator = _interopRequireDefault(require("./entity-decorator"));
|
|
19
|
+
|
|
12
20
|
var _annotation = require("../../draft-js/buttons/annotation");
|
|
21
|
+
|
|
13
22
|
var _embeddedCode = require("../../draft-js/buttons/embedded-code");
|
|
23
|
+
|
|
14
24
|
var _enlarge = require("../../draft-js/buttons/enlarge");
|
|
25
|
+
|
|
15
26
|
var _image = require("../../draft-js/buttons/image");
|
|
27
|
+
|
|
16
28
|
var _infoBox = require("../../draft-js/buttons/info-box");
|
|
29
|
+
|
|
17
30
|
var _link = require("../../draft-js/buttons/link");
|
|
31
|
+
|
|
18
32
|
var _slideshow = require("../../draft-js/buttons/slideshow");
|
|
33
|
+
|
|
19
34
|
var _table = require("../../draft-js/buttons/table");
|
|
35
|
+
|
|
20
36
|
var _divider = require("../../draft-js/buttons/divider");
|
|
37
|
+
|
|
21
38
|
var _colorBox = require("../../draft-js/buttons/color-box");
|
|
39
|
+
|
|
22
40
|
var _backgroundImage = require("../../draft-js/buttons/background-image");
|
|
41
|
+
|
|
23
42
|
var _backgroundVideo = require("../../draft-js/buttons/background-video");
|
|
43
|
+
|
|
24
44
|
var _relatedPost = require("../../draft-js/buttons/related-post");
|
|
45
|
+
|
|
25
46
|
var _sideIndex = require("../../draft-js/buttons/side-index");
|
|
47
|
+
|
|
26
48
|
var _textAlign = require("../../draft-js/buttons/text-align");
|
|
49
|
+
|
|
27
50
|
var _fontColor = require("../../draft-js/buttons/font-color");
|
|
51
|
+
|
|
28
52
|
var _backgroundColor = require("../../draft-js/buttons/background-color");
|
|
53
|
+
|
|
29
54
|
var _video = require("../../draft-js/buttons/video");
|
|
55
|
+
|
|
30
56
|
var _audio = require("../../draft-js/buttons/audio");
|
|
57
|
+
|
|
58
|
+
var _youtube = require("../../draft-js/buttons/youtube");
|
|
59
|
+
|
|
31
60
|
var _const = require("../../draft-js/const");
|
|
61
|
+
|
|
32
62
|
var _imageSelector = require("./selector/image-selector");
|
|
63
|
+
|
|
33
64
|
var _videoSelector = require("./selector/video-selector");
|
|
65
|
+
|
|
34
66
|
var _postSelector = require("./selector/post-selector");
|
|
67
|
+
|
|
35
68
|
var _audioSelector = require("./selector/audio-selector");
|
|
69
|
+
|
|
70
|
+
var _sharedStyle = require("./shared-style");
|
|
71
|
+
|
|
36
72
|
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); }
|
|
73
|
+
|
|
37
74
|
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; }
|
|
75
|
+
|
|
38
76
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
77
|
+
|
|
39
78
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
79
|
+
|
|
40
80
|
const buttonNames = {
|
|
41
81
|
// inline styles
|
|
42
82
|
bold: 'bold',
|
|
@@ -69,10 +109,11 @@ const buttonNames = {
|
|
|
69
109
|
relatedPost: 'related-post',
|
|
70
110
|
sideIndex: 'side-index',
|
|
71
111
|
video: 'video',
|
|
72
|
-
audio: 'audio'
|
|
112
|
+
audio: 'audio',
|
|
113
|
+
youtube: 'youtube'
|
|
73
114
|
};
|
|
74
115
|
exports.buttonNames = buttonNames;
|
|
75
|
-
const disabledButtonsOnBasicEditor = [buttonNames.annotation, buttonNames.divider, buttonNames.embed, buttonNames.image, buttonNames.infoBox, buttonNames.slideshow, buttonNames.table, buttonNames.textAlign, buttonNames.colorBox, buttonNames.backgroundColor, buttonNames.backgroundImage, buttonNames.backgroundVideo, buttonNames.relatedPost, buttonNames.sideIndex, buttonNames.video, buttonNames.audio];
|
|
116
|
+
const disabledButtonsOnBasicEditor = [buttonNames.annotation, buttonNames.divider, buttonNames.embed, buttonNames.image, buttonNames.infoBox, buttonNames.slideshow, buttonNames.table, buttonNames.textAlign, buttonNames.colorBox, buttonNames.backgroundColor, buttonNames.backgroundImage, buttonNames.backgroundVideo, buttonNames.relatedPost, buttonNames.sideIndex, buttonNames.video, buttonNames.audio, buttonNames.youtube];
|
|
76
117
|
const buttonStyle = (0, _styledComponents.css)`
|
|
77
118
|
border-radius: 6px;
|
|
78
119
|
text-align: center;
|
|
@@ -88,15 +129,18 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
88
129
|
if (props.readOnly) {
|
|
89
130
|
return 'not-allowed';
|
|
90
131
|
}
|
|
132
|
+
|
|
91
133
|
return 'pointer';
|
|
92
134
|
}};
|
|
93
135
|
color: ${props => {
|
|
94
136
|
if (props.readOnly) {
|
|
95
137
|
return '#c1c7d0';
|
|
96
138
|
}
|
|
139
|
+
|
|
97
140
|
if (props.isActive) {
|
|
98
141
|
return '#3b82f6';
|
|
99
142
|
}
|
|
143
|
+
|
|
100
144
|
return '#6b7280';
|
|
101
145
|
}};
|
|
102
146
|
border: solid 1px
|
|
@@ -104,18 +148,22 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
104
148
|
if (props.readOnly) {
|
|
105
149
|
return '#c1c7d0';
|
|
106
150
|
}
|
|
151
|
+
|
|
107
152
|
if (props.isActive) {
|
|
108
153
|
return '#3b82f6';
|
|
109
154
|
}
|
|
155
|
+
|
|
110
156
|
return '#6b7280';
|
|
111
157
|
}};
|
|
112
158
|
box-shadow: ${props => {
|
|
113
159
|
if (props.readOnly) {
|
|
114
160
|
return 'unset';
|
|
115
161
|
}
|
|
162
|
+
|
|
116
163
|
if (props.isActive) {
|
|
117
164
|
return 'rgba(38, 132, 255, 20%) 0px 1px 4px ';
|
|
118
165
|
}
|
|
166
|
+
|
|
119
167
|
return 'unset';
|
|
120
168
|
}};
|
|
121
169
|
transition: box-shadow 100ms linear;
|
|
@@ -124,6 +172,7 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
124
172
|
if (props.isDisabled) {
|
|
125
173
|
return 'none';
|
|
126
174
|
}
|
|
175
|
+
|
|
127
176
|
return 'inline-flex';
|
|
128
177
|
}};
|
|
129
178
|
`;
|
|
@@ -133,9 +182,11 @@ const longFormButtonStyle = (0, _styledComponents.css)`
|
|
|
133
182
|
if (props.readOnly) {
|
|
134
183
|
return '#c1c7d0';
|
|
135
184
|
}
|
|
185
|
+
|
|
136
186
|
if (props.isActive) {
|
|
137
187
|
return '#ED8B00';
|
|
138
188
|
}
|
|
189
|
+
|
|
139
190
|
return '#6b7280';
|
|
140
191
|
}};
|
|
141
192
|
border: solid 1px
|
|
@@ -143,18 +194,22 @@ const longFormButtonStyle = (0, _styledComponents.css)`
|
|
|
143
194
|
if (props.readOnly) {
|
|
144
195
|
return '#c1c7d0';
|
|
145
196
|
}
|
|
197
|
+
|
|
146
198
|
if (props.isActive) {
|
|
147
199
|
return '#ED8B00';
|
|
148
200
|
}
|
|
201
|
+
|
|
149
202
|
return '#FECC85';
|
|
150
203
|
}};
|
|
151
204
|
box-shadow: ${props => {
|
|
152
205
|
if (props.readOnly) {
|
|
153
206
|
return 'unset';
|
|
154
207
|
}
|
|
208
|
+
|
|
155
209
|
if (props.isActive) {
|
|
156
210
|
return 'rgba(237, 139, 0, 0.5) 0px 1px 4px';
|
|
157
211
|
}
|
|
212
|
+
|
|
158
213
|
return 'unset';
|
|
159
214
|
}};
|
|
160
215
|
`;
|
|
@@ -173,6 +228,7 @@ const CustomAnnotationButton = (0, _styledComponents.default)(_annotation.Annota
|
|
|
173
228
|
const CustomLinkButton = (0, _styledComponents.default)(_link.LinkButton)`
|
|
174
229
|
${buttonStyle}
|
|
175
230
|
`;
|
|
231
|
+
|
|
176
232
|
function createButtonWithoutProps(referenceComponent, isLongForm = false, additionalCSS = ``) {
|
|
177
233
|
return isLongForm ? (0, _styledComponents.default)(referenceComponent)`
|
|
178
234
|
${longFormButtonStyle}
|
|
@@ -182,6 +238,7 @@ function createButtonWithoutProps(referenceComponent, isLongForm = false, additi
|
|
|
182
238
|
${additionalCSS}
|
|
183
239
|
`;
|
|
184
240
|
}
|
|
241
|
+
|
|
185
242
|
const CustomEnlargeButton = createButtonWithoutProps(_enlarge.EnlargeButton, false, `color: #999`);
|
|
186
243
|
const CustomImageButton = createButtonWithoutProps(_image.ImageButton);
|
|
187
244
|
const CustomSlideshowButton = createButtonWithoutProps(_slideshow.SlideshowButton);
|
|
@@ -198,6 +255,7 @@ const CustomAlignCenterButton = createButtonWithoutProps(_textAlign.AlignCenterB
|
|
|
198
255
|
const CustomAlignLeftButton = createButtonWithoutProps(_textAlign.AlignLeftButton, true);
|
|
199
256
|
const CustomVideoButton = createButtonWithoutProps(_video.VideoButton);
|
|
200
257
|
const CustomAudioButton = createButtonWithoutProps(_audio.AudioButton);
|
|
258
|
+
const CustomYoutubeButton = createButtonWithoutProps(_youtube.YoutubeButton);
|
|
201
259
|
const DraftEditorWrapper = _styledComponents.default.div`
|
|
202
260
|
/* Rich-editor default setting (.RichEditor-root)*/
|
|
203
261
|
background: #fff;
|
|
@@ -215,21 +273,34 @@ const DraftEditorWrapper = _styledComponents.default.div`
|
|
|
215
273
|
background: rgb(255, 255, 255);
|
|
216
274
|
border-radius: 6px;
|
|
217
275
|
padding: 0 1rem 1rem;
|
|
276
|
+
font-size: 18px;
|
|
277
|
+
line-height: 2;
|
|
278
|
+
letter-spacing: 0.5px;
|
|
279
|
+
|
|
280
|
+
.public-DraftStyleDefault-block {
|
|
281
|
+
${_sharedStyle.defaultMarginBottom}
|
|
282
|
+
}
|
|
218
283
|
|
|
219
284
|
/* Draft built-in buttons' style */
|
|
220
285
|
.public-DraftStyleDefault-header-two {
|
|
286
|
+
font-size: 36px;
|
|
287
|
+
line-height: 1.5;
|
|
221
288
|
}
|
|
222
289
|
.public-DraftStyleDefault-header-three {
|
|
290
|
+
font-size: 30px;
|
|
291
|
+
line-height: 1.5;
|
|
223
292
|
}
|
|
224
293
|
.public-DraftStyleDefault-header-four {
|
|
225
294
|
}
|
|
226
295
|
.public-DraftStyleDefault-blockquote {
|
|
227
296
|
}
|
|
228
297
|
.public-DraftStyleDefault-ul {
|
|
298
|
+
${_sharedStyle.defaultMarginBottom}
|
|
229
299
|
}
|
|
230
300
|
.public-DraftStyleDefault-unorderedListItem {
|
|
231
301
|
}
|
|
232
302
|
.public-DraftStyleDefault-ol {
|
|
303
|
+
${_sharedStyle.defaultMarginBottom}
|
|
233
304
|
}
|
|
234
305
|
.public-DraftStyleDefault-orderedListItem {
|
|
235
306
|
}
|
|
@@ -339,14 +410,15 @@ const EnlargeButtonWrapper = _styledComponents.default.div`
|
|
|
339
410
|
right: 0;
|
|
340
411
|
margin: 0;
|
|
341
412
|
`;
|
|
413
|
+
|
|
342
414
|
class RichTextEditor extends _react.default.Component {
|
|
343
415
|
constructor(props) {
|
|
344
416
|
super(props);
|
|
345
417
|
this.state = {
|
|
346
418
|
isEnlarged: false,
|
|
347
419
|
readOnly: false
|
|
348
|
-
};
|
|
349
|
-
|
|
420
|
+
}; // Custom overrides for "code" style.
|
|
421
|
+
|
|
350
422
|
this.customStyleMap = {
|
|
351
423
|
CODE: {
|
|
352
424
|
backgroundColor: 'rgba(0, 0, 0, 0.05)',
|
|
@@ -356,15 +428,18 @@ class RichTextEditor extends _react.default.Component {
|
|
|
356
428
|
}
|
|
357
429
|
};
|
|
358
430
|
}
|
|
431
|
+
|
|
359
432
|
onChange = editorState => {
|
|
360
433
|
this.props.onChange(editorState);
|
|
361
434
|
};
|
|
362
435
|
handleKeyCommand = (command, editorState) => {
|
|
363
436
|
const newState = _draftJs.RichUtils.handleKeyCommand(editorState, command);
|
|
437
|
+
|
|
364
438
|
if (newState) {
|
|
365
439
|
this.onChange(newState);
|
|
366
440
|
return true;
|
|
367
441
|
}
|
|
442
|
+
|
|
368
443
|
return false;
|
|
369
444
|
};
|
|
370
445
|
handleReturn = event => {
|
|
@@ -376,17 +451,24 @@ class RichTextEditor extends _react.default.Component {
|
|
|
376
451
|
onChange(_draftJs.RichUtils.insertSoftNewline(editorState));
|
|
377
452
|
return 'handled';
|
|
378
453
|
}
|
|
454
|
+
|
|
379
455
|
return 'not-handled';
|
|
380
456
|
};
|
|
381
457
|
mapKeyToEditorCommand = e => {
|
|
382
|
-
if (e.keyCode === 9
|
|
383
|
-
|
|
458
|
+
if (e.keyCode === 9
|
|
459
|
+
/* TAB */
|
|
460
|
+
) {
|
|
461
|
+
const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4
|
|
462
|
+
/* maxDepth */
|
|
463
|
+
);
|
|
384
464
|
|
|
385
465
|
if (newEditorState !== this.props.editorState) {
|
|
386
466
|
this.onChange(newEditorState);
|
|
387
467
|
}
|
|
468
|
+
|
|
388
469
|
return;
|
|
389
470
|
}
|
|
471
|
+
|
|
390
472
|
return (0, _draftJs.getDefaultKeyBinding)(e);
|
|
391
473
|
};
|
|
392
474
|
toggleBlockType = blockType => {
|
|
@@ -403,18 +485,23 @@ class RichTextEditor extends _react.default.Component {
|
|
|
403
485
|
const endOffset = selection.getEndOffset();
|
|
404
486
|
let entityInstance;
|
|
405
487
|
let entityKey;
|
|
488
|
+
|
|
406
489
|
if (!selection.isCollapsed()) {
|
|
407
490
|
entityKey = startBlock.getEntityAt(startOffset);
|
|
408
491
|
} else {
|
|
409
492
|
entityKey = startBlock.getEntityAt(endOffset);
|
|
410
493
|
}
|
|
494
|
+
|
|
411
495
|
if (entityKey !== null) {
|
|
412
496
|
entityInstance = contentState.getEntity(entityKey);
|
|
413
497
|
}
|
|
498
|
+
|
|
414
499
|
let entityType = '';
|
|
500
|
+
|
|
415
501
|
if (entityInstance) {
|
|
416
502
|
entityType = entityInstance.getType();
|
|
417
503
|
}
|
|
504
|
+
|
|
418
505
|
return entityType;
|
|
419
506
|
};
|
|
420
507
|
getCustomStyle = style => {
|
|
@@ -422,9 +509,11 @@ class RichTextEditor extends _react.default.Component {
|
|
|
422
509
|
if (styleName !== null && styleName !== void 0 && styleName.startsWith(_const.CUSTOM_STYLE_PREFIX_FONT_COLOR)) {
|
|
423
510
|
styles['color'] = styleName.split(_const.CUSTOM_STYLE_PREFIX_FONT_COLOR)[1];
|
|
424
511
|
}
|
|
512
|
+
|
|
425
513
|
if (styleName !== null && styleName !== void 0 && styleName.startsWith(_const.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)) {
|
|
426
514
|
styles['backgroundColor'] = styleName.split(_const.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)[1];
|
|
427
515
|
}
|
|
516
|
+
|
|
428
517
|
return styles;
|
|
429
518
|
}, {});
|
|
430
519
|
};
|
|
@@ -436,8 +525,10 @@ class RichTextEditor extends _react.default.Component {
|
|
|
436
525
|
customStyleFn = style => {
|
|
437
526
|
return this.getCustomStyle(style);
|
|
438
527
|
};
|
|
528
|
+
|
|
439
529
|
blockStyleFn(block) {
|
|
440
530
|
var _entity$getData;
|
|
531
|
+
|
|
441
532
|
const {
|
|
442
533
|
editorState
|
|
443
534
|
} = this.props;
|
|
@@ -445,14 +536,17 @@ class RichTextEditor extends _react.default.Component {
|
|
|
445
536
|
const entity = entityKey ? editorState.getCurrentContent().getEntity(entityKey) : null;
|
|
446
537
|
let result = '';
|
|
447
538
|
const blockData = block.getData();
|
|
539
|
+
|
|
448
540
|
if (blockData) {
|
|
449
541
|
const textAlign = blockData === null || blockData === void 0 ? void 0 : blockData.get('textAlign');
|
|
542
|
+
|
|
450
543
|
if (textAlign === 'center') {
|
|
451
544
|
result += 'alignCenter ';
|
|
452
545
|
} else if (textAlign === 'left') {
|
|
453
546
|
result += 'alignLeft ';
|
|
454
547
|
}
|
|
455
548
|
}
|
|
549
|
+
|
|
456
550
|
switch (block.getType()) {
|
|
457
551
|
case 'header-two':
|
|
458
552
|
case 'header-three':
|
|
@@ -460,19 +554,25 @@ class RichTextEditor extends _react.default.Component {
|
|
|
460
554
|
case 'blockquote':
|
|
461
555
|
result += 'public-DraftStyleDefault-' + block.getType();
|
|
462
556
|
break;
|
|
557
|
+
|
|
463
558
|
case 'atomic':
|
|
464
559
|
if ((_entity$getData = entity.getData()) !== null && _entity$getData !== void 0 && _entity$getData.alignment) {
|
|
465
560
|
// support all atomic block to set alignment
|
|
466
561
|
result += ' ' + entity.getData().alignment;
|
|
467
562
|
}
|
|
563
|
+
|
|
468
564
|
break;
|
|
565
|
+
|
|
469
566
|
default:
|
|
470
567
|
break;
|
|
471
568
|
}
|
|
569
|
+
|
|
472
570
|
return result;
|
|
473
571
|
}
|
|
572
|
+
|
|
474
573
|
blockRendererFn = block => {
|
|
475
574
|
const atomicBlockObj = (0, _blockRendererFn.atomicBlockRenderer)(block);
|
|
575
|
+
|
|
476
576
|
if (atomicBlockObj) {
|
|
477
577
|
const onEditStart = () => {
|
|
478
578
|
this.setState({
|
|
@@ -488,6 +588,7 @@ class RichTextEditor extends _react.default.Component {
|
|
|
488
588
|
readOnly: true
|
|
489
589
|
});
|
|
490
590
|
};
|
|
591
|
+
|
|
491
592
|
const onEditFinish = ({
|
|
492
593
|
entityKey,
|
|
493
594
|
entityData
|
|
@@ -498,20 +599,20 @@ class RichTextEditor extends _react.default.Component {
|
|
|
498
599
|
this.onChange(_draftJs.EditorState.set(this.props.editorState, {
|
|
499
600
|
currentContent: newContentState
|
|
500
601
|
}));
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
// Custom block interaction is finished.
|
|
602
|
+
} // Custom block interaction is finished.
|
|
504
603
|
// Therefore, we set readOnly={false} to
|
|
505
604
|
// make editor editable.
|
|
605
|
+
|
|
606
|
+
|
|
506
607
|
this.setState({
|
|
507
608
|
readOnly: false
|
|
508
609
|
});
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
// `onEditStart` and `onEditFinish` will be passed
|
|
610
|
+
}; // `onEditStart` and `onEditFinish` will be passed
|
|
512
611
|
// into custom block component.
|
|
513
612
|
// We can get them via `props.blockProps.onEditStart`
|
|
514
613
|
// and `props.blockProps.onEditFinish` in the custom block components.
|
|
614
|
+
|
|
615
|
+
|
|
515
616
|
atomicBlockObj['props'] = {
|
|
516
617
|
onEditStart,
|
|
517
618
|
onEditFinish,
|
|
@@ -523,8 +624,10 @@ class RichTextEditor extends _react.default.Component {
|
|
|
523
624
|
}
|
|
524
625
|
};
|
|
525
626
|
}
|
|
627
|
+
|
|
526
628
|
return atomicBlockObj;
|
|
527
629
|
};
|
|
630
|
+
|
|
528
631
|
render() {
|
|
529
632
|
const {
|
|
530
633
|
disabledButtons = []
|
|
@@ -532,21 +635,27 @@ class RichTextEditor extends _react.default.Component {
|
|
|
532
635
|
let {
|
|
533
636
|
editorState
|
|
534
637
|
} = this.props;
|
|
638
|
+
|
|
535
639
|
if (!(editorState instanceof _draftJs.EditorState)) {
|
|
536
640
|
editorState = _draftJs.EditorState.createEmpty(_entityDecorator.default);
|
|
537
641
|
}
|
|
642
|
+
|
|
538
643
|
const {
|
|
539
644
|
isEnlarged,
|
|
540
645
|
readOnly
|
|
541
646
|
} = this.state;
|
|
542
647
|
const entityType = this.getEntityType(editorState);
|
|
543
648
|
const customStyle = this.getCustomStyle(editorState.getCurrentInlineStyle());
|
|
649
|
+
|
|
544
650
|
const renderBasicEditor = propsOfBasicEditor => {
|
|
545
651
|
return /*#__PURE__*/_react.default.createElement(RichTextEditor, _extends({}, propsOfBasicEditor, {
|
|
546
652
|
disabledButtons: disabledButtonsOnBasicEditor
|
|
547
653
|
}));
|
|
548
654
|
};
|
|
549
|
-
|
|
655
|
+
|
|
656
|
+
return /*#__PURE__*/_react.default.createElement(_styledComponents.ThemeProvider, {
|
|
657
|
+
theme: _theme.default
|
|
658
|
+
}, /*#__PURE__*/_react.default.createElement(DraftEditorContainer, {
|
|
550
659
|
isEnlarged: isEnlarged
|
|
551
660
|
}, /*#__PURE__*/_react.default.createElement(DraftEditorWrapper, null, /*#__PURE__*/_react.default.createElement("link", {
|
|
552
661
|
href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css",
|
|
@@ -613,6 +722,11 @@ class RichTextEditor extends _react.default.Component {
|
|
|
613
722
|
onChange: this.onChange,
|
|
614
723
|
readOnly: this.state.readOnly,
|
|
615
724
|
VideoSelector: _videoSelector.VideoSelector
|
|
725
|
+
})), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomYoutubeButton, {
|
|
726
|
+
isDisabled: disabledButtons.includes(buttonNames.youtube),
|
|
727
|
+
editorState: editorState,
|
|
728
|
+
onChange: this.onChange,
|
|
729
|
+
readOnly: this.state.readOnly
|
|
616
730
|
})), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomAudioButton, {
|
|
617
731
|
isDisabled: disabledButtons.includes(buttonNames.audio),
|
|
618
732
|
editorState: editorState,
|
|
@@ -697,6 +811,7 @@ class RichTextEditor extends _react.default.Component {
|
|
|
697
811
|
})))), /*#__PURE__*/_react.default.createElement(TextEditorWrapper, {
|
|
698
812
|
onClick: () => {
|
|
699
813
|
var _this$refs$editor;
|
|
814
|
+
|
|
700
815
|
// eslint-disable-next-line prettier/prettier
|
|
701
816
|
(_this$refs$editor = this.refs.editor) === null || _this$refs$editor === void 0 ? void 0 : _this$refs$editor.focus();
|
|
702
817
|
}
|
|
@@ -714,14 +829,17 @@ class RichTextEditor extends _react.default.Component {
|
|
|
714
829
|
ref: "editor",
|
|
715
830
|
spellCheck: true,
|
|
716
831
|
readOnly: readOnly
|
|
717
|
-
}))));
|
|
832
|
+
})))));
|
|
718
833
|
}
|
|
834
|
+
|
|
719
835
|
}
|
|
836
|
+
|
|
720
837
|
class StyleButton extends _react.default.Component {
|
|
721
838
|
onToggle = e => {
|
|
722
839
|
e.preventDefault();
|
|
723
840
|
this.props.onToggle(this.props.style);
|
|
724
841
|
};
|
|
842
|
+
|
|
725
843
|
render() {
|
|
726
844
|
return /*#__PURE__*/_react.default.createElement(CustomButton, {
|
|
727
845
|
isDisabled: this.props.isDisabled,
|
|
@@ -732,7 +850,9 @@ class StyleButton extends _react.default.Component {
|
|
|
732
850
|
className: this.props.icon
|
|
733
851
|
}), /*#__PURE__*/_react.default.createElement("span", null, !this.props.icon ? this.props.label : ''));
|
|
734
852
|
}
|
|
853
|
+
|
|
735
854
|
}
|
|
855
|
+
|
|
736
856
|
const blockStyles = [{
|
|
737
857
|
label: 'H2',
|
|
738
858
|
style: 'header-two',
|
|
@@ -762,6 +882,7 @@ const blockStyles = [{
|
|
|
762
882
|
style: 'code-block',
|
|
763
883
|
icon: 'fas fa-code'
|
|
764
884
|
}];
|
|
885
|
+
|
|
765
886
|
const BlockStyleControls = props => {
|
|
766
887
|
const {
|
|
767
888
|
editorState,
|
|
@@ -780,6 +901,7 @@ const BlockStyleControls = props => {
|
|
|
780
901
|
readOnly: props.readOnly
|
|
781
902
|
})));
|
|
782
903
|
};
|
|
904
|
+
|
|
783
905
|
const inlineStyles = [{
|
|
784
906
|
label: 'Bold',
|
|
785
907
|
style: 'BOLD',
|
|
@@ -797,6 +919,7 @@ const inlineStyles = [{
|
|
|
797
919
|
style: 'CODE',
|
|
798
920
|
icon: 'fas fa-terminal'
|
|
799
921
|
}];
|
|
922
|
+
|
|
800
923
|
const InlineStyleControls = props => {
|
|
801
924
|
const currentStyle = props.editorState.getCurrentInlineStyle();
|
|
802
925
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, inlineStyles.map(type => /*#__PURE__*/_react.default.createElement(StyleButton, {
|
|
@@ -810,6 +933,7 @@ const InlineStyleControls = props => {
|
|
|
810
933
|
readOnly: props.readOnly
|
|
811
934
|
})));
|
|
812
935
|
};
|
|
936
|
+
|
|
813
937
|
const DraftEditor = {
|
|
814
938
|
RichTextEditor,
|
|
815
939
|
decorators: _entityDecorator.default
|
|
@@ -4,13 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
|
|
7
8
|
var _draftJs = require("draft-js");
|
|
9
|
+
|
|
8
10
|
var _mirrormedia = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/mirrormedia"));
|
|
11
|
+
|
|
9
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
//Because `annotationDecorator` and `linkDecorator` is generated by different `contentLayout`,
|
|
15
|
+
//so it is needed to generate decorators by using function `decoratorsGenerator`.
|
|
10
16
|
const {
|
|
11
17
|
annotationDecorator,
|
|
12
18
|
linkDecorator
|
|
13
19
|
} = _mirrormedia.default.entityDecorators;
|
|
14
|
-
|
|
20
|
+
|
|
21
|
+
const decoratorsGenerator = (contentLayout = 'normal') => {
|
|
22
|
+
return new _draftJs.CompositeDecorator([annotationDecorator(contentLayout), linkDecorator(contentLayout)]);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const decorators = decoratorsGenerator('normal');
|
|
15
26
|
var _default = decorators;
|
|
16
27
|
exports.default = _default;
|
|
@@ -4,8 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
|
|
7
8
|
var _draftEditor = _interopRequireDefault(require("./draft-editor"));
|
|
9
|
+
|
|
8
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
9
12
|
const MirrorMedia = {
|
|
10
13
|
DraftEditor: _draftEditor.default
|
|
11
14
|
};
|
|
@@ -4,12 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AlignSelector = AlignSelector;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _fields = require("@keystone-ui/fields");
|
|
13
|
+
|
|
10
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
11
16
|
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); }
|
|
17
|
+
|
|
12
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; }
|
|
19
|
+
|
|
13
20
|
const Label = _styledComponents.default.label`
|
|
14
21
|
display: block;
|
|
15
22
|
margin: 10px 0;
|
|
@@ -22,6 +29,7 @@ const AlignSelect = (0, _styledComponents.default)(_fields.Select)`
|
|
|
22
29
|
return `margin-bottom: ${menuHeight}px;`;
|
|
23
30
|
}}
|
|
24
31
|
`;
|
|
32
|
+
|
|
25
33
|
function AlignSelector(props) {
|
|
26
34
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
27
35
|
const [menuHeight, setMenuHeight] = (0, _react.useState)(0);
|
|
@@ -33,6 +41,7 @@ function AlignSelector(props) {
|
|
|
33
41
|
} = props;
|
|
34
42
|
(0, _react.useEffect)(() => {
|
|
35
43
|
const selectMenu = document.querySelector('.css-nabggt-menu');
|
|
44
|
+
|
|
36
45
|
if (selectMenu) {
|
|
37
46
|
const styles = window.getComputedStyle(selectMenu);
|
|
38
47
|
const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
|
|
@@ -40,6 +49,7 @@ function AlignSelector(props) {
|
|
|
40
49
|
} else {
|
|
41
50
|
setMenuHeight(0);
|
|
42
51
|
}
|
|
52
|
+
|
|
43
53
|
if (isOpen && onOpen) {
|
|
44
54
|
onOpen();
|
|
45
55
|
}
|
|
@@ -47,8 +57,7 @@ function AlignSelector(props) {
|
|
|
47
57
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
48
58
|
htmlFor: "alignment"
|
|
49
59
|
}, "\u5C0D\u9F4A"), /*#__PURE__*/_react.default.createElement(AlignSelect, {
|
|
50
|
-
id: "alignment"
|
|
51
|
-
// default align === undefined
|
|
60
|
+
id: "alignment" // default align === undefined
|
|
52
61
|
,
|
|
53
62
|
value: options.find(option => option.value === align),
|
|
54
63
|
options: options,
|