@flozy/editor 9.3.7 → 9.3.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 (266) hide show
  1. package/dist/Editor/ChatEditor.js +52 -16
  2. package/dist/Editor/CommonEditor.js +133 -23
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +19 -9
  5. package/dist/Editor/Elements/AI/AIInput.js +5 -3
  6. package/dist/Editor/Elements/AI/CustomSelect.js +9 -5
  7. package/dist/Editor/Elements/AI/PopoverAIInput.js +4 -2
  8. package/dist/Editor/Elements/Accordion/Accordion.js +4 -3
  9. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +4 -1
  10. package/dist/Editor/Elements/Accordion/AccordionButton.js +6 -2
  11. package/dist/Editor/Elements/Accordion/AccordionTitlePopup.js +4 -1
  12. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  13. package/dist/Editor/Elements/AppHeader/AppHeaderButton.js +6 -2
  14. package/dist/Editor/Elements/AppHeader/AppHeaderPopup.js +4 -1
  15. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +4 -1
  16. package/dist/Editor/Elements/Button/ButtonPopup.js +4 -1
  17. package/dist/Editor/Elements/Button/ButtonToolIcon.js +6 -2
  18. package/dist/Editor/Elements/Button/EditorButton.js +31 -14
  19. package/dist/Editor/Elements/Carousel/Carousel.js +5 -4
  20. package/dist/Editor/Elements/Carousel/CarouselButton.js +6 -2
  21. package/dist/Editor/Elements/Carousel/CarouselItem.js +3 -2
  22. package/dist/Editor/Elements/ChipText/ChipTextPopup.js +4 -1
  23. package/dist/Editor/Elements/CodeToText/CodeToText.js +5 -4
  24. package/dist/Editor/Elements/CodeToText/HtmlContextMenu.js +6 -2
  25. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -14
  26. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  27. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  28. package/dist/Editor/Elements/Color Picker/Styles.js +3 -3
  29. package/dist/Editor/Elements/Colorbox/ColorboxButton.js +6 -2
  30. package/dist/Editor/Elements/DataView/DataView.js +5 -2
  31. package/dist/Editor/Elements/DataView/DataViewButton.js +6 -2
  32. package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +4 -1
  33. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +422 -0
  34. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +4 -3
  35. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +23 -5
  36. package/dist/Editor/Elements/DataView/Layouts/DataTypes/TextType.js +7 -2
  37. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +13 -12
  38. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +7 -4
  39. package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +7 -5
  40. package/dist/Editor/Elements/DataView/Layouts/FilterView.js +9 -7
  41. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +8 -3
  42. package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +5 -3
  43. package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +6 -5
  44. package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +5 -3
  45. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +9 -7
  46. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +64 -38
  47. package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +3 -2
  48. package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +3 -2
  49. package/dist/Editor/Elements/DataView/Layouts/Options/index.js +23 -6
  50. package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +4 -1
  51. package/dist/Editor/Elements/DataView/Layouts/TableView.js +6 -4
  52. package/dist/Editor/Elements/DataView/Layouts/index.js +3 -1
  53. package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +5 -2
  54. package/dist/Editor/Elements/Divider/Divider.js +5 -3
  55. package/dist/Editor/Elements/Divider/DividerButton.js +6 -2
  56. package/dist/Editor/Elements/Divider/DividerPopup.js +3 -2
  57. package/dist/Editor/Elements/Embed/Embed.js +4 -1
  58. package/dist/Editor/Elements/Embed/EmbedPopup.js +4 -1
  59. package/dist/Editor/Elements/Embed/Frames/Slider.js +16 -14
  60. package/dist/Editor/Elements/Embed/Image.js +18 -12
  61. package/dist/Editor/Elements/Embed/Video.js +10 -7
  62. package/dist/Editor/Elements/EmbedScript/Code.js +7 -4
  63. package/dist/Editor/Elements/EmbedScript/EmbedScript.js +6 -2
  64. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +8 -5
  65. package/dist/Editor/Elements/Emoji/EmojiButton.js +6 -2
  66. package/dist/Editor/Elements/Form/FieldPopup.js +4 -1
  67. package/dist/Editor/Elements/Form/Form.js +12 -9
  68. package/dist/Editor/Elements/Form/FormButton.js +6 -2
  69. package/dist/Editor/Elements/Form/FormPopup.js +3 -2
  70. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +18 -12
  71. package/dist/Editor/Elements/Form/Workflow/ListWorkflow.js +13 -8
  72. package/dist/Editor/Elements/Form/Workflow/MoreOptions.js +3 -2
  73. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +4 -2
  74. package/dist/Editor/Elements/Form/Workflow/index.js +15 -9
  75. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +63 -25
  76. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +22 -4
  77. package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +6 -2
  78. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +34 -5
  79. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +3 -2
  80. package/dist/Editor/Elements/FreeGrid/Options/More.js +10 -4
  81. package/dist/Editor/Elements/FreeGrid/styles.js +3 -0
  82. package/dist/Editor/Elements/Grid/Grid.js +13 -10
  83. package/dist/Editor/Elements/Grid/GridButton.js +9 -5
  84. package/dist/Editor/Elements/Grid/GridItem.js +14 -8
  85. package/dist/Editor/Elements/Grid/GridItemPopup.js +4 -1
  86. package/dist/Editor/Elements/Grid/GridPopup.js +4 -1
  87. package/dist/Editor/Elements/Grid/SectionPopup.js +4 -1
  88. package/dist/Editor/Elements/Link/Link.js +14 -7
  89. package/dist/Editor/Elements/Link/LinkButton.js +4 -1
  90. package/dist/Editor/Elements/List/CheckList.js +14 -9
  91. package/dist/Editor/Elements/NewLine/NewLineButton.js +6 -2
  92. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +16 -5
  93. package/dist/Editor/Elements/PageSettings/PageSettingsPopup.js +4 -1
  94. package/dist/Editor/Elements/Search/SearchButton.js +6 -3
  95. package/dist/Editor/Elements/Search/SearchList.js +7 -3
  96. package/dist/Editor/Elements/Signature/SignatureButton.js +6 -2
  97. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +6 -2
  98. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +4 -1
  99. package/dist/Editor/Elements/Signature/SignaturePopup.js +17 -16
  100. package/dist/Editor/Elements/SimpleText/index.js +5 -4
  101. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  102. package/dist/Editor/Elements/Table/DragButton.js +4 -2
  103. package/dist/Editor/Elements/Table/Table.js +48 -25
  104. package/dist/Editor/Elements/Table/TableCell.js +10 -27
  105. package/dist/Editor/Elements/Table/TablePopup.js +4 -1
  106. package/dist/Editor/Elements/Table/TableSelector.js +10 -6
  107. package/dist/Editor/Elements/Table/TableTool.js +8 -4
  108. package/dist/Editor/Elements/Title/title.js +10 -0
  109. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +4 -1
  110. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  111. package/dist/Editor/MiniEditor.js +10 -3
  112. package/dist/Editor/Styles/EditorStyles.js +5 -5
  113. package/dist/Editor/Toolbar/Basic/index.js +2 -1
  114. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +6 -2
  115. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  116. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  117. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +8 -4
  118. package/dist/Editor/Toolbar/FormatTools/TextSize.js +7 -13
  119. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +20 -15
  120. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +10 -5
  121. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +10 -4
  122. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +10 -4
  123. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +6 -2
  124. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectAlignment.js +42 -35
  125. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  126. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +58 -51
  127. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +29 -22
  128. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +226 -87
  129. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +15 -7
  130. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +8 -4
  131. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +16 -9
  132. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +11 -5
  133. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +126 -44
  134. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +441 -0
  135. package/dist/Editor/Toolbar/PopupTool/index.js +15 -17
  136. package/dist/Editor/Toolbar/Toolbar.js +20 -10
  137. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  138. package/dist/Editor/assets/svg/CalenderIconTick.js +1 -0
  139. package/dist/Editor/assets/svg/ClearAllRounded.js +31 -0
  140. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  141. package/dist/Editor/common/ColorPickerButton.js +45 -10
  142. package/dist/Editor/common/CustomColorPicker/index.js +125 -0
  143. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  144. package/dist/Editor/common/CustomDialog/index.js +8 -10
  145. package/dist/Editor/common/CustomDialog/styles.js +1 -1
  146. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  147. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  148. package/dist/Editor/common/CustomSelect.js +33 -0
  149. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  150. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  151. package/dist/Editor/common/Icon.js +46 -1
  152. package/dist/Editor/common/ImageSelector/ImageSelector.js +10 -8
  153. package/dist/Editor/common/ImageSelector/Options/AddLink.js +6 -4
  154. package/dist/Editor/common/ImageSelector/Options/Upload.js +1 -1
  155. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  156. package/dist/Editor/common/ImageSelector/UploadStyles.js +9 -9
  157. package/dist/Editor/common/LinkSettings/NavComponents.js +14 -10
  158. package/dist/Editor/common/LinkSettings/index.js +20 -14
  159. package/dist/Editor/common/LinkSettings/navOptions.js +1 -1
  160. package/dist/Editor/common/MentionsPopup/Styles.js +111 -73
  161. package/dist/Editor/common/MentionsPopup/index.js +8 -4
  162. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +22 -22
  163. package/dist/Editor/common/RnD/ContextMenu/index.js +3 -2
  164. package/dist/Editor/common/RnD/ElementOptions/index.js +7 -2
  165. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +8 -3
  166. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +7 -3
  167. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  168. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  169. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  170. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  171. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +7 -4
  172. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
  173. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  174. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +6 -2
  175. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
  176. package/dist/Editor/common/RnD/ElementSettings/styles.js +0 -1
  177. package/dist/Editor/common/RnD/OptionsPopup/index.js +4 -3
  178. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -4
  179. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  180. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +20 -8
  181. package/dist/Editor/common/RnD/Utils/gridDropItem.js +58 -7
  182. package/dist/Editor/common/RnD/Utils/index.js +48 -0
  183. package/dist/Editor/common/RnD/VirtualElement/ForceAutoAlignment.js +110 -0
  184. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +112 -0
  185. package/dist/Editor/common/RnD/VirtualElement/helper.js +267 -0
  186. package/dist/Editor/common/RnD/VirtualElement/index.js +186 -104
  187. package/dist/Editor/common/RnD/VirtualElement/styles.js +95 -8
  188. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +5 -3
  189. package/dist/Editor/common/RnD/index.js +82 -10
  190. package/dist/Editor/common/Section/index.js +7 -4
  191. package/dist/Editor/common/Shorthands/elements.js +98 -10
  192. package/dist/Editor/common/SnackBar/index.js +43 -0
  193. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +4 -4
  194. package/dist/Editor/common/StyleBuilder/boxStyle.js +2 -2
  195. package/dist/Editor/common/StyleBuilder/buttonStyle.js +6 -4
  196. package/dist/Editor/common/StyleBuilder/dividerStyles.js +2 -2
  197. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +6 -6
  198. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -2
  199. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +13 -9
  200. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +11 -3
  201. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +19 -5
  202. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +22 -10
  203. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +6 -3
  204. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +27 -13
  205. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +41 -14
  206. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +10 -6
  207. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +19 -6
  208. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +6 -2
  209. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +5 -2
  210. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +9 -6
  211. package/dist/Editor/common/StyleBuilder/fieldTypes/metaDataMapping.js +8 -2
  212. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +12 -11
  213. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +6 -2
  214. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +8 -4
  215. package/dist/Editor/common/StyleBuilder/fieldTypes/textAlign.js +6 -2
  216. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +21 -12
  217. package/dist/Editor/common/StyleBuilder/formStyle.js +7 -7
  218. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +6 -6
  219. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -5
  220. package/dist/Editor/common/StyleBuilder/index.js +8 -5
  221. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +5 -7
  222. package/dist/Editor/common/Uploader.js +16 -5
  223. package/dist/Editor/commonStyle.js +13 -23
  224. package/dist/Editor/helper/index.js +8 -12
  225. package/dist/Editor/helper/textIndeces.js +58 -0
  226. package/dist/Editor/helper/theme.js +200 -2
  227. package/dist/Editor/hooks/useAutoScroll.js +38 -0
  228. package/dist/Editor/hooks/useDrag.js +17 -11
  229. package/dist/Editor/hooks/useEditorScroll.js +10 -6
  230. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  231. package/dist/Editor/hooks/useMouseMove.js +28 -13
  232. package/dist/Editor/hooks/useTable.js +5 -2
  233. package/dist/Editor/plugins/withEmbeds.js +1 -1
  234. package/dist/Editor/plugins/withHTML.js +19 -15
  235. package/dist/Editor/plugins/withLayout.js +3 -2
  236. package/dist/Editor/plugins/withTable.js +1 -1
  237. package/dist/Editor/theme/ThemeList.js +50 -173
  238. package/dist/Editor/theme/index.js +144 -0
  239. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  240. package/dist/Editor/themeSettings/buttons/index.js +285 -0
  241. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  242. package/dist/Editor/themeSettings/colorTheme/index.js +297 -0
  243. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  244. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  245. package/dist/Editor/themeSettings/fonts/index.js +222 -0
  246. package/dist/Editor/themeSettings/fonts/style.js +59 -0
  247. package/dist/Editor/themeSettings/icons.js +60 -0
  248. package/dist/Editor/themeSettings/index.js +328 -0
  249. package/dist/Editor/themeSettings/style.js +193 -0
  250. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  251. package/dist/Editor/themeSettingsAI/index.js +355 -0
  252. package/dist/Editor/themeSettingsAI/saveTheme.js +215 -0
  253. package/dist/Editor/themeSettingsAI/style.js +250 -0
  254. package/dist/Editor/utils/SlateUtilityFunctions.js +171 -47
  255. package/dist/Editor/utils/button.js +7 -2
  256. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +23 -0
  257. package/dist/Editor/utils/dataView.js +5 -2
  258. package/dist/Editor/utils/divider.js +18 -2
  259. package/dist/Editor/utils/draftToSlate.js +3 -2
  260. package/dist/Editor/utils/embed.js +9 -4
  261. package/dist/Editor/utils/font.js +40 -37
  262. package/dist/Editor/utils/freegrid.js +2 -2
  263. package/dist/Editor/utils/helper.js +136 -29
  264. package/dist/Editor/utils/signature.js +5 -2
  265. package/dist/Editor/utils/table.js +53 -37
  266. package/package.json +2 -2
