@flozy/editor 9.6.9 → 9.7.1

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 (257) hide show
  1. package/dist/Editor/ChatEditor.js +49 -41
  2. package/dist/Editor/CommonEditor.js +25 -139
  3. package/dist/Editor/DialogWrapper.js +25 -31
  4. package/dist/Editor/Editor.css +9 -13
  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 +2 -4
  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 +9 -14
  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 +3 -7
  93. package/dist/Editor/Elements/Signature/SignatureButton.js +2 -6
  94. package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +8 -2
  95. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -6
  96. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +1 -4
  97. package/dist/Editor/Elements/Signature/SignaturePopup.js +16 -17
  98. package/dist/Editor/Elements/SimpleText/index.js +4 -5
  99. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  100. package/dist/Editor/Elements/Table/DragButton.js +2 -4
  101. package/dist/Editor/Elements/Table/Table.js +12 -24
  102. package/dist/Editor/Elements/Table/TablePopup.js +1 -4
  103. package/dist/Editor/Elements/Table/TableSelector.js +6 -10
  104. package/dist/Editor/Elements/Table/TableTool.js +4 -8
  105. package/dist/Editor/Elements/Title/title.js +10 -14
  106. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +1 -4
  107. package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
  108. package/dist/Editor/MiniEditor.js +3 -10
  109. package/dist/Editor/Styles/EditorStyles.js +5 -5
  110. package/dist/Editor/Toolbar/Basic/index.js +1 -2
  111. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +2 -6
  112. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
  113. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
  114. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +4 -8
  115. package/dist/Editor/Toolbar/FormatTools/TextSize.js +13 -10
  116. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +5 -17
  117. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +5 -10
  118. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +4 -10
  119. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +4 -10
  120. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +3 -9
  121. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectAlignment.js +35 -42
  122. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +13 -6
  123. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +51 -58
  124. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +22 -29
  125. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +87 -226
  126. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +10 -20
  127. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +5 -10
  128. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +11 -71
  129. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +5 -11
  130. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +45 -128
  131. package/dist/Editor/Toolbar/PopupTool/index.js +10 -20
  132. package/dist/Editor/Toolbar/Toolbar.js +10 -20
  133. package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
  134. package/dist/Editor/common/ColorPickerButton.js +14 -39
  135. package/dist/Editor/common/CustomDialog/index.js +10 -8
  136. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  137. package/dist/Editor/common/FontLoader/FontLoader.js +0 -3
  138. package/dist/Editor/common/Icon.js +0 -28
  139. package/dist/Editor/common/ImageSelector/ImageSelector.js +8 -10
  140. package/dist/Editor/common/ImageSelector/Options/AddLink.js +4 -6
  141. package/dist/Editor/common/ImageSelector/Options/Upload.js +1 -1
  142. package/dist/Editor/common/ImageSelector/Styles.js +9 -3
  143. package/dist/Editor/common/ImageSelector/UploadStyles.js +9 -9
  144. package/dist/Editor/common/LinkSettings/NavComponents.js +10 -14
  145. package/dist/Editor/common/LinkSettings/index.js +14 -20
  146. package/dist/Editor/common/LinkSettings/navOptions.js +1 -1
  147. package/dist/Editor/common/MUIIcon/index.js +3 -0
  148. package/dist/Editor/common/MentionsPopup/index.js +2 -6
  149. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +22 -22
  150. package/dist/Editor/common/RnD/ContextMenu/index.js +2 -3
  151. package/dist/Editor/common/RnD/ElementOptions/index.js +2 -7
  152. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +3 -8
  153. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +3 -7
  154. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  155. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  156. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  157. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  158. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -7
  159. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +2 -3
  160. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  161. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +2 -6
  162. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +2 -3
  163. package/dist/Editor/common/RnD/ElementSettings/styles.js +1 -0
  164. package/dist/Editor/common/RnD/OptionsPopup/index.js +3 -4
  165. package/dist/Editor/common/RnD/ShadowElement.js +1 -2
  166. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +4 -11
  167. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  168. package/dist/Editor/common/RnD/Utils/gridDropItem.js +8 -55
  169. package/dist/Editor/common/RnD/Utils/index.js +0 -3
  170. package/dist/Editor/common/RnD/VirtualElement/index.js +103 -187
  171. package/dist/Editor/common/RnD/VirtualElement/styles.js +7 -151
  172. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +3 -5
  173. package/dist/Editor/common/RnD/index.js +13 -64
  174. package/dist/Editor/common/Section/index.js +4 -7
  175. package/dist/Editor/common/Shorthands/elements.js +3 -74
  176. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +4 -4
  177. package/dist/Editor/common/StyleBuilder/boxStyle.js +2 -2
  178. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -6
  179. package/dist/Editor/common/StyleBuilder/dividerStyles.js +2 -2
  180. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +6 -6
  181. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -2
  182. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +9 -13
  183. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +3 -11
  184. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +5 -19
  185. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +10 -22
  186. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +3 -6
  187. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +13 -27
  188. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +14 -43
  189. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +6 -10
  190. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +6 -19
  191. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +2 -6
  192. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +2 -5
  193. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +6 -9
  194. package/dist/Editor/common/StyleBuilder/fieldTypes/metaDataMapping.js +2 -8
  195. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +11 -12
  196. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +2 -6
  197. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -8
  198. package/dist/Editor/common/StyleBuilder/fieldTypes/textAlign.js +2 -6
  199. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +12 -21
  200. package/dist/Editor/common/StyleBuilder/formStyle.js +7 -7
  201. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +6 -6
  202. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -5
  203. package/dist/Editor/common/StyleBuilder/index.js +5 -8
  204. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +7 -5
  205. package/dist/Editor/common/Uploader.js +5 -16
  206. package/dist/Editor/commonStyle.js +12 -23
  207. package/dist/Editor/helper/index.js +3 -27
  208. package/dist/Editor/helper/theme.js +2 -202
  209. package/dist/Editor/hooks/useDrag.js +1 -1
  210. package/dist/Editor/hooks/useEditorScroll.js +1 -0
  211. package/dist/Editor/hooks/useMouseMove.js +3 -9
  212. package/dist/Editor/plugins/withEmbeds.js +1 -1
  213. package/dist/Editor/plugins/withHTML.js +9 -11
  214. package/dist/Editor/plugins/withLayout.js +2 -3
  215. package/dist/Editor/plugins/withTable.js +1 -1
  216. package/dist/Editor/theme/ThemeList.js +173 -50
  217. package/dist/Editor/utils/SlateUtilityFunctions.js +60 -201
  218. package/dist/Editor/utils/draftToSlate.js +2 -3
  219. package/dist/Editor/utils/font.js +37 -40
  220. package/dist/Editor/utils/freegrid.js +3 -3
  221. package/dist/Editor/utils/helper.js +21 -92
  222. package/package.json +3 -3
  223. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -425
  224. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -436
  225. package/dist/Editor/assets/svg/ClearAllRounded.js +0 -31
  226. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  227. package/dist/Editor/common/CustomColorPicker/index.js +0 -131
  228. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  229. package/dist/Editor/common/CustomDialog2/index.js +0 -94
  230. package/dist/Editor/common/CustomDialog2/style.js +0 -67
  231. package/dist/Editor/common/CustomSelect.js +0 -43
  232. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  233. package/dist/Editor/common/RnD/VirtualElement/BoxHeaderAutoAlignment.js +0 -43
  234. package/dist/Editor/common/RnD/VirtualElement/ForceAutoAlignment.js +0 -44
  235. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +0 -134
  236. package/dist/Editor/common/RnD/VirtualElement/helper.js +0 -375
  237. package/dist/Editor/common/SnackBar/index.js +0 -43
  238. package/dist/Editor/helper/textIndeces.js +0 -58
  239. package/dist/Editor/hooks/useAutoScroll.js +0 -38
  240. package/dist/Editor/hooks/useEditorTheme.js +0 -153
  241. package/dist/Editor/hooks/useThemeValues.js +0 -63
  242. package/dist/Editor/theme/index.js +0 -149
  243. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  244. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  245. package/dist/Editor/themeSettings/buttons/style.js +0 -23
  246. package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
  247. package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
  248. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  249. package/dist/Editor/themeSettings/fonts/index.js +0 -240
  250. package/dist/Editor/themeSettings/fonts/style.js +0 -61
  251. package/dist/Editor/themeSettings/icons.js +0 -60
  252. package/dist/Editor/themeSettings/index.js +0 -351
  253. package/dist/Editor/themeSettings/style.js +0 -220
  254. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  255. package/dist/Editor/themeSettingsAI/index.js +0 -355
  256. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -205
  257. 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.6.9",
3
+ "version": "9.7.1",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -61,7 +61,7 @@
61
61
  "scripts": {
62
62
  "prepare": "husky install .husky",
63
63
  "analyze": "source-map-explorer build/static/js/*.js",
64
- "lint": "./node_modules/.bin/eslint --ignore-path .gitignore .",
64
+ "lint": "./node_modules/. bin/eslint --ignore-path .gitignore .",
65
65
  "start": "craco start",
66
66
  "build": "NODE_OPTIONS='--max_old_space_size=4096' craco build",
67
67
  "test": "craco test --passWithNoTests",
@@ -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;