@flozy/editor 1.3.0 → 1.3.2

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 (37) hide show
  1. package/dist/Editor/CommonEditor.js +14 -21
  2. package/dist/Editor/DialogWrapper.js +5 -0
  3. package/dist/Editor/Elements/Accordion/AccordionButton.js +10 -7
  4. package/dist/Editor/Elements/AppHeader/AppHeaderButton.js +7 -4
  5. package/dist/Editor/Elements/Button/ButtonToolIcon.js +7 -4
  6. package/dist/Editor/Elements/Carousel/Carousel.js +6 -2
  7. package/dist/Editor/Elements/Carousel/CarouselButton.js +7 -4
  8. package/dist/Editor/Elements/Color Picker/ColorPicker.js +3 -1
  9. package/dist/Editor/Elements/Embed/Embed.css +2 -2
  10. package/dist/Editor/Elements/Embed/Embed.js +17 -12
  11. package/dist/Editor/Elements/Embed/Image.js +11 -11
  12. package/dist/Editor/Elements/Embed/Video.js +13 -10
  13. package/dist/Editor/Elements/Grid/Grid.js +14 -1
  14. package/dist/Editor/Elements/Grid/GridButton.js +47 -7
  15. package/dist/Editor/Elements/Grid/GridItem.js +16 -26
  16. package/dist/Editor/Elements/Grid/templates/full_grid.png +0 -0
  17. package/dist/Editor/Elements/Grid/templates/index.js +5 -0
  18. package/dist/Editor/Elements/Link/LinkButton.js +12 -8
  19. package/dist/Editor/Elements/NewLine/NewLineButton.js +12 -9
  20. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +7 -4
  21. package/dist/Editor/Elements/Signature/SignatureButton.js +7 -4
  22. package/dist/Editor/Elements/Signature/SignaturePopup.js +2 -4
  23. package/dist/Editor/Elements/Table/Table.js +4 -1
  24. package/dist/Editor/Elements/Table/TableCell.js +17 -9
  25. package/dist/Editor/Elements/Table/TableSelector.js +12 -9
  26. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +3 -1
  27. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +3 -1
  28. package/dist/Editor/Toolbar/Toolbar.js +18 -13
  29. package/dist/Editor/Toolbar/toolbarGroups.js +34 -17
  30. package/dist/Editor/common/Button.js +10 -6
  31. package/dist/Editor/common/ColorPickerButton.js +6 -1
  32. package/dist/Editor/common/Icon.js +1 -1
  33. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +20 -20
  34. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +19 -19
  35. package/dist/Editor/common/Uploader.js +4 -3
  36. package/dist/Editor/plugins/withEmbeds.js +0 -1
  37. package/package.json +1 -1
@@ -16,7 +16,6 @@ import "./Editor.css";
16
16
  import { serialize } from "./utils/serializer";
17
17
  import { getThumbnailImage } from "./helper";
18
18
  import PopupTool from "./Toolbar/PopupTool";
19
- import { Button } from "@mui/material";
20
19
  import { jsx as _jsx } from "react/jsx-runtime";
21
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
22
21
  const PREVIEW_IMAGE_HIDE_CLASS = ["grid-container-toolbar", "grid-item-toolbar", "element-toolbar"];
@@ -57,7 +56,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
57
56
  h: null
58
57
  });
59
58
  const {
60
- defaultBG
59
+ defaultBG,
60
+ needDotsBG,
61
+ footer
61
62
  } = otherProps || {};
62
63
  const editor = useMemo(() => {
63
64
  if (collaborativeEditor) return collaborativeEditor;
@@ -198,12 +199,6 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
198
199
  ...partialState
199
200
  }));
200
201
  };
201
- const handleChangeViewport = (w, h) => () => {
202
- setViewport({
203
- w,
204
- h
205
- });
206
- };
207
202
  const onKeyDown = useCallback(event => {
208
203
  const isMetaKey = event.metaKey && event.keyCode >= 65 && event.keyCode <= 90;
209
204
  const isCtrlKey = event.ctrlKey || isMetaKey;
@@ -224,27 +219,25 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
224
219
  }
225
220
  }, [chars, editor, target, mentions, setMentions]);