@@ -1,12 +1,28 @@
1
- import { Transforms } from "slate";
1
+ import { Editor, Path, Transforms } from "slate";
2
2
  import insertNewLine from "./insertNewLine";
3
+ import { getCurrentEntry, getCurrentNodeText } from "./helper";
3
4
  export const insertDivider = editor => {
5
+ Transforms.delete(editor, editor.selection);
6
+ const blockText = getCurrentNodeText(editor);
7
+ const {
8
+ currentPath
9
+ } = getCurrentEntry(editor) || {};
4
10
  const divider = {
5
11
  type: "divider",
6
12
  children: [{
7
13
  text: ""
8
14
  }]
9
15
  };
10
- Transforms.insertNodes(editor, divider);
16
+ if (!blockText) {
17
+ Transforms.removeNodes(editor, {
18
+ at: editor?.selection
19
+ });
20
+ }
21
+ const insertPath = blockText ? Path.next(currentPath) : currentPath;
22
+ Transforms.insertNodes(editor, divider, {
23
+ at: insertPath
24
+ });
11
25
  insertNewLine(editor);
26
+ const newLinePath = Path.next(insertPath);
27
+ Transforms.select(editor, Editor.start(editor, newLinePath));
12
28
  };
@@ -82,7 +82,8 @@ const splitInlineStyleRanges = (text, inlineStyleRanges, data) => {
82
82
  };
