@flozy/editor 4.0.1 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/Editor/ChatEditor.js +3 -19
  2. package/dist/Editor/CommonEditor.js +181 -109
  3. package/dist/Editor/Editor.css +31 -3
  4. package/dist/Editor/Elements/AI/AIInput.js +31 -33
  5. package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
  6. package/dist/Editor/Elements/AI/PopoverAIInput.js +73 -97
  7. package/dist/Editor/Elements/AI/Styles.js +2 -2
  8. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
  9. package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
  10. package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
  11. package/dist/Editor/Elements/AI/helper.js +5 -3
  12. package/dist/Editor/Elements/Accordion/Accordion.js +1 -1
  13. package/dist/Editor/Elements/Accordion/AccordionSummary.js +5 -10
  14. package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
  15. package/dist/Editor/Elements/Button/EditorButton.js +28 -16
  16. package/dist/Editor/Elements/Carousel/CarouselButton.js +2 -1
  17. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -15
  18. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  19. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  20. package/dist/Editor/Elements/Color Picker/Styles.js +3 -1
  21. package/dist/Editor/Elements/Emoji/EmojiPicker.js +2 -4
  22. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
  23. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  24. package/dist/Editor/Elements/Grid/Grid.js +27 -3
  25. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  26. package/dist/Editor/Elements/Link/Link.js +6 -1
  27. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  28. package/dist/Editor/Elements/Link/LinkPopup.js +73 -14
  29. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  30. package/dist/Editor/Elements/List/CheckList.js +1 -2
  31. package/dist/Editor/Elements/NewLine/NewLineButton.js +2 -1
  32. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
  33. package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
  34. package/dist/Editor/Elements/Signature/Signature.css +13 -6
  35. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +2 -1
  36. package/dist/Editor/Elements/Signature/SignaturePopup.js +185 -30
  37. package/dist/Editor/Elements/SimpleText/index.js +11 -1
  38. package/dist/Editor/Elements/SimpleText/style.js +1 -1
  39. package/dist/Editor/Elements/Table/Styles.js +23 -1
  40. package/dist/Editor/Elements/Table/Table.js +2 -1
  41. package/dist/Editor/Elements/Table/TableCell.js +69 -7
  42. package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +1 -0
  43. package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
  44. package/dist/Editor/MiniEditor.js +3 -1
  45. package/dist/Editor/Styles/EditorStyles.js +1 -1
  46. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  47. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  48. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  49. package/dist/Editor/Toolbar/FormatTools/TextSize.js +31 -20
  50. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +36 -5
  51. package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
  52. package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
  53. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
  54. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
  55. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/CustomSelectTool.js +3 -0
  56. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  57. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +59 -0
  58. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  59. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +4 -2
  60. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +123 -44
  61. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +106 -44
  62. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  63. package/dist/Editor/Toolbar/PopupTool/index.js +7 -6
  64. package/dist/Editor/Toolbar/toolbarGroups.js +53 -11
  65. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  66. package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
  67. package/dist/Editor/assets/svg/RedoIcon.js +27 -0
  68. package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
  69. package/dist/Editor/assets/svg/TextIcon.js +8 -5
  70. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  71. package/dist/Editor/assets/svg/UndoIcon.js +27 -0
  72. package/dist/Editor/common/ColorPickerButton.js +26 -18
  73. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  74. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  75. package/dist/Editor/common/CustomDialog/index.js +94 -0
  76. package/dist/Editor/common/CustomDialog/style.js +67 -0
  77. package/dist/Editor/common/CustomSelect.js +33 -0
  78. package/dist/Editor/common/DnD/DragHandleButton.js +56 -47
  79. package/dist/Editor/common/EditorIcons.js +7 -7
  80. package/dist/Editor/common/Icon.js +64 -25
  81. package/dist/Editor/common/ImageList.js +16 -3
  82. package/dist/Editor/common/ImageSelector/ImageSelector.js +30 -9
  83. package/dist/Editor/common/ImageSelector/Styles.js +2 -1
  84. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  85. package/dist/Editor/common/LinkSettings/index.js +4 -2
  86. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  87. package/dist/Editor/common/LinkSettings/style.js +11 -8
  88. package/dist/Editor/common/MentionsPopup/Styles.js +1 -1
  89. package/dist/Editor/common/Section/index.js +57 -7
  90. package/dist/Editor/common/Section/styles.js +11 -0
  91. package/dist/Editor/common/Shorthands/elements.js +63 -9
  92. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +1 -2
  93. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  95. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +29 -7
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  100. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  101. package/dist/Editor/common/iconListV2.js +843 -0
  102. package/dist/Editor/common/iconslist.js +0 -31
  103. package/dist/Editor/commonStyle.js +6 -0
  104. package/dist/Editor/helper/index.js +0 -22
  105. package/dist/Editor/helper/theme.js +189 -3
  106. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  107. package/dist/Editor/hooks/useMouseMove.js +4 -1
  108. package/dist/Editor/hooks/useWindowMessage.js +10 -7
  109. package/dist/Editor/plugins/withEmbeds.js +1 -1
  110. package/dist/Editor/plugins/withHTML.js +1 -1
  111. package/dist/Editor/plugins/withTable.js +1 -1
  112. package/dist/Editor/theme/ThemeList.js +50 -173
  113. package/dist/Editor/theme/index.js +144 -0
  114. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  115. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  116. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  117. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  118. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  119. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  120. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  121. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  122. package/dist/Editor/themeSettings/icons.js +60 -0
  123. package/dist/Editor/themeSettings/index.js +320 -0
  124. package/dist/Editor/themeSettings/style.js +152 -0
  125. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  126. package/dist/Editor/themeSettingsAI/index.js +356 -0
  127. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  128. package/dist/Editor/themeSettingsAI/style.js +247 -0
  129. package/dist/Editor/utils/SlateUtilityFunctions.js +169 -27
  130. package/dist/Editor/utils/button.js +1 -17
  131. package/dist/Editor/utils/events.js +54 -2
  132. package/dist/Editor/utils/font.js +40 -37
  133. package/dist/Editor/utils/helper.js +31 -2
  134. package/dist/Editor/utils/table.js +51 -43
  135. package/package.json +4 -3