226
221
  const Overlay = collaborativeEditor && !isReadOnly ? RemoteCursorOverlay : React.Fragment;
222
+ const dotBg = needDotsBG ? {
223
+ background: "white",
224
+ backgroundImage: "radial-gradient(#CCC 2px, transparent 0)",
225
+ backgroundSize: "40px 40px",
226
+ backgroundPosition: "-19px -19px"
227
+ } : {};
227
228
  return /*#__PURE__*/_jsx(DialogWrapper, {
228
229
  ...props,
229
230
  fullScreen: fullScreen,
230
- children: /*#__PURE__*/_jsxs("div", {
231
+ footer: footer || "",
232
+ children: /*#__PURE__*/_jsx("div", {
231
233
  className: "editor-t-wrapper",
232
234
  style: {
233
235
  display: "flex",
234
236
  flexDirection: "column",
235
237
  padding: "0 8px",
236
- background: "white",
237
- backgroundImage: "radial-gradient(#CCC 2px, transparent 0)",
238
- backgroundSize: "40px 40px",
239
- backgroundPosition: "-19px -19px"
238
+ ...dotBg
240
239
  },
241
- children: [/*#__PURE__*/_jsx(Button, {
242
- onClick: handleChangeViewport(414, 736),
243
- children: "414 x 736"
244
- }), /*#__PURE__*/_jsx(Button, {
245
- onClick: handleChangeViewport(375, 812),
246
- children: " 375 x 812"
247
- }), /*#__PURE__*/_jsxs(Slate, {
240
+ children: /*#__PURE__*/_jsxs(Slate, {
248
241
  editor: editor,
249
242
  initialValue: value,
250
243
  onChange: handleEditorChange,
@@ -287,7 +280,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
287
280
  ...htmlAction,
288
281
  handleCodeToText: handleCodeToText
289
282
  })]
290
- }, id)]
283
+ }, id)
291
284
  })
292
285
  });
293
286
  });
@@ -33,6 +33,11 @@ const DialogWrapper = props => {
33
33
  }), /*#__PURE__*/_jsx(DialogContent, {
34
34
  children: children
35
35
  }), /*#__PURE__*/_jsx(DialogActions, {
36
+ style: {
37
+ justifyContent: "center",
38
+ color: "#64748B",
39
+ fontSize: "13px"
40
+ },
36
41
  children: footer
37
42
  })]
38
43
  }) : children;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IconButton } from "@mui/material";
2
+ import { IconButton, Tooltip } from "@mui/material";
3
3
  import { insertAccordion } from "../../utils/accordion";
