@flozy/editor 10.6.7 → 10.6.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 (128) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +116 -13
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +31 -11
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AI/Styles.js +1 -0
  7. package/dist/Editor/Elements/Accordion/Accordion.js +25 -17
  8. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  9. package/dist/Editor/Elements/Button/EditorButton.js +23 -7
  10. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  11. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  12. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  13. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  14. package/dist/Editor/Elements/Embed/Video.js +1 -1
  15. package/dist/Editor/Elements/Form/FormField.js +1 -1
  16. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  17. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +31 -30
  18. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +7 -4
  19. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  20. package/dist/Editor/Elements/FreeGrid/helper.js +115 -0
  21. package/dist/Editor/Elements/FreeGrid/styles.js +9 -0
  22. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  23. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  24. package/dist/Editor/Elements/Table/Table.js +3 -3
  25. package/dist/Editor/Elements/Title/title.js +6 -6
  26. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  27. package/dist/Editor/MiniEditor.js +2 -1
  28. package/dist/Editor/Styles/EditorStyles.js +9 -5
  29. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  30. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  31. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  32. package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
  33. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  34. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  35. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  36. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +4 -2
  37. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  38. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +7 -4
  39. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  40. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +69 -9
  41. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +58 -10
  42. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  43. package/dist/Editor/Toolbar/PopupTool/index.js +5 -2
  44. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  45. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  46. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  47. package/dist/Editor/common/ColorPickerButton.js +38 -16
  48. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  49. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  50. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  51. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  52. package/dist/Editor/common/CustomSelect.js +43 -0
  53. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  54. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  55. package/dist/Editor/common/Icon.js +28 -0
  56. package/dist/Editor/common/ImageSelector/ImageSelector.js +2 -2
  57. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  58. package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
  59. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  60. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  61. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  62. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  63. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  64. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  65. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
  66. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  67. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
  68. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
  69. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
  70. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  71. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  72. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -18
  73. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  74. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +45 -58
  75. package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
  76. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  77. package/dist/Editor/common/RnD/index.js +42 -11
  78. package/dist/Editor/common/Shorthands/elements.js +54 -0
  79. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  80. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  81. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +5 -0
  82. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  83. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  84. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  85. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  86. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
  87. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  88. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  89. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
  90. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  91. package/dist/Editor/common/Uploader.js +16 -0
  92. package/dist/Editor/common/iconslist.js +21 -0
  93. package/dist/Editor/commonStyle.js +107 -64
  94. package/dist/Editor/helper/index.js +7 -2
  95. package/dist/Editor/helper/textIndeces.js +58 -0
  96. package/dist/Editor/helper/theme.js +203 -2
  97. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  98. package/dist/Editor/hooks/useMouseMove.js +9 -3
  99. package/dist/Editor/hooks/useThemeValues.js +63 -0
  100. package/dist/Editor/plugins/withEmbeds.js +1 -1
  101. package/dist/Editor/plugins/withHTML.js +3 -1
  102. package/dist/Editor/plugins/withTable.js +1 -1
  103. package/dist/Editor/theme/ThemeList.js +50 -173
  104. package/dist/Editor/theme/index.js +149 -0
  105. package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
  106. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  107. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  108. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  109. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  110. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  111. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  112. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  113. package/dist/Editor/themeSettings/icons.js +60 -0
  114. package/dist/Editor/themeSettings/index.js +380 -0
  115. package/dist/Editor/themeSettings/style.js +299 -0
  116. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  117. package/dist/Editor/themeSettingsAI/index.js +355 -0
  118. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  119. package/dist/Editor/themeSettingsAI/style.js +332 -0
  120. package/dist/Editor/utils/SlateUtilityFunctions.js +229 -24
  121. package/dist/Editor/utils/accordion.js +50 -24
  122. package/dist/Editor/utils/button.js +1 -17
  123. package/dist/Editor/utils/draftToSlate.js +3 -2
  124. package/dist/Editor/utils/font.js +40 -37
  125. package/dist/Editor/utils/helper.js +97 -21
  126. package/dist/Editor/utils/insertAppHeader.js +8 -4
  127. package/package.json +4 -4
  128. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -454
