@flozy/editor 10.5.6 → 10.5.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 (170) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +128 -14
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +49 -11
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AI/Styles.js +1 -0
  7. package/dist/Editor/Elements/Accordion/Accordion.js +46 -9
  8. package/dist/Editor/Elements/Accordion/AccordionSummary.js +1 -23
  9. package/dist/Editor/Elements/AppHeader/AppHeader.js +10 -5
  10. package/dist/Editor/Elements/Button/EditorButton.js +26 -10
  11. package/dist/Editor/Elements/Carousel/CarouselItem.js +2 -1
  12. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  13. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  15. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  16. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/{MultiSelect.js → SelectV1.js} +125 -69
  17. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +10 -10
  18. package/dist/Editor/Elements/DataView/Layouts/DataTypes/SelectType.js +28 -9
  19. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +12 -5
  20. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +40 -14
  21. package/dist/Editor/Elements/Divider/Divider.js +1 -1
  22. package/dist/Editor/Elements/Embed/Video.js +1 -1
  23. package/dist/Editor/Elements/Form/Form.js +3 -3
  24. package/dist/Editor/Elements/Form/FormElements/FormTextArea.js +0 -1
  25. package/dist/Editor/Elements/Form/FormField.js +1 -1
  26. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  27. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +35 -31
  28. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +7 -4
  29. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +1 -0
  30. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  31. package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +1 -1
  32. package/dist/Editor/Elements/FreeGrid/helper.js +115 -0
  33. package/dist/Editor/Elements/FreeGrid/styles.js +14 -0
  34. package/dist/Editor/Elements/Grid/Grid.js +14 -2
  35. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  36. package/dist/Editor/Elements/Signature/Signature.css +2 -1
  37. package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +18 -5
  38. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +16 -3
  39. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  40. package/dist/Editor/Elements/Table/AddRowCol.js +8 -2
  41. package/dist/Editor/Elements/Table/DragButton.js +0 -1
  42. package/dist/Editor/Elements/Table/Draggable.js +6 -2
  43. package/dist/Editor/Elements/Table/Styles.js +7 -0
  44. package/dist/Editor/Elements/Table/Table.js +3 -3
  45. package/dist/Editor/Elements/Table/TableCell.js +24 -5
  46. package/dist/Editor/Elements/Title/title.js +6 -6
  47. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  48. package/dist/Editor/MiniEditor.js +2 -1
  49. package/dist/Editor/Styles/EditorStyles.js +4 -4
  50. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  51. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  52. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  53. package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
  54. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  55. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  56. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  57. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  58. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +7 -4
  59. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  60. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +73 -13
  61. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +58 -10
  62. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  63. package/dist/Editor/Toolbar/PopupTool/index.js +12 -5
  64. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  65. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  66. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  67. package/dist/Editor/common/Checkbox/index.js +46 -0
  68. package/dist/Editor/common/Checkbox/styles.js +45 -0
  69. package/dist/Editor/common/ColorPickerButton.js +41 -16
  70. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  71. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  72. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  73. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  74. package/dist/Editor/common/CustomSelect.js +43 -0
  75. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  76. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  77. package/dist/Editor/common/Icon.js +28 -0
  78. package/dist/Editor/common/ImageSelector/ImageSelector.js +2 -2
  79. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  80. package/dist/Editor/common/LinkSettings/NavComponents.js +45 -65
  81. package/dist/Editor/common/LinkSettings/index.js +14 -28
  82. package/dist/Editor/common/LinkSettings/navOptions.js +2 -2
  83. package/dist/Editor/common/LinkSettings/style.js +164 -244
  84. package/dist/Editor/common/RadioGroup/index.js +48 -0
  85. package/dist/Editor/common/RadioGroup/styles.js +29 -0
  86. package/dist/Editor/common/RnD/ElementOptions/Actions.js +4 -5
  87. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  88. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Signature.js +4 -3
  89. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  90. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  91. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  92. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  93. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  94. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
  95. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  96. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
  97. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
  98. package/dist/Editor/common/RnD/ElementSettings/styles.js +0 -1
  99. package/dist/Editor/common/RnD/OptionsPopup/style.js +0 -1
  100. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
  101. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  102. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  103. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -19
  104. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  105. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +42 -58
  106. package/dist/Editor/common/RnD/VirtualElement/helper.js +323 -132
  107. package/dist/Editor/common/RnD/VirtualElement/styles.js +16 -0
  108. package/dist/Editor/common/RnD/index.js +67 -38
  109. package/dist/Editor/common/Select/index.js +44 -7
  110. package/dist/Editor/common/Select/styles.js +30 -2
  111. package/dist/Editor/common/Shorthands/elements.js +54 -0
  112. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +2 -2
  113. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +12 -9
  114. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  115. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  116. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +5 -0
  117. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  118. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  119. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  120. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  121. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
  122. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  123. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  124. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  125. package/dist/Editor/common/SwipeableDrawer/style.js +14 -12
  126. package/dist/Editor/common/Uploader.js +16 -0
  127. package/dist/Editor/common/iconListV2.js +76 -0
  128. package/dist/Editor/common/iconslist.js +21 -0
  129. package/dist/Editor/commonStyle.js +116 -61
  130. package/dist/Editor/helper/deserialize/index.js +6 -4
  131. package/dist/Editor/helper/index.js +5 -1
  132. package/dist/Editor/helper/textIndeces.js +58 -0
  133. package/dist/Editor/helper/theme.js +203 -2
  134. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  135. package/dist/Editor/hooks/useMouseMove.js +9 -3
  136. package/dist/Editor/hooks/useTable.js +5 -4
  137. package/dist/Editor/hooks/useThemeValues.js +63 -0
  138. package/dist/Editor/plugins/withEmbeds.js +1 -1
  139. package/dist/Editor/plugins/withHTML.js +14 -5
  140. package/dist/Editor/plugins/withTable.js +1 -1
  141. package/dist/Editor/theme/ThemeList.js +50 -173
  142. package/dist/Editor/theme/index.js +149 -0
  143. package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
  144. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  145. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  146. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  147. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  148. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  149. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  150. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  151. package/dist/Editor/themeSettings/icons.js +60 -0
  152. package/dist/Editor/themeSettings/index.js +380 -0
  153. package/dist/Editor/themeSettings/style.js +299 -0
  154. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  155. package/dist/Editor/themeSettingsAI/index.js +355 -0
  156. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  157. package/dist/Editor/themeSettingsAI/style.js +332 -0
  158. package/dist/Editor/utils/SlateUtilityFunctions.js +161 -37
  159. package/dist/Editor/utils/accordion.js +44 -7
  160. package/dist/Editor/utils/button.js +1 -17
  161. package/dist/Editor/utils/customHooks/useTableResize.js +49 -9
  162. package/dist/Editor/utils/draftToSlate.js +3 -2
  163. package/dist/Editor/utils/events.js +50 -6
  164. package/dist/Editor/utils/font.js +40 -37
  165. package/dist/Editor/utils/formfield.js +1 -0
  166. package/dist/Editor/utils/helper.js +142 -28
  167. package/dist/Editor/utils/insertAppHeader.js +1 -1
  168. package/dist/Editor/utils/signature.js +2 -9
  169. package/dist/Editor/utils/updateFormName.js +22 -0
  170. package/package.json +4 -4
