@mirrormedia/lilith-draft-editor 1.1.0-alpha.2 → 1.1.0-alpha.3
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 +0 -22
- package/lib/draft-js/buttons/audio.js +3 -16
- package/lib/draft-js/buttons/background-color.js +0 -26
- package/lib/draft-js/buttons/background-image.js +13 -32
- package/lib/draft-js/buttons/background-video.js +13 -32
- package/lib/draft-js/buttons/color-box.js +5 -21
- package/lib/draft-js/buttons/divider.js +3 -12
- package/lib/draft-js/buttons/embedded-code.js +5 -16
- package/lib/draft-js/buttons/enlarge.js +0 -3
- package/lib/draft-js/buttons/font-color.js +0 -26
- package/lib/draft-js/buttons/image.js +5 -16
- package/lib/draft-js/buttons/info-box.js +5 -21
- package/lib/draft-js/buttons/link.js +0 -19
- package/lib/draft-js/buttons/media.js +3 -16
- package/lib/draft-js/buttons/related-post.js +3 -14
- package/lib/draft-js/buttons/selector/align-selector.js +2 -11
- package/lib/draft-js/buttons/selector/audio-selector.js +4 -33
- package/lib/draft-js/buttons/selector/image-selector.js +6 -50
- package/lib/draft-js/buttons/selector/pagination.js +2 -6
- package/lib/draft-js/buttons/selector/post-selector.js +6 -39
- package/lib/draft-js/buttons/selector/search-box.js +0 -9
- package/lib/draft-js/buttons/selector/video-selector.js +4 -33
- package/lib/draft-js/buttons/side-index.js +15 -31
- package/lib/draft-js/buttons/slideshow.js +7 -16
- package/lib/draft-js/buttons/table.js +5 -11
- package/lib/draft-js/buttons/text-align.js +0 -14
- package/lib/draft-js/buttons/video.js +3 -16
- package/lib/draft-js/const.js +0 -2
- package/lib/draft-js/draft-converter/api-data-instance.js +0 -14
- package/lib/draft-js/draft-converter/atomic-block-processor.js +12 -41
- package/lib/draft-js/draft-converter/entities.js +1 -0
- package/lib/draft-js/draft-converter/index.js +10 -29
- package/lib/draft-js/draft-converter/inline-styles-processor.js +22 -55
- package/lib/draft-js/modifier.js +5 -13
- package/lib/index.js +0 -4
- package/lib/website/mirrormedia/block-renderer/background-image-block.js +2 -14
- package/lib/website/mirrormedia/block-renderer/background-video-block.js +2 -14
- package/lib/website/mirrormedia/block-renderer/color-box-block.js +2 -14
- package/lib/website/mirrormedia/block-renderer/embedded-code-block.js +3 -12
- package/lib/website/mirrormedia/block-renderer/info-box-block.js +2 -14
- package/lib/website/mirrormedia/block-renderer/side-index-block.js +2 -13
- package/lib/website/mirrormedia/block-renderer/slideshow-block.js +4 -11
- package/lib/website/mirrormedia/block-renderer/table-block.js +28 -62
- package/lib/website/mirrormedia/block-renderer-fn.js +0 -30
- package/lib/website/mirrormedia/draft-editor.js +10 -106
- package/lib/website/mirrormedia/entity-decorator.js +0 -4
- package/lib/website/mirrormedia/index.js +0 -3
- package/lib/website/mirrormedia/selector/align-selector.js +2 -11
- package/lib/website/mirrormedia/selector/audio-selector.js +4 -33
- package/lib/website/mirrormedia/selector/image-selector.js +6 -49
- package/lib/website/mirrormedia/selector/pagination.js +2 -6
- package/lib/website/mirrormedia/selector/post-selector.js +6 -39
- package/lib/website/mirrormedia/selector/search-box.js +0 -9
- package/lib/website/mirrormedia/selector/video-selector.js +4 -32
- package/lib/website/readr/block-renderer/background-image-block.js +2 -14
- package/lib/website/readr/block-renderer/background-video-block.js +2 -14
- package/lib/website/readr/block-renderer/color-box-block.js +2 -14
- package/lib/website/readr/block-renderer/info-box-block.js +2 -14
- package/lib/website/readr/block-renderer/side-index-block.js +2 -13
- package/lib/website/readr/block-renderer/table-block.js +28 -62
- package/lib/website/readr/block-renderer-fn.js +4 -27
- package/lib/website/readr/draft-editor.js +10 -106
- package/lib/website/readr/entity-decorator.js +0 -4
- package/lib/website/readr/index.js +0 -3
- package/lib/website/readr/selector/align-selector.js +2 -11
- package/lib/website/readr/selector/audio-selector.js +4 -33
- package/lib/website/readr/selector/image-selector.js +6 -49
- package/lib/website/readr/selector/pagination.js +2 -6
- package/lib/website/readr/selector/post-selector.js +6 -39
- package/lib/website/readr/selector/search-box.js +0 -9
- package/lib/website/readr/selector/video-selector.js +4 -32
- package/package.json +2 -2
|
@@ -4,27 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.atomicBlockRenderer = atomicBlockRenderer;
|
|
7
|
-
|
|
8
7
|
var _infoBoxBlock = require("./block-renderer/info-box-block");
|
|
9
|
-
|
|
10
8
|
var _tableBlock = require("./block-renderer/table-block");
|
|
11
|
-
|
|
12
9
|
var _colorBoxBlock = require("./block-renderer/color-box-block");
|
|
13
|
-
|
|
14
10
|
var _backgroundImageBlock = require("./block-renderer/background-image-block");
|
|
15
|
-
|
|
16
11
|
var _backgroundVideoBlock = require("./block-renderer/background-video-block");
|
|
17
|
-
|
|
18
12
|
var _sideIndexBlock = require("./block-renderer/side-index-block");
|
|
19
|
-
|
|
20
13
|
var _embeddedCodeBlock = require("./block-renderer/embedded-code-block");
|
|
21
|
-
|
|
22
14
|
var _slideshowBlock = require("./block-renderer/slideshow-block");
|
|
23
|
-
|
|
24
15
|
var _mirrormedia = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/mirrormedia"));
|
|
25
|
-
|
|
26
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
-
|
|
28
17
|
const {
|
|
29
18
|
MediaBlock,
|
|
30
19
|
ImageBlock,
|
|
@@ -33,11 +22,9 @@ const {
|
|
|
33
22
|
VideoBlock,
|
|
34
23
|
AudioBlock
|
|
35
24
|
} = _mirrormedia.default.blockRenderers;
|
|
36
|
-
|
|
37
25
|
const AtomicBlock = props => {
|
|
38
26
|
const entity = props.contentState.getEntity(props.block.getEntityAt(0));
|
|
39
27
|
const entityType = entity.getType();
|
|
40
|
-
|
|
41
28
|
switch (entityType) {
|
|
42
29
|
case 'audioLink':
|
|
43
30
|
case 'imageLink':
|
|
@@ -45,81 +32,65 @@ const AtomicBlock = props => {
|
|
|
45
32
|
{
|
|
46
33
|
return MediaBlock(entity);
|
|
47
34
|
}
|
|
48
|
-
|
|
49
35
|
case 'image':
|
|
50
36
|
{
|
|
51
37
|
return ImageBlock(entity);
|
|
52
38
|
}
|
|
53
|
-
|
|
54
39
|
case 'slideshow':
|
|
55
40
|
{
|
|
56
41
|
return (0, _slideshowBlock.SlideshowEditBlock)(entity);
|
|
57
42
|
}
|
|
58
|
-
|
|
59
43
|
case 'slideshow-v2':
|
|
60
44
|
{
|
|
61
45
|
return (0, _slideshowBlock.SlideshowEditBlockV2)(entity);
|
|
62
46
|
}
|
|
63
|
-
|
|
64
47
|
case 'EMBEDDEDCODE':
|
|
65
48
|
{
|
|
66
49
|
return (0, _embeddedCodeBlock.EmbeddedCodeEditorBlock)(entity);
|
|
67
50
|
}
|
|
68
|
-
|
|
69
51
|
case 'INFOBOX':
|
|
70
52
|
{
|
|
71
53
|
return (0, _infoBoxBlock.InfoBoxEditorBlock)(props);
|
|
72
54
|
}
|
|
73
|
-
|
|
74
55
|
case 'DIVIDER':
|
|
75
56
|
{
|
|
76
57
|
return DividerBlock();
|
|
77
58
|
}
|
|
78
|
-
|
|
79
59
|
case 'TABLE':
|
|
80
60
|
{
|
|
81
61
|
return (0, _tableBlock.TableEditorBlock)(props);
|
|
82
62
|
}
|
|
83
|
-
|
|
84
63
|
case 'COLORBOX':
|
|
85
64
|
{
|
|
86
65
|
return (0, _colorBoxBlock.ColorBoxEditorBlock)(props);
|
|
87
66
|
}
|
|
88
|
-
|
|
89
67
|
case 'BACKGROUNDIMAGE':
|
|
90
68
|
{
|
|
91
69
|
return (0, _backgroundImageBlock.BGImageEditorBlock)(props);
|
|
92
70
|
}
|
|
93
|
-
|
|
94
71
|
case 'BACKGROUNDVIDEO':
|
|
95
72
|
{
|
|
96
73
|
return (0, _backgroundVideoBlock.BGVideoEditorBlock)(props);
|
|
97
74
|
}
|
|
98
|
-
|
|
99
75
|
case 'RELATEDPOST':
|
|
100
76
|
{
|
|
101
77
|
return RelatedPostBlock(entity);
|
|
102
78
|
}
|
|
103
|
-
|
|
104
79
|
case 'SIDEINDEX':
|
|
105
80
|
{
|
|
106
81
|
return (0, _sideIndexBlock.SideIndexEditorBlock)(props);
|
|
107
82
|
}
|
|
108
|
-
|
|
109
83
|
case 'VIDEO':
|
|
110
84
|
{
|
|
111
85
|
return VideoBlock(entity);
|
|
112
86
|
}
|
|
113
|
-
|
|
114
87
|
case 'AUDIO':
|
|
115
88
|
{
|
|
116
89
|
return AudioBlock(entity);
|
|
117
90
|
}
|
|
118
91
|
}
|
|
119
|
-
|
|
120
92
|
return null;
|
|
121
93
|
};
|
|
122
|
-
|
|
123
94
|
function atomicBlockRenderer(block) {
|
|
124
95
|
if (block.getType() === 'atomic') {
|
|
125
96
|
return {
|
|
@@ -127,6 +98,5 @@ function atomicBlockRenderer(block) {
|
|
|
127
98
|
editable: false
|
|
128
99
|
};
|
|
129
100
|
}
|
|
130
|
-
|
|
131
101
|
return null;
|
|
132
102
|
}
|
|
@@ -4,73 +4,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.buttonNames = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
11
|
-
|
|
12
9
|
var _draftJs = require("draft-js");
|
|
13
|
-
|
|
14
10
|
var _blockRendererFn = require("./block-renderer-fn");
|
|
15
|
-
|
|
16
11
|
var _entityDecorator = _interopRequireDefault(require("./entity-decorator"));
|
|
17
|
-
|
|
18
12
|
var _annotation = require("../../draft-js/buttons/annotation");
|
|
19
|
-
|
|
20
13
|
var _embeddedCode = require("../../draft-js/buttons/embedded-code");
|
|
21
|
-
|
|
22
14
|
var _enlarge = require("../../draft-js/buttons/enlarge");
|
|
23
|
-
|
|
24
15
|
var _image = require("../../draft-js/buttons/image");
|
|
25
|
-
|
|
26
16
|
var _infoBox = require("../../draft-js/buttons/info-box");
|
|
27
|
-
|
|
28
17
|
var _link = require("../../draft-js/buttons/link");
|
|
29
|
-
|
|
30
18
|
var _slideshow = require("../../draft-js/buttons/slideshow");
|
|
31
|
-
|
|
32
19
|
var _table = require("../../draft-js/buttons/table");
|
|
33
|
-
|
|
34
20
|
var _divider = require("../../draft-js/buttons/divider");
|
|
35
|
-
|
|
36
21
|
var _colorBox = require("../../draft-js/buttons/color-box");
|
|
37
|
-
|
|
38
22
|
var _backgroundImage = require("../../draft-js/buttons/background-image");
|
|
39
|
-
|
|
40
23
|
var _backgroundVideo = require("../../draft-js/buttons/background-video");
|
|
41
|
-
|
|
42
24
|
var _relatedPost = require("../../draft-js/buttons/related-post");
|
|
43
|
-
|
|
44
25
|
var _sideIndex = require("../../draft-js/buttons/side-index");
|
|
45
|
-
|
|
46
26
|
var _textAlign = require("../../draft-js/buttons/text-align");
|
|
47
|
-
|
|
48
27
|
var _fontColor = require("../../draft-js/buttons/font-color");
|
|
49
|
-
|
|
50
28
|
var _backgroundColor = require("../../draft-js/buttons/background-color");
|
|
51
|
-
|
|
52
29
|
var _video = require("../../draft-js/buttons/video");
|
|
53
|
-
|
|
54
30
|
var _audio = require("../../draft-js/buttons/audio");
|
|
55
|
-
|
|
56
31
|
var _const = require("../../draft-js/const");
|
|
57
|
-
|
|
58
32
|
var _imageSelector = require("./selector/image-selector");
|
|
59
|
-
|
|
60
33
|
var _videoSelector = require("./selector/video-selector");
|
|
61
|
-
|
|
62
34
|
var _postSelector = require("./selector/post-selector");
|
|
63
|
-
|
|
64
35
|
var _audioSelector = require("./selector/audio-selector");
|
|
65
|
-
|
|
66
36
|
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); }
|
|
67
|
-
|
|
68
37
|
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; }
|
|
69
|
-
|
|
70
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
71
|
-
|
|
72
39
|
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); }
|
|
73
|
-
|
|
74
40
|
const buttonNames = {
|
|
75
41
|
// inline styles
|
|
76
42
|
bold: 'bold',
|
|
@@ -122,18 +88,15 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
122
88
|
if (props.readOnly) {
|
|
123
89
|
return 'not-allowed';
|
|
124
90
|
}
|
|
125
|
-
|
|
126
91
|
return 'pointer';
|
|
127
92
|
}};
|
|
128
93
|
color: ${props => {
|
|
129
94
|
if (props.readOnly) {
|
|
130
95
|
return '#c1c7d0';
|
|
131
96
|
}
|
|
132
|
-
|
|
133
97
|
if (props.isActive) {
|
|
134
98
|
return '#3b82f6';
|
|
135
99
|
}
|
|
136
|
-
|
|
137
100
|
return '#6b7280';
|
|
138
101
|
}};
|
|
139
102
|
border: solid 1px
|
|
@@ -141,22 +104,18 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
141
104
|
if (props.readOnly) {
|
|
142
105
|
return '#c1c7d0';
|
|
143
106
|
}
|
|
144
|
-
|
|
145
107
|
if (props.isActive) {
|
|
146
108
|
return '#3b82f6';
|
|
147
109
|
}
|
|
148
|
-
|
|
149
110
|
return '#6b7280';
|
|
150
111
|
}};
|
|
151
112
|
box-shadow: ${props => {
|
|
152
113
|
if (props.readOnly) {
|
|
153
114
|
return 'unset';
|
|
154
115
|
}
|
|
155
|
-
|
|
156
116
|
if (props.isActive) {
|
|
157
117
|
return 'rgba(38, 132, 255, 20%) 0px 1px 4px ';
|
|
158
118
|
}
|
|
159
|
-
|
|
160
119
|
return 'unset';
|
|
161
120
|
}};
|
|
162
121
|
transition: box-shadow 100ms linear;
|
|
@@ -165,7 +124,6 @@ const buttonStyle = (0, _styledComponents.css)`
|
|
|
165
124
|
if (props.isDisabled) {
|
|
166
125
|
return 'none';
|
|
167
126
|
}
|
|
168
|
-
|
|
169
127
|
return 'inline-flex';
|
|
170
128
|
}};
|
|
171
129
|
`;
|
|
@@ -175,11 +133,9 @@ const longFormButtonStyle = (0, _styledComponents.css)`
|
|
|
175
133
|
if (props.readOnly) {
|
|
176
134
|
return '#c1c7d0';
|
|
177
135
|
}
|
|
178
|
-
|
|
179
136
|
if (props.isActive) {
|
|
180
137
|
return '#ED8B00';
|
|
181
138
|
}
|
|
182
|
-
|
|
183
139
|
return '#6b7280';
|
|
184
140
|
}};
|
|
185
141
|
border: solid 1px
|
|
@@ -187,22 +143,18 @@ const longFormButtonStyle = (0, _styledComponents.css)`
|
|
|
187
143
|
if (props.readOnly) {
|
|
188
144
|
return '#c1c7d0';
|
|
189
145
|
}
|
|
190
|
-
|
|
191
146
|
if (props.isActive) {
|
|
192
147
|
return '#ED8B00';
|
|
193
148
|
}
|
|
194
|
-
|
|
195
149
|
return '#FECC85';
|
|
196
150
|
}};
|
|
197
151
|
box-shadow: ${props => {
|
|
198
152
|
if (props.readOnly) {
|
|
199
153
|
return 'unset';
|
|
200
154
|
}
|
|
201
|
-
|
|
202
155
|
if (props.isActive) {
|
|
203
156
|
return 'rgba(237, 139, 0, 0.5) 0px 1px 4px';
|
|
204
157
|
}
|
|
205
|
-
|
|
206
158
|
return 'unset';
|
|
207
159
|
}};
|
|
208
160
|
`;
|
|
@@ -221,7 +173,6 @@ const CustomAnnotationButton = (0, _styledComponents.default)(_annotation.Annota
|
|
|
221
173
|
const CustomLinkButton = (0, _styledComponents.default)(_link.LinkButton)`
|
|
222
174
|
${buttonStyle}
|
|
223
175
|
`;
|
|
224
|
-
|
|
225
176
|
function createButtonWithoutProps(referenceComponent, isLongForm = false, additionalCSS = ``) {
|
|
226
177
|
return isLongForm ? (0, _styledComponents.default)(referenceComponent)`
|
|
227
178
|
${longFormButtonStyle}
|
|
@@ -231,7 +182,6 @@ function createButtonWithoutProps(referenceComponent, isLongForm = false, additi
|
|
|
231
182
|
${additionalCSS}
|
|
232
183
|
`;
|
|
233
184
|
}
|
|
234
|
-
|
|
235
185
|
const CustomEnlargeButton = createButtonWithoutProps(_enlarge.EnlargeButton, false, `color: #999`);
|
|
236
186
|
const CustomImageButton = createButtonWithoutProps(_image.ImageButton);
|
|
237
187
|
const CustomSlideshowButton = createButtonWithoutProps(_slideshow.SlideshowButton);
|
|
@@ -389,15 +339,14 @@ const EnlargeButtonWrapper = _styledComponents.default.div`
|
|
|
389
339
|
right: 0;
|
|
390
340
|
margin: 0;
|
|
391
341
|
`;
|
|
392
|
-
|
|
393
342
|
class RichTextEditor extends _react.default.Component {
|
|
394
343
|
constructor(props) {
|
|
395
344
|
super(props);
|
|
396
345
|
this.state = {
|
|
397
346
|
isEnlarged: false,
|
|
398
347
|
readOnly: false
|
|
399
|
-
};
|
|
400
|
-
|
|
348
|
+
};
|
|
349
|
+
// Custom overrides for "code" style.
|
|
401
350
|
this.customStyleMap = {
|
|
402
351
|
CODE: {
|
|
403
352
|
backgroundColor: 'rgba(0, 0, 0, 0.05)',
|
|
@@ -407,18 +356,15 @@ class RichTextEditor extends _react.default.Component {
|
|
|
407
356
|
}
|
|
408
357
|
};
|
|
409
358
|
}
|
|
410
|
-
|
|
411
359
|
onChange = editorState => {
|
|
412
360
|
this.props.onChange(editorState);
|
|
413
361
|
};
|
|
414
362
|
handleKeyCommand = (command, editorState) => {
|
|
415
363
|
const newState = _draftJs.RichUtils.handleKeyCommand(editorState, command);
|
|
416
|
-
|
|
417
364
|
if (newState) {
|
|
418
365
|
this.onChange(newState);
|
|
419
366
|
return true;
|
|
420
367
|
}
|
|
421
|
-
|
|
422
368
|
return false;
|
|
423
369
|
};
|
|
424
370
|
handleReturn = event => {
|
|
@@ -430,24 +376,17 @@ class RichTextEditor extends _react.default.Component {
|
|
|
430
376
|
onChange(_draftJs.RichUtils.insertSoftNewline(editorState));
|
|
431
377
|
return 'handled';
|
|
432
378
|
}
|
|
433
|
-
|
|
434
379
|
return 'not-handled';
|
|
435
380
|
};
|
|
436
381
|
mapKeyToEditorCommand = e => {
|
|
437
|
-
if (e.keyCode === 9
|
|
438
|
-
|
|
439
|
-
) {
|
|
440
|
-
const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4
|
|
441
|
-
/* maxDepth */
|
|
442
|
-
);
|
|
382
|
+
if (e.keyCode === 9 /* TAB */) {
|
|
383
|
+
const newEditorState = _draftJs.RichUtils.onTab(e, this.props.editorState, 4 /* maxDepth */);
|
|
443
384
|
|
|
444
385
|
if (newEditorState !== this.props.editorState) {
|
|
445
386
|
this.onChange(newEditorState);
|
|
446
387
|
}
|
|
447
|
-
|
|
448
388
|
return;
|
|
449
389
|
}
|
|
450
|
-
|
|
451
390
|
return (0, _draftJs.getDefaultKeyBinding)(e);
|
|
452
391
|
};
|
|
453
392
|
toggleBlockType = blockType => {
|
|
@@ -464,23 +403,18 @@ class RichTextEditor extends _react.default.Component {
|
|
|
464
403
|
const endOffset = selection.getEndOffset();
|
|
465
404
|
let entityInstance;
|
|
466
405
|
let entityKey;
|
|
467
|
-
|
|
468
406
|
if (!selection.isCollapsed()) {
|
|
469
407
|
entityKey = startBlock.getEntityAt(startOffset);
|
|
470
408
|
} else {
|
|
471
409
|
entityKey = startBlock.getEntityAt(endOffset);
|
|
472
410
|
}
|
|
473
|
-
|
|
474
411
|
if (entityKey !== null) {
|
|
475
412
|
entityInstance = contentState.getEntity(entityKey);
|
|
476
413
|
}
|
|
477
|
-
|
|
478
414
|
let entityType = '';
|
|
479
|
-
|
|
480
415
|
if (entityInstance) {
|
|
481
416
|
entityType = entityInstance.getType();
|
|
482
417
|
}
|
|
483
|
-
|
|
484
418
|
return entityType;
|
|
485
419
|
};
|
|
486
420
|
getCustomStyle = style => {
|
|
@@ -488,11 +422,9 @@ class RichTextEditor extends _react.default.Component {
|
|
|
488
422
|
if (styleName !== null && styleName !== void 0 && styleName.startsWith(_const.CUSTOM_STYLE_PREFIX_FONT_COLOR)) {
|
|
489
423
|
styles['color'] = styleName.split(_const.CUSTOM_STYLE_PREFIX_FONT_COLOR)[1];
|
|
490
424
|
}
|
|
491
|
-
|
|
492
425
|
if (styleName !== null && styleName !== void 0 && styleName.startsWith(_const.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)) {
|
|
493
426
|
styles['backgroundColor'] = styleName.split(_const.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR)[1];
|
|
494
427
|
}
|
|
495
|
-
|
|
496
428
|
return styles;
|
|
497
429
|
}, {});
|
|
498
430
|
};
|
|
@@ -504,10 +436,8 @@ class RichTextEditor extends _react.default.Component {
|
|
|
504
436
|
customStyleFn = style => {
|
|
505
437
|
return this.getCustomStyle(style);
|
|
506
438
|
};
|
|
507
|
-
|
|
508
439
|
blockStyleFn(block) {
|
|
509
440
|
var _entity$getData;
|
|
510
|
-
|
|
511
441
|
const {
|
|
512
442
|
editorState
|
|
513
443
|
} = this.props;
|
|
@@ -515,17 +445,14 @@ class RichTextEditor extends _react.default.Component {
|
|
|
515
445
|
const entity = entityKey ? editorState.getCurrentContent().getEntity(entityKey) : null;
|
|
516
446
|
let result = '';
|
|
517
447
|
const blockData = block.getData();
|
|
518
|
-
|
|
519
448
|
if (blockData) {
|
|
520
449
|
const textAlign = blockData === null || blockData === void 0 ? void 0 : blockData.get('textAlign');
|
|
521
|
-
|
|
522
450
|
if (textAlign === 'center') {
|
|
523
451
|
result += 'alignCenter ';
|
|
524
452
|
} else if (textAlign === 'left') {
|
|
525
453
|
result += 'alignLeft ';
|
|
526
454
|
}
|
|
527
455
|
}
|
|
528
|
-
|
|
529
456
|
switch (block.getType()) {
|
|
530
457
|
case 'header-two':
|
|
531
458
|
case 'header-three':
|
|
@@ -533,25 +460,19 @@ class RichTextEditor extends _react.default.Component {
|
|
|
533
460
|
case 'blockquote':
|
|
534
461
|
result += 'public-DraftStyleDefault-' + block.getType();
|
|
535
462
|
break;
|
|
536
|
-
|
|
537
463
|
case 'atomic':
|
|
538
464
|
if ((_entity$getData = entity.getData()) !== null && _entity$getData !== void 0 && _entity$getData.alignment) {
|
|
539
465
|
// support all atomic block to set alignment
|
|
540
466
|
result += ' ' + entity.getData().alignment;
|
|
541
467
|
}
|
|
542
|
-
|
|
543
468
|
break;
|
|
544
|
-
|
|
545
469
|
default:
|
|
546
470
|
break;
|
|
547
471
|
}
|
|
548
|
-
|
|
549
472
|
return result;
|
|
550
473
|
}
|
|
551
|
-
|
|
552
474
|
blockRendererFn = block => {
|
|
553
475
|
const atomicBlockObj = (0, _blockRendererFn.atomicBlockRenderer)(block);
|
|
554
|
-
|
|
555
476
|
if (atomicBlockObj) {
|
|
556
477
|
const onEditStart = () => {
|
|
557
478
|
this.setState({
|
|
@@ -567,7 +488,6 @@ class RichTextEditor extends _react.default.Component {
|
|
|
567
488
|
readOnly: true
|
|
568
489
|
});
|
|
569
490
|
};
|
|
570
|
-
|
|
571
491
|
const onEditFinish = ({
|
|
572
492
|
entityKey,
|
|
573
493
|
entityData
|
|
@@ -578,20 +498,20 @@ class RichTextEditor extends _react.default.Component {
|
|
|
578
498
|
this.onChange(_draftJs.EditorState.set(this.props.editorState, {
|
|
579
499
|
currentContent: newContentState
|
|
580
500
|
}));
|
|
581
|
-
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
// Custom block interaction is finished.
|
|
582
504
|
// Therefore, we set readOnly={false} to
|
|
583
505
|
// make editor editable.
|
|
584
|
-
|
|
585
|
-
|
|
586
506
|
this.setState({
|
|
587
507
|
readOnly: false
|
|
588
508
|
});
|
|
589
|
-
};
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
// `onEditStart` and `onEditFinish` will be passed
|
|
590
512
|
// into custom block component.
|
|
591
513
|
// We can get them via `props.blockProps.onEditStart`
|
|
592
514
|
// and `props.blockProps.onEditFinish` in the custom block components.
|
|
593
|
-
|
|
594
|
-
|
|
595
515
|
atomicBlockObj['props'] = {
|
|
596
516
|
onEditStart,
|
|
597
517
|
onEditFinish,
|
|
@@ -603,10 +523,8 @@ class RichTextEditor extends _react.default.Component {
|
|
|
603
523
|
}
|
|
604
524
|
};
|
|
605
525
|
}
|
|
606
|
-
|
|
607
526
|
return atomicBlockObj;
|
|
608
527
|
};
|
|
609
|
-
|
|
610
528
|
render() {
|
|
611
529
|
const {
|
|
612
530
|
disabledButtons = []
|
|
@@ -614,24 +532,20 @@ class RichTextEditor extends _react.default.Component {
|
|
|
614
532
|
let {
|
|
615
533
|
editorState
|
|
616
534
|
} = this.props;
|
|
617
|
-
|
|
618
535
|
if (!(editorState instanceof _draftJs.EditorState)) {
|
|
619
536
|
editorState = _draftJs.EditorState.createEmpty(_entityDecorator.default);
|
|
620
537
|
}
|
|
621
|
-
|
|
622
538
|
const {
|
|
623
539
|
isEnlarged,
|
|
624
540
|
readOnly
|
|
625
541
|
} = this.state;
|
|
626
542
|
const entityType = this.getEntityType(editorState);
|
|
627
543
|
const customStyle = this.getCustomStyle(editorState.getCurrentInlineStyle());
|
|
628
|
-
|
|
629
544
|
const renderBasicEditor = propsOfBasicEditor => {
|
|
630
545
|
return /*#__PURE__*/_react.default.createElement(RichTextEditor, _extends({}, propsOfBasicEditor, {
|
|
631
546
|
disabledButtons: disabledButtonsOnBasicEditor
|
|
632
547
|
}));
|
|
633
548
|
};
|
|
634
|
-
|
|
635
549
|
return /*#__PURE__*/_react.default.createElement(DraftEditorContainer, {
|
|
636
550
|
isEnlarged: isEnlarged
|
|
637
551
|
}, /*#__PURE__*/_react.default.createElement(DraftEditorWrapper, null, /*#__PURE__*/_react.default.createElement("link", {
|
|
@@ -783,7 +697,6 @@ class RichTextEditor extends _react.default.Component {
|
|
|
783
697
|
})))), /*#__PURE__*/_react.default.createElement(TextEditorWrapper, {
|
|
784
698
|
onClick: () => {
|
|
785
699
|
var _this$refs$editor;
|
|
786
|
-
|
|
787
700
|
// eslint-disable-next-line prettier/prettier
|
|
788
701
|
(_this$refs$editor = this.refs.editor) === null || _this$refs$editor === void 0 ? void 0 : _this$refs$editor.focus();
|
|
789
702
|
}
|
|
@@ -803,15 +716,12 @@ class RichTextEditor extends _react.default.Component {
|
|
|
803
716
|
readOnly: readOnly
|
|
804
717
|
}))));
|
|
805
718
|
}
|
|
806
|
-
|
|
807
719
|
}
|
|
808
|
-
|
|
809
720
|
class StyleButton extends _react.default.Component {
|
|
810
721
|
onToggle = e => {
|
|
811
722
|
e.preventDefault();
|
|
812
723
|
this.props.onToggle(this.props.style);
|
|
813
724
|
};
|
|
814
|
-
|
|
815
725
|
render() {
|
|
816
726
|
return /*#__PURE__*/_react.default.createElement(CustomButton, {
|
|
817
727
|
isDisabled: this.props.isDisabled,
|
|
@@ -822,9 +732,7 @@ class StyleButton extends _react.default.Component {
|
|
|
822
732
|
className: this.props.icon
|
|
823
733
|
}), /*#__PURE__*/_react.default.createElement("span", null, !this.props.icon ? this.props.label : ''));
|
|
824
734
|
}
|
|
825
|
-
|
|
826
735
|
}
|
|
827
|
-
|
|
828
736
|
const blockStyles = [{
|
|
829
737
|
label: 'H2',
|
|
830
738
|
style: 'header-two',
|
|
@@ -854,7 +762,6 @@ const blockStyles = [{
|
|
|
854
762
|
style: 'code-block',
|
|
855
763
|
icon: 'fas fa-code'
|
|
856
764
|
}];
|
|
857
|
-
|
|
858
765
|
const BlockStyleControls = props => {
|
|
859
766
|
const {
|
|
860
767
|
editorState,
|
|
@@ -873,7 +780,6 @@ const BlockStyleControls = props => {
|
|
|
873
780
|
readOnly: props.readOnly
|
|
874
781
|
})));
|
|
875
782
|
};
|
|
876
|
-
|
|
877
783
|
const inlineStyles = [{
|
|
878
784
|
label: 'Bold',
|
|
879
785
|
style: 'BOLD',
|
|
@@ -891,7 +797,6 @@ const inlineStyles = [{
|
|
|
891
797
|
style: 'CODE',
|
|
892
798
|
icon: 'fas fa-terminal'
|
|
893
799
|
}];
|
|
894
|
-
|
|
895
800
|
const InlineStyleControls = props => {
|
|
896
801
|
const currentStyle = props.editorState.getCurrentInlineStyle();
|
|
897
802
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, inlineStyles.map(type => /*#__PURE__*/_react.default.createElement(StyleButton, {
|
|
@@ -905,7 +810,6 @@ const InlineStyleControls = props => {
|
|
|
905
810
|
readOnly: props.readOnly
|
|
906
811
|
})));
|
|
907
812
|
};
|
|
908
|
-
|
|
909
813
|
const DraftEditor = {
|
|
910
814
|
RichTextEditor,
|
|
911
815
|
decorators: _entityDecorator.default
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _draftJs = require("draft-js");
|
|
9
|
-
|
|
10
8
|
var _mirrormedia = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/mirrormedia"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
const {
|
|
15
11
|
annotationDecorator,
|
|
16
12
|
linkDecorator
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _draftEditor = _interopRequireDefault(require("./draft-editor"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const MirrorMedia = {
|
|
13
10
|
DraftEditor: _draftEditor.default
|
|
14
11
|
};
|
|
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AlignSelector = AlignSelector;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
-
|
|
12
9
|
var _fields = require("@keystone-ui/fields");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
13
|
const Label = _styledComponents.default.label`
|
|
21
14
|
display: block;
|
|
22
15
|
margin: 10px 0;
|
|
@@ -29,7 +22,6 @@ const AlignSelect = (0, _styledComponents.default)(_fields.Select)`
|
|
|
29
22
|
return `margin-bottom: ${menuHeight}px;`;
|
|
30
23
|
}}
|
|
31
24
|
`;
|
|
32
|
-
|
|
33
25
|
function AlignSelector(props) {
|
|
34
26
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
35
27
|
const [menuHeight, setMenuHeight] = (0, _react.useState)(0);
|
|
@@ -41,7 +33,6 @@ function AlignSelector(props) {
|
|
|
41
33
|
} = props;
|
|
42
34
|
(0, _react.useEffect)(() => {
|
|
43
35
|
const selectMenu = document.querySelector('.css-nabggt-menu');
|
|
44
|
-
|
|
45
36
|
if (selectMenu) {
|
|
46
37
|
const styles = window.getComputedStyle(selectMenu);
|
|
47
38
|
const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
|
|
@@ -49,7 +40,6 @@ function AlignSelector(props) {
|
|
|
49
40
|
} else {
|
|
50
41
|
setMenuHeight(0);
|
|
51
42
|
}
|
|
52
|
-
|
|
53
43
|
if (isOpen && onOpen) {
|
|
54
44
|
onOpen();
|
|
55
45
|
}
|
|
@@ -57,7 +47,8 @@ function AlignSelector(props) {
|
|
|
57
47
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
58
48
|
htmlFor: "alignment"
|
|
59
49
|
}, "\u5C0D\u9F4A"), /*#__PURE__*/_react.default.createElement(AlignSelect, {
|
|
60
|
-
id: "alignment"
|
|
50
|
+
id: "alignment"
|
|
51
|
+
// default align === undefined
|
|
61
52
|
,
|
|
62
53
|
value: options.find(option => option.value === align),
|
|
63
54
|
options: options,
|