@flozy/editor 11.0.9 → 11.1.0

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 (57) hide show
  1. package/dist/Editor/ChatEditor.js +10 -11
  2. package/dist/Editor/CommonEditor.js +14 -66
  3. package/dist/Editor/Editor.css +8 -3
  4. package/dist/Editor/Elements/AI/PopoverAIInput.js +3 -11
  5. package/dist/Editor/Elements/AI/Styles.js +0 -1
  6. package/dist/Editor/Elements/Accordion/Accordion.js +22 -28
  7. package/dist/Editor/Elements/Accordion/AccordionButton.js +3 -12
  8. package/dist/Editor/Elements/Button/EditorButton.js +0 -1
  9. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +454 -0
  10. package/dist/Editor/Elements/Embed/Embed.js +2 -1
  11. package/dist/Editor/Elements/Embed/Image.js +1 -0
  12. package/dist/Editor/Elements/Form/Form.js +10 -35
  13. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +4 -2
  14. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +3 -3
  15. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  16. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -3
  17. package/dist/Editor/Elements/Signature/SignaturePopup.js +6 -24
  18. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  19. package/dist/Editor/Elements/Table/Table.js +3 -3
  20. package/dist/Editor/Elements/Title/title.js +6 -6
  21. package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
  22. package/dist/Editor/MiniEditor.js +1 -2
  23. package/dist/Editor/Styles/EditorStyles.js +1 -5
  24. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +2 -2
  25. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +7 -25
  26. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +4 -10
  27. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +3 -5
  28. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +2 -7
  29. package/dist/Editor/Toolbar/PopupTool/index.js +0 -1
  30. package/dist/Editor/Toolbar/toolbarGroups.js +4 -8
  31. package/dist/Editor/common/ColorPickerButton.js +0 -3
  32. package/dist/Editor/common/FontLoader/FontLoader.js +0 -3
  33. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -6
  34. package/dist/Editor/common/MentionsPopup/index.js +1 -9
  35. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +0 -1
  36. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -7
  37. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -11
  38. package/dist/Editor/common/RnD/VirtualElement/helper.js +62 -72
  39. package/dist/Editor/common/Shorthands/elements.js +4 -8
  40. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +0 -5
  41. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +8 -16
  42. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +3 -3
  43. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +1 -3
  44. package/dist/Editor/common/Uploader.js +6 -13
  45. package/dist/Editor/commonStyle.js +15 -30
  46. package/dist/Editor/helper/index.js +1 -6
  47. package/dist/Editor/hooks/useMouseMove.js +4 -1
  48. package/dist/Editor/plugins/withEmbeds.js +0 -11
  49. package/dist/Editor/plugins/withHTML.js +0 -2
  50. package/dist/Editor/utils/SlateUtilityFunctions.js +3 -30
  51. package/dist/Editor/utils/accordion.js +39 -67
  52. package/dist/Editor/utils/draftToSlate.js +2 -3
  53. package/dist/Editor/utils/events.js +89 -94
  54. package/dist/Editor/utils/helper.js +20 -24
  55. package/package.json +4 -4
  56. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
  57. package/dist/Editor/helper/textIndeces.js +0 -58
