@mirrormedia/lilith-draft-editor 1.1.0-alpha.9 → 1.3.0

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 (31) hide show
  1. package/lib/draft-js/buttons/audio.js +3 -2
  2. package/lib/draft-js/buttons/image.js +3 -3
  3. package/lib/draft-js/buttons/link.js +49 -22
  4. package/lib/draft-js/buttons/selector/audio-selector.js +5 -0
  5. package/lib/draft-js/buttons/selector/image-selector.js +14 -10
  6. package/lib/draft-js/buttons/video.js +3 -2
  7. package/lib/draft-js/buttons/youtube.js +147 -0
  8. package/lib/draft-js/draft-converter/atomic-block-processor.js +15 -34
  9. package/lib/draft-js/draft-converter/entities.js +6 -0
  10. package/lib/draft-js/util.js +32 -0
  11. package/lib/website/mirrormedia/block-renderer/embedded-code-block.js +3 -0
  12. package/lib/website/mirrormedia/block-renderer/image-block.js +108 -0
  13. package/lib/website/mirrormedia/block-renderer/slideshow-block.js +85 -6
  14. package/lib/website/mirrormedia/block-renderer-fn.js +24 -5
  15. package/lib/website/mirrormedia/draft-editor.js +26 -2
  16. package/lib/website/mirrormedia/entity-decorator.js +8 -1
  17. package/lib/website/mirrormedia/selector/audio-selector.js +4 -3
  18. package/lib/website/mirrormedia/selector/image-selector.js +27 -13
  19. package/lib/website/mirrormedia/selector/post-selector.js +1 -0
  20. package/lib/website/mirrormedia/selector/video-selector.js +4 -3
  21. package/lib/website/mirrormedia/shared-style/index.js +17 -0
  22. package/lib/website/readr/block-renderer/background-image-block.js +53 -5
  23. package/lib/website/readr/block-renderer/background-video-block.js +63 -5
  24. package/lib/website/readr/block-renderer/image-block.js +106 -0
  25. package/lib/website/readr/block-renderer-fn.js +3 -2
  26. package/lib/website/readr/selector/audio-selector.js +1 -0
  27. package/lib/website/readr/selector/image-selector.js +13 -10
  28. package/lib/website/readr/selector/post-selector.js +3 -9
  29. package/lib/website/readr/selector/video-selector.js +1 -0
  30. package/lib/website/readr/theme/index.js +11 -0
  31. package/package.json +8 -8
@@ -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
+ }
@@ -17,6 +17,8 @@ var _backgroundVideoBlock = require("./block-renderer/background-video-block");
17
17
 
18
18
  var _sideIndexBlock = require("./block-renderer/side-index-block");
19
19
 
20
+ var _imageBlock = require("./block-renderer/image-block");
21
+
20
22
  var _readr = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/readr"));
