@flozy/editor 9.7.7 → 9.7.8

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 (253) hide show
  1. package/dist/Editor/ChatEditor.js +19 -26
  2. package/dist/Editor/CommonEditor.js +25 -139
  3. package/dist/Editor/DialogWrapper.js +25 -31
  4. package/dist/Editor/Editor.css +7 -11
  5. package/dist/Editor/Elements/AI/AIInput.js +3 -5
  6. package/dist/Editor/Elements/AI/CustomSelect.js +5 -9
  7. package/dist/Editor/Elements/AI/PopoverAIInput.js +5 -15
  8. package/dist/Editor/Elements/Accordion/Accordion.js +3 -4
  9. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +1 -4
  10. package/dist/Editor/Elements/Accordion/AccordionButton.js +2 -6
  11. package/dist/Editor/Elements/Accordion/AccordionTitlePopup.js +1 -4
  12. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  13. package/dist/Editor/Elements/AppHeader/AppHeaderButton.js +2 -6
  14. package/dist/Editor/Elements/AppHeader/AppHeaderPopup.js +1 -4
  15. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +1 -4
  16. package/dist/Editor/Elements/Button/ButtonPopup.js +1 -4
  17. package/dist/Editor/Elements/Button/ButtonToolIcon.js +2 -6
  18. package/dist/Editor/Elements/Button/EditorButton.js +30 -43
  19. package/dist/Editor/Elements/Carousel/Carousel.js +4 -5
  20. package/dist/Editor/Elements/Carousel/CarouselButton.js +2 -6
  21. package/dist/Editor/Elements/Carousel/CarouselItem.js +2 -3
  22. package/dist/Editor/Elements/ChipText/ChipTextPopup.js +1 -4
  23. package/dist/Editor/Elements/CodeToText/CodeToText.js +4 -5
  24. package/dist/Editor/Elements/CodeToText/HtmlContextMenu.js +2 -6
  25. package/dist/Editor/Elements/Color Picker/ColorButtons.js +14 -60
  26. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  27. package/dist/Editor/Elements/Color Picker/ColorPicker.js +7 -10
  28. package/dist/Editor/Elements/Color Picker/Styles.js +13 -15
  29. package/dist/Editor/Elements/Colorbox/ColorboxButton.js +2 -6
  30. package/dist/Editor/Elements/DataView/DataView.js +2 -5
  31. package/dist/Editor/Elements/DataView/DataViewButton.js +2 -6
  32. package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +2 -4
  33. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +6 -21
  34. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +12 -13
  35. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +4 -7
  36. package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +5 -7
  37. package/dist/Editor/Elements/DataView/Layouts/FilterView.js +7 -9
  38. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +3 -8
  39. package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +3 -5
  40. package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +5 -6
  41. package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +3 -5
  42. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +7 -9
  43. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +12 -15
  44. package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +2 -3
  45. package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +2 -3
  46. package/dist/Editor/Elements/DataView/Layouts/Options/index.js +6 -23
  47. package/dist/Editor/Elements/DataView/Layouts/TableView.js +4 -6
  48. package/dist/Editor/Elements/DataView/Layouts/ViewData.js +4 -8
  49. package/dist/Editor/Elements/DataView/Layouts/index.js +1 -3
  50. package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +2 -5
  51. package/dist/Editor/Elements/Divider/Divider.js +3 -5
  52. package/dist/Editor/Elements/Divider/DividerButton.js +2 -6
  53. package/dist/Editor/Elements/Divider/DividerPopup.js +2 -3
  54. package/dist/Editor/Elements/Embed/Embed.js +1 -4
  55. package/dist/Editor/Elements/Embed/EmbedPopup.js +1 -4
  56. package/dist/Editor/Elements/Embed/Image.js +11 -16
  57. package/dist/Editor/Elements/Embed/Video.js +6 -9
  58. package/dist/Editor/Elements/EmbedScript/Code.js +4 -7
  59. package/dist/Editor/Elements/EmbedScript/EmbedScript.js +2 -6
  60. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +5 -8
  61. package/dist/Editor/Elements/Emoji/EmojiButton.js +2 -6
  62. package/dist/Editor/Elements/Form/FieldPopup.js +1 -4
  63. package/dist/Editor/Elements/Form/Form.js +9 -12
  64. package/dist/Editor/Elements/Form/FormButton.js +2 -6
  65. package/dist/Editor/Elements/Form/FormPopup.js +2 -3
  66. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -18
  67. package/dist/Editor/Elements/Form/Workflow/ListWorkflow.js +8 -13
  68. package/dist/Editor/Elements/Form/Workflow/MoreOptions.js +2 -3
  69. package/dist/Editor/Elements/Form/Workflow/Styles.js +22 -24
  70. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -4
  71. package/dist/Editor/Elements/Form/Workflow/index.js +9 -15
  72. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +23 -67
  73. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +6 -31
  74. package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +2 -6
  75. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +5 -38
  76. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +2 -3
  77. package/dist/Editor/Elements/FreeGrid/Options/More.js +4 -10
  78. package/dist/Editor/Elements/FreeGrid/styles.js +0 -3
  79. package/dist/Editor/Elements/Grid/Grid.js +10 -13
  80. package/dist/Editor/Elements/Grid/GridButton.js +5 -9
  81. package/dist/Editor/Elements/Grid/GridItem.js +8 -14
  82. package/dist/Editor/Elements/Grid/GridItemPopup.js +1 -4
  83. package/dist/Editor/Elements/Grid/GridPopup.js +1 -4
  84. package/dist/Editor/Elements/Grid/SectionPopup.js +1 -4
  85. package/dist/Editor/Elements/Link/Link.js +5 -8
  86. package/dist/Editor/Elements/Link/LinkButton.js +1 -4
  87. package/dist/Editor/Elements/List/CheckList.js +9 -14
  88. package/dist/Editor/Elements/NewLine/NewLineButton.js +2 -6
  89. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +1 -4
  90. package/dist/Editor/Elements/PageSettings/PageSettingsPopup.js +1 -4
  91. package/dist/Editor/Elements/Search/SearchButton.js +4 -7
  92. package/dist/Editor/Elements/Search/SearchList.js +5 -10
  93. package/dist/Editor/Elements/Signature/SignatureButton.js +2 -6
  94. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -6
  95. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +1 -4
  96. package/dist/Editor/Elements/Signature/SignaturePopup.js +16 -17
  97. package/dist/Editor/Elements/SimpleText/index.js +4 -5
  98. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  99. package/dist/Editor/Elements/Table/DragButton.js +2 -4
  100. package/dist/Editor/Elements/Table/Table.js +12 -24
  101. package/dist/Editor/Elements/Table/TablePopup.js +1 -4
  102. package/dist/Editor/Elements/Table/TableSelector.js +6 -10
  103. package/dist/Editor/Elements/Table/TableTool.js +4 -8
  104. package/dist/Editor/Elements/Title/title.js +8 -9
  105. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +1 -4
  106. package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
  107. package/dist/Editor/MiniEditor.js +3 -10
  108. package/dist/Editor/Styles/EditorStyles.js +5 -5
  109. package/dist/Editor/Toolbar/Basic/index.js +1 -2
  110. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +2 -6
  111. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
  112. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
  113. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +4 -8
  114. package/dist/Editor/Toolbar/FormatTools/TextSize.js +13 -10
  115. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +5 -17
  116. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +5 -10
  117. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +4 -10
  118. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +4 -10
  119. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +3 -9
  120. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectAlignment.js +35 -42
  121. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +13 -6
  122. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +51 -58
  123. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +22 -29
  124. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +87 -226
  125. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +10 -20
  126. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +5 -10
  127. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +11 -71
  128. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +5 -11
  129. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +42 -122
  130. package/dist/Editor/Toolbar/PopupTool/index.js +2 -18
  131. package/dist/Editor/Toolbar/Toolbar.js +10 -20
  132. package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
  133. package/dist/Editor/common/ColorPickerButton.js +14 -39
  134. package/dist/Editor/common/CustomDialog/index.js +10 -8
  135. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  136. package/dist/Editor/common/FontLoader/FontLoader.js +0 -3
  137. package/dist/Editor/common/Icon.js +0 -28
  138. package/dist/Editor/common/ImageSelector/ImageSelector.js +8 -10
  139. package/dist/Editor/common/ImageSelector/Options/AddLink.js +4 -6
  140. package/dist/Editor/common/ImageSelector/Styles.js +9 -3
  141. package/dist/Editor/common/LinkSettings/NavComponents.js +10 -14
  142. package/dist/Editor/common/LinkSettings/index.js +14 -20
  143. package/dist/Editor/common/LinkSettings/navOptions.js +1 -1
  144. package/dist/Editor/common/MUIIcon/index.js +3 -0
  145. package/dist/Editor/common/MentionsPopup/index.js +2 -6
  146. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +22 -46
  147. package/dist/Editor/common/RnD/ContextMenu/index.js +2 -3
  148. package/dist/Editor/common/RnD/ElementOptions/index.js +2 -7
  149. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +3 -8
  150. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +3 -7
  151. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  152. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  153. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  154. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  155. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -7
  156. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +2 -3
  157. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  158. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +2 -6
  159. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +2 -3
  160. package/dist/Editor/common/RnD/OptionsPopup/index.js +3 -4
  161. package/dist/Editor/common/RnD/ShadowElement.js +1 -2
  162. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +4 -11
  163. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  164. package/dist/Editor/common/RnD/Utils/gridDropItem.js +8 -55
  165. package/dist/Editor/common/RnD/Utils/index.js +0 -3
  166. package/dist/Editor/common/RnD/VirtualElement/index.js +103 -187
  167. package/dist/Editor/common/RnD/VirtualElement/styles.js +7 -151
  168. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +3 -5
  169. package/dist/Editor/common/RnD/index.js +13 -64
  170. package/dist/Editor/common/Section/index.js +4 -7
  171. package/dist/Editor/common/Shorthands/elements.js +3 -74
  172. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +4 -4
  173. package/dist/Editor/common/StyleBuilder/boxStyle.js +2 -2
  174. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -6
  175. package/dist/Editor/common/StyleBuilder/dividerStyles.js +2 -2
  176. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +6 -6
  177. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -2
  178. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +9 -13
  179. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +3 -11
  180. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +5 -19
  181. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +10 -22
  182. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +3 -6
  183. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +13 -27
  184. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +14 -43
  185. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +6 -10
  186. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +6 -19
  187. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +2 -6
  188. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +2 -5
  189. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +6 -9
  190. package/dist/Editor/common/StyleBuilder/fieldTypes/metaDataMapping.js +2 -8
  191. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +11 -12
  192. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +2 -6
  193. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -8
  194. package/dist/Editor/common/StyleBuilder/fieldTypes/textAlign.js +2 -6
  195. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +12 -21
  196. package/dist/Editor/common/StyleBuilder/formStyle.js +7 -7
  197. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +6 -6
  198. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -5
  199. package/dist/Editor/common/StyleBuilder/index.js +5 -8
  200. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +7 -5
  201. package/dist/Editor/common/SwipeableDrawer/index.js +1 -1
  202. package/dist/Editor/common/Uploader.js +5 -16
  203. package/dist/Editor/commonStyle.js +57 -68
  204. package/dist/Editor/helper/index.js +3 -27
  205. package/dist/Editor/helper/theme.js +2 -202
  206. package/dist/Editor/hooks/useMouseMove.js +3 -9
  207. package/dist/Editor/plugins/withEmbeds.js +1 -1
  208. package/dist/Editor/plugins/withHTML.js +9 -11
  209. package/dist/Editor/plugins/withLayout.js +2 -3
  210. package/dist/Editor/plugins/withLinks.js +0 -9
  211. package/dist/Editor/plugins/withTable.js +1 -1
  212. package/dist/Editor/theme/ThemeList.js +173 -50
  213. package/dist/Editor/utils/SlateUtilityFunctions.js +50 -178
  214. package/dist/Editor/utils/draftToSlate.js +2 -3
  215. package/dist/Editor/utils/font.js +37 -40
  216. package/dist/Editor/utils/freegrid.js +3 -3
  217. package/dist/Editor/utils/helper.js +21 -92
  218. package/package.json +2 -2
  219. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -425
  220. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -436
  221. package/dist/Editor/assets/svg/ClearAllRounded.js +0 -31
  222. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  223. package/dist/Editor/common/CustomColorPicker/index.js +0 -131
  224. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  225. package/dist/Editor/common/CustomDialog2/index.js +0 -94
  226. package/dist/Editor/common/CustomDialog2/style.js +0 -67
  227. package/dist/Editor/common/CustomSelect.js +0 -43
  228. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  229. package/dist/Editor/common/RnD/VirtualElement/BoxHeaderAutoAlignment.js +0 -43
  230. package/dist/Editor/common/RnD/VirtualElement/ForceAutoAlignment.js +0 -44
  231. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +0 -134
  232. package/dist/Editor/common/RnD/VirtualElement/helper.js +0 -375
  233. package/dist/Editor/common/SnackBar/index.js +0 -43
  234. package/dist/Editor/helper/textIndeces.js +0 -58
  235. package/dist/Editor/hooks/useAutoScroll.js +0 -38
  236. package/dist/Editor/hooks/useEditorTheme.js +0 -153
  237. package/dist/Editor/hooks/useThemeValues.js +0 -63
  238. package/dist/Editor/theme/index.js +0 -149
  239. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  240. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  241. package/dist/Editor/themeSettings/buttons/style.js +0 -23
  242. package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
  243. package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
  244. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  245. package/dist/Editor/themeSettings/fonts/index.js +0 -240
  246. package/dist/Editor/themeSettings/fonts/style.js +0 -61
  247. package/dist/Editor/themeSettings/icons.js +0 -60
  248. package/dist/Editor/themeSettings/index.js +0 -351
  249. package/dist/Editor/themeSettings/style.js +0 -220
  250. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  251. package/dist/Editor/themeSettingsAI/index.js +0 -355
  252. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -205
  253. package/dist/Editor/themeSettingsAI/style.js +0 -259