@@ -0,0 +1,454 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
2
+ import Autocomplete from "@mui/material/Autocomplete";
3
+ import Box from "@mui/material/Box";
4
+ import Chip from "@mui/material/Chip";
5
+ import Divider from "@mui/material/Divider";
6
+ import Popover from "@mui/material/Popover";
7
+ import TextField from "@mui/material/TextField";
8
+ import Typography from "@mui/material/Typography";
9
+ import List from "@mui/material/List";
10
+ import ListItem from "@mui/material/ListItem";
11
+ import ListItemButton from "@mui/material/ListItemButton";
12
+ import IconButton from "@mui/material/IconButton";
13
+ import SwipeableDrawer from "@mui/material/SwipeableDrawer";
14
+ import Tooltip from "@mui/material/Tooltip";
15
+ import { CloseIcon } from "../../../../../common/iconslist";
16
+ import { useEditorContext } from "../../../../../hooks/useMouseMove";
17
+ import Icon from "../../../../../common/Icon";
18
+ import { colors } from "../../../../Color Picker/defaultColors";
19
+ import PropertySettings from "../../Options";
20
+ import SnackbarAlert from "../../../../../common/SnackBar";
21
+ import { jsx as _jsx } from "react/jsx-runtime";
22
+ import { jsxs as _jsxs } from "react/jsx-runtime";
23
+ const EXCLUDED_COLORS = new Set(["#000000", "#0F172A", "#2563EB", "#FFFFFF", "#64748B"]);
24
+ const DEFAULT_COLORS = colors?.filter(f => !f?.includes("linear") && !EXCLUDED_COLORS?.has(f));
25
+ const generateRandomColor = () => {
26
+ const randomIndex = Math.floor(Math.random() * DEFAULT_COLORS?.length);
27
+ return DEFAULT_COLORS[randomIndex];
28
+ };
29
+ const MultiSelectWithPopover = props => {
30
+ const {
31
+ options = [],
32
+ value,
33
+ onChange,
34
+ onUpdate,
35
+ property,
36
+ wrapColumn = false,
37
+ translation
38
+ } = props;
39
+ const [anchorEl, setAnchorEl] = useState(null);
40
+ const [anchorElOption, setAnchorElOption] = useState(null);
41
+ const [currentIndex, setCurrentIndex] = useState(null);
42
+ const [selectedOptions, setSelectedOptions] = useState(value);
43
+ const [availableOptions, setAvailableOptions] = useState(options);
44
+ const [showSnackBar, setShowSnackBar] = useState(false);
45
+ const [chipColor, setChipColor] = useState(generateRandomColor());
46
+ const [inputValue, setInputValue] = useState("");
47
+ const {
48
+ theme
49
+ } = useEditorContext();
50
+ const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
51
+ const PopoverComponent = isMobile ? SwipeableDrawer : Popover;
52
+ const mode = useMemo(() => ({
53
+ type: "editOptionMulti",
54
+ edit: {
55
+ label: "Multi Select",
56
+ visible: true,
57
+ key: property,
58
+ type: "multi-select",
59
+ options: options || [],
60
+ optionIndex: currentIndex,
61
+ hideBackButton: true
62
+ }
63
+ }), [options, property, currentIndex]);
64
+ const customScrollStyles = {
65
+ scrollbarWidth: "thin",
66
+ scrollbarColor: `${theme?.palette?.editor?.brainPopupScroll} transparent`,
67
+ "&::-webkit-scrollbar": {
68
+ width: "6px"
69
+ },
70
+ "&::-webkit-scrollbar-thumb": {
71
+ backgroundColor: theme?.palette?.editor?.brainPopupScroll,
72
+ borderRadius: "3px"
73
+ },
74
+ "&::-webkit-scrollbar-track": {
75
+ display: "none"
76
+ }
77
+ };
78
+ useEffect(() => {
79
+ if (inputValue?.trim() && !chipColor) {
80
+ setChipColor(generateRandomColor());
81
+ }
82
+ }, [inputValue, chipColor]);
83
+ useEffect(() => {
84
+ if (JSON.stringify(options) !== JSON.stringify(availableOptions)) {
85
+ setAvailableOptions(options);
86
+ }
87
+ }, [options, availableOptions]);
88
+ const handleOpenPopover = useCallback(event => {
89
+ setAnchorEl(event.currentTarget);
90
+ }, []);
91
+ const handleClosePopover = useCallback(e => {
92
+ e?.stopPropagation();
93
+ setAnchorEl(null);
94
+ }, []);
95
+ const handleAddOption = newValue => {
96
+ const trimmedValue = newValue?.trim();
97
+ if (!trimmedValue) return;
98
+ const newOption = {
99
+ value: trimmedValue,
100
+ color: chipColor
101
+ };
102
+ if (!availableOptions?.some(opt => opt?.value === trimmedValue)) {
103
+ setAvailableOptions(prev => [...prev, newOption]);
104
+ setSelectedOptions(prev => [...prev, newOption]);
105
+ onUpdate([newOption, ...availableOptions]);
106
+ }
107
+ setInputValue("");
108
+ setChipColor("");
109
+ };
110
+ const onClose = () => {
111
+ setAnchorEl(anchorElOption);
112
+ setAnchorElOption(null);
113
+ };
114
+ const onEditOption = (type, data) => {
115
+ const updateData = data?.edit ? data?.edit?.options : data?.options;
116
+ onUpdate(updateData);
117
+ if (data?.edit?.options) {
118
+ const updatedSelectedOptions = selectedOptions?.filter(selOption => updateData?.some(availOption => availOption?.value === selOption?.value && availOption?.color === selOption?.color));
119
+ setSelectedOptions(updatedSelectedOptions);
120
+ onClose();
121
+ }
122
+ };
123
+ const handleEditOption = (e, index) => {
124
+ e.stopPropagation();
125
+ setCurrentIndex(index);
126
+ setAnchorElOption(anchorEl);
127
+ setAnchorEl(null);
128
+ };
129
+ const handleSelectOption = option => {
130
+ if (!selectedOptions?.some(opt => opt?.value === option?.value)) {
131
+ const updatedOptions = [...selectedOptions, option];
132
+ setSelectedOptions(updatedOptions);
133
+ onChange(updatedOptions);
134
+ } else {
135
+ setShowSnackBar(true);
136
+ }
137
+ };
138
+ const handleClearSelection = () => {
139
+ setSelectedOptions([]);
140
+ };
141
+ const handleDeleteChip = (event, option) => {
142
+ event.stopPropagation();
143
+ setSelectedOptions(prev => {
144
+ const updatedOptions = prev.filter(selected => selected?.value !== option?.value);
145
+ onChange(updatedOptions);
146
+ return updatedOptions;
147
+ });
148
+ };
149
+ const filteredOptions = availableOptions?.filter(option => option?.value?.toLowerCase()?.includes(inputValue?.toLowerCase()));
150
+ const isExactMatch = availableOptions?.some(opt => opt?.value?.toLowerCase() === inputValue?.toLowerCase());
151
+ const open = Boolean(anchorEl);
152
+ const openEditOption = Boolean(anchorElOption);
153
+ const id = open ? "autocomplete-popover" : undefined;
154
+ return /*#__PURE__*/_jsxs("div", {
155
+ children: [/*#__PURE__*/_jsx(Box, {
156
+ sx: {
157
+ display: "flex",
158
+ flexWrap: wrapColumn ? "wrap" : "nowrap",
159
+ overflowX: wrapColumn ? "hidden" : "auto",
160
+ gap: 0.5,
161
+ padding: "8px",
162
+ cursor: "pointer"
163
+ },
164
+ onClick: handleOpenPopover,
165
+ children: selectedOptions?.map((option, index) => /*#__PURE__*/_jsx(Chip, {
166
+ label: option?.value,
167
+ onDelete: event => {
168
+ handleDeleteChip(event, option);
169
+ },
170
+ deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
171
+ variant: "filled",
172
+ sx: {
173
+ backgroundColor: option?.color,
174
+ color: '#0F172A',
175
+ "& .MuiChip-deleteIcon": {
176
+ flexShrink: 0,
177
+ "& path": {
178
+ stroke: '#0F172A !important'
179
+ }
180
+ },
181
+ "&:hover": {
182
+ opacity: 0.8
183
+ }
184
+ }
185
+ }, index))
186
+ }), /*#__PURE__*/_jsx(PopoverComponent, {
187
+ id: id,
188
+ open: open,
189
+ anchorEl: anchorEl,
190
+ anchor: "bottom",
191
+ onClose: e => handleClosePopover(e),
192
+ anchorOrigin: {
193
+ vertical: "top",
194
+ horizontal: "left"
195
+ },
196
+ transformOrigin: {
197
+ vertical: "top",
198
+ horizontal: "left"
199
+ },
200
+ sx: {
201
+ "& .MuiPaper-root": {
202
+ borderRadius: "20px",
203
+ background: theme?.palette?.editor?.textFormatBgColor,
204
+ border: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
205
+ boxShadow: "0px 4px 10px 0px #00000029"
206
+ }
207
+ },
208
+ disableAutoFocus: true,
209
+ disableEnforceFocus: true,
210
+ disableRestoreFocus: true,
211
+ children: /*#__PURE__*/_jsxs(Box, {
212
+ sx: {
213
+ width: isMobile ? "100%" : 300
214
+ },
215
+ children: [/*#__PURE__*/_jsx(Autocomplete, {
216
+ multiple: true,
217
+ freeSolo: true,
218
+ disablePortal: true,
219
+ PopperComponent: () => null,
220
+ sx: {
221
+ "& .MuiFormControl-root": {
222
+ maxHeight: "250px",
223
+ overflowY: "auto",
224
+ overflowX: "hidden",
225
+ pr: '12px',
226
+ pl: '12px',
227
+ marginTop: '12px',
228
+ ...customScrollStyles
229
+ }
230
+ },
231
+ disableClearable: true,
232
+ options: [],
233
+ getOptionLabel: option => options?.value || "",
234
+ value: selectedOptions,
235
+ onChange: (event, newValues) => {
236
+ const addedOptions = newValues?.filter(value => typeof value === "object" || typeof value === "string" && value?.trim() !== "")?.map(value => typeof value === "string" ? {
237
+ value,
238
+ color: chipColor
239
+ } : value);
240
+ const isDuplicate = addedOptions?.some(newOpt => (selectedOptions || [])?.some(opt => opt.value === newOpt.value));
241
+ if (!isDuplicate) {
242
+ setSelectedOptions([...selectedOptions, ...addedOptions]);
243
+ }
244
+ },
245
+ inputValue: inputValue,
246
+ onInputChange: (event, newInputValue) => setInputValue(newInputValue),
247
+ onKeyDown: event => {
248
+ if (event.key === "Enter" && inputValue.trim()) {
249
+ event.preventDefault();
250
+ handleAddOption(inputValue);
251
+ }
252
+ },
253
+ filterOptions: (options, params) => options?.filter(option => option?.value?.toLowerCase()?.includes(params?.inputValue?.toLowerCase())),
254
+ renderInput: params => /*#__PURE__*/_jsx(TextField, {
255
+ ...params,
256
+ variant: "standard",
257
+ InputProps: {
258
+ ...params.InputProps,
259
+ disableUnderline: true,
260
+ sx: {
261
+ display: "flex",
262
+ flexWrap: "wrap",
263
+ fontFamily: "Inter",
264
+ fontWeight: 400,
265
+ fontSize: "12px",
266
+ color: theme?.palette?.editor?.secondaryTextColor,
267
+ "&::placeholder": {
268
+ color: theme?.palette?.editor?.secondaryTextColor
269
+ },
270
+ "& .MuiAutocomplete-input": {
271
+ minWidth: "100px !important"
272
+ }
273
+ },
274
+ endAdornment: /*#__PURE__*/_jsx(Tooltip, {
275
+ arrow: true,
276
+ title: "Clear Selected",
277
+ children: /*#__PURE__*/_jsx(IconButton, {
278
+ onClick: handleClearSelection,
279
+ sx: {
280
+ padding: 0,
281
+ minWidth: "unset",
282
+ "& .MuiSvgIcon-root": {
283
+ fontSize: 20
284
+ },
285
+ '& rect': {
286
+ fill: theme?.palette?.editor?.closeButtonSvgStroke
287
+ },
288
+ '&:hover': {
289
+ backgroundColor: 'transparent'
290
+ }
291
+ },
292
+ children: /*#__PURE__*/_jsx(Icon, {
293
+ icon: "resetIconNew"
294
+ })
295
+ })
296
+ })
297
+ },
298
+ sx: {
299
+ backgroundColor: "transparent",
300
+ fontFamily: 'Inter',
301
+ fontWeight: 400,
302
+ fontSize: '12px'
303
+ },
304
+ placeholder: "Create new one..."
305
+ }),
306
+ renderTags: (tagValues, getTagProps) => tagValues.map((option, index) => /*#__PURE__*/_jsx(Chip, {
307
+ variant: "filled",
308
+ label: option?.value,
309
+ ...getTagProps({
310
+ index
311
+ }),
312
+ onDelete: event => {
313
+ handleDeleteChip(event, option);
314
+ },
315
+ deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
316
+ sx: {
317
+ backgroundColor: option?.color,
318
+ color: '#0F172A',
319
+ "& .MuiChip-deleteIcon": {
320
+ flexShrink: 0,
321
+ "& path": {
322
+ stroke: '#0F172A !important'
323
+ }
324
+ },
325
+ "&:hover": {
326
+ opacity: 0.8
327
+ }
328
+ }
329
+ }, index))
330
+ }), /*#__PURE__*/_jsx(Divider, {
331
+ sx: {
332
+ mt: '12px',
333
+ borderBottom: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
334
+ boxShadow: theme?.palette?.editor?.dividerDropShadow
335
+ }
336
+ }), /*#__PURE__*/_jsx(Box, {
337
+ sx: {
338
+ pl: '4px'
339
+ },
340
+ children: /*#__PURE__*/_jsxs(List, {
341
+ sx: {
342
+ maxHeight: "250px",
343
+ overflowY: "auto",
344
+ ...customScrollStyles
345
+ },
346
+ children: [/*#__PURE__*/_jsx(Typography, {
347
+ sx: {
348
+ mb: 1,
349
+ pl: '8px',
350
+ color: theme?.palette?.editor?.secondaryTextColor,
351
+ fontFamily: 'Inter',
352
+ fontWeight: 400,
353
+ fontSize: '12px'
354
+ },
355
+ children: "Choose an option or create one"
356
+ }), filteredOptions?.map((option, index) => /*#__PURE__*/_jsx(ListItem, {
357
+ sx: {
358
+ padding: 0
359
+ },
360
+ disablePadding: true,
361
+ children: /*#__PURE__*/_jsxs(ListItemButton, {
362
+ onClick: () => handleSelectOption(option),
363
+ sx: {
364
+ paddingTop: "4px",
365
+ paddingBottom: "4px",
366
+ justifyContent: 'space-between',
367
+ '&:hover': {
368
+ '& path': {
369
+ stroke: theme?.palette?.editor?.activeColor
370
+ },
371
+ borderRadius: '12px'
372
+ }
373
+ },
374
+ children: [/*#__PURE__*/_jsx(Chip, {
375
+ label: option?.value,
376
+ sx: {
377
+ backgroundColor: option?.color,
378
+ color: '#0F172A',
379
+ fontWeight: 500,
380
+ fontSize: "12px",
381
+ fontFamily: "Inter",
382
+ padding: "4px 12px",
383
+ borderRadius: "16px",
384
+ maxWidth: "180px",
385
+ whiteSpace: "nowrap",
386
+ overflow: "hidden",
387
+ textOverflow: "ellipsis"
388
+ }
389
+ }), /*#__PURE__*/_jsx(IconButton, {
390
+ size: "small",
391
+ sx: {
392
+ '& path': {
393
+ stroke: theme?.palette?.editor?.closeButtonSvgStroke
394
+ },
395
+ '&:hover': {
396
+ backgroundColor: 'transparent'
397
+ }
398
+ },
399
+ onClick: e => handleEditOption(e, index),
400
+ children: /*#__PURE__*/_jsx(Icon, {
401
+ icon: "rightArrow"
402
+ })
403
+ })]
404
+ })
405
+ }, index)), inputValue?.trim() && !isExactMatch && /*#__PURE__*/_jsx(ListItem, {
406
+ disablePadding: true,
407
+ children: /*#__PURE__*/_jsxs(ListItemButton, {
408
+ onClick: () => handleAddOption(inputValue),
409
+ sx: {
410
+ display: "flex",
411
+ alignItems: "center"
412
+ },
413
+ children: [/*#__PURE__*/_jsx(Typography, {
414
+ sx: {
415
+ color: theme?.palette?.editor?.secondaryTextColor,
416
+ marginRight: "6px",
417
+ fontSize: "14px",
418
+ fontFamily: "Inter"
419
+ },
420
+ children: "Create"
421
+ }), /*#__PURE__*/_jsx(Chip, {
422
+ label: `${inputValue}`,
423
+ sx: {
424
+ backgroundColor: chipColor,
425
+ color: '#0F172A',
426
+ fontWeight: 500,
427
+ fontSize: "12px",
428
+ fontFamily: "Inter",
429
+ borderRadius: "16px",
430
+ maxWidth: "180px",
431
+ whiteSpace: "nowrap",
432
+ overflow: "hidden",
433
+ textOverflow: "ellipsis"
434
+ }
435
+ })]
436
+ })
437
+ })]
438
+ })
439
+ })]
440
+ })
441
+ }), openEditOption ? /*#__PURE__*/_jsx(PropertySettings, {
442
+ open: openEditOption,
443
+ anchorEl: anchorElOption,
444
+ mode: mode,
445
+ onClose: onClose,
446
+ onEvent: onEditOption,
447
+ translation: translation
448
+ }) : null, showSnackBar ? /*#__PURE__*/_jsx(SnackbarAlert, {
449
+ message: "Option already selected!",
450
+ setShowSnackBar: setShowSnackBar
451
+ }) : null]
452
+ });
453
+ };
454
+ export default MultiSelectWithPopover;
@@ -1,8 +1,9 @@
1
1
  import React, { useRef, useState } from "react";
