@flozy/editor 10.8.7 → 10.8.9

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 (151) hide show
  1. package/dist/Editor/ChatEditor.js +16 -17
  2. package/dist/Editor/CommonEditor.js +27 -138
  3. package/dist/Editor/DialogWrapper.js +25 -31
  4. package/dist/Editor/Editor.css +11 -39
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +3 -11
  6. package/dist/Editor/Elements/AI/Styles.js +0 -1
  7. package/dist/Editor/Elements/Accordion/Accordion.js +22 -28
  8. package/dist/Editor/Elements/Accordion/AccordionButton.js +3 -12
  9. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  10. package/dist/Editor/Elements/Attachments/Attachments.js +11 -153
  11. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +3 -8
  12. package/dist/Editor/Elements/Button/EditorButton.js +7 -23
  13. package/dist/Editor/Elements/Color Picker/ColorButtons.js +14 -61
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.js +7 -10
  16. package/dist/Editor/Elements/Color Picker/Styles.js +13 -15
  17. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +454 -0
  18. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +55 -134
  19. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SelectV1.js +8 -7
  20. package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +3 -8
  21. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +1 -1
  22. package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +1 -1
  23. package/dist/Editor/Elements/Embed/Embed.js +43 -36
  24. package/dist/Editor/Elements/Embed/Image.js +23 -240
  25. package/dist/Editor/Elements/Embed/Video.js +15 -246
  26. package/dist/Editor/Elements/Form/FormField.js +1 -1
  27. package/dist/Editor/Elements/Form/Workflow/Styles.js +22 -24
  28. package/dist/Editor/Elements/Form/Workflow/constant.js +1 -25
  29. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +33 -39
  30. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +4 -7
  31. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +0 -1
  32. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  33. package/dist/Editor/Elements/FreeGrid/styles.js +0 -9
  34. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  35. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +1 -2
  36. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  37. package/dist/Editor/Elements/Table/Table.js +3 -3
  38. package/dist/Editor/Elements/Title/title.js +6 -6
  39. package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -4
  40. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +3 -5
  41. package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
  42. package/dist/Editor/MiniEditor.js +1 -2
  43. package/dist/Editor/Styles/EditorStyles.js +5 -20
  44. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
  45. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
  46. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  47. package/dist/Editor/Toolbar/FormatTools/TextSize.js +29 -33
  48. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +1 -2
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +2 -4
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +23 -23
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +7 -25
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +42 -167
  53. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +8 -24
  54. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +1 -2
  55. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +10 -70
  56. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +14 -73
  57. package/dist/Editor/Toolbar/PopupTool/index.js +2 -5
  58. package/dist/Editor/Toolbar/toolbarGroups.js +10 -56
  59. package/dist/Editor/common/ColorPickerButton.js +16 -38
  60. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  61. package/dist/Editor/common/FontLoader/FontLoader.js +0 -4
  62. package/dist/Editor/common/Icon.js +0 -28
  63. package/dist/Editor/common/ImageSelector/ImageSelector.js +7 -45
  64. package/dist/Editor/common/ImageSelector/Options/Upload.js +11 -26
  65. package/dist/Editor/common/ImageSelector/Styles.js +9 -3
  66. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -6
  67. package/dist/Editor/common/MentionsPopup/index.js +1 -9
  68. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +1 -2
  69. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  70. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  71. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  72. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  73. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +2 -4
  74. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +7 -20
  75. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -9
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +7 -20
  78. package/dist/Editor/common/RnD/GuideLines/styles.js +1 -1
  79. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -11
  80. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  81. package/dist/Editor/common/RnD/Utils/gridDropItem.js +18 -28
  82. package/dist/Editor/common/RnD/Utils/index.js +1 -3
  83. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +58 -45
  84. package/dist/Editor/common/RnD/VirtualElement/helper.js +130 -320
  85. package/dist/Editor/common/RnD/VirtualElement/styles.js +0 -22
  86. package/dist/Editor/common/RnD/index.js +13 -48
  87. package/dist/Editor/common/Shorthands/elements.js +4 -62
  88. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  89. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +0 -4
  90. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +2 -15
  91. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +2 -12
  92. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
  93. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +8 -16
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +10 -36
  95. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +7 -16
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +1 -3
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +0 -2
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +7 -15
  99. package/dist/Editor/common/StyleBuilder/index.js +4 -8
  100. package/dist/Editor/common/Uploader.js +17 -125
  101. package/dist/Editor/common/iconslist.js +0 -21
  102. package/dist/Editor/commonStyle.js +64 -107
  103. package/dist/Editor/helper/index.js +2 -10
  104. package/dist/Editor/helper/theme.js +2 -203
  105. package/dist/Editor/hooks/useMouseMove.js +3 -9
  106. package/dist/Editor/plugins/withEmbeds.js +1 -12
  107. package/dist/Editor/plugins/withHTML.js +3 -58
  108. package/dist/Editor/plugins/withTable.js +1 -1
  109. package/dist/Editor/service/fileupload.js +0 -53
  110. package/dist/Editor/theme/ThemeList.js +173 -51
  111. package/dist/Editor/utils/SlateUtilityFunctions.js +21 -183
  112. package/dist/Editor/utils/accordion.js +40 -68
  113. package/dist/Editor/utils/button.js +17 -1
  114. package/dist/Editor/utils/draftToSlate.js +2 -3
  115. package/dist/Editor/utils/events.js +89 -94
  116. package/dist/Editor/utils/font.js +37 -40
  117. package/dist/Editor/utils/helper.js +21 -97
  118. package/dist/Editor/utils/insertAppHeader.js +4 -8
  119. package/package.json +4 -4
  120. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +0 -16
  121. package/dist/Editor/Elements/FreeGrid/helper.js +0 -115
  122. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -439
  123. package/dist/Editor/assets/svg/BackIcon.js +0 -18
  124. package/dist/Editor/assets/svg/ThemeIcons.js +0 -293
  125. package/dist/Editor/common/CustomColorPicker/index.js +0 -130
  126. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  127. package/dist/Editor/common/CustomDialog2/index.js +0 -94
  128. package/dist/Editor/common/CustomDialog2/style.js +0 -67
  129. package/dist/Editor/common/CustomSelect.js +0 -43
  130. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  131. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
  132. package/dist/Editor/common/UploaderWithProgress.js +0 -183
  133. package/dist/Editor/helper/textIndeces.js +0 -58
  134. package/dist/Editor/hooks/useEditorTheme.js +0 -155
  135. package/dist/Editor/hooks/useThemeValues.js +0 -63
  136. package/dist/Editor/theme/index.js +0 -149
  137. package/dist/Editor/themeSettings/ActiveTheme.js +0 -82
  138. package/dist/Editor/themeSettings/buttons/index.js +0 -300
  139. package/dist/Editor/themeSettings/buttons/style.js +0 -23
  140. package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
  141. package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
  142. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  143. package/dist/Editor/themeSettings/fonts/index.js +0 -240
  144. package/dist/Editor/themeSettings/fonts/style.js +0 -62
  145. package/dist/Editor/themeSettings/icons.js +0 -60
  146. package/dist/Editor/themeSettings/index.js +0 -380
  147. package/dist/Editor/themeSettings/style.js +0 -299
  148. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  149. package/dist/Editor/themeSettingsAI/index.js +0 -355
  150. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -202
  151. package/dist/Editor/themeSettingsAI/style.js +0 -332
