@flozy/editor 1.9.8 → 1.9.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,7 @@ import { mentionsEvent, commands, indentation, escapeEvent, enterEvent } from ".
13
13
  import withCommon from "./hooks/withCommon";
14
14
  import DialogWrapper from "./DialogWrapper";
15
15
  import { serializeToText } from "./utils/serializeToText";
16
- import { findPageSettings, getPageSettings } from "./utils/pageSettings";
16
+ import { focusOnFirstParagraph, getPageSettings } from "./utils/pageSettings";
17
17
  import { getThumbnailImage, invertColor } from "./helper";
18
18
  import PopupTool from "./Toolbar/PopupTool";
19
19
  import "./font.css";
@@ -25,7 +25,6 @@ import { EditorProvider } from "./hooks/useMouseMove";
25
25
  import TopBanner from "./Elements/TopBanner/TopBanner";
26
26
  import editorStyles from "./Styles/EditorStyles";
27
27
  import DragAndDrop from "./common/DnD";
28
- import DragHandle from "./common/DnD/DragHandle";
29
28
  import Section from "./common/Section";
30
29
  import "animate.css";
31
30
  import decorators from "./utils/Decorators";
@@ -139,10 +138,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
139
138
  setValue(draftToSlate({
140
139
  data: content
141
140
  }));
142
- Transforms.select(editor, {
143
- path: [0, 0],
144
- offset: 0
145
- });
141
+ focusOnFirstParagraph(editor);
146
142
  }, [id, content]);
