@flozy/editor 1.9.9 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. package/dist/Editor/CommonEditor.js +2 -0
  2. package/dist/Editor/DialogWrapper.js +7 -2
  3. package/dist/Editor/Editor.css +1 -1
  4. package/dist/Editor/Elements/Accordion/Accordion.js +12 -4
  5. package/dist/Editor/Elements/Accordion/AccordionSummary.js +3 -1
  6. package/dist/Editor/Elements/Button/EditorButton.js +13 -12
  7. package/dist/Editor/Elements/ChipText/ChipText.js +5 -9
  8. package/dist/Editor/Elements/Embed/Image.js +15 -13
  9. package/dist/Editor/Elements/Embed/Video.js +14 -13
  10. package/dist/Editor/Elements/Form/Form.js +12 -14
  11. package/dist/Editor/Elements/Form/FormElements/FormEmail.js +4 -8
  12. package/dist/Editor/Elements/Form/FormElements/FormText.js +4 -8
  13. package/dist/Editor/Elements/Form/FormElements/FormTextArea.js +4 -8
  14. package/dist/Editor/Elements/Grid/Grid.js +14 -12
  15. package/dist/Editor/Elements/Grid/GridItem.js +12 -11
  16. package/dist/Editor/Elements/InlineIcon/InlineIcon.js +8 -9
  17. package/dist/Editor/Elements/Table/Table.js +4 -2
  18. package/dist/Editor/Elements/Table/TableCell.js +3 -1
  19. package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -1
  20. package/dist/Editor/Styles/EditorStyles.js +16 -0
  21. package/dist/Editor/common/Section/index.js +7 -9
  22. package/dist/Editor/common/StyleBuilder/buttonStyle.js +5 -0
  23. package/dist/Editor/common/StyleBuilder/embedImageStyle.js +5 -0
  24. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +5 -0
  25. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +1 -1
  26. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +13 -4
  27. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +5 -0
  28. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -0
  29. package/dist/Editor/commonStyle.js +5 -0
  30. package/dist/Editor/helper/theme.js +3 -0
  31. package/dist/Editor/hooks/useMouseMove.js +17 -1
  32. package/package.json +1 -1
@@ -338,7 +338,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
338
338
  };
