@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
@@ -0,0 +1,112 @@
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 { jsx as _jsx } from "react/jsx-runtime";
7
+ const updateTextHeight = (editor, path, height) => {
8
+ if (!height) {
9
+ return;
10
+ }
11
+ const parentPath = Path.parent(path);
12
+ const currentNode = getNode(editor, parentPath);
13
+ const gridItems = currentNode?.children || [];
14
+ const isNewlyAddedElement = gridItems.some(gridItem => !gridItem.gridArea_xs && gridItem.type !== "paragraph");
15
+ if (isNewlyAddedElement) {
16
+ return;
17
+ }
18
+ const textItemIndex = path[parentPath.length];
19
+ const textItem = gridItems.find((_, index) => textItemIndex === index);
20
+ const {
21
+ marginTop_xs: marginTop,
22
+ gridArea_xs: gridArea,
23
+ height_xs
24
+ } = textItem;
25
+ const oldHeight = height_xs + marginTop;
26
+ const newHeight = height + marginTop;
27
+ const extraHeight = newHeight - oldHeight;
28
+ let containerExtraHeight = extraHeight;
29
+ if (extraHeight > 0) {
30
+ const [startRow] = getGridArea(gridArea);
31
+ const newRows = Math.floor(newHeight / ROW_HEIGHT) + 1;
32
+ const endRow = startRow + newRows;
33
+ const firstOverlappedRow = findFirstRowOverlap(gridItems, startRow, endRow, textItemIndex);
34
+ if (firstOverlappedRow) {
35
+ const moveRows = endRow - firstOverlappedRow;
36
+ moveOverlappedItems(editor, moveRows, gridItems, parentPath, textItemIndex, startRow);
37
+ containerExtraHeight += moveRows * ROW_HEIGHT;
38
+ }
39
+
40
+ // handle containers (box and section)
41
+ const containerData = handleContainers(editor, parentPath, containerExtraHeight);
42
+ containerData.forEach(container => {
43
+ const {
44
+ moveRows,
45
+ containerNode,
46
+ containerPath,
47
+ newHeight,
48
+ childIndex,
49
+ lastChildStartRow
50
+ } = container;
51
+ if (moveRows) {
52
+ moveOverlappedItems(editor, moveRows, containerNode?.children, containerPath, childIndex, lastChildStartRow);
53
+ }
54
+ Transforms.setNodes(editor, {
55
+ height_xs: newHeight,
56
+ xs_updatedOn: new Date().getTime()
57
+ }, {
58
+ at: containerPath
59
+ });
60
+ });
61
+ Transforms.setNodes(editor, {
62
+ height_xs: height
63
+ }, {
64
+ at: path
65
+ });
66
+ }
67
+ };
68
+ function VirtualTextElement(props) {
69
+ const {
70
+ dataSets,
71
+ getCurrentEle,
72
+ path,
73
+ editor
74
+ } = props;
75
+ const textRef = useRef(null);
76
+ const currElement = getCurrentEle();
77
+ useEffect(() => {
78
+ const observer = new ResizeObserver(([entry]) => {
79
+ if (entry) {
80
+ const {
81
+ height
82
+ } = entry.contentRect;
83
+ updateTextHeight(editor, path, height);
84
+ }
85
+ });
86
+ const elementRef = textRef?.current;
87
+ if (elementRef) {
88
+ observer.observe(elementRef);
89
+ }
90
+ return () => {
91
+ const elementRef = textRef?.current;
92
+ if (elementRef) {
93
+ observer.unobserve(elementRef);
94
+ }
95
+ observer.disconnect();
96
+ };
97
+ }, []);
98
+ return /*#__PURE__*/_jsx("div", {
99
+ style: {
100
+ position: "fixed",
101
+ width: dataSets["data-width-xs"],
102
+ minHeight: "fit-content",
103
+ visibility: "hidden",
104
+ pointerEvents: "none",
105
+ right: 0,
106
+ top: 0
107
+ },
108
+ ref: textRef,
109
+ children: currElement?.innerText
110
+ });
111
+ }
112
+ export default VirtualTextElement;
@@ -0,0 +1,267 @@
1
+ import { ROW_HEIGHT } from "../Utils/gridDropItem";
2
+ import { Transforms, Editor } from "slate";
3
+ export const findFirstRowOverlap = (gridItems, startRow, endRow, textItemIndex) => {
4
+ let firstOverlapRow;
5
+ gridItems.forEach((gridItem, index) => {
6
+ const {
7
+ gridArea_xs: gridArea
8
+ } = gridItem;
9
+ if (!gridArea) {
10
+ return;
11
+ }
12
+ const [itemStartRow] = getGridArea(gridArea);
13
+ const isItemOverlap = itemStartRow >= startRow && itemStartRow <= endRow;
14
+ const isCurrentEle = textItemIndex === index;
15
+ if (isItemOverlap && !isCurrentEle && gridArea) {
16
+ firstOverlapRow = firstOverlapRow ? Math.min(firstOverlapRow, itemStartRow) : itemStartRow;
17
+ }
18
+ });
19
+ return firstOverlapRow;
20
+ };
21
+ export const getHeight = (oldHeight, newHeight) => {
22
+ const changeHeight = oldHeight && oldHeight < newHeight;
23
+ const height = changeHeight ? newHeight : oldHeight;
24
+ return {
25
+ height,
26
+ changeHeight
27
+ };
28
+ };
29
+ export const getGridArea = gridArea => {
30
+ return gridArea.split("/").map(num => parseInt(num));
31
+ };
32
+ const getBoxToAutoAlign = (editor, sectionPath) => {
33
+ const [boxData] = Editor.nodes(editor, {
34
+ at: sectionPath,
35
+ match: node => node.type === "freegridBox" && node.autoAlign
36
+ });
37
+ return boxData;
38
+ };
39
+ const handleGridItems = (gridItems, lastRow) => {
40
+ // to find the previously occupied rows
41
+ gridItems.forEach(item => {
42
+ const {
43
+ gridArea_xs: gridArea,
44
+ marginTop_xs,
45
+ height_xs,
46
+ type
47
+ } = item;
48
+ if (type === "paragraph") {
49
+ // non-freegridItem,
50
+ // some "paragraph" node is defaulty coming inside in box's children
51
+ return;
52
+ }
53
+ const [startRow] = getGridArea(gridArea);
54
+ const marginTop = marginTop_xs ? Number(marginTop_xs) : 0;
55
+ const fullHeight = Number(height_xs) + marginTop;
56
+ const endRow = startRow + Math.floor(fullHeight / ROW_HEIGHT) + 1;
57
+ lastRow = Math.max(endRow, lastRow);
58
+ });
59
+ return {
60
+ lastRow
61
+ };
62
+ };
63
+ const handleNonGridItems = (nonGridItems, lastRow, editor, boxPath) => {
64
+ let containerHeight = (lastRow - 1) * ROW_HEIGHT;
65
+ let newlyAddedHeight = 0;
66
+
67
+ //place it on the next rows that are available
68
+ nonGridItems.forEach((item, index) => {
69
+ const {
70
+ height_xs,
71
+ type,
72
+ itemIndex
73
+ } = item;
74
+ if (type === "paragraph") {
75
+ // non-freegridItem
76
+ return;
77
+ }
78
+ const startRow = lastRow || 1;
79
+ const DEFAULT_NEW_ELEMENT_MARGIN_TOP = 12;
80
+ let fullHeight = height_xs + DEFAULT_NEW_ELEMENT_MARGIN_TOP;
81
+ const endRow = startRow + Math.floor(fullHeight / ROW_HEIGHT) + 1;
82
+ const newGridArea = `${startRow} / 1 / ${startRow + 1} / 2`;
83
+ const currentElementPath = [...boxPath, itemIndex];
84
+ Transforms.setNodes(editor, {
85
+ gridArea_xs: newGridArea,
86
+ marginTop_xs: 12,
87
+ left_xs: 12,
88
+ xs_updatedOn: new Date().getTime()
89
+ }, {
90
+ at: currentElementPath
91
+ });
92
+ lastRow = Math.max(endRow, lastRow);
93
+ containerHeight += fullHeight;
94
+ newlyAddedHeight += fullHeight;
95
+ });
96
+ return {
97
+ lastRow,
98
+ containerHeight,
99
+ newlyAddedHeight
100
+ };
101
+ };
102
+ const alignNewElementInContainer = (editor, boxPath, containerItems) => {
103
+ let lastRow = 1;
104
+ const gridItems = [];
105
+ const nonGridItems = [];
106
+ containerItems.forEach((item, index) => {
107
+ if (item?.gridArea_xs) {
108
+ gridItems.push({
109
+ ...item,
110
+ itemIndex: index
111
+ });
112
+ } else {
113
+ nonGridItems.push({
114
+ ...item,
115
+ itemIndex: index
116
+ });
117
+ }
118
+ });
119
+ const {
120
+ lastRow: lastRowOccupied
121
+ } = handleGridItems(gridItems, lastRow);
122
+ lastRow = lastRowOccupied;
123
+ const {
124
+ lastRow: lastRowTaken,
125
+ containerHeight,
126
+ newlyAddedHeight
127
+ } = handleNonGridItems(nonGridItems, lastRow, editor, boxPath);
128
+ lastRow = lastRowTaken;
129
+ return {
130
+ lastRow,
131
+ containerHeight,
132
+ newlyAddedHeight
133
+ };
134
+ };
135
+ const getAncestorFreeGridContainers = (editor, path) => {
136
+ const containers = [...Editor.nodes(editor, {
137
+ at: path,
138
+ // Start from the current path
139
+ match: (node, nodePath) => {
140
+ const container = ["freegridBox", "freegrid"].includes(node.type);
141
+ return container;
142
+ },
143
+ reverse: true // Go upwards in the document tree
144
+ })].filter(([node, nodePath]) => nodePath.length <= path.length);
145
+ return containers;
146
+ };
147
+ export const handleContainers = (editor, boxPath, extraHeight) => {
148
+ const containers = getAncestorFreeGridContainers(editor, boxPath);
149
+ let lastChildStartRow;
150
+ let lastChildEndRow;
151
+ let lastChildPath;
152
+ const containerData = [];
153
+ for (let i = containers.length - 1; i >= 0; i--) {
154
+ const container = containers[i];
155
+ const childContainer = containers[i + 1];
156
+ const [containerNode, containerPath] = container;
157
+ const {
158
+ gridArea_xs,
159
+ height_xs,
160
+ marginTop_xs
161
+ } = containerNode;
162
+ const [startRow] = gridArea_xs ? getGridArea(gridArea_xs) : [0]; // there is no grid area for section nodes
163
+
164
+ let newHeight = Number(height_xs) + extraHeight;
165
+ let fullHeight = newHeight + Number(marginTop_xs); // to find end row
166
+
167
+ if (!childContainer) {
168
+ const endRow = startRow + Math.floor(fullHeight / ROW_HEIGHT) + 1;
169
+ containerData.push({
170
+ moveRows: 0,
171
+ extraHeight,
172
+ containerPath,
173
+ newHeight,
174
+ containerNode,
175
+ lastChildStartRow
176
+ });
177
+ lastChildStartRow = startRow;
178
+ lastChildEndRow = endRow;
179
+ } else {
180
+ const lastChildIndex = lastChildPath[containerPath.length];
181
+ const firstOverlappedRow = findFirstRowOverlap(containerNode?.children, lastChildStartRow, lastChildEndRow, lastChildIndex);
182
+ const moveRows = firstOverlappedRow ? lastChildEndRow - firstOverlappedRow : 0;
183
+ newHeight = newHeight + moveRows * ROW_HEIGHT;
184
+ fullHeight = newHeight + Number(marginTop_xs);
185
+ const newEndRow = startRow + Math.floor(fullHeight / ROW_HEIGHT) + 1;
186
+ containerData.push({
187
+ moveRows,
188
+ extraHeight,
189
+ childIndex: lastChildIndex,
190
+ newHeight,
191
+ containerPath,
192
+ containerNode,
193
+ lastChildStartRow
194
+ });
195
+ lastChildStartRow = startRow;
196
+ lastChildEndRow = newEndRow;
197
+ }
198
+ lastChildPath = containerPath;
199
+ }
200
+ return containerData;
201
+ };
202
+ export const moveOverlappedItems = (editor, moveRows, containerItems, containerPath, childIndex, lastChildStartRow) => {
203
+ containerItems?.forEach((gridItem, index) => {
204
+ const isChildEle = childIndex === index;
205
+ if (isChildEle) {
206
+ return;
207
+ }
208
+ if (gridItem.type === "paragraph") {
209
+ return;
210
+ }
211
+ const {
212
+ gridArea_xs: gridArea
213
+ } = gridItem;
214
+ const [itemStartRow] = getGridArea(gridArea);
215
+ if (itemStartRow >= lastChildStartRow) {
216
+ const row = itemStartRow + moveRows;
217
+ const newGridArea = `${row} / 1 / ${row + 1} / 2`;
218
+ const currentElementPath = [...containerPath, index];
219
+ Transforms.setNodes(editor, {
220
+ gridArea_xs: newGridArea
221
+ }, {
222
+ at: currentElementPath
223
+ });
224
+ }
225
+ });
226
+ };
227
+ export const handleBoxAlignment = (editor, sectionNode, sectionPath) => {
228
+ const [boxNode, boxPath] = getBoxToAutoAlign(editor, sectionPath);
229
+ Transforms.setNodes(editor, {
230
+ autoAlign: false
231
+ }, {
232
+ at: boxPath
233
+ });
234
+ const containerItems = boxNode?.children || [];
235
+ const {
236
+ containerHeight
237
+ } = alignNewElementInContainer(editor, boxPath, containerItems);
238
+ const bufferHeight = 12;
239
+ const newHeight = containerHeight + bufferHeight;
240
+ const {
241
+ height_xs
242
+ } = boxNode;
243
+ const oldHeight = Number(height_xs);
244
+ const extraHeight = newHeight - oldHeight;
245
+ if (extraHeight > 0) {
246
+ const containerData = handleContainers(editor, boxPath, extraHeight);
247
+ containerData.forEach(container => {
248
+ const {
249
+ moveRows,
250
+ containerNode,
251
+ containerPath,
252
+ newHeight,
253
+ childIndex,
254
+ lastChildStartRow
255
+ } = container;
256
+ if (moveRows) {
257
+ moveOverlappedItems(editor, moveRows, containerNode?.children, containerPath, childIndex, lastChildStartRow);
258
+ }
259
+ Transforms.setNodes(editor, {
260
+ height_xs: newHeight,
261
+ xs_updatedOn: new Date().getTime()
262
+ }, {
263
+ at: containerPath
264
+ });
265
+ });
266
+ }
267
+ };