@flozy/editor 5.2.1 → 5.2.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Editor/CommonEditor.js +6 -4
- package/dist/Editor/Elements/Button/EditorButton.js +1 -0
- package/dist/Editor/Elements/Form/Form.js +1 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +1 -0
- package/dist/Editor/Elements/List/CheckList.js +2 -1
- package/dist/Editor/Elements/Search/SearchAttachment.js +1 -0
- package/dist/Editor/Elements/SimpleText/style.js +2 -0
- package/dist/Editor/Elements/Table/Table.js +6 -3
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +9 -1
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +4 -4
- package/dist/Editor/common/ColorPickerButton.js +42 -28
- package/dist/Editor/common/MentionsPopup/Styles.js +1 -0
- package/dist/Editor/commonStyle.js +4 -1
- package/dist/Editor/plugins/withLayout.js +42 -47
- package/dist/Editor/utils/SlateUtilityFunctions.js +8 -1
- package/package.json +1 -1
@@ -103,6 +103,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
103
103
|
});
|
104
104
|
const [isTextSelected, setIsTextSelected] = useState(false);
|
105
105
|
const [breakpoint, setBreakpoint] = useState("");
|
106
|
+
const [topBanner, setTopBanner] = useState();
|
106
107
|
const debouncedValue = useRef(value);
|
107
108
|
const [size] = useWindowResize();
|
108
109
|
const {
|
@@ -300,6 +301,10 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
300
301
|
const handleEditorChange = newValue => {
|
301
302
|
if (!readOnly) {
|
302
303
|
if (JSON.stringify(newValue) !== JSON.stringify(debouncedValue?.current)) {
|
304
|
+
setTopBanner(() => {
|
305
|
+
const firstNode = newValue[0];
|
306
|
+
return firstNode?.type === "topbanner" ? firstNode : null;
|
307
|
+
});
|
303
308
|
debounced(newValue);
|
304
309
|
if (!isInteracted) {
|
305
310
|
setIsInteracted(true);
|
@@ -414,10 +419,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
414
419
|
editorWrapper?.current?.classList.remove("hideScroll");
|
415
420
|
handleScrollStop();
|
416
421
|
};
|
417
|
-
const hasTopBanner = () =>
|
418
|
-
const tb = editor.children[0];
|
419
|
-
return tb?.type === "topbanner" ? tb : null;
|
420
|
-
};
|
422
|
+
const hasTopBanner = () => topBanner;
|
421
423
|
const renderTopBanner = () => {
|
422
424
|
const tb = hasTopBanner();
|
423
425
|
return tb ? /*#__PURE__*/_jsx(TopBanner, {
|
@@ -49,6 +49,7 @@ const SearchAttachment = props => {
|
|
49
49
|
background: theme?.palette?.containers?.slashBrainCardBg,
|
50
50
|
cursor: 'pointer',
|
51
51
|
margin: '4px 0px',
|
52
|
+
lineHeight: 1.43,
|
52
53
|
"&.MuiPaper-root.MuiPaper-rounded": {
|
53
54
|
borderRadius: "7px !important",
|
54
55
|
paddingTop: '0px !important'
|
@@ -128,6 +128,8 @@ const Table = props => {
|
|
128
128
|
const tableRef = useRef(null);
|
129
129
|
const containerRef = useRef(null);
|
130
130
|
const path = ReactEditor.findPath(editor, element);
|
131
|
+
const isValidPath = path && Editor.hasPath(editor, path); // getting cannot find the descendant path error while deleting table from free grid on right click
|
132
|
+
|
131
133
|
const dragRowBtnCls = `table-${path?.toString()?.replaceAll(",", "-")}-row-drag-btn`;
|
132
134
|
const handleAction = type => {
|
133
135
|
Transforms.select(editor, editor.selection);
|
@@ -243,14 +245,15 @@ const Table = props => {
|
|
243
245
|
openSetttings,
|
244
246
|
exandTools
|
245
247
|
},
|
246
|
-
children: [/*#__PURE__*/_jsxs("div", {
|
248
|
+
children: [isValidPath ? /*#__PURE__*/_jsxs("div", {
|
247
249
|
style: {
|
248
250
|
minWidth: "100%",
|
249
251
|
maxWidth: "100%",
|
250
252
|
position: "relative",
|
251
253
|
overflowX: "auto",
|
252
254
|
display: "flex",
|
253
|
-
paddingTop: "10px"
|
255
|
+
paddingTop: "10px",
|
256
|
+
lineHeight: 1.43
|
254
257
|
},
|
255
258
|
ref: containerRef,
|
256
259
|
onScroll: handleScroll,
|
@@ -282,7 +285,7 @@ const Table = props => {
|
|
282
285
|
addType: "col",
|
283
286
|
onAdd: addCol
|
284
287
|
})]
|
285
|
-
}), /*#__PURE__*/_jsx(AddRowCol, {
|
288
|
+
}) : null, /*#__PURE__*/_jsx(AddRowCol, {
|
286
289
|
...commonAddBtnProps,
|
287
290
|
addType: "row",
|
288
291
|
onAdd: addRow
|
@@ -177,6 +177,11 @@ const usePopupStyle = theme => ({
|
|
177
177
|
justifyContent: "start",
|
178
178
|
borderRadius: "10px !important",
|
179
179
|
transition: "background-color 0.3s ease",
|
180
|
+
// "& .colorBoxElementIcon": {
|
181
|
+
// "& path": {
|
182
|
+
// fill: theme?.palette?.type === "dark" ? "none" : "",
|
183
|
+
// },
|
184
|
+
// },
|
180
185
|
"& .signatureElementIcon": {
|
181
186
|
"& path": {
|
182
187
|
fill: `${theme?.palette?.editor?.closeButtonSvgStroke}`
|
@@ -744,7 +749,10 @@ const usePopupStyle = theme => ({
|
|
744
749
|
border: `1px solid ${theme?.palette?.editor?.inputFieldBorder} !important`
|
745
750
|
},
|
746
751
|
"& .popup_tabs": {
|
747
|
-
backgroundColor: theme?.palette?.editor?.inputFieldBgColor
|
752
|
+
backgroundColor: theme?.palette?.editor?.inputFieldBgColor,
|
753
|
+
"@media only screen and (max-width: 899px)": {
|
754
|
+
width: '100% !important'
|
755
|
+
}
|
748
756
|
},
|
749
757
|
"& .popup_tabs-header": {
|
750
758
|
fontFamily: "Inter, sans-serif",
|
@@ -33,14 +33,14 @@ const TextFormat = props => {
|
|
33
33
|
const [anchorEl, setAnchorEl] = useState(null);
|
34
34
|
const [type, setType] = useState(null);
|
35
35
|
const open = Boolean(anchorEl);
|
36
|
-
const {
|
37
|
-
fontFamilies,
|
38
|
-
theme
|
39
|
-
} = useEditorContext();
|
40
36
|
const {
|
41
37
|
element: pageSt
|
42
38
|
} = getPageSettings(editor) || {};
|
43
39
|
const pageSettingLine = pageSt?.pageProps?.lineHeight;
|
40
|
+
const {
|
41
|
+
fontFamilies,
|
42
|
+
theme
|
43
|
+
} = useEditorContext();
|
44
44
|
const {
|
45
45
|
activeBreakPoint
|
46
46
|
} = useEditorContext();
|
@@ -2,6 +2,7 @@ import React, { useMemo, useState } from "react";
|
|
2
2
|
import { Grid, Button, Popover } from "@mui/material";
|
3
3
|
import ColorPickerTool from "react-gcolor-picker";
|
4
4
|
import { colors } from "../Elements/Color Picker/defaultColors";
|
5
|
+
import SwipeableDrawerComponent from "./SwipeableDrawer";
|
5
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
6
7
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
7
8
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
@@ -17,6 +18,7 @@ const ColorPickerButton = props => {
|
|
17
18
|
const [anchorEl, setAnchorEl] = useState(null);
|
18
19
|
const [color, setColor] = useState(value);
|
19
20
|
const open = Boolean(anchorEl);
|
21
|
+
const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
|
20
22
|
const handleColorPicker = e => {
|
21
23
|
setAnchorEl(e.currentTarget);
|
22
24
|
};
|
@@ -37,6 +39,33 @@ const ColorPickerButton = props => {
|
|
37
39
|
}
|
38
40
|
return colors;
|
39
41
|
}, [recentColors, defaultColors, hideGradient]);
|
42
|
+
const ColorPickerToolComponent = () => /*#__PURE__*/_jsxs(Grid, {
|
43
|
+
item: true,
|
44
|
+
xs: 12,
|
45
|
+
children: [/*#__PURE__*/_jsx("div", {
|
46
|
+
children: /*#__PURE__*/_jsx(ColorPickerTool, {
|
47
|
+
gradient: hideGradient ? false : true,
|
48
|
+
value: color,
|
49
|
+
onChange: handleColorChange,
|
50
|
+
defaultColors: initialColors
|
51
|
+
})
|
52
|
+
}), /*#__PURE__*/_jsxs("div", {
|
53
|
+
style: {
|
54
|
+
display: "flex",
|
55
|
+
justifyContent: "end",
|
56
|
+
margin: "8px"
|
57
|
+
},
|
58
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
59
|
+
onClick: handleClose,
|
60
|
+
className: "secondaryBtn",
|
61
|
+
children: "Cancel"
|
62
|
+
}), /*#__PURE__*/_jsx(Button, {
|
63
|
+
onClick: handleSave,
|
64
|
+
className: "primaryBtn",
|
65
|
+
children: "Save"
|
66
|
+
})]
|
67
|
+
})]
|
68
|
+
});
|
40
69
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
41
70
|
children: [/*#__PURE__*/_jsx(Button, {
|
42
71
|
style: {
|
@@ -48,7 +77,18 @@ const ColorPickerButton = props => {
|
|
48
77
|
},
|
49
78
|
|
50
79
|
onClick: handleColorPicker
|
51
|
-
}), /*#__PURE__*/_jsx(
|
80
|
+
}), isMobile ? /*#__PURE__*/_jsx(SwipeableDrawerComponent, {
|
81
|
+
open: open,
|
82
|
+
onClose: handleClose,
|
83
|
+
swipeableDrawer: false,
|
84
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
85
|
+
container: true,
|
86
|
+
padding: 0,
|
87
|
+
className: "ed-cp-wrpr",
|
88
|
+
sx: classes.colorPickerPopup,
|
89
|
+
children: /*#__PURE__*/_jsx(ColorPickerToolComponent, {})
|
90
|
+
})
|
91
|
+
}) : /*#__PURE__*/_jsx(Popover, {
|
52
92
|
open: open,
|
53
93
|
anchorEl: anchorEl,
|
54
94
|
anchorOrigin: {
|
@@ -65,33 +105,7 @@ const ColorPickerButton = props => {
|
|
65
105
|
container: true,
|
66
106
|
padding: 0,
|
67
107
|
className: "ed-cp-wrpr",
|
68
|
-
children: /*#__PURE__*/
|
69
|
-
item: true,
|
70
|
-
xs: 12,
|
71
|
-
children: [/*#__PURE__*/_jsx("div", {
|
72
|
-
children: /*#__PURE__*/_jsx(ColorPickerTool, {
|
73
|
-
gradient: hideGradient ? false : true,
|
74
|
-
value: color,
|
75
|
-
onChange: handleColorChange,
|
76
|
-
defaultColors: initialColors
|
77
|
-
})
|
78
|
-
}), /*#__PURE__*/_jsxs("div", {
|
79
|
-
style: {
|
80
|
-
display: "flex",
|
81
|
-
justifyContent: "end",
|
82
|
-
margin: "8px"
|
83
|
-
},
|
84
|
-
children: [/*#__PURE__*/_jsx(Button, {
|
85
|
-
onClick: handleClose,
|
86
|
-
className: "secondaryBtn",
|
87
|
-
children: "Cancel"
|
88
|
-
}), /*#__PURE__*/_jsx(Button, {
|
89
|
-
onClick: handleSave,
|
90
|
-
className: "primaryBtn",
|
91
|
-
children: "Save"
|
92
|
-
})]
|
93
|
-
})]
|
94
|
-
})
|
108
|
+
children: /*#__PURE__*/_jsx(ColorPickerToolComponent, {})
|
95
109
|
})
|
96
110
|
})]
|
97
111
|
});
|
@@ -38,7 +38,10 @@ const useCommonStyle = theme => ({
|
|
38
38
|
backgroundColor: theme?.palette?.editor?.background
|
39
39
|
},
|
40
40
|
"& .popup_tabs": {
|
41
|
-
backgroundColor: theme?.palette?.editor?.background
|
41
|
+
backgroundColor: theme?.palette?.editor?.background,
|
42
|
+
"@media only screen and (max-width: 899px)": {
|
43
|
+
width: '100% !important'
|
44
|
+
}
|
42
45
|
},
|
43
46
|
"& .popup_tabs-header": {
|
44
47
|
backgroundColor: theme?.palette?.editor?.background,
|
@@ -56,56 +56,51 @@ const withLayout = editor => {
|
|
56
56
|
}]
|
57
57
|
};
|
58
58
|
Transforms.insertNodes(editor, paragraph, {
|
59
|
-
at:
|
59
|
+
at: path.concat(1)
|
60
60
|
});
|
61
61
|
return;
|
62
62
|
}
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
}
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
};
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
Transforms.insertNodes(editor, remainingNodes, {
|
105
|
-
at: [1]
|
106
|
-
});
|
107
|
-
}
|
108
|
-
}
|
63
|
+
|
64
|
+
// Transforms.insertNodes(editor, paragraph, { at: [0] });
|
65
|
+
// const extractFirstText = (node) => {
|
66
|
+
// if (node.text) {
|
67
|
+
// return node.text;
|
68
|
+
// }
|
69
|
+
// if (node.children) {
|
70
|
+
// for (const child of node.children) {
|
71
|
+
// const text = extractFirstText(child);
|
72
|
+
// if (text) {
|
73
|
+
// return text;
|
74
|
+
// }
|
75
|
+
// }
|
76
|
+
// }
|
77
|
+
// return "";
|
78
|
+
// };
|
79
|
+
|
80
|
+
// const extractRemainingNodes = (node) => {
|
81
|
+
// if (!node.children) {
|
82
|
+
// return [];
|
83
|
+
// }
|
84
|
+
// const [, ...remainingChildren] = node.children;
|
85
|
+
// return remainingChildren.map((child) => ({ ...child }));
|
86
|
+
// };
|
87
|
+
|
88
|
+
// const firstNode = editor.children[0];
|
89
|
+
// const firstContent = extractFirstText(firstNode);
|
90
|
+
|
91
|
+
// if (firstNode.type !== "title") {
|
92
|
+
// const titleNode = {
|
93
|
+
// type: "title",
|
94
|
+
// children: [{ text: firstContent }],
|
95
|
+
// };
|
96
|
+
// Transforms.removeNodes(editor, { at: [0] });
|
97
|
+
// Transforms.insertNodes(editor, titleNode, { at: [0], select: true });
|
98
|
+
// const remainingNodes = extractRemainingNodes(firstNode);
|
99
|
+
// if (remainingNodes.length > 0) {
|
100
|
+
// Transforms.insertNodes(editor, remainingNodes, { at: [1] });
|
101
|
+
// }
|
102
|
+
// }
|
103
|
+
|
109
104
|
ORDERS_LAYOUT.forEach((enforce, index) => {
|
110
105
|
if (index < editor.children.length) {
|
111
106
|
const existsNode = Node.get(editor, [index]);
|
@@ -312,7 +312,8 @@ export const getBlock = props => {
|
|
312
312
|
borderRadius: `${element?.color ? "0px" : "12px"} 12px 12px ${element?.color ? "0px" : "12px"}`,
|
313
313
|
margin: `${element?.bgColor ? "16px" : "0px"} 0px`,
|
314
314
|
width: element?.bgColor ? "calc(100% - 16px)" : "100%",
|
315
|
-
borderWidth: element?.color ? "0px 0px 0px 3px" : "0px"
|
315
|
+
borderWidth: element?.color ? "0px 0px 0px 3px" : "0px",
|
316
|
+
lineHeight: 1.43
|
316
317
|
},
|
317
318
|
children: children
|
318
319
|
});
|
@@ -372,6 +373,9 @@ export const getBlock = props => {
|
|
372
373
|
});
|
373
374
|
case "orderedList":
|
374
375
|
return /*#__PURE__*/_jsx("ol", {
|
376
|
+
style: {
|
377
|
+
lineHeight: 1.43
|
378
|
+
},
|
375
379
|
className: "listItemMargin",
|
376
380
|
type: "1",
|
377
381
|
...attributes,
|
@@ -379,6 +383,9 @@ export const getBlock = props => {
|
|
379
383
|
});
|
380
384
|
case "unorderedList":
|
381
385
|
return /*#__PURE__*/_jsx("ul", {
|
386
|
+
style: {
|
387
|
+
lineHeight: 1.43
|
388
|
+
},
|
382
389
|
className: "listItemMargin",
|
383
390
|
...attributes,
|
384
391
|
children: children
|