339
339
  return /*#__PURE__*/_jsx(EditorProvider, {
340
340
  theme: theme,
341
+ editor: editor,
341
342
  children: /*#__PURE__*/_jsx(DialogWrapper, {
343
+ classes: classes,
342
344
  ...props,
343
345
  fullScreen: fullScreen,
344
346
  footer: footer || "",
@@ -9,7 +9,8 @@ const DialogWrapper = props => {
9
9
  const {
10
10
  fullScreen,
11
11
  onClose,
12
- children
12
+ children,
13
+ classes
13
14
  } = props;
14
15
  return fullScreen ? /*#__PURE__*/_jsxs(Dialog, {
15
16
  className: `dialogComp`,
@@ -19,6 +20,7 @@ const DialogWrapper = props => {
19
20
  style: {
20
21
  zIndex: 1000
21
22
  },
23
+ sx: classes.fullScreenWrapper,
22
24
  children: [/*#__PURE__*/_jsx(DialogTitle, {
23
25
  style: {
24
26
  padding: "6px 8px"
@@ -31,13 +33,16 @@ const DialogWrapper = props => {
31
33
  },
32
34
  children: /*#__PURE__*/_jsx(IconButton, {
33
35
  onClick: onClose,
36
+ style: {
37
+ background: "rgba(255,255,255,0.5)"
38
+ },
34
39
  children: /*#__PURE__*/_jsx(CloseIcon, {})
35
40
  })
36
41
  })
37
42
  })
38
43
  }), /*#__PURE__*/_jsx(DialogContent, {
39
44
  style: {
40
- padding: "0px"
45
+ paddingTop: "12px"
41
46
  },
42
47
  children: children
43
48
  })]
@@ -181,7 +181,7 @@ blockquote {
181
181
 
182
182
  .no-border-button button,
183
183
  .no-border-button button:hover {
184
- border: none
184
+ border: none;
185
185
  }
186
186
 
187
187
  .grid-item {
@@ -2,10 +2,11 @@ import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
4
4
  import AccordionBtnPopup from "./AccordionBtnPopup";
5
- import { IconButton, Tooltip } from "@mui/material";
5
+ import { IconButton, Tooltip, Box } from "@mui/material";
6
6
  import DeleteIcon from "@mui/icons-material/Delete";
7
7
  import { GridSettingsIcon } from "../../common/iconslist";
8
8
  import Icon from "../../common/Icon";
9
+ import { useEditorSelection } from "../../hooks/useMouseMove";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
11
12
  const Accordion = props => {
@@ -21,6 +22,7 @@ const Accordion = props => {
21
22
  const [toggle, setToggle] = useState(false);
22
23
  const [openSetttings, setOpenSettings] = useState(false);
23
24
  const editor = useSlateStatic();
25
+ const [showTool] = useEditorSelection(editor);
24
26
  const selected = useSelected();
25
27
  const path = ReactEditor.findPath(editor, element);
26
28
  const {
@@ -31,7 +33,7 @@ const Accordion = props => {
31
33
  setToggle(!toggle);
32
34
  };
33
35
  const ToolBar = () => {
34
- return selected ? /*#__PURE__*/_jsxs("div", {
36
+ return selected && !showTool ? /*#__PURE__*/_jsxs("div", {
35
37
  className: "element-toolbar hr",
36
38
  contentEditable: false,
37
39
  style: {
@@ -94,13 +96,19 @@ const Accordion = props => {
94
96
  backgroundColor: bgColor
95
97
  },
96
98
  onClick: onToggle,
97
- children: [/*#__PURE__*/_jsx(IconButton, {
99
+ children: [/*#__PURE__*/_jsx(Box, {
100
+ role: "button",
98
101
  className: "accordion-summary-collapse-btn",
99
102
  contentEditable: false,
100
103
  sx: {
104
+ display: "flex",
105
+ alignItems: "center",
106
+ justifyContent: "center",
107
+ userSelect: "none",
101
108
  "& svg": {
102
109
  fill: textColor
103
- }
110
+ },
111
+ cursor: "pointer"
104
112
  },
105
113
  children: !toggle ? /*#__PURE__*/_jsx(Icon, {
106
114
  icon: "accordionArrow"
@@ -4,6 +4,7 @@ import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
4
4
  import AccordionTitlePopup from "./AccordionTitlePopup";
5
5
  import { IconButton, Tooltip } from "@mui/material";
6
6
  import { GridSettingsIcon } from "../../common/iconslist";
7
+ import { useEditorSelection } from "../../hooks/useMouseMove";
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
8
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
9
10
  const AccordionSummary = props => {
@@ -18,6 +19,7 @@ const AccordionSummary = props => {
18
19
  } = customProps;
19
20
  const [openSetttings, setOpenSettings] = useState(false);
20
21
  const editor = useSlateStatic();
22
+ const [showTool] = useEditorSelection(editor);
21
23
  const selected = useSelected();
22
24
  const path = ReactEditor.findPath(editor, element);
23
25
  const {
@@ -26,7 +28,7 @@ const AccordionSummary = props => {
26
28
  borderColor
27
29
  } = element;
28
30
  const ToolBar = () => {
29
- return selected ? /*#__PURE__*/_jsx("div", {
31
+ return selected && !showTool ? /*#__PURE__*/_jsx("div", {
30
32
  className: "element-toolbar hr",
31
33
  contentEditable: false,
32
34
  style: {
@@ -9,7 +9,7 @@ import DeleteIcon from "@mui/icons-material/Delete";
9
9
  import ButtonPopup from "./ButtonPopup";
10
10
  import { actionButtonRedirect } from "../../service/actionTrigger";
11
11
  import { WorkflowIcon } from "../../common/iconslist";
12
- import { getTRBLBreakPoints } from "../../helper/theme";
12
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
15
  const EditorButton = props => {
@@ -44,19 +44,14 @@ const EditorButton = props => {
44
44
  borderStyle,
45
45
  borderWidth,
46
46
  borderColor,
47
- alignment
47
+ alignment,
48
+ xsHidden
48
49
  } = element;
49
50
  const {
50
51
  linkType,
51
52
  redirectOnURLResult
52
53
  } = buttonLink || {};
53
54
  const isTrigger = linkType === "actionTrigger";
54
- const {
55
- topLeft,
56
- topRight,
57
- bottomLeft,
58
- bottomRight
59
- } = borderRadius || {};
60
55
  const BtnIcon = buttonIcon ? fIcons[buttonIcon] : null;
61
56
  const onClick = async e => {
62
57
  if (readOnly) {
@@ -149,10 +144,14 @@ const EditorButton = props => {
149
144
  textAlign: alignment || textAlign || "left"
150
145
  },
151
146
  contentEditable: false,
152
- children: [/*#__PURE__*/_jsx("div", {
147
+ children: [/*#__PURE__*/_jsx(Box, {
148
+ component: "div",
153
149
  className: "editor-btn-wrapper-inner",
154
- style: {
155
- display: "inline"
150
+ sx: {
151
+ display: {
152
+ lg: "inline",
153
+ xs: xsHidden ? "none" : "inline"
154
+ }
156
155
  },
157
156
  children: /*#__PURE__*/_jsxs("span", {
158
157
  style: {
@@ -165,7 +164,9 @@ const EditorButton = props => {
165
164
  borderBlockStyle: "solid",
166
165
  borderColor: borderColor || "transparent",
167
166
  borderWidth: borderWidth || "1px",
168
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
167
+ borderRadius: {
168
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
169
+ },
169
170
  borderStyle: borderStyle || "solid",
170
171
  padding: {
171
172
  ...getTRBLBreakPoints(bannerSpacing)
@@ -2,9 +2,9 @@ import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { useSlateStatic, ReactEditor } from "slate-react";
4
4
  import * as fIcons from "@mui/icons-material";
5
- import ChipTextPopup from "./ChipTextPopup";
6
- import { getTRBLBreakPoints } from "../../helper/theme";
7
5
  import { Box } from "@mui/material";
6
+ import ChipTextPopup from "./ChipTextPopup";
7
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const ChipText = props => {
@@ -26,12 +26,6 @@ const ChipText = props => {
26
26
  buttonIcon,
27
27
  textSize
28
28
  } = element;
29
- const {
30
- topLeft,
31
- topRight,
32
- bottomLeft,
33
- bottomRight
34
- } = borderRadius || {};
35
29
  const BtnIcon = buttonIcon ? fIcons[buttonIcon] : fIcons["Check"];
36
30
  const [openSetttings, setOpenSettings] = useState(false);
37
31
  const editor = useSlateStatic();
@@ -82,7 +76,9 @@ const ChipText = props => {
82
76
  ...getTRBLBreakPoints(bannerSpacing)
83
77
  },
84
78
  border: borderColor ? `1px solid ${borderColor}` : "none",
85
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
79
+ borderRadius: {
80
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
81
+ },
86
82
  background: bgColor || "#CCC",
87
83
  color: textColor
88
84
  },
@@ -6,7 +6,7 @@ import useResize from "../../utils/customHooks/useResize";
6
6
  import EmbedPopup from "./EmbedPopup";
7
7
  import { IconButton, Tooltip, Box } from "@mui/material";
8
8
  import { GridSettingsIcon } from "../../common/iconslist";
9
- import { useEditorContext } from "../../hooks/useMouseMove";
9
+ import { useEditorContext, useEditorSelection } from "../../hooks/useMouseMove";
10
10
  import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
11
11
  import Icon from "../../common/Icon";
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -26,17 +26,12 @@ const Image = ({
26
26
  borderColor,
27
27
  borderRadius,
28
28
  boxShadow,
29
- width: oldWidth
29
+ width: oldWidth,
30
+ xsHidden
30
31
  } = element;
31
32
  const {
32
33
  readOnly
33
34
  } = customProps;
34
- const {
35
- topLeft,
36
- topRight,
37
- bottomLeft,
38
- bottomRight
39
- } = borderRadius || {};
40
35
  const {
41
36
  vertical,
42
37
  horizantal
@@ -48,6 +43,7 @@ const Image = ({
48
43
  const [parentDOM, setParentDOM] = useState(null);
49
44
  const [openSetttings, setOpenSettings] = useState(false);
50
45
  const path = ReactEditor.findPath(editor, element);
46
+ const [showTool] = useEditorSelection(editor);
51
47
  const getSize = () => {
52
48
  if (element?.size === undefined) {
53
49
  return {
@@ -111,7 +107,7 @@ const Image = ({
111
107
  });
112
108
  };
113
109
  const ToolBar = () => {
114
- return selected ? /*#__PURE__*/_jsx("div", {
110
+ return selected && !showTool ? /*#__PURE__*/_jsx("div", {
115
111
  className: "element-toolbar visible-on-hover",
116
112
  contentEditable: false,
117
113
  children: /*#__PURE__*/_jsx(Tooltip, {
@@ -133,9 +129,12 @@ const Image = ({
133
129
  children: [/*#__PURE__*/_jsx(Icon, {
134
130
  icon: "image"
135
131
  }), "Add Image"]
136
- }) : /*#__PURE__*/_jsx("img", {
137
- style: {
138
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
132
+ }) : /*#__PURE__*/_jsx(Box, {
133
+ component: "img",
134
+ sx: {
135
+ borderRadius: {
136
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
137
+ },
139
138
  objectFit: "cover",
140
139
  boxShadow: boxShadow || "none"
141
140
  },
@@ -164,7 +163,10 @@ const Image = ({
164
163
  component: "div",
165
164
  className: "embed has-hover",
166
165
  sx: {
167
- display: "flex",
166
+ display: {
167
+ lg: "flex",
168
+ xs: xsHidden ? "none" : "flex"
169
+ },
168
170
  width: `100%`,
169
171
  maxWidth: "100%",
170
172
  padding: {
@@ -26,7 +26,8 @@ const Video = ({
26
26
  borderWidth,
27
27
  borderColor,
28
28
  borderStyle,
29
- url
29
+ url,
30
+ xsHidden
30
31
  } = element;
31
32
  const editor = useSlateStatic();
32
33
  const [openSetttings, setOpenSettings] = useState(false);
@@ -52,12 +53,6 @@ const Video = ({
52
53
  });
53
54
  const arr = Array.from(Node.elements(editor));
54
55
  const ele = arr.find(([elem]) => element === elem);
55
- const {
56
- topLeft,
57
- topRight,
58
- bottomLeft,
59
- bottomRight
60
- } = borderRadius || {};
61
56
  useEffect(() => {
62
57
  if (editor && ele && ele[1] !== undefined) {
63
58
  const dom = ReactEditor.toDOMNode(editor, Node.get(editor, ele[1]));
@@ -140,9 +135,10 @@ const Video = ({
140
135
  children: /*#__PURE__*/_jsx(Icon, {
141
136
  icon: "videoPlayer"
142
137
  })
143
- }) : /*#__PURE__*/_jsx("iframe", {
138
+ }) : /*#__PURE__*/_jsx(Box, {
139
+ component: "iframe",
144
140
  className: "embedd-iframe",
145
- style: {
141
+ sx: {
146
142
  border: "none",
147
143
  position: "absolute",
148
144
  width: "100%",
@@ -151,7 +147,9 @@ const Video = ({
151
147
  left: "0px",
152
148
  ...(gradientBorder(borderColor) || {}),
153
149
  borderWidth: borderWidth || "1px",
154
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
150
+ borderRadius: {
151
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
152
+ },
155
153
  borderStyle: borderStyle || "solid"
156
154
  },
157
155
  src: embedURL,
@@ -168,11 +166,14 @@ const Video = ({
168
166
  }), "Embed Video or Other"]
169
167
  }) : /*#__PURE__*/_jsx(VideoContent, {});
170
168
  };
171
- return /*#__PURE__*/_jsxs("div", {
169
+ return /*#__PURE__*/_jsxs(Box, {
172
170
  ...attributes,
173
171
  className: "embed has-hover video",
174
- style: {
175
- display: "flex",
172
+ sx: {
173
+ display: {
174
+ lg: "flex",
175
+ xs: xsHidden ? "none" : "flex"
176
+ },
176
177
  flexDirection: "row",
177
178
  width: `100%`,
178
179
  justifyContent: horizantal,
@@ -11,7 +11,7 @@ import { formField } from "../../utils/formfield";
11
11
  import { formSubmit } from "../../service/formSubmit";
12
12
  import formButtonStyle from "../../common/StyleBuilder/formButtonStyle";
13
13
  import Workflow from "./Workflow";
14
- import { getTRBLBreakPoints } from "../../helper/theme";
14
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
15
15
  import { validation } from "./FormElements/validations";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -41,12 +41,6 @@ const Form = props => {
41
41
  fontFamily,
42
42
  textAlign
43
43
  } = element;
44
- const {
45
- topLeft,
46
- topRight,
47
- bottomLeft,
48
- bottomRight
49
- } = borderRadius || {};
50
44
  const btnR = buttonProps?.borderRadius || {};
51
45
  const btnSpacing = buttonProps?.bannerSpacing || {};
52
46
  const btnAlign = buttonProps?.alignment || {};
@@ -66,7 +60,7 @@ const Form = props => {
66
60
  } : {
67
61
  borderColor: buttonProps?.borderColor || "none"
68
62
  };
69
- const getFieldProps = (key = '', val = '') => {
63
+ const getFieldProps = (key = "", val = "") => {
70
64
  return element?.children?.find(obj => obj && obj[key] === val);
71
65
  };
72
66
  const handleSubmit = async (event, test = false) => {
@@ -77,14 +71,14 @@ const Form = props => {
77
71
  const formData = new FormData(formEle?.current);
78
72
  setLoading(true);
79
73
  let response = {};
80
- const emailObject = getFieldProps('field_type', 'email');
81
- let user_email = '';
74
+ const emailObject = getFieldProps("field_type", "email");
75
+ let user_email = "";
82
76
  const validations = [];
83
77
  for (let pair of formData.entries()) {
84
78
  if (emailObject?.name === pair[0]) {
85
79
  user_email = pair[1];
86
80
  }
87
- const fieldData = getFieldProps('name', pair[0]);
81
+ const fieldData = getFieldProps("name", pair[0]);
88
82
  let rule = [];
89
83
  if (fieldData?.required) {
90
84
  rule.push(`isRequired`);
@@ -92,7 +86,7 @@ const Form = props => {
92
86
  if (fieldData?.field_type === "email") {
93
87
  rule.push(`isEmail`);
94
88
  }
95
- if (fieldData?.required || fieldData?.field_type === 'email') {
89
+ if (fieldData?.required || fieldData?.field_type === "email") {
96
90
  validations.push({
97
91
  name: pair[0],
98
92
  value: pair[1],
@@ -274,7 +268,9 @@ const Form = props => {
274
268
  color: textColor || "#FFF",
275
269
  borderColor: borderColor || "transparent",
276
270
  borderWidth: borderWidth || "1px",
277
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
271
+ borderRadius: {
272
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
273
+ },
278
274
  borderStyle: borderStyle || "solid",
279
275
  background: bgColor || "transparent",
280
276
  padding: {
@@ -317,7 +313,9 @@ const Form = props => {
317
313
  borderWidth: "1px",
318
314
  borderBlockStyle: "solid",
319
315
  ...btnBorderStyle,
320
- borderRadius: `${btnR?.topLeft}px ${btnR?.topRight}px ${btnR?.bottomLeft}px ${btnR?.bottomRight}px`,
316
+ borderRadius: {
317
+ ...getBreakPointsValue(btnR || {}, null, "overrideBorderRadius", true)
318
+ },
321
319
  padding: {
322
320
  ...getTRBLBreakPoints(btnSpacing)
323
321
  },
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { getTRBLBreakPoints } from "../../../helper/theme";
3
2
  import { Box } from "@mui/material";
3
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../../helper/theme";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const FormEmail = props => {
6
6
  const {
@@ -18,12 +18,6 @@ const FormEmail = props => {
18
18
  lockSpacing,
19
19
  ...rest
20
20
  } = fieldProps;
21
- const {
22
- topLeft,
23
- topRight,
24
- bottomLeft,
25
- bottomRight
26
- } = borderRadius || {};
27
21
  const onChange = e => {
28
22
  e.preventDefault();
29
23
  };
@@ -48,7 +42,9 @@ const FormEmail = props => {
48
42
  height: height || "auto",
49
43
  borderColor: borderColor || "transparent",
50
44
  borderWidth: borderWidth || "1px",
51
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
45
+ borderRadius: {
46
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
47
+ },
52
48
  borderStyle: borderStyle || "solid",
53
49
  color: textColor || "#000",
54
50
  background: bgColor || "transparent"
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { getTRBLBreakPoints } from "../../../helper/theme";
3
2
  import { Box } from "@mui/material";
3
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../../helper/theme";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const FormText = props => {
6
6
  const {
@@ -18,12 +18,6 @@ const FormText = props => {
18
18
  lockSpacing,
19
19
  ...rest
20
20
  } = fieldProps;
21
- const {
22
- topLeft,
23
- topRight,
24
- bottomLeft,
25
- bottomRight
26
- } = borderRadius || {};
27
21
  const onChange = e => {
28
22
  e.preventDefault();
29
23
  };
@@ -46,7 +40,9 @@ const FormText = props => {
46
40
  height: height || "auto",
47
41
  borderColor: borderColor || "transparent",
48
42
  borderWidth: borderWidth || "1px",
49
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
43
+ borderRadius: {
44
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
45
+ },
50
46
  borderStyle: borderStyle || "solid",
51
47
  color: textColor || "#000",
52
48
  background: bgColor || "transparent"
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { Box } from "@mui/material";
3
- import { getTRBLBreakPoints } from "../../../helper/theme";
3
+ import { getTRBLBreakPoints, getBreakPointsValue } from "../../../helper/theme";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const FormTextArea = props => {
6
6
  const {
@@ -17,12 +17,6 @@ const FormTextArea = props => {
17
17
  bgColor,
18
18
  ...rest
19
19
  } = fieldProps;
20
- const {
21
- topLeft,
22
- topRight,
23
- bottomLeft,
24
- bottomRight
25
- } = borderRadius || {};
26
20
  const onChange = e => {
27
21
  e.preventDefault();
28
22
  };
@@ -45,7 +39,9 @@ const FormTextArea = props => {
45
39
  height: height || "150px",
46
40
  borderColor: borderColor || "transparent",
47
41
  borderWidth: borderWidth || "1px",
48
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
42
+ borderRadius: {
43
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
44
+ },
49
45
  borderStyle: borderStyle || "solid",
50
46
  color: textColor || "#000",
51
47
  background: bgColor || "transparent"
@@ -11,7 +11,7 @@ import { GridAddGridIcon, GridAddSectionIcon, GridSettingsIcon } from "../../com
11
11
  import GridPopup from "./GridPopup";
12
12
  import SectionPopup from "./SectionPopup";
13
13
  import { gridItem } from "../../utils/gridItem";
14
- import { useEditorContext } from "../../hooks/useMouseMove";
14
+ import { useEditorContext, useEditorSelection } from "../../hooks/useMouseMove";
15
15
  import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -43,25 +43,21 @@ const Grid = props => {
43
43
  borderColor,
44
44
  borderStyle,
45
45
  borderRadius,
46
- flexWrap
46
+ flexWrap,
47
+ xsHidden
47
48
  } = element;
48
49
  const {
49
50
  vertical,
50
51
  horizantal,
51
52
  flexDirection
52
53
  } = alignment || {};
53
- const {
54
- topLeft,
55
- topRight,
56
- bottomLeft,
57
- bottomRight
58
- } = borderRadius || {};
59
54
  const editor = useSlateStatic();
60
55
  const path = ReactEditor.findPath(editor, element);
61
56
  const {
62
57
  hoverPath
63
58
  } = useEditorContext();
64
59
  const selected = hoverPath === path.join(",");
60
+ const [showTool] = useEditorSelection(editor);
65
61
  const onAddGridItem = () => {
66
62
  const currentPath = editor.selection?.anchor?.path;
67
63
  const ancestorsPath = Path.ancestors(currentPath, {
@@ -174,7 +170,7 @@ const Grid = props => {
174
170
  };
175
171
  const PoupComp = GridSettingsPoupComp[openSetttings];
176
172
  const NewLineButtons = () => {
177
- return !readOnly && selected && path.length === 2 ? /*#__PURE__*/_jsxs(_Fragment, {
173
+ return !readOnly && selected && path.length === 2 && !showTool ? /*#__PURE__*/_jsxs(_Fragment, {
178
174
  children: [/*#__PURE__*/_jsx("div", {
179
175
  className: "element-selector-ctrl tc",
180
176
  children: /*#__PURE__*/_jsx(Tooltip, {
@@ -199,7 +195,7 @@ const Grid = props => {
199
195
  }) : null;
200
196
  };
201
197
  const GridToolBar = () => {
202
- return selected ? /*#__PURE__*/_jsxs("div", {
198
+ return selected && !showTool ? /*#__PURE__*/_jsxs("div", {
203
199
  className: "grid-container-toolbar",
204
200
  contentEditable: false,
205
201
  children: [/*#__PURE__*/_jsx(Tooltip, {
@@ -253,13 +249,19 @@ const Grid = props => {
253
249
  className: `grid-container ${grid} has-hover element-root`,
254
250
  ...attributes,
255
251
  ...sectionId,
256
- style: {
252
+ sx: {
253
+ display: {
254
+ lg: "flex",
255
+ xs: xsHidden ? "none" : "flex"
256
+ },
257
257
  background: bgColor,
258
258
  alignContent: vertical,
259
259
  ...bgImage,
260
260
  borderColor: borderColor || "transparent",
261
261
  borderWidth: borderWidth || "1px",
262
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
262
+ borderRadius: {
263
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
264
+ },
263
265
  borderStyle: borderStyle || "solid"
264
266
  },
265
267
  "data-path": path.join(","),
@@ -5,7 +5,7 @@ import { useSlateStatic, ReactEditor } from "slate-react";
5
5
  import GridItemPopup from "./GridItemPopup";
6
6
  import { IconButton, Tooltip, Box, Grid as Item } from "@mui/material";
7
7
  import { GridSettingsIcon } from "../../common/iconslist";
8
- import { useEditorContext } from "../../hooks/useMouseMove";
8
+ import { useEditorContext, useEditorSelection } from "../../hooks/useMouseMove";
9
9
  import { getBreakPointsValue, getTRBLBreakPoints } from "../../helper/theme";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -34,27 +34,23 @@ const GridItem = props => {
34
34
  borderColorHover,
35
35
  textColor,
36
36
  animation,
37
- cellGHeight
37
+ cellGHeight,
38
+ xsHidden
38
39
  } = element;
39
40
  const {
40
41
  vertical,
41
42
  horizantal,
42
43
  flexDirection
43
44
  } = alignment || {};
44
- const {
45
- topLeft,
46
- topRight,
47
- bottomLeft,
48
- bottomRight
49
- } = borderRadius || {};
50
45
  const editor = useSlateStatic();
51
46
  const path = ReactEditor.findPath(editor, element);
52
47
  const {
53
48
  hoverPath
54
49
  } = useEditorContext();
55
50
  const selected = hoverPath === path.join(",");
51
+ const [showTool] = useEditorSelection(editor);
56
52
  const GridItemToolbar = () => {
57
- return selected ? /*#__PURE__*/_jsx("div", {
53
+ return selected && !showTool ? /*#__PURE__*/_jsx("div", {
58
54
  contentEditable: false,
59
55
  className: "grid-item-toolbar",
60
56
  style: {
@@ -108,12 +104,17 @@ const GridItem = props => {
108
104
  height: {
109
105
  ...getBreakPointsValue(cellGHeight || "auto")
110
106
  },
111
- display: "flex",
107
+ display: {
108
+ lg: "flex",
109
+ xs: xsHidden ? "none" : "flex"
110
+ },
112
111
  flexDirection: flexDirection || "column",
113
112
  background: bgColor || "transparent",
114
113
  borderColor: borderColor || "transparent",
115
114
  borderWidth: borderWidth || "1px",
116
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
115
+ borderRadius: {
116
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
117
+ },
117
118
  borderStyle: borderStyle || "solid",
118
119
  alignItems: horizantal,
119
120
  justifyContent: vertical,
@@ -1,5 +1,7 @@
1
1
  import React from "react";
2
2
  import * as fIcons from "@mui/icons-material";
3
+ import { Box } from "@mui/material";
4
+ import { getBreakPointsValue } from "../../helper/theme";
3
5
  import { jsx as _jsx } from "react/jsx-runtime";
4
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
5
7
  const InlineIcon = props => {
@@ -21,25 +23,22 @@ const InlineIcon = props => {
21
23
  right,
22
24
  bottom
23
25
  } = bannerSpacing || {};
24
- const {
25
- topLeft,
26
- topRight,
27
- bottomLeft,
28
- bottomRight
29
- } = borderRadius || {};
30
26
  const BtnIcon = fIcons["Check"];
31
- return /*#__PURE__*/_jsxs("button", {
27
+ return /*#__PURE__*/_jsxs(Box, {
32
28
  ...attributes,
33
29
  className: "editor-icon-text",
34
30
  contentEditable: false,
35
- style: {
31
+ component: "button",
32
+ sx: {
36
33
  display: "inline",
37
34
  paddingLeft: `${left}px`,
38
35
  paddingRight: `${right}px`,
39
36
  paddingTop: `${top}px`,
40
37
  paddingBottom: `${bottom}px`,
41
38
  border: borderColor ? `1px solid ${borderColor}` : "none",
42
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
39
+ borderRadius: {
40
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
41
+ },
43
42
  background: bgColor || "#CCC",
44
43
  color: textColor
45
44
  },
@@ -13,8 +13,9 @@ import DeleteCellIcon from "./DeleteCellIcon";
13
13
  import DeleteRowIcon from "./DeleteRowIcon";
14
14
  import { TableUtil } from "../../utils/table";
15
15
  import TablePopup from "./TablePopup";
16
- import "./table.css";
16
+ import { useEditorSelection } from "../../hooks/useMouseMove";
17
17
  import TableStyles from "./Styles";
18
+ import "./table.css";
18
19
  import { jsx as _jsx } from "react/jsx-runtime";
19
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
20
21
  const TABLE_MENUS = [{
@@ -91,6 +92,7 @@ const Table = props => {
91
92
  const selected = useSelected();
92
93
  const table = new TableUtil(editor);
93
94
  const tableProps = table.getTableProps();
95
+ const [showTool] = useEditorSelection(editor);
94
96
  const handleAction = ({
95
97
  type,
96
98
  position
@@ -125,7 +127,7 @@ const Table = props => {
125
127
  setExpandTools(!exandTools);
126
128
  };
127
129
  const ToolBar = () => {
128
- return selected ? /*#__PURE__*/_jsxs(Box, {
130
+ return selected && !showTool ? /*#__PURE__*/_jsxs(Box, {
129
131
  component: "div",
130
132
  contentEditable: false,
131
133
  className: `tableToolBar ${exandTools ? "active" : ""}`,
@@ -5,6 +5,7 @@ import { useSlateStatic, ReactEditor } from "slate-react";
5
5
  import useTableResize from "../../utils/customHooks/useTableResize";
6
6
  import { TableUtil } from "../../utils/table";
7
7
  import TableStyles from "./Styles";
8
+ import { useEditorSelection } from "../../hooks/useMouseMove";
8
9
  import { jsx as _jsx } from "react/jsx-runtime";
9
10
  import { Fragment as _Fragment } from "react/jsx-runtime";
10
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -45,6 +46,7 @@ const TableCell = props => {
45
46
  } = element;
46
47
  const [parentDOM, setParentDOM] = useState(null);
47
48
  const editor = useSlateStatic();
49
+ const [showTool] = useEditorSelection(editor);
48
50
  const path = ReactEditor.findPath(editor, element);
49
51
  const isHeader = path.length >= 2 ? path[path.length - 2] === 0 : false;
50
52
  const [size, onMouseDown, resizing, onLoad] = useTableResize({
@@ -119,7 +121,7 @@ const TableCell = props => {
119
121
  border: `3px solid ${cellBorderColor}`,
120
122
  ...(sizeProps || {})
121
123
  },
122
- children: [children, isHeader && !readOnly && tableSize?.height ? /*#__PURE__*/_jsx(Resizer, {
124
+ children: [children, isHeader && !readOnly && tableSize?.height && !showTool ? /*#__PURE__*/_jsx(Resizer, {
123
125
  classes: classes,
124
126
  onMouseDown: onMouseDown,
125
127
  height: tableSize?.height
@@ -73,7 +73,7 @@ const TopBanner = props => {
73
73
  ...attributes,
74
74
  style: {
75
75
  position: "relative",
76
- height: "280px",
76
+ height: "296px",
77
77
  textAlign: "center"
78
78
  },
79
79
  contentEditable: false,
@@ -81,6 +81,7 @@ const TopBanner = props => {
81
81
  children: [/*#__PURE__*/_jsx("img", {
82
82
  src: url,
83
83
  alt: "Top Banner",
84
+ className: "top-banner-wrpr-ele",
84
85
  style: {
85
86
  width: "100%",
86
87
  height: "280px",
@@ -28,6 +28,11 @@ const editorStyles = ({
28
28
  flexDirection: "column",
29
29
  alignItems: "center",
30
30
  color: "#0f172a",
31
+ "& .has-topbanner": {
32
+ "& .doc-title-ele-wrpr": {
33
+ marginTop: "12px"
34
+ }
35
+ },
31
36
  "&.no-color": {
32
37
  backgroundColor: theme?.palette?.editor?.background,
33
38
  color: theme?.palette?.editor?.textColor,
@@ -206,6 +211,17 @@ const editorStyles = ({
206
211
  textAlign: "center",
207
212
  border: "1px solid #CFD8F5"
208
213
  }
214
+ },
215
+ fullScreenWrapper: {
216
+ "& .MuiPaper-root": {
217
+ borderRadius: "0px !important",
218
+ "& .MuiDialogTitle-root": {
219
+ position: "absolute",
220
+ top: 0,
221
+ right: "12px",
222
+ zIndex: 100
223
+ }
224
+ }
209
225
  }
210
226
  });
211
227
  export default editorStyles;
@@ -6,6 +6,7 @@ import TuneIcon from "@mui/icons-material/Tune";
6
6
  import SectionPopup from "../../Elements/Grid/SectionPopup";
7
7
  import { getBreakPointsValue, getTRBLBreakPoints } from "../../helper/theme";
8
8
  import DragHandle from "../DnD/DragHandleButton";
9
+ import { useEditorSelection } from "../../hooks/useMouseMove";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
11
12
  const SectionStyle = () => ({
@@ -33,6 +34,7 @@ const Section = props => {
33
34
  readOnly
34
35
  } = customProps;
35
36
  const editor = useSlateStatic();
37
+ const [showTool] = useEditorSelection(editor);
36
38
  const [openSetttings, setOpenSettings] = useState(false);
37
39
  const {
38
40
  sectionBgColor,
@@ -42,12 +44,6 @@ const Section = props => {
42
44
  sectionGridSize,
43
45
  sectionAlignment
44
46
  } = element;
45
- const {
46
- topLeft: ssTopLeft,
47
- topRight: ssTopRight,
48
- bottomLeft: ssBottomLeft,
49
- bottomRight: ssBottomRight
50
- } = sectionBorderRadius || {};
51
47
  const {
52
48
  vertical,
53
49
  horizantal,
@@ -58,7 +54,7 @@ const Section = props => {
58
54
  setOpenSettings(true);
59
55
  };
60
56
  const Toolbar = () => {
61
- return !readOnly ? /*#__PURE__*/_jsx(Box, {
57
+ return !readOnly && !showTool ? /*#__PURE__*/_jsx(Box, {
62
58
  component: "div",
63
59
  className: "element-toolbar no-border-button ss hr section-tw",
64
60
  style: {
@@ -108,7 +104,9 @@ const Section = props => {
108
104
  padding: {
109
105
  ...getTRBLBreakPoints(sectionBannerSpacing)
110
106
  },
111
- borderRadius: `${ssTopLeft}px ${ssTopRight}px ${ssBottomLeft}px ${ssBottomRight}px`,
107
+ borderRadius: {
108
+ ...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
109
+ },
112
110
  flexDirection: flexDirection || "column",
113
111
  alignItems: horizantal,
114
112
  justifyContent: vertical
@@ -121,7 +119,7 @@ const Section = props => {
121
119
  ...getBreakPointsValue(sectionGridSize || 8, null, "overrideGridSize", true)
122
120
  }
123
121
  },
124
- children: [!readOnly ? /*#__PURE__*/_jsx(DragHandle, {
122
+ children: [!readOnly && !showTool ? /*#__PURE__*/_jsx(DragHandle, {
125
123
  ...props
126
124
  }) : null, children, /*#__PURE__*/_jsx(Toolbar, {})]
127
125
  }), openSetttings ? /*#__PURE__*/_jsx(SectionPopup, {
@@ -62,6 +62,11 @@ const buttonStyle = [{
62
62
  tab: "Banner Spacing",
63
63
  value: "bannerSpacing",
64
64
  fields: [{
65
+ label: "Hide on Mobile",
66
+ key: "xsHidden",
67
+ type: "selectBox",
68
+ placeholder: "Hide on Mobile"
69
+ }, {
65
70
  label: "Banner Spacing",
66
71
  key: "bannerSpacing",
67
72
  type: "bannerSpacing"
@@ -31,6 +31,11 @@ const embedImageStyle = [{
31
31
  tab: "Position",
32
32
  value: "position",
33
33
  fields: [{
34
+ label: "Hide on Mobile",
35
+ key: "xsHidden",
36
+ type: "selectBox",
37
+ placeholder: "Hide on Mobile"
38
+ }, {
34
39
  label: "Set Postion (Vertical & Horizantal)",
35
40
  key: "alignment",
36
41
  type: "alignment"
@@ -11,6 +11,11 @@ const embedVideoStyle = [{
11
11
  tab: "Position",
12
12
  value: "position",
13
13
  fields: [{
14
+ label: "Hide on Mobile",
15
+ key: "xsHidden",
16
+ type: "selectBox",
17
+ placeholder: "Hide on Mobile"
18
+ }, {
14
19
  label: "Set Postion (Vertical & Horizantal)",
15
20
  key: "alignment",
16
21
  type: "alignment"
@@ -33,7 +33,7 @@ const BannerSpacing = props => {
33
33
  }
34
34
  onChange({
35
35
  [key]: {
36
- ...getBreakPointsValue(val),
36
+ ...getBreakPointsValue(val, null),
37
37
  [size?.device]: {
38
38
  ...value,
39
39
  ...changeAll,
@@ -1,12 +1,14 @@
1
1
  import React from "react";
2
2
  import { Grid, Typography, Slider, FormControlLabel, Checkbox, Box } from "@mui/material";
3
3
  import { radiusStyle } from "./radiusStyle";
4
+ import useWindowResize from "../../../hooks/useWindowResize";
5
+ import { getBreakPointsValue } from "../../../helper/theme";
4
6
  import { jsx as _jsx } from "react/jsx-runtime";
5
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
6
8
  const BORDER_RADIUS_KEYS = ["topLeft", "topRight", "bottomLeft", "bottomRight"];
7
9
  const BorderRadius = props => {
8
10
  const {
9
- value,
11
+ value: val,
10
12
  data,
11
13
  onChange,
12
14
  elementProps,
@@ -21,6 +23,8 @@ const BorderRadius = props => {
21
23
  const {
22
24
  key
23
25
  } = data;
26
+ const [size] = useWindowResize();
27
+ const value = getBreakPointsValue(val, size?.device);
24
28
  const handleChange = e => {
25
29
  let changeAll = {};
26
30
  if (lockRadius) {
@@ -30,9 +34,11 @@ const BorderRadius = props => {
30
34
  }
31
35
  onChange({
32
36
  [key]: {
33
- ...value,
34
- [e.target.name]: e.target.value,
35
- ...changeAll
37
+ ...getBreakPointsValue(val, null),
38
+ [size?.device]: {
39
+ ...changeAll,
40
+ [e.target.name]: e.target.value
41
+ }
36
42
  }
37
43
  });
38
44
  };
@@ -63,15 +69,18 @@ const BorderRadius = props => {
63
69
  disabled: !lockRadius,
64
70
  className: "spacingSlider",
65
71
  defaultValue: value?.topLeft || 0,
72
+ value: value?.topLeft || 0,
66
73
  "aria-label": "Default",
67
74
  valueLabelDisplay: "auto",
68
75
  max: 100,
76
+ name: "topLeft",
69
77
  onChange: handleChange
70
78
  }), /*#__PURE__*/_jsx(Box, {
71
79
  sx: classes.sapcingInput,
72
80
  component: "input",
73
81
  value: !lockRadius ? "" : value?.topLeft || 0,
74
82
  className: "sliderInput",
83
+ name: "topLeft",
75
84
  disabled: !lockRadius,
76
85
  onChange: handleChange
77
86
  })]
@@ -15,6 +15,11 @@ const gridItemStyle = [{
15
15
  tab: "Position",
16
16
  value: "position",
17
17
  fields: [{
18
+ label: "Hide on Mobile",
19
+ key: "xsHidden",
20
+ type: "selectBox",
21
+ placeholder: "Hide on Mobile"
22
+ }, {
18
23
  label: "Set Postion (Vertical & Horizantal)",
19
24
  key: "alignment",
20
25
  type: "alignment"
@@ -40,6 +40,11 @@ const gridStyle = [{
40
40
  tab: "Position",
41
41
  value: "position",
42
42
  fields: [{
43
+ label: "Hide on Mobile",
44
+ key: "xsHidden",
45
+ type: "selectBox",
46
+ placeholder: "Hide on Mobile"
47
+ }, {
43
48
  label: "Set Postion (Vertical & Horizantal)",
44
49
  key: "alignment",
45
50
  type: "alignment"
@@ -83,6 +83,11 @@ const useCommonStyle = theme => ({
83
83
  }
84
84
  }
85
85
  }
86
+ },
87
+ textOptions: {
88
+ "& .MuiPopover-root": {
89
+ backgroundColor: theme?.palette?.editor?.background
90
+ }
86
91
  }
87
92
  });
88
93
  export default useCommonStyle;
@@ -43,6 +43,9 @@ const overrides = {
43
43
  },
44
44
  overrideReSizeH: val => {
45
45
  return `${val?.height}px`;
46
+ },
47
+ overrideBorderRadius: val => {
48
+ return `${val?.topLeft}px ${val?.topRight}px ${val?.bottomLeft}px ${val?.bottomRight}px`;
46
49
  }
47
50
  };
48
51
  export const getBreakPointsValue = (value, breakpoint, ot = null, ov = false) => {
@@ -1,7 +1,23 @@
1
1
  import { useEffect, useState, createContext, useContext, useMemo } from "react";
2
+ import { getSelectedText } from "../utils/helper";
2
3
  import { jsx as _jsx } from "react/jsx-runtime";
3
4
  const EditorContext = /*#__PURE__*/createContext();
5
+ export const useEditorSelection = editor => {
6
+ const [textSelected, setTextSelected] = useState(false);
7
+ useEffect(() => {
8
+ if (editor?.selection) {
9
+ const text = getSelectedText(editor);
10
+ if (text?.length > 0) {
11
+ setTextSelected(true);
12
+ } else {
13
+ setTextSelected(false);
14
+ }
15
+ }
16
+ }, [editor?.selection]);
17
+ return [textSelected];
18
+ };
4
19
  export const EditorProvider = ({
20
+ editor,
5
21
  theme,
6
22
  children
7
23
  }) => {
@@ -23,7 +39,7 @@ export const EditorProvider = ({
23
39
  hoverPath: previous
24
40
  };
25
41
  }
26
- }, [path]);
42
+ }, [path, editor?.selection]);
27
43
  return /*#__PURE__*/_jsx(EditorContext.Provider, {
28
44
  value: {
29
45
  ...(value || {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "1.9.9",
3
+ "version": "2.0.1",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"