@flozy/editor 10.9.4 → 10.9.5

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 (157) 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 -236
  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 -15
  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 +4 -5
  38. package/dist/Editor/Elements/Table/TableCell.js +3 -10
  39. package/dist/Editor/Elements/Title/title.js +11 -10
  40. package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -4
  41. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +3 -5
  42. package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
  43. package/dist/Editor/MiniEditor.js +1 -2
  44. package/dist/Editor/Styles/EditorStyles.js +8 -20
  45. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
  46. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
  47. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  48. package/dist/Editor/Toolbar/FormatTools/TextSize.js +29 -33
  49. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +1 -2
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +2 -4
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +23 -25
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +7 -25
  53. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +42 -167
  54. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +8 -24
  55. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +1 -2
  56. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +10 -70
  57. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +14 -73
  58. package/dist/Editor/Toolbar/PopupTool/index.js +4 -7
  59. package/dist/Editor/Toolbar/toolbarGroups.js +10 -56
  60. package/dist/Editor/common/ColorPickerButton.js +16 -38
  61. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  62. package/dist/Editor/common/FontLoader/FontLoader.js +0 -4
  63. package/dist/Editor/common/Icon.js +0 -28
  64. package/dist/Editor/common/ImageSelector/ImageSelector.js +7 -45
  65. package/dist/Editor/common/ImageSelector/Options/Upload.js +11 -26
  66. package/dist/Editor/common/ImageSelector/Styles.js +9 -3
  67. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -6
  68. package/dist/Editor/common/MentionsPopup/index.js +1 -9
  69. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +1 -2
  70. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  71. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  72. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  73. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  74. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +2 -4
  75. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +7 -20
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -9
  78. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +7 -20
  79. package/dist/Editor/common/RnD/GuideLines/styles.js +1 -1
  80. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -11
  81. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  82. package/dist/Editor/common/RnD/Utils/gridDropItem.js +18 -28
  83. package/dist/Editor/common/RnD/Utils/index.js +1 -3
  84. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +58 -45
  85. package/dist/Editor/common/RnD/VirtualElement/helper.js +130 -320
  86. package/dist/Editor/common/RnD/VirtualElement/styles.js +0 -22
  87. package/dist/Editor/common/RnD/index.js +13 -48
  88. package/dist/Editor/common/Shorthands/elements.js +4 -62
  89. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  90. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +0 -4
  91. package/dist/Editor/common/StyleBuilder/fieldStyle.js +0 -1
  92. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +2 -15
  93. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +2 -12
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
  95. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +8 -16
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +10 -36
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +7 -16
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +1 -3
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +0 -2
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +1 -0
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +7 -15
  102. package/dist/Editor/common/StyleBuilder/formStyle.js +13 -19
  103. package/dist/Editor/common/StyleBuilder/index.js +4 -8
  104. package/dist/Editor/common/Uploader.js +17 -125
  105. package/dist/Editor/common/iconslist.js +0 -21
  106. package/dist/Editor/commonStyle.js +45 -64
  107. package/dist/Editor/helper/index.js +2 -10
  108. package/dist/Editor/helper/theme.js +2 -203
  109. package/dist/Editor/hooks/useMouseMove.js +3 -9
  110. package/dist/Editor/hooks/useTable.js +1 -62
  111. package/dist/Editor/plugins/withEmbeds.js +1 -12
  112. package/dist/Editor/plugins/withHTML.js +3 -58
  113. package/dist/Editor/plugins/withTable.js +1 -1
  114. package/dist/Editor/service/fileupload.js +0 -70
  115. package/dist/Editor/theme/ThemeList.js +173 -50
  116. package/dist/Editor/utils/SlateUtilityFunctions.js +40 -189
  117. package/dist/Editor/utils/accordion.js +40 -68
  118. package/dist/Editor/utils/button.js +17 -1
  119. package/dist/Editor/utils/draftToSlate.js +2 -3
  120. package/dist/Editor/utils/events.js +89 -94
  121. package/dist/Editor/utils/font.js +37 -40
  122. package/dist/Editor/utils/formfield.js +2 -2
  123. package/dist/Editor/utils/helper.js +22 -98
  124. package/dist/Editor/utils/insertAppHeader.js +4 -8
  125. package/package.json +4 -4
  126. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +0 -16
  127. package/dist/Editor/Elements/FreeGrid/helper.js +0 -115
  128. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -439
  129. package/dist/Editor/assets/svg/BackIcon.js +0 -18
  130. package/dist/Editor/assets/svg/ThemeIcons.js +0 -293
  131. package/dist/Editor/common/CustomColorPicker/index.js +0 -130
  132. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  133. package/dist/Editor/common/CustomDialog2/index.js +0 -94
  134. package/dist/Editor/common/CustomDialog2/style.js +0 -67
  135. package/dist/Editor/common/CustomSelect.js +0 -43
  136. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  137. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
  138. package/dist/Editor/common/UploaderWithProgress.js +0 -183
  139. package/dist/Editor/helper/textIndeces.js +0 -58
  140. package/dist/Editor/hooks/useEditorTheme.js +0 -153
  141. package/dist/Editor/hooks/useThemeValues.js +0 -63
  142. package/dist/Editor/theme/index.js +0 -149
  143. package/dist/Editor/themeSettings/ActiveTheme.js +0 -82
  144. package/dist/Editor/themeSettings/buttons/index.js +0 -300
  145. package/dist/Editor/themeSettings/buttons/style.js +0 -23
  146. package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
  147. package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
  148. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  149. package/dist/Editor/themeSettings/fonts/index.js +0 -240
  150. package/dist/Editor/themeSettings/fonts/style.js +0 -62
  151. package/dist/Editor/themeSettings/icons.js +0 -60
  152. package/dist/Editor/themeSettings/index.js +0 -380
  153. package/dist/Editor/themeSettings/style.js +0 -299
  154. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  155. package/dist/Editor/themeSettingsAI/index.js +0 -355
  156. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -202
  157. 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;