@@ -0,0 +1,247 @@
1
+ const style = () => ({
2
+ ".fs-12": {
3
+ fontSize: "12px"
4
+ },
5
+ ".fs-14": {
6
+ fontSize: "14px"
7
+ },
8
+ ".fw-500": {
9
+ fontWeight: "500"
10
+ },
11
+ ".fw-600": {
12
+ fontWeight: "600"
13
+ },
14
+ ".pointer": {
15
+ cursor: "pointer"
16
+ },
17
+ ".transformNone": {
18
+ textTransform: "none"
19
+ },
20
+ ".settingsContainer": {
21
+ width: "340px",
22
+ padding: "16px 16px",
23
+ background: "#fff",
24
+ ".header": {
25
+ borderBottom: `1px solid #DCE4EC`,
26
+ paddingBottom: "8px"
27
+ // marginBottom: "16px",
28
+ }
29
+ },
30
+
31
+ ".title": {
32
+ fontWeight: "700",
33
+ fontSize: "14px"
34
+ },
35
+ ".closeBtn": {
36
+ width: "26px",
37
+ height: "26px",
38
+ BorderRadius: "4px",
39
+ flexShrik: "0",
40
+ padding: "4px",
41
+ background: " #F8FAFC",
42
+ borderRadius: "4px"
43
+ },
44
+ ".MuiTabs-scroller": {
45
+ borderBottom: `1px solid #DCE4EC`
46
+ },
47
+ ".themeCardWrapper": {
48
+ borderRadius: "4px",
49
+ ".active": {
50
+ background: "#ECF2FF"
51
+ }
52
+ },
53
+ ".primaryCard, .secondaryCard": {
54
+ width: "44px",
55
+ height: "44px",
56
+ borderRadius: "5px",
57
+ border: `1px solid #929292`
58
+ },
59
+ ".flexAlign": {
60
+ display: "flex",
61
+ alignItems: "center"
62
+ },
63
+ ".activeColorBox, .xsColorBox": {
64
+ width: "24px",
65
+ height: "24px",
66
+ borderRadius: "5px",
67
+ border: `1px solid #929292`
68
+ },
69
+ ".themeCard": {
70
+ borderRadius: "7px",
71
+ padding: "16px",
72
+ border: "1px solid #F3F3F3",
73
+ boxShadow: "1px 2px 5px 0px #00000014",
74
+ position: "relative",
75
+ flexWrap: "nowrap",
76
+ ".tickIcon": {
77
+ visibility: "hidden",
78
+ opacity: "0",
79
+ position: "absolute",
80
+ right: "-8px",
81
+ top: "-8px"
82
+ },
83
+ "&.selected": {
84
+ ".tickIcon": {
85
+ visibility: "visible",
86
+ opacity: "1"
87
+ }
88
+ }
89
+ },
90
+ ".otherColors": {
91
+ display: "flex",
92
+ flexWrap: "wrap",
93
+ width: "48px",
94
+ ".smallCard": {
95
+ width: "20px",
96
+ height: "20px",
97
+ borderRadius: "5px",
98
+ border: `1px solid #929292`
99
+ }
100
+ },
101
+ ".imageUpload": {
102
+ background: "#F3F3F3",
103
+ borderRadius: "12px",
104
+ padding: "10px",
105
+ height: "208px",
106
+ position: "relative",
107
+ "& .resetIcon": {
108
+ position: "absolute",
109
+ right: "10px",
110
+ top: "10px"
111
+ },
112
+ ".changeImgText": {
113
+ position: "absolute",
114
+ left: "50%",
115
+ top: "50%",
116
+ transform: "translate(-50%, -50%)",
117
+ zIndex: 1,
118
+ background: "#0000004D",
119
+ color: "#fff",
120
+ padding: "6px",
121
+ borderRadius: "6px",
122
+ fontSize: "12px",
123
+ fontWeight: 600,
124
+ opacity: "0",
125
+ visibility: "hidden"
126
+ },
127
+ "&:hover": {
128
+ ".changeImgText": {
129
+ opacity: "1",
130
+ visibility: "visible"
131
+ }
132
+ }
133
+ },
134
+ ".imgUploadInner": {
135
+ background: "#fff",
136
+ borderRadius: "10px",
137
+ border: "0.79px dashed #8360FD",
138
+ height: "100%"
139
+ },
140
+ ".outlineBtn": {
141
+ color: "#2563EB",
142
+ borderRadius: "8px",
143
+ boxShadow: "0px 4px 10px 0px #00000026",
144
+ border: "1px solid #2563EB",
145
+ background: "#EBF1F9",
146
+ height: "34px",
147
+ textTransform: "unset"
148
+ },
149
+ ".seondaryOutlineBtn": {
150
+ border: "1px solid #D8DDE1",
151
+ borderRadius: "8px",
152
+ // boxShadow: "0px 4px 10px 0px #00000026",
153
+ height: "34px",
154
+ textTransform: "unset",
155
+ background: "#eceef3",
156
+ color: "#64748B"
157
+ },
158
+ ".blueBtn": {
159
+ boxShadow: "0px 4px 10px 0px #00000026",
160
+ background: "#2563EB",
161
+ borderRadius: "8px",
162
+ textTransform: "unset",
163
+ height: "34px",
164
+ color: "#fff",
165
+ "&.disabled": {
166
+ background: "#D9D9DD !important",
167
+ color: "#fff !important"
168
+ }
169
+ },
170
+ ".generatedItem": {
171
+ border: "1px solid #E4E6E9",
172
+ borderRadius: "7px",
173
+ padding: "14px",
174
+ display: "flex",
175
+ gap: "16px",
176
+ position: "relative",
177
+ justifyContent: "space-between",
178
+ marginBottom: "12px",
179
+ ".tickIcon": {
180
+ visibility: "hidden",
181
+ opacity: "0",
182
+ position: "absolute",
183
+ right: "-8px",
184
+ top: "-8px"
185
+ },
186
+ "&.selected": {
187
+ border: "1px solid #2563EB",
188
+ boxShadow: " 3px 3px 8px 0px #2563EB40",
189
+ ".tickIcon": {
190
+ visibility: "visible",
191
+ opacity: "1"
192
+ }
193
+ },
194
+ ".colorBox": {
195
+ border: "1px solid #929292",
196
+ height: "28px",
197
+ width: "28px",
198
+ borderRadius: "5px"
199
+ }
200
+ },
201
+ ".textArea": {
202
+ background: "#F3F3F3",
203
+ borderRadius: "12px",
204
+ padding: "10px",
205
+ height: "208px",
206
+ "& textarea": {
207
+ width: "100%",
208
+ height: "100% !important",
209
+ border: "0.79px solid #8360FD",
210
+ background: "#FFFFFF",
211
+ borderRadius: "8px",
212
+ padding: "10px"
213
+ }
214
+ },
215
+ ".imageUrl": {
216
+ height: "auto !important",
217
+ ".MuiOutlinedInput-root": {
218
+ border: "0.79px solid #8360FD",
219
+ background: "#FFFFFF",
220
+ borderRadius: "8px",
221
+ ".tickIcon": {
222
+ width: "18px"
223
+ }
224
+ },
225
+ "&.invalidUrl": {
226
+ ".MuiInputAdornment-root": {
227
+ ".tickIcon": {
228
+ ".fillPath": {
229
+ fill: "#D9D9DD!important"
230
+ }
231
+ }
232
+ }
233
+ }
234
+ },
235
+ ".saveThemeContainer": {
236
+ ".MuiOutlinedInput-root": {
237
+ borderRadius: "8px",
238
+ boxShadow: "0px 4px 16px 0px #0000000D"
239
+ }
240
+ },
241
+ ".uploadedImage": {
242
+ width: "126px",
243
+ height: "126px",
244
+ borderRadius: "126px"
245
+ }
246
+ });
247
+ export default style;
@@ -1,4 +1,4 @@
1
- import { Editor, Transforms, Element as SlateElement } from "slate";
1
+ import { Editor, Transforms, Element as SlateElement, Range } from "slate";
2
2
  import { Box } from "@mui/material";
