@mirrormedia/lilith-draft-editor 1.0.0-beta → 1.0.0-beta4

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 (171) hide show
  1. package/lib/draft-js/block-renderer/background-image-block.js +123 -0
  2. package/lib/draft-js/block-renderer/background-video-block.js +133 -0
  3. package/lib/draft-js/block-renderer/color-box-block.js +92 -0
  4. package/lib/draft-js/block-renderer/divider-block.js +24 -0
  5. package/lib/draft-js/block-renderer/embedded-code-block.js +63 -0
  6. package/lib/draft-js/block-renderer/image-block.js +47 -0
  7. package/lib/draft-js/block-renderer/info-box-block.js +89 -0
  8. package/lib/draft-js/block-renderer/media-block.js +65 -0
  9. package/lib/draft-js/block-renderer/related-post-block.js +51 -0
  10. package/lib/draft-js/block-renderer/side-index-block.js +103 -0
  11. package/lib/draft-js/block-renderer/slideshow-block.js +71 -0
  12. package/lib/draft-js/block-renderer/table-block.js +408 -0
  13. package/lib/draft-js/buttons/annotation.js +117 -0
  14. package/lib/draft-js/buttons/background-color.js +123 -0
  15. package/lib/draft-js/buttons/background-image.js +222 -0
  16. package/lib/draft-js/buttons/background-video.js +222 -0
  17. package/lib/draft-js/buttons/color-box.js +172 -0
  18. package/lib/draft-js/buttons/divider.js +63 -0
  19. package/lib/draft-js/buttons/embedded-code.js +109 -0
  20. package/lib/draft-js/buttons/enlarge.js +24 -0
  21. package/lib/draft-js/buttons/font-color.js +116 -0
  22. package/lib/draft-js/buttons/image.js +68 -0
  23. package/lib/draft-js/buttons/info-box.js +147 -0
  24. package/lib/draft-js/buttons/link.js +107 -0
  25. package/lib/draft-js/buttons/media.js +121 -0
  26. package/lib/draft-js/buttons/related-post.js +71 -0
  27. package/lib/draft-js/buttons/selector/align-selector.js +71 -0
  28. package/lib/draft-js/buttons/selector/image-selector.js +428 -0
  29. package/lib/draft-js/buttons/selector/pagination.js +82 -0
  30. package/lib/draft-js/buttons/selector/post-selector.js +317 -0
  31. package/lib/draft-js/buttons/selector/search-box.js +46 -0
  32. package/lib/draft-js/buttons/selector/video-selector.js +284 -0
  33. package/lib/draft-js/buttons/side-index.js +200 -0
  34. package/lib/draft-js/buttons/slideshow.js +71 -0
  35. package/lib/draft-js/buttons/table.js +67 -0
  36. package/lib/draft-js/buttons/text-align.js +88 -0
  37. package/lib/draft-js/editor/basic-editor.js +366 -0
  38. package/lib/draft-js/editor/block-renderer-fn.js +117 -0
  39. package/lib/draft-js/editor/entity-decorator.js +16 -0
  40. package/lib/draft-js/editor/modifier.js +68 -0
  41. package/lib/draft-js/entity-decorator/annotation-decorator.js +86 -0
  42. package/lib/draft-js/entity-decorator/link-decorator.js +39 -0
  43. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.js +91 -0
  44. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.js +91 -0
  45. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.js +84 -0
  46. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.js +84 -0
  47. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.js +90 -0
  48. package/lib/website/mirrormedia/custom/block-renderer/table-block.js +408 -0
  49. package/lib/website/mirrormedia/custom/selector/align-selector.js +71 -0
  50. package/lib/website/mirrormedia/custom/selector/image-selector.js +427 -0
  51. package/lib/website/mirrormedia/custom/selector/pagination.js +82 -0
  52. package/lib/website/mirrormedia/custom/selector/post-selector.js +318 -0
  53. package/lib/website/mirrormedia/custom/selector/search-box.js +46 -0
  54. package/lib/website/mirrormedia/custom/selector/video-selector.js +282 -0
  55. package/lib/website/mirrormedia/draft-editor/block-renderer-fn.js +117 -0
  56. package/lib/website/mirrormedia/draft-editor/entity-decorator.js +18 -0
  57. package/lib/website/mirrormedia/draft-editor/index.js +799 -0
  58. package/lib/website/mirrormedia/index.js +1 -4
  59. package/lib/website/readr/custom/block-renderer/background-image-block.js +91 -0
  60. package/lib/website/readr/custom/block-renderer/background-video-block.js +91 -0
  61. package/lib/website/readr/custom/block-renderer/color-box-block.js +84 -0
  62. package/lib/website/readr/custom/block-renderer/info-box-block.js +84 -0
  63. package/lib/website/readr/custom/block-renderer/side-index-block.js +90 -0
  64. package/lib/website/readr/custom/block-renderer/table-block.js +408 -0
  65. package/lib/website/readr/custom/selector/align-selector.js +71 -0
  66. package/lib/website/readr/custom/selector/image-selector.js +427 -0
  67. package/lib/website/readr/custom/selector/pagination.js +82 -0
  68. package/lib/website/readr/custom/selector/post-selector.js +318 -0
  69. package/lib/website/readr/custom/selector/search-box.js +46 -0
  70. package/lib/website/readr/custom/selector/video-selector.js +282 -0
  71. package/lib/website/readr/draft-editor/block-renderer-fn.js +117 -0
  72. package/lib/website/readr/draft-editor/entity-decorator.js +18 -0
  73. package/lib/website/readr/draft-editor/index.js +799 -0
  74. package/lib/website/readr/index.js +1 -4
  75. package/package.json +3 -2
  76. package/lib/draft-js/block-renderer/background-image-block.tsx +0 -113
  77. package/lib/draft-js/block-renderer/background-video-block.tsx +0 -120
  78. package/lib/draft-js/block-renderer/color-box-block.tsx +0 -85
  79. package/lib/draft-js/block-renderer/divider-block.tsx +0 -12
  80. package/lib/draft-js/block-renderer/embedded-code-block.tsx +0 -65
  81. package/lib/draft-js/block-renderer/image-block.tsx +0 -41
  82. package/lib/draft-js/block-renderer/info-box-block.tsx +0 -85
  83. package/lib/draft-js/block-renderer/media-block.tsx +0 -36
  84. package/lib/draft-js/block-renderer/related-post-block.tsx +0 -47
  85. package/lib/draft-js/block-renderer/side-index-block.tsx +0 -113
  86. package/lib/draft-js/block-renderer/slideshow-block.tsx +0 -62
  87. package/lib/draft-js/block-renderer/table-block.tsx +0 -488
  88. package/lib/draft-js/buttons/annotation.tsx +0 -113
  89. package/lib/draft-js/buttons/background-color.tsx +0 -125
  90. package/lib/draft-js/buttons/background-image.tsx +0 -276
  91. package/lib/draft-js/buttons/background-video.tsx +0 -275
  92. package/lib/draft-js/buttons/color-box.tsx +0 -207
  93. package/lib/draft-js/buttons/divider.tsx +0 -56
  94. package/lib/draft-js/buttons/embedded-code.tsx +0 -126
  95. package/lib/draft-js/buttons/enlarge.tsx +0 -11
  96. package/lib/draft-js/buttons/font-color.tsx +0 -113
  97. package/lib/draft-js/buttons/image.tsx +0 -71
  98. package/lib/draft-js/buttons/info-box.tsx +0 -170
  99. package/lib/draft-js/buttons/link.tsx +0 -103
  100. package/lib/draft-js/buttons/media.tsx +0 -120
  101. package/lib/draft-js/buttons/related-post.tsx +0 -81
  102. package/lib/draft-js/buttons/selector/align-selector.tsx +0 -65
  103. package/lib/draft-js/buttons/selector/image-selector.tsx +0 -485
  104. package/lib/draft-js/buttons/selector/pagination.tsx +0 -83
  105. package/lib/draft-js/buttons/selector/post-selector.tsx +0 -367
  106. package/lib/draft-js/buttons/selector/search-box.tsx +0 -39
  107. package/lib/draft-js/buttons/selector/video-selector.tsx +0 -312
  108. package/lib/draft-js/buttons/side-index.tsx +0 -257
  109. package/lib/draft-js/buttons/slideshow.tsx +0 -81
  110. package/lib/draft-js/buttons/table.tsx +0 -63
  111. package/lib/draft-js/buttons/text-align.tsx +0 -88
  112. package/lib/draft-js/editor/basic-editor.tsx +0 -384
  113. package/lib/draft-js/editor/block-redender-fn.tsx +0 -77
  114. package/lib/draft-js/editor/entity-decorator.tsx +0 -7
  115. package/lib/draft-js/editor/modifier.tsx +0 -71
  116. package/lib/draft-js/entity-decorator/annotation-decorator.tsx +0 -81
  117. package/lib/draft-js/entity-decorator/link-decorator.tsx +0 -27
  118. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.tsx +0 -128
  119. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.tsx +0 -135
  120. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.tsx +0 -98
  121. package/lib/website/mirrormedia/custom/block-renderer/divider-block.tsx +0 -12
  122. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.tsx +0 -65
  123. package/lib/website/mirrormedia/custom/block-renderer/image-block.tsx +0 -41
  124. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.tsx +0 -98
  125. package/lib/website/mirrormedia/custom/block-renderer/media-block.tsx +0 -36
  126. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.tsx +0 -47
  127. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.tsx +0 -125
  128. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.tsx +0 -62
  129. package/lib/website/mirrormedia/custom/block-renderer/table-block.tsx +0 -537
  130. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.tsx +0 -81
  131. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.tsx +0 -27
  132. package/lib/website/mirrormedia/custom/selector/align-selector.tsx +0 -65
  133. package/lib/website/mirrormedia/custom/selector/image-selector.tsx +0 -485
  134. package/lib/website/mirrormedia/custom/selector/pagination.tsx +0 -83
  135. package/lib/website/mirrormedia/custom/selector/post-selector.tsx +0 -367
  136. package/lib/website/mirrormedia/custom/selector/search-box.tsx +0 -39
  137. package/lib/website/mirrormedia/custom/selector/video-selector.tsx +0 -310
  138. package/lib/website/mirrormedia/draft-editor/block-redender-fn.tsx +0 -77
  139. package/lib/website/mirrormedia/draft-editor/entity-decorator.tsx +0 -7
  140. package/lib/website/mirrormedia/draft-editor/index.tsx +0 -909
  141. package/lib/website/mirrormedia/draft-renderer/block-redender-fn.tsx +0 -77
  142. package/lib/website/mirrormedia/draft-renderer/entity-decorator.tsx +0 -7
  143. package/lib/website/mirrormedia/draft-renderer/index-deprecated.tsx +0 -43
  144. package/lib/website/mirrormedia/draft-renderer/index.tsx +0 -150
  145. package/lib/website/readr/custom/block-renderer/background-image-block.tsx +0 -128
  146. package/lib/website/readr/custom/block-renderer/background-video-block.tsx +0 -135
  147. package/lib/website/readr/custom/block-renderer/color-box-block.tsx +0 -98
  148. package/lib/website/readr/custom/block-renderer/divider-block.tsx +0 -12
  149. package/lib/website/readr/custom/block-renderer/embedded-code-block.tsx +0 -65
  150. package/lib/website/readr/custom/block-renderer/image-block.tsx +0 -41
  151. package/lib/website/readr/custom/block-renderer/info-box-block.tsx +0 -98
  152. package/lib/website/readr/custom/block-renderer/media-block.tsx +0 -36
  153. package/lib/website/readr/custom/block-renderer/related-post-block.tsx +0 -47
  154. package/lib/website/readr/custom/block-renderer/side-index-block.tsx +0 -125
  155. package/lib/website/readr/custom/block-renderer/slideshow-block.tsx +0 -62
  156. package/lib/website/readr/custom/block-renderer/table-block.tsx +0 -537
  157. package/lib/website/readr/custom/entity-decorator/annotation-decorator.tsx +0 -81
  158. package/lib/website/readr/custom/entity-decorator/link-decorator.tsx +0 -27
  159. package/lib/website/readr/custom/selector/align-selector.tsx +0 -65
  160. package/lib/website/readr/custom/selector/image-selector.tsx +0 -485
  161. package/lib/website/readr/custom/selector/pagination.tsx +0 -83
  162. package/lib/website/readr/custom/selector/post-selector.tsx +0 -367
  163. package/lib/website/readr/custom/selector/search-box.tsx +0 -39
  164. package/lib/website/readr/custom/selector/video-selector.tsx +0 -310
  165. package/lib/website/readr/draft-editor/block-redender-fn.tsx +0 -77
  166. package/lib/website/readr/draft-editor/entity-decorator.tsx +0 -7
  167. package/lib/website/readr/draft-editor/index.tsx +0 -909
  168. package/lib/website/readr/draft-renderer/block-redender-fn.tsx +0 -77
  169. package/lib/website/readr/draft-renderer/entity-decorator.tsx +0 -7
  170. package/lib/website/readr/draft-renderer/index-deprecated.tsx +0 -43
  171. package/lib/website/readr/draft-renderer/index.tsx +0 -150