@@ -0,0 +1,332 @@
1
+ const style = ({
2
+ appTheme: theme
3
+ }) => ({
4
+ ".fs-12": {
5
+ fontSize: "12px"
6
+ },
7
+ ".fs-14": {
8
+ fontSize: "14px"
9
+ },
10
+ ".fw-500": {
11
+ fontWeight: "500"
12
+ },
13
+ ".fw-600": {
14
+ fontWeight: "600"
15
+ },
16
+ ".pointer": {
17
+ cursor: "pointer"
18
+ },
19
+ ".transformNone": {
20
+ textTransform: "none"
21
+ },
22
+ ".settingsContainer": {
23
+ width: "340px",
24
+ padding: "16px 16px",
25
+ background: "#fff",
26
+ ".header": {
27
+ borderBottom: `1px solid #DCE4EC`,
28
+ paddingBottom: "8px"
29
+ // marginBottom: "16px",
30
+ }
31
+ },
32
+
33
+ ".title": {
34
+ fontWeight: "700",
35
+ fontSize: "14px"
36
+ },
37
+ ".closeBtn": {
38
+ width: "26px",
39
+ height: "26px",
40
+ BorderRadius: "4px",
41
+ flexShrik: "0",
42
+ padding: "4px",
43
+ background: " #F8FAFC",
44
+ borderRadius: "4px"
45
+ },
46
+ ".MuiTabs-scroller": {
47
+ borderBottom: `1px solid #DCE4EC`
48
+ },
49
+ ".themeCardWrapper": {
50
+ borderRadius: "4px",
51
+ ".active": {
52
+ background: "#ECF2FF"
53
+ }
54
+ },
55
+ ".primaryCard, .secondaryCard": {
56
+ width: "44px",
57
+ height: "44px",
58
+ borderRadius: "5px",
59
+ border: `1px solid #929292`
60
+ },
61
+ ".flexAlign": {
62
+ display: "flex",
63
+ alignItems: "center",
64
+ flexWrap: "wrap"
65
+ },
66
+ ".flexItem": {
67
+ maxWidth: "50%",
68
+ flex: "1 1 50%" /* allow shrink and grow but cap at 50% */,
69
+ minWidth: 0 /* important for flex children */
70
+ },
71
+
72
+ ".activeColorBox, .xsColorBox": {
73
+ width: "24px",
74
+ height: "24px",
75
+ borderRadius: "5px",
76
+ border: `1px solid #929292`
77
+ },
78
+ ".themeCard": {
79
+ borderRadius: "7px",
80
+ padding: "16px",
81
+ border: "1px solid #F3F3F3",
82
+ boxShadow: "1px 2px 5px 0px #00000014",
83
+ position: "relative",
84
+ flexWrap: "nowrap",
85
+ ".tickIcon": {
86
+ visibility: "hidden",
87
+ opacity: "0",
88
+ position: "absolute",
89
+ right: "-8px",
90
+ top: "-8px"
91
+ },
92
+ "&.selected": {
93
+ ".tickIcon": {
94
+ visibility: "visible",
95
+ opacity: "1"
96
+ }
97
+ }
98
+ },
99
+ ".otherColors": {
100
+ display: "flex",
101
+ flexWrap: "wrap",
102
+ width: "48px",
103
+ ".smallCard": {
104
+ width: "20px",
105
+ height: "20px",
106
+ borderRadius: "5px",
107
+ border: `1px solid #929292`
108
+ }
109
+ },
110
+ ".imageUpload": {
111
+ background: "#F3F3F3",
112
+ borderRadius: "12px",
113
+ padding: "10px",
114
+ height: "208px",
115
+ position: "relative",
116
+ "& .resetIcon": {
117
+ position: "absolute",
118
+ right: "10px",
119
+ top: "10px"
120
+ },
121
+ ".changeImgText": {
122
+ position: "absolute",
123
+ left: "50%",
124
+ top: "50%",
125
+ transform: "translate(-50%, -50%)",
126
+ zIndex: 1,
127
+ background: "#0000004D",
128
+ color: "#fff",
129
+ padding: "6px",
130
+ borderRadius: "6px",
131
+ fontSize: "12px",
132
+ fontWeight: 600,
133
+ opacity: "0",
134
+ visibility: "hidden"
135
+ },
136
+ "&:hover": {
137
+ ".changeImgText": {
138
+ opacity: "1",
139
+ visibility: "visible"
140
+ }
141
+ }
142
+ },
143
+ ".imgUploadInner": {
144
+ background: "#fff",
145
+ borderRadius: "10px",
146
+ border: "0.79px dashed #8360FD",
147
+ height: "100%"
148
+ },
149
+ ".outlineBtn": {
150
+ color: "#2563EB",
151
+ borderRadius: "10px",
152
+ boxShadow: "0px 4px 10px 0px #00000026",
153
+ border: "1px solid #2563EB",
154
+ background: "#EBF1F9",
155
+ height: "34px",
156
+ textTransform: "unset",
157
+ fontWeight: "bold",
158
+ "&:hover": {
159
+ background: "#EBF1F9"
160
+ }
161
+ },
162
+ ".seondaryOutlineBtn": {
163
+ border: "1px solid #D8DDE1",
164
+ borderRadius: "8px",
165
+ // boxShadow: "0px 4px 10px 0px #00000026",
166
+ height: "34px",
167
+ textTransform: "unset",
168
+ background: "#f5f6f9 !important",
169
+ color: "#64748B !important",
170
+ "&:hover": {
171
+ border: "1px solid #D8DDE1",
172
+ background: "#f5f6f9 !important"
173
+ }
174
+ },
175
+ ".blueBtn": {
176
+ boxShadow: "0px 4px 10px 0px #00000026",
177
+ background: "#2563EB",
178
+ borderRadius: "8px",
179
+ textTransform: "unset",
180
+ height: "34px",
181
+ color: "#fff",
182
+ fontWeight: "bold",
183
+ "&.disabled": {
184
+ background: "#D9D9DD !important",
185
+ color: "#fff !important"
186
+ }
187
+ },
188
+ ".generatedItem": {
189
+ border: "1px solid #E4E6E9",
190
+ borderRadius: "7px",
191
+ padding: "14px",
192
+ display: "flex",
193
+ gap: "16px",
194
+ position: "relative",
195
+ justifyContent: "space-between",
196
+ marginBottom: "12px",
197
+ ".tickIcon": {
198
+ visibility: "hidden",
199
+ opacity: "0",
200
+ position: "absolute",
201
+ right: "-8px",
202
+ top: "-8px"
203
+ },
204
+ "&.selected": {
205
+ border: "1px solid #2563EB",
206
+ boxShadow: " 3px 3px 8px 0px #2563EB40",
207
+ ".tickIcon": {
208
+ visibility: "visible",
209
+ opacity: "1"
210
+ }
211
+ },
212
+ ".colorBox": {
213
+ border: "1px solid #929292",
214
+ height: "28px",
215
+ width: "28px",
216
+ borderRadius: "5px"
217
+ }
218
+ },
219
+ ".textArea": {
220
+ background: "#F3F3F3",
221
+ borderRadius: "12px",
222
+ padding: "10px",
223
+ height: "208px",
224
+ "& textarea": {
225
+ width: "100%",
226
+ height: "100% !important",
227
+ border: "0.79px solid #8360FD",
228
+ background: "#FFFFFF",
229
+ borderRadius: "8px",
230
+ padding: "10px"
231
+ }
232
+ },
233
+ ".imageUrl": {
234
+ height: "auto !important",
235
+ ".MuiOutlinedInput-root": {
236
+ border: "0.79px solid #8360FD",
237
+ background: "#FFFFFF",
238
+ borderRadius: "8px",
239
+ ".tickIcon": {
240
+ width: "18px"
241
+ }
242
+ },
243
+ "&.invalidUrl": {
244
+ ".MuiInputAdornment-root": {
245
+ ".tickIcon": {
246
+ ".fillPath": {
247
+ fill: "#D9D9DD!important"
248
+ }
249
+ }
250
+ }
251
+ }
252
+ },
253
+ ".saveThemeContainer": {
254
+ ".MuiOutlinedInput-root": {
255
+ borderRadius: "8px",
256
+ boxShadow: "0px 4px 16px 0px #0000000D"
257
+ }
258
+ },
259
+ ".uploadedImage": {
260
+ width: "126px",
261
+ height: "126px",
262
+ borderRadius: "126px"
263
+ },
264
+ ".MuiDialog-paper": {
265
+ borderRadius: "10px",
266
+ background: theme?.palette?.editor?.miniToolBarBackground
267
+ },
268
+ "& .MuiInputBase-root": {
269
+ borderRadius: "8px",
270
+ background: theme?.palette?.editor?.inputFieldBgColor,
271
+ border: `none`,
272
+ height: "40px",
273
+ boxShadow: "0px 4px 16px 0px #0000000D",
274
+ fontFamily: "Inter, sans-serif",
275
+ "&:hover .MuiOutlinedInput-notchedOutline": {
276
+ border: `1px solid ${theme?.palette?.editor?.inputFieldBorder}`
277
+ },
278
+ "& input::placeholder": {
279
+ color: "#94A3B8 !important",
280
+ opacity: "unset",
281
+ fontFamily: "Inter, sans-serif"
282
+ },
283
+ "& .colorPickerButton": {
284
+ border: `2px solid ${theme?.palette?.editor?.buttonBorder2} !important`
285
+ }
286
+ },
287
+ "& .MuiInputBase-root:has(.colorPickerButton)": {
288
+ "& .MuiInputBase-input": {
289
+ padding: "8.5px 14px 8.5px 0px",
290
+ fontFamily: "Inter, sans-serif"
291
+ }
292
+ },
293
+ "& .MuiInputBase-input": {
294
+ color: theme?.palette?.editor?.deletePopUpButtonTextColor,
295
+ textTransform: "math-auto",
296
+ fontFamily: "Inter, sans-serif"
297
+ },
298
+ "& .MuiOutlinedInput-notchedOutline": {
299
+ border: `1px solid ${theme?.palette?.editor?.inputFieldBorder}`
300
+ },
301
+ "& fieldset": {
302
+ border: `1px solid transparent`,
303
+ borderRadius: "8px"
304
+ },
305
+ "& .saveThemeActionBtns": {
306
+ "& button": {
307
+ fontWeight: 600,
308
+ fontSize: "14px",
309
+ opacity: 1,
310
+ borderRadius: "8px",
311
+ textTransform: "math-auto",
312
+ padding: "4px 20px",
313
+ height: "fit-content",
314
+ minWidth: "90px",
315
+ lineHeight: "1.75 !important",
316
+ "@media only screen and (max-width: 899px)": {
317
+ width: "50%"
318
+ },
319
+ "&.confirmBtn": {
320
+ backgroundColor: "#2563EB",
321
+ color: "#ffffff",
322
+ border: `1px solid #2563EB`
323
+ },
324
+ "&.cancelBtn": {
325
+ backgroundColor: theme?.palette?.editor?.closeButtonBackground,
326
+ color: theme?.palette?.editor?.customDialogueCloseBtnColor,
327
+ border: `1px solid ${theme?.palette?.editor?.customDialogueCloseBtnBorder}`
328
+ }
329
+ }
330
+ }
331
+ });
332
+ export default style;
@@ -1,4 +1,4 @@
1
- import { Editor, Transforms, Element as SlateElement, Range } from "slate";
1
+ import { Editor, Transforms, Element as SlateElement, Range, Path } from "slate";
2
2
  import { Box } from "@mui/material";
