@flozy/editor 3.9.1 → 3.9.4
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/ChatEditor.js +45 -55
- package/dist/Editor/CommonEditor.js +111 -180
- package/dist/Editor/Editor.css +0 -7
- package/dist/Editor/Elements/AI/AIInput.js +18 -17
- package/dist/Editor/Elements/AI/CustomSelect.js +12 -19
- package/dist/Editor/Elements/AI/PopoverAIInput.js +28 -23
- package/dist/Editor/Elements/AI/Styles.js +1 -2
- package/dist/Editor/Elements/Accordion/Accordion.js +7 -74
- package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +2 -3
- package/dist/Editor/Elements/Accordion/AccordionSummary.js +60 -4
- package/dist/Editor/Elements/AppHeader/AppHeader.js +4 -26
- package/dist/Editor/Elements/Button/EditorButton.js +16 -28
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +17 -60
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
- package/dist/Editor/Elements/Color Picker/Styles.js +1 -2
- package/dist/Editor/Elements/Embed/Image.js +19 -27
- package/dist/Editor/Elements/Embed/Video.js +10 -14
- package/dist/Editor/Elements/Emoji/EmojiPicker.js +2 -4
- package/dist/Editor/Elements/Form/Form.js +1 -1
- package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +3 -12
- package/dist/Editor/Elements/Form/Workflow/UserInputs.js +1 -2
- package/dist/Editor/Elements/Grid/Grid.js +3 -27
- package/dist/Editor/Elements/Grid/GridItem.js +1 -3
- package/dist/Editor/Elements/Link/Link.js +1 -6
- package/dist/Editor/Elements/Link/LinkButton.js +2 -4
- package/dist/Editor/Elements/Link/LinkPopup.js +3 -10
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +4 -8
- package/dist/Editor/Elements/Signature/SignaturePopup.js +3 -14
- package/dist/Editor/Elements/Table/Styles.js +1 -23
- package/dist/Editor/Elements/Table/Table.js +2 -3
- package/dist/Editor/Elements/Table/TableCell.js +8 -70
- package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +0 -1
- package/dist/Editor/MiniEditor.js +1 -3
- package/dist/Editor/Styles/EditorStyles.js +1 -1
- package/dist/Editor/Toolbar/Basic/index.js +2 -4
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +2 -26
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +18 -29
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +3 -29
- package/dist/Editor/Toolbar/Mini/Options/Options.js +0 -10
- package/dist/Editor/Toolbar/Mini/Styles.js +0 -7
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +11 -4
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +86 -213
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +1 -2
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +16 -22
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +7 -52
- package/dist/Editor/Toolbar/PopupTool/index.js +17 -7
- package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
- package/dist/Editor/assets/svg/AIIcons.js +1 -153
- package/dist/Editor/assets/svg/AddTemplateIcon.js +10 -13
- package/dist/Editor/assets/svg/TextIcon.js +5 -8
- package/dist/Editor/common/ColorPickerButton.js +9 -25
- package/dist/Editor/common/DnD/DragHandleButton.js +47 -56
- package/dist/Editor/common/Icon.js +3 -43
- package/dist/Editor/common/LinkSettings/NavComponents.js +2 -5
- package/dist/Editor/common/LinkSettings/index.js +2 -4
- package/dist/Editor/common/LinkSettings/navOptions.js +2 -7
- package/dist/Editor/common/LinkSettings/style.js +8 -11
- package/dist/Editor/common/MentionsPopup/MentionsListCard.js +1 -6
- package/dist/Editor/common/MentionsPopup/Styles.js +2 -5
- package/dist/Editor/common/Section/index.js +7 -57
- package/dist/Editor/common/Section/styles.js +0 -11
- package/dist/Editor/common/Shorthands/elements.js +0 -54
- package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
- package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +3 -13
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
- package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +7 -31
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +4 -13
- package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +3 -14
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +4 -14
- package/dist/Editor/common/StyleBuilder/index.js +1 -1
- package/dist/Editor/common/iconslist.js +31 -0
- package/dist/Editor/helper/deserialize/index.js +9 -14
- package/dist/Editor/helper/theme.js +4 -190
- package/dist/Editor/hooks/useMouseMove.js +2 -4
- package/dist/Editor/hooks/useWindowMessage.js +7 -10
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +5 -47
- package/dist/Editor/plugins/withLayout.js +10 -15
- package/dist/Editor/plugins/withTable.js +2 -2
- package/dist/Editor/theme/ThemeList.js +173 -50
- package/dist/Editor/utils/SlateUtilityFunctions.js +25 -161
- package/dist/Editor/utils/button.js +17 -1
- package/dist/Editor/utils/draftToSlate.js +1 -1
- package/dist/Editor/utils/events.js +6 -65
- package/dist/Editor/utils/font.js +37 -40
- package/dist/Editor/utils/helper.js +14 -74
- package/dist/Editor/utils/table.js +43 -51
- package/package.json +3 -4
- package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +0 -73
- package/dist/Editor/Elements/AI/VoiceToText/index.js +0 -177
- package/dist/Editor/Elements/AI/VoiceToText/style.js +0 -40
- package/dist/Editor/Elements/Link/LinkPopupStyles.js +0 -28
- package/dist/Editor/Elements/Redo/RedoButton.js +0 -14
- package/dist/Editor/Elements/Undo/UndoButton.js +0 -14
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -438
- package/dist/Editor/assets/svg/RedoIcon.js +0 -27
- package/dist/Editor/assets/svg/SettingsIcon.js +0 -28
- package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
- package/dist/Editor/assets/svg/UndoIcon.js +0 -27
- package/dist/Editor/common/CustomColorPicker/index.js +0 -106
- package/dist/Editor/common/CustomColorPicker/style.js +0 -53
- package/dist/Editor/common/CustomDialog/index.js +0 -94
- package/dist/Editor/common/CustomDialog/style.js +0 -67
- package/dist/Editor/common/CustomSelect.js +0 -33
- package/dist/Editor/common/EditorCmds.js +0 -35
- package/dist/Editor/hooks/useEditorTheme.js +0 -139
- package/dist/Editor/theme/index.js +0 -144
- package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
- package/dist/Editor/themeSettings/buttons/index.js +0 -290
- package/dist/Editor/themeSettings/buttons/style.js +0 -21
- package/dist/Editor/themeSettings/colorTheme/index.js +0 -290
- package/dist/Editor/themeSettings/colorTheme/style.js +0 -77
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -123
- package/dist/Editor/themeSettings/fonts/index.js +0 -213
- package/dist/Editor/themeSettings/fonts/style.js +0 -44
- package/dist/Editor/themeSettings/icons.js +0 -60
- package/dist/Editor/themeSettings/index.js +0 -320
- package/dist/Editor/themeSettings/style.js +0 -152
- package/dist/Editor/themeSettingsAI/icons.js +0 -96
- package/dist/Editor/themeSettingsAI/index.js +0 -356
- package/dist/Editor/themeSettingsAI/saveTheme.js +0 -190
- package/dist/Editor/themeSettingsAI/style.js +0 -247
|
@@ -1,58 +1,181 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
1
|
+
import { MenuItem, Select, useTheme } from "@mui/material";
|
|
2
|
+
import { fontOptions } from "../utils/font";
|
|
3
|
+
import { toolbarGroups } from "../Toolbar/toolbarGroups";
|
|
5
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
5
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} catch (err) {
|
|
20
|
-
console.log(err);
|
|
21
|
-
}
|
|
22
|
-
setLoading(false);
|
|
23
|
-
};
|
|
6
|
+
const themes = [{
|
|
7
|
+
label: "Theme 1",
|
|
8
|
+
colors: ["#c90c1f", "#ff5d05"]
|
|
9
|
+
}, {
|
|
10
|
+
label: "Theme 2",
|
|
11
|
+
colors: ["#4c0be3", "#43f7ee"]
|
|
12
|
+
}, {
|
|
13
|
+
label: "Theme 3",
|
|
14
|
+
colors: ["#22f20f", "#fff705"]
|
|
15
|
+
}];
|
|
16
|
+
const allTools = toolbarGroups.flat();
|
|
17
|
+
function ThemeList(props) {
|
|
24
18
|
const {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
selectedTheme,
|
|
20
|
+
setSelectedTheme
|
|
21
|
+
} = props;
|
|
22
|
+
const fontWeight = allTools.find(f => f.format === "fontWeight");
|
|
23
|
+
const fontStyles = [{
|
|
24
|
+
text: "Bold",
|
|
25
|
+
value: "bold",
|
|
26
|
+
styleField: "fontWeight"
|
|
27
|
+
}, {
|
|
28
|
+
text: "Italic",
|
|
29
|
+
value: "italic",
|
|
30
|
+
styleField: "fontStyle"
|
|
31
|
+
}
|
|
32
|
+
// {
|
|
33
|
+
// text: "Underline",
|
|
34
|
+
// value: "underline",
|
|
35
|
+
// styleField: "textDecoration",
|
|
36
|
+
// },
|
|
37
|
+
// {
|
|
38
|
+
// text: "Line through",
|
|
39
|
+
// value: "line-through",
|
|
40
|
+
// styleField: "textDecoration",
|
|
41
|
+
// },
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const theme = useTheme();
|
|
45
|
+
const colorVars = theme?.vars?.colors || {};
|
|
46
|
+
const handleTypographyTheme = (key, value, elementType) => {
|
|
47
|
+
setSelectedTheme(prev => {
|
|
48
|
+
const newValue = {
|
|
49
|
+
...prev,
|
|
50
|
+
typography: {
|
|
51
|
+
...(prev.typography || {}),
|
|
52
|
+
[elementType]: {
|
|
53
|
+
...(prev?.typography?.[elementType] || {}),
|
|
54
|
+
[key]: value
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
if (!value) {
|
|
59
|
+
delete newValue?.typography?.[elementType]?.[key];
|
|
60
|
+
}
|
|
61
|
+
return newValue;
|
|
62
|
+
});
|
|
36
63
|
};
|
|
37
|
-
return /*#__PURE__*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
65
|
+
children: [themes.map((theme, i) => {
|
|
66
|
+
return /*#__PURE__*/_jsxs("button", {
|
|
67
|
+
style: {
|
|
68
|
+
margin: "10px"
|
|
69
|
+
},
|
|
70
|
+
onClick: () => setSelectedTheme(prev => ({
|
|
71
|
+
...prev,
|
|
72
|
+
colors: theme.colors
|
|
73
|
+
})),
|
|
74
|
+
children: [theme.label, /*#__PURE__*/_jsx("div", {
|
|
75
|
+
children: theme.colors.map((c, j) => {
|
|
76
|
+
return /*#__PURE__*/_jsx("div", {
|
|
77
|
+
style: {
|
|
78
|
+
width: "20px",
|
|
79
|
+
height: "20px",
|
|
80
|
+
background: c,
|
|
81
|
+
margin: "10px"
|
|
82
|
+
}
|
|
83
|
+
}, j);
|
|
84
|
+
})
|
|
85
|
+
})]
|
|
86
|
+
}, i);
|
|
87
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
88
|
+
children: ["Heading 1 Font Family", /*#__PURE__*/_jsx(Select
|
|
89
|
+
// value={""}
|
|
90
|
+
, {
|
|
91
|
+
label: "Font Family",
|
|
92
|
+
onChange: e => {
|
|
93
|
+
handleTypographyTheme("fontFamily", e.target.value, "h1");
|
|
94
|
+
},
|
|
95
|
+
children: fontOptions.map((font, i) => {
|
|
96
|
+
const {
|
|
97
|
+
text,
|
|
98
|
+
value
|
|
99
|
+
} = font;
|
|
100
|
+
return /*#__PURE__*/_jsx(MenuItem, {
|
|
101
|
+
value: value,
|
|
102
|
+
children: text
|
|
103
|
+
}, i);
|
|
104
|
+
})
|
|
105
|
+
}), "Font Weight", /*#__PURE__*/_jsx(Select
|
|
106
|
+
// value={""}
|
|
107
|
+
, {
|
|
108
|
+
label: "Font Weight",
|
|
109
|
+
onChange: e => {
|
|
110
|
+
handleTypographyTheme("fontWeight", e.target.value, "h1");
|
|
111
|
+
},
|
|
112
|
+
children: fontWeight.options.map((option, i) => {
|
|
113
|
+
const {
|
|
114
|
+
text,
|
|
115
|
+
value
|
|
116
|
+
} = option;
|
|
117
|
+
return /*#__PURE__*/_jsx(MenuItem, {
|
|
118
|
+
value: value,
|
|
119
|
+
children: text
|
|
120
|
+
}, i);
|
|
121
|
+
})
|
|
122
|
+
}), /*#__PURE__*/_jsx("input", {
|
|
123
|
+
type: "number",
|
|
124
|
+
placeholder: "font size",
|
|
125
|
+
onChange: e => {
|
|
126
|
+
handleTypographyTheme("fontSize", e.target.value, "h1");
|
|
127
|
+
}
|
|
128
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
129
|
+
children: ["Text", /*#__PURE__*/_jsx("br", {}), "Theme color", Object.values(colorVars).map((colorVar, i) => {
|
|
130
|
+
return /*#__PURE__*/_jsx("button", {
|
|
131
|
+
style: {
|
|
132
|
+
width: "20px",
|
|
133
|
+
height: "20px",
|
|
134
|
+
background: colorVar,
|
|
135
|
+
margin: "10px",
|
|
136
|
+
outline: "none"
|
|
137
|
+
},
|
|
138
|
+
onClick: () => handleTypographyTheme("color", colorVar, "h1")
|
|
139
|
+
}, i);
|
|
140
|
+
}), "normal color", /*#__PURE__*/_jsx("button", {
|
|
141
|
+
style: {
|
|
142
|
+
width: "20px",
|
|
143
|
+
height: "20px",
|
|
144
|
+
background: "#ff00e1",
|
|
145
|
+
margin: "10px",
|
|
146
|
+
outline: "none"
|
|
147
|
+
},
|
|
148
|
+
onClick: () => handleTypographyTheme("color", "#ff00e1", "h1")
|
|
149
|
+
})]
|
|
150
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
151
|
+
children: ["Font styles", fontStyles.map((option, i) => {
|
|
152
|
+
const styles = selectedTheme?.typography?.h1 || {};
|
|
153
|
+
const {
|
|
154
|
+
text,
|
|
155
|
+
value,
|
|
156
|
+
styleField
|
|
157
|
+
} = option;
|
|
158
|
+
return /*#__PURE__*/_jsxs("button", {
|
|
159
|
+
onClick: () => {
|
|
160
|
+
handleTypographyTheme(styleField, styles[styleField] === value ? null : value, "h1");
|
|
161
|
+
},
|
|
162
|
+
children: [text, " ", styles[styleField] === value]
|
|
163
|
+
}, i);
|
|
164
|
+
})]
|
|
165
|
+
}), /*#__PURE__*/_jsx("input", {
|
|
166
|
+
type: "number",
|
|
167
|
+
placeholder: "Margin text Spacing",
|
|
168
|
+
onChange: e => {
|
|
169
|
+
handleTypographyTheme("letterSpacing", e.target.value, "h1");
|
|
170
|
+
}
|
|
171
|
+
}), /*#__PURE__*/_jsx("input", {
|
|
172
|
+
type: "number",
|
|
173
|
+
placeholder: "Line spacing",
|
|
174
|
+
onChange: e => {
|
|
175
|
+
handleTypographyTheme("lineHeight", e.target.value, "h1");
|
|
176
|
+
}
|
|
54
177
|
})]
|
|
55
|
-
})
|
|
178
|
+
})]
|
|
56
179
|
});
|
|
57
180
|
}
|
|
58
181
|
export default ThemeList;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Editor, Transforms, Element as SlateElement
|
|
1
|
+
import { Editor, Transforms, Element as SlateElement } 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
|
|
37
|
+
import { getBreakPointsValue } from "../helper/theme";
|
|
38
38
|
import Variables from "../Elements/Variables/Variable";
|
|
39
|
+
import insertNewLine from "./insertNewLine";
|
|
39
40
|
import Divider from "../Elements/Divider/Divider";
|
|
40
41
|
import { getBorderColor } from "./helper";
|
|
41
42
|
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,17 +47,7 @@ const LIST_FORMAT_TYPE = {
|
|
|
47
47
|
orderedList: "list-item",
|
|
48
48
|
unorderedList: "list-item"
|
|
49
49
|
};
|
|
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"];
|
|
50
|
+
const NEWLINESAFTER = ["headingOne", "headingTwo", "headingThree"];
|
|
61
51
|
export const toggleBlock = (editor, format, selection = true, attr = {}) => {
|
|
62
52
|
const isActive = isBlockActive(editor, format);
|
|
63
53
|
const isList = list_types.includes(format);
|
|
@@ -90,9 +80,8 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
|
|
|
90
80
|
if (!selection) {
|
|
91
81
|
Transforms.insertText(editor, "");
|
|
92
82
|
}
|
|
93
|
-
const forActiveType = THEME_BLOCK_FIELDS.some(f => f === format) ? format : "paragraph";
|
|
94
83
|
Transforms.setNodes(editor, {
|
|
95
|
-
type: isActive ?
|
|
84
|
+
type: isActive ? "paragraph" : isList ? LIST_FORMAT_TYPE[format] : format,
|
|
96
85
|
...attr
|
|
97
86
|
});
|
|
98
87
|
if (isList && !isActive) {
|
|
@@ -101,12 +90,10 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
|
|
|
101
90
|
children: []
|
|
102
91
|
});
|
|
103
92
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// }
|
|
93
|
+
if (NEWLINESAFTER.indexOf(format) > -1) {
|
|
94
|
+
insertNewLine(editor);
|
|
95
|
+
}
|
|
108
96
|
};
|
|
109
|
-
|
|
110
97
|
export const addMarkData = (editor, data) => {
|
|
111
98
|
try {
|
|
112
99
|
Editor.addMark(editor, data.format, data.value);
|
|
@@ -115,14 +102,9 @@ export const addMarkData = (editor, data) => {
|
|
|
115
102
|
}
|
|
116
103
|
};
|
|
117
104
|
export const toggleMark = (editor, format) => {
|
|
118
|
-
const isActive =
|
|
105
|
+
const isActive = isMarkActive(editor, format);
|
|
119
106
|
if (isActive) {
|
|
120
|
-
|
|
121
|
-
if (isThemeSupportedMark) {
|
|
122
|
-
Editor.addMark(editor, format, false);
|
|
123
|
-
} else {
|
|
124
|
-
Editor.removeMark(editor, format);
|
|
125
|
-
}
|
|
107
|
+
Editor.removeMark(editor, format);
|
|
126
108
|
} else {
|
|
127
109
|
Editor.addMark(editor, format, true);
|
|
128
110
|
}
|
|
@@ -136,53 +118,6 @@ export const isMarkActive = (editor, format) => {
|
|
|
136
118
|
return null;
|
|
137
119
|
}
|
|
138
120
|
};
|
|
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
|
-
};
|
|
186
121
|
export const isBlockActive = (editor, format) => {
|
|
187
122
|
const [match] = Editor.nodes(editor, {
|
|
188
123
|
match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format
|
|
@@ -225,31 +160,6 @@ export const activeMark = (editor, format) => {
|
|
|
225
160
|
return null;
|
|
226
161
|
}
|
|
227
162
|
};
|
|
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
|
-
};
|
|
253
163
|
export const getMarked = (leaf, children) => {
|
|
254
164
|
const className = leaf?.doublequote ? "doublequote" : "";
|
|
255
165
|
if (leaf.bold) {
|
|
@@ -267,7 +177,6 @@ export const getMarked = (leaf, children) => {
|
|
|
267
177
|
children: children
|
|
268
178
|
});
|
|
269
179
|
}
|
|
270
|
-
children = getThemeMarkedLeaf(leaf, children);
|
|
271
180
|
if (leaf.strikethrough) {
|
|
272
181
|
children = /*#__PURE__*/_jsx("span", {
|
|
273
182
|
style: {
|
|
@@ -301,22 +210,17 @@ export const getMarked = (leaf, children) => {
|
|
|
301
210
|
} : {
|
|
302
211
|
color: leaf.color
|
|
303
212
|
};
|
|
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
|
-
});
|
|
312
213
|
children = /*#__PURE__*/_jsx("span", {
|
|
214
|
+
style: {
|
|
215
|
+
background: leaf.bgColor
|
|
216
|
+
},
|
|
313
217
|
children: /*#__PURE__*/_jsx(Box, {
|
|
314
218
|
className: className,
|
|
315
219
|
component: "span",
|
|
316
220
|
sx: {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
221
|
+
fontSize: {
|
|
222
|
+
lg: sizeMap[leaf.fontSize] || leaf.fontSize,
|
|
223
|
+
...getBreakPointsValue(leaf.fontSize, null, "overrideText")
|
|
320
224
|
},
|
|
321
225
|
...textStyles,
|
|
322
226
|
fontFamily: family,
|
|
@@ -346,71 +250,31 @@ export const getBlock = props => {
|
|
|
346
250
|
} = props;
|
|
347
251
|
const attributes = props.attributes ?? {};
|
|
348
252
|
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
|
-
});
|
|
359
253
|
switch (element.type) {
|
|
360
254
|
case "headingOne":
|
|
361
255
|
return /*#__PURE__*/_jsx("h1", {
|
|
362
|
-
...
|
|
256
|
+
...attributes,
|
|
257
|
+
...element.attr,
|
|
258
|
+
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
363
259
|
placeholder: "Heading 1",
|
|
364
260
|
children: children
|
|
365
261
|
});
|
|
366
262
|
case "headingTwo":
|
|
367
263
|
return /*#__PURE__*/_jsx("h2", {
|
|
368
|
-
...
|
|
264
|
+
...attributes,
|
|
265
|
+
...element.attr,
|
|
266
|
+
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
369
267
|
placeholder: "Heading 2",
|
|
370
268
|
children: children
|
|
371
269
|
});
|
|
372
270
|
case "headingThree":
|
|
373
271
|
return /*#__PURE__*/_jsx("h3", {
|
|
374
|
-
...
|
|
272
|
+
...attributes,
|
|
273
|
+
...element.attr,
|
|
274
|
+
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
375
275
|
placeholder: "Heading 3",
|
|
376
276
|
children: children
|
|
377
277
|
});
|
|
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
|
-
});
|
|
414
278
|
case "blockquote":
|
|
415
279
|
return /*#__PURE__*/_jsx("blockquote", {
|
|
416
280
|
...attributes,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Transforms } from "slate";
|
|
2
2
|
import insertNewLine from "./insertNewLine";
|
|
3
|
+
import { windowVar } from "./helper";
|
|
3
4
|
export const insertButton = editor => {
|
|
4
5
|
const button = {
|
|
5
6
|
type: "button",
|
|
@@ -9,7 +10,22 @@ export const insertButton = editor => {
|
|
|
9
10
|
buttonLink: {
|
|
10
11
|
linkType: "webAddress"
|
|
11
12
|
},
|
|
12
|
-
iconPosition: "start"
|
|
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 || {})
|
|
13
29
|
};
|
|
14
30
|
Transforms.insertNodes(editor, button);
|
|
15
31
|
Transforms.move(editor);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { Editor, Transforms, Element, Node, Path
|
|
1
|
+
import { Editor, Transforms, Element, Node, Path } from "slate";
|
|
2
2
|
import { toggleBlock } from "./SlateUtilityFunctions";
|
|
3
3
|
import insertNewLine from "./insertNewLine";
|
|
4
4
|
import { insertAccordion } from "./accordion";
|
|
5
5
|
import { isListItem } from "./helper";
|
|
6
|
-
import EDITORCMDS from "../common/EditorCmds";
|
|
7
6
|
const HOTKEYS = {
|
|
8
7
|
b: "bold",
|
|
9
8
|
i: "italic",
|
|
@@ -64,8 +63,7 @@ export const commands = props => {
|
|
|
64
63
|
try {
|
|
65
64
|
const {
|
|
66
65
|
event,
|
|
67
|
-
editor
|
|
68
|
-
needLayout
|
|
66
|
+
editor
|
|
69
67
|
} = props;
|
|
70
68
|
if (HOTKEYS[event.key]) {
|
|
71
69
|
event.preventDefault();
|
|
@@ -75,11 +73,6 @@ export const commands = props => {
|
|
|
75
73
|
} else {
|
|
76
74
|
Editor.addMark(editor, HOTKEYS[event.key], true);
|
|
77
75
|
}
|
|
78
|
-
} else if (EDITORCMDS[event.key]) {
|
|
79
|
-
EDITORCMDS[event.key](event, {
|
|
80
|
-
editor,
|
|
81
|
-
needLayout
|
|
82
|
-
});
|
|
83
76
|
}
|
|
84
77
|
} catch (err) {
|
|
85
78
|
console.log(err);
|
|
@@ -103,7 +96,7 @@ export const indentation = props => {
|
|
|
103
96
|
Transforms.wrapNodes(editor, {
|
|
104
97
|
type: listItem.type,
|
|
105
98
|
children: [{
|
|
106
|
-
text:
|
|
99
|
+
text: ''
|
|
107
100
|
}]
|
|
108
101
|
});
|
|
109
102
|
} else {
|
|
@@ -160,7 +153,7 @@ const checkListEnterEvent = (editor, type) => {
|
|
|
160
153
|
Transforms.insertNodes(editor, {
|
|
161
154
|
type: "check-list-item",
|
|
162
155
|
children: [{
|
|
163
|
-
text:
|
|
156
|
+
text: ''
|
|
164
157
|
}]
|
|
165
158
|
}, {
|
|
166
159
|
at: newPath
|
|
@@ -169,7 +162,7 @@ const checkListEnterEvent = (editor, type) => {
|
|
|
169
162
|
// focus on the end of the line
|
|
170
163
|
Transforms.move(editor, {
|
|
171
164
|
distance: 1,
|
|
172
|
-
unit:
|
|
165
|
+
unit: 'line'
|
|
173
166
|
});
|
|
174
167
|
} else {
|
|
175
168
|
toggleBlock(editor, type);
|
|
@@ -179,6 +172,7 @@ const checkListEnterEvent = (editor, type) => {
|
|
|
179
172
|
export const enterEvent = (e, editor, isMobile) => {
|
|
180
173
|
try {
|
|
181
174
|
const ele = isListItem(editor);
|
|
175
|
+
|
|
182
176
|
// on shift enter break line in same node
|
|
183
177
|
if (e.shiftKey && !isMobile) {
|
|
184
178
|
e.preventDefault();
|
|
@@ -187,7 +181,6 @@ export const enterEvent = (e, editor, isMobile) => {
|
|
|
187
181
|
const {
|
|
188
182
|
type
|
|
189
183
|
} = ele[0];
|
|
190
|
-
const path = ele[1];
|
|
191
184
|
const text = Node.string(ele[0]);
|
|
192
185
|
switch (type) {
|
|
193
186
|
case "list-item":
|
|
@@ -219,58 +212,6 @@ export const enterEvent = (e, editor, isMobile) => {
|
|
|
219
212
|
insertAccordion(editor, nextPath);
|
|
220
213
|
}
|
|
221
214
|
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;
|
|
274
215
|
default:
|
|
275
216
|
}
|
|
276
217
|
}
|