@flozy/editor 4.0.5 → 4.0.7

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.
@@ -21,15 +21,12 @@ const scrollToAIInput = editor => {
21
21
  } else {
22
22
  selectionRect = ReactEditor.toDOMRange(editor, getNextLine(editor).at).getBoundingClientRect();
23
23
  }
24
- const selectionScrollBottom = selectionRect.bottom;
24
+ const wrapperTop = slateWrapper.getBoundingClientRect().top;
25
+ const cursorViewPortPosition = selectionRect.bottom - wrapperTop; // here the slatewrapper is the viewport, not the whole screen. We are finding the position of the cursor/selection relative to the slate wrapper, that why we are subracting the slate wrapper top with selection bottom
25
26
 
26
- // if the cursor or selection top position is greater than 80
27
- if (selectionScrollBottom > 80) {
27
+ if (cursorViewPortPosition > 80) {
28
28
  // scroll to top of the slateWrapper
29
- slateWrapper.scrollTo({
30
- top: slateWrapper.scrollTop + selectionScrollBottom - 80,
31
- behavior: "smooth"
32
- });
29
+ slateWrapper.scrollBy(0, cursorViewPortPosition - 80);
33
30
  }
34
31
  }, 200);
35
32
  } catch (err) {
@@ -62,13 +62,14 @@ const EditorButton = props => {
62
62
  } = actionTrigger || {
63
63
  options: []
64
64
  };
65
- const isTrigger = linkType === "actionTrigger";
65
+ const isTrigger = linkType === "nextTrigger" || linkType === "prevTrigger";
66
66
  const refURl = isTrigger ? buttonLink?.url : url;
67
67
  const BtnIcon = buttonIcon ? buttonIcon : null;
68
68
  windowVar.lastButtonProps = element;
69
69
  const handleTrigger = async () => {
70
70
  if (metadata?.buttonLink?.handler) {
71
- metadata.buttonLink.handler("click");
71
+ const response = isTrigger ? linkType : "click";
72
+ metadata.buttonLink.handler(response);
72
73
  } else if (redirectOnURLResult) {
73
74
  // call api and redirect based on api result
74
75
  const apiResult = await actionButtonRedirect({}, {
@@ -71,11 +71,11 @@ const FormWorkflow = props => {
71
71
  children: [/*#__PURE__*/_jsx(Grid, {
72
72
  item: true,
73
73
  sx: classes.radioBtn,
74
- children: /*#__PURE__*/_jsx(RadioGroup, {
74
+ children: /*#__PURE__*/_jsxs(RadioGroup, {
75
75
  name: "set timing",
76
76
  value: schedule,
77
77
  defaultValue: 1,
78
- children: /*#__PURE__*/_jsx(FormControlLabel, {
78
+ children: [/*#__PURE__*/_jsx(FormControlLabel, {
79
79
  value: "immediately",
80
80
  label: "Immediately",
81
81
  onChange: () => {
@@ -84,7 +84,16 @@ const FormWorkflow = props => {
84
84
  control: /*#__PURE__*/_jsx(Radio, {
85
85
  size: "small"
86
86
  })
87
- })
87
+ }), /*#__PURE__*/_jsx(FormControlLabel, {
88
+ value: "after",
89
+ label: "After",
90
+ onChange: () => {
91
+ setSchedule("after");
92
+ },
93
+ control: /*#__PURE__*/_jsx(Radio, {
94
+ size: "small"
95
+ })
96
+ })]
88
97
  })
89
98
  }), schedule === "after" && /*#__PURE__*/_jsx(Grid, {
90
99
  item: true,
@@ -18,6 +18,7 @@ import { onPasteRnDNode } from "../../helper";
18
18
  import focusOnNewItem from "../../helper/RnD/focusOnNewItem";
19
19
  import { appHeaderNode } from "../../utils/insertAppHeader";
20
20
  import { FORM_NODE } from "../../utils/form";
21
+ import { DEFAULT_TABLE_NODE } from "../../utils/table";
21
22
  import itemOptions from "./Options/sectionItemOptions";
22
23
  import { jsx as _jsx } from "react/jsx-runtime";
23
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -158,7 +159,7 @@ const FreeGrid = props => {
158
159
  marginTop: 0,
159
160
  top: 0,
160
161
  width: 170,
161
- height: 80
162
+ height: 30
162
163
  }], {
163
164
  at: [...insertAt]
164
165
  });
@@ -189,14 +190,16 @@ const FreeGrid = props => {
189
190
  top: 12,
190
191
  right: 12,
191
192
  bottom: 12
192
- }
193
+ },
194
+ textAlign: "center",
195
+ label: "Get Started"
193
196
  }],
194
197
  gridArea: "3 / 1 / 4 / 2",
195
198
  left: 50,
196
199
  marginTop: 0,
197
200
  top: 0,
198
- width: 170,
199
- height: 80
201
+ width: 143,
202
+ height: 50
200
203
  }], {
201
204
  at: [...insertAt]
202
205
  });
@@ -237,6 +240,18 @@ const FreeGrid = props => {
237
240
  at: [...insertAt]
238
241
  });
239
242
  break;
243
+ case "addTable":
244
+ Transforms.insertNodes(editor, [{
245
+ ...insertFreeGridItem("table", {
246
+ ...DEFAULT_TABLE_NODE()
247
+ }, {
248
+ height: 130,
249
+ width: 400
250
+ })
251
+ }], {
252
+ at: [...insertAt]
253
+ });
254
+ break;
240
255
  case "addBox":
241
256
  Transforms.insertNodes(editor, [{
242
257
  ...insertFreeGridItem("box", {
@@ -254,7 +269,7 @@ const FreeGrid = props => {
254
269
  ...insertFreeGridItem("form", {
255
270
  ...FORM_NODE()
256
271
  }, {
257
- height: 100,
272
+ height: 92,
258
273
  width: 400
259
274
  })
260
275
  }], {
@@ -24,7 +24,11 @@ const AddElement = props => {
24
24
  }), /*#__PURE__*/_jsx(ListItemButton, {
25
25
  className: "item-wrapper",
26
26
  onClick: handleClick("addVideo"),
27
- children: "Video"
27
+ children: "Embed or Video"
28
+ }), /*#__PURE__*/_jsx(ListItemButton, {
29
+ className: "item-wrapper",
30
+ onClick: handleClick("addTable"),
31
+ children: "Table"
28
32
  }), /*#__PURE__*/_jsx(ListItemButton, {
29
33
  className: "item-wrapper",
30
34
  onClick: handleClick("addBox"),
@@ -4,8 +4,9 @@ const buttonOptions = ["settings", "link", "saveAsTemplate", "close"];
4
4
  const imageOptions = ["settings", "link", "saveAsTemplate", "close"];
5
5
  const boxOptions = ["settings", "link", "saveAsTemplate", "close"];
6
6
  const appHeaderOptions = ["settings", "saveAsTemplate", "close"];
7
+ const tableOptions = ["drag", "edit", "settings", "saveAsTemplate", "close"];
7
8
  const sectionOptions = ["addElement", "settings", "moveUp", "moveDown", "saveAsTemplate", "more"];
8
- const formOptions = ["drag", "edit", "settings", "addFormField", "workFlow", "close"];
9
+ const formOptions = ["drag", "edit", "settings", "addFormField", "workFlow", "saveAsTemplate", "close"];
9
10
  const itemOptions = {
10
11
  default: commonOptions,
11
12
  text: textOptions,
@@ -14,6 +15,7 @@ const itemOptions = {
14
15
  box: boxOptions,
15
16
  appHeader: appHeaderOptions,
16
17
  form: formOptions,
17
- section: sectionOptions
18
+ section: sectionOptions,
19
+ table: tableOptions
18
20
  };
19
21
  export default itemOptions;
@@ -150,6 +150,9 @@ const useFreeGridStyles = ({
150
150
  },
151
151
 
152
152
  "& .fgi_type_form": {
153
+ "& .form-wrapper": {
154
+ padding: "0px !important"
155
+ },
153
156
  "& legend": {
154
157
  paddingLeft: "16px",
155
158
  paddingTop: "16px",
@@ -170,6 +173,21 @@ const useFreeGridStyles = ({
170
173
  }
171
174
  }
172
175
  },
176
+ "& .fgi_type_table": {
177
+ "& .tableToolBar": {
178
+ right: "0px",
179
+ left: "auto",
180
+ top: "-34px",
181
+ display: "flex",
182
+ flexDirection: "row-reverse",
183
+ "& .toolbtn.settings": {
184
+ display: "none"
185
+ },
186
+ "& .toolbtn.remove": {
187
+ display: "none"
188
+ }
189
+ }
190
+ },
173
191
  /** element toolbar hide */
174
192
  "& .element-toolbar": {
175
193
  display: "none"
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { useSelected, useSlateStatic } from "slate-react";
4
- import { Box, IconButton, Tooltip, Table as TableComp, TableBody, Popper, Typography } from "@mui/material";
4
+ import { Box, IconButton, Tooltip, Table as TableComp, TableBody } from "@mui/material";
5
5
  import AlignHorizontalLeftIcon from "@mui/icons-material/AlignHorizontalLeft";
6
6
  import AlignHorizontalRightIcon from "@mui/icons-material/AlignHorizontalRight";
7
7
  import AlignVerticalTopIcon from "@mui/icons-material/AlignVerticalTop";
@@ -15,7 +15,6 @@ import { TableUtil } from "../../utils/table";
15
15
  import TablePopup from "./TablePopup";
16
16
  import { useEditorSelection } from "../../hooks/useMouseMove";
17
17
  import TableStyles from "./Styles";
18
- import useClickOutside from "../../hooks/useClickOutside";
19
18
  import "./table.css";
20
19
  import { jsx as _jsx } from "react/jsx-runtime";
21
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -150,7 +149,7 @@ const Table = props => {
150
149
  title: text,
151
150
  arrow: true,
152
151
  children: /*#__PURE__*/_jsx(IconButton, {
153
- className: "toolbtn",
152
+ className: `toolbtn ${action?.type}`,
154
153
  onClick: handleAction(action),
155
154
  children: /*#__PURE__*/_jsx(Icon, {})
156
155
  })
@@ -134,10 +134,13 @@ export const SelectPage = props => {
134
134
  });
135
135
  };
136
136
  export const Trigger = props => {
137
- return /*#__PURE__*/_jsx(Typography, {
137
+ const {
138
+ nav
139
+ } = props;
140
+ return /*#__PURE__*/_jsxs(Typography, {
138
141
  variant: "subtitle1",
139
142
  gutterBottom: true,
140
- children: "Choosing this will trigger the next step"
143
+ children: ["Choosing this will trigger the ", nav.type, " step"]
141
144
  });
142
145
  };
143
146
  const scrollToOptions = [{
@@ -18,7 +18,8 @@ const MAP_COMPONENT = {
18
18
  webAddress: TextInput,
19
19
  email: TextInput,
20
20
  phone: TextInput,
21
- actionTrigger: Trigger,
21
+ nextTrigger: Trigger,
22
+ prevTrigger: Trigger,
22
23
  scrollTopOrBottom: ScrollTopBottom,
23
24
  page: SelectPage
24
25
  };
@@ -3,8 +3,13 @@ export const getNavOptions = (hideTools = []) => {
3
3
  label: "None",
4
4
  value: ""
5
5
  }, {
6
- label: "Trigger",
7
- value: "actionTrigger"
6
+ label: "Next Trigger",
7
+ value: "nextTrigger",
8
+ type: "next"
9
+ }, {
10
+ label: "Previous Trigger",
11
+ value: "prevTrigger",
12
+ type: "previous"
8
13
  }, {
9
14
  label: "Web Address",
10
15
  value: "webAddress",
@@ -0,0 +1,77 @@
1
+ import React from "react";
2
+ import { Node, Transforms } from "slate";
3
+ import { Box } from "@mui/material";
4
+ import { StyleContent } from "../../../StyleBuilder";
5
+ import tableStyle from "../../../StyleBuilder/tableStyle";
6
+ import { TableUtil } from "../../../../utils/table";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const TableSettings = props => {
9
+ const {
10
+ editor,
11
+ path,
12
+ customProps
13
+ } = props;
14
+ const item_path = path?.split("|").map(m => parseInt(m));
15
+ const element_path = [...item_path, 0];
16
+ const element = Node.get(editor, element_path);
17
+ const getTableProps = () => {
18
+ try {
19
+ const firstTCell = [...element_path, 0, 0, 0, 0];
20
+ const firstTCellTarget = {
21
+ anchor: {
22
+ path: [...firstTCell],
23
+ offset: 0
24
+ },
25
+ focus: {
26
+ path: [...firstTCell],
27
+ offset: 0
28
+ }
29
+ };
30
+ Transforms.select(editor, firstTCellTarget);
31
+ const table = new TableUtil(editor);
32
+ const tableProps = table.getTableProps();
33
+ return {
34
+ table,
35
+ tableProps
36
+ };
37
+ } catch (err) {
38
+ return element;
39
+ }
40
+ };
41
+ const onChange = data => {
42
+ try {
43
+ const {
44
+ table,
45
+ tableProps
46
+ } = getTableProps();
47
+ const updateData = {
48
+ ...data
49
+ };
50
+ delete updateData.children;
51
+ delete updateData.type;
52
+ table.updateTableStyle(updateData, {
53
+ ...tableProps
54
+ });
55
+ } catch (err) {
56
+ console.log(err);
57
+ }
58
+ };
59
+ const handleClose = () => {
60
+ console.log("close");
61
+ };
62
+ return /*#__PURE__*/_jsx(Box, {
63
+ component: "div",
64
+ className: "item-w",
65
+ children: tableStyle?.map((m, i) => {
66
+ return /*#__PURE__*/_jsx(StyleContent, {
67
+ renderTabs: tableStyle,
68
+ value: m.value,
69
+ element: getTableProps()?.tableProps?.styleProps || {},
70
+ onChange: onChange,
71
+ customProps: customProps,
72
+ handleClose: handleClose
73
+ }, `tab_${m.value}_$${i}`);
74
+ })
75
+ });
76
+ };
77
+ export default TableSettings;
@@ -5,6 +5,7 @@ import VideoSettings from "./VideoSettings";
5
5
  import BoxSettings from "./BoxSettings";
6
6
  import AppHeaderSettings from "./AppHeaderSettings";
7
7
  import FormSettings from "./FormSettings";
8
+ import TableSettings from "./TableSettings";
8
9
  const SettingsComponents = {
9
10
  text: TextSettings,
10
11
  button: ButtonSettings,
@@ -12,6 +13,7 @@ const SettingsComponents = {
12
13
  video: VideoSettings,
13
14
  box: BoxSettings,
14
15
  appHeader: AppHeaderSettings,
15
- form: FormSettings
16
+ form: FormSettings,
17
+ table: TableSettings
16
18
  };
17
19
  export default SettingsComponents;
@@ -2,17 +2,19 @@ export const settingsLabel = {
2
2
  text: "Text Settings",
3
3
  button: "Button Settings",
4
4
  image: "Image Settings",
5
- video: "Video Settings",
5
+ video: "Embed or Video Settings",
6
6
  box: "Box Settings",
7
7
  appHeader: "App Header Settings",
8
- form: "Form Settings"
8
+ form: "Form Settings",
9
+ table: "Table Settings"
9
10
  };
10
11
  export const ItemTypes = {
11
12
  text: "Text",
12
13
  button: "Button",
13
14
  image: "Image",
14
- video: "Video",
15
+ video: "Embed or Video",
15
16
  box: "Box",
16
17
  appHeader: "App Header",
17
- form: "Form"
18
+ form: "Form",
19
+ table: "Table"
18
20
  };
@@ -273,7 +273,6 @@ const RnD = props => {
273
273
  };
274
274
  const onDragStart = e => {
275
275
  e.preventDefault();
276
- console.log(e?.target?.dataset);
277
276
  if (e?.target?.dataset?.path?.split(",").join("|") === sp) {
278
277
  const {
279
278
  left,
@@ -59,7 +59,7 @@ const ButtonLink = props => {
59
59
  value: elementProps?.url
60
60
  })
61
61
  });
62
- } else if (value?.linkType === "actionTrigger") {
62
+ } else if (value?.linkType === "prevTrigger" || value?.linkType === "nextTrigger") {
63
63
  return null;
64
64
  }
65
65
  };
@@ -4,7 +4,8 @@ const sectionStyle = [{
4
4
  fields: [{
5
5
  label: "Section Name",
6
6
  key: "sectionName",
7
- type: "text"
7
+ type: "text",
8
+ placeholder: "Welcome"
8
9
  }]
9
10
  }, {
10
11
  tab: "Colors",
@@ -208,7 +208,8 @@ export const onPasteRnDNode = (editor, {
208
208
  left: parsed_node?.left + 20,
209
209
  marginTop: parsed_node?.marginTop + 20,
210
210
  // to maintain unique drop location in different section also
211
- gridArea: "1 / 1 / 2 / 2"
211
+ gridArea: "1 / 1 / 2 / 2",
212
+ xs_updatedOn: null
212
213
  }], {
213
214
  at: new_path
214
215
  });
@@ -42,37 +42,150 @@ export const insertFreeGrid = (editor, path, extProps) => {
42
42
  children: [{
43
43
  type: "paragraph",
44
44
  children: [{
45
- text: "Heading One",
46
- fontSize: {
47
- xs: "38px",
48
- sm: "54px",
49
- md: "54px",
50
- lg: "54px"
45
+ type: "grid",
46
+ grid: "container",
47
+ children: [{
48
+ type: "grid-item",
49
+ grid: 12,
50
+ children: [{
51
+ type: "alignCenter",
52
+ children: [{
53
+ type: "paragraph",
54
+ children: [{
55
+ text: "Lorem ipsum sit ",
56
+ fontSize: {
57
+ xs: "80px",
58
+ sm: "80px",
59
+ md: "80px",
60
+ lg: "80px"
61
+ },
62
+ fontFamily: "PoppinsBold",
63
+ color: "rgb(132, 141, 151)"
64
+ }]
65
+ }]
66
+ }, {
67
+ type: "alignCenter",
68
+ children: [{
69
+ type: "paragraph",
70
+ children: [{
71
+ fontSize: {
72
+ xs: "80px",
73
+ sm: "80px",
74
+ md: "80px",
75
+ lg: "80px"
76
+ },
77
+ fontFamily: "PoppinsBold",
78
+ text: "amet.",
79
+ color: "rgb(132, 141, 151)"
80
+ }, {
81
+ fontSize: {
82
+ xs: "80px",
83
+ sm: "80px",
84
+ md: "80px",
85
+ lg: "80px"
86
+ },
87
+ fontFamily: "PoppinsBold",
88
+ text: " "
89
+ }, {
90
+ fontSize: {
91
+ xs: "80px",
92
+ sm: "80px",
93
+ md: "80px",
94
+ lg: "80px"
95
+ },
96
+ fontFamily: "PoppinsBold",
97
+ text: "Lorem",
98
+ color: "rgb(131, 96, 253)"
99
+ }]
100
+ }]
101
+ }],
102
+ bgColor: "rgba(255, 255, 255, 0)",
103
+ borderColor: "rgba(204, 204, 204, 0)",
104
+ lockSpacing: true,
105
+ bannerSpacing: {
106
+ top: "16",
107
+ left: "16",
108
+ right: "16",
109
+ bottom: "16"
110
+ }
111
+ }],
112
+ alignment: {
113
+ flexDirection: "column"
51
114
  },
52
- fontFamily: "PoppinsBold"
115
+ lockSpacing: false,
116
+ bannerSpacing: {
117
+ top: "32",
118
+ left: "16",
119
+ right: "16",
120
+ bottom: "16"
121
+ },
122
+ gridSize: 8
53
123
  }]
54
124
  }]
55
125
  }],
56
- gridArea: "2 / 1 / 3 / 2",
57
- height: 88,
126
+ gridArea: "1 / 1 / 2 / 2",
127
+ height: 323,
58
128
  width: 746,
59
- left: 129,
60
- marginTop: 23,
129
+ left: 127,
130
+ marginTop: 25,
61
131
  top_xs: 105.1875,
62
132
  left_xs: 22,
63
133
  marginTop_xs: 38,
64
134
  width_xs: 272,
65
135
  height_xs: 163.0078125,
66
136
  gridArea_xs: "2 / 1 / 3 / 2",
67
- updated_at: 1728554109479,
68
- lg_updatedOn: 1726290562773,
69
- xs_updatedOn: 1728554109478
137
+ updated_at: 1729055084817,
138
+ lg_updatedOn: 1729055010519,
139
+ xs_updatedOn: null
140
+ }, {
141
+ type: "freegridItem",
142
+ childType: "button",
143
+ children: [{
144
+ type: "button",
145
+ children: [{
146
+ text: ""
147
+ }],
148
+ buttonLink: {
149
+ linkType: "webAddress"
150
+ },
151
+ iconPosition: "start",
152
+ bgColor: "#2563EB",
153
+ textColor: "#FFF",
154
+ borderRadius: {
155
+ topLeft: 30,
156
+ topRight: 30,
157
+ bottomLeft: 30,
158
+ bottomRight: 30
159
+ },
160
+ bannerSpacing: {
161
+ left: 12,
162
+ top: 12,
163
+ right: 12,
164
+ bottom: 12
165
+ },
166
+ textAlign: "center",
167
+ label: "Get Started"
168
+ }],
169
+ gridArea: "7 / 1 / 8 / 2",
170
+ left: 428,
171
+ marginTop: 42,
172
+ top: 0,
173
+ width: 143,
174
+ height: 50,
175
+ lg_updatedOn: 1729055084816,
176
+ updated_at: 1729055084817,
177
+ top_xs: 366,
178
+ left_xs: 24,
179
+ marginTop_xs: 12,
180
+ width_xs: 272,
181
+ height_xs: 48,
182
+ gridArea_xs: "8 / 1 / 9 / 2"
70
183
  }],
71
184
  height_xs: 593.0625,
72
- updated_at: 1728554109479,
185
+ updated_at: 1729055084816,
73
186
  width: 0,
74
- sectionBgColor: "rgb(222, 99, 138)",
75
- xs_updatedOn: 1727921628092,
187
+ sectionBgColor: "rgb(255, 255, 255)",
188
+ xs_updatedOn: null,
76
189
  sectionName: "Home"
77
190
  }];
78
191
  const newPath = path ? path : editor?.selection?.anchor?.path;
@@ -247,7 +247,8 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
247
247
  props.target = "_blank";
248
248
  }
249
249
  break;
250
- case "actionTrigger":
250
+ case "nextTrigger":
251
+ case "prevTrigger":
251
252
  if (!readOnly) {
252
253
  props.component = "button";
253
254
  props.onClick = () => {};
@@ -1,6 +1,111 @@
1
1
  import { Transforms, Editor, Range, Element, Path, Node } from "slate";
2
2
  import { ReactEditor } from "slate-react";
3
3
  import { customInsertNode } from "./helper";
4
+ export const DEFAULT_TABLE_NODE = () => ({
5
+ type: "table",
6
+ children: [{
7
+ type: "table-row",
8
+ children: [{
9
+ type: "table-cell",
10
+ children: [{
11
+ type: "paragraph",
12
+ children: [{
13
+ text: ""
14
+ }],
15
+ cellBgColor: "#FFFFFF"
16
+ }]
17
+ }, {
18
+ type: "table-cell",
19
+ children: [{
20
+ type: "paragraph",
21
+ children: [{
22
+ text: ""
23
+ }],
24
+ cellBgColor: "#FFFFFF"
25
+ }]
26
+ }, {
27
+ type: "table-cell",
28
+ children: [{
29
+ type: "paragraph",
30
+ children: [{
31
+ text: ""
32
+ }],
33
+ cellBgColor: "#FFFFFF"
34
+ }]
35
+ }]
36
+ }, {
37
+ type: "table-row",
38
+ children: [{
39
+ type: "table-cell",
40
+ children: [{
41
+ type: "paragraph",
42
+ children: [{
43
+ text: ""
44
+ }],
45
+ cellBgColor: "#FFFFFF"
46
+ }]
47
+ }, {
48
+ type: "table-cell",
49
+ children: [{
50
+ type: "paragraph",
51
+ children: [{
52
+ text: ""
53
+ }],
54
+ cellBgColor: "#FFFFFF"
55
+ }]
56
+ }, {
57
+ type: "table-cell",
58
+ children: [{
59
+ type: "paragraph",
60
+ children: [{
61
+ text: ""
62
+ }],
63
+ cellBgColor: "#FFFFFF"
64
+ }],
65
+ size: {
66
+ widthInPercent: 100,
67
+ height: 100,
68
+ width: 365.3307291666667
69
+ }
70
+ }]
71
+ }, {
72
+ type: "table-row",
73
+ children: [{
74
+ type: "table-cell",
75
+ children: [{
76
+ type: "paragraph",
77
+ children: [{
78
+ text: ""
79
+ }],
80
+ cellBgColor: "#FFFFFF"
81
+ }]
82
+ }, {
83
+ type: "table-cell",
84
+ children: [{
85
+ type: "paragraph",
86
+ children: [{
87
+ text: ""
88
+ }],
89
+ cellBgColor: "#FFFFFF"
90
+ }]
91
+ }, {
92
+ type: "table-cell",
93
+ children: [{
94
+ type: "paragraph",
95
+ children: [{
96
+ text: ""
97
+ }],
98
+ cellBgColor: "#FFFFFF"
99
+ }],
100
+ size: {
101
+ height: 300,
102
+ widthInPercent: 100
103
+ }
104
+ }]
105
+ }],
106
+ rows: 3,
107
+ columns: 3
108
+ });
4
109
  const prefixKey = (obj, pk = "") => {
5
110
  return Object.keys(obj).reduce((a, b) => {
6
111
  a[`${pk}${b}`] = obj[b];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "4.0.5",
3
+ "version": "4.0.7",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"