@@ -0,0 +1,799 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
11
+
12
+ var _draftJs = require("draft-js");
13
+
14
+ var _blockRendererFn = require("./block-renderer-fn");
15
+
16
+ var _entityDecorator = _interopRequireDefault(require("./entity-decorator"));
17
+
18
+ var _annotation = require("../../../draft-js/buttons/annotation");
19
+
20
+ var _embeddedCode = require("../../../draft-js/buttons/embedded-code");
21
+
22
+ var _enlarge = require("../../../draft-js/buttons/enlarge");
23
+
24
+ var _image = require("../../../draft-js/buttons/image");
25
+
26
+ var _infoBox = require("../../../draft-js/buttons/info-box");
27
+
28
+ var _link = require("../../../draft-js/buttons/link");
29
+
30
+ var _slideshow = require("../../../draft-js/buttons/slideshow");
31
+
32
+ var _table = require("../../../draft-js/buttons/table");
33
+
34
+ var _divider = require("../../../draft-js/buttons/divider");
35
+
36
+ var _colorBox = require("../../../draft-js/buttons/color-box");
37
+
38
+ var _backgroundImage = require("../../../draft-js/buttons/background-image");
39
+
40
+ var _backgroundVideo = require("../../../draft-js/buttons/background-video");
41
+
42
+ var _relatedPost = require("../../../draft-js/buttons/related-post");
43
+
44
+ var _sideIndex = require("../../../draft-js/buttons/side-index");
45
+
46
+ var _textAlign = require("../../../draft-js/buttons/text-align");
47
+
48
+ var _fontColor = require("../../../draft-js/buttons/font-color");
49
+
50
+ var _backgroundColor = require("../../../draft-js/buttons/background-color");
51
+
52
+ var _imageSelector = require("../custom/selector/image-selector");
53
+
54
+ var _videoSelector = require("../custom/selector/video-selector");
55
+
56
+ var _postSelector = require("../custom/selector/post-selector");
57
+
58
+ 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); }
59
+
60
+ 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; }
61
+
62
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
63
+
64
+ const buttonStyle = (0, _styledComponents.css)`
65
+ border-radius: 6px;
66
+ text-align: center;
67
+ font-size: 1rem;
68
+ padding: 0 12px;
69
+ margin: 0px 0px 10px 0px;
70
+ background-color: #fff;
71
+ border: solid 1px rgb(193, 199, 208);
72
+ display: inline-flex;
73
+ align-items: center;
74
+ height: 40px;
75
+
76
+ cursor: ${props => {
77
+ if (props.readOnly) {
78
+ return 'not-allowed';
79
+ }
80
+
81
+ return 'pointer';
82
+ }};
83
+ color: ${props => {
84
+ if (props.readOnly) {
85
+ return '#c1c7d0';
86
+ }
87
+
88
+ if (props.isActive) {
89
+ return '#3b82f6';
90
+ }
91
+
92
+ return '#6b7280';
93
+ }};
94
+ border: solid 1px
95
+ ${props => {
96
+ if (props.readOnly) {
97
+ return '#c1c7d0';
98
+ }
99
+
100
+ if (props.isActive) {
101
+ return '#3b82f6';
102
+ }
103
+
104
+ return '#6b7280';
105
+ }};
106
+ box-shadow: ${props => {
107
+ if (props.readOnly) {
108
+ return 'unset';
109
+ }
110
+
111
+ if (props.isActive) {
112
+ return 'rgba(38, 132, 255, 20%) 0px 1px 4px ';
113
+ }
114
+
115
+ return 'unset';
116
+ }};
117
+ transition: box-shadow 100ms linear;
118
+ `;
119
+ const longFormButtonStyle = (0, _styledComponents.css)`
120
+ ${buttonStyle}
121
+ color: ${props => {
122
+ if (props.readOnly) {
123
+ return '#c1c7d0';
124
+ }
125
+
126
+ if (props.isActive) {
127
+ return '#ED8B00';
128
+ }
129
+
130
+ return '#6b7280';
131
+ }};
132
+ border: solid 1px
133
+ ${props => {
134
+ if (props.readOnly) {
135
+ return '#c1c7d0';
136
+ }
137
+
138
+ if (props.isActive) {
139
+ return '#ED8B00';
140
+ }
141
+
142
+ return '#FECC85';
143
+ }};
144
+ box-shadow: ${props => {
145
+ if (props.readOnly) {
146
+ return 'unset';
147
+ }
148
+
149
+ if (props.isActive) {
150
+ return 'rgba(237, 139, 0, 0.5) 0px 1px 4px';
151
+ }
152
+
153
+ return 'unset';
154
+ }};
155
+ `;
156
+ const CustomFontColorButton = (0, _styledComponents.default)(_fontColor.FontColorButton)`
157
+ ${buttonStyle}
158
+ `;
159
+ const CustomBackgroundColorButton = (0, _styledComponents.default)(_backgroundColor.BackgroundColorButton)`
160
+ ${longFormButtonStyle}
161
+ `;
162
+ const CustomButton = _styledComponents.default.div`
163
+ ${buttonStyle}
164
+ `;
165
+ const CustomAnnotationButton = (0, _styledComponents.default)(_annotation.AnnotationButton)`
166
+ ${buttonStyle}
167
+ `;
168
+ const CustomLinkButton = (0, _styledComponents.default)(_link.LinkButton)`
169
+ ${buttonStyle}
170
+ `;
171
+
172
+ function createButtonWithoutProps(referenceComponent, isLongForm = false, additionalCSS = ``) {
173
+ return isLongForm ? (0, _styledComponents.default)(referenceComponent)`
174
+ ${longFormButtonStyle}
175
+ ${additionalCSS}
176
+ ` : (0, _styledComponents.default)(referenceComponent)`
177
+ ${buttonStyle}
178
+ ${additionalCSS}
179
+ `;
180
+ }
181
+
182
+ const CustomEnlargeButton = createButtonWithoutProps(_enlarge.EnlargeButton, false, `color: #999`);
183
+ const CustomImageButton = createButtonWithoutProps(_image.ImageButton);
184
+ const CustomSlideshowButton = createButtonWithoutProps(_slideshow.SlideshowButton);
185
+ const CustomEmbeddedCodeButton = createButtonWithoutProps(_embeddedCode.EmbeddedCodeButton);
186
+ const CustomTableButton = createButtonWithoutProps(_table.TableButton);
187
+ const CustomInfoBoxButton = createButtonWithoutProps(_infoBox.InfoBoxButton);
188
+ const CustomDividerButton = createButtonWithoutProps(_divider.DividerButton);
189
+ const CustomColorBoxButton = createButtonWithoutProps(_colorBox.ColorBoxButton, true);
190
+ const CustomBGImageButton = createButtonWithoutProps(_backgroundImage.BGImageButton, true);
191
+ const CustomBGVideoButton = createButtonWithoutProps(_backgroundVideo.BGVideoButton, true);
192
+ const CustomRelatedPostButton = createButtonWithoutProps(_relatedPost.RelatedPostButton, true);
193
+ const CustomSideIndexButton = createButtonWithoutProps(_sideIndex.SideIndexButton, true);
194
+ const CustomAlignCenterButton = createButtonWithoutProps(_textAlign.AlignCenterButton, true);
195
+ const CustomAlignLeftButton = createButtonWithoutProps(_textAlign.AlignLeftButton, true);
196
+ const DraftEditorWrapper = _styledComponents.default.div`
197
+ /* Rich-editor default setting (.RichEditor-root)*/
198
+ background: #fff;
199
+ border: 1px solid #ddd;
200
+ font-family: 'Georgia', serif;
201
+ font-size: 14px;
202
+ padding: 15px;
203
+
204
+ /* Custom setting */
205
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
206
+ 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
207
+ 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
208
+ width: 100%;
209
+ height: 100%;
210
+ background: rgb(255, 255, 255);
211
+ border-radius: 6px;
212
+ padding: 0 1rem 1rem;
213
+
214
+ /* Draft built-in buttons' style */
215
+ .public-DraftStyleDefault-header-two {
216
+ }
217
+ .public-DraftStyleDefault-header-three {
218
+ }
219
+ .public-DraftStyleDefault-header-four {
220
+ }
221
+ .public-DraftStyleDefault-blockquote {
222
+ }
223
+ .public-DraftStyleDefault-ul {
224
+ }
225
+ .public-DraftStyleDefault-unorderedListItem {
226
+ }
227
+ .public-DraftStyleDefault-ol {
228
+ }
229
+ .public-DraftStyleDefault-orderedListItem {
230
+ }
231
+ /* code-block */
232
+ .public-DraftStyleDefault-pre {
233
+ }
234
+ .alignCenter * {
235
+ text-align: center;
236
+ }
237
+ .alignLeft * {
238
+ text-align: left;
239
+ }
240
+ `;
241
+ const DraftEditorControls = _styledComponents.default.div`
242
+ padding-top: 1rem;
243
+ width: 100%;
244
+ background: rgb(255, 255, 255);
245
+ `;
246
+ const DraftEditorControlsWrapper = _styledComponents.default.div`
247
+ width: 100%;
248
+ position: relative;
249
+ display: flex;
250
+ flex-direction: row;
251
+ flex-wrap: wrap;
252
+ padding-right: 45px;
253
+ `;
254
+ const TextEditorWrapper = _styledComponents.default.div`
255
+ /* Rich-editor default setting (.RichEditor-editor)*/
256
+ border-top: 1px solid #ddd;
257
+ cursor: text;
258
+ font-size: 16px;
259
+ margin-top: 10px;
260
+ /* Custom setting */
261
+ h2 {
262
+ font-size: 22px;
263
+ }
264
+ h3 {
265
+ font-size: 17.5px;
266
+ }
267
+ font-weight: normal;
268
+ max-width: 800px;
269
+
270
+ // atimoic block float setting
271
+ display: flow-root;
272
+ figure {
273
+ clear: both;
274
+ margin: 0;
275
+ }
276
+ figure.left {
277
+ float: left;
278
+ width: 33%;
279
+ }
280
+ figure.right {
281
+ float: right;
282
+ width: 33%;
283
+ }
284
+ `;
285
+ const DraftEditorContainer = _styledComponents.default.div`
286
+ position: relative;
287
+ margin-top: 4px;
288
+ ${props => props.isEnlarged ? (0, _styledComponents.css)`
289
+ position: fixed;
290
+ width: 100%;
291
+ height: 100%;
292
+ top: 0;
293
+ left: 0;
294
+ z-index: 30;
295
+ padding-left: 3em;
296
+ padding-right: 3em;
297
+ background: rgba(0, 0, 0, 0.5);
298
+ ` : ''}
299
+ ${DraftEditorWrapper} {
300
+ ${props => props.isEnlarged ? (0, _styledComponents.css)`
301
+ width: 100%;
302
+ height: 100%;
303
+ padding: 0 1rem 0;
304
+ overflow: scroll;
305
+ ` : ''}
306
+ }
307
+ ${DraftEditorControls} {
308
+ ${props => props.isEnlarged ? (0, _styledComponents.css)`
309
+ position: sticky;
310
+ top: 0;
311
+ z-index: 12;
312
+ ` : ''}
313
+ }
314
+ ${DraftEditorControlsWrapper} {
315
+ ${props => props.isEnlarged ? (0, _styledComponents.css)`
316
+ overflow: auto;
317
+ padding-bottom: 0;
318
+ ` : ''}
319
+ }
320
+ ${TextEditorWrapper} {
321
+ ${props => props.isEnlarged ? (0, _styledComponents.css)`
322
+ max-width: 100%;
323
+ min-height: 100vh;
324
+ padding-bottom: 0;
325
+ ` : ''}
326
+ }
327
+ `;
328
+ const ButtonGroup = _styledComponents.default.div`
329
+ margin: 0 10px 0 0;
330
+ `;
331
+ const EnlargeButtonWrapper = _styledComponents.default.div`
332
+ position: absolute;
333
+ top: 0;
334
+ right: 0;
335
+ margin: 0;
336
+ `;
337
+
338
+ class RichTextEditor extends _react.default.Component {
339
+ constructor(props) {
340
+ super(props);
341
+ this.state = {
342
+ isEnlarged: false,
343
+ readOnly: false
344
+ }; // Custom overrides for "code" style.
345
+
346
+ this.customStyleMap = {
347
+ CODE: {
348
+ backgroundColor: 'rgba(0, 0, 0, 0.05)',
349
+ fontFamily: '"Inconsolata", "Menlo", "Consolas", monospace',
350
+ fontSize: 16,
351
+ padding: 2
352
+ }
353
+ };
354
+ }
355
+
356
+ onChange = editorState => {
357
+ this.props.onChange(editorState);
358
+ };
359
+ handleKeyCommand = (command, editorState) => {
360
+ const newState = _draftJs.RichUtils.handleKeyCommand(editorState, command);
361
+
362
+ if (newState) {
363
+ this.onChange(newState);
364
+ return true;
365
+ }
366
+
367
+ return false;
368
+ };
369
+ handleReturn = event => {
370
+ if (_draftJs.KeyBindingUtil.isSoftNewlineEvent(event)) {
371
+ const {
372
+ onChange,
373
+ editorState
374
+ } = this.props;
375
+ onChange(_draftJs.RichUtils.insertSoftNewline(editorState));
376
+ return 'handled';
377
+ }
378
+
379
+ return 'not-handled';
380
+ };
381
+ mapKeyToEditorCommand = e => {
382
+ if (e.keyCode === 9
383
+ /* TAB */
384
+ ) {
385
+ const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4
386
+ /* maxDepth */
387
+ );
388
+
389
+ if (newEditorState !== this.props.editorState) {
390
+ this.onChange(newEditorState);
391
+ }
392
+
393
+ return;
394
+ }
395
+
396
+ return (0, _draftJs.getDefaultKeyBinding)(e);
397
+ };
398
+ toggleBlockType = blockType => {
399
+ this.onChange(_draftJs.RichUtils.toggleBlockType(this.props.editorState, blockType));
400
+ };
401
+ toggleInlineStyle = inlineStyle => {
402
+ this.onChange(_draftJs.RichUtils.toggleInlineStyle(this.props.editorState, inlineStyle));
403
+ };
404
+ getEntityType = editorState => {
405
+ const contentState = editorState.getCurrentContent();
406
+ const selection = editorState.getSelection();
407
+ const startOffset = selection.getStartOffset();
408
+ const startBlock = editorState.getCurrentContent().getBlockForKey(selection.getStartKey());
409
+ const endOffset = selection.getEndOffset();
410
+ let entityInstance;
411
+ let entityKey;
412
+
413
+ if (!selection.isCollapsed()) {
414
+ entityKey = startBlock.getEntityAt(startOffset);
415
+ } else {
416
+ entityKey = startBlock.getEntityAt(endOffset);
417
+ }
418
+
419
+ if (entityKey !== null) {
420
+ entityInstance = contentState.getEntity(entityKey);
421
+ }
422
+
423
+ let entityType = '';
424
+
425
+ if (entityInstance) {
426
+ entityType = entityInstance.getType();
427
+ }
428
+
429
+ return entityType;
430
+ };
431
+ getCustomStyle = style => {
432
+ return style.reduce((styles, styleName) => {
433
+ if (styleName !== null && styleName !== void 0 && styleName.startsWith(_fontColor.CUSTOM_STYLE_PREFIX_FONT_COLOR)) {
434
+ styles['color'] = styleName.split(_fontColor.CUSTOM_STYLE_PREFIX_FONT_COLOR)[1];
435
+ }
436
+
437
+ if (styleName !== null && styleName !== void 0 && styleName.startsWith(_backgroundColor.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)) {
438
+ styles['backgroundColor'] = styleName.split(_backgroundColor.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)[1];
439
+ }
440
+
441
+ return styles;
442
+ }, {});
443
+ };
444
+ toggleEnlarge = () => {
445
+ this.setState({
446
+ isEnlarged: !this.state.isEnlarged
447
+ });
448
+ };
449
+ customStyleFn = style => {
450
+ return this.getCustomStyle(style);
451
+ };
452
+
453
+ blockStyleFn(block) {
454
+ var _entity$getData;
455
+
456
+ const {
457
+ editorState
458
+ } = this.props;
459
+ const entityKey = block.getEntityAt(0);
460
+ const entity = entityKey ? editorState.getCurrentContent().getEntity(entityKey) : null;
461
+ let result = '';
462
+ const blockData = block.getData();
463
+
464
+ if (blockData) {
465
+ const textAlign = blockData === null || blockData === void 0 ? void 0 : blockData.get('textAlign');
466
+
467
+ if (textAlign === 'center') {
468
+ result += 'alignCenter ';
469
+ } else if (textAlign === 'left') {
470
+ result += 'alignLeft ';
471
+ }
472
+ }
473
+
474
+ switch (block.getType()) {
475
+ case 'header-two':
476
+ case 'header-three':
477
+ case 'header-four':
478
+ case 'blockquote':
479
+ result += 'public-DraftStyleDefault-' + block.getType();
480
+ break;
481
+
482
+ case 'atomic':
483
+ if ((_entity$getData = entity.getData()) !== null && _entity$getData !== void 0 && _entity$getData.alignment) {
484
+ // support all atomic block to set alignment
485
+ result += ' ' + entity.getData().alignment;
486
+ }
487
+
488
+ break;
489
+
490
+ default:
491
+ break;
492
+ }
493
+
494
+ return result;
495
+ }
496
+
497
+ blockRendererFn = block => {
498
+ const atomicBlockObj = (0, _blockRendererFn.atomicBlockRenderer)(block);
499
+
500
+ if (atomicBlockObj) {
501
+ const onEditStart = () => {
502
+ this.setState({
503
+ // If custom block renderer requires mouse interaction,
504
+ // [Draft.js document](https://draftjs.org/docs/advanced-topics-block-components#recommendations-and-other-notes)
505
+ // suggests that we should temporarily set Editor
506
+ // to readOnly={true} during the interaction.
507
+ // In readOnly={true} condition, the user does not
508
+ // trigger any selection changes within the editor
509
+ // while interacting with custom block.
510
+ // If we don't set readOnly={true},
511
+ // it will cause some subtle bugs in InfoBox button.
512
+ readOnly: true
513
+ });
514
+ };
515
+
516
+ const onEditFinish = ({
517
+ entityKey,
518
+ entityData
519
+ }) => {
520
+ if (entityKey) {
521
+ const oldContentState = this.props.editorState.getCurrentContent();
522
+ const newContentState = oldContentState.replaceEntityData(entityKey, entityData);
523
+ this.onChange(_draftJs.EditorState.set(this.props.editorState, {
524
+ currentContent: newContentState
525
+ }));
526
+ } // Custom block interaction is finished.
527
+ // Therefore, we set readOnly={false} to
528
+ // make editor editable.
529
+
530
+
531
+ this.setState({
532
+ readOnly: false
533
+ });
534
+ }; // `onEditStart` and `onEditFinish` will be passed
535
+ // into custom block component.
536
+ // We can get them via `props.blockProps.onEditStart`
537
+ // and `props.blockProps.onEditFinish` in the custom block components.
538
+
539
+
540
+ atomicBlockObj['props'] = {
541
+ onEditStart,
542
+ onEditFinish,
543
+ getMainEditorReadOnly: () => this.state.readOnly
544
+ };
545
+ }
546
+
547
+ return atomicBlockObj;
548
+ };
549
+
550
+ render() {
551
+ let {
552
+ editorState
553
+ } = this.props;
554
+
555
+ if (!(editorState instanceof _draftJs.EditorState)) {
556
+ editorState = _draftJs.EditorState.createEmpty(_entityDecorator.default);
557
+ }
558
+
559
+ const {
560
+ isEnlarged,
561
+ readOnly
562
+ } = this.state;
563
+ const entityType = this.getEntityType(editorState);
564
+ const customStyle = this.getCustomStyle(editorState.getCurrentInlineStyle());
565
+ return /*#__PURE__*/_react.default.createElement(DraftEditorContainer, {
566
+ isEnlarged: isEnlarged
567
+ }, /*#__PURE__*/_react.default.createElement(DraftEditorWrapper, null, /*#__PURE__*/_react.default.createElement("link", {
568
+ href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css",
569
+ rel: "stylesheet",
570
+ type: "text/css"
571
+ }), /*#__PURE__*/_react.default.createElement("link", {
572
+ href: "https://storage.googleapis.com/static-readr-tw-dev/cdn/draft-js/rich-editor.css",
573
+ rel: "stylesheet",
574
+ type: "text/css"
575
+ }), /*#__PURE__*/_react.default.createElement("link", {
576
+ href: "https://cdnjs.cloudflare.com/ajax/libs/draft-js/0.11.7/Draft.css",
577
+ rel: "stylesheet",
578
+ type: "text/css"
579
+ }), /*#__PURE__*/_react.default.createElement("link", {
580
+ href: "https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css",
581
+ rel: "stylesheet",
582
+ type: "text/css"
583
+ }), /*#__PURE__*/_react.default.createElement(DraftEditorControls, null, /*#__PURE__*/_react.default.createElement(DraftEditorControlsWrapper, null, /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(BlockStyleControls, {
584
+ editorState: editorState,
585
+ onToggle: this.toggleBlockType,
586
+ readOnly: this.state.readOnly
587
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(InlineStyleControls, {
588
+ editorState: editorState,
589
+ onToggle: this.toggleInlineStyle,
590
+ readOnly: this.state.readOnly
591
+ })), /*#__PURE__*/_react.default.createElement(EnlargeButtonWrapper, null, /*#__PURE__*/_react.default.createElement(CustomEnlargeButton, {
592
+ onToggle: this.toggleEnlarge,
593
+ isEnlarged: isEnlarged
594
+ }))), /*#__PURE__*/_react.default.createElement(DraftEditorControlsWrapper, null, /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomLinkButton, {
595
+ isActive: entityType === 'LINK',
596
+ editorState: editorState,
597
+ onChange: this.onChange,
598
+ readOnly: this.state.readOnly
599
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomFontColorButton, {
600
+ isActive: Object.prototype.hasOwnProperty.call(customStyle, 'color'),
601
+ editorState: editorState,
602
+ onChange: this.onChange,
603
+ readOnly: this.state.readOnly
604
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomDividerButton, {
605
+ editorState: editorState,
606
+ onChange: this.onChange
607
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomAnnotationButton, {
608
+ isActive: entityType === 'ANNOTATION',
609
+ editorState: editorState,
610
+ onChange: this.onChange,
611
+ readOnly: this.state.readOnly
612
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomImageButton, {
613
+ editorState: editorState,
614
+ onChange: this.onChange,
615
+ readOnly: this.state.readOnly,
616
+ ImageSelector: _imageSelector.ImageSelector
617
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomSlideshowButton, {
618
+ editorState: editorState,
619
+ onChange: this.onChange,
620
+ readOnly: this.state.readOnly,
621
+ ImageSelector: _imageSelector.ImageSelector
622
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomInfoBoxButton, {
623
+ editorState: editorState,
624
+ onChange: this.onChange,
625
+ readOnly: this.state.readOnly
626
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomEmbeddedCodeButton, {
627
+ editorState: editorState,
628
+ onChange: this.onChange,
629
+ readOnly: this.state.readOnly
630
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomTableButton, {
631
+ editorState: editorState,
632
+ onChange: this.onChange,
633
+ readOnly: this.state.readOnly
634
+ }))), /*#__PURE__*/_react.default.createElement(DraftEditorControlsWrapper, null, /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomAlignLeftButton, {
635
+ isActive: (0, _textAlign.getSelectionBlockData)(editorState, 'textAlign') === 'left',
636
+ editorState: editorState,
637
+ onChange: this.onChange,
638
+ readOnly: this.state.readOnly
639
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomAlignCenterButton, {
640
+ isActive: (0, _textAlign.getSelectionBlockData)(editorState, 'textAlign') === 'center',
641
+ editorState: editorState,
642
+ onChange: this.onChange,
643
+ readOnly: this.state.readOnly
644
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomColorBoxButton, {
645
+ editorState: editorState,
646
+ onChange: this.onChange,
647
+ readOnly: this.state.readOnly
648
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomBackgroundColorButton, {
649
+ isActive: Object.prototype.hasOwnProperty.call(customStyle, 'backgroundColor'),
650
+ editorState: editorState,
651
+ onChange: this.onChange,
652
+ readOnly: this.state.readOnly
653
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomBGImageButton, {
654
+ editorState: editorState,
655
+ onChange: this.onChange,
656
+ readOnly: this.state.readOnly,
657
+ ImageSelector: _imageSelector.ImageSelector
658
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomBGVideoButton, {
659
+ editorState: editorState,
660
+ onChange: this.onChange,
661
+ readOnly: this.state.readOnly,
662
+ VideoSelector: _videoSelector.VideoSelector
663
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomRelatedPostButton, {
664
+ editorState: editorState,
665
+ onChange: this.onChange,
666
+ readOnly: this.state.readOnly,
667
+ PostSelector: _postSelector.PostSelector
668
+ })), /*#__PURE__*/_react.default.createElement(ButtonGroup, null, /*#__PURE__*/_react.default.createElement(CustomSideIndexButton, {
669
+ editorState: editorState,
670
+ onChange: this.onChange,
671
+ readOnly: this.state.readOnly
672
+ })))), /*#__PURE__*/_react.default.createElement(TextEditorWrapper, {
673
+ onClick: () => {
674
+ var _this$refs$editor;
675
+
676
+ // eslint-disable-next-line prettier/prettier
677
+ (_this$refs$editor = this.refs.editor) === null || _this$refs$editor === void 0 ? void 0 : _this$refs$editor.focus();
678
+ }
679
+ }, /*#__PURE__*/_react.default.createElement(_draftJs.Editor, {
680
+ blockStyleFn: this.blockStyleFn.bind(this),
681
+ blockRendererFn: this.blockRendererFn,
682
+ customStyleMap: this.customStyleMap,
683
+ customStyleFn: this.customStyleFn,
684
+ editorState: editorState,
685
+ handleKeyCommand: this.handleKeyCommand,
686
+ handleReturn: this.handleReturn,
687
+ keyBindingFn: this.mapKeyToEditorCommand,
688
+ onChange: this.onChange,
689
+ placeholder: "Tell a story...",
690
+ ref: "editor",
691
+ spellCheck: true,
692
+ readOnly: readOnly
693
+ }))));
694
+ }
695
+
696
+ }
697
+
698
+ class StyleButton extends _react.default.Component {
699
+ onToggle = e => {
700
+ e.preventDefault();
701
+ this.props.onToggle(this.props.style);
702
+ };
703
+
704
+ render() {
705
+ return /*#__PURE__*/_react.default.createElement(CustomButton, {
706
+ isActive: this.props.active,
707
+ onMouseDown: this.onToggle,
708
+ readOnly: this.props.readOnly
709
+ }, this.props.icon && /*#__PURE__*/_react.default.createElement("i", {
710
+ className: this.props.icon
711
+ }), /*#__PURE__*/_react.default.createElement("span", null, !this.props.icon ? this.props.label : ''));
712
+ }
713
+
714
+ }
715
+
716
+ const blockStyles = [{
717
+ label: 'H2',
718
+ style: 'header-two',
719
+ icon: ''
720
+ }, {
721
+ label: 'H3',
722
+ style: 'header-three',
723
+ icon: ''
724
+ }, {
725
+ label: 'H4',
726
+ style: 'header-four',
727
+ icon: ''
728
+ }, {
729
+ label: 'Blockquote',
730
+ style: 'blockquote',
731
+ icon: 'fas fa-quote-right'
732
+ }, {
733
+ label: 'UL',
734
+ style: 'unordered-list-item',
735
+ icon: 'fas fa-list-ul'
736
+ }, {
737
+ label: 'OL',
738
+ style: 'ordered-list-item',
739
+ icon: 'fas fa-list-ol'
740
+ }, {
741
+ label: 'Code Block',
742
+ style: 'code-block',
743
+ icon: 'fas fa-code'
744
+ }];
745
+
746
+ const BlockStyleControls = props => {
747
+ const {
748
+ editorState
749
+ } = props;
750
+ const selection = editorState.getSelection();
751
+ const blockType = editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();
752
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, blockStyles.map(type => /*#__PURE__*/_react.default.createElement(StyleButton, {
753
+ key: type.label,
754
+ active: type.style === blockType,
755
+ label: type.label,
756
+ onToggle: props.onToggle,
757
+ style: type.style,
758
+ icon: type.icon,
759
+ readOnly: props.readOnly
760
+ })));
761
+ };
762
+
763
+ const inlineStyles = [{
764
+ label: 'Bold',
765
+ style: 'BOLD',
766
+ icon: 'fas fa-bold'
767
+ }, {
768
+ label: 'Italic',
769
+ style: 'ITALIC',
770
+ icon: 'fas fa-italic'
771
+ }, {
772
+ label: 'Underline',
773
+ style: 'UNDERLINE',
774
+ icon: 'fas fa-underline'
775
+ }, {
776
+ label: 'Monospace',
777
+ style: 'CODE',
778
+ icon: 'fas fa-terminal'
779
+ }];
780
+
781
+ const InlineStyleControls = props => {
782
+ const currentStyle = props.editorState.getCurrentInlineStyle();
783
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, inlineStyles.map(type => /*#__PURE__*/_react.default.createElement(StyleButton, {
784
+ key: type.label,
785
+ active: currentStyle.has(type.style),
786
+ label: type.label,
787
+ onToggle: props.onToggle,
788
+ style: type.style,
789
+ icon: type.icon,
790
+ readOnly: props.readOnly
791
+ })));
792
+ };
793
+
794
+ const DraftEditor = {
795
+ RichTextEditor,
796
+ decorators: _entityDecorator.default
797
+ };
798
+ var _default = DraftEditor;
799
+ exports.default = _default;