@flozy/editor 9.8.3 → 9.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/dist/Editor/ChatEditor.js +26 -19
  2. package/dist/Editor/CommonEditor.js +141 -26
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +11 -7
  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 +15 -5
  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 +43 -30
  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 +10 -7
  28. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  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 -2
  33. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +448 -0
  34. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +21 -6
  35. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +13 -12
  36. package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +7 -4
  37. package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +7 -5
  38. package/dist/Editor/Elements/DataView/Layouts/FilterView.js +9 -7
  39. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +8 -3
  40. package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +5 -3
  41. package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +6 -5
  42. package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +5 -3
  43. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +9 -7
  44. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +15 -12
  45. package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +3 -2
  46. package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +3 -2
  47. package/dist/Editor/Elements/DataView/Layouts/Options/index.js +23 -6
  48. package/dist/Editor/Elements/DataView/Layouts/TableView.js +6 -4
  49. package/dist/Editor/Elements/DataView/Layouts/ViewData.js +8 -4
  50. package/dist/Editor/Elements/DataView/Layouts/index.js +3 -1
  51. package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +5 -2
  52. package/dist/Editor/Elements/Divider/Divider.js +5 -3
  53. package/dist/Editor/Elements/Divider/DividerButton.js +6 -2
  54. package/dist/Editor/Elements/Divider/DividerPopup.js +3 -2
  55. package/dist/Editor/Elements/Embed/Embed.js +4 -1
  56. package/dist/Editor/Elements/Embed/EmbedPopup.js +4 -1
  57. package/dist/Editor/Elements/Embed/Image.js +16 -11
  58. package/dist/Editor/Elements/Embed/Video.js +10 -7
  59. package/dist/Editor/Elements/EmbedScript/Code.js +7 -4
  60. package/dist/Editor/Elements/EmbedScript/EmbedScript.js +6 -2
  61. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +8 -5
  62. package/dist/Editor/Elements/Emoji/EmojiButton.js +6 -2
  63. package/dist/Editor/Elements/Form/FieldPopup.js +4 -1
  64. package/dist/Editor/Elements/Form/Form.js +12 -9
  65. package/dist/Editor/Elements/Form/FormButton.js +6 -2
  66. package/dist/Editor/Elements/Form/FormPopup.js +3 -2
  67. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +18 -12
  68. package/dist/Editor/Elements/Form/Workflow/ListWorkflow.js +13 -8
  69. package/dist/Editor/Elements/Form/Workflow/MoreOptions.js +3 -2
  70. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  71. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +4 -2
  72. package/dist/Editor/Elements/Form/Workflow/index.js +15 -9
  73. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +67 -23
  74. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +31 -6
  75. package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +6 -2
  76. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +54 -6
  77. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +3 -2
  78. package/dist/Editor/Elements/FreeGrid/Options/More.js +10 -4
  79. package/dist/Editor/Elements/FreeGrid/styles.js +3 -0
  80. package/dist/Editor/Elements/Grid/Grid.js +13 -10
  81. package/dist/Editor/Elements/Grid/GridButton.js +9 -5
  82. package/dist/Editor/Elements/Grid/GridItem.js +14 -8
  83. package/dist/Editor/Elements/Grid/GridItemPopup.js +4 -1
  84. package/dist/Editor/Elements/Grid/GridPopup.js +4 -1
  85. package/dist/Editor/Elements/Grid/SectionPopup.js +4 -1
  86. package/dist/Editor/Elements/Link/Link.js +8 -5
  87. package/dist/Editor/Elements/Link/LinkButton.js +4 -1
  88. package/dist/Editor/Elements/List/CheckList.js +18 -10
  89. package/dist/Editor/Elements/NewLine/NewLineButton.js +6 -2
  90. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +4 -1
  91. package/dist/Editor/Elements/PageSettings/PageSettingsPopup.js +4 -1
  92. package/dist/Editor/Elements/Search/SearchButton.js +7 -4
  93. package/dist/Editor/Elements/Search/SearchList.js +10 -5
  94. package/dist/Editor/Elements/Signature/SignatureButton.js +6 -2
  95. package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +2 -8
  96. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +6 -2
  97. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +4 -1
  98. package/dist/Editor/Elements/Signature/SignaturePopup.js +17 -16
  99. package/dist/Editor/Elements/SimpleText/index.js +14 -5
  100. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  101. package/dist/Editor/Elements/Table/DragButton.js +4 -2
  102. package/dist/Editor/Elements/Table/Table.js +23 -11
  103. package/dist/Editor/Elements/Table/TablePopup.js +4 -1
  104. package/dist/Editor/Elements/Table/TableSelector.js +10 -6
  105. package/dist/Editor/Elements/Table/TableTool.js +8 -4
  106. package/dist/Editor/Elements/Title/title.js +9 -8
  107. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +4 -1
  108. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  109. package/dist/Editor/MiniEditor.js +10 -3
  110. package/dist/Editor/Styles/EditorStyles.js +5 -5
  111. package/dist/Editor/Toolbar/Basic/index.js +2 -1
  112. package/dist/Editor/Toolbar/FormatTools/BlockButton.js +6 -2
  113. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  114. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  115. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +8 -4
  116. package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
  117. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +17 -5
  118. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +10 -5
  119. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +10 -4
  120. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +10 -4
  121. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +9 -3
  122. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectAlignment.js +42 -35
  123. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  124. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +58 -51
  125. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +29 -22
  126. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +226 -87
  127. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +20 -10
  128. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +10 -5
  129. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +71 -11
  130. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +11 -5
  131. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +122 -42
  132. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +436 -0
  133. package/dist/Editor/Toolbar/PopupTool/index.js +18 -2
  134. package/dist/Editor/Toolbar/Toolbar.js +20 -10
  135. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  136. package/dist/Editor/assets/svg/ClearAllRounded.js +31 -0
  137. package/dist/Editor/assets/svg/ResetIconNew.js +23 -0
  138. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  139. package/dist/Editor/common/ColorPickerButton.js +39 -14
  140. package/dist/Editor/common/CustomColorPicker/index.js +131 -0
  141. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  142. package/dist/Editor/common/CustomDialog/index.js +8 -10
  143. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  144. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  145. package/dist/Editor/common/CustomSelect.js +43 -0
  146. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  147. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  148. package/dist/Editor/common/Icon.js +31 -1
  149. package/dist/Editor/common/ImageSelector/ImageSelector.js +10 -8
  150. package/dist/Editor/common/ImageSelector/Options/AddLink.js +6 -4
  151. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  152. package/dist/Editor/common/LinkSettings/NavComponents.js +14 -10
  153. package/dist/Editor/common/LinkSettings/index.js +20 -14
  154. package/dist/Editor/common/LinkSettings/navOptions.js +1 -1
  155. package/dist/Editor/common/MUIIcon/index.js +0 -3
  156. package/dist/Editor/common/MentionsPopup/index.js +6 -2
  157. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +46 -22
  158. package/dist/Editor/common/RnD/ContextMenu/index.js +3 -2
  159. package/dist/Editor/common/RnD/ElementOptions/index.js +7 -2
  160. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +8 -3
  161. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +7 -3
  162. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  163. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  164. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  165. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  166. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +7 -4
  167. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
  168. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  169. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +6 -2
  170. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
  171. package/dist/Editor/common/RnD/OptionsPopup/index.js +4 -3
  172. package/dist/Editor/common/RnD/ShadowElement.js +2 -1
  173. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -4
  174. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  175. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  176. package/dist/Editor/common/RnD/Utils/gridDropItem.js +73 -9
  177. package/dist/Editor/common/RnD/Utils/index.js +3 -0
  178. package/dist/Editor/common/RnD/VirtualElement/BoxHeaderAutoAlignment.js +43 -0
  179. package/dist/Editor/common/RnD/VirtualElement/ForceAutoAlignment.js +44 -0
  180. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +134 -0
  181. package/dist/Editor/common/RnD/VirtualElement/helper.js +382 -0
  182. package/dist/Editor/common/RnD/VirtualElement/index.js +187 -103
  183. package/dist/Editor/common/RnD/VirtualElement/styles.js +155 -7
  184. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +5 -3
  185. package/dist/Editor/common/RnD/index.js +69 -13
  186. package/dist/Editor/common/Section/index.js +7 -4
  187. package/dist/Editor/common/Shorthands/elements.js +72 -3
  188. package/dist/Editor/common/SnackBar/index.js +43 -0
  189. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +4 -4
  190. package/dist/Editor/common/StyleBuilder/boxStyle.js +2 -2
  191. package/dist/Editor/common/StyleBuilder/buttonStyle.js +6 -4
  192. package/dist/Editor/common/StyleBuilder/dividerStyles.js +2 -2
  193. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +6 -6
  194. package/dist/Editor/common/StyleBuilder/fieldStyle.js +2 -2
  195. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +13 -9
  196. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +11 -3
  197. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +19 -5
  198. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +22 -10
  199. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +6 -3
  200. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +27 -13
  201. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +43 -14
  202. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +10 -6
  203. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +19 -6
  204. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +6 -2
  205. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +5 -2
  206. package/dist/Editor/common/StyleBuilder/fieldTypes/lineSpacing.js +7 -6
  207. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +9 -6
  208. package/dist/Editor/common/StyleBuilder/fieldTypes/metaDataMapping.js +8 -2
  209. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +12 -11
  210. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +6 -2
  211. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +8 -4
  212. package/dist/Editor/common/StyleBuilder/fieldTypes/textAlign.js +6 -2
  213. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +21 -12
  214. package/dist/Editor/common/StyleBuilder/formStyle.js +7 -7
  215. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +6 -6
  216. package/dist/Editor/common/StyleBuilder/gridStyle.js +5 -5
  217. package/dist/Editor/common/StyleBuilder/index.js +8 -5
  218. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +5 -7
  219. package/dist/Editor/common/SwipeableDrawer/index.js +1 -1
  220. package/dist/Editor/common/Uploader.js +16 -5
  221. package/dist/Editor/commonStyle.js +68 -57
  222. package/dist/Editor/helper/index.js +27 -3
  223. package/dist/Editor/helper/textIndeces.js +58 -0
  224. package/dist/Editor/helper/theme.js +202 -2
  225. package/dist/Editor/hooks/useAutoScroll.js +38 -0
  226. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  227. package/dist/Editor/hooks/useMouseMove.js +9 -3
  228. package/dist/Editor/hooks/useThemeValues.js +63 -0
  229. package/dist/Editor/plugins/withEmbeds.js +1 -1
  230. package/dist/Editor/plugins/withHTML.js +11 -9
  231. package/dist/Editor/plugins/withLayout.js +3 -2
  232. package/dist/Editor/plugins/withLinks.js +10 -0
  233. package/dist/Editor/plugins/withTable.js +1 -1
  234. package/dist/Editor/theme/ThemeList.js +50 -173
  235. package/dist/Editor/theme/index.js +149 -0
  236. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  237. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  238. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  239. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  240. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  241. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  242. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  243. package/dist/Editor/themeSettings/fonts/style.js +61 -0
  244. package/dist/Editor/themeSettings/icons.js +60 -0
  245. package/dist/Editor/themeSettings/index.js +351 -0
  246. package/dist/Editor/themeSettings/style.js +220 -0
  247. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  248. package/dist/Editor/themeSettingsAI/index.js +355 -0
  249. package/dist/Editor/themeSettingsAI/saveTheme.js +205 -0
  250. package/dist/Editor/themeSettingsAI/style.js +259 -0
  251. package/dist/Editor/utils/SlateUtilityFunctions.js +186 -54
  252. package/dist/Editor/utils/brains.js +1 -2
  253. package/dist/Editor/utils/draftToSlate.js +3 -2
  254. package/dist/Editor/utils/font.js +40 -37
  255. package/dist/Editor/utils/freegrid.js +3 -3
  256. package/dist/Editor/utils/helper.js +92 -21
  257. package/package.json +4 -4
