@mirrormedia/lilith-draft-editor 1.1.0-alpha.3 → 1.1.0-alpha.31

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,16 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.SearchBox = SearchBox;
7
+
7
8
  var _react = _interopRequireWildcard(require("react"));
9
+
8
10
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
9
12
  var _button = require("@keystone-ui/button");
13
+
10
14
  var _fields = require("@keystone-ui/fields");
15
+
11
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
12
18
  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); }
19
+
13
20
  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; }
21
+
14
22
  const SearchBoxWrapper = _styledComponents.default.div`
15
23
  display: flex;
16
24
  `;
25
+
17
26
  function SearchBox(props) {
18
27
  const {
19
28
  onChange,
@@ -4,26 +4,37 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VideoSelector = VideoSelector;
7
+
7
8
  var _react = _interopRequireWildcard(require("react"));
9
+
8
10
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
9
12
  var _modals = require("@keystone-ui/modals");
13
+
10
14
  var _apollo = require("@keystone-6/core/admin-ui/apollo");
15
+
11
16
  var _searchBox = require("./search-box");
17
+
12
18
  var _pagination = require("./pagination");
19
+
13
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
14
22
  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); }
23
+
15
24
  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; }
25
+
16
26
  const videosQuery = (0, _apollo.gql)`
17
27
  query Videos($searchText: String!, $take: Int, $skip: Int) {
18
28
  videosCount(where: { name: { contains: $searchText } })
19
29
  videos(
20
30
  where: { name: { contains: $searchText } }
31
+ orderBy: { id: desc }
21
32
  take: $take
22
33
  skip: $skip
23
34
  ) {
24
35
  id
25
36
  name
26
- urlOriginal
37
+ videoSrc
27
38
  file {
28
39
  filename
29
40
  filesize
@@ -91,6 +102,7 @@ const ErrorWrapper = _styledComponents.default.div`
91
102
  const VideoName = _styledComponents.default.p`
92
103
  text-align: center;
93
104
  `;
105
+
94
106
  function VideosGrids(props) {
95
107
  const {
96
108
  videos,
@@ -106,8 +118,10 @@ function VideosGrids(props) {
106
118
  });
107
119
  }));
108
120
  }
121
+
109
122
  function VideoGrid(props) {
110
123
  var _video$file;
124
+
111
125
  const {
112
126
  video,
113
127
  onSelect,
@@ -122,25 +136,29 @@ function VideoGrid(props) {
122
136
  muted: true,
123
137
  loop: true
124
138
  }, /*#__PURE__*/_react.default.createElement("source", {
125
- src: video === null || video === void 0 ? void 0 : video.urlOriginal
139
+ src: video === null || video === void 0 ? void 0 : video.videoSrc
126
140
  }), /*#__PURE__*/_react.default.createElement("source", {
127
141
  src: video === null || video === void 0 ? void 0 : (_video$file = video.file) === null || _video$file === void 0 ? void 0 : _video$file.url
128
142
  })));
129
143
  }
144
+
130
145
  function VideoMetaGrids(props) {
131
146
  const {
132
147
  videoMetas
133
148
  } = props;
134
149
  return /*#__PURE__*/_react.default.createElement(VideoMetaGridsWrapper, null, videoMetas.map(videoMeta => {
135
150
  var _videoMeta$video;
151
+
136
152
  return /*#__PURE__*/_react.default.createElement(VideoMetaGrid, {
137
153
  key: videoMeta === null || videoMeta === void 0 ? void 0 : (_videoMeta$video = videoMeta.video) === null || _videoMeta$video === void 0 ? void 0 : _videoMeta$video.id,
138
154
  videoMeta: videoMeta
139
155
  });
140
156
  }));
141
157
  }
158
+
142
159
  function VideoMetaGrid(props) {
143
160
  var _video$file2;
161
+
144
162
  const {
145
163
  videoMeta
146
164
  } = props;
@@ -152,11 +170,12 @@ function VideoMetaGrid(props) {
152
170
  autoPlay: true,
153
171
  loop: true
154
172
  }, /*#__PURE__*/_react.default.createElement("source", {
155
- src: video === null || video === void 0 ? void 0 : video.urlOriginal
173
+ src: video === null || video === void 0 ? void 0 : video.videoSrc
156
174
  }), /*#__PURE__*/_react.default.createElement("source", {
157
175
  src: video === null || video === void 0 ? void 0 : (_video$file2 = video.file) === null || _video$file2 === void 0 ? void 0 : _video$file2.url
158
176
  })), /*#__PURE__*/_react.default.createElement(VideoName, null, video === null || video === void 0 ? void 0 : video.name));
