@flozy/editor 11.0.3 → 11.0.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.
Files changed (146) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +129 -16
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +36 -8
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AI/Styles.js +1 -0
  7. package/dist/Editor/Elements/Accordion/Accordion.js +28 -22
  8. package/dist/Editor/Elements/Accordion/AccordionButton.js +12 -3
  9. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  10. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
  11. package/dist/Editor/Elements/Attachments/Attachments.js +153 -11
  12. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +8 -3
  13. package/dist/Editor/Elements/Button/EditorButton.js +23 -7
  14. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  16. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  17. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  18. package/dist/Editor/Elements/Embed/Embed.js +36 -43
  19. package/dist/Editor/Elements/Embed/Image.js +236 -23
  20. package/dist/Editor/Elements/Embed/Video.js +245 -15
  21. package/dist/Editor/Elements/Form/Form.js +16 -10
  22. package/dist/Editor/Elements/Form/FormField.js +1 -1
  23. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  24. package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
  25. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +31 -74
  26. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +9 -5
  27. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +3 -1
  28. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  29. package/dist/Editor/Elements/FreeGrid/helper.js +194 -0
  30. package/dist/Editor/Elements/FreeGrid/styles.js +15 -0
  31. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  32. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
  33. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +3 -2
  34. package/dist/Editor/Elements/Signature/SignaturePopup.js +15 -5
  35. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  36. package/dist/Editor/Elements/Table/Table.js +3 -3
  37. package/dist/Editor/Elements/Title/title.js +6 -6
  38. package/dist/Editor/Elements/TopBanner/TopBanner.js +4 -2
  39. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +5 -3
  40. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  41. package/dist/Editor/MiniEditor.js +2 -1
  42. package/dist/Editor/Styles/EditorStyles.js +19 -4
  43. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  44. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  45. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  46. package/dist/Editor/Toolbar/FormatTools/TextSize.js +33 -29
  47. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  48. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +25 -23
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +25 -7
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +24 -8
  53. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  54. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +70 -10
  55. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +73 -14
  56. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  57. package/dist/Editor/Toolbar/PopupTool/index.js +4 -3
  58. package/dist/Editor/Toolbar/toolbarGroups.js +56 -10
  59. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  60. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  61. package/dist/Editor/common/ColorPickerButton.js +38 -16
  62. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  63. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  64. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  65. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  66. package/dist/Editor/common/CustomSelect.js +43 -0
  67. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  68. package/dist/Editor/common/FontLoader/FontLoader.js +4 -0
  69. package/dist/Editor/common/Icon.js +28 -0
  70. package/dist/Editor/common/ImageSelector/ImageSelector.js +45 -7
  71. package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
  72. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  73. package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
  74. package/dist/Editor/common/MentionsPopup/index.js +9 -1
  75. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  78. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  79. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
  82. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  83. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +9 -1
  84. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
  85. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
  86. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  87. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  88. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -11
  89. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  90. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +52 -63
  91. package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
  92. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  93. package/dist/Editor/common/RnD/index.js +61 -14
  94. package/dist/Editor/common/Shorthands/elements.js +62 -4
  95. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  96. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +15 -2
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  102. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
  103. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  104. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  105. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  106. package/dist/Editor/common/StyleBuilder/index.js +8 -4
  107. package/dist/Editor/common/Uploader.js +125 -17
  108. package/dist/Editor/common/UploaderWithProgress.js +183 -0
  109. package/dist/Editor/common/iconslist.js +21 -0
  110. package/dist/Editor/commonStyle.js +67 -18
  111. package/dist/Editor/helper/index.js +10 -2
  112. package/dist/Editor/helper/textIndeces.js +58 -0
  113. package/dist/Editor/helper/theme.js +203 -2
  114. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  115. package/dist/Editor/hooks/useMouseMove.js +9 -3
  116. package/dist/Editor/hooks/useThemeValues.js +63 -0
  117. package/dist/Editor/plugins/withEmbeds.js +12 -1
  118. package/dist/Editor/plugins/withHTML.js +3 -1
  119. package/dist/Editor/plugins/withTable.js +1 -1
  120. package/dist/Editor/service/fileupload.js +70 -0
  121. package/dist/Editor/theme/ThemeList.js +50 -173
  122. package/dist/Editor/theme/index.js +149 -0
  123. package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
  124. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  125. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  126. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  127. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  128. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  129. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  130. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  131. package/dist/Editor/themeSettings/icons.js +60 -0
  132. package/dist/Editor/themeSettings/index.js +380 -0
  133. package/dist/Editor/themeSettings/style.js +299 -0
  134. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  135. package/dist/Editor/themeSettingsAI/index.js +355 -0
  136. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  137. package/dist/Editor/themeSettingsAI/style.js +332 -0
  138. package/dist/Editor/utils/SlateUtilityFunctions.js +191 -40
  139. package/dist/Editor/utils/accordion.js +67 -39
  140. package/dist/Editor/utils/button.js +1 -17
  141. package/dist/Editor/utils/draftToSlate.js +3 -2
  142. package/dist/Editor/utils/events.js +94 -89
  143. package/dist/Editor/utils/font.js +40 -37
  144. package/dist/Editor/utils/helper.js +98 -22
  145. package/package.json +4 -4
  146. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -454
