@flozy/editor 10.7.0 → 10.7.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.
- package/dist/Editor/ChatEditor.js +17 -16
- package/dist/Editor/CommonEditor.js +126 -15
- package/dist/Editor/DialogWrapper.js +31 -25
- package/dist/Editor/Editor.css +39 -11
- package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
- package/dist/Editor/Elements/AI/Styles.js +1 -0
- package/dist/Editor/Elements/Accordion/Accordion.js +25 -17
- package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
- package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
- package/dist/Editor/Elements/Attachments/Attachments.js +153 -11
- package/dist/Editor/Elements/Attachments/AttachmentsButton.js +14 -4
- package/dist/Editor/Elements/Button/EditorButton.js +23 -7
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
- package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
- package/dist/Editor/Elements/Embed/Embed.js +36 -43
- package/dist/Editor/Elements/Embed/Image.js +240 -23
- package/dist/Editor/Elements/Embed/Video.js +246 -15
- package/dist/Editor/Elements/Form/FormField.js +1 -1
- package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
- package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +39 -33
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +7 -4
- package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +1 -0
- package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
- package/dist/Editor/Elements/FreeGrid/helper.js +115 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +9 -0
- package/dist/Editor/Elements/Grid/GridItem.js +1 -1
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +3 -3
- package/dist/Editor/Elements/Title/title.js +6 -6
- package/dist/Editor/Elements/TopBanner/TopBanner.js +6 -1
- package/dist/Editor/Elements/TopBanner/TopBannerButton.js +8 -2
- package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
- package/dist/Editor/MiniEditor.js +2 -1
- package/dist/Editor/Styles/EditorStyles.js +20 -5
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
- package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +19 -5
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +16 -7
- package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +69 -9
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +70 -12
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +5 -2
- package/dist/Editor/Toolbar/toolbarGroups.js +56 -10
- package/dist/Editor/assets/svg/BackIcon.js +18 -0
- package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
- package/dist/Editor/common/ColorPickerButton.js +38 -16
- package/dist/Editor/common/CustomColorPicker/index.js +130 -0
- package/dist/Editor/common/CustomColorPicker/style.js +53 -0
- package/dist/Editor/common/CustomDialog2/index.js +94 -0
- package/dist/Editor/common/CustomDialog2/style.js +67 -0
- package/dist/Editor/common/CustomSelect.js +43 -0
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
- package/dist/Editor/common/Icon.js +28 -0
- package/dist/Editor/common/ImageSelector/ImageSelector.js +45 -7
- package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
- package/dist/Editor/common/ImageSelector/Styles.js +3 -9
- package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
- package/dist/Editor/common/MentionsPopup/index.js +9 -1
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
- package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
- package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
- package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -18
- package/dist/Editor/common/RnD/Utils/index.js +3 -1
- package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +45 -58
- package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
- package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
- package/dist/Editor/common/RnD/index.js +48 -13
- package/dist/Editor/common/Shorthands/elements.js +62 -4
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +20 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
- package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
- package/dist/Editor/common/StyleBuilder/index.js +8 -4
- package/dist/Editor/common/Uploader.js +125 -17
- package/dist/Editor/common/UploaderWithProgress.js +183 -0
- package/dist/Editor/common/iconslist.js +21 -0
- package/dist/Editor/commonStyle.js +107 -64
- package/dist/Editor/helper/index.js +10 -2
- package/dist/Editor/helper/textIndeces.js +58 -0
- package/dist/Editor/helper/theme.js +203 -2
- package/dist/Editor/hooks/useEditorTheme.js +153 -0
- package/dist/Editor/hooks/useMouseMove.js +9 -3
- package/dist/Editor/hooks/useThemeValues.js +63 -0
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +7 -3
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/service/fileupload.js +53 -0
- package/dist/Editor/theme/ThemeList.js +50 -173
- package/dist/Editor/theme/index.js +149 -0
- package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
- package/dist/Editor/themeSettings/buttons/index.js +300 -0
- package/dist/Editor/themeSettings/buttons/style.js +23 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
- package/dist/Editor/themeSettings/fonts/index.js +240 -0
- package/dist/Editor/themeSettings/fonts/style.js +62 -0
- package/dist/Editor/themeSettings/icons.js +60 -0
- package/dist/Editor/themeSettings/index.js +380 -0
- package/dist/Editor/themeSettings/style.js +299 -0
- package/dist/Editor/themeSettingsAI/icons.js +96 -0
- package/dist/Editor/themeSettingsAI/index.js +355 -0
- package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
- package/dist/Editor/themeSettingsAI/style.js +332 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +182 -21
- package/dist/Editor/utils/accordion.js +62 -34
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/draftToSlate.js +3 -2
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +97 -21
- package/dist/Editor/utils/insertAppHeader.js +8 -4
- package/package.json +4 -4
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -454
@@ -1,5 +1,5 @@
|
|
1
|
-
import React, {
|
2
|
-
import {
|
1
|
+
import React, { useState } from "react";
|
2
|
+
import { Transforms } from "slate";
|
3
3
|
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
4
4
|
import AccordionBtnPopup from "./AccordionBtnPopup";
|
5
5
|
import { IconButton, Tooltip, Box } from "@mui/material";
|
@@ -94,22 +94,30 @@ const Accordion = props => {
|
|
94
94
|
theme
|
95
95
|
} = useEditorContext();
|
96
96
|
const classes = useCommonStyle(theme);
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
97
|
+
|
98
|
+
// useEffect(() => {
|
99
|
+
// if (!editor.selection || !children[1]) return;
|
100
|
+
|
101
|
+
// try {
|
102
|
+
// const accordionDetailsElement = element.children?.[1];
|
103
|
+
|
104
|
+
// const detailsPath = ReactEditor.findPath(editor, accordionDetailsElement);
|
105
|
+
|
106
|
+
// const detailsRange = Editor.range(editor, detailsPath);
|
107
|
+
|
108
|
+
// const isInside = Range.intersection(detailsRange, editor.selection);
|
109
|
+
|
110
|
+
// if (isInside && !toggle) {
|
111
|
+
// setToggle(true);
|
112
|
+
// }
|
113
|
+
// } catch (e) {
|
114
|
+
// console.error(e);
|
115
|
+
// }
|
116
|
+
// }, [editor.selection, children]);
|
117
|
+
|
111
118
|
const onToggle = () => {
|
112
119
|
setToggle(!toggle);
|
120
|
+
Transforms.deselect(editor);
|
113
121
|
};
|
114
122
|
const ToolBar = () => {
|
115
123
|
return selected && !showTool ? /*#__PURE__*/_jsxs("div", {
|
@@ -206,7 +214,6 @@ const Accordion = props => {
|
|
206
214
|
className: "accordion-title"
|
207
215
|
// style={{ background: bgColor, ...borderStyle }}
|
208
216
|
,
|
209
|
-
onClick: onToggle,
|
210
217
|
children: [/*#__PURE__*/_jsx(Box, {
|
211
218
|
role: "button",
|
212
219
|
className: "accordion-summary-collapse-btn",
|
@@ -221,6 +228,7 @@ const Accordion = props => {
|
|
221
228
|
},
|
222
229
|
cursor: "pointer"
|
223
230
|
},
|
231
|
+
onClick: onToggle,
|
224
232
|
children: !toggle ? /*#__PURE__*/_jsx(Icon, {
|
225
233
|
icon: "accordionArrow"
|
226
234
|
}) : /*#__PURE__*/_jsx(Icon, {
|
@@ -268,7 +268,7 @@ function AppHeader(props) {
|
|
268
268
|
style: {
|
269
269
|
display: "inline-flex",
|
270
270
|
alignItems: "center",
|
271
|
-
color: textColor,
|
271
|
+
color: textColor || "#000000",
|
272
272
|
fontSize: logoFontSize,
|
273
273
|
fontFamily: titleFontFamily,
|
274
274
|
justifyContent: isLogoRight ? "end" : "start"
|
@@ -323,7 +323,7 @@ function AppHeader(props) {
|
|
323
323
|
fontFamily: fontFamily,
|
324
324
|
textTransform: "none",
|
325
325
|
fontSize: fontSize || "16px",
|
326
|
-
color: textColor || "#
|
326
|
+
color: textColor || "#000",
|
327
327
|
background: bgColor || "none",
|
328
328
|
border: borderColorHover ? `1px solid transparent` : "none",
|
329
329
|
"& .m-settings": {
|
@@ -339,7 +339,7 @@ function AppHeader(props) {
|
|
339
339
|
background: "#FFF"
|
340
340
|
},
|
341
341
|
"&:hover": {
|
342
|
-
color: textColorHover || textColor || "#
|
342
|
+
color: textColorHover || textColor || "#000",
|
343
343
|
background: bgColorHover || bgColor || "none",
|
344
344
|
border: borderColorHover ? `1px solid ${borderColorHover}` : "none",
|
345
345
|
"& .m-settings": {
|
@@ -0,0 +1,16 @@
|
|
1
|
+
const useAttachmentStyle = theme => ({
|
2
|
+
attachmentRoot: {
|
3
|
+
"& .uploadinDetails": {
|
4
|
+
display: "flex",
|
5
|
+
gap: "10px",
|
6
|
+
"& .MuiCircularProgress-root": {
|
7
|
+
width: "15px !important",
|
8
|
+
height: "15px !important"
|
9
|
+
}
|
10
|
+
},
|
11
|
+
"& .cancelBtn": {
|
12
|
+
display: "contents"
|
13
|
+
}
|
14
|
+
}
|
15
|
+
});
|
16
|
+
export default useAttachmentStyle;
|
@@ -1,33 +1,141 @@
|
|
1
|
-
import React from "react";
|
2
|
-
import
|
1
|
+
import React, { useEffect, useRef, useState } from "react";
|
2
|
+
import Box from '@mui/material/Box';
|
3
|
+
import Card from '@mui/material/Card';
|
4
|
+
import CardMedia from '@mui/material/CardMedia';
|
5
|
+
import CardContent from '@mui/material/CardContent';
|
6
|
+
import Typography from '@mui/material/Typography';
|
7
|
+
import CircularProgress from '@mui/material/CircularProgress';
|
8
|
+
import IconButton from '@mui/material/IconButton';
|
3
9
|
import PictureAsPdfIcon from "@mui/icons-material/PictureAsPdf";
|
4
10
|
import TextSnippetIcon from "@mui/icons-material/TextSnippet";
|
11
|
+
import HighlightOffRoundedIcon from "@mui/icons-material/HighlightOffRounded";
|
12
|
+
import { Transforms } from "slate";
|
13
|
+
import { ReactEditor, useSlateStatic } from "slate-react";
|
5
14
|
import { formatDate } from "../../utils/helper";
|
6
15
|
import Icon from "../../common/Icon";
|
7
16
|
import { getEmbedURL } from "../../helper";
|
8
17
|
import Video from "../Embed/Video";
|
18
|
+
import { formatFileSize } from "../../service/fileupload";
|
19
|
+
import { useEditorContext } from "../../hooks/useMouseMove";
|
20
|
+
import useAttachmentStyle from "./AttachmentStyles";
|
9
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
22
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
10
23
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
11
24
|
const Attachments = props => {
|
12
25
|
const {
|
13
26
|
attributes,
|
14
27
|
element,
|
15
|
-
children
|
28
|
+
children,
|
29
|
+
customProps
|
16
30
|
} = props;
|
17
31
|
const {
|
18
32
|
url,
|
19
33
|
type,
|
20
|
-
date
|
34
|
+
date,
|
35
|
+
fileName,
|
36
|
+
isUploading,
|
37
|
+
file,
|
38
|
+
fileSize,
|
39
|
+
uniqueId
|
21
40
|
} = element;
|
41
|
+
const {
|
42
|
+
resumeUploadState,
|
43
|
+
services,
|
44
|
+
uploadFile,
|
45
|
+
uploadTerminator
|
46
|
+
} = customProps || {};
|
22
47
|
const {
|
23
48
|
isEmbed
|
24
49
|
} = getEmbedURL(element, true);
|
25
50
|
const getLastName = url?.split("/").pop();
|
26
|
-
const
|
51
|
+
const fileName2 = `${decodeURIComponent(getLastName)}`;
|
52
|
+
const editor = useSlateStatic();
|
53
|
+
const {
|
54
|
+
theme
|
55
|
+
} = useEditorContext();
|
56
|
+
const classes = useAttachmentStyle(theme);
|
57
|
+
const path = ReactEditor.findPath(editor, element);
|
58
|
+
const [redirectURL, setRedirectURL] = useState(isUploading ? null : url);
|
59
|
+
const [uploadStatus, setUploadStatus] = useState({
|
60
|
+
isUploading: !!isUploading,
|
61
|
+
uploadPercentage: 0,
|
62
|
+
fileName: fileName || fileName2,
|
63
|
+
fileSize: fileSize
|
64
|
+
});
|
65
|
+
const xhrRef = useRef(null);
|
66
|
+
const cancelUpload = () => {
|
67
|
+
Transforms.removeNodes(editor, {
|
68
|
+
at: path
|
69
|
+
});
|
70
|
+
uploadTerminator(uniqueId, setUploadStatus);
|
71
|
+
};
|
72
|
+
const onSave = url => {
|
73
|
+
setRedirectURL(url);
|
74
|
+
Transforms.setNodes(editor, {
|
75
|
+
url: url,
|
76
|
+
isUploading: false
|
77
|
+
}, {
|
78
|
+
at: path
|
79
|
+
});
|
80
|
+
setUploadStatus({
|
81
|
+
isUploading: false,
|
82
|
+
uploadPercentage: 0,
|
83
|
+
fileName: null,
|
84
|
+
fileSize: null
|
85
|
+
});
|
86
|
+
};
|
87
|
+
const handleFileUpload = async () => {
|
88
|
+
if (!file) return;
|
89
|
+
try {
|
90
|
+
const id = !uniqueId ? crypto?.randomUUID() : uniqueId;
|
91
|
+
const result = await services("uploadFile", file);
|
92
|
+
const uploadUrl = result?.data?.[0];
|
93
|
+
const fileEntry = {
|
94
|
+
file: file,
|
95
|
+
xhrRef,
|
96
|
+
presidnedURL: uploadUrl,
|
97
|
+
status: "uploading"
|
98
|
+
};
|
99
|
+
uploadFile(id, fileEntry, setUploadStatus, onSave, "document");
|
100
|
+
Transforms.setNodes(editor, {
|
101
|
+
uniqueId: id,
|
102
|
+
isUploading: true
|
103
|
+
}, {
|
104
|
+
at: path
|
105
|
+
});
|
106
|
+
} catch (error) {
|
107
|
+
console.error("Upload failed:", error);
|
108
|
+
setUploadStatus(prev => ({
|
109
|
+
...prev,
|
110
|
+
isUploading: false,
|
111
|
+
uploadPercentage: 0
|
112
|
+
}));
|
113
|
+
}
|
114
|
+
};
|
115
|
+
const noUploadTracks = () => {
|
116
|
+
setUploadStatus({
|
117
|
+
isUploading: false,
|
118
|
+
uploadPercentage: 0,
|
119
|
+
fileName: null,
|
120
|
+
fileSize: null
|
121
|
+
});
|
122
|
+
setRedirectURL(null);
|
123
|
+
Transforms.removeNodes(editor, {
|
124
|
+
at: path
|
125
|
+
});
|
126
|
+
};
|
127
|
+
useEffect(() => {
|
128
|
+
if (uniqueId && isUploading) {
|
129
|
+
resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "document");
|
130
|
+
} else if (file && isUploading) {
|
131
|
+
handleFileUpload();
|
132
|
+
}
|
133
|
+
}, []);
|
27
134
|
return !isEmbed ? /*#__PURE__*/_jsxs(Box, {
|
28
135
|
component: "div",
|
29
136
|
className: "attachment-wrpr-ev2",
|
30
137
|
...attributes,
|
138
|
+
sx: classes?.attachmentRoot,
|
31
139
|
contentEditable: false,
|
32
140
|
style: {
|
33
141
|
display: "block"
|
@@ -41,7 +149,8 @@ const Attachments = props => {
|
|
41
149
|
padding: "8px",
|
42
150
|
boxShadow: "none",
|
43
151
|
border: "1px solid #eae9e9",
|
44
|
-
backgroundColor: "#F7F7F7"
|
152
|
+
backgroundColor: "#F7F7F7",
|
153
|
+
position: "relative"
|
45
154
|
},
|
46
155
|
children: [/*#__PURE__*/_jsx(CardMedia, {
|
47
156
|
sx: {
|
@@ -67,7 +176,7 @@ const Attachments = props => {
|
|
67
176
|
})
|
68
177
|
}), /*#__PURE__*/_jsxs(CardContent, {
|
69
178
|
component: "a",
|
70
|
-
href:
|
179
|
+
href: redirectURL,
|
71
180
|
target: "_blank",
|
72
181
|
style: {
|
73
182
|
display: "flex",
|
@@ -76,7 +185,8 @@ const Attachments = props => {
|
|
76
185
|
padding: "8px",
|
77
186
|
textDecoration: "none",
|
78
187
|
flexDirection: "column",
|
79
|
-
color: "#0F172A"
|
188
|
+
color: "#0F172A",
|
189
|
+
flexGrow: uploadStatus?.isUploading && 1
|
80
190
|
},
|
81
191
|
children: [/*#__PURE__*/_jsx(Typography, {
|
82
192
|
style: {
|
@@ -85,16 +195,48 @@ const Attachments = props => {
|
|
85
195
|
fontSize: "14px"
|
86
196
|
},
|
87
197
|
component: "div",
|
88
|
-
|
89
|
-
|
198
|
+
className: "truncateText",
|
199
|
+
children: fileName2 || fileName
|
200
|
+
}), /*#__PURE__*/_jsxs(Typography, {
|
90
201
|
style: {
|
91
202
|
fontWeight: "normal",
|
92
203
|
color: "#64748b",
|
93
204
|
fontSize: "11px"
|
94
205
|
},
|
95
206
|
component: "div",
|
96
|
-
|
207
|
+
className: "uploadinDetails",
|
208
|
+
children: [uploadStatus?.isUploading && /*#__PURE__*/_jsxs(_Fragment, {
|
209
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
210
|
+
sx: {
|
211
|
+
fontSize: 12,
|
212
|
+
color: "#64748b"
|
213
|
+
},
|
214
|
+
children: `${formatFileSize(fileSize)}`
|
215
|
+
}), /*#__PURE__*/_jsx(CircularProgress, {
|
216
|
+
variant: "determinate",
|
217
|
+
value: uploadStatus?.uploadPercentage ?? 0,
|
218
|
+
size: 20,
|
219
|
+
thickness: 5
|
220
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
221
|
+
sx: {
|
222
|
+
fontSize: 12,
|
223
|
+
color: "#64748b"
|
224
|
+
},
|
225
|
+
children: `${uploadStatus?.uploadPercentage?.toFixed(0) ?? 0}%`
|
226
|
+
})]
|
227
|
+
}), !uploadStatus?.isUploading && formatDate(date)]
|
97
228
|
})]
|
229
|
+
}), uploadStatus?.isUploading && /*#__PURE__*/_jsx(IconButton, {
|
230
|
+
onClick: cancelUpload,
|
231
|
+
sx: {
|
232
|
+
position: "absolute",
|
233
|
+
right: 4,
|
234
|
+
top: 4
|
235
|
+
},
|
236
|
+
"aria-label": "Cancel upload",
|
237
|
+
size: "small",
|
238
|
+
className: "cancelBtn",
|
239
|
+
children: /*#__PURE__*/_jsx(HighlightOffRoundedIcon, {})
|
98
240
|
})]
|
99
241
|
}), /*#__PURE__*/_jsx("span", {
|
100
242
|
contentEditable: false,
|
@@ -4,6 +4,7 @@ import ToolbarIcon from "../../common/ToolbarIcon";
|
|
4
4
|
import Icon from "../../common/Icon";
|
5
5
|
import ImageSelector from "../../common/ImageSelector/ImageSelector";
|
6
6
|
import { insertAttachments } from "../../utils/attachments";
|
7
|
+
import { insertUploadStatusNodeForAttachment } from "../../service/fileupload";
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
8
9
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
@@ -17,13 +18,21 @@ const AttachmentsButton = props => {
|
|
17
18
|
const {
|
18
19
|
translation
|
19
20
|
} = customProps;
|
21
|
+
const [uploadStatus, setUploadStatus] = useState({
|
22
|
+
isUploading: false,
|
23
|
+
uploadPercentage: 0
|
24
|
+
});
|
20
25
|
const handleClick = () => {
|
21
26
|
SetOpen(true);
|
22
27
|
};
|
23
28
|
const onSelectImage = url => {
|
24
|
-
|
25
|
-
|
26
|
-
|
29
|
+
if (!url?.isUpload && url?.embedURL) {
|
30
|
+
insertAttachments(editor, {
|
31
|
+
url: url?.embedURL
|
32
|
+
});
|
33
|
+
} else {
|
34
|
+
insertUploadStatusNodeForAttachment(editor, url?.file);
|
35
|
+
}
|
27
36
|
handleClose();
|
28
37
|
};
|
29
38
|
const handleClose = () => {
|
@@ -42,7 +51,8 @@ const AttachmentsButton = props => {
|
|
42
51
|
onClose: handleClose,
|
43
52
|
customProps: customProps,
|
44
53
|
onSelectImage: onSelectImage,
|
45
|
-
title: "Document"
|
54
|
+
title: "Document",
|
55
|
+
setUploadStatus: setUploadStatus
|
46
56
|
})]
|
47
57
|
});
|
48
58
|
};
|
@@ -9,6 +9,8 @@ import { WorkflowIcon } from "../../common/iconslist";
|
|
9
9
|
import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../../helper/theme";
|
10
10
|
import { handleLinkType, windowVar } from "../../utils/helper";
|
11
11
|
import LinkSettings from "../../common/LinkSettings";
|
12
|
+
import { useEditorTheme } from "../../hooks/useEditorTheme";
|
13
|
+
import { getTheme } from "../../theme";
|
12
14
|
import Icon from "../../common/Icon";
|
13
15
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
14
16
|
import useCommonStyle from "../../commonStyle";
|
@@ -40,6 +42,12 @@ const EditorButton = props => {
|
|
40
42
|
const [openMoreOptions, setOpenMoreOptions] = useState(false);
|
41
43
|
const [, setIconLoaded] = useState(false);
|
42
44
|
const classes = useCommonStyle(appTheme);
|
45
|
+
const {
|
46
|
+
theme: selectedTheme
|
47
|
+
} = useEditorTheme();
|
48
|
+
const {
|
49
|
+
buttonTheme
|
50
|
+
} = getTheme(selectedTheme);
|
43
51
|
const {
|
44
52
|
label,
|
45
53
|
bgColor,
|
@@ -54,7 +62,7 @@ const EditorButton = props => {
|
|
54
62
|
textColorHover,
|
55
63
|
bgColorHover,
|
56
64
|
borderColorHover,
|
57
|
-
buttonIcon,
|
65
|
+
// buttonIcon,
|
58
66
|
iconPosition = "start",
|
59
67
|
borderStyle,
|
60
68
|
borderWidth,
|
@@ -75,6 +83,7 @@ const EditorButton = props => {
|
|
75
83
|
};
|
76
84
|
const isTrigger = linkType === "nextTrigger" || linkType === "prevTrigger";
|
77
85
|
const refURl = isTrigger ? buttonLink?.url : url;
|
86
|
+
const buttonIcon = element?.buttonIcon || buttonTheme?.buttonIcon;
|
78
87
|
const BtnIcon = buttonIcon ? buttonIcon : null;
|
79
88
|
windowVar.lastButtonProps = element;
|
80
89
|
const handleTrigger = async () => {
|
@@ -165,6 +174,7 @@ const EditorButton = props => {
|
|
165
174
|
display: "inline-flex",
|
166
175
|
color: "rgba(0, 0, 0, 0.54)",
|
167
176
|
marginBottom: "0px !important",
|
177
|
+
...classes.buttonMoreOption,
|
168
178
|
...classes.buttonMoreOption3
|
169
179
|
},
|
170
180
|
...btnProps,
|
@@ -265,19 +275,14 @@ const EditorButton = props => {
|
|
265
275
|
display: "inline-block"
|
266
276
|
},
|
267
277
|
children: [/*#__PURE__*/_jsxs(Box, {
|
278
|
+
className: `btn textAlign-${tAlign} button theme-element`,
|
268
279
|
ref: buttonRef,
|
269
|
-
className: `btn textAlign-${tAlign}`,
|
270
280
|
sx: {
|
271
281
|
textDecoration: "none",
|
272
|
-
background: bgColor || "rgb(30, 75, 122)",
|
273
282
|
borderBlockStyle: "solid",
|
274
|
-
borderColor: borderColor || "transparent",
|
275
283
|
borderWidth: borderWidth !== undefined ? borderWidth : borderColor || borderColorHover ? "1px" : "0px",
|
276
284
|
...btnSp,
|
277
285
|
borderStyle: borderStyle || "solid",
|
278
|
-
color: `${textColor || "#FFFFFF"}`,
|
279
|
-
fontSize: textSize || "inherit",
|
280
|
-
fontFamily: fontFamily || "PoppinsRegular",
|
281
286
|
display: "inline-flex",
|
282
287
|
alignItems: "center",
|
283
288
|
position: "relative",
|
@@ -292,6 +297,17 @@ const EditorButton = props => {
|
|
292
297
|
"& .element-toolbar": {
|
293
298
|
display: "flex"
|
294
299
|
}
|
300
|
+
},
|
301
|
+
color: textColor ? `${textColor} !important` : "#FFFFFF",
|
302
|
+
fontSize: textSize ? `${textSize}px !important` : "inherit",
|
303
|
+
fontFamily: fontFamily ? `${fontFamily} !important` : "PoppinsRegular",
|
304
|
+
background: `${bgColor} !important`,
|
305
|
+
borderColor: `${borderColor} !important`,
|
306
|
+
borderRadius: {
|
307
|
+
...getBreakPointsValue(borderRadius || buttonTheme?.borderRadius || {}, null, "overrideBorderRadius", true)
|
308
|
+
},
|
309
|
+
padding: {
|
310
|
+
...getTRBLBreakPoints(bannerSpacing || buttonTheme?.bannerSpacing || {})
|
295
311
|
}
|
296
312
|
},
|
297
313
|
...buttonProps,
|
@@ -1,11 +1,15 @@
|
|
1
1
|
import React, { useState } from "react";
|
2
|
-
import { Box, IconButton, Popover } from "@mui/material";
|
2
|
+
import { Box, IconButton, Popover, Typography, useTheme } from "@mui/material";
|
3
3
|
import KeyboardArrowDownRoundedIcon from "@mui/icons-material/KeyboardArrowDownRounded";
|
4
4
|
import Button from "../../common/Button";
|
5
5
|
import { colors } from "./defaultColors";
|
6
6
|
import ColorPicker from "./colorPicker.svg";
|
7
|
+
import { useSlateStatic } from "slate-react";
|
8
|
+
import { Transforms } from "slate";
|
9
|
+
import { useEditorContext } from "../../hooks/useMouseMove";
|
7
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
8
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
12
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
9
13
|
let c = [];
|
10
14
|
const ColorChunks = (recentColors = []) => [...recentColors, ...colors].reduce((a, b, i) => {
|
11
15
|
if (i % 7 === 0) {
|
@@ -32,8 +36,8 @@ const SingleColorButton = ({
|
|
32
36
|
width: "100%",
|
33
37
|
display: "flex",
|
34
38
|
alignItems: "center",
|
35
|
-
padding: padding || "8px 0px"
|
36
|
-
justifyContent: "center"
|
39
|
+
padding: padding || "8px 0px"
|
40
|
+
// justifyContent: "center",
|
37
41
|
},
|
38
42
|
children: [crs.map(m => /*#__PURE__*/_jsx(Button, {
|
39
43
|
onClick: handleSelect(m),
|
@@ -110,12 +114,18 @@ const ColorButtons = props => {
|
|
110
114
|
openColorTool,
|
111
115
|
onClose,
|
112
116
|
onColorPickerClick,
|
117
|
+
disableEditTheme,
|
113
118
|
defaultColors = []
|
114
119
|
} = props;
|
115
120
|
const [row1, ...restRows] = ColorChunks([]);
|
116
121
|
const [anchorEl, setAnchorEl] = useState(null);
|
117
122
|
const open = Boolean(anchorEl);
|
118
123
|
const firstRow = defaultColors?.length ? defaultColors : row1;
|
124
|
+
const theme = useTheme();
|
125
|
+
const editor = useSlateStatic();
|
126
|
+
const {
|
127
|
+
setOpenTheme
|
128
|
+
} = useEditorContext();
|
119
129
|
const handleMore = e => {
|
120
130
|
setAnchorEl(e.currentTarget);
|
121
131
|
};
|
@@ -128,6 +138,7 @@ const ColorButtons = props => {
|
|
128
138
|
const handleSelect = color => () => {
|
129
139
|
onSelect(color);
|
130
140
|
};
|
141
|
+
const colorVars = theme?.vars?.colors || {};
|
131
142
|
return /*#__PURE__*/_jsxs(Box, {
|
132
143
|
component: "span",
|
133
144
|
sx: classes.colorButtons,
|
@@ -144,7 +155,7 @@ const ColorButtons = props => {
|
|
144
155
|
activeColor: activeColor
|
145
156
|
}, `si_btn_row1_${m}_${i}`);
|
146
157
|
})
|
147
|
-
}), /*#__PURE__*/
|
158
|
+
}), /*#__PURE__*/_jsx(Popover, {
|
148
159
|
open: open || openColorTool,
|
149
160
|
anchorEl: anchorEl || openColorTool,
|
150
161
|
onClose: handleClose,
|
@@ -158,9 +169,40 @@ const ColorButtons = props => {
|
|
158
169
|
},
|
159
170
|
sx: classes.colorPopper,
|
160
171
|
className: "colorPopper",
|
161
|
-
children:
|
172
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
162
173
|
sx: classes.colorButtonsInner,
|
163
|
-
children:
|
174
|
+
children: [Object.values(colorVars)?.length ? /*#__PURE__*/_jsxs(_Fragment, {
|
175
|
+
children: [/*#__PURE__*/_jsxs(Box, {
|
176
|
+
component: "div",
|
177
|
+
className: "singleColorTitleWrapper",
|
178
|
+
children: [/*#__PURE__*/_jsx(Typography, {
|
179
|
+
variant: "subtitle2",
|
180
|
+
children: "Theme colours"
|
181
|
+
}), disableEditTheme ? null : /*#__PURE__*/_jsx("div", {
|
182
|
+
className: "editBtn",
|
183
|
+
onClick: () => {
|
184
|
+
Transforms.deselect(editor, {
|
185
|
+
at: editor.selection
|
186
|
+
});
|
187
|
+
handleClose();
|
188
|
+
setOpenTheme("editThemeColor");
|
189
|
+
},
|
190
|
+
children: "Edit"
|
191
|
+
})]
|
192
|
+
}), /*#__PURE__*/_jsx(SingleColorButton, {
|
193
|
+
crs: Object.values(colorVars),
|
194
|
+
handleSelect: handleSelect,
|
195
|
+
classes: classes,
|
196
|
+
activeColor: activeColor
|
197
|
+
})]
|
198
|
+
}) : null, /*#__PURE__*/_jsx(Box, {
|
199
|
+
component: "div",
|
200
|
+
className: "singleColorTitleWrapper",
|
201
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
202
|
+
variant: "subtitle2",
|
203
|
+
children: "Custom colour"
|
204
|
+
})
|
205
|
+
}), restRows.map((m, i) => {
|
164
206
|
return /*#__PURE__*/_jsx(SingleColorButton, {
|
165
207
|
id: `p2_${id}`,
|
166
208
|
crs: m,
|
@@ -169,14 +211,19 @@ const ColorButtons = props => {
|
|
169
211
|
classes: classes,
|
170
212
|
activeColor: activeColor
|
171
213
|
}, `si_btn_${m}_${i}`);
|
172
|
-
})
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
214
|
+
}), forMiniTool ? /*#__PURE__*/_jsx(IconButton, {
|
215
|
+
onClick: onColorPickerClick,
|
216
|
+
style: {
|
217
|
+
alignSelf: "start",
|
218
|
+
margin: "6px",
|
219
|
+
padding: "0px"
|
220
|
+
},
|
221
|
+
children: /*#__PURE__*/_jsx("img", {
|
222
|
+
src: ColorPicker,
|
223
|
+
alt: "color wheel"
|
224
|
+
})
|
225
|
+
}) : null]
|
226
|
+
})
|
180
227
|
})]
|
181
228
|
});
|
182
229
|
};
|
@@ -60,4 +60,28 @@
|
|
60
60
|
padding: 0 15px !important;
|
61
61
|
width: 60px !important;
|
62
62
|
flex-shrink: 0;
|
63
|
-
}
|
63
|
+
}
|
64
|
+
|
65
|
+
|
66
|
+
.singleColorTitleWrapper {
|
67
|
+
display: flex;
|
68
|
+
justify-content: space-between;
|
69
|
+
align-items: center;
|
70
|
+
padding: 10px;
|
71
|
+
width: 100%;
|
72
|
+
border-bottom: 1px solid #DCE4EC;
|
73
|
+
}
|
74
|
+
|
75
|
+
.singleColorTitleWrapper .MuiTypography-root {
|
76
|
+
font-weight: 600;
|
77
|
+
}
|
78
|
+
|
79
|
+
.singleColorTitleWrapper .editBtn {
|
80
|
+
text-transform: none;
|
81
|
+
color: #2563EB;
|
82
|
+
text-decoration: underline;
|
83
|
+
padding: 0px;
|
84
|
+
min-width: unset;
|
85
|
+
cursor: pointer;
|
86
|
+
font-size: 14px;
|
87
|
+
}
|