@flozy/editor 4.0.6 → 4.0.8

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 (58) hide show
  1. package/dist/Editor/ChatEditor.js +21 -25
  2. package/dist/Editor/CommonEditor.js +3 -0
  3. package/dist/Editor/Editor.css +12 -1
  4. package/dist/Editor/Elements/AI/PopoverAIInput.js +3 -2
  5. package/dist/Editor/Elements/Accordion/Accordion.js +1 -1
  6. package/dist/Editor/Elements/Accordion/AccordionSummary.js +21 -5
  7. package/dist/Editor/Elements/EmbedScript/Code.js +14 -12
  8. package/dist/Editor/Elements/EmbedScript/EmbedScript.js +7 -115
  9. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +130 -0
  10. package/dist/Editor/Elements/Emoji/EmojiPicker.js +4 -2
  11. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +55 -7
  12. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +8 -2
  13. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +43 -6
  14. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +9 -1
  15. package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +5 -1
  16. package/dist/Editor/Elements/FreeGrid/styles.js +27 -0
  17. package/dist/Editor/Elements/List/CheckList.js +2 -1
  18. package/dist/Editor/Elements/Table/Table.js +3 -4
  19. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  20. package/dist/Editor/Elements/Table/TableRow.js +2 -1
  21. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +66 -0
  22. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +9 -8
  23. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +8 -4
  24. package/dist/Editor/common/ColorPickerButton.js +12 -4
  25. package/dist/Editor/common/FontLoader/FontLoader.js +68 -0
  26. package/dist/Editor/common/Icon.js +4 -0
  27. package/dist/Editor/common/RnD/ElementOptions/Actions.js +7 -0
  28. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +4 -2
  29. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +47 -0
  30. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +77 -0
  31. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +4 -2
  32. package/dist/Editor/common/RnD/ElementSettings/Settings/index.js +5 -1
  33. package/dist/Editor/common/RnD/ElementSettings/settingsConstants.js +8 -4
  34. package/dist/Editor/common/RnD/OptionsPopup/style.js +23 -4
  35. package/dist/Editor/common/RnD/index.js +5 -4
  36. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +2 -1
  37. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +1 -0
  38. package/dist/Editor/common/StyleBuilder/boxStyle.js +31 -0
  39. package/dist/Editor/common/StyleBuilder/buttonStyle.js +1 -0
  40. package/dist/Editor/common/StyleBuilder/embedScriptStyle.js +10 -0
  41. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +15 -9
  42. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +18 -16
  43. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +6 -4
  44. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +19 -3
  45. package/dist/Editor/common/StyleBuilder/formButtonStyle.js +1 -0
  46. package/dist/Editor/common/StyleBuilder/formStyle.js +1 -0
  47. package/dist/Editor/common/StyleBuilder/sectionStyle.js +2 -1
  48. package/dist/Editor/helper/deserialize/index.js +3 -0
  49. package/dist/Editor/helper/index.js +24 -1
  50. package/dist/Editor/helper/theme.js +2 -1
  51. package/dist/Editor/hooks/useMouseMove.js +4 -1
  52. package/dist/Editor/utils/SlateUtilityFunctions.js +4 -10
  53. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +9 -0
  54. package/dist/Editor/utils/embedScript.js +20 -2
  55. package/dist/Editor/utils/freegrid.js +130 -17
  56. package/dist/Editor/utils/mentions.js +2 -0
  57. package/dist/Editor/utils/table.js +105 -0
  58. package/package.json +2 -1
@@ -14,6 +14,7 @@ import useMentions from "./hooks/useMentions";
14
14
  import Shorthands from "./common/Shorthands";
15
15
  import usePopupStyle from "./Toolbar/PopupTool/PopupToolStyle";
16
16
  import { EditorProvider } from "./hooks/useMouseMove";
17
+ import decorators from "./utils/Decorators";
17
18
  import { jsx as _jsx } from "react/jsx-runtime";
18
19
  import { jsxs as _jsxs } from "react/jsx-runtime";
19
20
  const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