3
3
  import { fontFamilyMap, sizeMap } from "./font";
4
4
  import Link from "../Elements/Link/Link";
@@ -32,14 +32,14 @@ import FormField from "../Elements/Form/FormField";
32
32
  import InlineIcon from "../Elements/InlineIcon/InlineIcon";
33
33
  import SimpleText from "../Elements/SimpleText";
34
34
  import CheckList from "../Elements/List/CheckList";
35
- import { getTextColor, isEmptyTextNode } from "../helper";
35
+ import { isEmptyTextNode } from "../helper";
36
36
  import Attachments from "../Elements/Attachments/Attachments";
37
- import { getBreakPointsValue } from "../helper/theme";
37
+ import { getBreakPointsValue, textThemeFields } from "../helper/theme";
38
38
  import Variables from "../Elements/Variables/Variable";
39
- import insertNewLine from "./insertNewLine";
40
39
  import Divider from "../Elements/Divider/Divider";
41
40
  import { getBorderColor } from "./helper";
42
41
  import Code from "../Elements/EmbedScript/Code";
42
+ import { ReactEditor } from "slate-react";
43
43
  import { jsx as _jsx } from "react/jsx-runtime";
44
44
  const alignment = ["alignLeft", "alignRight", "alignCenter"];
45
45
  const list_types = ["orderedList", "unorderedList"];