159
177
  }
178
+
160
179
  function VideoSelector(props) {
161
180
  const [queryVideos, {
162
181
  loading,
@@ -169,40 +188,46 @@ function VideoSelector(props) {
169
188
  fetchPolicy: 'no-cache'
170
189
  });
171
190
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
191
+
172
192
  const [searchText, setSearchText] = (0, _react.useState)('');
173
193
  const [selected, setSelected] = (0, _react.useState)([]);
174
194
  const pageSize = 6;
175
195
  const {
176
196
  onChange
177
197
  } = props;
198
+
178
199
  const onSave = () => {
179
200
  onChange(selected);
180
201
  };
202
+
181
203
  const onCancel = () => {
182
204
  onChange([]);
183
205
  };
206
+
184
207
  const onSearchBoxChange = async searchInput => {
185
208
  setSearchText(searchInput);
186
209
  setCurrentPage(1);
187
210
  };
211
+
188
212
  const onVideosGridSelect = videoEntity => {
189
213
  setSelected(selected => {
190
214
  const filterdSelected = selected.filter(ele => {
191
215
  var _ele$video;
216
+
192
217
  return ((_ele$video = ele.video) === null || _ele$video === void 0 ? void 0 : _ele$video.id) !== videoEntity.id;
193
- });
218
+ }); // deselect the video
194
219
 
195
- // deselect the video
196
220
  if (filterdSelected.length !== selected.length) {
197
221
  return filterdSelected;
198
- }
222
+ } // single select
223
+
199
224
 
200
- // single select
201
225
  return [{
202
226
  video: videoEntity
203
227
  }];
204
228
  });
205
229
  };
230
+
206
231
  const selectedVideos = selected.map(ele => {
207
232
  return ele.video;
208
233
  });
@@ -217,6 +242,7 @@ function VideoSelector(props) {
217
242
  });
218
243
  }
219
244
  }, [currentPage, searchText]);
245
+
220
246
  let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(VideosGrids, {
221
247
  videos: videos,
222
248
  selected: selectedVideos,
@@ -229,12 +255,15 @@ function VideoSelector(props) {
229
255
  setCurrentPage(pageIndex);
230
256
  }
231
257
  }));
258
+
232
259
  if (loading) {
233
260
  searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
234
261
  }
262
+
235
263
  if (error) {
236
264
  searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `videos` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, videosQuery.loc.source.body)));
237
265
  }
266
+
238
267
  return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
239
268
  isOpen: true
240
269
  }, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultMarginTop = exports.defaultMarginBottom = void 0;
7
+
8
+ var _styledComponents = require("styled-components");
9
+
10
+ const defaultMarginTop = (0, _styledComponents.css)`
11
+ margin-top: 32px;
12
+ `;
13
+ exports.defaultMarginTop = defaultMarginTop;
14
+ const defaultMarginBottom = (0, _styledComponents.css)`
15
+ margin-bottom: 32px;
16
+ `;
17
+ exports.defaultMarginBottom = defaultMarginBottom;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.theme = exports.mediaSize = exports.default = void 0;
7
+ const mediaSize = {
8
+ xs: 0,
9
+ sm: 576,
10
+ md: 768,
11
+ lg: 960,
12
+ xl: 1200,
13
+ xxl: 1400
14
+ };
15
+ exports.mediaSize = mediaSize;
16
+ const theme = {
17
+ breakpoint: {
18
+ xs: `@media (min-width: ${mediaSize.xs}px)`,
19
+ sm: `@media (min-width: ${mediaSize.sm}px)`,
20
+ md: `@media (min-width: ${mediaSize.md}px)`,
21
+ lg: `@media (min-width: ${mediaSize.lg}px)`,
22
+ xl: `@media (min-width: ${mediaSize.xl}px)`,
23
+ xxl: `@media (min-width: ${mediaSize.xxl}px)`
24
+ }
25
+ };
26
+ exports.theme = theme;
27
+ var _default = theme;
28
+ exports.default = _default;
@@ -3,24 +3,82 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.BGImageBlock = BGImageBlock;
6
7
  exports.BGImageEditorBlock = BGImageEditorBlock;
8
+
7
9
  var _react = _interopRequireWildcard(require("react"));
10
+
8
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+
9
13
  var _draftConverter = _interopRequireDefault(require("../../../draft-js/draft-converter"));
14
+
10
15
  var _backgroundImage = require("../../../draft-js/buttons/background-image");