3
3
  import { sizeMap } from "./font";
4
4
  import Link from "../Elements/Link/Link";
@@ -34,12 +34,12 @@ import SimpleText from "../Elements/SimpleText";
34
34
  import CheckList from "../Elements/List/CheckList";
35
35
  import { getTextColor, isEmptyTextNode } from "../helper";
36
36
  import Attachments from "../Elements/Attachments/Attachments";
37
- import { getBreakpointLineSpacing, getBreakPointsValue, getDevice, groupByBreakpoint } from "../helper/theme";
37
+ import { getBreakpointLineSpacing, getBreakPointsValue, getDevice, getElementProperty, 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, getSlateDom } from "./helper";
42
41
  import Code from "../Elements/EmbedScript/Code";
42
+ import { ReactEditor } from "slate-react";
43
43
  import FreeGrid from "../Elements/FreeGrid/FreeGrid";
44
44
  import FreeGridItem from "../Elements/FreeGrid/FreeGridItem";
45
45
  import FreeGridBox from "../Elements/FreeGrid/FreeGridBox";
@@ -47,17 +47,70 @@ import DataView from "../Elements/DataView/DataView";
47
47
  import ViewData from "../Elements/DataView/Layouts/ViewData";
48
48
  import ColumnView from "../Elements/DataView/Layouts/ColumnView";
