@flozy/editor 9.8.2 → 9.8.3

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 (255) 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 +6 -54
  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/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 +8 -9
  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 +42 -122
  131. package/dist/Editor/Toolbar/PopupTool/index.js +2 -18
  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 +1 -31
  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/Styles.js +9 -3
  142. package/dist/Editor/common/LinkSettings/NavComponents.js +10 -14
  143. package/dist/Editor/common/LinkSettings/index.js +14 -20
  144. package/dist/Editor/common/LinkSettings/navOptions.js +1 -1
  145. package/dist/Editor/common/MUIIcon/index.js +3 -0
  146. package/dist/Editor/common/MentionsPopup/index.js +2 -6
  147. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +22 -46
  148. package/dist/Editor/common/RnD/ContextMenu/index.js +2 -3
  149. package/dist/Editor/common/RnD/ElementOptions/index.js +2 -7
  150. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +3 -8
  151. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +3 -7
  152. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  153. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  154. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  155. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  156. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -7
  157. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +2 -3
  158. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  159. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +2 -6
  160. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +2 -3
  161. package/dist/Editor/common/RnD/OptionsPopup/index.js +3 -4
  162. package/dist/Editor/common/RnD/ShadowElement.js +1 -2
  163. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +4 -11
  164. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  165. package/dist/Editor/common/RnD/Utils/gridDropItem.js +8 -55
  166. package/dist/Editor/common/RnD/Utils/index.js +0 -3
  167. package/dist/Editor/common/RnD/VirtualElement/index.js +103 -187
  168. package/dist/Editor/common/RnD/VirtualElement/styles.js +7 -155
  169. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +3 -5
  170. package/dist/Editor/common/RnD/index.js +13 -69
  171. package/dist/Editor/common/Section/index.js +4 -7
  172. package/dist/Editor/common/Shorthands/elements.js +3 -74
  173. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +4 -4
  174. package/dist/Editor/common/StyleBuilder/boxStyle.js +2 -2
  175. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -6
  176. package/dist/Editor/common/StyleBuilder/dividerStyles.js +2 -2
  177. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +6 -6
  178. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -2
  179. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +9 -13
  180. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +3 -11
  181. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +5 -19
  182. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +10 -22
  183. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +3 -6
  184. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +13 -27
  185. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +14 -43
  186. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +6 -10
  187. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +6 -19
  188. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +2 -6
  189. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +2 -5
  190. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +6 -9
  191. package/dist/Editor/common/StyleBuilder/fieldTypes/metaDataMapping.js +2 -8
  192. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +11 -12
  193. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +2 -6
  194. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -8
  195. package/dist/Editor/common/StyleBuilder/fieldTypes/textAlign.js +2 -6
  196. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +12 -21
  197. package/dist/Editor/common/StyleBuilder/formStyle.js +7 -7
  198. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +6 -6
  199. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -5
  200. package/dist/Editor/common/StyleBuilder/index.js +5 -8
  201. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +7 -5
  202. package/dist/Editor/common/SwipeableDrawer/index.js +1 -1
  203. package/dist/Editor/common/Uploader.js +5 -16
  204. package/dist/Editor/commonStyle.js +57 -68
  205. package/dist/Editor/helper/index.js +3 -27
  206. package/dist/Editor/helper/theme.js +2 -202
  207. package/dist/Editor/hooks/useMouseMove.js +3 -9
  208. package/dist/Editor/plugins/withEmbeds.js +1 -1
  209. package/dist/Editor/plugins/withHTML.js +9 -11
  210. package/dist/Editor/plugins/withLayout.js +2 -3
  211. package/dist/Editor/plugins/withLinks.js +0 -10
  212. package/dist/Editor/plugins/withTable.js +1 -1
  213. package/dist/Editor/theme/ThemeList.js +173 -50
  214. package/dist/Editor/utils/SlateUtilityFunctions.js +50 -178
  215. package/dist/Editor/utils/draftToSlate.js +2 -3
  216. package/dist/Editor/utils/font.js +37 -40
  217. package/dist/Editor/utils/freegrid.js +3 -3
  218. package/dist/Editor/utils/helper.js +21 -92
  219. package/package.json +4 -4
  220. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -444
  221. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -436
  222. package/dist/Editor/assets/svg/ClearAllRounded.js +0 -31
  223. package/dist/Editor/assets/svg/ResetIconNew.js +0 -23
  224. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  225. package/dist/Editor/common/CustomColorPicker/index.js +0 -131
  226. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  227. package/dist/Editor/common/CustomDialog2/index.js +0 -94
  228. package/dist/Editor/common/CustomDialog2/style.js +0 -67
  229. package/dist/Editor/common/CustomSelect.js +0 -43
  230. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  231. package/dist/Editor/common/RnD/VirtualElement/BoxHeaderAutoAlignment.js +0 -43
  232. package/dist/Editor/common/RnD/VirtualElement/ForceAutoAlignment.js +0 -44
  233. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +0 -134
  234. package/dist/Editor/common/RnD/VirtualElement/helper.js +0 -382
  235. package/dist/Editor/common/SnackBar/index.js +0 -43
  236. package/dist/Editor/helper/textIndeces.js +0 -58
  237. package/dist/Editor/hooks/useAutoScroll.js +0 -38
  238. package/dist/Editor/hooks/useEditorTheme.js +0 -153
  239. package/dist/Editor/hooks/useThemeValues.js +0 -63
  240. package/dist/Editor/theme/index.js +0 -149
  241. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  242. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  243. package/dist/Editor/themeSettings/buttons/style.js +0 -23
  244. package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
  245. package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
  246. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  247. package/dist/Editor/themeSettings/fonts/index.js +0 -240
  248. package/dist/Editor/themeSettings/fonts/style.js +0 -61
  249. package/dist/Editor/themeSettings/icons.js +0 -60
  250. package/dist/Editor/themeSettings/index.js +0 -351
  251. package/dist/Editor/themeSettings/style.js +0 -220
  252. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  253. package/dist/Editor/themeSettingsAI/index.js +0 -355
  254. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -205
  255. 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.8.2",