@@ -47,7 +47,17 @@ const LIST_FORMAT_TYPE = {
47
47
  orderedList: "list-item",
48
48
  unorderedList: "list-item"
49
49
  };
50
- const NEWLINESAFTER = ["headingOne", "headingTwo", "headingThree"];
50
+
51
+ // const NEWLINESAFTER = [
52
+ // "headingOne",
53
+ // "headingTwo",
54
+ // "headingThree",
55
+ // "headingFour",
56
+ // "headingFive",
57
+ // "headingSix",
58
+ // ];
59
+
60
+ const THEME_BLOCK_FIELDS = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
51
61
  export const toggleBlock = (editor, format, selection = true, attr = {}) => {
52
62
  const isActive = isBlockActive(editor, format);
53
63
  const isList = list_types.includes(format);
@@ -80,8 +90,9 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
80
90
  if (!selection) {
81
91
  Transforms.insertText(editor, "");
82
92
  }
93
+ const forActiveType = THEME_BLOCK_FIELDS.some(f => f === format) ? format : "paragraph";
83
94
  Transforms.setNodes(editor, {
84
- type: isActive ? "paragraph" : isList ? LIST_FORMAT_TYPE[format] : format,
95
+ type: isActive ? forActiveType : isList ? LIST_FORMAT_TYPE[format] : format,
85
96
  ...attr
86
97
  });
87
98
  if (isList && !isActive) {
@@ -90,10 +101,12 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
90
101
  children: []
91
102
  });
92
103
  }
93
- if (NEWLINESAFTER.indexOf(format) > -1) {
94
- insertNewLine(editor);
95
- }
104
+
105
+ // if (NEWLINESAFTER.indexOf(format) > -1) {
106
+ // insertNewLine(editor);
107
+ // }
96
108
  };