2
+ import { Transforms } from "slate";
2
3
  import { ReactEditor } from "slate-react";
3
4
  import Icon from "../../common/Icon";
4
5
  import { isBlockActive } from "../../utils/SlateUtilityFunctions";
5
- import { insertEmbed } from "../../utils/embed";
6
+ import { insertDefaultEmbed, insertEmbed } from "../../utils/embed";
6
7
  import "./Embed.css";
7
8
  import ToolbarIcon from "../../common/ToolbarIcon";
8
9
  import ImageSelector from "../../common/ImageSelector/ImageSelector";
@@ -77,6 +77,7 @@ const ImageContent = props => {
77
77
  objectFit,
78
78
  webAddress,
79
79
  readOnly,
80
+ setOpenSettings,
80
81
  handleImageClick,
81
82
  onTouchEnd,
82
83
  path,
@@ -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
- let response = [];
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
- // Commented out — duplicate field loop caused by 'pair'. Not needed inside this loop.
171
- // const formDataEntries = [...formData.entries()];
172
- // const childFields = element?.children?.filter(
173
- // (el) => el?.type === "form-field"
174
- // );
175
- // response = [];
176
- // for (let i = 0; i < formDataEntries.length; i++) {
177
- // const [key, value] = formDataEntries[i];
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,
@@ -184,11 +184,11 @@ const FreeGrid = props => {
184
184
  const handleAddElementClick = type => () => {
185
185
  const isEmpty = isEmptySection();
186
186
  const insertAt = isEmpty ? [...path, 0] : [...path, childrenCountRef.current];
187
+ const id = crypto?.randomUUID();
187
188
  const {
188
189
  elValues,
189
190
  sectionVal
190
191
  } = getElementValues(type, element?.children, breakpoint);
191
- const id = crypto?.randomUUID();
192
192
  switch (type) {
193
193
  case "addText":
194
194
  Transforms.insertNodes(editor, [{
@@ -271,7 +271,9 @@ const FreeGrid = props => {
271
271
  ...insertFreeGridItem("video", createEmbedNode("video", {
272
272
  url: "",
273
273
  alt: "",
274
- images: []
274
+ images: [],
275
+ fromFreeGrid: true,
276
+ uniqueId: id
275
277
  }), {
276
278
  ...(elValues || {})
277
279
  })
@@ -157,14 +157,14 @@ const FreeGridBox = props => {
157
157
  };
158
158
  const repeatTimes = Math.floor(height / ROW_HEIGHT);
159
159
  const sectionTypeOptions = (itemOptions?.box || []).filter(f => (hideTools || []).indexOf(f) === -1);
160
- const isBoxHeader = useMemo(() => {
161
- return element?.children?.some(c => c.childType === "appHeader" && !c.xs_updatedOn);
162
- }, [element]);
163
160
  const boxSp = groupByBreakpoint({
164
161
  borderRadius: {
165
162
  ...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
166
163
  }
167
164
  }, theme);
165
+ const isBoxHeader = useMemo(() => {
166
+ return element?.children?.some(c => c.childType === "appHeader" && !c.xs_updatedOn);
167
+ }, [element]);
168
168
  return /*#__PURE__*/_jsx(RnD, {
169
169
  id: `freegrid_box_item_${path.join("|")}_${updated_at}_${breakpoint}`,
170
170
  className: `freegrid-item path-${path.length} breakpoint-${breakpoint} freegrid-box_${path.join("_")}`,
@@ -5,8 +5,8 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
5
5
  const More = props => {
6
6
  const {
7
7
  handleClick,
8
- translation,
9
- breakpoint
8
+ breakpoint,
9
+ translation
10
10
  } = props;
11
11
  return /*#__PURE__*/_jsx(Box, {
12
12
  children: /*#__PURE__*/_jsxs(List, {
@@ -19,15 +19,15 @@ const More = props => {
19
19
  className: "item-wrapper",
20
20
  onClick: handleClick("duplicateSection"),
21
21
  children: translation?.translation("Duplicate Section")
22
+ }), /*#__PURE__*/_jsx(ListItemButton, {
23
+ className: "item-wrapper",
24
+ onClick: handleClick("deleteSection"),
25
+ children: "Delete Section"
22
26
  }), breakpoint === "xs" ? /*#__PURE__*/_jsx(ListItemButton, {
23
27
  className: "item-wrapper",
24
28
  onClick: handleClick("forceAutoAlignment"),
25
29
  children: "Force Auto Alignment"
26
- }) : null, /*#__PURE__*/_jsx(ListItemButton, {
27
- className: "item-wrapper",
28
- onClick: handleClick("deleteSection"),
29
- children: "Delete Section"
30
- })]
30
+ }) : null]
31
31
  })
32
32
  });
33
33
  };
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from "react";
2
2
  import { signedTextFonts } from "../../../utils/font";
3
3
  import { Grid, Button, TextField, InputAdornment, IconButton, Typography } from "@mui/material";
4
- import ClearRoundedIcon from "@mui/icons-material/ClearRounded";
4
+ import ClearRoundedIcon from '@mui/icons-material/ClearRounded';
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
7
7
  const TypeSignature = props => {
@@ -80,8 +80,7 @@ const TypeSignature = props => {
80
80
  children: /*#__PURE__*/_jsx(ClearRoundedIcon, {})
81
81
  })
82
82
  })
83
- },
84
- autoComplete: "typeName"
83
+ }
85
84
  })
86
85
  })
87
86
  })