@@ -27,7 +28,8 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
27
28
  toolBar = true,
28
29
  onSave,
29
30
  onsubmit,
30
- onBlur = () => {}
31
+ onBlur = () => {},
32
+ isMobile = false
31
33
  } = props;
32
34
  const classes = usePopupStyle(theme);
33
35
  const convertedContent = draftToSlate({
@@ -42,7 +44,6 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
42
44
  const [value, setValue] = useState(convertedContent);
43
45
  const [loadedValue] = useState(value);
44
46
  const [deboundedValue] = useDebounce(value, 500);
45
- const [isExternalUpdate, setIsExternalUpdate] = useState(false);
46
47
  const editor = useMemo(() => {
47
48
  return withCommon(createEditor(), {
48
49
  needLayout
@@ -98,24 +99,24 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
98
99
  data: content
99
100
  });
100
101
  setValue(newValue);
101
- setTimeout(() => {
102
- if (editor.children.length === 0) {
103
- Transforms.insertNodes(editor, newValue);
104
- }
105
- Transforms.select(editor, Editor.end(editor, []));
106
- ReactEditor.focus(editor);
107
- }, 300);
102
+ // setTimeout(() => {
103
+ if (editor.children.length === 0) {
104
+ Transforms.insertNodes(editor, newValue);
105
+ }
106
+ Transforms.select(editor, Editor.end(editor, []));
107
+ ReactEditor.focus(editor);
108
+ // }, 300);
108
109
  } catch {
109
110
  console.log("error:");
110
111
  }
111
112
  }
112
113
  }));
113
- useEffect(() => {
114
- setIsExternalUpdate(true);
115
- setValue(draftToSlate({
116
- data: content
117
- }));
118
- }, [content]);
114
+
115
+ // useEffect(() => {
116
+ // setIsExternalUpdate(true);
117
+ // setValue(draftToSlate({ data: content }));
118
+ // }, [content]);
119
+
119
120
  useEffect(() => {
120
121
  if (JSON.stringify(loadedValue) !== JSON.stringify(deboundedValue) && isInteracted && onSave) {
121
122
  const {
@@ -178,14 +179,9 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
178
179
  });
179
180
  };
180
181
  const handleEditorChange = newValue => {
181
- if (isExternalUpdate) {
182
- setIsExternalUpdate(false);
183
- return;
184
- } else {
185
- setValue(newValue);
186
- if (!isInteracted) {
187
- setIsInteracted(true);
188
- }
182
+ setValue(newValue);
183
+ if (!isInteracted) {
184
+ setIsInteracted(true);
189
185
  }
190
186
  };
191
187
  const Element = props => {
@@ -222,7 +218,7 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
222
218
  event,
223
219
  editor
224
220
  });
225
- } else if (event.key === "Enter") {
221
+ } else if (event.key === "Enter" && !isMobile) {
226
222
  const isEmpty = value.length === 1 && value[0].type === 'paragraph' && value[0].children.length === 1 && value[0].children[0].text === '';
227
223
  if (isEmpty) {
228
224
  event.preventDefault();
@@ -267,9 +263,9 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
267
263
  className: "chatEditorRoot",
268
264
  renderElement: renderElement,
269
265
  renderLeaf: renderLeaf,
266
+ decorate: decorators,
270
267
  placeholder: "Start typing ...",
271
268
  spellCheck: true,
272
- autoFocus: true,
273
269
  onBlur: handleBlur,
274
270
  onKeyDown: onKeyDown
275
271
  }), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
@@ -33,6 +33,7 @@ import PopoverAIInput from "./Elements/AI/PopoverAIInput";
33
33
  import RnDCopy from "./common/RnD/RnDCopy";
34
34
  import SwitchViewport from "./common/RnD/SwitchViewport/SwitchViewport";
35
35
  import { onInsertFragment } from "./utils/RnD/RnDCtrlCmds";
36
+ import FontLoader from "./common/FontLoader/FontLoader";
36
37
  import "./font.css";
37
38
  import "./Editor.css";