11
- var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
16
+
12
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+
13
19
  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); }
20
+
14
21
  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; }
15
- const {
16
- BGImageBlock
17
- } = _readr.default.blockRenderers;
22
+
23
+ const BGImageRenderWrapper = _styledComponents.default.div`
24
+ padding: 30px;
25
+ position: relative;
26
+ width: 100%;
27
+ height: 100%;
28
+ background-image: url(${({
29
+ image
30
+ }) => image});
31
+ background-size: cover;
32
+ background-position: center center;
33
+ ${({
34
+ textBlockAlign
35
+ }) => {
36
+ if (textBlockAlign === 'left') {
37
+ return `padding-right: 50%;`;
38
+ } else if (textBlockAlign === 'right') {
39
+ return `padding-left: 50%;`;
40
+ } else if (textBlockAlign === 'bottom') {
41
+ return `padding-top: 50%;`;
42
+ }
43
+ }}
44
+ `;
45
+ const BGImageRenderBody = _styledComponents.default.div`
46
+ background: rgba(0, 0, 0, 0.5);
47
+ padding: 4px 20px;
48
+ margin-bottom: 10px;
49
+ `;
50
+
51
+ function BGImageBlock(props) {
52
+ var _image$imageFile, _image$resized, _image$resized2;
53
+
54
+ const {
55
+ block,
56
+ contentState
57
+ } = props;
58
+ const entityKey = block.getEntityAt(0);
59
+ const entity = contentState.getEntity(entityKey);
60
+ const {
61
+ textBlockAlign,
62
+ image,
63
+ body
64
+ } = entity.getData();
65
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(BGImageRenderWrapper, {
66
+ image: (image === null || image === void 0 ? void 0 : (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url) || (image === null || image === void 0 ? void 0 : (_image$resized = image.resized) === null || _image$resized === void 0 ? void 0 : _image$resized.w800) || (image === null || image === void 0 ? void 0 : (_image$resized2 = image.resized) === null || _image$resized2 === void 0 ? void 0 : _image$resized2.original),
67
+ textBlockAlign: textBlockAlign
68
+ }, /*#__PURE__*/_react.default.createElement(BGImageRenderBody, {
69
+ dangerouslySetInnerHTML: {
70
+ __html: body
71
+ }
72
+ })));
73
+ }
74
+
18
75
  const BGImageRenderButton = _styledComponents.default.span`
19
76
  cursor: pointer;
20
77
  background-color: white;
21
78
  padding: 6px;
22
79
  border-radius: 6px;
23
80
  `;
