@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.
Files changed (79) hide show
  1. package/lib/draft-js/buttons/annotation.js +22 -0
  2. package/lib/draft-js/buttons/audio.js +16 -3
  3. package/lib/draft-js/buttons/background-color.js +26 -0
  4. package/lib/draft-js/buttons/background-image.js +32 -13
  5. package/lib/draft-js/buttons/background-video.js +32 -13
  6. package/lib/draft-js/buttons/color-box.js +21 -5
  7. package/lib/draft-js/buttons/divider.js +12 -3
  8. package/lib/draft-js/buttons/embedded-code.js +16 -5
  9. package/lib/draft-js/buttons/enlarge.js +3 -0
  10. package/lib/draft-js/buttons/font-color.js +26 -0
  11. package/lib/draft-js/buttons/image.js +18 -7
  12. package/lib/draft-js/buttons/info-box.js +21 -5
  13. package/lib/draft-js/buttons/link.js +68 -22
  14. package/lib/draft-js/buttons/media.js +16 -3
  15. package/lib/draft-js/buttons/related-post.js +14 -3
  16. package/lib/draft-js/buttons/selector/align-selector.js +11 -2
  17. package/lib/draft-js/buttons/selector/audio-selector.js +33 -5
  18. package/lib/draft-js/buttons/selector/image-selector.js +64 -16
  19. package/lib/draft-js/buttons/selector/pagination.js +6 -2
  20. package/lib/draft-js/buttons/selector/post-selector.js +39 -6
  21. package/lib/draft-js/buttons/selector/search-box.js +9 -0
  22. package/lib/draft-js/buttons/selector/video-selector.js +33 -4
  23. package/lib/draft-js/buttons/side-index.js +31 -15
  24. package/lib/draft-js/buttons/slideshow.js +16 -7
  25. package/lib/draft-js/buttons/table.js +11 -5
  26. package/lib/draft-js/buttons/text-align.js +14 -0
  27. package/lib/draft-js/buttons/video.js +19 -5
  28. package/lib/draft-js/buttons/youtube.js +147 -0
  29. package/lib/draft-js/const.js +2 -0
  30. package/lib/draft-js/draft-converter/api-data-instance.js +14 -0
  31. package/lib/draft-js/draft-converter/atomic-block-processor.js +42 -12
  32. package/lib/draft-js/draft-converter/entities.js +3 -1
  33. package/lib/draft-js/draft-converter/index.js +29 -10
  34. package/lib/draft-js/draft-converter/inline-styles-processor.js +55 -22
  35. package/lib/draft-js/modifier.js +13 -5
  36. package/lib/draft-js/util.js +32 -0
  37. package/lib/index.js +4 -0
  38. package/lib/website/mirrormedia/block-renderer/background-image-block.js +14 -2
  39. package/lib/website/mirrormedia/block-renderer/background-video-block.js +14 -2
  40. package/lib/website/mirrormedia/block-renderer/color-box-block.js +14 -2
  41. package/lib/website/mirrormedia/block-renderer/embedded-code-block.js +12 -3
  42. package/lib/website/mirrormedia/block-renderer/image-block.js +108 -0
  43. package/lib/website/mirrormedia/block-renderer/info-box-block.js +14 -2
  44. package/lib/website/mirrormedia/block-renderer/side-index-block.js +13 -2
  45. package/lib/website/mirrormedia/block-renderer/slideshow-block.js +93 -7
  46. package/lib/website/mirrormedia/block-renderer/table-block.js +62 -28
  47. package/lib/website/mirrormedia/block-renderer-fn.js +48 -5
  48. package/lib/website/mirrormedia/draft-editor.js +138 -14
  49. package/lib/website/mirrormedia/entity-decorator.js +12 -1
  50. package/lib/website/mirrormedia/index.js +3 -0
  51. package/lib/website/mirrormedia/selector/align-selector.js +11 -2
  52. package/lib/website/mirrormedia/selector/audio-selector.js +34 -5
  53. package/lib/website/mirrormedia/selector/image-selector.js +75 -18
  54. package/lib/website/mirrormedia/selector/pagination.js +6 -2
  55. package/lib/website/mirrormedia/selector/post-selector.js +40 -6
  56. package/lib/website/mirrormedia/selector/search-box.js +9 -0
  57. package/lib/website/mirrormedia/selector/video-selector.js +36 -7
  58. package/lib/website/mirrormedia/shared-style/index.js +17 -0
  59. package/lib/website/mirrormedia/theme/index.js +28 -0
  60. package/lib/website/readr/block-renderer/background-image-block.js +66 -6
  61. package/lib/website/readr/block-renderer/background-video-block.js +76 -6
  62. package/lib/website/readr/block-renderer/color-box-block.js +14 -2
  63. package/lib/website/readr/block-renderer/image-block.js +106 -0
  64. package/lib/website/readr/block-renderer/info-box-block.js +14 -2
  65. package/lib/website/readr/block-renderer/side-index-block.js +13 -2
  66. package/lib/website/readr/block-renderer/table-block.js +62 -28
  67. package/lib/website/readr/block-renderer-fn.js +32 -3
  68. package/lib/website/readr/draft-editor.js +112 -12
  69. package/lib/website/readr/entity-decorator.js +4 -0
  70. package/lib/website/readr/index.js +3 -0
  71. package/lib/website/readr/selector/align-selector.js +11 -2
  72. package/lib/website/readr/selector/audio-selector.js +34 -17
  73. package/lib/website/readr/selector/image-selector.js +62 -16
  74. package/lib/website/readr/selector/pagination.js +6 -2
  75. package/lib/website/readr/selector/post-selector.js +40 -13
  76. package/lib/website/readr/selector/search-box.js +9 -0
  77. package/lib/website/readr/selector/video-selector.js +33 -4
  78. package/lib/website/readr/theme/index.js +39 -0
  79. 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
- // Custom overrides for "code" style.
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 /* TAB */) {
383
- const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4 /* maxDepth */);
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
- return /*#__PURE__*/_react.default.createElement(DraftEditorContainer, {
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
- const decorators = new _draftJs.CompositeDecorator([annotationDecorator, linkDecorator]);
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,