@flozy/editor 11.1.1 → 11.1.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 +6 -6
- package/dist/Editor/CommonEditor.js +82 -21
- package/dist/Editor/DialogWrapper.js +31 -25
- package/dist/Editor/Editor.css +37 -4
- package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
- 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 +154 -11
- package/dist/Editor/Elements/Attachments/AttachmentsButton.js +8 -3
- package/dist/Editor/Elements/Button/EditorButton.js +22 -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/DataView/Layouts/DataTypes/Components/Select.js +134 -55
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SelectV1.js +7 -8
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +8 -3
- package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +1 -1
- package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +1 -1
- package/dist/Editor/Elements/Embed/Embed.css +5 -0
- package/dist/Editor/Elements/Embed/Embed.js +37 -43
- package/dist/Editor/Elements/Embed/Image.js +242 -22
- package/dist/Editor/Elements/Embed/Video.js +277 -32
- package/dist/Editor/Elements/Form/Form.js +10 -35
- 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 +34 -75
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +9 -5
- package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +3 -1
- package/dist/Editor/Elements/FreeGrid/helper.js +194 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +15 -0
- package/dist/Editor/Elements/Grid/GridItem.js +1 -1
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
- package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -3
- package/dist/Editor/Elements/Signature/SignaturePopup.js +2 -13
- package/dist/Editor/Elements/SimpleText/index.js +4 -1
- package/dist/Editor/Elements/Table/Table.js +2 -1
- package/dist/Editor/Elements/Table/TableCell.js +10 -3
- package/dist/Editor/Elements/Title/title.js +4 -5
- package/dist/Editor/Elements/TopBanner/TopBanner.js +4 -2
- package/dist/Editor/Elements/TopBanner/TopBannerButton.js +5 -3
- package/dist/Editor/Styles/EditorStyles.js +16 -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 +33 -29
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +3 -1
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +25 -23
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +15 -5
- package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +65 -7
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +66 -12
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +7 -4
- package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
- 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 -19
- 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 +1 -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/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 +3 -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 +2 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
- package/dist/Editor/common/RnD/GuideLines/styles.js +1 -1
- 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 -11
- package/dist/Editor/common/RnD/Utils/index.js +3 -1
- package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +52 -63
- package/dist/Editor/common/RnD/VirtualElement/helper.js +248 -68
- package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
- package/dist/Editor/common/RnD/index.js +61 -14
- package/dist/Editor/common/Shorthands/elements.js +54 -0
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
- package/dist/Editor/common/StyleBuilder/fieldStyle.js +1 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +18 -4
- 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/color.js +36 -10
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +15 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
- package/dist/Editor/common/StyleBuilder/formStyle.js +19 -13
- package/dist/Editor/common/StyleBuilder/index.js +8 -4
- package/dist/Editor/common/Uploader.js +118 -17
- package/dist/Editor/common/UploaderWithProgress.js +183 -0
- package/dist/Editor/common/iconslist.js +21 -0
- package/dist/Editor/commonStyle.js +37 -3
- package/dist/Editor/helper/index.js +4 -1
- package/dist/Editor/helper/theme.js +203 -2
- package/dist/Editor/hooks/useEditorTheme.js +153 -0
- package/dist/Editor/hooks/useMouseMove.js +12 -3
- package/dist/Editor/hooks/useTable.js +62 -1
- package/dist/Editor/hooks/useThemeValues.js +63 -0
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +56 -3
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/service/fileupload.js +70 -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 +162 -38
- package/dist/Editor/utils/accordion.js +1 -1
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +76 -3
- package/dist/Editor/utils/insertAppHeader.js +8 -4
- package/package.json +1 -1
@@ -1,9 +1,15 @@
|
|
1
1
|
import React, { useState, useEffect, useRef } from "react";
|
2
2
|
import { useSlateStatic, ReactEditor } from "slate-react";
|
3
3
|
import { Node, Transforms } from "slate";
|
4
|
-
import
|
4
|
+
import IconButton from "@mui/material/IconButton";
|
5
|
+
import Tooltip from "@mui/material/Tooltip";
|
6
|
+
import Box from "@mui/material/Box";
|
7
|
+
import useTheme from "@mui/material/styles/useTheme";
|
8
|
+
import Grid from "@mui/material/Grid";
|
9
|
+
import CircularProgress from "@mui/material/CircularProgress";
|
5
10
|
import DeleteIcon from "@mui/icons-material/Delete";
|
6
11
|
import AspectRatioIcon from "@mui/icons-material/AspectRatio";
|
12
|
+
import HighlightOffRoundedIcon from "@mui/icons-material/HighlightOffRounded";
|
7
13
|
import Icon from "../../common/Icon";
|
8
14
|
import useResize from "../../utils/customHooks/useResize";
|
9
15
|
import EmbedPopup from "./EmbedPopup";
|
@@ -13,13 +19,19 @@ import { getEmbedURL } from "../../helper";
|
|
13
19
|
import { getBreakPointsValue, getTRBLBreakPoints, groupByBreakpoint } from "../../helper/theme";
|
14
20
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
15
21
|
import useCommonStyle from "../../commonStyle";
|
22
|
+
import ImageSelector from "../../common/ImageSelector/ImageSelector";
|
16
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
17
24
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
25
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
18
26
|
const TYPE_LABELS = {
|
19
27
|
calendly: "Embed Calendly or Other",
|
20
28
|
video: "Embed Video or Other",
|
21
29
|
image: "Embed Image or Other"
|
22
30
|
};
|
31
|
+
const detectUrlType = url => {
|
32
|
+
if (typeof url !== "string") return "iframe";
|
33
|
+
return /\.(mp4|webm|ogg|mov|avi|mkv|flv|wmv)$/i.test(url.trim()) ? "video" : "iframe";
|
34
|
+
};
|
23
35
|
const VideoContent = props => {
|
24
36
|
const {
|
25
37
|
resizing,
|
@@ -32,12 +44,26 @@ const VideoContent = props => {
|
|
32
44
|
videoSX
|
33
45
|
} = props;
|
34
46
|
const iframeRef = useRef(null);
|
47
|
+
const mediaType = detectUrlType(embedURL);
|
35
48
|
useEffect(() => {
|
36
49
|
if (iframeRef.current) {
|
37
50
|
iframeRef.current.src = "about:blank"; // reloading the iframe
|
38
51
|
iframeRef.current.src = embedURL;
|
39
52
|
}
|
40
53
|
}, [embedURL, iframeRef.current]);
|
54
|
+
const commonSx = {
|
55
|
+
border: "none",
|
56
|
+
position: "absolute",
|
57
|
+
width: "100%",
|
58
|
+
height: "100%",
|
59
|
+
maxWidth: "100%",
|
60
|
+
left: 0,
|
61
|
+
...(gradientBorder(borderColor) || {}),
|
62
|
+
borderWidth: borderWidth || "1px",
|
63
|
+
borderStyle: borderStyle || "solid",
|
64
|
+
background: bgColor || "transparent",
|
65
|
+
...videoSX
|
66
|
+
};
|
41
67
|
return resizing ? /*#__PURE__*/_jsx("div", {
|
42
68
|
style: {
|
43
69
|
width: "100%",
|
@@ -51,24 +77,14 @@ const VideoContent = props => {
|
|
51
77
|
icon: "videoPlayer"
|
52
78
|
})
|
53
79
|
}) : /*#__PURE__*/_jsx(Box, {
|
54
|
-
|
55
|
-
|
80
|
+
component: mediaType,
|
81
|
+
ref: mediaType === "iframe" ? iframeRef : undefined,
|
82
|
+
src: embedURL,
|
83
|
+
controls: mediaType === "video",
|
84
|
+
allowFullScreen: mediaType === "iframe",
|
56
85
|
className: "embedd-iframe",
|
57
|
-
sx:
|
58
|
-
|
59
|
-
position: "absolute",
|
60
|
-
width: "100%",
|
61
|
-
height: "100%",
|
62
|
-
maxWidth: "100%",
|
63
|
-
left: "0px",
|
64
|
-
...(gradientBorder(borderColor) || {}),
|
65
|
-
borderWidth: borderWidth || "1px",
|
66
|
-
borderStyle: borderStyle || "solid",
|
67
|
-
background: bgColor || "transparent",
|
68
|
-
...videoSX
|
69
|
-
},
|
70
|
-
title: alt,
|
71
|
-
allowFullScreen: true
|
86
|
+
sx: commonSx,
|
87
|
+
title: alt
|
72
88
|
});
|
73
89
|
};
|
74
90
|
const VideoPlaceholder = props => {
|
@@ -78,18 +94,104 @@ const VideoPlaceholder = props => {
|
|
78
94
|
onSettings,
|
79
95
|
classes,
|
80
96
|
type,
|
81
|
-
translation
|
97
|
+
translation,
|
98
|
+
uploadStatus,
|
99
|
+
setUploadStatus,
|
100
|
+
uploadTerminator,
|
101
|
+
uniqueId,
|
102
|
+
editor,
|
103
|
+
path,
|
104
|
+
embedURL
|
82
105
|
} = props;
|
83
|
-
|
106
|
+
const cancelUpload = e => {
|
107
|
+
e.stopPropagation();
|
108
|
+
uploadTerminator(uniqueId, setUploadStatus);
|
109
|
+
Transforms.setNodes(editor, {
|
110
|
+
isUpload: false,
|
111
|
+
isUploading: false,
|
112
|
+
file: null
|
113
|
+
}, {
|
114
|
+
at: path
|
115
|
+
});
|
116
|
+
};
|
117
|
+
return !url ? !readOnly ? /*#__PURE__*/_jsx(Box, {
|
84
118
|
component: "button",
|
85
119
|
className: "element-empty-btn",
|
86
|
-
onClick: onSettings,
|
120
|
+
onClick: !uploadStatus?.isUploading ? onSettings : () => {},
|
87
121
|
sx: {
|
88
122
|
...classes.emptyThumbBtn
|
89
123
|
},
|
90
|
-
children:
|
91
|
-
|
92
|
-
|
124
|
+
children: uploadStatus?.isUploading ? /*#__PURE__*/_jsxs(Grid, {
|
125
|
+
container: true,
|
126
|
+
direction: "row",
|
127
|
+
style: {
|
128
|
+
display: "flex",
|
129
|
+
justifyContent: "space-between"
|
130
|
+
},
|
131
|
+
children: [/*#__PURE__*/_jsx(Grid, {
|
132
|
+
style: {
|
133
|
+
width: "80%"
|
134
|
+
},
|
135
|
+
children: /*#__PURE__*/_jsxs(Grid, {
|
136
|
+
container: true,
|
137
|
+
direction: "row",
|
138
|
+
sx: {
|
139
|
+
justifyContent: "flex-start",
|
140
|
+
alignItems: "center"
|
141
|
+
// gap: 1,
|
142
|
+
},
|
143
|
+
children: [/*#__PURE__*/_jsx(Grid, {
|
144
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
145
|
+
icon: "image"
|
146
|
+
})
|
147
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
148
|
+
style: {
|
149
|
+
width: "80%"
|
150
|
+
},
|
151
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
152
|
+
display: "flex",
|
153
|
+
flexDirection: "column",
|
154
|
+
alignItems: "flex-start",
|
155
|
+
justifyContent: "flex-start",
|
156
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
157
|
+
className: "truncateText",
|
158
|
+
children: uploadStatus?.fileName
|
159
|
+
}), /*#__PURE__*/_jsxs(Box, {
|
160
|
+
display: "flex",
|
161
|
+
alignItems: "center",
|
162
|
+
gap: 1,
|
163
|
+
marginTop: 1,
|
164
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
165
|
+
children: uploadStatus?.fileSize
|
166
|
+
}), /*#__PURE__*/_jsx(CircularProgress, {
|
167
|
+
variant: "determinate",
|
168
|
+
value: uploadStatus?.uploadPercentage ?? 0,
|
169
|
+
className: "circularProgress-cls",
|
170
|
+
size: 15,
|
171
|
+
thickness: 8
|
172
|
+
}), /*#__PURE__*/_jsx(Box, {
|
173
|
+
children: `${uploadStatus?.uploadPercentage?.toFixed(0) ?? 0}%`
|
174
|
+
})]
|
175
|
+
})]
|
176
|
+
})
|
177
|
+
})]
|
178
|
+
})
|
179
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
180
|
+
children: /*#__PURE__*/_jsx(HighlightOffRoundedIcon, {
|
181
|
+
className: "uploadCancel",
|
182
|
+
sx: {
|
183
|
+
cursor: "pointer"
|
184
|
+
},
|
185
|
+
onClick: e => {
|
186
|
+
cancelUpload(e);
|
187
|
+
}
|
188
|
+
})
|
189
|
+
})]
|
190
|
+
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
191
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
192
|
+
icon: "video"
|
193
|
+
}), TYPE_LABELS[type] || translation("Embed Video or Other")]
|
194
|
+
})
|
93
195
|
}) : /*#__PURE__*/_jsxs(Box, {
|
94
196
|
sx: {
|
95
197
|
color: "#64748B !important",
|
@@ -120,14 +222,23 @@ const Video = ({
|
|
120
222
|
xsHidden,
|
121
223
|
width: oldWidth,
|
122
224
|
bannerSpacing,
|
123
|
-
aspectRatio
|
225
|
+
aspectRatio,
|
226
|
+
file,
|
227
|
+
isUploading,
|
228
|
+
uniqueId,
|
229
|
+
fromFreeGrid
|
124
230
|
} = element;
|
125
231
|
const editor = useSlateStatic();
|
126
232
|
const [openSetttings, setOpenSettings] = useState(false);
|
127
233
|
const [parentDOM, setParentDOM] = useState(null);
|
128
234
|
const {
|
129
235
|
readOnly,
|
130
|
-
translation
|
236
|
+
translation,
|
237
|
+
services,
|
238
|
+
uploadFile,
|
239
|
+
resumeUploadState,
|
240
|
+
uploadTerminator,
|
241
|
+
isUploadInProgress = () => false
|
131
242
|
} = customProps;
|
132
243
|
const {
|
133
244
|
vertical,
|
@@ -148,6 +259,63 @@ const Video = ({
|
|
148
259
|
return element?.size || {};
|
149
260
|
}
|
150
261
|
};
|
262
|
+
const xhrRef = useRef(null);
|
263
|
+
const [openUploadPopup, setUploadPopupOpen] = useState(false);
|
264
|
+
const [uploadStatus, setUploadStatus] = useState({
|
265
|
+
isUploading: false,
|
266
|
+
uploadPercentage: 0
|
267
|
+
});
|
268
|
+
const onClickUpload = () => {
|
269
|
+
setUploadPopupOpen(true);
|
270
|
+
};
|
271
|
+
const onSelectVideo = async video => {
|
272
|
+
handleClose();
|
273
|
+
let finalURL = null;
|
274
|
+
try {
|
275
|
+
if (video?.isUpload === false) {
|
276
|
+
finalURL = video?.embedURL;
|
277
|
+
} else {
|
278
|
+
const id = !uniqueId ? crypto?.randomUUID() : uniqueId;
|
279
|
+
const result = await services("uploadFile", video?.file);
|
280
|
+
const uploadUrl = result?.data?.[0];
|
281
|
+
const fileEntry = {
|
282
|
+
...video,
|
283
|
+
xhrRef,
|
284
|
+
presidnedURL: uploadUrl,
|
285
|
+
status: "uploading"
|
286
|
+
};
|
287
|
+
uploadFile(id, fileEntry, setUploadStatus, onSave, "video");
|
288
|
+
if (!fromFreeGrid) {
|
289
|
+
Transforms.setNodes(editor, {
|
290
|
+
uniqueId: id,
|
291
|
+
isUploading: true
|
292
|
+
}, {
|
293
|
+
at: path
|
294
|
+
});
|
295
|
+
} else {
|
296
|
+
Transforms.setNodes(editor, {
|
297
|
+
isUploading: true
|
298
|
+
}, {
|
299
|
+
at: path
|
300
|
+
});
|
301
|
+
}
|
302
|
+
}
|
303
|
+
if (finalURL) {
|
304
|
+
const updateObject = {
|
305
|
+
...element,
|
306
|
+
url: finalURL
|
307
|
+
};
|
308
|
+
onSave(updateObject);
|
309
|
+
} else {
|
310
|
+
return;
|
311
|
+
}
|
312
|
+
} catch (error) {
|
313
|
+
console.log(error);
|
314
|
+
}
|
315
|
+
};
|
316
|
+
const handleClose = () => {
|
317
|
+
setUploadPopupOpen(false);
|
318
|
+
};
|
151
319
|
const [size, onMouseDown, resizing, onLoad] = useResize({
|
152
320
|
parentDOM,
|
153
321
|
size: getSize(),
|
@@ -161,12 +329,49 @@ const Video = ({
|
|
161
329
|
});
|
162
330
|
const arr = Array.from(Node.elements(editor));
|
163
331
|
const ele = arr.find(([elem]) => element === elem);
|
332
|
+
const noUploadTracks = () => {
|
333
|
+
setUploadStatus({
|
334
|
+
isUploading: false,
|
335
|
+
uploadPercentage: 0,
|
336
|
+
fileName: null,
|
337
|
+
fileSize: null
|
338
|
+
});
|
339
|
+
};
|
340
|
+
useEffect(() => {
|
341
|
+
const isUploading = isUploadInProgress(uniqueId);
|
342
|
+
if (fromFreeGrid) {
|
343
|
+
if (isUploading) {
|
344
|
+
resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "image");
|
345
|
+
} else {
|
346
|
+
if (!isUploading && file) {
|
347
|
+
onSelectVideo({
|
348
|
+
file: file
|
349
|
+
});
|
350
|
+
}
|
351
|
+
}
|
352
|
+
}
|
353
|
+
return () => {
|
354
|
+
// Transforms.setNodes(editor, { isUploading: false }, { at: path });
|
355
|
+
};
|
356
|
+
}, [uniqueId, isUploading, file]);
|
164
357
|
useEffect(() => {
|
165
358
|
if (editor && ele && ele[1] !== undefined) {
|
166
359
|
const dom = ReactEditor.toDOMNode(editor, Node.get(editor, ele[1]));
|
167
360
|
setParentDOM(dom);
|
168
361
|
onLoad(element?.size || {});
|
169
362
|
}
|
363
|
+
if (!fromFreeGrid) {
|
364
|
+
if (uniqueId && isUploading) {
|
365
|
+
resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "video");
|
366
|
+
} else if (file && isUploading) {
|
367
|
+
onSelectVideo({
|
368
|
+
file: file
|
369
|
+
});
|
370
|
+
}
|
371
|
+
}
|
372
|
+
return () => {
|
373
|
+
// xhrRef?.current?.abort();
|
374
|
+
};
|
170
375
|
}, []);
|
171
376
|
const ToolBar = () => {
|
172
377
|
return /*#__PURE__*/_jsxs("div", {
|
@@ -194,12 +399,34 @@ const Video = ({
|
|
194
399
|
};
|
195
400
|
const onSave = data => {
|
196
401
|
try {
|
197
|
-
|
198
|
-
|
199
|
-
|
402
|
+
let updateData = {};
|
403
|
+
if (typeof data === "string") {
|
404
|
+
updateData = {
|
405
|
+
url: data,
|
406
|
+
isUploading: false
|
407
|
+
};
|
408
|
+
} else if (typeof data?.url !== "string") {
|
409
|
+
updateData = {
|
410
|
+
...data,
|
411
|
+
url: ""
|
412
|
+
};
|
413
|
+
onSelectVideo({
|
414
|
+
file: data?.url?.file,
|
415
|
+
isUpload: true,
|
416
|
+
setUploadStatus,
|
417
|
+
services: customProps?.services
|
418
|
+
});
|
419
|
+
} else {
|
420
|
+
updateData = data;
|
421
|
+
}
|
200
422
|
delete updateData.children;
|
423
|
+
Transforms.select(editor, path);
|
424
|
+
ReactEditor.focus(editor);
|
201
425
|
Transforms.setNodes(editor, {
|
202
|
-
...updateData
|
426
|
+
...updateData,
|
427
|
+
isUpload: false,
|
428
|
+
isUploading: false,
|
429
|
+
file: null
|
203
430
|
}, {
|
204
431
|
at: path
|
205
432
|
});
|
@@ -281,13 +508,19 @@ const Video = ({
|
|
281
508
|
children: [!readOnly && url && /*#__PURE__*/_jsx(ToolBar, {}), /*#__PURE__*/_jsx(VideoPlaceholder, {
|
282
509
|
...element,
|
283
510
|
embedURL: embedURL,
|
284
|
-
onSettings:
|
511
|
+
onSettings: onClickUpload,
|
285
512
|
videoSX: videoSX,
|
286
513
|
url: url,
|
287
514
|
readOnly: readOnly,
|
288
515
|
resizing: resizing,
|
289
516
|
classes: classes,
|
290
|
-
translation: translation
|
517
|
+
translation: translation,
|
518
|
+
uploadStatus: uploadStatus,
|
519
|
+
setUploadStatus: setUploadStatus,
|
520
|
+
uploadTerminator: uploadTerminator,
|
521
|
+
uniqueId: uniqueId,
|
522
|
+
editor: editor,
|
523
|
+
path: path
|
291
524
|
}), !readOnly && url ? /*#__PURE__*/_jsx(IconButton, {
|
292
525
|
onPointerDown: onMouseDown,
|
293
526
|
style: {
|
@@ -295,6 +528,18 @@ const Video = ({
|
|
295
528
|
},
|
296
529
|
className: "resize-br visible-on-hover",
|
297
530
|
children: /*#__PURE__*/_jsx(AspectRatioIcon, {})
|
531
|
+
}) : null, openUploadPopup ? /*#__PURE__*/_jsx(ImageSelector, {
|
532
|
+
open: true,
|
533
|
+
Add: true,
|
534
|
+
commentMore: true,
|
535
|
+
actions: true,
|
536
|
+
title: "Video",
|
537
|
+
onClose: handleClose,
|
538
|
+
customProps: customProps,
|
539
|
+
onSelectImage: onSelectVideo,
|
540
|
+
setUploadPopupOpen: setUploadPopupOpen,
|
541
|
+
setUploadStatus: setUploadStatus,
|
542
|
+
xhrRef: xhrRef
|
298
543
|
}) : null]
|
299
544
|
}), children]
|
300
545
|
});
|
@@ -109,20 +109,7 @@ const Form = props => {
|
|
109
109
|
if ((readOnly || test) && formEle && formEle?.current) {
|
110
110
|
const formData = new FormData(formEle?.current);
|
111
111
|
setLoading(true);
|
112
|
-
|
113
|
-
const formDataEntries = [...formData.entries()];
|
114
|
-
const childFields = element?.children?.filter(el => el?.type === "form-field");
|
115
|
-
response = formDataEntries.map(([key, value], index) => {
|
116
|
-
const fieldData = childFields[index];
|
117
|
-
return {
|
118
|
-
fieldKey: key,
|
119
|
-
[key]: value,
|
120
|
-
placeholder: fieldData?.placeholder || "",
|
121
|
-
form_name: formName,
|
122
|
-
tagName: tagName,
|
123
|
-
uid: fieldData?.uid || formName
|
124
|
-
};
|
125
|
-
});
|
112
|
+
const response = [];
|
126
113
|
let user_email = "";
|
127
114
|
let meta_data = [];
|
128
115
|
const validations = [];
|
@@ -166,28 +153,16 @@ const Form = props => {
|
|
166
153
|
rules: rule?.length > 0 && rule
|
167
154
|
});
|
168
155
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
// const fieldData = childFields[i];
|
179
|
-
|
180
|
-
// response.push({
|
181
|
-
// fieldKey: key,
|
182
|
-
// [key]: value,
|
183
|
-
// placeholder: fieldData?.placeholder || "",
|
184
|
-
// form_name: formName,
|
185
|
-
// tagName: tagName,
|
186
|
-
// uid: fieldData?.uid || formName,
|
187
|
-
// });
|
188
|
-
// }
|
156
|
+
const placeholder = fieldData?.name === pair[0] ? fieldData?.placeholder : "";
|
157
|
+
response?.push({
|
158
|
+
fieldKey: pair[0],
|
159
|
+
[pair[0]]: pair[1],
|
160
|
+
placeholder: placeholder,
|
161
|
+
form_name: formName,
|
162
|
+
tagName: tagName,
|
163
|
+
uid: fieldData?.uid
|
164
|
+
});
|
189
165
|
}
|
190
|
-
|
191
166
|
let params = {
|
192
167
|
page_id: page_id,
|
193
168
|
agency_id: agency_id,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React, { useState } from "react";
|
2
|
-
import { Transforms
|
2
|
+
import { Transforms } from "slate";
|
3
3
|
import { useSlateStatic, ReactEditor } from "slate-react";
|
4
4
|
import { IconButton, Tooltip, Grid, useTheme } from "@mui/material";
|
5
5
|
import FormElements from "./FormElements";
|
@@ -9,20 +9,20 @@ const FormStyles = theme => ({
|
|
9
9
|
color: "#94A3B8"
|
10
10
|
},
|
11
11
|
bodyTextArea: {
|
12
|
-
|
13
|
-
padding:
|
14
|
-
|
15
|
-
outline:
|
16
|
-
border:
|
12
|
+
"& .mini-editor-cls": {
|
13
|
+
padding: "12px",
|
14
|
+
"&:focus-visible": {
|
15
|
+
outline: "none",
|
16
|
+
border: "none"
|
17
17
|
}
|
18
18
|
},
|
19
19
|
"& .editorWorkflow": {
|
20
|
-
minHeight:
|
21
|
-
padding:
|
20
|
+
minHeight: "130px",
|
21
|
+
padding: "12px",
|
22
22
|
paddingBottom: 0,
|
23
|
-
|
24
|
-
outline:
|
25
|
-
border:
|
23
|
+
"&:focus-visible": {
|
24
|
+
outline: "none",
|
25
|
+
border: "none"
|
26
26
|
}
|
27
27
|
}
|
28
28
|
},
|
@@ -105,7 +105,7 @@ const FormStyles = theme => ({
|
|
105
105
|
padding: "4px 22px",
|
106
106
|
textTransform: "none",
|
107
107
|
border: "1px solid #D8DDE1",
|
108
|
-
minWidth:
|
108
|
+
minWidth: "126px",
|
109
109
|
"& svg": {
|
110
110
|
"& path": {
|
111
111
|
stroke: "#64748B"
|
@@ -169,17 +169,19 @@ const FormStyles = theme => ({
|
|
169
169
|
}
|
170
170
|
},
|
171
171
|
colorButtonSingle: {
|
172
|
+
border: "1.5px solid #DCE4EC !important",
|
172
173
|
"&.active": {
|
173
|
-
"&:before": {
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
}
|
174
|
+
// "&:before": {
|
175
|
+
// content: '" "',
|
176
|
+
// position: "absolute",
|
177
|
+
// top: "-5px",
|
178
|
+
// left: "-5px",
|
179
|
+
// width: "calc(100% + 4px)",
|
180
|
+
// height: "calc(100% + 4px)",
|
181
|
+
// border: "3px solid blue",
|
182
|
+
// borderRadius: "50%",
|
183
|
+
// },
|
184
|
+
outline: "2px solid #2563EB"
|
183
185
|
}
|
184
186
|
},
|
185
187
|
colorButtonsInner: {
|
@@ -249,7 +251,7 @@ const FormStyles = theme => ({
|
|
249
251
|
}
|
250
252
|
},
|
251
253
|
root: {
|
252
|
-
padding:
|
254
|
+
padding: "10px"
|
253
255
|
}
|
254
256
|
});
|
255
257
|
export default FormStyles;
|
@@ -1,3 +1,27 @@
|
|
1
1
|
export const minutes = [30, 35, 40, 45, 50, 55];
|
2
2
|
export const hours = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];
|
3
|
-
export const days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
|
3
|
+
export const days = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
|
4
|
+
export const allowedFormat = {
|
5
|
+
Document: ".pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.rtf",
|
6
|
+
Image: "image/*",
|
7
|
+
Video: ".mp4,.webm,.ogg,.mov,.avi,.mkv",
|
8
|
+
Embed: "*"
|
9
|
+
};
|
10
|
+
export const maxSizeMap = {
|
11
|
+
Image: 25 * 1024 * 1024,
|
12
|
+
// Test -> 5 * 1024 * 1024 -> 5MB
|
13
|
+
Video: 1024 * 1024 * 1024,
|
14
|
+
Document: 25 * 1024 * 1024,
|
15
|
+
Embed: Infinity
|
16
|
+
};
|
17
|
+
export const allowedTypes = {
|
18
|
+
Document: ["application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "text/plain", "application/rtf"],
|
19
|
+
Image: ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"],
|
20
|
+
Video: ["video/mp4", "video/webm", "video/ogg", "video/quicktime", "video/x-msvideo", "video/x-matroska"],
|
21
|
+
Embed: ["*"]
|
22
|
+
};
|
23
|
+
export const extensionMap = {
|
24
|
+
Video: ["mp4", "webm", "ogg", "mov", "avi", "mkv"],
|
25
|
+
Image: ["jpg", "jpeg", "png", "gif", "webp", "svg"],
|
26
|
+
Document: ["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf"]
|
27
|
+
};
|