49
49
  import SearchAttachment from "../Elements/Search/SearchAttachment";
50
- // import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
50
+ import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
51
51
  import { jsx as _jsx } from "react/jsx-runtime";
52
52
  const alignment = ["alignLeft", "alignRight", "alignCenter", "alignJustify"];
53
- const list_types = ["orderedList", "unorderedList"];
53
+ const list_types = ["orderedList", "unorderedList", "accordion-details"];
54
54
  const LIST_FORMAT_TYPE = {
55
55
  orderedList: "list-item",
56
56
  unorderedList: "list-item"
57
57
  };
58
- const NEWLINESAFTER = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix"];
58
+
59
+ // const NEWLINESAFTER = [
60
+ // "headingOne",
61
+ // "headingTwo",
62
+ // "headingThree",
63
+ // "headingFour",
64
+ // "headingFive",
65
+ // "headingSix",
66
+ // ];
67
+
68
+ const THEME_BLOCK_FIELDS = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
69
+ const convertAccordionToListItem = (editor, format) => {
70
+ const accordionLists = Array.from(Editor.nodes(editor, {
71
+ match: n => {
72
+ let accordionList = false;
73
+ if (n.type === "accordion") {
74
+ const [summary] = n.children;
75
+ accordionList = [format, "paragraph"].includes(summary.children?.[0]?.type);
76
+ }
77
+ return accordionList;
78
+ }
79
+ }));
80
+ accordionLists?.forEach(accordionList => {
81
+ const [node, path] = accordionList;
82
+ const [summary, details] = node.children;
83
+ const listItem = {
84
+ ...(summary.children[0] || {})
85
+ };
86
+ const isPara = listItem.type === "paragraph";
87
+ if (isPara) {
88
+ listItem.type = "list-item";
89
+ }
90
+
91
+ // Replace the accordion with the format
92
+ Transforms.removeNodes(editor, {
93
+ at: path
94
+ });
95
+ Transforms.insertNodes(editor, listItem, {
96
+ at: path
97
+ });
98
+ if (isPara) {
99
+ Transforms.wrapNodes(editor, {
100
+ type: format,
101
+ children: []
102
+ }, {
103
+ at: path
104
+ });
105
+ }
106
+ const nextPath = Path.next(path);
107
+ Transforms.insertNodes(editor, details.children, {
108
+ at: nextPath
109
+ });
110
+ });
111
+ };
59
112
  export const toggleBlock = (editor, format, selection = true, attr = {}) => {
60
- const isActive = isBlockActive(editor, format);
113
+ let isActive = isBlockActive(editor, format);
61
114
  const isList = list_types.includes(format);
62
115
  const isIndent = alignment.includes(format);
63
116
  const isAligned = alignment.some(alignmentType => isBlockActive(editor, alignmentType));
@@ -79,17 +132,33 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
79
132
  });