38
39
  import "animate.css";
@@ -552,6 +553,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
552
553
  }), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
553
554
  ...htmlAction,
554
555
  handleCodeToText: handleCodeToText
556
+ }), /*#__PURE__*/_jsx(FontLoader, {
557
+ ...props
555
558
  })]
556
559
  }, id)
557
560
  })
@@ -851,6 +851,17 @@ blockquote {
851
851
  text-align: center;
852
852
  }
853
853
 
854
+ .removeScroll::-webkit-outer-spin-button,
855
+ .removeScroll::-webkit-inner-spin-button {
856
+ -webkit-appearance: none;
857
+ margin: 0;
858
+ }
859
+
860
+ /* For Firefox */
861
+ .removeScroll {
862
+ -moz-appearance: textfield;
863
+ }
864
+
854
865
  .borderInput:focus-visible {
855
866
  outline: none !important;
856
867
  }
@@ -900,7 +911,7 @@ blockquote {
900
911
  }
901
912
 
902
913
  .sliderInput {
903
- width: 66px;
914
+ width: 30px;
904
915
  padding: 2px 10px;
905
916
  margin-left: 18px;
906
917
  box-shadow: 0px 4px 16px 0px #0000000d;
@@ -22,10 +22,11 @@ const scrollToAIInput = editor => {
22
22
  selectionRect = ReactEditor.toDOMRange(editor, getNextLine(editor).at).getBoundingClientRect();
23
23
  }
24
24
  const wrapperTop = slateWrapper.getBoundingClientRect().top;
25
- const cursorViewPortPosition = selectionRect.top - wrapperTop;
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
26
+
26
27
  if (cursorViewPortPosition > 80) {
27
28
  // scroll to top of the slateWrapper
28
- slateWrapper.scrollBy(0, selectionRect.bottom - wrapperTop - 80);
29
+ slateWrapper.scrollBy(0, cursorViewPortPosition - 80);
29
30
  }
30
31
  }, 200);