81
+
24
82
  function BGImageEditorBlock(props) {
25
83
  const [toShowInput, setToShowInput] = (0, _react.useState)(false);
26
84
  const {
@@ -40,6 +98,7 @@ function BGImageEditorBlock(props) {
40
98
  image,
41
99
  rawContentState
42
100
  } = entity.getData();
101
+
43
102
  const onChange = ({
44
103
  textBlockAlign: newTextBlockAlign,
45
104
  image: newImage,
@@ -57,6 +116,7 @@ function BGImageEditorBlock(props) {
57
116
  }
58
117
  });
59
118
  };
119
+
60
120
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_backgroundImage.BGImageInput, {
61
121
  renderBasicEditor: renderBasicEditor,
62
122
  textBlockAlign: textBlockAlign,
@@ -71,8 +131,8 @@ function BGImageEditorBlock(props) {
71
131
  }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(BGImageBlock, props), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(BGImageRenderButton, {
72
132
  onClick: () => {
73
133
  // call `onEditStart` prop as we are trying to update the BGImage entity
74
- onEditStart();
75
- // open `BGImageInput`
134
+ onEditStart(); // open `BGImageInput`
135
+
76
136
  setToShowInput(true);
77
137
  }
78
138
  }, /*#__PURE__*/_react.default.createElement("i", {
@@ -3,24 +3,92 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.BGVideoBlock = BGVideoBlock;
6
7
  exports.BGVideoEditorBlock = BGVideoEditorBlock;
8
+
7
9
  var _react = _interopRequireWildcard(require("react"));
10
+
8
11
  var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+
9
13
  var _draftConverter = _interopRequireDefault(require("../../../draft-js/draft-converter"));
14
+
10
15
  var _backgroundVideo = require("../../../draft-js/buttons/background-video");
11
- var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
16
+
12
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+
13
19
  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); }
20
+
14
21
  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; }
15
- const {
16
- BGVideoBlock
17
- } = _readr.default.blockRenderers;
22
+
23
+ const BGVideoRenderWrapper = _styledComponents.default.div`
24
+ position: relative;
25
+ padding: 30px;
26
+ width: 100%;
27
+ ${({
28
+ textBlockAlign
29
+ }) => {
30
+ if (textBlockAlign === 'left') {
31
+ return `padding-right: 50%;`;
32
+ } else if (textBlockAlign === 'right') {
33
+ return `padding-left: 50%;`;
34
+ } else if (textBlockAlign === 'bottom') {
35
+ return `padding-top: 50%;`;
36
+ }
37
+ }}
38
+ `;
39
+ const BGVideoRednerVideo = _styledComponents.default.video`
40
+ position: absolute;
41
+ width: 100%;
42
+ height: 100%;
43
+ top: 0;
44
+ left: 0;
45
+ z-index: -1;
46
+ background-color: black;
47
+ `;
48
+ const BGVideoRenderBody = _styledComponents.default.div`
49
+ background: rgba(0, 0, 0, 0.5);
50
+ padding: 4px 20px;
51
+ margin-bottom: 10px;
52
+ `;
53
+
54
+ function BGVideoBlock(props) {
55
+ var _video$file;
56
+
57
+ const {
58
+ block,
59
+ contentState
60
+ } = props;
61
+ const entityKey = block.getEntityAt(0);
62
+ const entity = contentState.getEntity(entityKey);
63
+ const {
64
+ textBlockAlign,
65
+ video,
66
+ body
67
+ } = entity.getData();
68
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(BGVideoRenderWrapper, {
69
+ textBlockAlign: textBlockAlign
70
+ }, /*#__PURE__*/_react.default.createElement(BGVideoRednerVideo, {
71
+ muted: true,
72
+ autoPlay: true,
73
+ loop: true
74
+ }, /*#__PURE__*/_react.default.createElement("source", {
75
+ src: video === null || video === void 0 ? void 0 : video.url
76
+ }), /*#__PURE__*/_react.default.createElement("source", {
77
+ src: video === null || video === void 0 ? void 0 : (_video$file = video.file) === null || _video$file === void 0 ? void 0 : _video$file.url
78
+ })), /*#__PURE__*/_react.default.createElement(BGVideoRenderBody, {
79
+ dangerouslySetInnerHTML: {
80
+ __html: body
81
+ }
82
+ })));
83
+ }
84
+
18
85
  const BGVideoRenderButton = _styledComponents.default.span`
19
86
  cursor: pointer;
20
87
  background-color: white;
21
88
  padding: 6px;
22
89
  border-radius: 6px;
23
90
  `;
91
+
24
92
  function BGVideoEditorBlock(props) {
25
93
  const [toShowInput, setToShowInput] = (0, _react.useState)(false);
26
94
  const {
@@ -40,6 +108,7 @@ function BGVideoEditorBlock(props) {
40
108
  video,
41
109
  rawContentState
42
110
  } = entity.getData();
111
+
43
112
  const onChange = ({
44
113
  textBlockAlign: newTextBlockAlign,
45
114
  video: newVideo,
@@ -57,6 +126,7 @@ function BGVideoEditorBlock(props) {
57
126
  }
58
127
  });
59
128
  };
129
+
60
130
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_backgroundVideo.BGVideoInput, {
61
131
  renderBasicEditor: renderBasicEditor,
62
132
  textBlockAlign: textBlockAlign,
@@ -71,8 +141,8 @@ function BGVideoEditorBlock(props) {
71
141
  }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(BGVideoBlock, props), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(BGVideoRenderButton, {
72
142
  onClick: () => {
73
143
  // call `onEditStart` prop as we are trying to update the BGVideo entity
74
- onEditStart();
75
- // open `BGVideoInput`
144
+ onEditStart(); // open `BGVideoInput`
145
+
76
146
  setToShowInput(true);
77
147
  }
78
148
  }, /*#__PURE__*/_react.default.createElement("i", {
@@ -4,20 +4,30 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ColorBoxEditorBlock = ColorBoxEditorBlock;
7
+
7
8
  var _react = _interopRequireWildcard(require("react"));
9
+
8
10
  var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
9
12
  var _draftConverter = _interopRequireDefault(require("../../../draft-js/draft-converter"));
13
+
10
14
  var _colorBox = require("../../../draft-js/buttons/color-box");
15
+
11
16
  var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
17
+
12
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
13
20
  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); }
21
+
14
22
  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; }
23
+
15
24
  const {
16
25
  ColorBoxBlock
17
26
  } = _readr.default.blockRenderers;
18
27
  const ColorBoxRenderButton = _styledComponents.default.div`
19
28
  cursor: pointer;
20
29
  `;
30
+
21
31
  function ColorBoxEditorBlock(props) {
22
32
  const [toShowInput, setToShowInput] = (0, _react.useState)(false);
23
33
  const {
@@ -36,6 +46,7 @@ function ColorBoxEditorBlock(props) {
36
46
  color,
37
47
  rawContentState
38
48
  } = entity.getData();
49
+
39
50
  const onChange = ({
40
51
  color: newColor,
41
52
  rawContentState: newRawContentState
@@ -51,6 +62,7 @@ function ColorBoxEditorBlock(props) {
51
62
  }
52
63
  });
53
64
  };
65
+
54
66
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_colorBox.ColorBoxInput, {
55
67
  renderBasicEditor: renderBasicEditor,
56
68
  color: color,
@@ -64,8 +76,8 @@ function ColorBoxEditorBlock(props) {
64
76
  }), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ColorBoxBlock, props), /*#__PURE__*/_react.default.createElement(ColorBoxRenderButton, {
65
77
  onClick: () => {
66
78
  // call `onEditStart` prop as we are trying to update the ColorBox entity
67
- onEditStart();
68
- // open `ColorBoxInput`
79
+ onEditStart(); // open `ColorBoxInput`
80
+
69
81
  setToShowInput(true);
70
82
  }
71
83
  }, /*#__PURE__*/_react.default.createElement("i", {
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImageEditorBlock = ImageEditorBlock;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
13
+
14
+ var _imageSelector = require("../selector/image-selector");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ const {
23
+ ImageBlock
24
+ } = _readr.default.blockRenderers;
25
+ const ImageBlockWrapper = _styledComponents.default.div`
26
+ img {
27
+ min-width: 300px;
28
+ max-width: 600px;
29
+ }
30
+ `;
31
+ const ImageEditButton = _styledComponents.default.span`
32
+ cursor: pointer;
33
+ background-color: white;
34
+ padding: 6px;
35
+ border-radius: 6px;
36
+ `;
37
+
38
+ function ImageEditorBlock(props) {
39
+ const [toShowImageSelector, setToShowImageSelector] = (0, _react.useState)(false);
40
+ const {
41
+ block,
42
+ blockProps,
43
+ contentState
44
+ } = props;
45
+ const {
46
+ onEditStart,
47
+ onEditFinish
48
+ } = blockProps;
49
+ const entityKey = block.getEntityAt(0);
50
+ const entity = contentState.getEntity(entityKey);
51
+ const {
52
+ id,
53
+ name,
54
+ imageFile,
55
+ resized,
56
+ desc,
57
+ url,
58
+ alignment
59
+ } = entity.getData();
60
+ const imageWithMeta = {
61
+ image: {
62
+ id,
63
+ name,
64
+ imageFile,
65
+ resized
66
+ },
67
+ desc,
68
+ url
69
+ };
70
+
71
+ const onImageSelectorChange = (params, align) => {
72
+ if (params.length === 0) {
73
+ onEditFinish({});
74
+ } else {
75
+ const imageEntity = params[0];
76
+ onEditFinish({
77
+ entityKey,
78
+ entityData: { ...imageEntity.image,
79
+ desc: imageEntity.desc,
80
+ url: imageEntity.url,
81
+ alignment: align
82
+ }
83
+ });
84
+ }
85
+
86
+ setToShowImageSelector(false);
87
+ };
88
+
89
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(_imageSelector.ImageSelector, {
90
+ onChange: onImageSelectorChange,
91
+ enableCaption: true,
92
+ enableUrl: true,
93
+ enableAlignment: true,
94
+ initialAlign: alignment,
95
+ initialSelected: [imageWithMeta]
96
+ }), /*#__PURE__*/_react.default.createElement(ImageBlockWrapper, null, /*#__PURE__*/_react.default.createElement(ImageBlock, props)), /*#__PURE__*/_react.default.createElement(ImageEditButton, {
97
+ onClick: () => {
98
+ // call `onEditStart` prop as we are trying to update the BGImage entity
99
+ onEditStart(); // open `BGImageInput`
100
+
101
+ setToShowImageSelector(true);
102
+ }
103
+ }, /*#__PURE__*/_react.default.createElement("i", {
104
+ className: "fa-solid fa-pen"
105
+ }), /*#__PURE__*/_react.default.createElement("span", null, "Modify")));
106
+ }