@flozy/editor 3.8.8 → 3.8.9

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 (112) hide show
  1. package/dist/Editor/ChatEditor.js +31 -57
  2. package/dist/Editor/CommonEditor.js +69 -8
  3. package/dist/Editor/DialogWrapper.js +4 -3
  4. package/dist/Editor/Editor.css +5 -12
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +47 -36
  6. package/dist/Editor/Elements/Accordion/Accordion.js +1 -1
  7. package/dist/Editor/Elements/Accordion/AccordionSummary.js +6 -20
  8. package/dist/Editor/Elements/AppHeader/AppHeader.js +36 -23
  9. package/dist/Editor/Elements/Button/EditorButton.js +23 -16
  10. package/dist/Editor/Elements/Embed/Image.js +15 -14
  11. package/dist/Editor/Elements/Embed/Video.js +12 -8
  12. package/dist/Editor/Elements/Emoji/EmojiButton.js +11 -7
  13. package/dist/Editor/Elements/Emoji/EmojiPicker.js +2 -4
  14. package/dist/Editor/Elements/Form/Form.js +1 -1
  15. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +391 -0
  16. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +193 -0
  17. package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +23 -0
  18. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +184 -0
  19. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +36 -0
  20. package/dist/Editor/Elements/FreeGrid/Options/More.js +24 -0
  21. package/dist/Editor/Elements/FreeGrid/Options/SectionSettings.js +47 -0
  22. package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +11 -0
  23. package/dist/Editor/Elements/FreeGrid/breakpointConstants.js +75 -0
  24. package/dist/Editor/Elements/FreeGrid/styles.js +159 -0
  25. package/dist/Editor/Elements/Grid/Grid.js +12 -8
  26. package/dist/Editor/Elements/Grid/GridItem.js +31 -21
  27. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +1 -5
  28. package/dist/Editor/Elements/SimpleText/index.js +9 -8
  29. package/dist/Editor/Elements/SimpleText/style.js +37 -0
  30. package/dist/Editor/ErrorBoundary.js +30 -0
  31. package/dist/Editor/Styles/EditorStyles.js +23 -0
  32. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +1 -25
  33. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +1 -0
  34. package/dist/Editor/Toolbar/PopupTool/index.js +8 -0
  35. package/dist/Editor/Toolbar/Toolbar.js +7 -0
  36. package/dist/Editor/Toolbar/toolbarGroups.js +5 -0
  37. package/dist/Editor/common/Icon.js +9 -2
  38. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +1 -6
  39. package/dist/Editor/common/MentionsPopup/index.js +12 -8
  40. package/dist/Editor/common/RnD/ContextMenu/CMenus.js +105 -0
  41. package/dist/Editor/common/RnD/ContextMenu/index.js +38 -0
  42. package/dist/Editor/common/RnD/ContextMenu/styles.js +21 -0
  43. package/dist/Editor/common/RnD/DragInfo/index.js +31 -0
  44. package/dist/Editor/common/RnD/DragInfo/styles.js +15 -0
  45. package/dist/Editor/common/RnD/DragOver/index.js +46 -0
  46. package/dist/Editor/common/RnD/DragOver/styles.js +23 -0
  47. package/dist/Editor/common/RnD/ElementOptions/Actions.js +82 -0
  48. package/dist/Editor/common/RnD/ElementOptions/Icons/LinkIcon.js +26 -0
  49. package/dist/Editor/common/RnD/ElementOptions/index.js +93 -0
  50. package/dist/Editor/common/RnD/ElementOptions/styles.js +41 -0
  51. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Link.js +153 -0
  52. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +58 -0
  53. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/index.js +7 -0
  54. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +46 -0
  55. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +46 -0
  56. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +46 -0
  57. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +30 -0
  58. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +46 -0
  59. package/dist/Editor/common/RnD/ElementSettings/Settings/index.js +13 -0
  60. package/dist/Editor/common/RnD/ElementSettings/index.js +17 -0
  61. package/dist/Editor/common/RnD/ElementSettings/settingsConstants.js +14 -0
  62. package/dist/Editor/common/RnD/ElementSettings/styles.js +76 -0
  63. package/dist/Editor/common/RnD/GuideLines/BoundaryLine.js +52 -0
  64. package/dist/Editor/common/RnD/GuideLines/index.js +33 -0
  65. package/dist/Editor/common/RnD/GuideLines/styles.js +60 -0
  66. package/dist/Editor/common/RnD/OptionsPopup/index.js +50 -0
  67. package/dist/Editor/common/RnD/OptionsPopup/style.js +36 -0
  68. package/dist/Editor/common/RnD/RnDCopy.js +23 -0
  69. package/dist/Editor/common/RnD/ShadowElement.js +34 -0
  70. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +40 -0
  71. package/dist/Editor/common/RnD/SwitchViewport/styles.js +24 -0
  72. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +63 -0
  73. package/dist/Editor/common/RnD/TransformHandles/CornerHandle.js +19 -0
  74. package/dist/Editor/common/RnD/TransformHandles/Icons/BottomRightIcon.js +13 -0
  75. package/dist/Editor/common/RnD/TransformHandles/SizeHandle.js +18 -0
  76. package/dist/Editor/common/RnD/TransformHandles/index.js +62 -0
  77. package/dist/Editor/common/RnD/Utils/alignmentDetection.js +26 -0
  78. package/dist/Editor/common/RnD/Utils/calculateDropItem.js +98 -0
  79. package/dist/Editor/common/RnD/Utils/collisionDetection.js +52 -0
  80. package/dist/Editor/common/RnD/Utils/gridDropItem.js +148 -0
  81. package/dist/Editor/common/RnD/Utils/index.js +251 -0
  82. package/dist/Editor/common/RnD/VirtualElement/index.js +76 -0
  83. package/dist/Editor/common/RnD/VirtualElement/styles.js +27 -0
  84. package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +28 -0
  85. package/dist/Editor/common/RnD/index.js +503 -0
  86. package/dist/Editor/common/RnD/styles.js +4 -0
  87. package/dist/Editor/common/Section/index.js +21 -12
  88. package/dist/Editor/common/Section/styles.js +6 -1
  89. package/dist/Editor/common/Shorthands/elements.js +12 -0
  90. package/dist/Editor/common/StyleBuilder/boxStyle.js +30 -0
  91. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +32 -31
  92. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +16 -18
  93. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +3 -14
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -2
  95. package/dist/Editor/common/StyleBuilder/index.js +2 -2
  96. package/dist/Editor/common/StyleBuilder/sectionStyle.js +13 -2
  97. package/dist/Editor/helper/RnD/focusOnNewItem.js +39 -0
  98. package/dist/Editor/helper/RnD/scrollToNewSection.js +24 -0
  99. package/dist/Editor/helper/breakpoint.js +5 -0
  100. package/dist/Editor/helper/index.js +139 -22
  101. package/dist/Editor/helper/theme.js +50 -2
  102. package/dist/Editor/hooks/useBreakpoints.js +34 -0
  103. package/dist/Editor/hooks/useMouseMove.js +36 -8
  104. package/dist/Editor/hooks/withCommon.js +2 -1
  105. package/dist/Editor/hooks/withErrorHandling.js +14 -0
  106. package/dist/Editor/utils/RnD/RnDCtrlCmds.js +168 -0
  107. package/dist/Editor/utils/SlateUtilityFunctions.js +31 -5
  108. package/dist/Editor/utils/draftToSlate.js +1 -1
  109. package/dist/Editor/utils/events.js +5 -0
  110. package/dist/Editor/utils/freegrid.js +49 -0
  111. package/dist/Editor/utils/helper.js +29 -0
  112. package/package.json +5 -2