@@ -2,6 +2,8 @@ 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
+ import { getCurrentElementText } from "../plugins/withHTML";
5
7
  export const windowVar = {};
6
8
  let ST_TIMEOUT = null;
7
9
  const BLOCKS = ["grid", "dataView"];
@@ -333,7 +335,8 @@ const handleLinkBtnClick = (e, props, isMobilePreview, metadata) => {
333
335
  }
334
336
  }
335
337
  };
336
- export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}, metadata = {}) => {
338
+ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}, metadata = {}, isEditMode, isCustomMobile // for drawer in App Header
339
+ ) => {
337
340
  const props = {};
338
341
  if (!readOnly) {
339
342
  return {
@@ -365,6 +368,9 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
365
368
  case "page":
366
369
  const [page = "", section] = url?.split("#") || [];
367
370
  const sec = section ? `#${section}` : "";
371
+ if (isEditMode) {
372
+ break;
373
+ }
368
374
  if (page === "_currentPage") {
369
375
  props.component = "button";
370
376
  props.onClick = () => {
@@ -385,11 +391,12 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
385
391
  const currentUserPage = getCurrentUserPage();
386
392
  props.href = isCurrentPage(page) ? `./${currentUserPage}${sec}` : `./${url}`;
387
393
  if (openInNewTab) {
388
- if (isCurrentPage(page)) {
389
- // temp fix, if user is presented in current page, open in new tab option is restricted, we will scroll to the element in current page
390
- } else {
391
- props.target = "_blank";
392
- }
394
+ // if (isCurrentPage(page)) {
395
+ // // temp fix, if user is presented in current page, open in new tab option is restricted, we will scroll to the element in current page
396
+ // } else {
397
+ // props.target = "_blank";
398
+ // }
399
+ props.target = "_blank";
393
400
  }
394
401
  }
395
402
  break;
@@ -424,7 +431,7 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
424
431
 
425
432
  // for iphone fix
426
433
  if (props.component === "a" && props.href) {
427
- const isMobile = getDevice(window.innerWidth) === "xs";
434
+ const isMobile = isCustomMobile || getDevice(window.innerWidth) === "xs";
428
435
  if (isMobile) {
429
436
  props.component = "button"; // iphone is opening two tabs, on open in new tab because of a tag.
430
437
  }
@@ -485,6 +492,34 @@ export const decodeString = str => {
485
492
  console.log(err);
486
493
  }
487
494
  };
495
+ export const getContrastColor = color => {
496
+ let r, g, b;
497
+
498
+ // Check if the color is in hex format
499
+ if (color.startsWith("#")) {
500
+ r = parseInt(color.substring(1, 3), 16);
501
+ g = parseInt(color.substring(3, 5), 16);
502
+ b = parseInt(color.substring(5, 7), 16);
503
+ }
504
+ // Check if the color is in RGB/RGBA format
505
+ else if (color.startsWith("rgb")) {
506
+ const rgbValues = color.replace(/^rgba?\(|\s+|\)$/g, "") // Remove the rgb/rgba and spaces
507
+ .split(","); // Split the values into an array
508
+
509
+ r = parseInt(rgbValues[0]);
510
+ g = parseInt(rgbValues[1]);
511
+ b = parseInt(rgbValues[2]);
512
+ } else {
513
+ // If the format is not recognized, default to black text
514
+ return "#000000";
515
+ }
516
+
517
+ // Calculate relative luminance
518
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
519
+
520
+ // Return black for light colors, white for dark colors
521
+ return luminance > 0.5 ? "#000000" : "#FFFFFF";
522
+ };
488
523
  export const onDeleteKey = (event, {
489
524
  editor
490
525
  }) => {
@@ -702,6 +737,10 @@ export const isRestrictedNode = (event, editor) => {
702
737
  return isNodeRestricted;
703
738
  }
704
739
  };
740
+ export function capitalizeFirstLetter(str) {
741
+ if (!str) return str;
742
+ return str.charAt(0).toUpperCase() + str.slice(1);
743
+ }
705
744
  export const insertLineBreakAtEndOfPath = (editor, path) => {
706
745
  try {
707
746
  const [node, nodePath] = Editor.node(editor, path); // Get the node at the specified path
@@ -720,6 +759,13 @@ export const insertLineBreakAtEndOfPath = (editor, path) => {
720
759
  console.log(err);
721
760
  }
722
761
  };
762
+ export function isHavingSelection(editor) {
763
+ try {
764
+ return editor?.selection && !Range.isCollapsed(editor.selection);
765
+ } catch (err) {
766
+ console.log(err);
767
+ }
768
+ }
723
769
  const omitNodes = ["site-settings", "page-settings"];
724
770
  export function getInitialValue(value = [], readOnly) {
725
771
  if (readOnly === "readonly" && value?.length) {
@@ -750,20 +796,17 @@ export function getInitialValue(value = [], readOnly) {
750
796
  }
751
797
  return value;
752
798
  }
753
- export function capitalizeFirstLetter(str) {
754
- if (!str) return str;
755
- return str.charAt(0).toUpperCase() + str.slice(1);
756
- }
757
- export function isHavingSelection(editor) {
758
- try {
759
- return editor?.selection && !Range.isCollapsed(editor.selection);
760
- } catch (err) {
761
- console.log(err);
762
- }
763
- }
764
799
  export function getSelectedCls(defaultCls = "", selected, selectedClsName = "selected") {
765
800
  return `${defaultCls} ${selected ? selectedClsName : ""}`;
766
801
  }
802
+ export function handleNegativeInteger(val) {
803
+ return val < 0 ? 0 : val;
804
+ }
805
+ export const containsSurrogatePair = text => {
806
+ // Match surrogate pairs (high and low surrogate)
807
+ const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
808
+ return surrogatePairRegex.test(text);
809
+ };
767
810
  export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
768
811
  try {
769
812
  const options = {
@@ -777,11 +820,6 @@ export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
777
820
  return [];
778
821
  }
779
822
  };
780
- export const containsSurrogatePair = text => {
781
- // Match surrogate pairs (high and low surrogate)
782
- const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
783
- return surrogatePairRegex.test(text);
784
- };
785
823
  export const getSlateDom = (editor, range) => {
786
824
  try {
787
825
  const slateDom = ReactEditor.toDOMRange(editor, range);
@@ -822,7 +860,8 @@ export const clearWindowSelection = () => {
822
860
 
823
861
  export const viewSlateSelection = () => {
824
862
  // if ai is opened, remove the window selection class and open then slate selection, To resolve: focussing on the ai input removes window selection automatically
825
- clearWindowSelection();
863
+ // clearWindowSelection();
864
+
826
865
  const selectionBg = "rgba(35, 131, 226, 0.35)";
827
866
  const root = document.documentElement;
828
867
  root.style.setProperty("--slate-highlight-bg", selectionBg);
@@ -831,9 +870,24 @@ export const hideSlateSelection = () => {
831
870
  const root = document.documentElement;
832
871
  root.style.setProperty("--slate-highlight-bg", "none");
833
872
  };
834
- export function handleNegativeInteger(val) {
835
- return val < 0 ? 0 : val;
836
- }
873
+ export const insertSlashNode = (editor, insertNode) => {
874
+ try {
875
+ // Delete the currently selected text
876
+ editor.deleteFragment();
877
+ const currentText = getCurrentElementText(editor);
878
+ const currentPath = editor?.selection?.anchor?.path;
879
+ let insertAt = currentPath;
880
+ if (currentText?.trim()) {
881
+ const parentPath = Path.parent(currentPath);
882
+ insertAt = Path.next(parentPath);
883
+ }
884
+ Transforms.insertNodes(editor, insertNode, {
885
+ at: insertAt
886
+ });
887
+ } catch (err) {
888
+ console.log(err);
889
+ }
890
+ };
837
891
  export const isEverythingSelected = editor => {
838
892
  const {
839
893
  selection
@@ -864,6 +918,61 @@ export const getCurrentNodeText = editor => {
864
918
  console.log("Error:", error);
865
919
  }
866
920
  };
921
+ function convertColorToRgb(color) {
922
+ if (color?.startsWith("#")) {
923
+ // HEX to RGB
924
+ let hex = color.replace("#", "");
925
+ let r, g, b;
926
+ if (hex.length === 3) {
927
+ hex = hex.split("").map(x => x + x).join("");
928
+ }
929
+ if (hex.length === 6) {
930
+ [r, g, b] = [hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6)].map(val => parseInt(val, 16));
931
+ return `rgb(${r}, ${g}, ${b})`;
932
+ }
933
+ } else {
934
+ return color;
935
+ }
936
+ }
937
+ export const getSelectedColor = (selectedColor, theme, hideThemeColors) => {
938
+ const colorVars = hideThemeColors ? null : theme?.vars?.colors;
939
+ let selectedValue = selectedColor;
940
+ if (colorVars) {
941
+ const convertedColor = convertColorToRgb(selectedColor);
942
+ Object.entries(theme.colors).forEach(([key, value]) => {
943
+ const convertedThemeColor = convertColorToRgb(value);
944
+ if (convertedThemeColor === convertedColor) {
945
+ selectedValue = colorVars[key];
946
+ }
947
+ });
948
+ }
949
+ return selectedValue;
950
+ };
951
+ const themeTextFormats = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
952
+ export const getSelectedElementColor = (editor, format, theme) => {
953
+ const [isThemeText] = Editor.nodes(editor, {
954
+ at: editor.selection,
955
+ match: n => themeTextFormats.includes(n?.type)
956
+ });
957
+ if (!isThemeText) {
958
+ return activeMark(editor, "color") || "#000000";
959
+ }
960
+ const color = getSelectedElementStyle(format, editor, format);
961
+ return getSelectedColor(color, theme);
962
+ };
963
+ export const isHavingColor = color => {
964
+ if (!color) {
965
+ return false;
966
+ }
967
+ if (color.includes("rgba")) {
968
+ const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),?\s*(\d*\.?\d+)?\)/);
969
+ if (!match) return false; // Invalid format
970
+
971
+ const alpha = match[4] !== undefined ? parseFloat(match[4]) : 1; // Default alpha = 1
972
+ return alpha !== 0;
973
+ }
974
+ return true;
975
+ };
867
976
  const handleCopiedList = (el, domRange) => {
868
977
  // Ensure you're working with an Element, not a Text node
869
978
  const startEl = domRange.startContainer.nodeType === Node.ELEMENT_NODE ? domRange.startContainer : domRange.startContainer.parentElement;
@@ -883,11 +992,15 @@ const handleCopiedList = (el, domRange) => {
883
992
  el.insertAdjacentText("afterbegin", "- ");
884
993
  }
885
994
  };
995
+ const cleanCopiedDOM = container => {
996
+ container.querySelectorAll('[style*="display: none"], [contenteditable="false"]').forEach(el => el.remove());
997
+ return container;
998
+ };
886
999
  const getCopiedTextFormat = domRange => {
887
1000
  const contents = domRange.cloneContents();
888
1001
  const div = document.createElement("div");
889
1002
  div.appendChild(contents);
890
-
1003
+ cleanCopiedDOM(div);
891
1004
  // Replace <br> with newlines
892
1005
  div.querySelectorAll("br").forEach(br => br.replaceWith("\n"));
893
1006
  const BLOCK_TAGS = ["DIV", "P", "LI", "H1", "H2", "H3", "H4", "H5", "H6"];
@@ -915,6 +1028,7 @@ const getCopiedHTMLFormat = domRange => {
915
1028
  const htmlContents = domRange.cloneContents();
916
1029
  const container = document.createElement("div");
917
1030
  container.appendChild(htmlContents);
1031
+ cleanCopiedDOM(container);
918
1032
  const html = container.innerHTML;
919
1033
  return html;
920
1034
  };
@@ -51,7 +51,7 @@ export const createAppHeaderNode = ({
51
51
  children: [{
52
52
  type: "grid-item",
53
53
  grid: 12,
54
- children: [...appHeaderNode({
54
+ children: [appHeaderNode({
55
55
  menus
56
56
  })],
57
57
  bgColor: "rgba(255, 255, 255, 0)",
@@ -1,9 +1,5 @@
1
- import { Path, Transforms } from "slate";
2
- import insertNewLine from "./insertNewLine";
3
- import { getCurrentElementText } from "../plugins/withHTML";
1
+ import { insertSlashNode } from "./helper";
4
2
  export const insertSignature = editor => {
5
- const hasText = getCurrentElementText(editor);
6
- const insertPath = hasText ? Path.next(Path.parent(editor?.selection.focus.path)) : editor.selection.anchor.path;
7
3
  const signature = {
8
4
  type: "signature",
9
5
  alignment: "center",
@@ -17,8 +13,5 @@ export const insertSignature = editor => {
17
13
  text: " "
18
14
  }]
19
15
  };
20
- Transforms.insertNodes(editor, signature, {
21
- at: insertPath
22
- });
23
- insertNewLine(editor);
16
+ insertSlashNode(editor, signature);
24
17
  };
@@ -0,0 +1,22 @@
1
+ const updateFormName = node => {
2
+ try {
3
+ if (!node || typeof node !== "object") return node;
4
+ let updatedNode = {
5
+ ...node
6
+ };
7
+ if (updatedNode.type === "form") {
8
+ const timeStamp = Date.now();
9
+ const newFormName = `form_${timeStamp}`;
10
+ updatedNode.formName = newFormName;
11
+ updatedNode.uid = newFormName;
12
+ }
13
+ if (Array.isArray(updatedNode.children)) {
14
+ updatedNode.children = updatedNode.children.map(child => updateFormName(child));
15
+ }
16
+ return updatedNode;
17
+ } catch (err) {
18
+ console.warn("Error inside updateFormName", err);
19
+ return node;
20
+ }
21
+ };
22
+ export default updateFormName;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "10.5.6",
3
+ "version": "10.5.8",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -38,7 +38,6 @@
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",
42
41
  "react-signature-canvas": "^1.0.6",
43
42
  "react-slick": "^0.29.0",
44
43
  "sanitize-html": "^2.13.0",
@@ -69,7 +68,7 @@
69
68
  "storybook": "storybook dev -p 6006",
70
69
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
71
70
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d 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",
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",
73
72
  "publish:flozy": "./publish-flozy.sh",
74
73
  "publish:flozy2": "./publish-flozy2.sh",
75
74
  "publish:permission": "chmod +x publish-flozy.sh && chmod +x publish-flozy2.sh"
@@ -122,7 +121,8 @@
122
121
  "prop-types": "^15.8.1",
123
122
  "source-map-explorer": "^2.5.3",
124
123
  "storybook": "^7.4.0",
125
- "webpack": "^5.88.2"
124
+ "webpack": "^5.88.2",
125
+ "react-scripts": "5.0.1"
126
126
  },
127
127
  "overrides": {
128
128
  "react-refresh": "0.11.0"