31
32
  } catch (err) {
@@ -160,7 +160,7 @@ const Accordion = props => {
160
160
  children: [/*#__PURE__*/_jsxs("div", {
161
161
  className: "accordion-title",
162
162
  style: {
163
- backgroundColor: bgColor
163
+ background: bgColor
164
164
  },
165
165
  onClick: onToggle,
166
166
  children: [/*#__PURE__*/_jsx(Box, {
@@ -1,4 +1,7 @@
1
1
  import React from "react";
2
+ import { getBorderColor, getTextColor } from "../../helper";
3
+ import { Box } from "@mui/material";
4
+ import { getBreakPointsValue, getTRBLBreakPoints } from "../../helper/theme";
2
5
  import { jsx as _jsx } from "react/jsx-runtime";
3
6
  const AccordionSummary = props => {
4
7
  const {
@@ -9,18 +12,31 @@ const AccordionSummary = props => {
9
12
  const {
10
13
  textColor,
11
14
  bgColor,
12
- borderColor
15
+ borderColor,
16
+ borderRadius,
17
+ bannerSpacing
13
18
  } = element;
14
- return /*#__PURE__*/_jsx("div", {
19
+ const textStyles = getTextColor(textColor);
20
+ const borderStyle = getBorderColor(borderColor);
21
+ return /*#__PURE__*/_jsx(Box, {
15
22
  className: `accordion-summary-container`,
16
23
  ...attributes,
17
24
  style: {
18
25
  width: "100%",
19
26
  position: "relative",
20
- backgroundColor: bgColor,
21
- border: `1px solid ${borderColor}`,
22
- color: textColor
27
+ background: bgColor,
28
+ ...borderStyle
23
29
  },
30
+ sx: {
31
+ borderRadius: {
32
+ ...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
33
+ },
34
+ padding: {
35
+ ...getTRBLBreakPoints(bannerSpacing)
36
+ },
37
+ '& span[data-slate-string="true"]': textStyles
38
+ },
39
+ component: "div",
24
40
  children: children
25
41
  });
26
42
  };
@@ -18,7 +18,7 @@ import { Transforms } from "slate";
18
18
  // return doc.body.innerHTML;
19
19
  // };
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
- import { jsxs as _jsxs } from "react/jsx-runtime";
21
+ import { createElement as _createElement } from "react";
22
22
  const getCode = (embedData, isEncoded) => {
23
23
  if (isEncoded) {
24
24
  return decodeString(embedData);
@@ -75,20 +75,22 @@ const Code = props => {
75
75
  allowedScriptDomains: allowedDomains // for old code's that are already inserted without sanitization
76
76
  });
77
77
 
78
- const slotHtml = document.createRange().createContextualFragment(clean); // Create a 'tiny' document and parse the html string
79
- codeRef.current.innerHTML = ""; // Clear the container
80
- codeRef.current.appendChild(slotHtml);
78
+ if (clean) {
79
+ const slotHtml = document.createRange().createContextualFragment(clean); // Create a 'tiny' document and parse the html string
80
+ codeRef.current.innerHTML = ""; // Clear the container
81
+ codeRef.current.appendChild(slotHtml);
82
+ }
81
83
  }
82
- }, []);
83
- return /*#__PURE__*/_jsxs("div", {
84
+ }, [embedData]);
85
+ return /*#__PURE__*/_createElement("div", {
84
86
  className: "embed-code has-hover",
85
87
  contentEditable: false,
86
88
  ...attributes,
87
- children: [/*#__PURE__*/_jsx("div", {
88
- ref: codeRef
89
- }), children, !readOnly && /*#__PURE__*/_jsx(ToolBar, {
90
- onDelete: onDelete
91
- })]
92
- });
89
+ key: element?.updatedOn
90
+ }, /*#__PURE__*/_jsx("div", {
91
+ ref: codeRef
92
+ }), children, !readOnly && /*#__PURE__*/_jsx(ToolBar, {
93
+ onDelete: onDelete
94
+ }));
93
95
  };
94
96
  export default Code;
@@ -1,70 +1,18 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { useState } from "react";
2
2
  import ToolbarIcon from "../../common/ToolbarIcon";
3
3
  import Icon from "../../common/Icon";
4
- import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, Tooltip } from "@mui/material";
5
- import { insertEmbedScript } from "../../utils/embedScript";
6
- import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
4
+ import EmbedScriptPopup from "./EmbedScriptPopup";
7
5
  import { jsx as _jsx } from "react/jsx-runtime";
8
- import { jsxs as _jsxs } from "react/jsx-runtime";
9
6
  import { Fragment as _Fragment } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
8
  const EmbedScript = props => {
11
9
  const {
12
- editor,
13
- icoBtnType,
14
- customProps
10
+ icoBtnType
15
11
  } = props;
16
12
  const [open, setOpen] = useState(false);
17
- const [code, setCode] = useState("");
18
- const [apiStatus, setApiStatus] = useState({
19
- loading: false,
20
- error: false
21
- });
22
- const [allowedDomains, setAllowedDomains] = useState([]);
23
- const {
24
- loading,
25
- error
26
- } = apiStatus;
27
- useEffect(() => {
28
- customProps.services("allowedDomains", {}).then(data => {
29
- setAllowedDomains(data?.data || []);
30
- }).catch(err => {
31
- console.log(err);
32
- });
33
- }, []);
34
- const updateApiStatus = update => {
35
- setApiStatus(prev => ({
36
- ...prev,
37
- ...update
38
- }));
39
- };
40
- const handleChange = e => {
41
- setCode(e.target.value);
42
- };
43
13
  const handleClick = () => {
44
14
  setOpen(true);
45
15
  };
46
- const onSubmit = async () => {
47
- updateApiStatus({
48
- loading: true
49
- });
50
- const result = await customProps.services("validateCode", {
51
- code
52
- });
53
- const {
54
- error,
55
- sanitizedCode
56
- } = result?.data || {};
57
- updateApiStatus({
58
- loading: false,
59
- error
60
- });
61
- if (!error) {
62
- insertEmbedScript(editor, sanitizedCode || "");
63
- }
64
- };
65
- const onCancel = () => {
66
- setOpen(false);
67
- };
68
16
  return /*#__PURE__*/_jsxs(_Fragment, {
69
17
  children: [/*#__PURE__*/_jsx(ToolbarIcon, {
70
18
  title: "Code",
@@ -73,65 +21,9 @@ const EmbedScript = props => {
73
21
  icon: "embedScript"
74
22
  }),
75
23
  icoBtnType: icoBtnType
76
- }), /*#__PURE__*/_jsxs(Dialog, {
77
- open: open,
78
- fullWidth: true,
79
- children: [/*#__PURE__*/_jsx(DialogTitle, {
80
- children: /*#__PURE__*/_jsxs(Box, {
81
- component: "div",
82
- sx: {
83
- display: "flex",
84
- alignItems: "center",
85
- gap: "6px"
86
- },
87
- children: ["Embed Code", allowedDomains?.length ? /*#__PURE__*/_jsx(Tooltip, {
88
- title: /*#__PURE__*/_jsxs(Box, {
89
- sx: {
90
- textTransform: "none"
91
- },
92
- children: [/*#__PURE__*/_jsx("span", {
93
- style: {
94
- fontWeight: "bold"
95
- },
96
- children: "Allowed Domains"
97
- }), /*#__PURE__*/_jsx("br", {}), allowedDomains.join(", ")]
98
- }),
99
- children: /*#__PURE__*/_jsx(InfoOutlinedIcon, {
100
- color: "gray",
101
- fontSize: "14px",
102
- style: {
103
- fill: "#94A3B8",
104
- cursor: "pointer"
105
- }
106
- })
107
- }) : null]
108
- })
109
- }), /*#__PURE__*/_jsxs(DialogContent, {
110
- children: [/*#__PURE__*/_jsx("textarea", {
111
- value: code,
112
- onChange: handleChange,
113
- style: {
114
- minHeight: "200px",
115
- width: "100%",
116
- resize: "none",
117
- padding: "4px",
118
- boxSizing: "border-box"
119
- }
120
- }), /*#__PURE__*/_jsx(Box, {
121
- component: "div",
122
- color: "red",
123
- children: error ? "There was some error on this code." : ""
124
- })]
125
- }), /*#__PURE__*/_jsxs(DialogActions, {
126
- children: [/*#__PURE__*/_jsx(Button, {
127
- onClick: onSubmit,
128
- disabled: loading,
129
- children: loading ? "Validating" : "Save"
130
- }), /*#__PURE__*/_jsx(Button, {
131
- onClick: onCancel,
132
- children: "Cancel"
133
- })]
134
- })]
24
+ }), /*#__PURE__*/_jsx(EmbedScriptPopup, {
25
+ ...props,
26
+ open: open
135
27
  })]
136
28
  });
137
29
  };
@@ -0,0 +1,130 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, Tooltip } from "@mui/material";
3
+ import { insertEmbedScript, updateEmbedScript } from "../../utils/embedScript";
4
+ import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { Fragment as _Fragment } from "react/jsx-runtime";
8
+ const EmbedScriptPopup = props => {
9
+ const {
10
+ open,
11
+ editor,
12
+ customProps,
13
+ onClose,
14
+ updatePath,
15
+ parentPath
16
+ } = props;
17
+ const [code, setCode] = useState("");
18
+ const [apiStatus, setApiStatus] = useState({
19
+ loading: false,
20
+ error: false
21
+ });
22
+ const [allowedDomains, setAllowedDomains] = useState([]);
23
+ const {
24
+ loading,
25
+ error
26
+ } = apiStatus;
27
+ useEffect(() => {
28
+ customProps.services("allowedDomains", {}).then(data => {
29
+ setAllowedDomains(data?.data || []);
30
+ }).catch(err => {
31
+ console.log(err);
32
+ });
33
+ }, []);
34
+ const updateApiStatus = update => {
35
+ setApiStatus(prev => ({
36
+ ...prev,
37
+ ...update
38
+ }));
39
+ };
40
+ const handleChange = e => {
41
+ setCode(e.target.value);
42
+ };
43
+ const onSubmit = async () => {
44
+ updateApiStatus({
45
+ loading: true
46
+ });
47
+ const result = await customProps.services("validateCode", {
48
+ code
49
+ });
50
+ const {
51
+ error,
52
+ sanitizedCode
53
+ } = result?.data || {};
54
+ updateApiStatus({
55
+ loading: false,
56
+ error
57
+ });
58
+ if (!error) {
59
+ if (updatePath) {
60
+ updateEmbedScript(editor, sanitizedCode || "", updatePath, parentPath);
61
+ } else {
62
+ insertEmbedScript(editor, sanitizedCode || "");
63
+ }
64
+ }
65
+ onClose();
66
+ };
67
+ return /*#__PURE__*/_jsx(_Fragment, {
68
+ children: /*#__PURE__*/_jsxs(Dialog, {
69
+ open: open,
70
+ fullWidth: true,
71
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
72
+ children: /*#__PURE__*/_jsxs(Box, {
73
+ component: "div",
74
+ sx: {
75
+ display: "flex",
76
+ alignItems: "center",
77
+ gap: "6px"
78
+ },
79
+ children: ["Embed Code", allowedDomains?.length ? /*#__PURE__*/_jsx(Tooltip, {
80
+ title: /*#__PURE__*/_jsxs(Box, {
81
+ sx: {
82
+ textTransform: "none"
83
+ },
84
+ children: [/*#__PURE__*/_jsx("span", {
85
+ style: {
86
+ fontWeight: "bold"
87
+ },
88
+ children: "Allowed Domains"
89
+ }), /*#__PURE__*/_jsx("br", {}), allowedDomains.join(", ")]
90
+ }),
91
+ children: /*#__PURE__*/_jsx(InfoOutlinedIcon, {
92
+ color: "gray",
93
+ fontSize: "14px",
94
+ style: {
95
+ fill: "#94A3B8",
96
+ cursor: "pointer"
97
+ }
98
+ })
99
+ }) : null]
100
+ })
101
+ }), /*#__PURE__*/_jsxs(DialogContent, {
102
+ children: [/*#__PURE__*/_jsx("textarea", {
103
+ value: code,
104
+ onChange: handleChange,
105
+ style: {
106
+ minHeight: "200px",
107
+ width: "100%",
108
+ resize: "none",
109
+ padding: "4px",
110
+ boxSizing: "border-box"
111
+ }
112
+ }), /*#__PURE__*/_jsx(Box, {
113
+ component: "div",
114
+ color: "red",
115
+ children: error ? "There was some error on this code." : ""
116
+ })]
117
+ }), /*#__PURE__*/_jsxs(DialogActions, {
118
+ children: [/*#__PURE__*/_jsx(Button, {
119
+ onClick: onSubmit,
120
+ disabled: loading,
121
+ children: loading ? "Validating" : "Save"
122
+ }), /*#__PURE__*/_jsx(Button, {
123
+ onClick: onClose,
124
+ children: "Cancel"
125
+ })]
126
+ })]
127
+ })
128
+ });
129
+ };
130
+ export default EmbedScriptPopup;
@@ -5,13 +5,15 @@ import { Fragment as _Fragment } from "react/jsx-runtime";
5
5
  const EmojiPicker = props => {
6
6
  const {
7
7
  onEmojiSelect,
8
- onClose
8
+ onClose,
9
+ theme = 'dark'
9
10
  } = props;
10
11
  return /*#__PURE__*/_jsx(_Fragment, {
11
12
  children: /*#__PURE__*/_jsx(Picker, {
12
13
  data: data,
13
14
  onEmojiSelect: onEmojiSelect,
14
- onClickOutside: onClose
15
+ onClickOutside: onClose,
16
+ theme: theme
15
17
  })
16
18
  });
17
19
  };
@@ -18,7 +18,9 @@ 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";
23
+ import { getBreakPointsValue, groupByBreakpoint } from "../../helper/theme";
22
24
  import { jsx as _jsx } from "react/jsx-runtime";
23
25
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
26
  const MAX_DEVICE_WIDTH = {
@@ -40,7 +42,8 @@ const FreeGrid = props => {
40
42
  customProps
41
43
  } = props;
42
44
  const {
43
- sectionName
45
+ sectionName,
46
+ sectionBorderRadius
44
47
  } = element;
45
48
  const {
46
49
  readOnly,
@@ -158,7 +161,7 @@ const FreeGrid = props => {
158
161
  marginTop: 0,
159
162
  top: 0,
160
163
  width: 170,
161
- height: 80
164
+ height: 30
162
165
  }], {
163
166
  at: [...insertAt]
164
167
  });
@@ -189,14 +192,16 @@ const FreeGrid = props => {
189
192
  top: 12,
190
193
  right: 12,
191
194
  bottom: 12
192
- }
195
+ },
196
+ textAlign: "center",
197
+ label: "Get Started"
193
198
  }],