21
23
 
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -24,7 +26,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
24
26
  const {
25
27
  EmbeddedCodeBlock,
26
28
  MediaBlock,
27
- ImageBlock,
28
29
  SlideshowBlock,
29
30
  SlideshowBlockV2,
30
31
  DividerBlock,
@@ -47,7 +48,7 @@ const AtomicBlock = props => {
47
48
 
48
49
  case 'image':
49
50
  {
50
- return ImageBlock(entity);
51
+ return (0, _imageBlock.ImageEditorBlock)(props);
51
52
  }
52
53
 
53
54
  case 'slideshow':
@@ -145,6 +145,7 @@ const AudiosQuery = (0, _apollo.gql)`
145
145
  audioFilesCount(where: { name: { contains: $searchText } })
146
146
  audioFiles(
147
147
  where: { name: { contains: $searchText } }
148
+ orderBy: { id: desc }
148
149
  take: $take
149
150
  skip: $skip
150
151
  ) {
@@ -34,6 +34,7 @@ const imagesQuery = (0, _apollo.gql)`
34
34
  photosCount(where: { name: { contains: $searchText } })
35
35
  photos(
36
36
  where: { name: { contains: $searchText } }
37
+ orderBy: { id: desc }
37
38
  take: $take
38
39
  skip: $skip
39
40
  ) {
@@ -242,6 +243,16 @@ function DelayInput(props) {
242
243
  }
243
244
 
244
245
  function ImageSelector(props) {
246
+ const {
247
+ enableMultiSelect = false,
248
+ enableCaption = false,
249
+ enableUrl = false,
250
+ enableAlignment = false,
251
+ enableDelay = false,
252
+ onChange,
253
+ initialSelected = [],
254
+ initialAlign
255
+ } = props;
245
256
  const [queryImages, {
246
257
  loading,
247
258
  error,
@@ -255,9 +266,9 @@ function ImageSelector(props) {
255
266
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
256
267
 
257
268
  const [searchText, setSearchText] = (0, _react.useState)('');
258
- const [selected, setSelected] = (0, _react.useState)([]);
269
+ const [selected, setSelected] = (0, _react.useState)(initialSelected);
259
270
  const [delay, setDelay] = (0, _react.useState)('5');
260
- const [align, setAlign] = (0, _react.useState)(undefined);
271
+ const [align, setAlign] = (0, _react.useState)(initialAlign);
261
272
  const contentWrapperRef = (0, _react.useRef)();
262
273
  const pageSize = 6;
263
274
  const options = [{
@@ -273,14 +284,6 @@ function ImageSelector(props) {
273
284
  label: 'right',
274
285
  isDisabled: false
275
286
  }];
276
- const {
277
- enableMultiSelect = false,
278
- enableCaption = false,
279
- enableUrl = false,
280
- enableAlignment = false,
281
- enableDelay = false,
282
- onChange
283
- } = props;
284
287
 
285
288
  const onSave = () => {
286
289
  let adjustedDelay = +delay;
@@ -28,6 +28,7 @@ const postsQuery = (0, _apollo.gql)`
28
28
  postsCount(where: { name: { contains: $searchText } })
29
29
  posts(
30
30
  where: { name: { contains: $searchText } }
31
+ orderBy: { id: desc }
31
32
  take: $take
32
33
  skip: $skip
33
34
  ) {
@@ -206,8 +207,7 @@ function PostSelector(props) {
206
207
  const {
207
208
  onChange,
208
209
  enableMultiSelect = false,
209
- minSelectCount = 1,
210
- maxSelectCount = 3
210
+ minSelectCount = 1
211
211
  } = props;
212
212
 
213
213
  const onSave = () => {
@@ -242,15 +242,9 @@ function PostSelector(props) {
242
242
 
243
243
 
244
244
  if (enableMultiSelect) {
245
- let newSelected = selected.concat([{
245
+ return selected.concat([{
246
246
  post: postEntity
247
247
  }]);
248
-
249
- if (maxSelectCount && newSelected.length >= maxSelectCount) {
250
- newSelected = newSelected.slice(-maxSelectCount);
251
- }
252
-
253
- return newSelected;
254
248
  } // single select
255
249
 
256
250
 
@@ -28,6 +28,7 @@ const videosQuery = (0, _apollo.gql)`
28
28
  videosCount(where: { name: { contains: $searchText } })
29
29
  videos(
30
30
  where: { name: { contains: $searchText } }
31
+ orderBy: { id: desc }
31
32
  take: $take
32
33
  skip: $skip
33
34
  ) {
@@ -21,6 +21,17 @@ const theme = {
21
21
  lg: `@media (min-width: ${mediaSize.lg}px)`,
22
22
  xl: `@media (min-width: ${mediaSize.xl}px)`,
23
23
  xxl: `@media (min-width: ${mediaSize.xxl}px)`
24
+ },
25
+ fontSize: {
26
+ xs: 'font-size: 14px;',
27
+ sm: 'font-size: 16px;',
28
+ md: 'font-size: 18px;',
29
+ lg: 'font-size: 24px;',
30
+ xl: 'font-size: 28px;'
31
+ },
32
+ margin: {
33
+ default: 'margin: 32px auto;',
34
+ narrow: 'margin: 16px auto;'
24
35
  }
25
36
  };
26
37
  exports.theme = theme;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirrormedia/lilith-draft-editor",
3
- "version": "1.1.0-alpha.9",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -23,16 +23,16 @@
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
25
  "draft-js": "^0.11.7",
26
- "@mirrormedia/lilith-draft-renderer": "1.1.0-alpha.17"
26
+ "@mirrormedia/lilith-draft-renderer": "1.3.0-alpha.26"
27
27
  },
28
28
  "peerDependencies": {
29
- "react": "18.1.0",
30
- "react-dom": "18.1.0",
29
+ "react": "18.2.0",
30
+ "react-dom": "18.2.0",
31
31
  "styled-components": "5.3.5",
32
- "@keystone-6/core": "1.1.1",
33
- "@keystone-ui/button": "^6.0.0",
34
- "@keystone-ui/fields": "^6.0.0",
35
- "@keystone-ui/modals": "^5.0.0"
32
+ "@keystone-6/core": "5.2.0",
33
+ "@keystone-ui/button": "^7.0.2",
34
+ "@keystone-ui/fields": "^7.2.0",
35
+ "@keystone-ui/modals": "^6.0.3"
36
36
  },
37
37
  "files": [
38
38
  "lib"