4
4
  import { AccordionIcon } from "../../common/iconslist";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -10,13 +10,16 @@ const AccordionButton = props => {
10
10
  const handleInsertAccordion = () => {
11
11
  insertAccordion(editor);
12
12
  };
13
- return /*#__PURE__*/_jsx(IconButton, {
14
- onClick: handleInsertAccordion,
13
+ return /*#__PURE__*/_jsx(Tooltip, {
15
14
  title: "Accordion",
16
- style: {
17
- marginLeft: "0px"
18
- },
19
- children: /*#__PURE__*/_jsx(AccordionIcon, {})
15
+ arrow: true,
16
+ children: /*#__PURE__*/_jsx(IconButton, {
17
+ onClick: handleInsertAccordion,
18
+ style: {
19
+ marginLeft: "0px"
20
+ },
21
+ children: /*#__PURE__*/_jsx(AccordionIcon, {})
22
+ })
20
23
  });
21
24
  };
22
25
  export default AccordionButton;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IconButton } from "@mui/material";
2
+ import { IconButton, Tooltip } from "@mui/material";
3
3
  import { insertAppHeader } from "../../utils/insertAppHeader";
4
4
  import { AppHeader } from "../../common/iconslist";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -10,10 +10,13 @@ const AppHeaderButton = props => {
10
10
  const handleClick = () => {
11
11
  insertAppHeader(editor, {});
12
12
  };
13
- return /*#__PURE__*/_jsx(IconButton, {
13
+ return /*#__PURE__*/_jsx(Tooltip, {
14
14
  title: "App Header",
15
- onClick: handleClick,
16
- children: /*#__PURE__*/_jsx(AppHeader, {})
15
+ arrow: true,
16
+ children: /*#__PURE__*/_jsx(IconButton, {
17
+ onClick: handleClick,
18
+ children: /*#__PURE__*/_jsx(AppHeader, {})
19
+ })
17
20
  });
18
21
  };
19
22
  export default AppHeaderButton;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IconButton } from "@mui/material";
2
+ import { IconButton, Tooltip } from "@mui/material";
3
3
  import { insertButton } from "../../utils/button";
4
4
  import { ButtonIcon } from "../../common/iconslist";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -10,10 +10,13 @@ const ButtonToolIcon = props => {
10
10
  const handleInsertButton = () => {
11
11
  insertButton(editor);
12
12
  };
13
- return /*#__PURE__*/_jsx(IconButton, {
14
- onClick: handleInsertButton,
13
+ return /*#__PURE__*/_jsx(Tooltip, {
15
14
  title: "Button",
16
- children: /*#__PURE__*/_jsx(ButtonIcon, {})
15
+ arrow: true,
16
+ children: /*#__PURE__*/_jsx(IconButton, {
17
+ onClick: handleInsertButton,
18
+ children: /*#__PURE__*/_jsx(ButtonIcon, {})
19
+ })
17
20
  });
18
21
  };
19
22
  export default ButtonToolIcon;
@@ -20,8 +20,12 @@ const Carousel = props => {
20
20
  const {
21
21
  attributes,
22
22
  children,
23
- element
23
+ element,
24
+ customProps
24
25
  } = props;
26
+ const {
27
+ readOnly
28
+ } = customProps;
25
29
  const editor = useSlateStatic();
26
30
  const selected = useSelected();
27
31
  const [edit, setEdit] = useState(false);
@@ -91,7 +95,7 @@ const Carousel = props => {
91
95
  }) : /*#__PURE__*/_jsx(Slider, {
92
96
  ...settings,
93
97
  children: children
94
- }, reload), /*#__PURE__*/_jsx(ToolBar, {})]
98
+ }, reload), !readOnly && /*#__PURE__*/_jsx(ToolBar, {})]
95
99
  });
96
100
  };
97
101
  export default Carousel;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { IconButton } from "@mui/material";
2
+ import { IconButton, Tooltip } from "@mui/material";
3
3
  import { insertCarousel } from "../../utils/carousel";
