@flozy/editor 3.9.7 → 3.9.9
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.
- package/dist/Editor/CommonEditor.js +177 -109
- package/dist/Editor/Editor.css +7 -0
- package/dist/Editor/Elements/AI/AIInput.js +18 -24
- package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
- package/dist/Editor/Elements/AI/PopoverAIInput.js +66 -89
- package/dist/Editor/Elements/AI/Styles.js +2 -1
- package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
- package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
- package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
- package/dist/Editor/Elements/AI/helper.js +5 -3
- package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
- package/dist/Editor/Elements/Button/EditorButton.js +28 -16
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
- package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
- package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
- package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
- package/dist/Editor/Elements/Grid/Grid.js +27 -3
- package/dist/Editor/Elements/Grid/GridItem.js +3 -1
- package/dist/Editor/Elements/Link/Link.js +6 -1
- package/dist/Editor/Elements/Link/LinkButton.js +4 -2
- package/dist/Editor/Elements/Link/LinkPopup.js +10 -3
- package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
- package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
- package/dist/Editor/Elements/Signature/SignaturePopup.js +20 -5
- package/dist/Editor/Elements/Table/Styles.js +23 -1
- package/dist/Editor/Elements/Table/Table.js +2 -1
- package/dist/Editor/Elements/Table/TableCell.js +69 -7
- package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +1 -0
- package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
- package/dist/Editor/MiniEditor.js +3 -1
- package/dist/Editor/Styles/EditorStyles.js +1 -1
- package/dist/Editor/Toolbar/Basic/index.js +4 -2
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +4 -2
- package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
- package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
- package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
- package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +40 -33
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +2 -2
- package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
- package/dist/Editor/assets/svg/AIIcons.js +153 -1
- package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
- package/dist/Editor/assets/svg/RedoIcon.js +27 -0
- package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
- package/dist/Editor/assets/svg/TextIcon.js +8 -5
- package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
- package/dist/Editor/assets/svg/UndoIcon.js +27 -0
- package/dist/Editor/common/ColorPickerButton.js +25 -9
- package/dist/Editor/common/CustomColorPicker/index.js +106 -0
- package/dist/Editor/common/CustomColorPicker/style.js +53 -0
- package/dist/Editor/common/CustomDialog/index.js +94 -0
- package/dist/Editor/common/CustomDialog/style.js +67 -0
- package/dist/Editor/common/CustomSelect.js +33 -0
- package/dist/Editor/common/DnD/DragHandleButton.js +56 -47
- package/dist/Editor/common/Icon.js +43 -3
- package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
- package/dist/Editor/common/LinkSettings/index.js +4 -2
- package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
- package/dist/Editor/common/LinkSettings/style.js +11 -8
- package/dist/Editor/common/Section/index.js +57 -7
- package/dist/Editor/common/Section/styles.js +11 -0
- package/dist/Editor/common/Shorthands/elements.js +54 -0
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
- package/dist/Editor/common/StyleBuilder/index.js +1 -1
- package/dist/Editor/common/iconslist.js +0 -31
- package/dist/Editor/helper/theme.js +190 -4
- package/dist/Editor/hooks/useEditorTheme.js +139 -0
- package/dist/Editor/hooks/useMouseMove.js +4 -1
- package/dist/Editor/hooks/useWindowMessage.js +10 -7
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +1 -1
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/theme/ThemeList.js +50 -173
- package/dist/Editor/theme/index.js +144 -0
- package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
- package/dist/Editor/themeSettings/buttons/index.js +290 -0
- package/dist/Editor/themeSettings/buttons/style.js +21 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
- package/dist/Editor/themeSettings/fonts/index.js +213 -0
- package/dist/Editor/themeSettings/fonts/style.js +44 -0
- package/dist/Editor/themeSettings/icons.js +60 -0
- package/dist/Editor/themeSettings/index.js +320 -0
- package/dist/Editor/themeSettings/style.js +152 -0
- package/dist/Editor/themeSettingsAI/icons.js +96 -0
- package/dist/Editor/themeSettingsAI/index.js +356 -0
- package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
- package/dist/Editor/themeSettingsAI/style.js +247 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +161 -25
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/events.js +54 -2
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +31 -2
- package/dist/Editor/utils/table.js +51 -43
- package/package.json +3 -2
|
@@ -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";
|
|
@@ -34,12 +34,12 @@ import SimpleText from "../Elements/SimpleText";
|
|
|
34
34
|
import CheckList from "../Elements/List/CheckList";
|
|
35
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
|
-
|
|
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 ?
|
|
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
|
-
|
|
94
|
-
|
|
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 =
|
|
118
|
+
const isActive = isMarkBtnActive(editor, format);
|
|
106
119
|
if (isActive) {
|
|
107
|
-
|
|
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: {
|
|
@@ -210,17 +301,22 @@ export const getMarked = (leaf, children) => {
|
|
|
210
301
|
} : {
|
|
211
302
|
color: leaf.color
|
|
212
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
|
+
});
|
|
213
312
|
children = /*#__PURE__*/_jsx("span", {
|
|
214
|
-
style: {
|
|
215
|
-
background: leaf.bgColor
|
|
216
|
-
},
|
|
217
313
|
children: /*#__PURE__*/_jsx(Box, {
|
|
218
314
|
className: className,
|
|
219
315
|
component: "span",
|
|
220
316
|
sx: {
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
317
|
+
"& span": {
|
|
318
|
+
fontSize: fontSizesImportant,
|
|
319
|
+
background: leaf.bgColor
|
|
224
320
|
},
|
|
225
321
|
...textStyles,
|
|
226
322
|
fontFamily: family,
|
|
@@ -250,31 +346,71 @@ export const getBlock = props => {
|
|
|
250
346
|
} = props;
|
|
251
347
|
const attributes = props.attributes ?? {};
|
|
252
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
|
+
});
|
|
253
359
|
switch (element.type) {
|
|
254
360
|
case "headingOne":
|
|
255
361
|
return /*#__PURE__*/_jsx("h1", {
|
|
256
|
-
...
|
|
257
|
-
...element.attr,
|
|
258
|
-
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
362
|
+
...commonHeadingProps(),
|
|
259
363
|
placeholder: "Heading 1",
|
|
260
364
|
children: children
|
|
261
365
|
});
|
|
262
366
|
case "headingTwo":
|
|
263
367
|
return /*#__PURE__*/_jsx("h2", {
|
|
264
|
-
...
|
|
265
|
-
...element.attr,
|
|
266
|
-
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
368
|
+
...commonHeadingProps(),
|
|
267
369
|
placeholder: "Heading 2",
|
|
268
370
|
children: children
|
|
269
371
|
});
|
|
270
372
|
case "headingThree":
|
|
271
373
|
return /*#__PURE__*/_jsx("h3", {
|
|
272
|
-
...
|
|
273
|
-
...element.attr,
|
|
274
|
-
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
374
|
+
...commonHeadingProps(),
|
|
275
375
|
placeholder: "Heading 3",
|
|
276
376
|
children: children
|
|
277
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
|
+
});
|
|
278
414
|
case "blockquote":
|
|
279
415
|
return /*#__PURE__*/_jsx("blockquote", {
|
|
280
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
|
}
|