83
83
  export const draftToSlate = props => {
84
84
  const {
85
- data
85
+ data,
86
+ needLayout
86
87
  } = props;
87
88
  if (data?.blocks && data?.blocks?.length > 0) {
88
89
  const converted = data?.blocks?.reduce((a, b) => {
@@ -104,7 +105,7 @@ export const draftToSlate = props => {
104
105
  return data;
105
106
  } else {
106
107
  return [{
107
- type: "paragraph",
108
+ type: needLayout ? "title" : "paragraph",
108
109
  children: [{
109
110
  text: ""
110
111
  }]
@@ -1,5 +1,6 @@
1
1
  import { Transforms } from "slate";
2
2
  import insertNewLine, { insertNewLineAfterCurrentPath } from "./insertNewLine";
3
+ import { getCurrentNodeText } from "./helper";
3
4
  export const insertDefaultEmbed = (editor, type, defaultURL = "", extProps = {}) => {
4
5
  try {
5
6
  const url = defaultURL ? defaultURL : type === "image" ? "" : "";
@@ -51,11 +52,15 @@ export const createEmbedNode = (type, {
51
52
  });
52
53
  export const insertEmbed = (editor, embedData, format) => {
53
54
  try {
55
+ const blockText = getCurrentNodeText(editor);
54
56
  const embed = createEmbedNode(format, embedData);
55
- Transforms.insertNodes(editor, embed, {
56
- at: editor.selection.anchor.path
57
- });
58
- insertNewLine(editor);
57
+ if (!blockText) {
58
+ Transforms.removeNodes(editor, {
59
+ at: editor?.selection
60
+ });
61
+ insertNewLine(editor);
62
+ }
63
+ Transforms.insertNodes(editor, embed);
59
64
  insertNewLineAfterCurrentPath(editor);
60
65
  } catch (err) {
61
66
  console.log(err);
@@ -7,43 +7,43 @@ export const sizeMap = {
7
7
  export const fontFamilyMap = {
8
8
  PoppinsRegular: "PoppinsRegular",
9
9
  PoppinsBold: "PoppinsBold",
10
- sans: "Helvetica,Arial, sans serif",
11
- serif: "Georgia, Times New Roaman,serif",
12
- monospace: "Monaco, Courier New,monospace",
13
- roboto: "'Roboto', sans-serif",
14
- qwitcher: "'Qwitcher Grypen', cursive",
15
- garamond: "'EB Garamond', serif",
16
- anton: "'Anton', sans-serif",
17
- dmserif: "'DM Serif Text', serif",
18
- inter: "'Inter', sans-serif",
19
- libre: "'Libre Baskerville', serif",
20
- montserrat: "'Montserrat', sans-serif",
21
- opensans: "'Open Sans', sans-serif",
22
- publicsans: "'Public Sans', sans-serif",
23
- raleway: "'Raleway', sans-serif",
24
- spacemono: "'Space Mono', sans-serif",
25
- bulgarian: "'Bulgarian Garamond', monospace",
26
- impact: "'Impact', serif",
27
- redacted: "'Redacted Script', cursive",
28
- greatVibes: "'Great Vibes', cursive",
29
- zeyada: "'Zeyada', cursive",
30
- allura: "'Allura', cursive",
31
- pinyon: "'Pinyon Script', cursive",
32
- muellerhoff: "'Herr Von Muellerhoff', cursive",
33
- dawning: "'Dawning of a New Day', cursive",
10
+ sans: 'Helvetica, Arial, "sans serif"',
11
+ serif: 'Georgia, "Times New Roaman", serif',
12
+ monospace: 'Monaco, "Courier New", monospace',
13
+ roboto: "Roboto, sans-serif",
14
+ qwitcher: '"Qwitcher Grypen", cursive',
15
+ garamond: '"EB Garamond", serif',
16
+ anton: "Anton, sans-serif",
17
+ dmserif: '"DM Serif Text", serif',
18
+ inter: "Inter, sans-serif",
19
+ libre: '"Libre Baskerville", serif',
20
+ montserrat: "Montserrat, sans-serif",
21
+ opensans: '"Open Sans", sans-serif',
22
+ publicsans: '"Public Sans", sans-serif',
23
+ raleway: "Raleway, sans-serif",
24
+ spacemono: '"Space Mono", sans-serif',
25
+ bulgarian: '"Bulgarian Garamond", monospace',
26
+ impact: "Impact, serif",
27
+ redacted: '"Redacted Script", cursive',
28
+ greatVibes: '"Great Vibes", cursive',
29
+ zeyada: "Zeyada, cursive",
30
+ allura: "Allura, cursive",
31
+ pinyon: '"Pinyon Script", cursive',
32
+ muellerhoff: '"Herr Von Muellerhoff", cursive',
33
+ dawning: '"Dawning of a New Day", cursive',
34
34
  // New Font Added for Type Signature
35
- comingsoon: "'Coming Soon', cursive",
36
- dancingScript: "'Dancing Script', cursive",
37
- engagement: "'Engagement', cursive",
38
- gaegu: "'Gaegu', cursive",
39
- ingridDarling: "'Ingrid Darling', cursive",
40
- kitaOne: "'Kite One', sans - serif",
41
- laBelleAurore: "'La Belle Aurore', cursive",
42
- lobster: "'Lobster', cursive",
43
- meaCulpa: "'Mea Culpa', cursive",
44
- meddon: "'Meddon', cursive",
45
- merriWeather: "'Merriweather', serif",
46
- theGirlNextDoor: "'The Girl Next Door', cursive"
35
+ comingsoon: '"Coming Soon", cursive',
36
+ dancingScript: '"Dancing Script", cursive',
37
+ engagement: "Engagement, cursive",
38
+ gaegu: "Gaegu, cursive",
39
+ ingridDarling: '"Ingrid Darling", cursive',
40
+ kitaOne: "Times",
41
+ laBelleAurore: '"La Belle Aurore", cursive',
42
+ lobster: "Lobster, cursive",
43
+ meaCulpa: '"Mea Culpa", cursive',
44
+ meddon: "Meddon, cursive",
45
+ merriWeather: "Merriweather, serif",
46
+ theGirlNextDoor: '"The Girl Next Door", cursive'
47
47
  };
48
48
  export const fontOptions = Object.keys(fontFamilyMap).map(m => {
49
49
  return {
@@ -62,7 +62,10 @@ export const signedTextFonts = Object.keys(fontFamilyMap).slice(-12).map(m => {
62
62
  export const headingMap = {
63
63
  headingOne: "32px",
64
64
  headingTwo: "24px",
65
- headingThree: "19px"
65
+ headingThree: "19px",
66
+ headingFour: "16px",
67
+ headingFive: "13px",
68
+ headingSix: "11px"
66
69
  };
67
70
  export const fontWeightOptions = [{
68
71
  text: "Bold",
@@ -22,8 +22,8 @@ export const insertFreeGridItem = (childType, childTypeNode, extProps = {}, type
22
22
  top_xs: 24,
23
23
  marginTop_xs: 12,
24
24
  width_xs: 250,
25
- height_xs: 300,
26
- gridArea_xs: "1 / 1 / 2 / 2",
25
+ // height_xs: 300,
26
+ // gridArea_xs: "1 / 1 / 2 / 2",
27
27
  sectionBgColor: "rgb(240, 108, 131)",
28
28
  ...(extProps || {})
29
29
  };
@@ -261,7 +261,15 @@ export const customInsertNode = (editor, insertNode, defaultInsertOptions = {})
261
261
  if (isListItem) {
262
262
  insertOptions.at = editor.selection.focus;
263
263
  }
264
- Transforms.insertNodes(editor, insertNode, insertOptions);
264
+ const hasText = getCurrentNodeText(editor);
265
+ if (hasText) {
266
+ Transforms.insertNodes(editor, insertNode, {
267
+ at: Path.next(Path.parent(editor?.selection.focus.path)),
268
+ select: true
269
+ });
270
+ } else {
271
+ Transforms.insertNodes(editor, insertNode, insertOptions);
272
+ }
265
273
  insertNewLine(editor);
266
274
  };
267
275
  export const decodeAndParseBase64 = encodedString => {
@@ -472,6 +480,34 @@ export const decodeString = str => {
472
480
  console.log(err);
473
481
  }
474
482
  };
483
+ export const getContrastColor = color => {
484
+ let r, g, b;
485
+
486
+ // Check if the color is in hex format
487
+ if (color.startsWith("#")) {
488
+ r = parseInt(color.substring(1, 3), 16);
489
+ g = parseInt(color.substring(3, 5), 16);
490
+ b = parseInt(color.substring(5, 7), 16);
491
+ }
492
+ // Check if the color is in RGB/RGBA format
493
+ else if (color.startsWith("rgb")) {
494
+ const rgbValues = color.replace(/^rgba?\(|\s+|\)$/g, "") // Remove the rgb/rgba and spaces
495
+ .split(","); // Split the values into an array
496
+
497
+ r = parseInt(rgbValues[0]);
498
+ g = parseInt(rgbValues[1]);
499
+ b = parseInt(rgbValues[2]);
500
+ } else {
501
+ // If the format is not recognized, default to black text
502
+ return "#000000";
503
+ }
504
+
505
+ // Calculate relative luminance
506
+ const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
507
+
508
+ // Return black for light colors, white for dark colors
509
+ return luminance > 0.5 ? "#000000" : "#FFFFFF";
510
+ };
475
511
  export const onDeleteKey = (event, {
476
512
  editor
477
513
  }) => {
@@ -588,20 +624,38 @@ export const getNextNode = editor => {
588
624
  return;
589
625
  }
590
626
  };
591
- export const getPreviousNode = editor => {
627
+ export const getPreviousEntry = editor => {
592
628
  try {
593
- const parentPath = Path.parent(editor?.selection?.anchor?.path);
594
- const previousPath = Path.previous(parentPath);
595
- const previousNode = Node.get(editor, previousPath);
629
+ const prevEntry = Editor.previous(editor, {
630
+ at: editor.selection,
631
+ match: n => Element.isElement(n)
632
+ });
633
+ if (!prevEntry) return null;
634
+ const [previousNode, previousPath] = prevEntry;
596
635
  return {
597
636
  previousNode,
598
637
  previousPath
599
638
  };
600
- } catch (err) {
639
+ } catch (error) {
640
+ return;
641
+ }
642
+ };
643
+ export const getCurrentEntry = editor => {
644
+ try {
645
+ const currentEntry = Editor.node(editor, editor.selection, {
646
+ depth: 1
647
+ });
648
+ if (!currentEntry) return null;
649
+ const [currentNode, currentPath] = currentEntry;
650
+ return {
651
+ currentNode,
652
+ currentPath
653
+ };
654
+ } catch (error) {
601
655
  return;
602
656
  }
603
657
  };
604
- const isRestricted = node => node?.type === "page-settings" || node?.type === "site-settings" || node?.children?.some(child => child.type === "dataView");
658
+ const isRestricted = node => node?.type === "page-settings" || node?.type === "site-settings" || node?.type === "viewData" || node?.children?.some(child => child.type === "dataView");
605
659
  export const isRestrictedNode = (event, editor) => {
606
660
  let isNodeRestricted = false;
607
661
  try {
@@ -615,15 +669,50 @@ export const isRestrictedNode = (event, editor) => {
615
669
  const {
616
670
  previousNode,
617
671
  previousPath
618
- } = getPreviousNode(editor) || {};
619
- if (isRestricted(previousNode)) {
672
+ } = getPreviousEntry(editor) || {};
673
+ const {
674
+ currentNode
675
+ } = getCurrentEntry(editor) || {};
676
+ if (currentNode?.type === "orderedList" || currentNode?.type === "unorderedList") {
677
+ event.preventDefault();
678
+ const path = selection?.anchor?.path;
679
+ if (!path) return;
680
+
681
+ // Lift the selected list-item out of the list
682
+ Transforms.liftNodes(editor, {
683
+ match: n => n.type === "list-item"
684
+ });
685
+
686
+ // Convert the lifted list-item into a paragraph
687
+ Transforms.setNodes(editor, {
688
+ type: "paragraph"
689
+ }, {
690
+ match: n => n.type === "list-item"
691
+ });
692
+
693
+ // Move focus to the modified paragraph (same path)
694
+ Transforms.select(editor, path);
695
+ } else if (isRestricted(previousNode)) {
620
696
  event.preventDefault(); // stops deleting backward
621
697
 
622
698
  // move the cursor to node which is before page-settings node
623
- const pathBeforePageSettings = Path.previous(previousPath);
699
+ const pathBeforePageSettings = Path.previous([previousPath[0]]);
624
700
  const endPath = Editor.end(editor, pathBeforePageSettings);
625
701
  Transforms.select(editor, endPath);
626
702
  isNodeRestricted = true;
703
+ } else if (previousNode?.type === "divider") {
704
+ event.preventDefault();
705
+ Transforms.removeNodes(editor, {
706
+ at: previousPath
707
+ });
708
+ Transforms.insertNodes(editor, {
709
+ type: "paragraph",
710
+ children: [{
711
+ text: " "
712
+ }]
713
+ }, {
714
+ at: previousPath
715
+ });
627
716
  }
628
717
  }
629
718
  return isNodeRestricted;
@@ -633,6 +722,10 @@ export const isRestrictedNode = (event, editor) => {
633
722
  return isNodeRestricted;
634
723
  }
635
724
  };
725
+ export function capitalizeFirstLetter(str) {
726
+ if (!str) return str;
727
+ return str.charAt(0).toUpperCase() + str.slice(1);
728
+ }
636
729
  export const insertLineBreakAtEndOfPath = (editor, path) => {
637
730
  try {
638
731
  const [node, nodePath] = Editor.node(editor, path); // Get the node at the specified path
@@ -651,6 +744,13 @@ export const insertLineBreakAtEndOfPath = (editor, path) => {
651
744
  console.log(err);
652
745
  }
653
746
  };
747
+ export function isHavingSelection(editor) {
748
+ try {
749
+ return editor?.selection && !Range.isCollapsed(editor.selection);
750
+ } catch (err) {
751
+ console.log(err);
752
+ }
753
+ }
654
754
  const omitNodes = ["site-settings", "page-settings"];
655
755
  export function getInitialValue(value = [], readOnly) {
656
756
  if (readOnly === "readonly" && value?.length) {
@@ -681,20 +781,17 @@ export function getInitialValue(value = [], readOnly) {
681
781
  }
682
782
  return value;
683
783
  }
684
- export function capitalizeFirstLetter(str) {
685
- if (!str) return str;
686
- return str.charAt(0).toUpperCase() + str.slice(1);
687
- }
688
- export function isHavingSelection(editor) {
689
- try {
690
- return editor?.selection && !Range.isCollapsed(editor.selection);
691
- } catch (err) {
692
- console.log(err);
693
- }
694
- }
695
784
  export function getSelectedCls(defaultCls = "", selected, selectedClsName = "selected") {
696
785
  return `${defaultCls} ${selected ? selectedClsName : ""}`;
697
786
  }
787
+ export function handleNegativeInteger(val) {
788
+ return val < 0 ? 0 : val;
789
+ }
790
+ export const containsSurrogatePair = text => {
791
+ // Match surrogate pairs (high and low surrogate)
792
+ const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
793
+ return surrogatePairRegex.test(text);
794
+ };
698
795
  export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
699
796
  try {
700
797
  const options = {
@@ -708,11 +805,6 @@ export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
708
805
  return [];
709
806
  }
710
807
  };
711
- export const containsSurrogatePair = text => {
712
- // Match surrogate pairs (high and low surrogate)
713
- const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
714
- return surrogatePairRegex.test(text);
715
- };
716
808
  export const getSlateDom = (editor, range) => {
717
809
  try {
718
810
  const slateDom = ReactEditor.toDOMRange(editor, range);
@@ -762,9 +854,6 @@ export const hideSlateSelection = () => {
762
854
  const root = document.documentElement;
763
855
  root.style.setProperty("--slate-highlight-bg", "none");
764
856
  };
765
- export function handleNegativeInteger(val) {
766
- return val < 0 ? 0 : val;
767
- }
768
857
  export const isEverythingSelected = editor => {
769
858
  const {
770
859
  selection
@@ -776,4 +865,22 @@ export const isEverythingSelected = editor => {
776
865
  return false;
777
866
  }
778
867
  }
868
+ };
869
+ export const getCurrentNodeText = editor => {
870
+ try {
871
+ const {
872
+ selection
873
+ } = editor;
874
+ if (selection) {
875
+ const [block] = Editor.node(editor, selection, {
876
+ match: n => Editor.isBlock(editor, n)
877
+ });
878
+ const blockText = block?.text;
879
+ return blockText;
880
+ } else {
881
+ return;
882
+ }
883
+ } catch (error) {
884
+ console.log("Error:", error);
885
+ }
779
886
  };
@@ -1,6 +1,9 @@
1
- import { Transforms } from "slate";
1
+ import { Path, Transforms } from "slate";
2
2
  import insertNewLine from "./insertNewLine";
3
+ import { getCurrentElementText } from "../plugins/withHTML";
3
4
  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;
4
7
  const signature = {
5
8
  type: "signature",
6
9
  alignment: "center",
@@ -15,7 +18,7 @@ export const insertSignature = editor => {
15
18
  }]
16
19
  };
17
20
  Transforms.insertNodes(editor, signature, {
18
- at: editor.selection.anchor.path
21
+ at: insertPath
19
22
  });
20
23
  insertNewLine(editor);
21
24
  };
@@ -174,6 +174,14 @@ export class TableUtil {
174
174
  Transforms.removeNodes(this.editor, {
175
175
  match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
176
176
  });
177
+ if (this.editor.children.length === 0) {
178
+ Transforms.insertNodes(this.editor, {
179
+ type: "paragraph",
180
+ children: [{
181
+ text: ""
182
+ }]
183
+ });
184
+ }
177
185
  }
178
186
  };
179
187
  duplicateTable = () => {
@@ -442,51 +450,53 @@ export class TableUtil {
442
450
  at: currentTablePath
443
451
  });
444
452
  Transforms.setNodes(this.editor, {
445
- ...rowProps,
446
- tableBorder: tableProps?.borderColor
453
+ ...rowProps
447
454
  }, {
448
455
  at: currentRowPath
449
456
  });
450
457
  Transforms.setNodes(this.editor, {
451
- ...cellProps,
452
- rowBorder: rowProps?.borderColor,
453
- tableBorder: tableProps?.borderColor
458
+ ...cellProps
454
459
  }, {
455
460
  at: currentCellPath
456
461
  });
457
462
  applyColumnStyle(this.editor, currentCellPath, currentTablePath, cellProps, tableProps?.rows);
458
463
 
459
464
  // cell bg entire
460
- if (cellProps?.entireBgColor || tableProps?.borderColor || rowProps?.borderColor) {
461
- const {
462
- rows
463
- } = tableProps;
464
- for (let r = 0; r < rows; r++) {
465
- Transforms.setNodes(this.editor, {
466
- entireBgColor: cellProps?.entireBgColor
467
- }, {
468
- at: [currentCellPath[0], r, currentCellPath[2]]
469
- });
470
- }
471
- }
465
+ // if (
466
+ // cellProps?.entireBgColor ||
467
+ // tableProps?.borderColor ||
468
+ // rowProps?.borderColor
469
+ // ) {
470
+ // const { rows } = tableProps;
471
+
472
+ // for (let r = 0; r < rows; r++) {
473
+ // Transforms.setNodes(
474
+ // this.editor,
475
+ // {
476
+ // entireBgColor: cellProps?.entireBgColor,
477
+ // },
478
+ // { at: [currentCellPath[0], r, currentCellPath[2]] }
479
+ // );
480
+ // }
481
+ // }
472
482
 
473
483
  // cell border all
474
- if (tableProps?.borderColor || rowProps?.borderColor) {
475
- const {
476
- rows,
477
- columns
478
- } = tableProps;
479
- for (let r = 0; r < rows; r++) {
480
- for (let c = 0; c < columns; c++) {
481
- Transforms.setNodes(this.editor, {
482
- entireBorderColor: tableProps?.borderColor,
483
- rowBorder: rowProps?.borderColor
484
- }, {
485
- at: [currentCellPath[0], r, c]
486
- });
487
- }
488
- }
489
- }
484
+ // if (tableProps?.borderColor || rowProps?.borderColor) {
485
+ // const { rows, columns } = tableProps;
486
+
487
+ // for (let r = 0; r < rows; r++) {
488
+ // for (let c = 0; c < columns; c++) {
489
+ // Transforms.setNodes(
490
+ // this.editor,
491
+ // {
492
+ // entireBorderColor: tableProps?.borderColor,
493
+ // rowBorder: rowProps?.borderColor,
494
+ // },
495
+ // { at: [currentCellPath[0], r, c] }
496
+ // );
497
+ // }
498
+ // }
499
+ // }
490
500
  }
491
501
  } catch (err) {
492
502
  console.log(err);
@@ -500,19 +510,25 @@ export class TableUtil {
500
510
  at: path
501
511
  });
502
512
  };
503
- getTableProps = () => {
513
+ getTableProps = otherOptions => {
504
514
  const {
505
515
  selection
506
516
  } = this.editor;
517
+ const options = {
518
+ ...(otherOptions || {})
519
+ };
507
520
  if (!!selection && Range.isCollapsed(selection)) {
508
521
  const [tableNode] = Editor.nodes(this.editor, {
509
- match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
522
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table",
523
+ ...options
510
524
  });
511
525
  const [tableCellNode] = Editor.nodes(this.editor, {
512
- match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-cell"
526
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-cell",
527
+ ...options
513
528
  });
514
529
  const [tableRowNode] = Editor.nodes(this.editor, {
515
- match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-row"
530
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-row",
531
+ ...options
516
532
  });
517
533
  if (tableNode && tableCellNode && tableRowNode) {
518
534
  const [currentTable, currentTablePath] = tableNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "9.3.7",
3
+ "version": "9.3.8",
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",