4
4
  import { Carousal } from "../../common/iconslist";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -10,10 +10,13 @@ const CarouselButton = props => {
10
10
  const handleClick = () => {
11
11
  insertCarousel(editor);
12
12
  };
13
- return /*#__PURE__*/_jsx(IconButton, {
13
+ return /*#__PURE__*/_jsx(Tooltip, {
14
14
  title: "Carousel",
15
- onClick: handleClick,
16
- children: /*#__PURE__*/_jsx(Carousal, {})
15
+ arrow: true,
16
+ children: /*#__PURE__*/_jsx(IconButton, {
17
+ onClick: handleClick,
18
+ children: /*#__PURE__*/_jsx(Carousal, {})
19
+ })
17
20
  });
18
21
  };
19
22
  export default CarouselButton;
@@ -18,7 +18,8 @@ const DEFAULT_COLOR = {
18
18
  const ColorPicker = ({
19
19
  format,
20
20
  editor,
21
- showHex
21
+ showHex,
22
+ title
22
23
  }) => {
23
24
  const [selection, setSelection] = useState();
24
25
  const [hexValue, setHexValue] = useState("");
@@ -81,6 +82,7 @@ const ColorPicker = ({
81
82
  },
82
83
  className: showOptions ? "clicked" : "",
83
84
  onClick: toggleOption,
85
+ title: title,
84
86
  children: logo[format](activeColor)
85
87
  }), showOptions && /*#__PURE__*/_jsxs(_Fragment, {
86
88
  children: [/*#__PURE__*/_jsx("div", {
@@ -9,8 +9,8 @@
9
9
  }
10
10
  .embed button.resize{
11
11
  position: absolute;
12
- bottom: -6px;
13
- right: 0;
12
+ bottom: 2px;
13
+ right: 2px;
14
14
  }
15
15
 
16
16
  .image-text-wrapper {
@@ -1,7 +1,7 @@
1
1
  import React, { useRef, useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { ReactEditor } from "slate-react";
4
- import { Grid, Dialog, DialogTitle, DialogContent, DialogActions, Button, TextField, IconButton, Typography } from "@mui/material";
4
+ import { Grid, Dialog, DialogTitle, DialogContent, DialogActions, Button, TextField, IconButton, Typography, Tooltip } from "@mui/material";
5
5
  import CloseIcon from "@mui/icons-material/Close";
6
6
  import Icon from "../../common/Icon";
7
7
  import { isBlockActive } from "../../utils/SlateUtilityFunctions";
@@ -73,16 +73,20 @@ const Embed = ({
73
73
  };
74
74
  const imageURL = formData?.url === "none" || !formData?.url ? "" : formData?.url;
75
75
  return /*#__PURE__*/_jsxs(_Fragment, {
76
- children: [/*#__PURE__*/_jsx(IconButton, {
77
- className: isBlockActive(editor, format) ? "active" : "",
78
- style: {
79
- border: showInput ? "1px solid lightgray" : "",
80
- borderBottom: "none"
81
- },
82
- format: format,
83
- onClick: onToggle,
84
- children: /*#__PURE__*/_jsx(Icon, {
85
- icon: format
76
+ children: [/*#__PURE__*/_jsx(Tooltip, {
77
+ title: EMBED_LABEL[format],
78
+ arrow: true,
79
+ children: /*#__PURE__*/_jsx(IconButton, {
80
+ className: isBlockActive(editor, format) ? "active" : "",
81
+ style: {
82
+ border: showInput ? "1px solid lightgray" : "",
83
+ borderBottom: "none"
84
+ },
85
+ format: format,
86
+ onClick: onToggle,
87
+ children: /*#__PURE__*/_jsx(Icon, {
88
+ icon: format
89
+ })
86
90
  })
87
91
  }), /*#__PURE__*/_jsx(Dialog, {
88
92
  open: open,
@@ -141,7 +145,8 @@ const Embed = ({
141
145
  key: "url"
142
146
  },
143
147
  customProps: customProps,
144
- onUploaded: onUploaded
148
+ onUploaded: onUploaded,
149
+ disableUpload: format === "video"
145
150
  })]
146
151
  })
147
152
  }), /*#__PURE__*/_jsxs(DialogActions, {
@@ -1,10 +1,11 @@
1
1
  import React, { useEffect, useState } from "react";
2
2
  import { useSlateStatic, useSelected, ReactEditor } from "slate-react";
3
- import { Node, Transforms, Editor, Element, Path } from "slate";
4
- import Icon from "../../common/Icon";
3
+ import { Node, Transforms, Editor } from "slate";
4
+ import AspectRatioIcon from "@mui/icons-material/AspectRatio";
5
5
  import useResize from "../../utils/customHooks/useResize";
6
6
  import { insertImageText } from "../../utils/imageText";
7
7
  import EmbedPopup from "./EmbedPopup";
8
+ import { IconButton } from "@mui/material";
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
9
10
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
11
  const Image = ({
@@ -21,6 +22,9 @@ const Image = ({
21
22
  bgColor,
22
23
  borderColor
23
24
  } = element;
25
+ const {
26
+ readOnly
27
+ } = customProps;
24
28
  const {
25
29
  left,
26
30
  top,
@@ -123,7 +127,7 @@ const Image = ({
123
127
  border: `1px solid ${borderColor}`
124
128
  },
125
129
  ...element.attr,
126
- children: [/*#__PURE__*/_jsx(ToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(EmbedPopup, {
130
+ children: [openSetttings ? /*#__PURE__*/_jsx(EmbedPopup, {
127
131
  element: element,
128
132
  onSave: onSave,
129
133
  onClose: onClose,
@@ -135,22 +139,18 @@ const Image = ({
135
139
  width: size.widthInPercent ? `${size.widthInPercent}%` : `${size.width}px`,
136
140
  height: `${size.height}px`
137
141
  },
138
- children: [/*#__PURE__*/_jsx("img", {
142
+ children: [!readOnly && /*#__PURE__*/_jsx(ToolBar, {}), /*#__PURE__*/_jsx("img", {
139
143
  alt: alt,
140
144
  src: url,
141
145
  onClick: handleImageClick
142
- }), selected && /*#__PURE__*/_jsx("button", {
146
+ }), selected && !readOnly && /*#__PURE__*/_jsx(IconButton, {
143
147
  onPointerDown: onMouseDown,
144
148
  style: {
145
- width: "15px",
146
- height: "15px",
147
149
  opacity: 1,
148
- background: "transparent"
150
+ background: "#FFF"
149
151
  },
150
152
  className: "resize",
151
- children: /*#__PURE__*/_jsx(Icon, {
152
- icon: "resize"
153
- })
153
+ children: /*#__PURE__*/_jsx(AspectRatioIcon, {})
154
154
  })]
155
155
  }), children]
156
156
  });
@@ -1,8 +1,10 @@
1
1
  import React, { useState, useEffect } from "react";
2
2
  import { useSelected, useFocused, useSlateStatic, ReactEditor } from "slate-react";
3
3
  import { Node, Transforms } from "slate";
4
+ import AspectRatioIcon from "@mui/icons-material/AspectRatio";
4
5
  import Icon from "../../common/Icon";
5
6
  import useResize from "../../utils/customHooks/useResize";
7
+ import { IconButton } from "@mui/material";
6
8
  import { jsx as _jsx } from "react/jsx-runtime";
7
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
10
  const Video = ({
@@ -70,22 +72,23 @@ const Video = ({
70
72
  children: /*#__PURE__*/_jsx(Icon, {
71
73
  icon: "videoPlayer"
72
74
  })
73
- }) : /*#__PURE__*/_jsx("iframe", {
75
+ }) : /*#__PURE__*/_jsx("video", {
76
+ style: {
77
+ border: "none",
78
+ width: "100%",
79
+ height: "100%"
80
+ },
74
81
  src: url,
75
- frameBorder: "0",
76
- title: alt
77
- }), selected && /*#__PURE__*/_jsx("button", {
82
+ title: alt,
83
+ controls: true
84
+ }), selected && /*#__PURE__*/_jsx(IconButton, {
78
85
  onPointerDown: onMouseDown,
79
86
  style: {
80
- width: "15px",
81
- height: "15px",
82
87
  opacity: 1,
83
- background: "transparent"
88
+ background: "#FFF"
84
89
  },
85
90
  className: "resize",
86
- children: /*#__PURE__*/_jsx(Icon, {
87
- icon: "resize"
88
- })
91
+ children: /*#__PURE__*/_jsx(AspectRatioIcon, {})
89
92
  })]
90
93
  }), children]
91
94
  });
@@ -12,6 +12,9 @@ const Grid = props => {
12
12
  element,
13
13
  customProps
14
14
  } = props;
15
+ const {
16
+ readOnly
17
+ } = customProps;
15
18
  const [openSetttings, setOpenSettings] = useState(false);
16
19
  const {
17
20
  grid,
@@ -76,6 +79,13 @@ const Grid = props => {
76
79
  const onClose = () => {
77
80
  setOpenSettings(false);
78
81
  };
82
+ const onDelete = () => {
83
+ if (path) {
84
+ Transforms.removeNodes(editor, {
85
+ at: path
86
+ });
87
+ }
88
+ };
79
89
  const GridToolBar = () => {
80
90
  return selected ? /*#__PURE__*/_jsxs("div", {
81
91
  className: "grid-container-toolbar",
@@ -83,6 +93,9 @@ const Grid = props => {
83
93
  children: [/*#__PURE__*/_jsx("button", {
84
94
  onClick: onSettings,
85
95
  children: "Settings"
96
+ }), /*#__PURE__*/_jsx("button", {
97
+ onClick: onDelete,
98
+ children: "Delete"
86
99
  }), /*#__PURE__*/_jsx("button", {
87
100
  onClick: onAddGridItem,
88
101
  children: "+ Add Item"
@@ -103,7 +116,7 @@ const Grid = props => {
103
116
  backgroundImage: backgroundImage ? `url(${backgroundImage})` : "none",
104
117
  border: `1px solid ${borderColor}`
105
118
  },
106
- children: [/*#__PURE__*/_jsx(GridToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(GridPopup, {
119
+ children: [!readOnly && /*#__PURE__*/_jsx(GridToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(GridPopup, {
107
120
  element: element,
108
121
  onSave: onSave,
109
122
  onClose: onClose,
@@ -1,19 +1,59 @@
1
- import React from "react";
2
- import { IconButton } from "@mui/material";
1
+ import React, { useState } from "react";
2
+ import { Dialog, DialogContent, DialogTitle, IconButton, Tooltip } from "@mui/material";
3
3
  import { insertGrid } from "../../utils/grid";
4
4
  import { GridIcon } from "../../common/iconslist";
5
+ import { ImageList, ImageListItem } from "@mui/material";
6
+ import GRID_TEMPLATES from "./templates";
5
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ import { jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
10
  const GridButton = props => {
7
11
  const {
8
12
  editor
9
13
  } = props;
10
- const handleInsertGrid = () => {
14
+ const [open, setOpen] = useState(false);
15
+ const onButtonClick = () => {
16
+ setOpen(true);
17
+ };
18
+ const handleInsertGrid = () => () => {
11
19
  insertGrid(editor);
20
+ handleClose();
21
+ };
22
+ const handleClose = () => {
23
+ setOpen(false);
12
24
  };
13
- return /*#__PURE__*/_jsx(IconButton, {
14
- onClick: handleInsertGrid,
15
- title: "Layout",
16
- children: /*#__PURE__*/_jsx(GridIcon, {})
25
+ return /*#__PURE__*/_jsxs(_Fragment, {
26
+ children: [/*#__PURE__*/_jsx(Tooltip, {
27
+ title: "Grid",
28
+ arrow: true,
29
+ children: /*#__PURE__*/_jsx(IconButton, {
30
+ onClick: onButtonClick,
31
+ children: /*#__PURE__*/_jsx(GridIcon, {})
32
+ })
33
+ }), /*#__PURE__*/_jsxs(Dialog, {
34
+ open: open,
35
+ onClose: handleClose,
36
+ fullWidth: true,
37
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
38
+ children: "Templates"
39
+ }), /*#__PURE__*/_jsx(DialogContent, {
40
+ children: /*#__PURE__*/_jsx(ImageList, {
41
+ variant: "quilted",
42
+ cols: 1,
43
+ children: GRID_TEMPLATES.map(item => {
44
+ return /*#__PURE__*/_jsx(ImageListItem, {
45
+ onClick: handleInsertGrid(item),
46
+ children: /*#__PURE__*/_jsx("img", {
47
+ src: item.img,
48
+ alt: item.title,
49
+ width: "auto",
50
+ height: "250px"
51
+ })
52
+ }, item.img);
53
+ })
54
+ })
55
+ })]
56
+ })]
17
57
  });
18
58
  };
19
59
  export default GridButton;
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from "react";
2
- import { Transforms, Element } from "slate";
2
+ import { Transforms } from "slate";
3
3
  import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
4
4
  import GridItemPopup from "./GridItemPopup";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -8,8 +8,12 @@ const GridItem = props => {
8
8
  const {
9
9
  attributes,
10
10
  children,
11
- element
11
+ element,
12
+ customProps
12
13
  } = props;
14
+ const {
15
+ readOnly
16
+ } = customProps;
13
17
  const [openSetttings, setOpenSettings] = useState(false);
14
18
  const {
15
19
  grid,
@@ -31,24 +35,6 @@ const GridItem = props => {
31
35
  const selected = useSelected();
32
36
  const itemWidth = (grid || 6) / 12 * 100;
33
37
  const path = ReactEditor.findPath(editor, element);
34
- const onItemSizeDecrease = () => {
35
- Transforms.setNodes(editor, {
36
- grid: grid <= 1 ? 1 : grid - 1
37
- }, {
38
- match: node => {
39
- return Element.matches(node, element);
40
- }
41
- });
42
- };
43
- const onItemSizeIncrease = () => {
44
- Transforms.setNodes(editor, {
45
- grid: grid >= 12 ? 12 : grid + 1
46
- }, {
47
- match: node => {
48
- return Element.matches(node, element);
49
- }
50
- });
51
- };
52
38
  const GridItemToolbar = () => {
53
39
  return selected ? /*#__PURE__*/_jsxs("div", {
54
40
  contentEditable: false,
@@ -60,11 +46,8 @@ const GridItem = props => {
60
46
  onClick: onSettings,
61
47
  children: "Settings"
62
48
  }), /*#__PURE__*/_jsx("button", {
63
- onClick: onItemSizeDecrease,
64
- children: "-"
65
- }), /*#__PURE__*/_jsx("button", {
66
- onClick: onItemSizeIncrease,
67
- children: "+"
49
+ onClick: onDelete,
50
+ children: "Delete"
68
51
  })]
69
52
  }) : null;
70
53
  };
@@ -86,6 +69,13 @@ const GridItem = props => {
86
69
  const onClose = () => {
87
70
  setOpenSettings(false);
88
71
  };
72
+ const onDelete = () => {
73
+ if (path) {
74
+ Transforms.removeNodes(editor, {
75
+ at: path
76
+ });
77
+ }
78
+ };
89
79
  return /*#__PURE__*/_jsxs("div", {
90
80
  className: `grid-item xs-${grid}`,
91
81
  ...attributes,
@@ -102,7 +92,7 @@ const GridItem = props => {
102
92
  width: `${itemWidth}%`,
103
93
  margin: "0px"
104
94
  },
105
- children: [children, /*#__PURE__*/_jsx(GridItemToolbar, {}), openSetttings ? /*#__PURE__*/_jsx(GridItemPopup, {
95
+ children: [children, !readOnly && /*#__PURE__*/_jsx(GridItemToolbar, {}), openSetttings ? /*#__PURE__*/_jsx(GridItemPopup, {
106
96
  element: element,
107
97
  onSave: onSave,
108
98
  onClose: onClose
@@ -0,0 +1,5 @@
1
+ const GRID_TEMPLATES = [{
2
+ title: "Image Banner with Text",
3
+ img: require("./full_grid.png")
4
+ }];
5
+ export default GRID_TEMPLATES;
@@ -1,6 +1,6 @@
1
1
  import { useRef, useState } from "react";
2
2
  import { Transforms } from "slate";
3
- import { Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, Grid, TextField, Button, IconButton, Typography, Checkbox
3
+ import { Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, Grid, TextField, Button, IconButton, Typography, Checkbox, Tooltip
4
4
  // styled,
5
5
  } from "@mui/material";
6
6
  // import { styled } from "@mui/material/styles";
@@ -49,13 +49,17 @@ const LinkButton = props => {
49
49
  return /*#__PURE__*/_jsxs("div", {
50
50
  ref: linkInputRef,
51
51
  className: "popup-wrapper1",
52
- children: [/*#__PURE__*/_jsx(IconButton, {
53
- className: showInput ? "clicked" : "",
54
- active: isBlockActive(editor, "link") ? "active" : "",
55
- format: "link",
56
- onClick: toggleLink,
57
- children: /*#__PURE__*/_jsx(Icon, {
58
- icon: "link"
52
+ children: [/*#__PURE__*/_jsx(Tooltip, {
53
+ title: "Link",
54
+ arrow: true,
55
+ children: /*#__PURE__*/_jsx(IconButton, {
56
+ className: showInput ? "clicked" : "",
57
+ active: isBlockActive(editor, "link") ? "active" : "",
58
+ format: "link",
59
+ onClick: toggleLink,
60
+ children: /*#__PURE__*/_jsx(Icon, {
61
+ icon: "link"
62
+ })
59
63
  })
60
64
  }), showInput && /*#__PURE__*/_jsx(Dialog, {
61
65
  open: true,