109
+
97
110
  export const addMarkData = (editor, data) => {
98
111
  try {
99
112
  Editor.addMark(editor, data.format, data.value);
@@ -102,9 +115,14 @@ export const addMarkData = (editor, data) => {
102
115
  }
103
116
  };
104
117
  export const toggleMark = (editor, format) => {
105
- const isActive = isMarkActive(editor, format);
118
+ const isActive = isMarkBtnActive(editor, format);
106
119
  if (isActive) {
107
- Editor.removeMark(editor, format);
120
+ const isThemeSupportedMark = textThemeFields.some(f => f === format);
121
+ if (isThemeSupportedMark) {
122
+ Editor.addMark(editor, format, false);
123
+ } else {
124
+ Editor.removeMark(editor, format);
125
+ }
108
126
  } else {
109
127
  Editor.addMark(editor, format, true);
110
128
  }
@@ -118,6 +136,53 @@ export const isMarkActive = (editor, format) => {
118
136
  return null;
119
137
  }
120
138
  };
139
+ export const isMarkBtnActive = (editor, format) => {
140
+ switch (format) {
141
+ case "bold":
142
+ {
143
+ const style = getSelectedElementStyle("font-weight", editor);
144
+ return style === "700";
145
+ }
146
+ case "italic":
147
+ {
148
+ const style = getSelectedElementStyle("font-style", editor);
149
+ return style === format;
150
+ }
151
+ // case "underline": {
152
+ // const style = getSelectedElementStyle("text-decoration");
153
+
154
+ // return style?.includes(format);
155
+ // }
156
+ // case "strikethrough": {
157
+ // const style = getSelectedElementStyle("text-decoration");
158
+
159
+ // return style?.includes("line-through");
160
+ // }
161
+ default:
162
+ return isMarkActive(editor, format);
163
+ }
164
+ };
165
+ export const getSelectedElementStyle = (styleProperty, editor) => {
166
+ try {
167
+ if (!editor.selection) {
168
+ return "";
169
+ }
170
+ if (Range.isCollapsed(editor.selection)) {
171
+ return "";
172
+ }
173
+ const domRange = ReactEditor.toDOMRange(editor, editor.selection);
174
+ const selectedDomNode = domRange.commonAncestorContainer;
175
+
176
+ // If it's a text node, get its parent element
177
+ const selectedElement = selectedDomNode.nodeType === 3 ? selectedDomNode.parentElement : selectedDomNode;
178
+ if (selectedElement) {
179
+ const computedStyle = window.getComputedStyle(selectedElement);
180
+ return computedStyle.getPropertyValue(styleProperty) || "";
181
+ }
182
+ } catch (err) {
183
+ console.log(err);
184
+ }
185
+ };
121
186
  export const isBlockActive = (editor, format) => {
122
187
  const [match] = Editor.nodes(editor, {
123
188
  match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format
@@ -160,6 +225,31 @@ export const activeMark = (editor, format) => {
160
225
  return null;
161
226
  }
162
227
  };
228
+
229
+ // to avoid the styles, that automatically assign from themes
230
+ const getThemeMarkedLeaf = (leaf, children) => {
231
+ const {
232
+ italic,
233
+ bold
234
+ } = leaf || {};
235
+ const style = {};
236
+ if (italic === false) {
237
+ style.fontStyle = "normal";
238
+ }
239
+ if (bold === false) {
240
+ style.fontWeight = "normal";
241
+ }
242
+ if (Object.keys(style).length) {
243
+ children = /*#__PURE__*/_jsx(Box, {
244
+ component: "span",
245
+ sx: {
246
+ "& span": style
247
+ },
248
+ children: children
249
+ });
250
+ }
251
+ return children;
252
+ };
163
253
  export const getMarked = (leaf, children) => {
164
254
  const className = leaf?.doublequote ? "doublequote" : "";
165
255
  if (leaf.bold) {
@@ -177,6 +267,7 @@ export const getMarked = (leaf, children) => {
177
267
  children: children
178
268
  });
179
269
  }
270
+ children = getThemeMarkedLeaf(leaf, children);
180
271
  if (leaf.strikethrough) {
181
272
  children = /*#__PURE__*/_jsx("span", {
182
273
  style: {
@@ -203,18 +294,29 @@ export const getMarked = (leaf, children) => {
203
294
  // cover under single span
204
295
  if (leaf.color || leaf.bgColor || leaf.fontSize || leaf.fontFamily || leaf.fontWeight || className) {
205
296
  const family = fontFamilyMap[leaf?.fontFamily];
206
- const textStyles = getTextColor(leaf?.color);
297
+ const textStyles = leaf?.color?.indexOf("gradient") >= 0 ? {
298
+ background: leaf?.color?.concat("text"),
299
+ WebkitBackgroundClip: "text",
300
+ WebkitTextFillColor: "transparent"
301
+ } : {
302
+ color: leaf.color
303
+ };
304
+ const fontSize = {
305
+ lg: sizeMap[leaf.fontSize] || leaf.fontSize,
306
+ ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
307
+ };
308
+ const fontSizesImportant = {};
309
+ Object.entries(fontSize).forEach(([key, value]) => {
310
+ fontSizesImportant[key] = `${value} !important`;
311
+ });
207
312
  children = /*#__PURE__*/_jsx("span", {
208
- style: {
209
- background: leaf.bgColor
210
- },
211
313
  children: /*#__PURE__*/_jsx(Box, {
212
314
  className: className,
213
315
  component: "span",
214
316
  sx: {
215
- fontSize: {
216
- lg: sizeMap[leaf.fontSize] || leaf.fontSize,
217
- ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
317
+ "& span": {
318
+ fontSize: fontSizesImportant,
319
+ background: leaf.bgColor
218
320
  },
219
321
  ...textStyles,
220
322
  fontFamily: family,
@@ -244,31 +346,71 @@ export const getBlock = props => {
244
346
  } = props;
245
347
  const attributes = props.attributes ?? {};
246
348
  const isEmpty = isEmptyTextNode(element);
349
+ const commonHeadingProps = () => ({
350
+ ...attributes,
351
+ ...element.attr,
352
+ className: `content-editable ${isEmpty ? "empty" : ""} theme-element`
353
+ });
354
+ const commonParaProps = paraType => ({
355
+ ...attributes,
356
+ ...element.attr,
357
+ className: `content-editable ${isEmpty ? "empty" : ""} theme-element ${paraType}`
358
+ });
247
359
  switch (element.type) {
248
360
  case "headingOne":
249
361
  return /*#__PURE__*/_jsx("h1", {
250
- ...attributes,
251
- ...element.attr,
252
- className: `content-editable ${isEmpty ? "empty" : ""}`,
362
+ ...commonHeadingProps(),
253
363
  placeholder: "Heading 1",
254
364
  children: children
255
365
  });
256
366
  case "headingTwo":
257
367
  return /*#__PURE__*/_jsx("h2", {
258
- ...attributes,
259
- ...element.attr,
260
- className: `content-editable ${isEmpty ? "empty" : ""}`,
368
+ ...commonHeadingProps(),
261
369
  placeholder: "Heading 2",
262
370
  children: children
263
371
  });
264
372
  case "headingThree":
265
373
  return /*#__PURE__*/_jsx("h3", {
266
- ...attributes,
267
- ...element.attr,
268
- className: `content-editable ${isEmpty ? "empty" : ""}`,
374
+ ...commonHeadingProps(),
269
375
  placeholder: "Heading 3",
270
376
  children: children
271
377
  });
378
+ case "headingFour":
379
+ return /*#__PURE__*/_jsx("h4", {
380
+ ...commonHeadingProps(),
381
+ placeholder: "Heading 4",
382
+ children: children
383
+ });
384
+ case "headingFive":
385
+ return /*#__PURE__*/_jsx("h5", {
386
+ ...commonHeadingProps(),
387
+ placeholder: "Heading 5",
388
+ children: children
389
+ });
390
+ case "headingSix":
391
+ return /*#__PURE__*/_jsx("h6", {
392
+ ...commonHeadingProps(),
393
+ placeholder: "Heading 6",
394
+ children: children
395
+ });
396
+ case "paragraphOne":
397
+ return /*#__PURE__*/_jsx("p", {
398
+ ...commonParaProps("para1"),
399
+ placeholder: "Paragraph 1",
400
+ children: children
401
+ });
402
+ case "paragraphTwo":
403
+ return /*#__PURE__*/_jsx("p", {
404
+ ...commonParaProps("para2"),
405
+ placeholder: "Paragraph 2",
406
+ children: children
407
+ });
408
+ case "paragraphThree":
409
+ return /*#__PURE__*/_jsx("p", {
410
+ ...commonParaProps("para3"),
411
+ placeholder: "Paragraph 3",
412
+ children: children
413
+ });
272
414
  case "blockquote":
273
415
  return /*#__PURE__*/_jsx("blockquote", {
274
416
  ...attributes,
@@ -1,6 +1,5 @@
1
1
  import { Transforms } from "slate";
2
2
  import insertNewLine from "./insertNewLine";
3
- import { windowVar } from "./helper";
4
3
  export const insertButton = editor => {
5
4
  const button = {
6
5
  type: "button",
@@ -10,22 +9,7 @@ export const insertButton = editor => {
10
9
  buttonLink: {
11
10
  linkType: "webAddress"
12
11
  },
13
- iconPosition: "start",
14
- bgColor: "#2563EB",
15
- textColor: "#FFF",
16
- borderRadius: {
17
- topLeft: 30,
18
- topRight: 30,
19
- bottomLeft: 30,
20
- bottomRight: 30
21
- },
22
- bannerSpacing: {
23
- left: 16,
24
- top: 8,
25
- right: 16,
26
- bottom: 8
27
- },
28
- ...(windowVar.lastButtonProps || {})
12
+ iconPosition: "start"
29
13
  };
30
14
  Transforms.insertNodes(editor, button);
31
15
  Transforms.move(editor);
@@ -1,4 +1,4 @@
1
- import { Editor, Transforms, Element, Node, Path } from "slate";
1
+ import { Editor, Transforms, Element, Node, Path, Range } from "slate";
2
2
  import { toggleBlock } from "./SlateUtilityFunctions";
3
3
  import insertNewLine from "./insertNewLine";
4
4
  import { insertAccordion } from "./accordion";
@@ -179,7 +179,6 @@ const checkListEnterEvent = (editor, type) => {
179
179
  export const enterEvent = (e, editor, isMobile) => {
180
180
  try {
181
181
  const ele = isListItem(editor);
182
-
183
182
  // on shift enter break line in same node
184
183
  if (e.shiftKey && !isMobile) {
185
184
  e.preventDefault();
@@ -188,6 +187,7 @@ export const enterEvent = (e, editor, isMobile) => {
188
187
  const {
189
188
  type
190
189
  } = ele[0];
190
+ const path = ele[1];
191
191
  const text = Node.string(ele[0]);
192
192
  switch (type) {
193
193
  case "list-item":
@@ -219,6 +219,58 @@ export const enterEvent = (e, editor, isMobile) => {
219
219
  insertAccordion(editor, nextPath);
220
220
  }
221
221
  break;
222
+ case "headingOne":
223
+ case "headingTwo":
224
+ case "headingThree":
225
+ const {
226
+ selection
227
+ } = editor;
228
+ if (selection && Range.isCollapsed(selection)) {
229
+ const isAtEnd = Editor.isEnd(editor, selection.anchor, path);
230
+ const isAtStart = Editor.isStart(editor, selection.anchor, path);
231
+ if (isAtEnd) {
232
+ e.preventDefault();
233
+ Transforms.insertNodes(editor, {
234
+ type: 'paragraph',
235
+ children: [{
236
+ text: ''
237
+ }]
238
+ });
239
+ const newLocation = Editor.after(editor, selection);
240
+ if (newLocation) {
241
+ Transforms.select(editor, newLocation);
242
+ }
243
+ } else if (!isAtStart) {
244
+ e.preventDefault();
245
+ Transforms.splitNodes(editor);
246
+ Transforms.setNodes(editor, {
247
+ type: 'paragraph'
248
+ }, {
249
+ at: Editor.after(editor, selection)
250
+ });
251
+ const newLocation = Editor.after(editor, selection);
252
+ if (newLocation) {
253
+ Transforms.select(editor, newLocation);
254
+ }
255
+ } else if (isAtStart) {
256
+ e.preventDefault();
257
+ Transforms.insertNodes(editor, {
258
+ type: 'paragraph',
259
+ children: [{
260
+ text: ''
261
+ }]
262
+ }, {
263
+ at: Editor.before(editor, selection)
264
+ });
265
+ Transforms.select(editor, Editor.before(editor, selection));
266
+ const newLocation = Editor.before(editor, selection);
267
+ if (newLocation) {
268
+ Transforms.select(editor, newLocation);
269
+ }
270
+ }
271
+ return;
272
+ }
273
+ break;
222
274
  default:
223
275
  }
224
276
  }