194
199
  gridArea: "3 / 1 / 4 / 2",
195
200
  left: 50,
196
201
  marginTop: 0,
197
202
  top: 0,
198
- width: 170,
199
- height: 80
203
+ width: 143,
204
+ height: 50
200
205
  }], {
201
206
  at: [...insertAt]
202
207
  });
@@ -237,6 +242,41 @@ const FreeGrid = props => {
237
242
  at: [...insertAt]
238
243
  });
239
244
  break;
245
+ case "addTable":
246
+ Transforms.insertNodes(editor, [{
247
+ ...insertFreeGridItem("table", {
248
+ ...DEFAULT_TABLE_NODE()
249
+ }, {
250
+ height: 130,
251
+ width: 400
252
+ })
253
+ }], {
254
+ at: [...insertAt]
255
+ });
256
+ break;
257
+ case "addCode":
258
+ Transforms.insertNodes(editor, [{
259
+ type: "freegridItem",
260
+ childType: "embedScript",
261
+ children: [{
262
+ type: "embedScript",
263
+ embedData: "",
264
+ children: [{
265
+ text: " "
266
+ }],
267
+ isEncoded: true,
268
+ isSanitized: true
269
+ }],
270
+ gridArea: "3 / 1 / 4 / 2",
271
+ left: 50,
272
+ marginTop: 0,
273
+ top: 0,
274
+ width: 400,
275
+ height: 300
276
+ }], {
277
+ at: [...insertAt]
278
+ });
279
+ break;
240
280
  case "addBox":