147
143
  useEffect(() => {
148
144
  if (editorWrapper && editorWrapper?.current && JSON.stringify(loadedValue) !== JSON.stringify(deboundedValue) && isInteracted && onSave) {
@@ -20,6 +20,9 @@ const DialogWrapper = props => {
20
20
  zIndex: 1000
21
21
  },
22
22
  children: [/*#__PURE__*/_jsx(DialogTitle, {
23
+ style: {
24
+ padding: "6px 8px"
25
+ },
23
26
  children: /*#__PURE__*/_jsx(Grid, {
24
27
  children: /*#__PURE__*/_jsx(Grid, {
25
28
  style: {
@@ -32,7 +32,6 @@ blockquote {
32
32
  margin-left: 0;
33
33
  margin-right: 0;
34
34
  padding-left: 10px;
35
- color: #000;
36
35
  margin: 0px;
37
36
  }
38
37
 
@@ -93,9 +93,9 @@ const Accordion = props => {
93
93
  style: {
94
94
  backgroundColor: bgColor
95
95
  },
96
+ onClick: onToggle,
96
97
  children: [/*#__PURE__*/_jsx(IconButton, {
97
98
  className: "accordion-summary-collapse-btn",
98
- onClick: onToggle,
99
99
  contentEditable: false,
100
100
  sx: {
101
101
  "& svg": {
@@ -154,46 +154,51 @@ const EditorButton = props => {
154
154
  style: {
155
155
  display: "inline"
156
156
  },
157
- children: /*#__PURE__*/_jsxs(Box, {
158
- component: "button",
159
- sx: {
160
- background: bgColor || "rgb(30, 75, 122)",
161
- borderBlockStyle: "solid",
162
- borderColor: borderColor || "transparent",
163
- borderWidth: borderWidth || "1px",
164
- borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
165
- borderStyle: borderStyle || "solid",
166
- padding: {
167
- ...getTRBLBreakPoints(bannerSpacing)
168
- },
169
- color: `${textColor || "#FFFFFF"}`,
170
- fontSize: textSize || "inherit",
171
- fontFamily: fontFamily || "PoppinsRegular",
172
- display: "inline-flex",
173
- alignItems: "center",
174
- position: "relative",
175
- "& .element-toolbar": {
176
- display: "none"
177
- },
178
- "&:hover": {
179
- color: `${textColorHover || textColor || "#FFFFFF"}`,
180
- background: bgColorHover || bgColor || "rgb(30, 75, 122)",
157
+ children: /*#__PURE__*/_jsxs("span", {
158
+ style: {
159
+ position: "relative"
160
+ },
161
+ children: [/*#__PURE__*/_jsxs(Box, {
162
+ component: "button",
163
+ sx: {
164
+ background: bgColor || "rgb(30, 75, 122)",
165
+ borderBlockStyle: "solid",
166
+ borderColor: borderColor || "transparent",
167
+ borderWidth: borderWidth || "1px",
168
+ borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
169
+ borderStyle: borderStyle || "solid",
170
+ padding: {
171
+ ...getTRBLBreakPoints(bannerSpacing)
172
+ },
173
+ color: `${textColor || "#FFFFFF"}`,
174
+ fontSize: textSize || "inherit",
175
+ fontFamily: fontFamily || "PoppinsRegular",
176
+ display: "inline-flex",
177
+ alignItems: "center",
178
+ position: "relative",
181
179
  "& .element-toolbar": {
182
- display: "block"
180
+ display: "none"
181
+ },
182
+ "&:hover": {
183
+ color: `${textColorHover || textColor || "#FFFFFF"}`,
184
+ background: bgColorHover || bgColor || "rgb(30, 75, 122)",
185
+ "& .element-toolbar": {
186
+ display: "block"
187
+ }
183
188
  }
184
- }
185
- },
186
- onClick: onClick,
187
- children: [BtnIcon && iconPosition === "start" && /*#__PURE__*/_jsx(BtnIcon, {
188
- style: {
189
- paddingLeft: "4px",
190
- paddingRight: "4px"
191
- }
192
- }), label || "My Button", BtnIcon && iconPosition === "end" && /*#__PURE__*/_jsx(BtnIcon, {
193
- style: {
194
- paddingLeft: "4px",
195
- paddingRight: "4px"
196
- }
189
+ },
190
+ onClick: onClick,
191
+ children: [BtnIcon && iconPosition === "start" && /*#__PURE__*/_jsx(BtnIcon, {
192
+ style: {
193
+ paddingLeft: "4px",
194
+ paddingRight: "4px"
195
+ }
196
+ }), label || "My Button", BtnIcon && iconPosition === "end" && /*#__PURE__*/_jsx(BtnIcon, {
197
+ style: {
198
+ paddingLeft: "4px",
199
+ paddingRight: "4px"
200
+ }
201
+ })]
197
202
  }), !readOnly && isTrigger ? /*#__PURE__*/_jsx(IconButton, {
198
203
  className: "workflow-icon-btn",
199
204
  children: /*#__PURE__*/_jsx(WorkflowIcon, {})
@@ -154,7 +154,7 @@ const Image = ({
154
154
  } else {
155
155
  return {
156
156
  width: url ? {
157
- ...getBreakPointsValue(element?.size, null, "overrideReSize", true)
157
+ ...getBreakPointsValue(getSize(), null, "overrideReSize", true)
158
158
  } : "100%"
159
159
  };
160
160
  }
@@ -12,6 +12,7 @@ import { formSubmit } from "../../service/formSubmit";
12
12
  import formButtonStyle from "../../common/StyleBuilder/formButtonStyle";
13
13
  import Workflow from "./Workflow";
14
14
  import { getTRBLBreakPoints } from "../../helper/theme";
15
+ import { validation } from "./FormElements/validations";
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
16
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
18
  const Form = props => {
@@ -40,7 +41,6 @@ const Form = props => {
40
41
  fontFamily,
41
42
  textAlign
42
43
  } = element;
43
- const isEmail = element?.children[0].element === "email";
44
44
  const {
45
45
  topLeft,
46
46
  topRight,
@@ -66,6 +66,9 @@ const Form = props => {
66
66
  } : {
67
67
  borderColor: buttonProps?.borderColor || "none"
68
68
  };
69
+ const getFieldProps = (key = '', val = '') => {
70
+ return element?.children?.find(obj => obj && obj[key] === val);
71
+ };
69
72
  const handleSubmit = async (event, test = false) => {
70
73
  if (event) {
71
74
  event.preventDefault();
@@ -74,7 +77,29 @@ const Form = props => {
74
77
  const formData = new FormData(formEle?.current);
75
78
  setLoading(true);
76
79
  let response = {};
80
+ const emailObject = getFieldProps('field_type', 'email');
81
+ let user_email = '';
82
+ const validations = [];
77
83
  for (let pair of formData.entries()) {
84
+ if (emailObject?.name === pair[0]) {
85
+ user_email = pair[1];
86
+ }
87
+ const fieldData = getFieldProps('name', pair[0]);
88
+ let rule = [];
89
+ if (fieldData?.required) {
90
+ rule.push(`isRequired`);
91
+ }
92
+ if (fieldData?.field_type === "email") {
93
+ rule.push(`isEmail`);
94
+ }
95
+ if (fieldData?.required || fieldData?.field_type === 'email') {
96
+ validations.push({
97
+ name: pair[0],
98
+ value: pair[1],
99
+ field_type: fieldData?.field_type,
100
+ rules: rule && rule
101
+ });
102
+ }
78
103
  response = {
79
104
  ...response,
80
105
  [pair[0]]: pair[1]
@@ -83,14 +108,22 @@ const Form = props => {
83
108
  let params = {
84
109
  page_id: page_id,
85
110
  form_id: `${formName}`,
86
- response,
111
+ response: {
112
+ ...response
113
+ },
87
114
  form_data: {
115
+ user_email: user_email,
88
116
  email: element?.email,
89
117
  form_workflow: element?.workflow,
90
118
  save_response: element?.saveResponse
91
119
  }
92
120
  };
93
- await formSubmit(params, customProps);
121
+ const isValidForm = validations.length !== 0 && validation(validations);
122
+ if (isValidForm) {
123
+ alert(isValidForm[0]);
124
+ } else {
125
+ await formSubmit(params, customProps);
126
+ }
94
127
  setLoading(false);
95
128
  }
96
129
  };
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+ import { getTRBLBreakPoints } from "../../../helper/theme";
3
+ import { Box } from "@mui/material";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const FormEmail = props => {
6
+ const {
7
+ fieldProps
8
+ } = props;
9
+ const {
10
+ bannerSpacing,
11
+ height,
12
+ borderRadius,
13
+ borderStyle,
14
+ borderWidth,
15
+ borderColor,
16
+ textColor,
17
+ bgColor,
18
+ lockSpacing,
19
+ ...rest
20
+ } = fieldProps;
21
+ const {
22
+ topLeft,
23
+ topRight,
24
+ bottomLeft,
25
+ bottomRight
26
+ } = borderRadius || {};
27
+ const onChange = e => {
28
+ e.preventDefault();
29
+ };
30
+ return /*#__PURE__*/_jsx("div", {
31
+ style: {
32
+ width: "100%",
33
+ display: "flex"
34
+ },
35
+ contentEditable: false,
36
+ children: /*#__PURE__*/_jsx(Box, {
37
+ component: "input",
38
+ type: "email",
39
+ required: true,
40
+ ...rest,
41
+ onChange: onChange,
42
+ sx: {
43
+ width: "100%",
44
+ border: `1px solid ${borderColor || "#FFF"}`,
45
+ padding: {
46
+ ...getTRBLBreakPoints(bannerSpacing)
47
+ },
48
+ height: height || "auto",
49
+ borderColor: borderColor || "transparent",
50
+ borderWidth: borderWidth || "1px",
51
+ borderRadius: `${topLeft}px ${topRight}px ${bottomLeft}px ${bottomRight}px`,
52
+ borderStyle: borderStyle || "solid",
53
+ color: textColor || "#000",
54
+ background: bgColor || "transparent"
55
+ }
56
+ })
57
+ });
58
+ };
59
+ export default FormEmail;
@@ -1,8 +1,9 @@
1
+ import FormEmail from "./FormEmail";
1
2
  import FormText from "./FormText";
2
3
  import FormTextArea from "./FormTextArea";
3
4
  const FormElements = {
4
5
  text: FormText,
5
6
  textArea: FormTextArea,
6
- email: FormText
7
+ email: FormEmail
7
8
  };
8
9
  export default FormElements;
@@ -0,0 +1,35 @@
1
+ import { bool } from "prop-types";
2
+ export const validationMethods = {
3
+ isEmail: value => {
4
+ const regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
5
+ const result = regex.test(String(value).toLowerCase());
6
+ if (result) {
7
+ let domain = String(value).toLowerCase().split('@')[1];
8
+ let validExtensions = ['com', 'net', 'org', 'edu'];
9
+ let extension = domain.split('.').pop();
10
+ if (validExtensions.includes(extension)) {
11
+ return "";
12
+ } else {
13
+ return "Enter valid email address";
14
+ }
15
+ } else {
16
+ return "Enter valid email address";
17
+ }
18
+ },
19
+ isRequired: value => {
20
+ return value === '' ? "Required fields should not be empty" : "";
21
+ }
22
+ };
23
+ export const validation = fields => {
24
+ let validated = [];
25
+ let filedValue = [];
26
+ fields.map(field => {
27
+ let val = field.rules.map(vm => {
28
+ return validationMethods[vm](field["value"]);
29
+ });
30
+ return filedValue.push(...val);
31
+ });
32
+ validated.push(...filedValue);
33
+ validated = validated.filter(val => val !== "");
34
+ return validated.length === 0 ? false : validated;
35
+ };
@@ -6,13 +6,17 @@ import "react-datepicker/dist/react-datepicker.css";
6
6
  import SignatureOptions from "./SignatureOptions";
7
7
  import "./Signature.css";
8
8
  import { DrawSignature, PencilIcon, TypeSignature, UploadSignature } from "../../common/EditorIcons";
9
- import CommonStyle from "../../commonStyle";
10
- import { styled } from "@mui/material/styles";
9
+ import useCommonStyle from "../../commonStyle";
10
+ import { useEditorContext } from "../../hooks/useMouseMove";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { Fragment as _Fragment } from "react/jsx-runtime";
14
14
  const BrushSizes = [1, 5, 7];
15
15
  const SignaturePopup = props => {
16
+ const {
17
+ theme
18
+ } = useEditorContext();
19
+ const classes = useCommonStyle(theme);
16
20
  const {
17
21
  onSave,
18
22
  onClear,
@@ -110,6 +114,7 @@ const SignaturePopup = props => {
110
114
  open: open,
111
115
  onClose: handleClose,
112
116
  fullWidth: true,
117
+ sx: classes.signaturePopup,
113
118
  children: /*#__PURE__*/_jsx(Grid, {
114
119
  container: true,
115
120
  children: /*#__PURE__*/_jsxs(Grid, {
@@ -370,4 +375,4 @@ const SignaturePopup = props => {
370
375
  };
371
376
 
372
377
  // export default SignaturePopup;
373
- export default styled(SignaturePopup)(CommonStyle);
378
+ export default SignaturePopup;
@@ -30,7 +30,12 @@ const editorStyles = ({
30
30
  color: "#0f172a",
31
31
  "&.no-color": {
32
32
  backgroundColor: theme?.palette?.editor?.background,
33
- color: theme?.palette?.editor?.textColor
33
+ color: theme?.palette?.editor?.textColor,
34
+ "& .signed-btn": {
35
+ "& img": {
36
+ backgroundColor: "#FFF"
37
+ }
38
+ }
34
39
  },
35
40
  "& .max-content": {
36
41
  width: "100%",
@@ -32,7 +32,7 @@ const miniToolbarStyles = theme => ({
32
32
  borderColor: theme?.palette?.editor?.borderColor,
33
33
  "& button": {
34
34
  "& svg": {
35
- stroke: theme?.palette?.editor?.textColor
35
+ stroke: theme?.palette?.editor?.svgStroke
36
36
  },
37
37
  "&.active": {
38
38
  "& svg": {
@@ -107,8 +107,8 @@ const AddTemplates = props => {
107
107
  case "Starter":
108
108
  case "Proposal":
109
109
  case "Page":
110
+ case "Brief":
110
111
  case "Contract":
111
- case "404 Page":
112
112
  return /*#__PURE__*/_jsx(TemplateCard, {
113
113
  classes: classes,
114
114
  onSelectTemplate: onSelectTemplate,
@@ -128,10 +128,19 @@ const AddTemplates = props => {
128
128
  classes: classes,
129
129
  onSelectTemplate: onSelectTemplate,
130
130
  m: mapData,
131
- fullScreen: fullScreen
131
+ fullScreen: fullScreen,
132
+ height: "smallCard"
133
+ }, `template_Card_${mapData.id}_popup`);
134
+ case "404 Page":
135
+ return /*#__PURE__*/_jsx(FullViewCard, {
136
+ classes: classes,
137
+ onSelectTemplate: onSelectTemplate,
138
+ m: mapData,
139
+ fullScreen: fullScreen,
140
+ height: "mediumCard"
132
141
  }, `template_Card_${mapData.id}_popup`);
133
142
  default:
134
- /*#__PURE__*/_jsx(TemplateCard, {
143
+ return /*#__PURE__*/_jsx(TemplateCard, {
135
144
  classes: classes,
136
145
  onSelectTemplate: onSelectTemplate,
137
146
  m: mapData,
@@ -26,7 +26,8 @@ const FullViewCard = props => {
26
26
  const {
27
27
  classes,
28
28
  m,
29
- onSelectTemplate
29
+ onSelectTemplate,
30
+ height = 'smallCard'
30
31
  } = props;
31
32
  return /*#__PURE__*/_jsx(Grid, {
32
33
  item: true,
@@ -40,7 +41,8 @@ const FullViewCard = props => {
40
41
  component: "div",
41
42
  image: m?.thumbnail,
42
43
  alt: m?.title,
43
- sx: classes.fullViewCardMedia
44
+ sx: classes.fullViewCardMedia,
45
+ className: height
44
46
  }), /*#__PURE__*/_jsx(Select, {
45
47
  classes: classes,
46
48
  onSelectTemplate: onSelectTemplate,
@@ -376,13 +376,19 @@ const usePopupStyle = theme => ({
376
376
  },
377
377
  fullViewCardMedia: {
378
378
  width: "100%",
379
- height: "130px",
380
379
  backgroundPosition: "left top",
381
380
  backgroundSize: "100% auto",
382
381
  zIndex: 1,
383
382
  position: "relative",
384
383
  "&.fullscreen": {
385
384
  height: "130px"
385
+ },
386
+ "&.smallCard": {
387
+ height: "130px"
388
+ },
389
+ "&.mediumCard": {
390
+ height: "250px",
391
+ boxShadow: "0px 1px 3px 3px rgba(0,0,0,0.12)"
386
392
  }
387
393
  },
388
394
  buttonCardMedia: {
@@ -6,8 +6,10 @@ import { FcAddRow, FcAddColumn } from "react-icons/fc";
6
6
  import { AiFillEdit, AiOutlineInsertRowBelow, AiOutlineInsertRowRight, AiOutlineDelete, AiFillTag, AiOutlineUpload, AiOutlineArrowsAlt, AiOutlineInsertRowAbove, AiOutlineInsertRowLeft, AiFillHtml5 } from "react-icons/ai";
7
7
  import { SiLatex } from "react-icons/si";
8
8
  import { RiDeleteColumn, RiDeleteRow } from "react-icons/ri";
9
- import { IoIosImage, IoMdArrowDroprightCircle, IoMdArrowDropdownCircle } from "react-icons/io";
9
+ import { IoIosImage } from "react-icons/io";
10
10
  import { GridIcon, AccordionIcon, SignatureIcon, ButtonIcon, Carousal, FormIcon, BoldIcon, FontFamilyIcon, FontSizeIcon, ImageIcon, ItalicIcon, LinkIcon, StrikethroughIcon, TableIcon, UnderLineIcon, VideoIcon, CheckboxIcon, AppHeader, MoreHorizontal, UploadImage, DocsUpload, LeftArrow, RightArrow, CheckListButton, CheckListButtonActive, ExcelIcon, CsvIcon, DividerIcon } from "./iconslist";
11
+ import ArrowRightIcon from '@mui/icons-material/ArrowRight';
12
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
11
13
  import { jsx as _jsx } from "react/jsx-runtime";
12
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
13
15
  const iconList = {
@@ -175,10 +177,10 @@ const iconList = {
175
177
  media: /*#__PURE__*/_jsx(MdOutlinePermMedia, {
176
178
  size: 20
177
179
  }),
178
- accordionArrow: /*#__PURE__*/_jsx(IoMdArrowDroprightCircle, {
180
+ accordionArrow: /*#__PURE__*/_jsx(ArrowRightIcon, {
179
181
  size: 20
180
182
  }),
181
- accordionArrowDown: /*#__PURE__*/_jsx(IoMdArrowDropdownCircle, {
183
+ accordionArrowDown: /*#__PURE__*/_jsx(ArrowDropDownIcon, {
182
184
  size: 20
183
185
  }),
184
186
  appHeader: /*#__PURE__*/_jsx(AppHeader, {}),
@@ -24,6 +24,11 @@ const fieldStyle = [{
24
24
  label: "Placeholder",
25
25
  key: "placeholder",
26
26
  type: "text"
27
+ }, {
28
+ label: "Is required",
29
+ key: "required",
30
+ type: "selectBox",
31
+ placeholder: "Is required"
27
32
  }]
28
33
  }, {
29
34
  tab: "Padding",
@@ -83,7 +83,7 @@ const StyleBuilder = props => {
83
83
  setElementProps({
84
84
  ...elementProps,
85
85
  ...data,
86
- name: data?.element === "email" ? "field_email" : data?.name
86
+ field_type: data?.element
87
87
  });
88
88
  };
89
89
  const handleSave = () => {
@@ -50,6 +50,39 @@ const useCommonStyle = theme => ({
50
50
  color: theme?.palette?.editor?.textColor
51
51
  }
52
52
  }
53
+ },
54
+ signaturePopup: {
55
+ "& .MuiPaper-root": {
56
+ backgroundColor: theme?.palette?.editor?.background,
57
+ "& .signature-canvas": {
58
+ backgroundColor: "#FFF"
59
+ },
60
+ "& label": {
61
+ color: theme?.palette?.editor?.textColor
62
+ },
63
+ "& input": {
64
+ color: theme?.palette?.editor?.textColor,
65
+ backgroundColor: theme?.palette?.editor?.background
66
+ },
67
+ "& .react-datepicker__input-container": {
68
+ "& svg": {
69
+ fill: theme?.palette?.editor?.textColor
70
+ }
71
+ },
72
+ "& fieldset": {
73
+ borderColor: theme?.palette?.editor?.textColor
74
+ },
75
+ "& .upload-wrapper-ui": {
76
+ "& .MuiTypography-root": {
77
+ color: theme?.palette?.editor?.textColor
78
+ }
79
+ },
80
+ "& .typesignature-fontfamily": {
81
+ "& button": {
82
+ color: theme?.palette?.editor?.textColor
83
+ }
84
+ }
85
+ }
53
86
  }
54
87
  });
55
88
  export default useCommonStyle;
@@ -9,6 +9,7 @@ export const formField = () => {
9
9
  children: [{
10
10
  text: ""
11
11
  }],
12
+ field_type: 'text',
12
13
  bgColor: "rgba(255, 255, 255, 1)",
13
14
  borderColor: "#ccc",
14
15
  bannerSpacing: {
@@ -81,4 +81,22 @@ export const updatePageSettings = (editor, pageProps = {}) => {
81
81
  } catch (err) {
82
82
  console.log(err);
83
83
  }
84
+ };
85
+ export const focusOnFirstParagraph = editor => {
86
+ try {
87
+ const [paragraphNode] = Editor.nodes(editor, {
88
+ at: [],
89
+ match: n => {
90
+ return !Editor.isEditor(n) && Element.isElement(n) && n.text !== undefined && !n.type;
91
+ }
92
+ });
93
+ if (paragraphNode && paragraphNode[1] !== undefined) {
94
+ Transforms.select(editor, {
95
+ path: paragraphNode[1],
96
+ offset: 0
97
+ });
98
+ }
99
+ } catch (err) {
100
+ console.log(err);
101
+ }
84
102
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "1.9.8",
3
+ "version": "1.9.9",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"