3
+ "version": "9.8.3",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -38,6 +38,7 @@
38
38
  "react-icons": "^4.10.1",
39
39
  "react-katex": "^3.0.1",
40
40
  "react-rnd": "^10.4.11",
41
+ "react-scripts": "5.0.1",
41
42
  "react-signature-canvas": "^1.0.6",
42
43
  "react-slick": "^0.29.0",
43
44
  "sanitize-html": "^2.13.0",
@@ -68,7 +69,7 @@
68
69
  "storybook": "storybook dev -p 6006",
69
70
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
70
71
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
71
- "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",
72
73
  "publish:flozy": "./publish-flozy.sh",
73
74
  "publish:flozy2": "./publish-flozy2.sh",
74
75
  "publish:permission": "chmod +x publish-flozy.sh && chmod +x publish-flozy2.sh"
@@ -121,8 +122,7 @@
121
122
  "prop-types": "^15.8.1",
122
123
  "source-map-explorer": "^2.5.3",
123
124
  "storybook": "^7.4.0",
124
- "webpack": "^5.88.2",
125
- "react-scripts": "5.0.1"
125
+ "webpack": "^5.88.2"
126
126
  },
127
127
  "overrides": {
128
128
  "react-refresh": "0.11.0"
@@ -1,444 +0,0 @@
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(() => {
92
- setAnchorEl(null);
93
- }, []);
94
- const handleAddOption = newValue => {
95
- const trimmedValue = newValue?.trim();
96
- if (!trimmedValue) return;
97
- const newOption = {
98
- value: trimmedValue,
99
- color: chipColor
100
- };
101
- if (!availableOptions?.some(opt => opt?.value === trimmedValue)) {
102
- setAvailableOptions(prev => [...prev, newOption]);
103
- setSelectedOptions(prev => [...prev, newOption]);
104
- onUpdate([newOption, ...availableOptions]);
105
- }
106
- setInputValue("");
107
- setChipColor("");
108
- };
109
- const onClose = () => {
110
- setAnchorEl(anchorElOption);
111
- setAnchorElOption(null);
112
- };
113
- const onEditOption = (type, data) => {
114
- const updateData = data?.edit ? data?.edit?.options : data?.options;
115
- onUpdate(updateData);
116
- if (data?.edit?.options) {
117
- const updatedSelectedOptions = selectedOptions?.filter(selOption => updateData?.some(availOption => availOption?.value === selOption?.value && availOption?.color === selOption?.color));
118
- setSelectedOptions(updatedSelectedOptions);
119
- onClose();
120
- }
121
- };
122
- const handleEditOption = (e, index) => {
123
- e.stopPropagation();
124
- setCurrentIndex(index);
125
- setAnchorElOption(anchorEl);
126
- setAnchorEl(null);
127
- };
128
- const handleSelectOption = option => {
129
- if (!selectedOptions?.some(opt => opt?.value === option?.value)) {
130
- const updatedOptions = [...selectedOptions, option];
131
- setSelectedOptions(updatedOptions);
132
- onChange(updatedOptions);
133
- } else {
134
- setShowSnackBar(true);
135
- }
136
- };
137
- const handleClearSelection = () => {
138
- setSelectedOptions([]);
139
- };
140
- const filteredOptions = availableOptions?.filter(option => option?.value?.toLowerCase()?.includes(inputValue?.toLowerCase()));
141
- const isExactMatch = availableOptions?.some(opt => opt?.value?.toLowerCase() === inputValue?.toLowerCase());
142
- const open = Boolean(anchorEl);
143
- const openEditOption = Boolean(anchorElOption);
144
- const id = open ? "autocomplete-popover" : undefined;
145
- return /*#__PURE__*/_jsxs("div", {
146
- children: [/*#__PURE__*/_jsx(Box, {
147
- sx: {
148
- display: "flex",
149
- flexWrap: wrapColumn ? "wrap" : "nowrap",
150
- overflowX: wrapColumn ? "hidden" : "auto",
151
- gap: 0.5,
152
- padding: "8px",
153
- cursor: "pointer"
154
- },
155
- onClick: handleOpenPopover,
156
- children: selectedOptions?.map((option, index) => /*#__PURE__*/_jsx(Chip, {
157
- label: option?.value,
158
- onDelete: event => {
159
- event.stopPropagation();
160
- setSelectedOptions(prev => prev.filter(selected => selected?.value !== option?.value));
161
- },
162
- deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
163
- variant: "filled",
164
- sx: {
165
- backgroundColor: option?.color,
166
- color: '#0F172A',
167
- "& .MuiChip-deleteIcon": {
168
- flexShrink: 0,
169
- "& path": {
170
- stroke: '#0F172A'
171
- }
172
- },
173
- "&:hover": {
174
- opacity: 0.8
175
- }
176
- }
177
- }, index))
178
- }), /*#__PURE__*/_jsx(PopoverComponent, {
179
- id: id,
180
- open: open,
181
- anchorEl: anchorEl,
182
- anchor: "bottom",
183
- onClose: handleClosePopover,
184
- anchorOrigin: {
185
- vertical: "top",
186
- horizontal: "left"
187
- },
188
- transformOrigin: {
189
- vertical: "top",
190
- horizontal: "left"
191
- },
192
- sx: {
193
- "& .MuiPaper-root": {
194
- borderRadius: "20px",
195
- background: theme?.palette?.editor?.textFormatBgColor,
196
- border: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
197
- boxShadow: "0px 4px 10px 0px #00000029"
198
- }
199
- },
200
- children: /*#__PURE__*/_jsxs(Box, {
201
- sx: {
202
- width: isMobile ? "100%" : 300
203
- },
204
- children: [/*#__PURE__*/_jsx(Autocomplete, {
205
- multiple: true,
206
- freeSolo: true,
207
- disablePortal: true,
208
- PopperComponent: () => null,
209
- sx: {
210
- "& .MuiFormControl-root": {
211
- maxHeight: "250px",
212
- overflowY: "auto",
213
- overflowX: "hidden",
214
- pr: '12px',
215
- pl: '12px',
216
- marginTop: '12px',
217
- ...customScrollStyles
218
- }
219
- },
220
- disableClearable: true,
221
- options: [],
222
- getOptionLabel: option => options?.value || "",
223
- value: selectedOptions,
224
- onChange: (event, newValues) => {
225
- const addedOptions = newValues?.filter(value => typeof value === "object" || typeof value === "string" && value?.trim() !== "")?.map(value => typeof value === "string" ? {
226
- value,
227
- color: chipColor
228
- } : value);
229
- const isDuplicate = addedOptions?.some(newOpt => (selectedOptions || [])?.some(opt => opt.value === newOpt.value));
230
- if (!isDuplicate) {
231
- setSelectedOptions([...selectedOptions, ...addedOptions]);
232
- }
233
- },
234
- inputValue: inputValue,
235
- onInputChange: (event, newInputValue) => setInputValue(newInputValue),
236
- onKeyDown: event => {
237
- if (event.key === "Enter" && inputValue.trim()) {
238
- event.preventDefault();
239
- handleAddOption(inputValue);
240
- }
241
- },
242
- filterOptions: (options, params) => options?.filter(option => option?.value?.toLowerCase()?.includes(params?.inputValue?.toLowerCase())),
243
- renderInput: params => /*#__PURE__*/_jsx(TextField, {
244
- ...params,
245
- variant: "standard",
246
- InputProps: {
247
- ...params.InputProps,
248
- disableUnderline: true,
249
- sx: {
250
- display: "flex",
251
- flexWrap: "wrap",
252
- fontFamily: "Inter",
253
- fontWeight: 400,
254
- fontSize: "12px",
255
- color: theme?.palette?.editor?.secondaryTextColor,
256
- "&::placeholder": {
257
- color: theme?.palette?.editor?.secondaryTextColor
258
- },
259
- "& .MuiAutocomplete-input": {
260
- minWidth: "100px !important"
261
- }
262
- },
263
- endAdornment: /*#__PURE__*/_jsx(Tooltip, {
264
- arrow: true,
265
- title: "Clear Selected",
266
- children: /*#__PURE__*/_jsx(IconButton, {
267
- onClick: handleClearSelection,
268
- sx: {
269
- padding: 0,
270
- minWidth: "unset",
271
- "& .MuiSvgIcon-root": {
272
- fontSize: 20
273
- },
274
- '& rect': {
275
- fill: theme?.palette?.editor?.closeButtonSvgStroke
276
- },
277
- '&:hover': {
278
- backgroundColor: 'transparent'
279
- }
280
- },
281
- children: /*#__PURE__*/_jsx(Icon, {
282
- icon: "resetIconNew"
283
- })
284
- })
285
- })
286
- },
287
- sx: {
288
- backgroundColor: "transparent",
289
- fontFamily: 'Inter',
290
- fontWeight: 400,
291
- fontSize: '12px'
292
- },
293
- placeholder: "Create new one..."
294
- }),
295
- renderTags: (tagValues, getTagProps) => tagValues.map((option, index) => /*#__PURE__*/_jsx(Chip, {
296
- variant: "filled",
297
- label: option?.value,
298
- ...getTagProps({
299
- index
300
- }),
301
- onDelete: event => {
302
- event?.stopPropagation();
303
- setSelectedOptions(prev => prev.filter(selected => selected?.value !== option?.value));
304
- },
305
- deleteIcon: /*#__PURE__*/_jsx(CloseIcon, {}),
306
- sx: {
307
- backgroundColor: option?.color,
308
- color: '#0F172A',
309
- "& .MuiChip-deleteIcon": {
310
- flexShrink: 0,
311
- "& path": {
312
- stroke: '#0F172A'
313
- }
314
- },
315
- "&:hover": {
316
- opacity: 0.8
317
- }
318
- }
319
- }, index))
320
- }), /*#__PURE__*/_jsx(Divider, {
321
- sx: {
322
- mt: '12px',
323
- borderBottom: `1px solid ${theme?.palette?.editor?.popUpBorderColor}`,
324
- boxShadow: theme?.palette?.editor?.dividerDropShadow
325
- }
326
- }), /*#__PURE__*/_jsx(Box, {
327
- sx: {
328
- pl: '4px'
329
- },
330
- children: /*#__PURE__*/_jsxs(List, {
331
- sx: {
332
- maxHeight: "250px",
333
- overflowY: "auto",
334
- ...customScrollStyles
335
- },
336
- children: [/*#__PURE__*/_jsx(Typography, {
337
- sx: {
338
- mb: 1,
339
- pl: '8px',
340
- color: theme?.palette?.editor?.secondaryTextColor,
341
- fontFamily: 'Inter',
342
- fontWeight: 400,
343
- fontSize: '12px'
344
- },
345
- children: "Choose an option or create one"
346
- }), filteredOptions?.map((option, index) => /*#__PURE__*/_jsx(ListItem, {
347
- sx: {
348
- padding: 0
349
- },
350
- disablePadding: true,
351
- children: /*#__PURE__*/_jsxs(ListItemButton, {
352
- onClick: () => handleSelectOption(option),
353
- sx: {
354
- paddingTop: "4px",
355
- paddingBottom: "4px",
356
- justifyContent: 'space-between',
357
- '&:hover': {
358
- '& path': {
359
- stroke: theme?.palette?.editor?.activeColor
360
- },
361
- borderRadius: '12px'
362
- }
363
- },
364
- children: [/*#__PURE__*/_jsx(Chip, {
365
- label: option?.value,
366
- sx: {
367
- backgroundColor: option?.color,
368
- color: '#0F172A',
369
- fontWeight: 500,
370
- fontSize: "12px",
371
- fontFamily: "Inter",
372
- padding: "4px 12px",
373
- borderRadius: "16px",
374
- maxWidth: "180px",
375
- whiteSpace: "nowrap",
376
- overflow: "hidden",
377
- textOverflow: "ellipsis"
378
- }
379
- }), /*#__PURE__*/_jsx(IconButton, {
380
- size: "small",
381
- sx: {
382
- '& path': {
383
- stroke: theme?.palette?.editor?.closeButtonSvgStroke
384
- },
385
- '&:hover': {
386
- backgroundColor: 'transparent'
387
- }
388
- },
389
- onClick: e => handleEditOption(e, index),
390
- children: /*#__PURE__*/_jsx(Icon, {
391
- icon: "rightArrow"
392
- })
393
- })]
394
- })
395
- }, index)), inputValue?.trim() && !isExactMatch && /*#__PURE__*/_jsx(ListItem, {
396
- disablePadding: true,
397
- children: /*#__PURE__*/_jsxs(ListItemButton, {
398
- onClick: () => handleAddOption(inputValue),
399
- sx: {
400
- display: "flex",
401
- alignItems: "center"
402
- },
403
- children: [/*#__PURE__*/_jsx(Typography, {
404
- sx: {
405
- color: theme?.palette?.editor?.secondaryTextColor,
406
- marginRight: "6px",
407
- fontSize: "14px",
408
- fontFamily: "Inter"
409
- },
410
- children: "Create"
411
- }), /*#__PURE__*/_jsx(Chip, {
412
- label: `${inputValue}`,
413
- sx: {
414
- backgroundColor: chipColor,
415
- color: '#0F172A',
416
- fontWeight: 500,
417
- fontSize: "12px",
418
- fontFamily: "Inter",
419
- borderRadius: "16px",
420
- maxWidth: "180px",
421
- whiteSpace: "nowrap",
422
- overflow: "hidden",
423
- textOverflow: "ellipsis"
424
- }
425
- })]
426
- })
427
- })]
428
- })
429
- })]
430
- })
431
- }), openEditOption ? /*#__PURE__*/_jsx(PropertySettings, {
432
- open: openEditOption,
433
- anchorEl: anchorElOption,
434
- mode: mode,
435
- onClose: onClose,
436
- onEvent: onEditOption,
437
- translation: translation
438
- }) : null, showSnackBar ? /*#__PURE__*/_jsx(SnackbarAlert, {
439
- message: "Option already selected!",
440
- setShowSnackBar: setShowSnackBar
441
- }) : null]
442
- });
443
- };
444
- export default MultiSelectWithPopover;