@mirrormedia/lilith-draft-editor 1.1.0-alpha.19 → 1.1.0-alpha.20

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.
@@ -37,9 +37,9 @@ function ImageButton(props) {
37
37
  }
38
38
 
39
39
  const contentState = editorState.getCurrentContent();
40
- const contentStateWithEntity = contentState.createEntity('image', 'IMMUTABLE', { ...(selected === null || selected === void 0 ? void 0 : selected.image),
41
- desc: selected === null || selected === void 0 ? void 0 : selected.desc,
42
- url: selected === null || selected === void 0 ? void 0 : selected.url,
40
+ const contentStateWithEntity = contentState.createEntity('image', 'IMMUTABLE', { ...selected.image,
41
+ desc: selected.desc,
42
+ url: selected.url,
43
43
  alignment: align
44
44
  });
45
45
  const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
@@ -240,6 +240,16 @@ const imagesQuery = (0, _apollo.gql)`
240
240
  `;
241
241
 
242
242
  function ImageSelector(props) {
243
+ const {
244
+ enableMultiSelect = false,
245
+ enableCaption = false,
246
+ enableUrl = false,
247
+ enableAlignment = false,
248
+ enableDelay = false,
249
+ onChange,
250
+ initialSelected = [],
251
+ initialAlign
252
+ } = props;
243
253
  const [queryImages, {
244
254
  loading,
245
255
  error,
@@ -253,9 +263,9 @@ function ImageSelector(props) {
253
263
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
254
264
 
255
265
  const [searchText, setSearchText] = (0, _react.useState)('');
256
- const [selected, setSelected] = (0, _react.useState)([]);
266
+ const [selected, setSelected] = (0, _react.useState)(initialSelected);
257
267
  const [delay, setDelay] = (0, _react.useState)('5');
258
- const [align, setAlign] = (0, _react.useState)(undefined);
268
+ const [align, setAlign] = (0, _react.useState)(initialAlign);
259
269
  const contentWrapperRef = (0, _react.useRef)();
260
270
  const pageSize = 6;
261
271
  const options = [{
@@ -271,14 +281,6 @@ function ImageSelector(props) {
271
281
  label: 'right',
272
282
  isDisabled: false
273
283
  }];
274
- const {
275
- enableMultiSelect = false,
276
- enableCaption = false,
277
- enableUrl = false,
278
- enableAlignment = false,
279
- enableDelay = false,
280
- onChange
281
- } = props;
282
284
 
283
285
  const onSave = () => {
284
286
  let adjustedDelay = +delay;
@@ -0,0 +1,103 @@
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 _mirrormedia = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/mirrormedia"));
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
+ } = _mirrormedia.default.blockRenderers;
25
+ const StyledImageBlock = (0, _styledComponents.default)(ImageBlock)``;
26
+ const ImageEditButton = _styledComponents.default.span`
27
+ cursor: pointer;
28
+ background-color: white;
29
+ padding: 6px;
30
+ border-radius: 6px;
31
+ `;
32
+
33
+ function ImageEditorBlock(props) {
34
+ const [toShowImageSelector, setToShowImageSelector] = (0, _react.useState)(false);
35
+ const {
36
+ block,
37
+ blockProps,
38
+ contentState
39
+ } = props;
40
+ const {
41
+ onEditStart,
42
+ onEditFinish
43
+ } = blockProps;
44
+ const entityKey = block.getEntityAt(0);
45
+ const entity = contentState.getEntity(entityKey);
46
+ const {
47
+ id,
48
+ name,
49
+ imageFile,
50
+ resized,
51
+ resizedWebp,
52
+ desc,
53
+ url,
54
+ alignment
55
+ } = entity.getData();
56
+ const imageWithMeta = {
57
+ image: {
58
+ id,
59
+ name,
60
+ imageFile,
61
+ resized,
62
+ resizedWebp
63
+ },
64
+ desc,
65
+ url
66
+ };
67
+
68
+ const onImageSelectorChange = (params, align) => {
69
+ if (params.length === 0) {
70
+ onEditFinish({});
71
+ } else {
72
+ const imageEntity = params[0];
73
+ onEditFinish({
74
+ entityKey,
75
+ entityData: { ...imageEntity.image,
76
+ desc: imageEntity.desc,
77
+ url: imageEntity.url,
78
+ alignment: align
79
+ }
80
+ });
81
+ }
82
+
83
+ setToShowImageSelector(false);
84
+ };
85
+
86
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(_imageSelector.ImageSelector, {
87
+ onChange: onImageSelectorChange,
88
+ enableCaption: true,
89
+ enableUrl: true,
90
+ enableAlignment: true,
91
+ initialAlign: alignment,
92
+ initialSelected: [imageWithMeta]
93
+ }), /*#__PURE__*/_react.default.createElement(StyledImageBlock, props), /*#__PURE__*/_react.default.createElement(ImageEditButton, {
94
+ onClick: () => {
95
+ // call `onEditStart` prop as we are trying to update the BGImage entity
96
+ onEditStart(); // open `BGImageInput`
97
+
98
+ setToShowImageSelector(true);
99
+ }
100
+ }, /*#__PURE__*/_react.default.createElement("i", {
101
+ className: "fa-solid fa-pen"
102
+ }), /*#__PURE__*/_react.default.createElement("span", null, "Modify")));
103
+ }
@@ -21,13 +21,14 @@ var _embeddedCodeBlock = require("./block-renderer/embedded-code-block");
21
21
 
22
22
  var _slideshowBlock = require("./block-renderer/slideshow-block");
23
23
 
24
+ var _imageBlock = require("./block-renderer/image-block");
25
+
24
26
  var _mirrormedia = _interopRequireDefault(require("@mirrormedia/lilith-draft-renderer/lib/website/mirrormedia"));
25
27
 
26
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
29
 
28
30
  const {
29
31
  MediaBlock,
30
- ImageBlock,
31
32
  DividerBlock,
32
33
  RelatedPostBlock,
33
34
  VideoBlock,
@@ -49,7 +50,7 @@ const AtomicBlock = props => {
49
50
 
50
51
  case 'image':
51
52
  {
52
- return ImageBlock(entity);
53
+ return (0, _imageBlock.ImageEditorBlock)(props);
53
54
  }
54
55
 
55
56
  case 'slideshow':
@@ -250,6 +250,16 @@ function DelayInput(props) {
250
250
  }
251
251
 
252
252
  function ImageSelector(props) {
253
+ const {
254
+ enableMultiSelect = false,
255
+ enableCaption = false,
256
+ enableUrl = false,
257
+ enableAlignment = false,
258
+ enableDelay = false,
259
+ onChange,
260
+ initialSelected = [],
261
+ initialAlign
262
+ } = props;
253
263
  const [queryImages, {
254
264
  loading,
255
265
  error,
@@ -263,9 +273,9 @@ function ImageSelector(props) {
263
273
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
264
274
 
265
275
  const [searchText, setSearchText] = (0, _react.useState)('');
266
- const [selected, setSelected] = (0, _react.useState)([]);
276
+ const [selected, setSelected] = (0, _react.useState)(initialSelected);
267
277
  const [delay, setDelay] = (0, _react.useState)('5');
268
- const [align, setAlign] = (0, _react.useState)(undefined);
278
+ const [align, setAlign] = (0, _react.useState)(initialAlign);
269
279
  const contentWrapperRef = (0, _react.useRef)();
270
280
  const pageSize = 6;
271
281
  const options = [{
@@ -281,14 +291,6 @@ function ImageSelector(props) {
281
291
  label: 'right',
282
292
  isDisabled: false
283
293
  }];
284
- const {
285
- enableMultiSelect = false,
286
- enableCaption = false,
287
- enableUrl = false,
288
- enableAlignment = false,
289
- enableDelay = false,
290
- onChange
291
- } = props;
292
294
 
293
295
  const onSave = () => {
294
296
  let adjustedDelay = +delay;
@@ -0,0 +1,101 @@
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 StyledImageBlock = (0, _styledComponents.default)(ImageBlock)``;
26
+ const ImageEditButton = _styledComponents.default.span`
27
+ cursor: pointer;
28
+ background-color: white;
29
+ padding: 6px;
30
+ border-radius: 6px;
31
+ `;
32
+
33
+ function ImageEditorBlock(props) {
34
+ const [toShowImageSelector, setToShowImageSelector] = (0, _react.useState)(false);
35
+ const {
36
+ block,
37
+ blockProps,
38
+ contentState
39
+ } = props;
40
+ const {
41
+ onEditStart,
42
+ onEditFinish
43
+ } = blockProps;
44
+ const entityKey = block.getEntityAt(0);
45
+ const entity = contentState.getEntity(entityKey);
46
+ const {
47
+ id,
48
+ name,
49
+ imageFile,
50
+ resized,
51
+ desc,
52
+ url,
53
+ alignment
54
+ } = entity.getData();
55
+ const imageWithMeta = {
56
+ image: {
57
+ id,
58
+ name,
59
+ imageFile,
60
+ resized
61
+ },
62
+ desc,
63
+ url
64
+ };
65
+
66
+ const onImageSelectorChange = (params, align) => {
67
+ if (params.length === 0) {
68
+ onEditFinish({});
69
+ } else {
70
+ const imageEntity = params[0];
71
+ onEditFinish({
72
+ entityKey,
73
+ entityData: { ...imageEntity.image,
74
+ desc: imageEntity.desc,
75
+ url: imageEntity.url,
76
+ alignment: align
77
+ }
78
+ });
79
+ }
80
+
81
+ setToShowImageSelector(false);
82
+ };
83
+
84
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(_imageSelector.ImageSelector, {
85
+ onChange: onImageSelectorChange,
86
+ enableCaption: true,
87
+ enableUrl: true,
88
+ enableAlignment: true,
89
+ initialAlign: alignment,
90
+ initialSelected: [imageWithMeta]
91
+ }), /*#__PURE__*/_react.default.createElement(StyledImageBlock, props), /*#__PURE__*/_react.default.createElement(ImageEditButton, {
92
+ onClick: () => {
93
+ // call `onEditStart` prop as we are trying to update the BGImage entity
94
+ onEditStart(); // open `BGImageInput`
95
+
96
+ setToShowImageSelector(true);
97
+ }
98
+ }, /*#__PURE__*/_react.default.createElement("i", {
99
+ className: "fa-solid fa-pen"
100
+ }), /*#__PURE__*/_react.default.createElement("span", null, "Modify")));
101
+ }
@@ -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':
@@ -242,6 +242,16 @@ function DelayInput(props) {
242
242
  }
243
243
 
244
244
  function ImageSelector(props) {
245
+ const {
246
+ enableMultiSelect = false,
247
+ enableCaption = false,
248
+ enableUrl = false,
249
+ enableAlignment = false,
250
+ enableDelay = false,
251
+ onChange,
252
+ initialSelected = [],
253
+ initialAlign
254
+ } = props;
245
255
  const [queryImages, {
246
256
  loading,
247
257
  error,
@@ -255,9 +265,9 @@ function ImageSelector(props) {
255
265
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
256
266
 
257
267
  const [searchText, setSearchText] = (0, _react.useState)('');
258
- const [selected, setSelected] = (0, _react.useState)([]);
268
+ const [selected, setSelected] = (0, _react.useState)(initialSelected);
259
269
  const [delay, setDelay] = (0, _react.useState)('5');
260
- const [align, setAlign] = (0, _react.useState)(undefined);
270
+ const [align, setAlign] = (0, _react.useState)(initialAlign);
261
271
  const contentWrapperRef = (0, _react.useRef)();
262
272
  const pageSize = 6;
263
273
  const options = [{
@@ -273,14 +283,6 @@ function ImageSelector(props) {
273
283
  label: 'right',
274
284
  isDisabled: false
275
285
  }];
276
- const {
277
- enableMultiSelect = false,
278
- enableCaption = false,
279
- enableUrl = false,
280
- enableAlignment = false,
281
- enableDelay = false,
282
- onChange
283
- } = props;
284
286
 
285
287
  const onSave = () => {
286
288
  let adjustedDelay = +delay;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirrormedia/lilith-draft-editor",
3
- "version": "1.1.0-alpha.19",
3
+ "version": "1.1.0-alpha.20",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -23,7 +23,7 @@
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
25
  "draft-js": "^0.11.7",
26
- "@mirrormedia/lilith-draft-renderer": "1.3.0-alpha.2"
26
+ "@mirrormedia/lilith-draft-renderer": "1.3.0-alpha.3"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "react": "18.2.0",