80
133
  return;
81
134
  }
82
- Transforms.unwrapNodes(editor, {
83
- match: n => list_types.includes(!Editor.isEditor(n) && SlateElement.isElement(n) && n.type),
84
- split: true
135
+ const [match] = Editor.nodes(editor, {
136
+ match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && list_types.includes(n.type),
137
+ mode: "lowest" // To ensure it's the closest parent
85
138
  });
86
139
 
140
+ if (match) {
141
+ const [matchNode, matchPath] = match;
142
+ if (matchNode.type !== "accordion-details") {
143
+ Transforms.unwrapNodes(editor, {
144
+ match: (n, n2) => {
145
+ const isList = !Editor.isEditor(n) && SlateElement.isElement(n) && list_types.includes(n.type);
146
+ return isList && n2.toString() === matchPath.toString();
147
+ },
148
+ split: true
149
+ });
150
+ } else {
151
+ isActive = false;
152
+ }
153
+ }
154
+
87
155
  // inserting blocks from "/"" commands remove searched word
88
156
  if (!selection) {
89
157
  Transforms.insertText(editor, "");
90
158
  }
159
+ const forActiveType = THEME_BLOCK_FIELDS.some(f => f === format) ? format : "paragraph";
91
160
  Transforms.setNodes(editor, {
92
- type: isActive ? "paragraph" : isList ? LIST_FORMAT_TYPE[format] : format,
161
+ type: isActive ? forActiveType : isList ? LIST_FORMAT_TYPE[format] : format,
93
162
  ...attr
94
163
  });
95
164
  if (isList && !isActive) {
@@ -98,9 +167,12 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
98
167
  children: []
99
168
  });
100
169
  }