@@ -22,16 +22,36 @@ export const EditorProvider = ({
22
22
  theme,
23
23
  children
24
24
  }) => {
25
- const [event] = useMouseMove();
26
25
  const [previous, setPrevious] = useState("");
27
26
  const [drop, setDrop] = useState(0);
28
27
  const [selectedPath, setSelectedPath] = useState(null);
28
+ const [selectedElement, setSelectedElement] = useState({});
29
+ const [dragging, setDragging] = useState({});
30
+ const [event] = useMouseMove(dragging);
29
31
  const path = event?.target?.getAttribute("data-path");
30
32
  const [popupType, setPopupType] = useState(""); // opened popup name in the editor will be stored
31
33
  const [openAI, setOpenAI] = useState("");
34
+ const [contextMenu, setContextMenu] = useState({
35
+ path: null
36
+ });
37
+ useEffect(() => {
38
+ window.updateSelectedItem = d => {
39
+ setSelectedElement(d);
40
+ };
41
+ }, []);
32
42
  const onDrop = () => {
33
43
  setDrop(drop + 1);
34
44
  };
45
+ const isSelectedElement = path => {
46
+ const cu_path = path.split("|");
47
+ const se_path = selectedElement?.path?.split("|");
48
+ const isParentSelected = se_path?.slice(0, cu_path.length).join("|") === path;
49
+ // check if child or parent is selected
50
+ if (selectedElement?.path === path || isParentSelected) {
51
+ return selectedElement;
52
+ }
53
+ return {};
54
+ };
35
55
  const value = useMemo(() => {
36
56
  if (path) {
37
57
  setPrevious(path);
@@ -52,8 +72,15 @@ export const EditorProvider = ({
52
72
  theme: theme,
53
73
  selectedPath: selectedPath,
54
74
  setSelectedPath: setSelectedPath,
75
+ selectedElement: selectedElement,
76
+ setSelectedElement: setSelectedElement,
77
+ isSelectedElement: isSelectedElement,
78
+ setDragging: setDragging,
79
+ dragging: dragging,
55
80
  popupType,
56
81
  setPopupType,
82
+ setContextMenu,
83
+ contextMenu,
57
84
  openAI,
58
85
  setOpenAI
59
86
  },
@@ -63,7 +90,7 @@ export const EditorProvider = ({
63
90
  export const useEditorContext = () => {
64
91
  return useContext(EditorContext);
65
92
  };
66
- const useMouseMove = () => {
93
+ const useMouseMove = dragging => {
67
94
  const [event, setEvent] = useState({
68
95
  target: null
69
96
  });
@@ -74,12 +101,13 @@ const useMouseMove = () => {
74
101
  };
75
102
  }, []);
76
103
  const onMouseMove = e => {
77
- const dpath = e?.target?.closest(".dpath");
78
- if (dpath) {
79
- console.log(`Stopped position: (${e.clientX}, ${e.clientY})`, dpath);
80
- setEvent({
81
- target: dpath
82
- });
104
+ if (!dragging?.id) {
105
+ const dpath = e?.target?.closest(".dpath");
106
+ if (dpath) {
107
+ setEvent({
108
+ target: dpath
109
+ });
110
+ }
83
111
  }
84
112
  };
85
113
  const debounceMouseMove = debounce(onMouseMove, 100);
@@ -7,8 +7,9 @@ import withEquation from "../plugins/withEquation";
7
7
  import withMentions from "../plugins/withMentions";
8
8
  import withLayout from "../plugins/withLayout";
9
9
  import withHtml from "../plugins/withHTML";
10
+ import withErrorHandling from "./withErrorHandling";
10
11
  import withCustomDeleteBackward from "../plugins/withCustomDeleteBackward";
11
12
  const withCommon = (props, rest = {}) => {
12
- return rest.needLayout ? withHtml(withEquation(withLayout(withHistory(withEmbeds(withTables(withLinks(withMentions(withCustomDeleteBackward(withReact(props)))))))))) : withHtml(withEquation(withHistory(withEmbeds(withTables(withLinks(withMentions(withCustomDeleteBackward(withReact(props)))))))));
13
+ return rest.needLayout ? withErrorHandling(withHtml(withEquation(withLayout(withHistory(withEmbeds(withTables(withLinks(withMentions(withCustomDeleteBackward(withReact(props))))))))))) : withErrorHandling(withHtml(withEquation(withHistory(withEmbeds(withTables(withLinks(withMentions(withCustomDeleteBackward(withReact(props))))))))));
13
14
  };
14
15
  export default withCommon;
@@ -0,0 +1,14 @@
1
+ const withErrorHandling = editor => {
2
+ const {
3
+ apply
4
+ } = editor;
5
+ editor.apply = operation => {
6
+ try {
7
+ apply(operation);
8
+ } catch (error) {
9
+ console.error("Error applying Slate operation:", error);
10
+ }
11
+ };
12
+ return editor;
13
+ };
14
+ export default withErrorHandling;
@@ -0,0 +1,168 @@
1
+ import { Editor, Transforms, Node, Path } from "slate";
2
+ import { isSelectionInNodeType, getCaretPosition, onPasteRnDNode, bringItemToFB } from "../../helper";
3
+ import focusOnNewItem from "../../helper/RnD/focusOnNewItem";
4
+ const RND_ITEM_TYPES = ["freegrid", "freegridItem", "freegridBox"];
5
+ const parsePath = path => path?.split("|").map(m => parseInt(m));
6
+ const selectAll = (event, {
7
+ editor
8
+ }) => {
9
+ try {
10
+ const {
11
+ selected,
12
+ match
13
+ } = isSelectionInNodeType(editor, "freegridItem");
14
+ const sel = getCaretPosition(editor);
15
+
16
+ // if not selection prevent the events
17
+ if (!sel) {
18
+ event.preventDefault();
19
+ return;
20
+ }
21
+
22
+ // only prevent default for freegrid item
23
+ if (selected) {
24
+ event.preventDefault();
25
+ const [item, path] = match;
26
+ switch (item?.childType) {
27
+ case "text":
28
+ const range = Editor.range(editor, path);
29
+ Transforms.select(editor, range);
30
+ break;
31
+ default:
32
+ return null;
33
+ }
34
+ }
35
+ } catch (err) {
36
+ console.log(err);
37
+ }
38
+ };
39
+ const onCopy = async (event, {
40
+ editor
41
+ }) => {
42
+ try {
43
+ const {
44
+ path,
45
+ enable
46
+ } = window?.selectedRnDElement || {};
47
+ // only copy RnD items in Srag enable mode not in edit mode
48
+ if (path && enable === 1) {
49
+ let pPath = parsePath(path);
50
+ let node = Node.get(editor, pPath);
51
+ const isRnD = RND_ITEM_TYPES.indexOf(node?.type) > -1;
52
+ if (isRnD) {
53
+ event.preventDefault();
54
+ if (node?.type === "freegrid") {
55
+ node = Node.get(editor, Path.parent(pPath));
56
+ }
57
+ const jsonFragment = JSON.stringify(node);
58
+ window.copiedNode = jsonFragment;
59
+ }
60
+ }
61
+ } catch (err) {
62
+ console.log(err);
63
+ }
64
+ };
65
+ const onCut = (event, {
66
+ editor
67
+ }) => {
68
+ try {
69
+ const {
70
+ path,
71
+ enable
72
+ } = window?.selectedRnDElement || {};
73
+ onCopy(event, {
74
+ editor
75
+ });
76
+ // remove the node
77
+ if (path && enable === 1) {
78
+ const pPath = parsePath(path);
79
+ Transforms.removeNodes(editor, {
80
+ at: pPath
81
+ });
82
+ // change / remove the focus to parent
83
+ const currentSelectedNode = Node.get(editor, pPath);
84
+ const sPath = currentSelectedNode?.type !== "freegrid" ? Path.parent(pPath) : pPath;
85
+ focusOnNewItem(editor, sPath, {
86
+ setSelectedElement: window.updateSelectedItem
87
+ });
88
+ }
89
+ } catch (err) {
90
+ console.log(err);
91
+ }
92
+ };
93
+ const onPaste = async (event, {
94
+ editor
95
+ }) => {
96
+ try {
97
+ const {
98
+ path,
99
+ enable
100
+ } = window?.selectedRnDElement || {};
101
+ if (path && enable === 1) {
102
+ event.preventDefault();
103
+ const pPath = parsePath(path);
104
+ const currentSelectedNode = Node.get(editor, pPath);
105
+ let sPath = currentSelectedNode?.type !== "freegrid" ? Path.parent(pPath) : pPath;
106
+ const sectionNode = Node.get(editor, sPath);
107
+ const np = onPasteRnDNode(editor, {
108
+ path: sPath,
109
+ children: sectionNode?.children,
110
+ slateNodes: null
111
+ });
112
+ if (np && window.updateSelectedItem) {
113
+ focusOnNewItem(editor, np, {
114
+ setSelectedElement: window.updateSelectedItem
115
+ });
116
+ }
117
+ }
118
+ } catch (err) {
119
+ console.log(err);
120
+ }
121
+ };
122
+ const onBringFront = (event, {
123
+ editor
124
+ }) => {
125
+ try {
126
+ const {
127
+ path,
128
+ enable
129
+ } = window?.selectedRnDElement || {};
130
+ if (path && enable === 1) {
131
+ event.preventDefault();
132
+ bringItemToFB(editor, {
133
+ path: parsePath(path),
134
+ moveFront: true
135
+ });
136
+ }
137
+ } catch (err) {
138
+ console.log(err);
139
+ }
140
+ };
141
+ const onBringBack = (event, {
142
+ editor
143
+ }) => {
144
+ try {
145
+ const {
146
+ path,
147
+ enable
148
+ } = window?.selectedRnDElement || {};
149
+ if (path && enable === 1) {
150
+ event.preventDefault();
151
+ bringItemToFB(editor, {
152
+ path: parsePath(path),
153
+ moveFront: false
154
+ });
155
+ }
156
+ } catch (err) {
157
+ console.log(err);
158
+ }
159
+ };
160
+ const RnDCtrlCmds = {
161
+ ArrowUp: onBringFront,
162
+ ArrowDown: onBringBack,
163
+ a: selectAll,
164
+ c: onCopy,
165
+ v: onPaste,
166
+ x: onCut
167
+ };
168
+ export default RnDCtrlCmds;
@@ -32,7 +32,7 @@ import FormField from "../Elements/Form/FormField";
32
32
  import InlineIcon from "../Elements/InlineIcon/InlineIcon";
33
33
  import SimpleText from "../Elements/SimpleText";
34
34
  import CheckList from "../Elements/List/CheckList";
35
- import { getTextColor, isEmptyTextNode } from "../helper";
35
+ import { isEmptyTextNode } from "../helper";
36
36
  import Attachments from "../Elements/Attachments/Attachments";
37
37
  import { getBreakPointsValue } from "../helper/theme";
38
38
  import Variables from "../Elements/Variables/Variable";
@@ -40,6 +40,10 @@ import insertNewLine from "./insertNewLine";
40
40
  import Divider from "../Elements/Divider/Divider";
41
41
  import { getBorderColor } from "./helper";
42
42
  import Code from "../Elements/EmbedScript/Code";
43
+ import FreeGrid from "../Elements/FreeGrid/FreeGrid";
44
+ import FreeGridItem from "../Elements/FreeGrid/FreeGridItem";
45
+ import FreeGridBox from "../Elements/FreeGrid/FreeGridBox";
46
+ import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
43
47
  import { jsx as _jsx } from "react/jsx-runtime";
44
48
  const alignment = ["alignLeft", "alignRight", "alignCenter"];
45
49
  const list_types = ["orderedList", "unorderedList"];
@@ -160,7 +164,7 @@ export const activeMark = (editor, format) => {
160
164
  return null;
161
165
  }
162
166
  };
163
- export const getMarked = (leaf, children) => {
167
+ export const getMarked = (leaf, children, theme) => {
164
168
  const className = leaf?.doublequote ? "doublequote" : "";
165
169
  if (leaf.bold) {
166
170
  children = /*#__PURE__*/_jsx("strong", {
@@ -203,7 +207,13 @@ export const getMarked = (leaf, children) => {
203
207
  // cover under single span
204
208
  if (leaf.color || leaf.bgColor || leaf.fontSize || leaf.fontFamily || leaf.fontWeight || className) {
205
209
  const family = fontFamilyMap[leaf?.fontFamily];
206
- const textStyles = getTextColor(leaf?.color);
210
+ const textStyles = leaf?.color?.indexOf("gradient") >= 0 ? {
211
+ background: leaf?.color?.concat("text"),
212
+ WebkitBackgroundClip: "text",
213
+ WebkitTextFillColor: "transparent"
214
+ } : {
215
+ color: leaf.color
216
+ };
207
217
  children = /*#__PURE__*/_jsx("span", {
208
218
  style: {
209
219
  background: leaf.bgColor
@@ -212,10 +222,14 @@ export const getMarked = (leaf, children) => {
212
222
  className: className,
213
223
  component: "span",
214
224
  sx: {
215
- fontSize: {
225
+ ...wrapThemeBreakpoints({
216
226
  lg: sizeMap[leaf.fontSize] || leaf.fontSize,
217
227
  ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
218
- },
228
+ }, "fontSize", theme),
229
+ // fontSize: {
230
+ // lg: sizeMap[leaf.fontSize] || leaf.fontSize,
231
+ // ...getBreakPointsValue(leaf.fontSize, null, "overrideText"),
232
+ // },
219
233
  ...textStyles,
220
234
  fontFamily: family,
221
235
  fontWeight: leaf.fontWeight
@@ -401,6 +415,18 @@ export const getBlock = props => {
401
415
  return /*#__PURE__*/_jsx(Grid, {
402
416
  ...props
403
417
  });
418
+ case "freegrid":
419
+ return /*#__PURE__*/_jsx(FreeGrid, {
420
+ ...props
421
+ });
422
+ case "freegridItem":
423
+ return /*#__PURE__*/_jsx(FreeGridItem, {
424
+ ...props
425
+ });
426
+ case "freegridBox":
427
+ return /*#__PURE__*/_jsx(FreeGridBox, {
428
+ ...props
429
+ });
404
430
  case "grid-item":
405
431
  return /*#__PURE__*/_jsx(GridItem, {
406
432
  ...props,
@@ -100,7 +100,7 @@ export const draftToSlate = props => {
100
100
  return a;
101
101
  }, []);
102
102
  return converted;
103
- } else if (data?.length > 0) {
103
+ } else if (data?.length) {
104
104
  return data;
105
105
  } else {
106
106
  return [{
@@ -3,6 +3,7 @@ import { toggleBlock } from "./SlateUtilityFunctions";
3
3
  import insertNewLine from "./insertNewLine";
4
4
  import { insertAccordion } from "./accordion";
5
5
  import { isListItem } from "./helper";
6
+ import RnDCtrlCmds from "./RnD/RnDCtrlCmds";
6
7
  import EDITORCMDS from "../common/EditorCmds";
7
8
  const HOTKEYS = {
8
9
  b: "bold",
@@ -75,6 +76,10 @@ export const commands = props => {
75
76
  } else {
76
77
  Editor.addMark(editor, HOTKEYS[event.key], true);
77
78
  }
79
+ } else if (RnDCtrlCmds[event.key]) {
80
+ RnDCtrlCmds[event.key](event, {
81
+ editor
82
+ });
78
83
  } else if (EDITORCMDS[event.key]) {
79
84
  EDITORCMDS[event.key](event, {
80
85
  editor,
@@ -0,0 +1,49 @@
1
+ import { Transforms } from "slate";
2
+ import insertNewLine from "./insertNewLine";
3
+ import scrollToNewSection from "../helper/RnD/scrollToNewSection";
4
+ const Default_text_Node = {
5
+ type: "paragraph",
6
+ children: [{
7
+ text: "Effortless Business Growth"
8
+ }]
9
+ };
10
+ export const insertFreeGridItem = (childType, childTypeNode, extProps = {}, type = "freegridItem") => {
11
+ return {
12
+ type: type || "freegridItem",
13
+ childType: childType || "text",
14
+ children: [childTypeNode || Default_text_Node],
15
+ gridArea: "1 / 1 / 2 / 2",
16
+ height: 300,
17
+ width: 250,
18
+ left: 401,
19
+ top: 0,
20
+ marginTop: 47,
21
+ left_xs: 24,
22
+ top_xs: 24,
23
+ marginTop_xs: 12,
24
+ width_xs: 250,
25
+ height_xs: 300,
26
+ gridArea_xs: "1 / 1 / 2 / 2",
27
+ sectionBgColor: "rgb(240, 108, 131)",
28
+ ...(extProps || {})
29
+ };
30
+ };
31
+ export const insertFreeGrid = (editor, path, extProps) => {
32
+ const items = Array.from(Array(1).keys()).map(() => insertFreeGridItem());
33
+ const freegridData = [{
34
+ type: "paragraph",
35
+ children: [{
36
+ type: "freegrid",
37
+ height: 500,
38
+ gridTemplateRows: "var(--rows)",
39
+ gridTemplateColumns: "var(--cols)",
40
+ children: [...items]
41
+ }]
42
+ }];
43
+ const newPath = path ? path : editor?.selection?.anchor?.path;
44
+ Transforms.insertNodes(editor, freegridData, {
45
+ at: newPath
46
+ });
47
+ scrollToNewSection(editor, newPath, extProps);
48
+ insertNewLine(editor);
49
+ };
@@ -398,4 +398,33 @@ export const onDeleteKey = (event, {
398
398
  } catch (err) {
399
399
  console.log(err);
400
400
  }
401
+ };
402
+ export const selectText = (editor, {
403
+ path,
404
+ cursorOnly
405
+ }) => {
406
+ try {
407
+ ReactEditor.focus(editor);
408
+ const range = Editor.range(editor, path);
409
+ const textNode = Node.get(editor, path);
410
+ if (!cursorOnly) {
411
+ Transforms.select(editor, range);
412
+ }
413
+ if (cursorOnly && textNode) {
414
+ const textLength = Node.string(textNode).length;
415
+ editor.selection = {
416
+ anchor: {
417
+ path: path,
418
+ offset: textLength
419
+ },
420
+ focus: {
421
+ path: path,
422
+ offset: textLength
423
+ }
424
+ };
425
+ }
426
+ ReactEditor.focus(editor);
427
+ } catch (err) {
428
+ console.log(err);
429
+ }
401
430
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "3.8.8",
3
+ "version": "3.8.9",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -36,6 +36,7 @@
36
36
  "react-gcolor-picker": "^1.3.1",
37
37
  "react-icons": "^4.10.1",
38
38
  "react-katex": "^3.0.1",
39
+ "react-rnd": "^10.4.11",
39
40
  "react-scripts": "5.0.1",
40
41
  "react-signature-canvas": "^1.0.6",
41
42
  "react-slick": "^0.29.0",
@@ -56,6 +57,7 @@
56
57
  },
57
58
  "scripts": {
58
59
  "prepare": "husky install .husky",
60
+ "analyze": "source-map-explorer build/static/js/*.js",
59
61
  "lint": "./node_modules/.bin/eslint --ignore-path .gitignore .",
60
62
  "start": "craco start",
61
63
  "build": "NODE_OPTIONS='--max_old_space_size=4096' craco build",
@@ -64,7 +66,7 @@
64
66
  "storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook dev -p 6006",
65
67
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
66
68
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
67
- "publish:local": "rm -rf /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist --copy-files"
69
+ "publish:local": "rm -rf /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist --copy-files"
68
70
  },
69
71
  "eslintConfig": {
70
72
  "extends": [
@@ -112,6 +114,7 @@
112
114
  "babel-plugin-named-exports-order": "^0.0.2",
113
115
  "eslint-plugin-storybook": "^0.6.13",
114
116
  "prop-types": "^15.8.1",
117
+ "source-map-explorer": "^2.5.3",
115
118
  "storybook": "^7.4.0",
116
119
  "webpack": "^5.88.2"
117
120
  },