241
281
  Transforms.insertNodes(editor, [{
242
282
  ...insertFreeGridItem("box", {
@@ -254,7 +294,7 @@ const FreeGrid = props => {
254
294
  ...insertFreeGridItem("form", {
255
295
  ...FORM_NODE()
256
296
  }, {
257
- height: 100,
297
+ height: 92,
258
298
  width: 400
259
299
  })
260
300
  }], {
@@ -341,6 +381,11 @@ const FreeGrid = props => {
341
381
  }
342
382
  };
343
383
  const repeatTimes = Math.floor(height / ROW_HEIGHT);
384
+ const freegridSX = groupByBreakpoint({
385
+ borderRadius: {
386
+ ...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
387
+ }
388
+ }, theme);
344
389
  return /*#__PURE__*/_jsx(RnD, {
345
390
  id: `freegrid_container_${path.join("|")}_${updated_at}_${breakpoint}`,
346
391
  className: `freegrid-section breakpoint-${breakpoint}`,
@@ -417,7 +462,10 @@ const FreeGrid = props => {
417
462
  id: sectionName,
418
463
  "data-event": "rnd-click",
419
464
  className: "freegrid-container freegrid-container-parent",
420
- sx: classes.root,
465
+ sx: {
466
+ ...classes.root,
467
+ ...freegridSX
468
+ },
421
469
  "data-path": path.join("|"),
422
470
  style: {
423
471
  "--cols": `100%`,