@@ -2,7 +2,6 @@ import { Editor, Node, Transforms, Element, Path, Range, Text } from "slate";
2
2
  import { ReactEditor } from "slate-react";
3
3
  import insertNewLine from "./insertNewLine";
4
4
  import { getDevice } from "../helper/theme";
5
- import { activeMark, getSelectedElementStyle } from "./SlateUtilityFunctions";
6
5
  export const windowVar = {};
7
6
  let ST_TIMEOUT = null;
8
7
  const BLOCKS = ["grid", "dataView"];
@@ -169,11 +168,11 @@ export const handleInsertLastElement = (event, editor) => {
169
168
  }
170
169
  const hasPath = event.target.dataset.path;
171
170
  const lastElement = editor.children[editor.children?.length - 1];
172
- const isFreeGrid = lastElement?.type === "freegrid" || lastElement?.children?.[0]?.type === "freegrid";
171
+ const isFreeGrid = lastElement?.type === "freegrid" || lastElement?.children[0]?.type === "freegrid";
173
172
  if (isFreeGrid) {
174
173
  return;
175
174
  }
176
- const isLastElementEmpty = lastElement && lastElement.type === "paragraph" && !lastElement.children[0]?.text && !lastElement.children?.some(c => BLOCKS.includes(c.type));
175
+ const isLastElementEmpty = lastElement.type === "paragraph" && !lastElement.children[0]?.text && !lastElement.children?.some(c => BLOCKS.includes(c.type));
177
176
  if (!ReactEditor.isFocused(editor)) {
178
177
  if (isLastElementEmpty) {
179
178
  if (hasPath) {
@@ -481,34 +480,6 @@ export const decodeString = str => {
481
480
  console.log(err);
482
481
  }
483
482
  };
484
- export const getContrastColor = color => {
485
- let r, g, b;
486
-
487
- // Check if the color is in hex format
488
- if (color.startsWith("#")) {
489
- r = parseInt(color.substring(1, 3), 16);
490
- g = parseInt(color.substring(3, 5), 16);
491
- b = parseInt(color.substring(5, 7), 16);
492
- }
493
- // Check if the color is in RGB/RGBA format
494
- else if (color.startsWith("rgb")) {
495
- const rgbValues = color.replace(/^rgba?\(|\s+|\)$/g, "") // Remove the rgb/rgba and spaces
496
- .split(","); // Split the values into an array
497
-
498
- r = parseInt(rgbValues[0]);
499
- g = parseInt(rgbValues[1]);
500
- b = parseInt(rgbValues[2]);
501
- } else {
502
- // If the format is not recognized, default to black text
503
- return "#000000";
504
- }
505
-
506
- // Calculate relative luminance
507
- const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
508
-
509
- // Return black for light colors, white for dark colors
510
- return luminance > 0.5 ? "#000000" : "#FFFFFF";
511
- };
512
483
  export const onDeleteKey = (event, {
513
484
  editor
514
485
  }) => {
@@ -726,10 +697,6 @@ export const isRestrictedNode = (event, editor) => {
726
697
  return isNodeRestricted;
727
698
  }
728
699
  };
729
- export function capitalizeFirstLetter(str) {
730
- if (!str) return str;
731
- return str.charAt(0).toUpperCase() + str.slice(1);
732
- }
733
700
  export const insertLineBreakAtEndOfPath = (editor, path) => {
734
701
  try {
735
702
  const [node, nodePath] = Editor.node(editor, path); // Get the node at the specified path
@@ -748,13 +715,6 @@ export const insertLineBreakAtEndOfPath = (editor, path) => {
748
715
  console.log(err);
749
716
  }
750
717
  };
751
- export function isHavingSelection(editor) {
752
- try {
753
- return editor?.selection && !Range.isCollapsed(editor.selection);
754
- } catch (err) {
755
- console.log(err);
756
- }
757
- }
758
718
  const omitNodes = ["site-settings", "page-settings"];
759
719
  export function getInitialValue(value = [], readOnly) {
760
720
  if (readOnly === "readonly" && value?.length) {
@@ -785,17 +745,20 @@ export function getInitialValue(value = [], readOnly) {
785
745
  }
786
746
  return value;
787
747
  }
748
+ export function capitalizeFirstLetter(str) {
749
+ if (!str) return str;
750
+ return str.charAt(0).toUpperCase() + str.slice(1);
751
+ }
752
+ export function isHavingSelection(editor) {
753
+ try {
754
+ return editor?.selection && !Range.isCollapsed(editor.selection);
755
+ } catch (err) {
756
+ console.log(err);
757
+ }
758
+ }
788
759
  export function getSelectedCls(defaultCls = "", selected, selectedClsName = "selected") {
789
760
  return `${defaultCls} ${selected ? selectedClsName : ""}`;
790
761
  }
791
- export function handleNegativeInteger(val) {
792
- return val < 0 ? 0 : val;
793
- }
794
- export const containsSurrogatePair = text => {
795
- // Match surrogate pairs (high and low surrogate)
796
- const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
797
- return surrogatePairRegex.test(text);
798
- };
799
762
  export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
800
763
  try {
801
764
  const options = {
@@ -809,6 +772,11 @@ export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
809
772
  return [];
810
773
  }
811
774
  };
775
+ export const containsSurrogatePair = text => {
776
+ // Match surrogate pairs (high and low surrogate)
777
+ const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
778
+ return surrogatePairRegex.test(text);
779
+ };
812
780
  export const getSlateDom = (editor, range) => {
813
781
  try {
814
782
  const slateDom = ReactEditor.toDOMRange(editor, range);
@@ -858,6 +826,9 @@ export const hideSlateSelection = () => {
858
826
  const root = document.documentElement;
859
827
  root.style.setProperty("--slate-highlight-bg", "none");
860
828
  };
829
+ export function handleNegativeInteger(val) {
830
+ return val < 0 ? 0 : val;
831
+ }
861
832
  export const isEverythingSelected = editor => {
862
833
  const {
863
834
  selection
@@ -887,46 +858,4 @@ export const getCurrentNodeText = editor => {
887
858
  } catch (error) {
888
859
  console.log("Error:", error);
889
860
  }
890
- };
891
- function convertColorToRgb(color) {
892
- if (color?.startsWith("#")) {
893
- // HEX to RGB
894
- let hex = color.replace("#", "");
895
- let r, g, b;
896
- if (hex.length === 3) {
897
- hex = hex.split("").map(x => x + x).join("");
898
- }
899
- if (hex.length === 6) {
900
- [r, g, b] = [hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6)].map(val => parseInt(val, 16));
901
- return `rgb(${r}, ${g}, ${b})`;
902
- }
903
- } else {
904
- return color;
905
- }
906
- }
907
- export const getSelectedColor = (selectedColor, theme) => {
908
- const colorVars = theme?.vars?.colors;
909
- let selectedValue = selectedColor;
910
- if (colorVars) {
911
- const convertedColor = convertColorToRgb(selectedColor);
912
- Object.entries(theme.colors).forEach(([key, value]) => {
913
- const convertedThemeColor = convertColorToRgb(value);
914
- if (convertedThemeColor === convertedColor) {
915
- selectedValue = colorVars[key];
916
- }
917
- });
918
- }
919
- return selectedValue;
920
- };
921
- const themeTextFormats = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
922
- export const getSelectedElementColor = (editor, format, theme) => {
923
- const [isThemeText] = Editor.nodes(editor, {
924
- at: editor.selection,
925
- match: n => themeTextFormats.includes(n?.type)
926
- });
927
- if (!isThemeText) {
928
- return activeMark(editor, "color") || "#000000";
929
- }
930
- const color = getSelectedElementStyle(format, editor, format);
931
- return getSelectedColor(color, theme);
932
861
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "9.7.7",
3
+ "version": "9.7.8",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -69,7 +69,7 @@
69
69
  "storybook": "storybook dev -p 6006",
70
70
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
71
71
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
72
- "publish:local": "rm -rf /Users/agenciflow08/Documents/flozyapp/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agenciflow08/Documents/flozyapp/client/node_modules/@flozy/editor/dist --copy-files",
72
+ "publish:local": "rm -rf /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist --copy-files",
73
73
  "publish:flozy": "./publish-flozy.sh",
74
74
  "publish:flozy2": "./publish-flozy2.sh",
75
75
  "publish:permission": "chmod +x publish-flozy.sh && chmod +x publish-flozy2.sh"
@@ -1,425 +0,0 @@
1
- import React, { useEffect, useState } from "react";
2
- import { Autocomplete, Box, Chip, Divider, Popover, TextField, Typography, List, ListItem, ListItemButton, IconButton, SwipeableDrawer, Tooltip } from "@mui/material";
3
- import { CloseIcon } from "../../../../../common/iconslist";
4
- import { useEditorContext } from "../../../../../hooks/useMouseMove";
5
- import Icon from "../../../../../common/Icon";
6
- import { colors } from "../../../../Color Picker/defaultColors";
7
- import PropertySettings from "../../Options";
8
- import SnackbarAlert from "../../../../../common/SnackBar";
9
- import ClearAllRounded from "../../../../../assets/svg/ClearAllRounded";
10
- import { jsx as _jsx } from "react/jsx-runtime";
11
- import { jsxs as _jsxs } from "react/jsx-runtime";
12
- const EXCLUDED_COLORS = new Set(["#000000", "#0F172A", "#2563EB", "#FFFFFF", "#64748B"]);
13
- const DEFAULT_COLORS = colors?.filter(f => !f?.includes("linear") && !EXCLUDED_COLORS?.has(f));
14
- const generateRandomColor = () => {
15
- const randomIndex = Math.floor(Math.random() * DEFAULT_COLORS?.length);
16
- return DEFAULT_COLORS[randomIndex];
17
- };
18
- const MultiSelectWithPopover = props => {
19
- const {
20
- options = [],
21
- value,
22
- onChange,
23
- onUpdate,
24
- property,
25
- wrapColumn = false,
26
- translation
27
- } = props;
28
- const [anchorEl, setAnchorEl] = useState(null);
29
- const [anchorElOption, setAnchorElOption] = useState(null);
30
- const [currentIndex, setCurrentIndex] = useState(null);
31
- const [selectedOptions, setSelectedOptions] = useState(value);
32
- const [availableOptions, setAvailableOptions] = useState(options);
33
- const [showSnackBar, setShowSnackBar] = useState(false);
34
- const [chipColor, setChipColor] = useState(generateRandomColor());
35
- const [inputValue, setInputValue] = useState("");
36
- const {
37
- theme
38
- } = useEditorContext();
39
- const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
40
- const PopoverComponent = isMobile ? SwipeableDrawer : Popover;
41
- const mode = {
42
- type: "editOptionMulti",
43
- edit: {
44
- label: "Multi Select",
45
- visible: true,
46
- key: property,
47
- type: "multi-select",
48
- options: options || [],
49
- optionIndex: currentIndex,
50
- hideBackButton: true
51
- }
52
- };
53
- const customScrollStyles = {
54
- scrollbarWidth: "thin",
55
- scrollbarColor: `${theme?.palette?.editor?.brainPopupScroll} transparent`,
56
- "&::-webkit-scrollbar": {
57
- width: "6px"
58
- },
59
- "&::-webkit-scrollbar-thumb": {
60
- backgroundColor: theme?.palette?.editor?.brainPopupScroll,
61
- borderRadius: "3px"
62
- },
63
- "&::-webkit-scrollbar-track": {
64
- display: "none"
65
- }
66
- };
67
- useEffect(() => {
68
- if (inputValue?.trim()) {
69
- setChipColor(prevColor => prevColor || generateRandomColor());
70
- } else {
71
- setChipColor(generateRandomColor());
72
- }
73
- }, [inputValue]);
74
- useEffect(() => {
75
- setAvailableOptions(options);
76
- }, [options]);
77
- const handleOpenPopover = event => {
78
- setAnchorEl(event.currentTarget);
79
- };
80
- const handleClosePopover = () => {
81
- setAnchorEl(null);
82
- };
83
- const handleAddOption = newValue => {
84
- const trimmedValue = newValue?.trim();
85
- if (!trimmedValue) return;
86
- const newOption = {
87
- value: trimmedValue,
88
- color: chipColor
89
- };
90
- if (!availableOptions?.some(opt => opt?.value === trimmedValue)) {
91
- setAvailableOptions(prev => [...prev, newOption]);
92
- setSelectedOptions(prev => [...prev, newOption]);
93
- onUpdate([newOption, ...availableOptions]);
94
- }
95
- setInputValue("");
96
- };
97
- const onClose = () => {
98
- setAnchorEl(anchorElOption);
99
- setAnchorElOption(null);
100
- };
101
- const onEditOption = (type, data) => {
102
- const updateData = data?.edit ? data?.edit?.options : data?.options;
103
- onUpdate(updateData);
104
- if (data?.edit?.options) {
105
- const updatedSelectedOptions = selectedOptions?.filter(selOption => updateData?.some(availOption => availOption?.value === selOption?.value && availOption?.color === selOption?.color));
106
- setSelectedOptions(updatedSelectedOptions);
107
- onClose();
108
- }
109
- };
110
- const handleEditOption = (e, index) => {
111
- e.stopPropagation();
112
- setCurrentIndex(index);
113
- setAnchorElOption(anchorEl);
114
- setAnchorEl(null);
115
- };
116
- const handleSelectOption = option => {
117
- if (!selectedOptions?.some(opt => opt?.value === option?.value)) {
118
- setSelectedOptions(prev => [...prev, option]);
119
- onChange(selectedOptions);
120
- } else {
121
- setShowSnackBar(true);
122
- }
123
- };
124
- const handleClearSelection = () => {
125
- setSelectedOptions([]);
126
- };
127
- const filteredOptions = availableOptions?.filter(option => option?.value?.toLowerCase()?.includes(inputValue?.toLowerCase()));
128
- const isExactMatch = availableOptions?.some(opt => opt?.value?.toLowerCase() === inputValue?.toLowerCase());
129
- const open = Boolean(anchorEl);
130
- const openEditOption = Boolean(anchorElOption);
131
- const id = open ? "autocomplete-popover" : undefined;
132
- return /*#__PURE__*/_jsxs("div", {
133
- children: [/*#__PURE__*/_jsx(Box, {
134
- sx: {
135
- display: "flex",
136
- flexWrap: wrapColumn ? "wrap" : "nowrap",
137
- overflowX: wrapColumn ? "hidden" : "auto",
138
- gap: 0.5,
139
- padding: "8px",
140
- cursor: "pointer"
141
- },
142
- onClick: handleOpenPopover,
143
- children: selectedOptions?.map((option, index) => /*#__PURE__*/_jsx(Chip, {
144
- label: option?.value,
145
- onDelete: event => {
146
- event.stopPropagation();
147
- setSelectedOptions(prev => prev.filter(selected => selected?.value !== option?.value));
148
- },
149
- deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
150
- variant: "filled",
151
- sx: {
152
- backgroundColor: option?.color,
153
- color: '#0F172A',
154
- "& .MuiChip-deleteIcon": {
155
- flexShrink: 0,
156
- "& path": {
157
- stroke: '#0F172A'
158
- }
159
- },
160
- "&:hover": {
161
- opacity: 0.8
162
- }
163
- }
164
- }, index))
165
- }), /*#__PURE__*/_jsx(PopoverComponent, {
166
- id: id,
167
- open: open,
168
- anchorEl: anchorEl,
169
- anchor: "bottom",
170
- onClose: handleClosePopover,
171
- anchorOrigin: {
172
- vertical: "top",
173
- horizontal: "left"
174
- },
175
- transformOrigin: {
176
- vertical: "top",
177
- horizontal: "left"
178
- },
179
- sx: {
180
- "& .MuiPaper-root": {
181
- borderRadius: "20px",
182
- background: theme?.palette?.editor?.textFormatBgColor,
183
- border: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
184
- boxShadow: "0px 4px 10px 0px #00000029"
185
- }
186
- },
187
- children: /*#__PURE__*/_jsxs(Box, {
188
- sx: {
189
- width: isMobile ? "100%" : 300
190
- },
191
- children: [/*#__PURE__*/_jsx(Autocomplete, {
192
- multiple: true,
193
- freeSolo: true,
194
- disablePortal: true,
195
- PopperComponent: () => null,
196
- sx: {
197
- "& .MuiFormControl-root": {
198
- maxHeight: "250px",
199
- overflowY: "auto",
200
- overflowX: "hidden",
201
- pr: '12px',
202
- pl: '12px',
203
- maxWidth: isMobile ? "100%" : "275px",
204
- marginTop: '12px',
205
- ...customScrollStyles
206
- }
207
- },
208
- disableClearable: true,
209
- options: [],
210
- getOptionLabel: option => options?.value || "",
211
- value: selectedOptions,
212
- onChange: (event, newValues) => {
213
- const addedOptions = newValues?.filter(value => typeof value === "object" || typeof value === "string" && value?.trim() !== "")?.map(value => typeof value === "string" ? {
214
- value,
215
- color: chipColor
216
- } : value);
217
- const isDuplicate = addedOptions?.some(newOpt => (selectedOptions || [])?.some(opt => opt.value === newOpt.value));
218
- if (!isDuplicate) {
219
- setSelectedOptions([...selectedOptions, ...addedOptions]);
220
- }
221
- },
222
- inputValue: inputValue,
223
- onInputChange: (event, newInputValue) => setInputValue(newInputValue),
224
- onKeyDown: event => {
225
- if (event.key === "Enter" && inputValue.trim()) {
226
- event.preventDefault();
227
- handleAddOption(inputValue);
228
- }
229
- },
230
- filterOptions: (options, params) => options?.filter(option => option?.value?.toLowerCase()?.includes(params?.inputValue?.toLowerCase())),
231
- renderInput: params => /*#__PURE__*/_jsx(TextField, {
232
- ...params,
233
- variant: "standard",
234
- InputProps: {
235
- ...params.InputProps,
236
- disableUnderline: true,
237
- sx: {
238
- display: "flex",
239
- flexWrap: "wrap",
240
- fontFamily: "Inter",
241
- fontWeight: 400,
242
- fontSize: "12px",
243
- color: theme?.palette?.editor?.secondaryTextColor,
244
- "&::placeholder": {
245
- color: theme?.palette?.editor?.secondaryTextColor
246
- },
247
- "& .MuiAutocomplete-input": {
248
- minWidth: "100px !important"
249
- }
250
- },
251
- endAdornment: /*#__PURE__*/_jsx(Tooltip, {
252
- arrow: true,
253
- title: "Clear Selected",
254
- children: /*#__PURE__*/_jsx(IconButton, {
255
- onClick: handleClearSelection,
256
- sx: {
257
- padding: 0,
258
- minWidth: "unset",
259
- "& .MuiSvgIcon-root": {
260
- fontSize: 20
261
- },
262
- '& rect': {
263
- fill: theme?.palette?.editor?.closeButtonSvgStroke
264
- },
265
- '&:hover': {
266
- backgroundColor: 'transparent'
267
- }
268
- },
269
- children: /*#__PURE__*/_jsx(ClearAllRounded, {})
270
- })
271
- })
272
- },
273
- sx: {
274
- backgroundColor: "transparent",
275
- fontFamily: 'Inter',
276
- fontWeight: 400,
277
- fontSize: '12px'
278
- },
279
- placeholder: "Create new one..."
280
- }),
281
- renderTags: (tagValues, getTagProps) => tagValues.map((option, index) => /*#__PURE__*/_jsx(Chip, {
282
- variant: "filled",
283
- label: option?.value,
284
- ...getTagProps({
285
- index
286
- }),
287
- onDelete: event => {
288
- event.stopPropagation();
289
- setSelectedOptions(prev => prev.filter(selected => selected?.value !== option?.value));
290
- },
291
- deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
292
- sx: {
293
- backgroundColor: option?.color,
294
- color: '#0F172A',
295
- "& .MuiChip-deleteIcon": {
296
- flexShrink: 0,
297
- "& path": {
298
- stroke: '#0F172A'
299
- }
300
- },
301
- "&:hover": {
302
- opacity: 0.8
303
- }
304
- }
305
- }, index))
306
- }), /*#__PURE__*/_jsx(Divider, {
307
- sx: {
308
- mt: '12px',
309
- borderBottom: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
310
- boxShadow: theme?.palette?.editor?.dividerDropShadow
311
- }
312
- }), /*#__PURE__*/_jsx(Box, {
313
- sx: {
314
- pl: '4px'
315
- },
316
- children: /*#__PURE__*/_jsxs(List, {
317
- sx: {
318
- maxHeight: "250px",
319
- overflowY: "auto",
320
- ...customScrollStyles
321
- },
322
- children: [/*#__PURE__*/_jsx(Typography, {
323
- sx: {
324
- mb: 1,
325
- pl: '8px',
326
- color: theme?.palette?.editor?.secondaryTextColor,
327
- fontFamily: 'Inter',
328
- fontWeight: 400,
329
- fontSize: '12px'
330
- },
331
- children: "Choose an option or create one"
332
- }), filteredOptions?.map((option, index) => /*#__PURE__*/_jsx(ListItem, {
333
- disablePadding: true,
334
- children: /*#__PURE__*/_jsxs(ListItemButton, {
335
- onClick: () => handleSelectOption(option),
336
- sx: {
337
- justifyContent: 'space-between',
338
- '&:hover': {
339
- '& path': {
340
- stroke: theme?.palette?.editor?.activeColor
341
- },
342
- borderRadius: '12px'
343
- }
344
- },
345
- children: [/*#__PURE__*/_jsx(Chip, {
346
- label: option?.value,
347
- sx: {
348
- backgroundColor: option?.color,
349
- color: '#0F172A',
350
- fontWeight: 500,
351
- fontSize: "12px",
352
- fontFamily: "Inter",
353
- padding: "4px 12px",
354
- borderRadius: "16px",
355
- maxWidth: "180px",
356
- whiteSpace: "nowrap",
357
- overflow: "hidden",
358
- textOverflow: "ellipsis"
359
- }
360
- }), /*#__PURE__*/_jsx(IconButton, {
361
- size: "small",
362
- sx: {
363
- '& path': {
364
- stroke: theme?.palette?.editor?.closeButtonSvgStroke
365
- },
366
- '&:hover': {
367
- backgroundColor: 'transparent'
368
- }
369
- },
370
- onClick: e => handleEditOption(e, index),
371
- children: /*#__PURE__*/_jsx(Icon, {
372
- icon: "rightArrow"
373
- })
374
- })]
375
- })
376
- }, index)), inputValue?.trim() && !isExactMatch && /*#__PURE__*/_jsx(ListItem, {
377
- disablePadding: true,
378
- children: /*#__PURE__*/_jsxs(ListItemButton, {
379
- onClick: () => handleAddOption(inputValue),
380
- sx: {
381
- display: "flex",
382
- alignItems: "center"
383
- },
384
- children: [/*#__PURE__*/_jsx(Typography, {
385
- sx: {
386
- color: theme?.palette?.editor?.secondaryTextColor,
387
- marginRight: "6px",
388
- fontSize: "14px",
389
- fontFamily: "Inter"
390
- },
391
- children: "Create"
392
- }), /*#__PURE__*/_jsx(Chip, {
393
- label: `${inputValue}`,
394
- sx: {
395
- backgroundColor: chipColor,
396
- color: '#0F172A',
397
- fontWeight: 500,
398
- fontSize: "12px",
399
- fontFamily: "Inter",
400
- borderRadius: "16px",
401
- maxWidth: "180px",
402
- whiteSpace: "nowrap",
403
- overflow: "hidden",
404
- textOverflow: "ellipsis"
405
- }
406
- })]
407
- })
408
- })]
409
- })
410
- })]
411
- })
412
- }), openEditOption ? /*#__PURE__*/_jsx(PropertySettings, {
413
- open: openEditOption,
414
- anchorEl: anchorElOption,
415
- mode: mode,
416
- onClose: onClose,
417
- onEvent: onEditOption,
418
- translation: translation
419
- }) : null, showSnackBar ? /*#__PURE__*/_jsx(SnackbarAlert, {
420
- message: "Option already selected!",
421
- setShowSnackBar: setShowSnackBar
422
- }) : null]
423
- });
424
- };
425
- export default MultiSelectWithPopover;