101
- if (NEWLINESAFTER.indexOf(format) > -1) {
102
- insertNewLine(editor);
103
- }
170
+
171
+ // if (NEWLINESAFTER.indexOf(format) > -1) {
172
+ // insertNewLine(editor);
173
+ // }
174
+
175
+ convertAccordionToListItem(editor, format);
104
176
  };
105
177
  export const addMarkData = (editor, data) => {
106
178
  try {
@@ -110,9 +182,14 @@ export const addMarkData = (editor, data) => {
110
182
  }
111
183
  };
112
184
  export const toggleMark = (editor, format) => {
113
- const isActive = isMarkActive(editor, format);
185
+ const isActive = isMarkBtnActive(editor, format);
114
186
  if (isActive) {
115
- Editor.removeMark(editor, format);
187
+ const isThemeSupportedMark = textThemeFields.some(f => f === format);
188
+ if (isThemeSupportedMark) {
189
+ Editor.addMark(editor, format, false);
190
+ } else {
191
+ Editor.removeMark(editor, format);
192
+ }
116
193
  } else {
117
194
  Editor.addMark(editor, format, true);
118
195
  }
@@ -126,12 +203,76 @@ export const isMarkActive = (editor, format) => {
126
203
  return null;
127
204
  }
128
205
  };
206
+ export const isMarkBtnActive = (editor, format) => {
207
+ switch (format) {
208
+ case "bold":
209
+ {
210
+ const style = getSelectedElementStyle("font-weight", editor);
211
+ return style === "700";
212
+ }
213
+ case "italic":
214
+ {
215
+ const style = getSelectedElementStyle("font-style", editor);
216
+ return style === format;
217
+ }
218
+ // case "underline": {
219
+ // const style = getSelectedElementStyle("text-decoration");
220
+
221
+ // return style?.includes(format);
222
+ // }
223
+ // case "strikethrough": {
224
+ // const style = getSelectedElementStyle("text-decoration");
225
+
226
+ // return style?.includes("line-through");
227
+ // }
228
+ default:
229
+ return isMarkActive(editor, format);
230
+ }
231
+ };
232
+ export const getSelectedElementStyle = (styleProperty, editor, format) => {
233
+ try {
234
+ if (!editor.selection) {
235
+ return "";
236
+ }
237
+ if (Range.isCollapsed(editor.selection)) {
238
+ return "";
239
+ }
240
+ if (format) {
241
+ const value = activeMark(editor, format, true);
242
+ if (value) {
243
+ return value;
244
+ }
245
+ }
246
+ const domRange = ReactEditor.toDOMRange(editor, editor.selection);
247
+ const selectedDomNode = domRange.commonAncestorContainer;
248
+
249
+ // If it's a text node, get its parent element
250
+ const selectedElement = selectedDomNode.nodeType === 3 ? selectedDomNode.parentElement : selectedDomNode;
251
+ if (selectedElement) {
252
+ return getElementProperty(selectedElement, styleProperty);
253
+ }
254
+ } catch (err) {
255
+ console.log(err);
256
+ }
257
+ };
129
258
  export const isBlockActive = (editor, format) => {
130
259
  const [match] = Editor.nodes(editor, {
131
260
  match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format
132
261
  });
133
262
  return !!match;
134
263
  };
264
+ export const isListActive = editor => {
265
+ const list_types = ["orderedList", "unorderedList", "check-list-item", "accordion"];
266
+ const [match] = Editor.nodes(editor, {
267
+ match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && list_types.includes(n.type),
268
+ mode: "lowest" // To ensure it's the closest parent
269
+ });
270
+
271
+ if (match) {
272
+ const [matchNode] = match;
273
+ return matchNode.type;
274
+ }
275
+ };
135
276
  export const getBlockActive = (editor, format) => {
136
277
  const [match] = Editor.nodes(editor, {
137
278
  match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format
@@ -151,7 +292,7 @@ export const upateBlockActive = (editor, format, attr = {}) => {
151
292
  });
152
293
  }
153
294
  };
154
- export const activeMark = (editor, format) => {
295
+ export const activeMark = (editor, format, noDefaultValue) => {
155
296
  const defaultMarkData = {
156
297
  color: "#000000",
157
298
  bgColor: "#FFFFFF",
@@ -161,7 +302,7 @@ export const activeMark = (editor, format) => {
161
302
  };
162
303
  try {
163
304
  const marks = Editor.marks(editor);
164
- let defaultValue = defaultMarkData[format];
305
+ let defaultValue = noDefaultValue ? "" : defaultMarkData[format];
165
306
  const {
166
307
  selection
167
308
  } = editor || {};
@@ -178,6 +319,31 @@ export const activeMark = (editor, format) => {
178
319
  return null;
179
320
  }
180
321
  };
322
+
323
+ // to avoid the styles, that automatically assign from themes
324
+ const getThemeMarkedLeaf = (leaf, children) => {
325
+ const {
326
+ italic,
327
+ bold
328
+ } = leaf || {};
329
+ const style = {};
330
+ if (italic === false) {
331
+ style.fontStyle = "normal";
332
+ }
333
+ if (bold === false) {
334
+ style.fontWeight = "normal";
335
+ }
336
+ if (Object.keys(style).length) {
337
+ children = /*#__PURE__*/_jsx(Box, {
338
+ component: "span",
339
+ sx: {
340
+ "& span": style
341
+ },
342
+ children: children
343
+ });
344
+ }
345
+ return children;
346
+ };
181
347
  export const getMarked = (leaf, children, theme) => {
182
348
  const className = leaf?.doublequote ? "doublequote" : "";
183
349
  const lineH = leaf?.lineHeight;
@@ -207,6 +373,7 @@ export const getMarked = (leaf, children, theme) => {
207
373
  children: children
208
374
  });
209
375
  }
376
+ children = getThemeMarkedLeaf(leaf, children);
210
377
  if (leaf.strikethrough) {
211
378
  children = /*#__PURE__*/_jsx("span", {
212
379
  style: {
@@ -234,6 +401,15 @@ export const getMarked = (leaf, children, theme) => {
234
401
  if (leaf.color || leaf.bgColor || leaf.fontSize || leaf.fontFamily || leaf.fontWeight || lineHeight || className) {
235
402
  const family = leaf?.fontFamily;
236
403
  const textStyles = getTextColor(leaf?.color);
404
+ const fontSize = {
405
+ lg: sizeMap[leaf.fontSize] || leaf.fontSize,
406
+ ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
407
+ };
408
+ const fontSizesImportant = {};
409
+ Object.entries(fontSize).forEach(([key, value]) => {
410
+ fontSizesImportant[key] = `${value} !important`;
411
+ });
412
+ const fontSizeWithBreakpoints = wrapThemeBreakpoints(fontSizesImportant, "fontSize", theme);
237
413
  children = /*#__PURE__*/_jsx("span", {
238
414
  style: {
239
415
  background: leaf.bgColor
@@ -242,12 +418,13 @@ export const getMarked = (leaf, children, theme) => {
242
418
  className: `${className} leaf-item`,
243
419
  component: "span",
244
420
  sx: {
245
- ...groupByBreakpoint({
246
- fontSize: {
247
- lg: sizeMap[leaf.fontSize] || leaf.fontSize,
248
- ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
249
- }
250
- }, theme),
421
+ "& span": {
422
+ // fontSize: fontSizesImportant,
423
+ // ...groupByBreakpoint(fontSizesImportant, theme),
424
+ background: leaf.bgColor,
425
+ ...fontSizeWithBreakpoints
426
+ },
427
+ ...fontSizeWithBreakpoints,
251
428
  // ...wrapThemeBreakpoints(
252
429
  // {
253
430
  // lg: sizeMap[leaf.fontSize] || leaf.fontSize,
@@ -299,6 +476,16 @@ export const getBlock = props => {
299
476
  const {
300
477
  translation
301
478
  } = customProps;
479
+ const commonHeadingProps = () => ({
480
+ ...attributes,
481
+ ...element.attr,
482
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""} theme-element`
483
+ });
484
+ const commonParaProps = paraType => ({
485
+ ...attributes,
486
+ ...element.attr,
487
+ className: `edt-paragraphs content-editable ${isEmpty ? "empty" : ""} theme-element ${paraType}`
488
+ });
302
489
  const breakpoint = getDevice(window.innerWidth);
303
490
  const lineH = element?.children[0]?.lineHeight;
304
491
  const selectedLineHeight = getBreakpointLineSpacing(lineH, breakpoint);
@@ -351,6 +538,24 @@ export const getBlock = props => {
351
538
  placeholder: translation("Heading 6"),
352
539
  children: children
353
540
  });
541
+ case "paragraphOne":
542
+ return /*#__PURE__*/_jsx("p", {
543
+ ...commonParaProps("para1"),
544
+ placeholder: "Paragraph 1",
545
+ children: children
546
+ });
547
+ case "paragraphTwo":
548
+ return /*#__PURE__*/_jsx("p", {
549
+ ...commonParaProps("para2"),
550
+ placeholder: "Paragraph 2",
551
+ children: children
552
+ });
553
+ case "paragraphThree":
554
+ return /*#__PURE__*/_jsx("p", {
555
+ ...commonParaProps("para3"),
556
+ placeholder: "Paragraph 3",
557
+ children: children
558
+ });
354
559
  case "blockquote":
355
560
  return /*#__PURE__*/_jsx("blockquote", {
356
561
  ...attributes,