@@ -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 { IconButton, Tooltip, Box, useTheme } from "@mui/material";
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,8 +19,10 @@ 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",
@@ -78,18 +86,97 @@ const VideoPlaceholder = props => {
78
86
  onSettings,
79
87
  classes,
80
88
  type,
81
- translation
89
+ translation,
90
+ uploadStatus,
91
+ setUploadStatus,
92
+ uploadTerminator,
93
+ uniqueId,
94
+ editor,
95
+ path
82
96
  } = props;
83
- return !url ? !readOnly ? /*#__PURE__*/_jsxs(Box, {
97
+ const cancelUpload = e => {
98
+ e.stopPropagation();
99
+ uploadTerminator(uniqueId, setUploadStatus);
100
+ Transforms.setNodes(editor, {
101
+ isUpload: false,
102
+ isUploading: false,
103
+ file: null
104
+ }, {
105
+ at: path
106
+ });
107
+ };
108
+ return !url ? !readOnly ? /*#__PURE__*/_jsx(Box, {
84
109
  component: "button",
85
110
  className: "element-empty-btn",
86
- onClick: onSettings,
111
+ onClick: !uploadStatus?.isUploading ? onSettings : () => {},
87
112
  sx: {
88
113
  ...classes.emptyThumbBtn
89
114
  },
90
- children: [/*#__PURE__*/_jsx(Icon, {
91
- icon: "video"
92
- }), TYPE_LABELS[type] || translation("Embed Video or Other")]
115
+ children: uploadStatus?.isUploading ? /*#__PURE__*/_jsxs(Grid, {
116
+ container: true,
117
+ direction: "row",
118
+ sx: {
119
+ justifyContent: "space-between",
120
+ alignItems: "center"
121
+ },
122
+ children: [/*#__PURE__*/_jsx(Grid, {
123
+ children: /*#__PURE__*/_jsxs(Grid, {
124
+ container: true,
125
+ direction: "row",
126
+ sx: {
127
+ justifyContent: "space-between",
128
+ alignItems: "center",
129
+ gap: 1
130
+ },
131
+ children: [/*#__PURE__*/_jsx(Grid, {
132
+ children: /*#__PURE__*/_jsx(Icon, {
133
+ icon: "image"
134
+ })
135
+ }), /*#__PURE__*/_jsx(Grid, {
136
+ children: /*#__PURE__*/_jsxs(Box, {
137
+ display: "flex",
138
+ flexDirection: "column",
139
+ alignItems: "flex-start",
140
+ justifyContent: "space-between",
141
+ children: [/*#__PURE__*/_jsx(Box, {
142
+ className: "truncateText",
143
+ children: uploadStatus?.fileName
144
+ }), /*#__PURE__*/_jsxs(Box, {
145
+ display: "flex",
146
+ alignItems: "center",
147
+ gap: 1,
148
+ marginTop: 1,
149
+ children: [/*#__PURE__*/_jsx(Box, {
150
+ children: uploadStatus?.fileSize
151
+ }), /*#__PURE__*/_jsx(CircularProgress, {
152
+ variant: "determinate",
153
+ value: uploadStatus?.uploadPercentage ?? 0,
154
+ className: "circularProgress-cls",
155
+ size: 15,
156
+ thickness: 8
157
+ }), /*#__PURE__*/_jsx(Box, {
158
+ children: `${uploadStatus?.uploadPercentage?.toFixed(0) ?? 0}%`
159
+ })]
160
+ })]
161
+ })
162
+ })]
163
+ })
164
+ }), /*#__PURE__*/_jsx(Grid, {
165
+ children: /*#__PURE__*/_jsx(HighlightOffRoundedIcon, {
166
+ className: "uploadCancel",
167
+ sx: {
168
+ cursor: "pointer"
169
+ },
170
+ onClick: e => {
171
+ cancelUpload(e);
172
+ }
173
+ })
174
+ })]
175
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
176
+ children: [/*#__PURE__*/_jsx(Icon, {
177
+ icon: "video"
178
+ }), TYPE_LABELS[type] || translation("Embed Video or Other")]
179
+ })
93
180
  }) : /*#__PURE__*/_jsxs(Box, {
94
181
  sx: {
95
182
  color: "#64748B !important",
@@ -120,14 +207,23 @@ const Video = ({
120
207
  xsHidden,
121
208
  width: oldWidth,
122
209
  bannerSpacing,
123
- aspectRatio
210
+ aspectRatio,
211
+ file,
212
+ isUploading,
213
+ uniqueId,
214
+ fromFreeGrid
124
215
  } = element;
125
216
  const editor = useSlateStatic();
126
217
  const [openSetttings, setOpenSettings] = useState(false);
127
218
  const [parentDOM, setParentDOM] = useState(null);
128
219
  const {
129
220
  readOnly,
130
- translation
221
+ translation,
222
+ services,
223
+ uploadFile,
224
+ resumeUploadState,
225
+ uploadTerminator,
226
+ isUploadInProgress = () => false
131
227
  } = customProps;
132
228
  const {
133
229
  vertical,
@@ -148,6 +244,63 @@ const Video = ({
148
244
  return element?.size || {};
149
245
  }
150
246
  };
247
+ const xhrRef = useRef(null);
248
+ const [openUploadPopup, setUploadPopupOpen] = useState(false);
249
+ const [uploadStatus, setUploadStatus] = useState({
250
+ isUploading: false,
251
+ uploadPercentage: 0
252
+ });
253
+ const onClickUpload = () => {
254
+ setUploadPopupOpen(true);
255
+ };
256
+ const onSelectVideo = async video => {
257
+ handleClose();
258
+ let finalURL = null;
259
+ try {
260
+ if (video?.isUpload === false) {
261
+ finalURL = video?.embedURL;
262
+ } else {
263
+ const id = !uniqueId ? crypto?.randomUUID() : uniqueId;
264
+ const result = await services("uploadFile", video?.file);
265
+ const uploadUrl = result?.data?.[0];
266
+ const fileEntry = {
267
+ ...video,
268
+ xhrRef,
269
+ presidnedURL: uploadUrl,
270
+ status: "uploading"
271
+ };
272
+ uploadFile(id, fileEntry, setUploadStatus, onSave, "video");
273
+ if (!fromFreeGrid) {
274
+ Transforms.setNodes(editor, {
275
+ uniqueId: id,
276
+ isUploading: true
277
+ }, {
278
+ at: path
279
+ });
280
+ } else {
281
+ Transforms.setNodes(editor, {
282
+ isUploading: true
283
+ }, {
284
+ at: path
285
+ });
286
+ }
287
+ }
288
+ if (finalURL) {
289
+ const updateObject = {
290
+ ...element,
291
+ url: finalURL
292
+ };
293
+ onSave(updateObject);
294
+ } else {
295
+ return;
296
+ }
297
+ } catch (error) {
298
+ console.log(error);
299
+ }
300
+ };
301
+ const handleClose = () => {
302
+ setUploadPopupOpen(false);
303
+ };
151
304
  const [size, onMouseDown, resizing, onLoad] = useResize({
152
305
  parentDOM,
153
306
  size: getSize(),
@@ -161,12 +314,49 @@ const Video = ({
161
314
  });
162
315
  const arr = Array.from(Node.elements(editor));
163
316
  const ele = arr.find(([elem]) => element === elem);
317
+ const noUploadTracks = () => {
318
+ setUploadStatus({
319
+ isUploading: false,
320
+ uploadPercentage: 0,
321
+ fileName: null,
322
+ fileSize: null
323
+ });
324
+ };
325
+ useEffect(() => {
326
+ const isUploading = isUploadInProgress(uniqueId);
327
+ if (fromFreeGrid) {
328
+ if (isUploading) {
329
+ resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "image");
330
+ } else {
331
+ if (!isUploading && file) {
332
+ onSelectVideo({
333
+ file: file
334
+ });
335
+ }
336
+ }
337
+ }
338
+ return () => {
339
+ // Transforms.setNodes(editor, { isUploading: false }, { at: path });
340
+ };
341
+ }, [uniqueId, isUploading, file]);
164
342
  useEffect(() => {
165
343
  if (editor && ele && ele[1] !== undefined) {
166
344
  const dom = ReactEditor.toDOMNode(editor, Node.get(editor, ele[1]));
167
345
  setParentDOM(dom);
168
346
  onLoad(element?.size || {});
169
347
  }
348
+ if (!fromFreeGrid) {
349
+ if (uniqueId && isUploading) {
350
+ resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "video");
351
+ } else if (file && isUploading) {
352
+ onSelectVideo({
353
+ file: file
354
+ });
355
+ }
356
+ }
357
+ return () => {
358
+ // xhrRef?.current?.abort();
359
+ };
170
360
  }, []);
171
361
  const ToolBar = () => {
172
362
  return /*#__PURE__*/_jsxs("div", {
@@ -194,12 +384,34 @@ const Video = ({
194
384
  };
195
385
  const onSave = data => {
196
386
  try {
197
- const updateData = {
198
- ...data
199
- };
387
+ let updateData = {};
388
+ if (typeof data === "string") {
389
+ updateData = {
390
+ url: data,
391
+ isUploading: false
392
+ };
393
+ } else if (typeof data?.url !== "string") {
394
+ updateData = {
395
+ ...data,
396
+ url: ""
397
+ };
398
+ onSelectVideo({
399
+ file: data?.url?.file,
400
+ isUpload: true,
401
+ setUploadStatus,
402
+ services: customProps?.services
403
+ });
404
+ } else {
405
+ updateData = data;
406
+ }
200
407
  delete updateData.children;
408
+ Transforms.select(editor, path);
409
+ ReactEditor.focus(editor);
201
410
  Transforms.setNodes(editor, {
202
- ...updateData
411
+ ...updateData,
412
+ isUpload: false,
413
+ isUploading: false,
414
+ file: null
203
415
  }, {
204
416
  at: path
205
417
  });
@@ -281,13 +493,19 @@ const Video = ({
281
493
  children: [!readOnly && url && /*#__PURE__*/_jsx(ToolBar, {}), /*#__PURE__*/_jsx(VideoPlaceholder, {
282
494
  ...element,
283
495
  embedURL: embedURL,
284
- onSettings: onSettings,
496
+ onSettings: onClickUpload,
285
497
  videoSX: videoSX,
286
498
  url: url,
287
499
  readOnly: readOnly,
288
500
  resizing: resizing,
289
501
  classes: classes,
290
- translation: translation
502
+ translation: translation,
503
+ uploadStatus: uploadStatus,
504
+ setUploadStatus: setUploadStatus,
505
+ uploadTerminator: uploadTerminator,
506
+ uniqueId: uniqueId,
507
+ editor: editor,
508
+ path: path
291
509
  }), !readOnly && url ? /*#__PURE__*/_jsx(IconButton, {
292
510
  onPointerDown: onMouseDown,
293
511
  style: {
@@ -295,6 +513,18 @@ const Video = ({
295
513
  },
296
514
  className: "resize-br visible-on-hover",
297
515
  children: /*#__PURE__*/_jsx(AspectRatioIcon, {})
516
+ }) : null, openUploadPopup ? /*#__PURE__*/_jsx(ImageSelector, {
517
+ open: true,
518
+ Add: true,
519
+ commentMore: true,
520
+ actions: true,
521
+ title: "Video",
522
+ onClose: handleClose,
523
+ customProps: customProps,
524
+ onSelectImage: onSelectVideo,
525
+ setUploadPopupOpen: setUploadPopupOpen,
526
+ setUploadStatus: setUploadStatus,
527
+ xhrRef: xhrRef
298
528
  }) : null]
299
529
  }), children]
300
530
  });
@@ -109,7 +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
- const response = [];
112
+ let response = [];
113
113
  let user_email = "";
114
114
  let meta_data = [];
115
115
  const validations = [];
@@ -153,15 +153,21 @@ const Form = props => {
153
153
  rules: rule?.length > 0 && rule
154
154
  });
155
155
  }
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
- });
156
+ const formDataEntries = [...formData.entries()];
157
+ const childFields = element?.children?.filter(el => el?.type === "form-field");
158
+ response = [];
159
+ for (let i = 0; i < formDataEntries.length; i++) {
160
+ const [key, value] = formDataEntries[i];
161
+ const fieldData = childFields[i];
162
+ response.push({
163
+ fieldKey: key,
164
+ [key]: value,
165
+ placeholder: fieldData?.placeholder || "",
166
+ form_name: formName,
167
+ tagName: tagName,
168
+ uid: fieldData?.uid || formName
169
+ });
170
+ }
165
171
  }
166
172
  let params = {
167
173
  page_id: page_id,
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from "react";
2
- import { Transforms, Node } from "slate";
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
- '& .mini-editor-cls': {
13
- padding: '12px',
14
- '&:focus-visible': {
15
- outline: 'none',
16
- border: 'none'
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: '130px',
21
- padding: '12px',
20
+ minHeight: "130px",
21
+ padding: "12px",
22
22
  paddingBottom: 0,
23
- '&:focus-visible': {
24
- outline: 'none',
25
- border: 'none'
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: '126px',
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
- content: '" "',
175
- position: "absolute",
176
- top: "-5px",
177
- left: "-5px",
178
- width: "calc(100% + 4px)",
179
- height: "calc(100% + 4px)",
180
- border: "3px solid blue",
181
- borderRadius: "50%"
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: '10px'
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
+ };