@flozy/editor 4.0.2 → 4.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. package/dist/Editor/ChatEditor.js +14 -9
  2. package/dist/Editor/CommonEditor.js +185 -170
  3. package/dist/Editor/DialogWrapper.js +4 -3
  4. package/dist/Editor/Editor.css +5 -19
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +52 -41
  6. package/dist/Editor/Elements/Accordion/AccordionSummary.js +4 -15
  7. package/dist/Editor/Elements/AppHeader/AppHeader.js +39 -26
  8. package/dist/Editor/Elements/Button/EditorButton.js +33 -38
  9. package/dist/Editor/Elements/Carousel/CarouselButton.js +0 -1
  10. package/dist/Editor/Elements/Color Picker/ColorButtons.js +14 -59
  11. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  12. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  13. package/dist/Editor/Elements/Color Picker/Styles.js +1 -2
  14. package/dist/Editor/Elements/Embed/Image.js +15 -14
  15. package/dist/Editor/Elements/Embed/Video.js +12 -8
  16. package/dist/Editor/Elements/Emoji/EmojiButton.js +11 -7
  17. package/dist/Editor/Elements/Form/Form.js +43 -27
  18. package/dist/Editor/Elements/Form/FormField.js +21 -10
  19. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +3 -12
  20. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +1 -2
  21. package/dist/Editor/Elements/Form/Workflow/index.js +5 -2
  22. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +437 -0
  23. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +206 -0
  24. package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +23 -0
  25. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +236 -0
  26. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +44 -0
  27. package/dist/Editor/Elements/FreeGrid/Options/More.js +24 -0
  28. package/dist/Editor/Elements/FreeGrid/Options/SectionSettings.js +47 -0
  29. package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +19 -0
  30. package/dist/Editor/Elements/FreeGrid/breakpointConstants.js +75 -0
  31. package/dist/Editor/Elements/FreeGrid/styles.js +214 -0
  32. package/dist/Editor/Elements/Grid/Grid.js +11 -9
  33. package/dist/Editor/Elements/Grid/GridItem.js +31 -23
  34. package/dist/Editor/Elements/Link/Link.js +1 -6
  35. package/dist/Editor/Elements/Link/LinkButton.js +2 -4
  36. package/dist/Editor/Elements/Link/LinkPopup.js +15 -18
  37. package/dist/Editor/Elements/NewLine/NewLineButton.js +0 -1
  38. package/dist/Editor/Elements/Signature/SignaturePopup.js +1 -1
  39. package/dist/Editor/Elements/SimpleText/index.js +18 -16
  40. package/dist/Editor/Elements/SimpleText/style.js +43 -0
  41. package/dist/Editor/ErrorBoundary.js +30 -0
  42. package/dist/Editor/MiniEditor.js +1 -3
  43. package/dist/Editor/Styles/EditorStyles.js +28 -0
  44. package/dist/Editor/Toolbar/Basic/index.js +2 -4
  45. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +2 -26
  46. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  47. package/dist/Editor/Toolbar/FormatTools/TextSize.js +11 -5
  48. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -3
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +11 -4
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +86 -213
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +1 -2
  52. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +14 -26
  53. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +2 -68
  54. package/dist/Editor/Toolbar/PopupTool/index.js +8 -0
  55. package/dist/Editor/Toolbar/Toolbar.js +7 -0
  56. package/dist/Editor/Toolbar/toolbarGroups.js +16 -48
  57. package/dist/Editor/common/ColorPickerButton.js +9 -25
  58. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  59. package/dist/Editor/common/EditorCmds.js +0 -3
  60. package/dist/Editor/common/Icon.js +16 -34
  61. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -5
  62. package/dist/Editor/common/LinkSettings/index.js +1 -2
  63. package/dist/Editor/common/LinkSettings/navOptions.js +2 -7
  64. package/dist/Editor/common/MentionsPopup/index.js +12 -8
  65. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +142 -0
  66. package/dist/Editor/common/RnD/ContextMenu/index.js +38 -0
  67. package/dist/Editor/common/RnD/ContextMenu/styles.js +21 -0
  68. package/dist/Editor/common/RnD/DragInfo/index.js +31 -0
  69. package/dist/Editor/common/RnD/DragInfo/styles.js +15 -0
  70. package/dist/Editor/common/RnD/DragOver/index.js +55 -0
  71. package/dist/Editor/common/RnD/DragOver/styles.js +23 -0
  72. package/dist/Editor/common/RnD/ElementOptions/Actions.js +102 -0
  73. package/dist/Editor/common/RnD/ElementOptions/Icons/LinkIcon.js +26 -0
  74. package/dist/Editor/common/RnD/ElementOptions/index.js +95 -0
  75. package/dist/Editor/common/RnD/ElementOptions/styles.js +41 -0
  76. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Link.js +153 -0
  77. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +36 -0
  78. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +60 -0
  79. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/index.js +9 -0
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +47 -0
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +47 -0
  82. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +47 -0
  83. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +48 -0
  84. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +47 -0
  85. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +30 -0
  86. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +47 -0
  87. package/dist/Editor/common/RnD/ElementSettings/Settings/index.js +17 -0
  88. package/dist/Editor/common/RnD/ElementSettings/index.js +17 -0
  89. package/dist/Editor/common/RnD/ElementSettings/settingsConstants.js +18 -0
  90. package/dist/Editor/common/RnD/ElementSettings/styles.js +94 -0
  91. package/dist/Editor/common/RnD/GuideLines/BoundaryLine.js +52 -0
  92. package/dist/Editor/common/RnD/GuideLines/index.js +33 -0
  93. package/dist/Editor/common/RnD/GuideLines/styles.js +62 -0
  94. package/dist/Editor/common/RnD/OptionsPopup/index.js +50 -0
  95. package/dist/Editor/common/RnD/OptionsPopup/style.js +36 -0
  96. package/dist/Editor/common/RnD/RnDCopy.js +23 -0
  97. package/dist/Editor/common/RnD/ShadowElement.js +34 -0
  98. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +40 -0
  99. package/dist/Editor/common/RnD/SwitchViewport/styles.js +24 -0
  100. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +63 -0
  101. package/dist/Editor/common/RnD/TransformHandles/CornerHandle.js +19 -0
  102. package/dist/Editor/common/RnD/TransformHandles/Icons/BottomRightIcon.js +13 -0
  103. package/dist/Editor/common/RnD/TransformHandles/SizeHandle.js +20 -0
  104. package/dist/Editor/common/RnD/TransformHandles/index.js +67 -0
  105. package/dist/Editor/common/RnD/Utils/alignmentDetection.js +26 -0
  106. package/dist/Editor/common/RnD/Utils/calculateDropItem.js +98 -0
  107. package/dist/Editor/common/RnD/Utils/collisionDetection.js +52 -0
  108. package/dist/Editor/common/RnD/Utils/gridDropItem.js +181 -0
  109. package/dist/Editor/common/RnD/Utils/index.js +251 -0
  110. package/dist/Editor/common/RnD/VirtualElement/index.js +77 -0
  111. package/dist/Editor/common/RnD/VirtualElement/styles.js +27 -0
  112. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +28 -0
  113. package/dist/Editor/common/RnD/index.js +567 -0
  114. package/dist/Editor/common/RnD/styles.js +4 -0
  115. package/dist/Editor/common/Section/index.js +21 -12
  116. package/dist/Editor/common/Section/styles.js +7 -4
  117. package/dist/Editor/common/Shorthands/elements.js +12 -54
  118. package/dist/Editor/common/StyleBuilder/boxStyle.js +30 -0
  119. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  120. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +36 -44
  121. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +23 -33
  122. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  123. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +7 -31
  124. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +4 -13
  125. package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +18 -5
  126. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -2
  127. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +4 -14
  128. package/dist/Editor/common/StyleBuilder/index.js +5 -3
  129. package/dist/Editor/common/StyleBuilder/sectionStyle.js +13 -2
  130. package/dist/Editor/helper/RnD/focusOnNewItem.js +39 -0
  131. package/dist/Editor/helper/RnD/scrollToNewSection.js +24 -0
  132. package/dist/Editor/helper/breakpoint.js +5 -0
  133. package/dist/Editor/helper/index.js +139 -0
  134. package/dist/Editor/helper/theme.js +48 -186
  135. package/dist/Editor/hooks/useBreakpoints.js +34 -0
  136. package/dist/Editor/hooks/useMouseMove.js +37 -12
  137. package/dist/Editor/hooks/withCommon.js +2 -1
  138. package/dist/Editor/hooks/withErrorHandling.js +14 -0
  139. package/dist/Editor/plugins/withEmbeds.js +1 -1
  140. package/dist/Editor/plugins/withHTML.js +1 -1
  141. package/dist/Editor/plugins/withTable.js +1 -1
  142. package/dist/Editor/theme/ThemeList.js +173 -50
  143. package/dist/Editor/utils/RnD/RnDCtrlCmds.js +197 -0
  144. package/dist/Editor/utils/SlateUtilityFunctions.js +60 -164
  145. package/dist/Editor/utils/button.js +17 -1
  146. package/dist/Editor/utils/events.js +5 -0
  147. package/dist/Editor/utils/font.js +37 -40
  148. package/dist/Editor/utils/form.js +7 -2
  149. package/dist/Editor/utils/formfield.js +1 -1
  150. package/dist/Editor/utils/freegrid.js +91 -0
  151. package/dist/Editor/utils/helper.js +44 -30
  152. package/dist/Editor/utils/insertAppHeader.js +47 -40
  153. package/package.json +5 -2
  154. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -438
  155. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  156. package/dist/Editor/common/CustomColorPicker/index.js +0 -106
  157. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  158. package/dist/Editor/common/CustomDialog/index.js +0 -94
  159. package/dist/Editor/common/CustomDialog/style.js +0 -67
  160. package/dist/Editor/common/CustomSelect.js +0 -33
  161. package/dist/Editor/hooks/useEditorTheme.js +0 -139
  162. package/dist/Editor/theme/index.js +0 -144
  163. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  164. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  165. package/dist/Editor/themeSettings/buttons/style.js +0 -21
  166. package/dist/Editor/themeSettings/colorTheme/index.js +0 -290
  167. package/dist/Editor/themeSettings/colorTheme/style.js +0 -77
  168. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -123
  169. package/dist/Editor/themeSettings/fonts/index.js +0 -213
  170. package/dist/Editor/themeSettings/fonts/style.js +0 -44
  171. package/dist/Editor/themeSettings/icons.js +0 -60
  172. package/dist/Editor/themeSettings/index.js +0 -320
  173. package/dist/Editor/themeSettings/style.js +0 -152
  174. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  175. package/dist/Editor/themeSettingsAI/index.js +0 -356
  176. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -190
  177. package/dist/Editor/themeSettingsAI/style.js +0 -247