@@ -1,6 +1,7 @@
1
- import { Transforms, Node, Path } from "slate";
1
+ import { Transforms, Node, Path, Editor } from "slate";
2
2
  import { ReactEditor } from "slate-react";
3
- import { handleNegativeInteger } from "../../../utils/helper";
3
+ import { getNode, handleNegativeInteger } from "../../../utils/helper";
4
+ import { handleBoxAlignment } from "../VirtualElement/helper";
4
5
  export const ROW_HEIGHT = 50;
5
6
 
6
7
  // const MARGIN_OF = {
@@ -21,9 +22,18 @@ export function updateRows() {}
21
22
  export function updateCols() {}
22
23
  const handleMoveNode = (editor, path, newPath, {
23
24
  isEmpty
24
- }) => {
25
+ }, autoAlign) => {
25
26
  try {
26
- const replaceNode = Node.get(editor, path);
27
+ let replaceNode = Node.get(editor, path);
28
+ if (autoAlign) {
29
+ // reset node for auto alignment in mobile
30
+ replaceNode = {
31
+ ...replaceNode,
32
+ gridArea_xs: null,
33
+ xs_updatedOn: null,
34
+ marginTop_xs: null
35
+ };
36
+ }
27
37
  if (isEmpty) {
28
38
  const toPath = [...newPath, 0];
29
39
  Transforms.insertNodes(editor, [{
@@ -57,9 +67,10 @@ const handleMoveNode = (editor, path, newPath, {
57
67
  * This method will update prop in child node so it will re-render and update the path
58
68
  * @param {*} path - contains the parent section path
59
69
  */
60
- const reRenderChildNodes = (editor, path) => {
70
+ export const reRenderChildNodes = (editor, path) => {
61
71
  try {
62
72
  const sectionNode = Node.get(editor, path);
73
+
63
74
  // parent node
64
75
  Transforms.setNodes(editor, {
65
76
  updated_at: new Date().getTime()
@@ -77,6 +88,23 @@ const reRenderChildNodes = (editor, path) => {
77
88
  console.log(err);
78
89
  }
79
90
  };
91
+ function getLeft(editor, moveToNode, moveTopath, appenBp) {
92
+ let topBoxNode = moveToNode;
93
+ let left = topBoxNode[`left${appenBp}`];
94
+ if (moveToNode?.type === "freegridBox") {
95
+ const [firstNode] = Array.from([...Editor.nodes(editor, {
96
+ at: moveTopath,
97
+ match: n => n.type === "freegridBox",
98
+ reverse: true
99
+ })]);
100
+ if (firstNode?.length && firstNode[1].toString() !== moveTopath?.toString()) {
101
+ const parentBoxNode = firstNode[0];
102
+ const parentLeft = parentBoxNode[`left${appenBp}`];
103
+ left += parentLeft;
104
+ }
105
+ }
106
+ return left;
107
+ }
80
108
  function isContainerElement(editor, moveTopath, props, appenBp) {
81
109
  try {
82
110
  const {
@@ -93,7 +121,7 @@ function isContainerElement(editor, moveTopath, props, appenBp) {
93
121
  parentNode = Node.get(editor, Path.parent(dragItemPath));
94
122
  }
95
123
  const moveToNode = Node.get(editor, moveTopath);
96
- const leftOfMoveToNode = moveToNode[`left${appenBp}`];
124
+ const leftOfMoveToNode = getLeft(editor, moveToNode, moveTopath, appenBp);
97
125
  if (moveToNode.type === "freegridBox") {
98
126
  if (parentNode.type === "freegridBox") {
99
127
  // same box
@@ -127,6 +155,9 @@ function isContainerElement(editor, moveTopath, props, appenBp) {
127
155
  console.log(err);
128
156
  }
129
157
  }
158
+ const isInsidePath = (from, moveTo) => {
159
+ return Path.isAncestor(from, moveTo);
160
+ };
130
161
  export function onDropItem(props, parentClass) {
131
162
  try {
132
163
  const {
@@ -174,7 +205,17 @@ export function onDropItem(props, parentClass) {
174
205
  }, {
175
206
  at: path
176
207
  });
177
- reRenderChildNodes(editor, from);
208
+ let reRenderSectionPath;
209
+ const [sectionData] = Editor.nodes(editor, {
210
+ at: moveTo,
211
+ match: n => n.type === "freegrid"
212
+ });
213
+ const [sectionNode, sectionPath] = sectionData || [];
214
+ if (needMove && isInsidePath(from, moveTo)) {
215
+ reRenderSectionPath = sectionPath;
216
+ } else {
217
+ reRenderChildNodes(editor, from);
218
+ }
178
219
 
179
220
  // move the node if section parent changed
180
221
  if (needMove) {
@@ -183,10 +224,33 @@ export function onDropItem(props, parentClass) {
183
224
  if (!isEmpty) {
184
225
  newPath = [...newPath, toSectionNode?.children?.length];
185
226
  }
227
+ const autoAlign = breakpoint === "lg";
228
+ const currentNode = getNode(editor, path);
229
+ const isBoxHeader = currentNode?.childType === "appHeader" && moveTo?.length > 2;
230
+ if (isBoxHeader) {
231
+ // will handle on <BoxHeaderAutoAlignment />
232
+ } else if (moveTo?.length === 2 && autoAlign) {
233
+ // auto align in mobile
234
+ Transforms.setNodes(editor, {
235
+ xs_updatedOn: null
236
+ }, {
237
+ at: moveTo
238
+ });
239
+ } else if (autoAlign) {
240
+ Transforms.setNodes(editor, {
241
+ autoAlign: true,
242
+ xs_updatedOn: new Date().getTime()
243
+ }, {
244
+ at: moveTo
245
+ });
246
+ }
186
247
  const rPath = handleMoveNode(editor, path, newPath, {
187
248
  isEmpty
188
- });
189
- reRenderChildNodes(editor, moveTo);
249
+ }, autoAlign);
250
+ reRenderChildNodes(editor, reRenderSectionPath || moveTo);
251
+ if (autoAlign && !isBoxHeader) {
252
+ handleBoxAlignment(editor, sectionNode, sectionPath);
253
+ }
190
254
  return {
191
255
  updated_at: rPath
192
256
  };
@@ -293,4 +293,7 @@ export function getAbsolutePositionY(currentEle) {
293
293
  gridArea,
294
294
  marginTop
295
295
  };
296
+ }
297
+ export function getPathFromElement(element) {
298
+ return element?.dataset.path?.split("|").map(m => parseInt(m));
296
299
  }
@@ -0,0 +1,43 @@
1
+ import { Box } from "@mui/material";
2
+ import { useAutoAlignStyles } from "./styles";
3
+ import { useEffect, useRef } from "react";
4
+ import updateAutoProps from "./updateAutoProps";
5
+ import { reRenderChildNodes } from "../Utils/gridDropItem";
6
+ import { calculateProps, sortElements } from "./helper";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const appendItems = (boxCls, virtualRef, ROOT_ITEM_CLASS) => {
9
+ const cloneNode = document.querySelector(boxCls)?.cloneNode(true);
10
+ const items = cloneNode.querySelectorAll(ROOT_ITEM_CLASS);
11
+ if (!cloneNode || !items?.length) {
12
+ return;
13
+ }
14
+ virtualRef.current.innerHTML = "";
15
+ const container = virtualRef?.current;
16
+ sortElements(items, container);
17
+ };
18
+ function BoxHeaderAutoAlignment(props) {
19
+ const {
20
+ editor,
21
+ boxCls,
22
+ path
23
+ } = props;
24
+ const classes = useAutoAlignStyles();
25
+ const virtualRef = useRef();
26
+ useEffect(() => {
27
+ const childPathLength = path?.split("|").length + 1;
28
+ const ROOT_ITEM_CLASS = `.freegrid-item.path-${childPathLength}`;
29
+ appendItems(boxCls, virtualRef, ROOT_ITEM_CLASS);
30
+ const allData = calculateProps(path, virtualRef?.current, ROOT_ITEM_CLASS, [], null, true);
31
+ updateAutoProps(editor, allData, "xs", true);
32
+ const currentSectionPath = path.split("|").map(m => parseInt(m));
33
+ reRenderChildNodes(editor, currentSectionPath);
34
+ }, []);
35
+ return /*#__PURE__*/_jsx(Box, {
36
+ className: "header-box-mobile-virtual-mode",
37
+ ref: virtualRef,
38
+ sx: classes.root,
39
+ "aria-hidden": "true",
40
+ contentEditable: false
41
+ });
42
+ }
43
+ export default BoxHeaderAutoAlignment;
@@ -0,0 +1,44 @@
1
+ import { Box } from "@mui/material";
2
+ import { useAutoAlignStyles } from "./styles";
3
+ import { useEffect, useRef } from "react";
4
+ import { reRenderChildNodes } from "../Utils/gridDropItem";
5
+ import updateAutoProps from "./updateAutoProps";
6
+ import { calculateProps, sortElements } from "./helper";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const ROOT_ITEM_CLASS = ".freegrid-item.path-3";
9
+ const appendItems = (sectionCls, virtualRef) => {
10
+ const cloneNode = document.querySelector(sectionCls)?.cloneNode(true);
11
+ const items = cloneNode?.querySelectorAll(ROOT_ITEM_CLASS) || [];
12
+ if (!cloneNode || !items?.length) {
13
+ return;
14
+ }
15
+ virtualRef.current.innerHTML = "";
16
+ const container = virtualRef?.current;
17
+ sortElements(items, container);
18
+ };
19
+ function ForceAutoAlignment(props) {
20
+ const {
21
+ editor,
22
+ sectionCls,
23
+ path,
24
+ setAutoAlign
25
+ } = props;
26
+ const classes = useAutoAlignStyles();
27
+ const virtualRef = useRef();
28
+ useEffect(() => {
29
+ appendItems(sectionCls, virtualRef);
30
+ const allData = calculateProps(path, virtualRef?.current, ROOT_ITEM_CLASS, []);
31
+ updateAutoProps(editor, allData, "xs", true);
32
+ const currentSectionPath = path.split("|").map(m => parseInt(m));
33
+ reRenderChildNodes(editor, currentSectionPath);
34
+ setAutoAlign(false);
35
+ }, []);
36
+ return /*#__PURE__*/_jsx(Box, {
37
+ className: "force-mobile-virtual-mode",
38
+ ref: virtualRef,
39
+ sx: classes.root,
40
+ "aria-hidden": "true",
41
+ contentEditable: false
42
+ });
43
+ }
44
+ export default ForceAutoAlignment;
@@ -0,0 +1,134 @@
1
+ import { useEffect, useRef } from "react";
2
+ import { Path, Transforms } from "slate";
3
+ import { getNode } from "../../../utils/helper";
4
+ import { ROW_HEIGHT } from "../Utils/gridDropItem";
5
+ import { findFirstRowOverlap, getGridArea, handleContainers, moveOverlappedItems } from "./helper";
6
+ import { Box } from "@mui/material";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const updateTextHeight = (editor, path, height) => {
9
+ if (!height) {
10
+ return;
11
+ }
12
+ const parentPath = Path.parent(path);
13
+ const currentNode = getNode(editor, parentPath);
14
+ const gridItems = currentNode?.children || [];
15
+ const isNewlyAddedElement = gridItems.some(gridItem => !gridItem.gridArea_xs && gridItem.type !== "paragraph");
16
+ if (isNewlyAddedElement) {
17
+ return;
18
+ }
19
+ const textItemIndex = path[parentPath.length];
20
+ const textItem = gridItems.find((_, index) => textItemIndex === index);
21
+ const {
22
+ marginTop_xs: marginTop,
23
+ gridArea_xs: gridArea,
24
+ height_xs
25
+ } = textItem;
26
+ const oldHeight = height_xs + marginTop;
27
+ const newHeight = height + marginTop;
28
+ const extraHeight = newHeight - oldHeight;
29
+ let containerExtraHeight = extraHeight;
30
+ if (extraHeight > 0) {
31
+ const [startRow] = getGridArea(gridArea);
32
+ const newRows = Math.floor(newHeight / ROW_HEIGHT) + 1;
33
+ const endRow = startRow + newRows;
34
+ const firstOverlappedRow = findFirstRowOverlap(gridItems, startRow, endRow, textItemIndex);
35
+ if (firstOverlappedRow) {
36
+ const moveRows = endRow - firstOverlappedRow;
37
+ moveOverlappedItems(editor, moveRows, gridItems, parentPath, textItemIndex, startRow);
38
+ containerExtraHeight += moveRows * ROW_HEIGHT;
39
+ }
40
+
41
+ // handle containers (box and section)
42
+ const containerData = handleContainers(editor, parentPath, containerExtraHeight);
43
+ containerData.forEach(container => {
44
+ const {
45
+ moveRows,
46
+ containerNode,
47
+ containerPath,
48
+ newHeight,
49
+ childIndex,
50
+ lastChildStartRow
51
+ } = container;
52
+ if (moveRows) {
53
+ moveOverlappedItems(editor, moveRows, containerNode?.children, containerPath, childIndex, lastChildStartRow);
54
+ }
55
+ Transforms.setNodes(editor, {
56
+ height_xs: newHeight,
57
+ xs_updatedOn: new Date().getTime()
58
+ }, {
59
+ at: containerPath
60
+ });
61
+ });
62
+ Transforms.setNodes(editor, {
63
+ height_xs: height
64
+ }, {
65
+ at: path
66
+ });
67
+ }
68
+ };
69
+ function VirtualTextElement(props) {
70
+ const {
71
+ dataSets,
72
+ getCurrentEle,
73
+ path,
74
+ editor
75
+ } = props;
76
+ const currElement = getCurrentEle();
77
+ const textRef = useRef(null);
78
+ const prevTextRef = useRef(currElement?.innerText);
79
+ useEffect(() => {
80
+ const observer = new ResizeObserver(([entry]) => {
81
+ if (entry) {
82
+ const {
83
+ height
84
+ } = entry.contentRect;
85
+ const currentText = currElement?.innerText;
86
+ const prevText = prevTextRef.current;
87
+ if (currentText && currentText !== prevText) {
88
+ updateTextHeight(editor, path, height);
89
+ }
90
+ prevTextRef.current = currentText;
91
+ }
92
+ });
93
+ const elementRef = textRef?.current;
94
+ if (elementRef) {
95
+ observer.observe(elementRef);
96
+ }
97
+ return () => {
98
+ const elementRef = textRef?.current;
99
+ if (elementRef) {
100
+ observer.unobserve(elementRef);
101
+ }
102
+ observer.disconnect();
103
+ };
104
+ }, [currElement?.innerText]);
105
+ return /*#__PURE__*/_jsx(Box, {
106
+ style: {
107
+ position: "fixed",
108
+ width: dataSets["data-width-xs"],
109
+ minHeight: "fit-content",
110
+ visibility: "hidden",
111
+ pointerEvents: "none",
112
+ right: 100,
113
+ top: 100
114
+ },
115
+ ref: textRef,
116
+ sx: {
117
+ "& .leaf-item": {
118
+ fontSize: "var(--fontSize_xs) !important",
119
+ "& span": {
120
+ fontSize: "var(--fontSize_xs) !important"
121
+ }
122
+ },
123
+ "& .editor-blocker": {
124
+ display: "none"
125
+ }
126
+ },
127
+ dangerouslySetInnerHTML: {
128
+ __html: currElement?.innerHTML
129
+ },
130
+ contentEditable: false,
131
+ id: "virtual-text-element"
132
+ });
133
+ }
134
+ export default VirtualTextElement;