@@ -1,14 +1,13 @@
1
1
  import React, { useState } from "react";
2
2
  import { ReactEditor } from "slate-react";
3
- import { IconButton, Tooltip, Box, Popover, useTheme } from "@mui/material";
3
+ import ColorPickerTool from "react-gcolor-picker";
4
+ import { IconButton, Tooltip, Box, Popover } from "@mui/material";
4
5
  import { addMarkData, activeMark } from "../../utils/SlateUtilityFunctions";
5
6
  import ColorButtons from "./ColorButtons";
6
7
  import ColorPickerStyles from "./Styles";
7
8
  import colorWheel from "./colorWheel.png";
8
9
  import "./ColorPicker.css";
9
10
  import { useEditorContext } from "../../hooks/useMouseMove";
10
- import CustomColorPicker from "../../common/CustomColorPicker";
11
- import { getSelectedElementColor } from "../../utils/helper";
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  import { Fragment as _Fragment } from "react/jsx-runtime";
14
13
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -26,8 +25,7 @@ const ColorPicker = props => {
26
25
  classes,
27
26
  forMiniTool,
28
27
  openColorTool,
29
- closeColorTool,
30
- type
28
+ closeColorTool
31
29
  } = props;
32
30
  const {
33
31
  theme
@@ -36,7 +34,6 @@ const ColorPicker = props => {
36
34
  const [anchorEl, setAnchorEl] = useState(null);
37
35
  const open = Boolean(anchorEl);
38
36
  const pickerStyles = ColorPickerStyles(theme);
39
- const muiTheme = useTheme();
40
37
  const onOpen = e => {
41
38
  e.preventDefault();
42
39
  setAnchorEl(e.currentTarget);
@@ -61,7 +58,7 @@ const ColorPicker = props => {
61
58
  setAnchorEl(null);
62
59
  setSelection(null);
63
60
  };
64
- const activeColor = type === "textColor" ? getSelectedElementColor(editor, format, muiTheme) : activeMark(editor, format) || DEFAULT_COLOR[format];
61
+ const activeColor = activeMark(editor, format) || DEFAULT_COLOR[format];
65
62
  return /*#__PURE__*/_jsxs(_Fragment, {
66
63
  children: [forMiniTool ? null : /*#__PURE__*/_jsx(Tooltip, {
67
64
  title: title,
@@ -99,10 +96,10 @@ const ColorPicker = props => {
99
96
  horizontal: "top"
100
97
  },
101
98
  sx: classes.colorPickerPopup,
102
- children: /*#__PURE__*/_jsx(CustomColorPicker, {
99
+ children: /*#__PURE__*/_jsx(ColorPickerTool, {
103
100
  gradient: true,
104
- onChange: handleFormSubmit,
105
- color: activeColor
101
+ value: activeColor,
102
+ onChange: handleFormSubmit
106
103
  })
107
104
  })]
108
105
  });
@@ -20,26 +20,24 @@ const ColorPickerStyles = theme => ({
20
20
  background: `${theme?.palette?.editor?.miniToolBarBackground}`,
21
21
  border: `1px solid ${theme?.palette?.editor?.miniToolBarBorder} !important`,
22
22
  borderRadius: "7px !important",
23
- padding: "0px 10px",
24
- "@media only screen and (max-width: 600px)": {
23
+ padding: "0px 5px",
24
+ '@media only screen and (max-width: 600px)': {
25
25
  marginTop: "-40px"
26
26
  }
27
27
  }
28
28
  },
29
29
  colorButtonSingle: {
30
- border: "1.5px solid #DCE4EC !important",
31
30
  "&.active": {
32
- // "&:before": {
33
- // content: '" "',
34
- // position: "absolute",
35
- // top: "-4px",
36
- // left: "-4px",
37
- // width: "calc(100% + 8px)",
38
- // height: "calc(100% + 8px)",
39
- // border: "2px solid #2563EB",
40
- // borderRadius: "50%",
41
- // },
42
- outline: "2px solid #2563EB"
31
+ "&:before": {
32
+ content: '" "',
33
+ position: "absolute",
34
+ top: "-4px",
35
+ left: "-4px",
36
+ width: "calc(100% + 8px)",
37
+ height: "calc(100% + 8px)",
38
+ border: "2px solid #2563EB",
39
+ borderRadius: "50%"
40
+ }
43
41
  }
44
42
  },
45
43
  colorButtonsInner: {
@@ -61,7 +59,7 @@ const ColorPickerStyles = theme => ({
61
59
  width: "24px",
62
60
  height: "24px",
63
61
  margin: "0px 4px",
64
- border: "1.5px solid #DCE4EC"
62
+ border: "unset"
65
63
  }
66
64
  },
67
65
  colorPickerIcon: {
@@ -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;