@@ -0,0 +1,251 @@
1
+ import { Transforms, Node } from "slate";
2
+ import { ReactEditor } from "slate-react";
3
+ import { getNearestItem } from "./calculateDropItem";
4
+ const GUIDE_LINE_THRESHOLD = 5;
5
+ const GUIDE_LINE_OVERLAP_THRESHOLD = 50;
6
+ const handleMoveNode = (editor, path, newPath, {
7
+ isEmpty
8
+ }) => {
9
+ try {
10
+ const replaceNode = Node.get(editor, path);
11
+ if (isEmpty) {
12
+ const toPath = [...newPath, 0];
13
+ Transforms.insertNodes(editor, [{
14
+ ...replaceNode
15
+ }], {
16
+ at: toPath
17
+ });
18
+ Transforms.removeNodes(editor, {
19
+ at: path
20
+ });
21
+ return toPath;
22
+ } else {
23
+ Transforms.insertNodes(editor, [{
24
+ ...replaceNode
25
+ }], {
26
+ at: newPath
27
+ });
28
+ Transforms.removeNodes(editor, {
29
+ at: path
30
+ });
31
+ return newPath;
32
+ }
33
+ } catch (err) {
34
+ console.log(err);
35
+ console.log("Drop Node error");
36
+ return null;
37
+ }
38
+ };
39
+ export function triggerClick(editor, path = []) {
40
+ try {
41
+ const triggerNode = Node.get(editor, path);
42
+ const triggerNodeDOM = ReactEditor.toDOMNode(editor, triggerNode);
43
+ triggerNodeDOM?.closest(".freegrid-item")?.click();
44
+ } catch (err) {
45
+ console.log(err);
46
+ }
47
+ }
48
+ export function updatePositions(props, closestClass) {
49
+ try {
50
+ const {
51
+ editor,
52
+ path,
53
+ offsetY,
54
+ dragOver,
55
+ x,
56
+ y,
57
+ diffX,
58
+ parentPath
59
+ } = props;
60
+ const posY = y - offsetY;
61
+ const posX = parseInt(x - window.innerWidth / 2 + 490 - diffX);
62
+ let addToSectionDOMRect = null;
63
+ let newPath = [];
64
+ let toSectionNode = null;
65
+ const needMove = dragOver !== parentPath;
66
+ const moveTo = dragOver.split("|").map(m => parseInt(m));
67
+ const from = parentPath.split("|").map(m => parseInt(m));
68
+ newPath = moveTo;
69
+ toSectionNode = Node.get(editor, newPath);
70
+ const addToSectionDOM = ReactEditor.toDOMNode(editor, toSectionNode);
71
+ addToSectionDOMRect = addToSectionDOM?.getBoundingClientRect();
72
+
73
+ // update top and left properties
74
+ const newProperties = {};
75
+ newProperties.left = posX;
76
+ newProperties.marginTop = posY > addToSectionDOMRect.top ? posY - addToSectionDOMRect.top : addToSectionDOMRect.top - posY;
77
+ Transforms.setNodes(editor, newProperties, {
78
+ at: path
79
+ });
80
+ const returnData = {};
81
+ if (needMove) {
82
+ const isEmpty = toSectionNode?.children[0]?.type === undefined;
83
+ if (!isEmpty) {
84
+ newPath = [...newPath, toSectionNode?.children?.length];
85
+ }
86
+ newPath = newPath.map(m => parseInt(m));
87
+ const rPath = handleMoveNode(editor, path, newPath, {
88
+ isEmpty
89
+ });
90
+ // to update path index need to re-render items in parent sections
91
+ Transforms.setNodes(editor, {
92
+ updated_at: new Date().getTime
93
+ }, {
94
+ at: parentPath.split("|").map(m => parseInt(m))
95
+ });
96
+ returnData.updated_at = rPath;
97
+ }
98
+ returnData.updated_at = path;
99
+ if (needMove) {
100
+ getNearestItem(editor, moveTo, {
101
+ currentItem: path
102
+ });
103
+ } else {
104
+ getNearestItem(editor, from, {
105
+ currentItem: path
106
+ });
107
+ }
108
+ return returnData;
109
+ } catch (err) {
110
+ console.log(err);
111
+ }
112
+ }
113
+ const isOverLapLine = ({
114
+ x,
115
+ y
116
+ }, lines) => {
117
+ return lines.find(f => Math.abs(f.x - x) <= GUIDE_LINE_OVERLAP_THRESHOLD || Math.abs(f.y - y) <= GUIDE_LINE_OVERLAP_THRESHOLD);
118
+ };
119
+ export function getClosestDraggable(x, y, className, activeClassName) {
120
+ const draggables = document.querySelectorAll(className);
121
+ const activeDragEle = document.querySelectorAll(activeClassName)[0];
122
+ const {
123
+ left: aLeft,
124
+ top: aTop,
125
+ width: aWidth,
126
+ height: aHeight
127
+ } = activeDragEle?.getBoundingClientRect() || {};
128
+ let lines = [];
129
+ draggables.forEach(draggable => {
130
+ const {
131
+ left,
132
+ top,
133
+ width,
134
+ height
135
+ } = draggable.getBoundingClientRect();
136
+ let xVal = 0;
137
+ let yVal = 0;
138
+
139
+ // top match
140
+ xVal = x < left ? aLeft : left;
141
+ yVal = top;
142
+ if (Math.abs(top - aTop) <= GUIDE_LINE_THRESHOLD && !isOverLapLine({
143
+ x: xVal,
144
+ y: yVal
145
+ }, lines)) {
146
+ lines.push({
147
+ y: top,
148
+ x: xVal,
149
+ width: x > left ? Math.abs(aLeft + aWidth - left) : Math.abs(aLeft - (left + width)),
150
+ height: 1
151
+ });
152
+ }
153
+
154
+ // bottom match
155
+ xVal = x < left ? aLeft : left;
156
+ yVal = top + height;
157
+ if (Math.abs(top + height - (aTop + aHeight)) <= GUIDE_LINE_THRESHOLD && !isOverLapLine({
158
+ x: xVal,
159
+ y: yVal
160
+ }, lines)) {
161
+ lines.push({
162
+ y: yVal,
163
+ x: xVal,
164
+ width: x > left ? Math.abs(aLeft + aWidth - left) : Math.abs(aLeft - (left + width)),
165
+ height: 1
166
+ });
167
+ }
168
+
169
+ // center match
170
+ xVal = x < left ? aLeft : left;
171
+ yVal = top + height / 2;
172
+ if (Math.abs(top + height / 2 - (aTop + aHeight / 2)) <= GUIDE_LINE_THRESHOLD && !isOverLapLine({
173
+ x: xVal,
174
+ y: yVal
175
+ }, lines, "y")) {
176
+ lines.push({
177
+ y: yVal,
178
+ x: xVal,
179
+ width: x > left ? Math.abs(aLeft + aWidth - left) : Math.abs(aLeft - (left + width)),
180
+ height: 1
181
+ });
182
+ }
183
+
184
+ // right match
185
+ xVal = left + width;
186
+ yVal = top < aTop ? top : aTop;
187
+ if ((Math.abs(left + width - aLeft) <= GUIDE_LINE_THRESHOLD || Math.abs(left - aLeft) <= GUIDE_LINE_THRESHOLD) && !isOverLapLine({
188
+ x: xVal,
189
+ y: yVal
190
+ }, lines)) {
191
+ lines.push({
192
+ y: yVal,
193
+ x: xVal,
194
+ width: 1,
195
+ height: Math.abs(aTop - top)
196
+ });
197
+ }
198
+
199
+ // left match
200
+ xVal = left;
201
+ yVal = top < aTop ? top : aTop;
202
+ if ((Math.abs(aLeft + aWidth - left) <= GUIDE_LINE_THRESHOLD || Math.abs(aLeft - left) <= GUIDE_LINE_THRESHOLD) && !isOverLapLine({
203
+ x: xVal,
204
+ y: yVal
205
+ }, lines)) {
206
+ lines.push({
207
+ y: yVal,
208
+ x: xVal,
209
+ width: 1,
210
+ height: Math.abs(aTop - top)
211
+ });
212
+ }
213
+
214
+ // middle match
215
+ xVal = left + width / 2;
216
+ yVal = top < aTop ? top : aTop;
217
+ if (Math.abs(aLeft + aWidth / 2 - (left + width / 2)) <= GUIDE_LINE_THRESHOLD && !isOverLapLine({
218
+ x: xVal,
219
+ y: yVal
220
+ }, lines)) {
221
+ lines.push({
222
+ y: yVal,
223
+ x: xVal,
224
+ width: 1,
225
+ height: Math.abs(aTop - top)
226
+ });
227
+ }
228
+ });
229
+ return lines;
230
+ }
231
+ export function isDragOver(rect, mousePosition) {
232
+ const {
233
+ x,
234
+ y
235
+ } = mousePosition;
236
+ if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {
237
+ return true;
238
+ }
239
+ return false;
240
+ }
241
+ export function getParentSectionPath(props, closestClass) {
242
+ try {
243
+ const {
244
+ ref
245
+ } = props;
246
+ const parentDom = ref?.closest(closestClass);
247
+ return parentDom?.dataset?.path;
248
+ } catch (err) {
249
+ console.log(err);
250
+ }
251
+ }
@@ -0,0 +1,77 @@
1
+ import React, { useEffect, useRef } from "react";
2
+ import { Box } from "@mui/material";
3
+ import useVirtualElementStyles from "./styles";
4
+ import updateAutoProps from "./updateAutoProps";
5
+ import { calculateGridArea } from "../Utils/gridDropItem";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const ROOT_ITEM_CLASS = ".freegrid-item.path-3";
8
+ const VirtualElement = props => {
9
+ const classes = useVirtualElementStyles();
10
+ const {
11
+ editor,
12
+ path,
13
+ parentEle,
14
+ updated_at
15
+ } = props;
16
+ const cloneNode = parentEle?.cloneNode(true);
17
+ const virtualRef = useRef();
18
+ useEffect(() => {
19
+ if (virtualRef?.current) {
20
+ setTimeout(() => {
21
+ calculateProps();
22
+ }, 0);
23
+ }
24
+ }, [updated_at, virtualRef?.current]);
25
+ const calculateProps = () => {
26
+ const rect = virtualRef?.current?.getBoundingClientRect();
27
+ const sectionProps = {
28
+ path,
29
+ props: {
30
+ height: rect.height
31
+ }
32
+ };
33
+ const itemsData = [];
34
+ const items = virtualRef?.current?.querySelectorAll(ROOT_ITEM_CLASS);
35
+ let sectionHeight = 0;
36
+ for (let i = 0; i < items.length; i++) {
37
+ const itemRect = items[i]?.getBoundingClientRect();
38
+ const y = Math.abs(rect.top - itemRect?.top);
39
+ itemsData.push({
40
+ path: items[i]?.dataset.path,
41
+ props: {
42
+ top: y,
43
+ left: 24,
44
+ marginTop: 12,
45
+ width: itemRect?.width,
46
+ height: itemRect?.height,
47
+ gridArea: calculateGridArea(y)
48
+ }
49
+ });
50
+ sectionHeight += itemRect?.height;
51
+ }
52
+ if (sectionHeight > sectionProps?.props?.height) {
53
+ sectionProps.props.height = sectionHeight;
54
+ }
55
+ const allData = [sectionProps, itemsData]?.flat();
56
+ // it should trigger by auto alignment or on clicking mobile view change
57
+ updateAutoProps(editor, allData, "xs");
58
+ };
59
+ const getItems = () => {
60
+ const items = cloneNode?.querySelectorAll(ROOT_ITEM_CLASS) || [];
61
+ let itemsHTML = "";
62
+ for (let i = 0; i < items?.length; i++) {
63
+ items[i].classList.add("exclude-virtual");
64
+ itemsHTML += items[i].outerHTML;
65
+ }
66
+ return itemsHTML;
67
+ };
68
+ return /*#__PURE__*/_jsx(Box, {
69
+ className: "mobile-virtual-mode",
70
+ ref: virtualRef,
71
+ sx: classes.root,
72
+ dangerouslySetInnerHTML: {
73
+ __html: getItems()
74
+ }
75
+ });
76
+ };
77
+ export default VirtualElement;
@@ -0,0 +1,27 @@
1
+ const useVirtualElementStyles = () => ({
2
+ root: {
3
+ width: "320px",
4
+ position: "fixed",
5
+ backgroundColor: "red",
6
+ height: "auto",
7
+ overflow: "visible",
8
+ pointerEvents: "none",
9
+ opacity: 0,
10
+ right: 0,
11
+ top: 0,
12
+ "& .freegrid-item": {
13
+ gridArea: "none !important",
14
+ width: "calc(100% - 48px) !important",
15
+ height: "auto !important",
16
+ left: "24px !important",
17
+ marginTop: "24px !important",
18
+ "& .debug-info, & .editor-blocker": {
19
+ display: "none"
20
+ },
21
+ "& .embed": {
22
+ minHeight: "300px"
23
+ }
24
+ }
25
+ }
26
+ });
27
+ export default useVirtualElementStyles;
@@ -0,0 +1,28 @@
1
+ import { Node, Transforms } from "slate";
2
+ const updateAutoProps = (editor, datas = [], breakpoint = "") => {
3
+ try {
4
+ for (let i = 0; i < datas.length; i++) {
5
+ const {
6
+ path,
7
+ props
8
+ } = datas[i] || {};
9
+ const int_path = path.split("|").map(m => parseInt(m));
10
+ const updatedProps = Object.keys(props).reduce((a, b) => {
11
+ const key = breakpoint ? `${b}_${breakpoint}` : b;
12
+ a[key] = props[b];
13
+ return a;
14
+ }, {});
15
+ const oldProps = Node.get(editor, int_path);
16
+ if (!oldProps?.xs_updatedOn) {
17
+ Transforms.setNodes(editor, {
18
+ ...updatedProps
19
+ }, {
20
+ at: int_path
21
+ });
22
+ }
23
+ }
24
+ } catch (err) {
25
+ console.log(err);
26
+ }
27
+ };
28
+ export default updateAutoProps;