@flozy/editor 6.0.6 → 6.0.7
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.
- package/dist/Editor/ChatEditor.js +7 -7
- package/dist/Editor/CommonEditor.js +79 -21
- package/dist/Editor/DialogWrapper.js +31 -25
- package/dist/Editor/Editor.css +21 -16
- package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
- package/dist/Editor/Elements/Button/EditorButton.js +25 -9
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +57 -12
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
- package/dist/Editor/Elements/Color Picker/Styles.js +1 -1
- package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +1 -1
- package/dist/Editor/Elements/Embed/Image.js +2 -2
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +0 -14
- package/dist/Editor/Elements/FreeGrid/styles.js +3 -0
- package/dist/Editor/Elements/Grid/GridItem.js +2 -3
- package/dist/Editor/Elements/Link/Link.js +70 -43
- package/dist/Editor/Elements/SimpleText/index.js +7 -12
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +12 -12
- package/dist/Editor/Elements/Title/title.js +13 -1
- package/dist/Editor/Elements/Variables/Style.js +28 -2
- package/dist/Editor/Elements/Variables/VariableButton.js +17 -4
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
- package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +7 -15
- package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +9 -8
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +210 -85
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +16 -12
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +56 -9
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +32 -43
- package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
- package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
- package/dist/Editor/common/ColorPickerButton.js +32 -9
- package/dist/Editor/common/CustomColorPicker/index.js +106 -0
- package/dist/Editor/common/CustomColorPicker/style.js +53 -0
- package/dist/Editor/common/CustomDialog/index.js +94 -0
- package/dist/Editor/common/CustomDialog/style.js +67 -0
- package/dist/Editor/common/CustomSelect.js +33 -0
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/DnD/Draggable.js +0 -1
- package/dist/Editor/common/FontLoader/FontList.js +3 -11
- package/dist/Editor/common/FontLoader/FontLoader.js +74 -42
- package/dist/Editor/common/Icon.js +28 -0
- package/dist/Editor/common/ImageSelector/Options/Upload.js +1 -1
- package/dist/Editor/common/ImageSelector/Styles.js +3 -9
- package/dist/Editor/common/ImageSelector/UploadStyles.js +1 -2
- package/dist/Editor/common/MentionsPopup/Styles.js +3 -9
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/styles.js +0 -1
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +8 -2
- package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
- package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +5 -4
- package/dist/Editor/common/RnD/Utils/index.js +40 -0
- package/dist/Editor/common/RnD/index.js +23 -3
- package/dist/Editor/common/Section/index.js +60 -89
- package/dist/Editor/common/Shorthands/elements.js +54 -0
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +5 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +10 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +35 -11
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
- package/dist/Editor/common/Uploader.js +8 -0
- package/dist/Editor/commonStyle.js +55 -65
- package/dist/Editor/helper/index.js +2 -2
- package/dist/Editor/helper/theme.js +200 -2
- package/dist/Editor/hooks/useDrag.js +17 -11
- package/dist/Editor/hooks/useEditorScroll.js +1 -2
- package/dist/Editor/hooks/useEditorTheme.js +153 -0
- package/dist/Editor/hooks/useMouseMove.js +9 -3
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +3 -9
- package/dist/Editor/plugins/withLayout.js +1 -1
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/theme/ThemeList.js +50 -173
- package/dist/Editor/theme/index.js +144 -0
- package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
- package/dist/Editor/themeSettings/buttons/index.js +283 -0
- package/dist/Editor/themeSettings/buttons/style.js +21 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +292 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
- package/dist/Editor/themeSettings/fonts/index.js +220 -0
- package/dist/Editor/themeSettings/fonts/style.js +44 -0
- package/dist/Editor/themeSettings/icons.js +60 -0
- package/dist/Editor/themeSettings/index.js +320 -0
- package/dist/Editor/themeSettings/style.js +152 -0
- package/dist/Editor/themeSettingsAI/icons.js +96 -0
- package/dist/Editor/themeSettingsAI/index.js +356 -0
- package/dist/Editor/themeSettingsAI/saveTheme.js +197 -0
- package/dist/Editor/themeSettingsAI/style.js +250 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +157 -49
- package/dist/Editor/utils/button.js +0 -14
- package/dist/Editor/utils/draftToSlate.js +3 -2
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +48 -20
- package/dist/Editor/utils/link.js +1 -1
- package/package.json +6 -3
@@ -1,19 +1,26 @@
|
|
1
|
-
import React from "react";
|
1
|
+
import React, { useMemo } from "react";
|
2
2
|
import { TextField, IconButton, Grid, Typography } from "@mui/material";
|
3
3
|
import { sizeMap } from "../../../utils/font.js";
|
4
4
|
import { TextMinusIcon, TextPlusIcon } from "../../../common/iconslist.js";
|
5
|
+
import { getElementStyle } from "../../../helper/theme.js";
|
6
|
+
import { useSlateStatic } from "slate-react";
|
5
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
6
8
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
7
9
|
const FontSize = props => {
|
8
10
|
const {
|
9
|
-
value,
|
11
|
+
value: val,
|
10
12
|
data,
|
11
|
-
onChange
|
13
|
+
onChange,
|
14
|
+
elementProps
|
12
15
|
} = props;
|
13
16
|
const {
|
14
17
|
key,
|
15
18
|
width
|
16
19
|
} = data;
|
20
|
+
const editor = useSlateStatic();
|
21
|
+
const value = useMemo(() => {
|
22
|
+
return getElementStyle(editor, elementProps, "font-size") || val;
|
23
|
+
}, [editor, val]);
|
17
24
|
const handleChange = e => {
|
18
25
|
let inc = parseInt(e.target.value) || 16;
|
19
26
|
inc = inc > 200 ? 200 : inc;
|
@@ -24,7 +31,9 @@ const FontSize = props => {
|
|
24
31
|
const getSizeVal = () => {
|
25
32
|
try {
|
26
33
|
const size = `${value}`?.indexOf("px") >= 0 ? value : sizeMap[value] || value;
|
27
|
-
|
34
|
+
const defaultSize = 16;
|
35
|
+
const val = parseInt(size || defaultSize);
|
36
|
+
return isNaN(val) ? defaultSize : val;
|
28
37
|
} catch (err) {
|
29
38
|
return "";
|
30
39
|
}
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import React from "react";
|
1
|
+
import React, { useMemo } from "react";
|
2
2
|
import { FormControl, Grid, ListItemIcon, ListSubheader, MenuItem, Select, Typography } from "@mui/material";
|
3
|
-
import { getBreakPointsValue } from "../../../helper/theme";
|
3
|
+
import { getBreakPointsValue, getElementStyle } from "../../../helper/theme";
|
4
4
|
import useWindowResize from "../../../hooks/useWindowResize";
|
5
5
|
import { useEditorContext } from "../../../hooks/useMouseMove";
|
6
6
|
import FontFamilyAutocomplete from "../../../Toolbar/FormatTools/FontFamilyAutocomplete";
|
7
7
|
import { useSlate } from "slate-react";
|
8
8
|
import KeyboardArrowDownRoundedIcon from "@mui/icons-material/KeyboardArrowDownRounded";
|
9
9
|
|
10
|
-
// hideMetaDataOptions -- pass true to hide metadata option in select field
|
10
|
+
// hideMetaDataOptions -- pass true to hide metadata option in select field
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
12
12
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
13
13
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
@@ -30,14 +30,22 @@ const TextOptions = props => {
|
|
30
30
|
renderOption,
|
31
31
|
width,
|
32
32
|
webFont = false,
|
33
|
-
hideMetaDataOptions = false
|
33
|
+
hideMetaDataOptions = false,
|
34
|
+
themeEnabled
|
34
35
|
} = data;
|
35
36
|
const {
|
36
37
|
fontFamilies
|
37
38
|
} = useEditorContext();
|
38
|
-
const editor = useSlate();
|
39
39
|
const [size] = useWindowResize();
|
40
|
-
const
|
40
|
+
const editor = useSlate();
|
41
|
+
const value = useMemo(() => {
|
42
|
+
const userValue = isBreakpoint ? getBreakPointsValue(val, size?.device) : val;
|
43
|
+
if (themeEnabled) {
|
44
|
+
// editor takes a little amount of time to update the new style in element, in that case userValue will be returned
|
45
|
+
return getElementStyle(editor, elementProps, key) || userValue;
|
46
|
+
}
|
47
|
+
return userValue;
|
48
|
+
}, [editor, isBreakpoint, val, size?.device]);
|
41
49
|
const metaDataMappingOptions = metaMappings?.boards || [];
|
42
50
|
const updatedOption = !hideMetaDataOptions && elementProps?.metadatamapping ? [...options, ...metaDataMappingOptions] : webFont ? fontFamilies?.options : options;
|
43
51
|
const handleChange = (e, d) => {
|
@@ -116,7 +124,7 @@ const TextOptions = props => {
|
|
116
124
|
editor: editor,
|
117
125
|
format: key,
|
118
126
|
options: fontFamilies.options,
|
119
|
-
width:
|
127
|
+
width: "100%",
|
120
128
|
onChange: onChange,
|
121
129
|
val: value,
|
122
130
|
webFont: true
|
@@ -4,6 +4,7 @@ import { convertBase64 } from "../utils/helper";
|
|
4
4
|
import { uploadFile } from "../service/fileupload";
|
5
5
|
import Icon from "./Icon";
|
6
6
|
import UploadStyles from "../common/ImageSelector/UploadStyles";
|
7
|
+
import { useEditorContext } from "../hooks/useMouseMove";
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
8
9
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
9
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
@@ -18,6 +19,9 @@ const Uploader = props => {
|
|
18
19
|
const [base64, setBase64] = useState(value?.url);
|
19
20
|
const [fileName, setFileName] = useState("");
|
20
21
|
const [uploading, setUploading] = useState(false);
|
22
|
+
const {
|
23
|
+
theme
|
24
|
+
} = useEditorContext();
|
21
25
|
const handleChange = async e => {
|
22
26
|
const uFile = e.target.files[0];
|
23
27
|
const strImage = await convertBase64(uFile);
|
@@ -99,6 +103,10 @@ const Uploader = props => {
|
|
99
103
|
className: "uploadImageSection",
|
100
104
|
children: base64 ? renderThumb() : /*#__PURE__*/_jsx(Grid, {
|
101
105
|
className: "uploadImageText",
|
106
|
+
sx: {
|
107
|
+
background: `${theme?.palette?.editor?.inputFieldBgColor}`,
|
108
|
+
border: `1px solid ${theme?.palette?.editor?.inputFieldBorder}`
|
109
|
+
},
|
102
110
|
children: /*#__PURE__*/_jsxs(Button, {
|
103
111
|
component: "label",
|
104
112
|
variant: "text",
|
@@ -51,40 +51,30 @@ const useCommonStyle = theme => ({
|
|
51
51
|
},
|
52
52
|
"& .MuiPaper-root": {
|
53
53
|
border: `unset !important`,
|
54
|
-
borderRadius:
|
55
|
-
height:
|
54
|
+
borderRadius: "0px",
|
55
|
+
height: "fit-content",
|
56
|
+
padding: "2px"
|
56
57
|
},
|
57
58
|
"& p": {
|
58
59
|
marginBottom: "7px",
|
59
60
|
marginTop: "4px"
|
60
61
|
},
|
61
|
-
"&
|
62
|
-
|
63
|
-
|
64
|
-
height: 'fit-content',
|
65
|
-
padding: '2px'
|
62
|
+
"& p": {
|
63
|
+
marginBottom: "7px",
|
64
|
+
marginTop: "4px"
|
66
65
|
},
|
67
66
|
"& .muiIconsListParent": {
|
68
67
|
"& svg": {
|
69
68
|
color: `${theme?.palette?.editor?.svgTextAlignStrokeColor} !important`
|
70
69
|
},
|
71
|
-
"&::-webkit-scrollbar-thumb": {
|
72
|
-
background: `none !important`
|
73
|
-
},
|
74
|
-
"&::-webkit-scrollbar-track": {
|
75
|
-
visibility: "hidden"
|
76
|
-
},
|
77
70
|
"&::-webkit-scrollbar-thumb": {
|
78
71
|
background: `${theme?.palette?.editor?.brainPopupScroll} !important`
|
79
|
-
},
|
80
|
-
"&::-webkit-scrollbar-track": {
|
81
|
-
visibility: "hidden"
|
82
72
|
}
|
83
73
|
},
|
84
74
|
"& .MuiGrid-root>.MuiGrid-item": {
|
85
75
|
paddingRight: "0px !important",
|
86
76
|
fontFamily: "Inter, sans-serif",
|
87
|
-
height:
|
77
|
+
height: "fit-content"
|
88
78
|
},
|
89
79
|
"& .MuiInputBase-root": {
|
90
80
|
borderRadius: "10px",
|
@@ -145,11 +135,11 @@ const useCommonStyle = theme => ({
|
|
145
135
|
borderRadius: "10px",
|
146
136
|
width: "46px !important",
|
147
137
|
marginLeft: "10px",
|
148
|
-
height:
|
138
|
+
height: "36px !important"
|
149
139
|
}
|
150
140
|
},
|
151
|
-
|
152
|
-
margin:
|
141
|
+
"& .MuiFormHelperText-root": {
|
142
|
+
margin: "4px 0px 0px 0px",
|
153
143
|
color: theme?.palette?.editor?.closeButtonSvgStroke,
|
154
144
|
fontFamily: "Inter, sans-serif"
|
155
145
|
}
|
@@ -405,14 +395,14 @@ const useCommonStyle = theme => ({
|
|
405
395
|
padding: "8px 12px",
|
406
396
|
fontSize: "12px",
|
407
397
|
color: theme?.palette?.editor?.menuOptionTextColor,
|
408
|
-
fontWeight:
|
398
|
+
fontWeight: "500",
|
409
399
|
fontFamily: "Inter, sans-serif",
|
410
|
-
minHeight:
|
400
|
+
minHeight: "36px",
|
411
401
|
"&:hover": {
|
412
402
|
backgroundColor: theme?.palette?.editor?.menuOptionHoverBackground
|
413
403
|
}
|
414
404
|
},
|
415
|
-
|
405
|
+
"& .Mui-selected": {
|
416
406
|
background: `${theme?.palette?.editor?.menuOptionSelectedOption} !important`
|
417
407
|
},
|
418
408
|
"& .MuiListSubheader-root": {
|
@@ -421,16 +411,16 @@ const useCommonStyle = theme => ({
|
|
421
411
|
fontSize: "12px"
|
422
412
|
},
|
423
413
|
"& .MuiPaper-root": {
|
424
|
-
borderRadius:
|
425
|
-
padding:
|
414
|
+
borderRadius: "8px",
|
415
|
+
padding: "0px",
|
426
416
|
background: `${theme?.palette?.editor?.textWeightPopUpBackground} !important`
|
427
417
|
},
|
428
|
-
|
429
|
-
margin:
|
430
|
-
borderRadius:
|
418
|
+
"& .MuiButtonBase-root": {
|
419
|
+
margin: "4px",
|
420
|
+
borderRadius: "6px"
|
431
421
|
},
|
432
|
-
|
433
|
-
padding:
|
422
|
+
"& .MuiList-root": {
|
423
|
+
padding: "0px"
|
434
424
|
}
|
435
425
|
},
|
436
426
|
datePicker: {
|
@@ -475,27 +465,27 @@ const useCommonStyle = theme => ({
|
|
475
465
|
}
|
476
466
|
}
|
477
467
|
},
|
478
|
-
pageSettingPopUpRoot: {
|
479
|
-
padding: "16px 8px 16px 10px!important",
|
480
|
-
height: "100%"
|
481
|
-
},
|
482
468
|
buttonMoreOption: {
|
483
469
|
background: `${theme?.palette?.editor?.aiInputBackground} !important`,
|
484
470
|
border: `1px solid ${theme?.palette?.editor?.buttonBorder1} !important`,
|
485
|
-
padding:
|
486
|
-
|
487
|
-
width:
|
488
|
-
height:
|
489
|
-
|
471
|
+
padding: "4px !important",
|
472
|
+
"& svg": {
|
473
|
+
width: "18px !important",
|
474
|
+
height: "18px !important",
|
475
|
+
"& path": {
|
490
476
|
stroke: `${theme?.palette?.editor?.closeButtonSvgStroke} !important`
|
491
477
|
}
|
492
478
|
}
|
493
479
|
},
|
480
|
+
pageSettingPopUpRoot: {
|
481
|
+
padding: "16px 8px 16px 10px!important",
|
482
|
+
height: "100%"
|
483
|
+
},
|
494
484
|
buttonMoreOption2: {
|
495
485
|
background: `${theme?.palette?.editor?.aiInputBackground} !important`,
|
496
486
|
border: `1px solid ${theme?.palette?.editor?.buttonBorder1} !important`,
|
497
|
-
|
498
|
-
|
487
|
+
"& svg": {
|
488
|
+
"& path": {
|
499
489
|
fill: `${theme?.palette?.editor?.closeButtonSvgStroke} !important`
|
500
490
|
}
|
501
491
|
}
|
@@ -503,11 +493,11 @@ const useCommonStyle = theme => ({
|
|
503
493
|
buttonMoreOption3: {
|
504
494
|
background: `${theme?.palette?.editor?.aiInputBackground} !important`,
|
505
495
|
border: `1px solid ${theme?.palette?.editor?.buttonBorder1} !important`,
|
506
|
-
padding:
|
507
|
-
|
508
|
-
width:
|
509
|
-
height:
|
510
|
-
|
496
|
+
padding: "5px !important",
|
497
|
+
"& svg": {
|
498
|
+
width: "16px !important",
|
499
|
+
height: "16px !important",
|
500
|
+
"& path": {
|
511
501
|
stroke: `${theme?.palette?.editor?.closeButtonSvgStroke} !important`
|
512
502
|
}
|
513
503
|
}
|
@@ -515,37 +505,37 @@ const useCommonStyle = theme => ({
|
|
515
505
|
resizeButton: {
|
516
506
|
background: theme?.palette?.editor?.aiInputBackground,
|
517
507
|
border: `1px solid ${theme?.palette?.editor?.buttonBorder1}`,
|
518
|
-
padding:
|
519
|
-
borderRadius:
|
520
|
-
|
521
|
-
width:
|
522
|
-
height:
|
523
|
-
|
508
|
+
padding: "5px !important",
|
509
|
+
borderRadius: "50% !important",
|
510
|
+
"& svg": {
|
511
|
+
width: "18px",
|
512
|
+
height: "18px",
|
513
|
+
"& path": {
|
524
514
|
fill: `${theme?.palette?.editor?.closeButtonSvgStroke}`
|
525
515
|
}
|
526
516
|
},
|
527
|
-
|
517
|
+
"&:hover": {
|
528
518
|
background: theme?.palette?.editor?.aiInputBackground
|
529
519
|
}
|
530
520
|
},
|
531
521
|
gradientFillBtn: {
|
532
522
|
background: `linear-gradient(112.61deg, #2C63ED 19.3%, #8360FD 88.14%) !important`,
|
533
|
-
textTransform:
|
534
|
-
color:
|
535
|
-
padding:
|
536
|
-
height:
|
537
|
-
borderRadius:
|
538
|
-
fontWeight:
|
539
|
-
fontSize:
|
523
|
+
textTransform: "math-auto !important",
|
524
|
+
color: "#FFFFFF !important",
|
525
|
+
padding: "0px 12px !important",
|
526
|
+
height: "32px",
|
527
|
+
borderRadius: "8px",
|
528
|
+
fontWeight: "500",
|
529
|
+
fontSize: "14px"
|
540
530
|
},
|
541
531
|
emptyThumbBtn: {
|
542
532
|
background: `${theme?.palette?.editor?.sectionSettingIconHover} !important`,
|
543
533
|
color: `${theme?.palette?.editor?.textColor} !important`,
|
544
|
-
fontSize:
|
545
|
-
|
546
|
-
width:
|
547
|
-
height:
|
548
|
-
|
534
|
+
fontSize: "14px !important",
|
535
|
+
"& svg": {
|
536
|
+
width: "20px !important",
|
537
|
+
height: "20px !important",
|
538
|
+
"& path": {
|
549
539
|
stroke: `${theme?.palette?.editor?.closeButtonSvgStroke} !important`
|
550
540
|
}
|
551
541
|
}
|
@@ -337,14 +337,14 @@ export const isCarouselSelected = editor => {
|
|
337
337
|
return false;
|
338
338
|
}
|
339
339
|
const [nodeEntry] = Editor.nodes(editor, {
|
340
|
-
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type ===
|
340
|
+
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "carousel"
|
341
341
|
});
|
342
342
|
if (!nodeEntry) {
|
343
343
|
return false;
|
344
344
|
}
|
345
345
|
const [node] = nodeEntry;
|
346
346
|
const carouselDom = ReactEditor.toDOMNode(editor, node);
|
347
|
-
const isEdit = carouselDom.classList.contains(
|
347
|
+
const isEdit = carouselDom.classList.contains("carousel_slider_edit");
|
348
348
|
return !isEdit;
|
349
349
|
} catch (err) {
|
350
350
|
console.log(err);
|
@@ -1,4 +1,6 @@
|
|
1
|
+
import { ReactEditor } from "slate-react";
|
1
2
|
import { sizeMap } from "../utils/font";
|
3
|
+
import { Editor, Node } from "slate";
|
2
4
|
export const breakpoints = {
|
3
5
|
small: 0,
|
4
6
|
mobile: 600,
|
@@ -33,7 +35,7 @@ const overrideValues = (value, ot) => {
|
|
33
35
|
return Object.keys(value).reduce((a, b) => {
|
34
36
|
return {
|
35
37
|
...a,
|
36
|
-
[b]: overrides[ot] ? overrides[ot](value[b]) : value
|
38
|
+
[b]: overrides[ot] ? overrides[ot](value[b], value) : value
|
37
39
|
};
|
38
40
|
}, {});
|
39
41
|
};
|
@@ -50,7 +52,15 @@ const overrides = {
|
|
50
52
|
overrideReSizeH: val => {
|
51
53
|
return val ? `${val?.height}px` : "auto";
|
52
54
|
},
|
53
|
-
overrideBorderRadius: val => {
|
55
|
+
overrideBorderRadius: (val, breakpointValues) => {
|
56
|
+
if (!val?.topLeft) {
|
57
|
+
Object.values(breakpointValues || {}).forEach(v => {
|
58
|
+
if (v) {
|
59
|
+
// Applying the values from breakpoints that exist to those that do not have
|
60
|
+
val = v;
|
61
|
+
}
|
62
|
+
});
|
63
|
+
}
|
54
64
|
return `${val?.topLeft}px ${val?.topRight}px ${val?.bottomLeft}px ${val?.bottomRight}px`;
|
55
65
|
}
|
56
66
|
};
|
@@ -118,6 +128,194 @@ export const getTRBLBreakPoints = (value, breakpoint) => {
|
|
118
128
|
console.log(err);
|
119
129
|
}
|
120
130
|
};
|
131
|
+
export function getElementStyle(editor, element, stylePropertyName) {
|
132
|
+
try {
|
133
|
+
const path = ReactEditor.findPath(editor, element);
|
134
|
+
if (path?.length) {
|
135
|
+
const currentEle = Node.get(editor, path);
|
136
|
+
const dom = ReactEditor.toDOMNode(editor, currentEle);
|
137
|
+
const editorBtn = dom?.querySelector(".button.theme-element");
|
138
|
+
return getElementProperty(editorBtn, stylePropertyName);
|
139
|
+
}
|
140
|
+
} catch (err) {
|
141
|
+
// console.log(err);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
export function getTextSizeVal(editor) {
|
145
|
+
try {
|
146
|
+
const currentNode = Node.get(editor, editor.selection.anchor.path);
|
147
|
+
const currentElement = ReactEditor.toDOMNode(editor, currentNode);
|
148
|
+
if (currentElement) {
|
149
|
+
const element = currentElement.querySelector('span[data-slate-string="true"]');
|
150
|
+
return getElementProperty(element, "font-size");
|
151
|
+
}
|
152
|
+
} catch (err) {
|
153
|
+
// console.log(err);
|
154
|
+
}
|
155
|
+
}
|
156
|
+
export function getVariableValue(val) {
|
157
|
+
const bodyElement = document.body;
|
158
|
+
const computedStyle = getComputedStyle(bodyElement);
|
159
|
+
const [, variableName] = val?.match(/var\((--[^)]+)\)/) || [];
|
160
|
+
const varValue = computedStyle.getPropertyValue(variableName).trim();
|
161
|
+
return varValue;
|
162
|
+
}
|
163
|
+
const MAP_PROPERTY_KEYS = {
|
164
|
+
fontFamily: "font-family",
|
165
|
+
fontSize: "font-size",
|
166
|
+
textSize: "font-size",
|
167
|
+
fontWeight: "font-weight"
|
168
|
+
};
|
169
|
+
export function getElementProperty(element, styleProperty) {
|
170
|
+
if (!element) {
|
171
|
+
return "";
|
172
|
+
}
|
173
|
+
const computedStyle = window.getComputedStyle(element);
|
174
|
+
const property = MAP_PROPERTY_KEYS[styleProperty] || styleProperty;
|
175
|
+
let style = computedStyle.getPropertyValue(property);
|
176
|
+
if (property === "font-family") {
|
177
|
+
style = style.replace(/"/g, ""); // remove double quotes if exists e.g: '"Courier New"'
|
178
|
+
}
|
179
|
+
|
180
|
+
return style || "";
|
181
|
+
}
|
182
|
+
export const textThemeFields = ["fontFamily", "fontSize", "color", "bold", "italic"
|
183
|
+
// "underline",
|
184
|
+
// "strikethrough",
|
185
|
+
];
|
186
|
+
|
187
|
+
const themeElements = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
|
188
|
+
export const isTextCustomized = editor => {
|
189
|
+
try {
|
190
|
+
if (editor.selection) {
|
191
|
+
const currentElement = Node.parent(editor, editor?.selection?.anchor?.path);
|
192
|
+
if (!currentElement) {
|
193
|
+
return false;
|
194
|
+
}
|
195
|
+
const {
|
196
|
+
children,
|
197
|
+
type
|
198
|
+
} = currentElement;
|
199
|
+
if (!themeElements.includes(type)) {
|
200
|
+
return false;
|
201
|
+
}
|
202
|
+
if (children?.length > 1) {
|
203
|
+
return true;
|
204
|
+
}
|
205
|
+
const customized = textThemeFields.some(field => {
|
206
|
+
const element = children[0] || {};
|
207
|
+
const value = element[field];
|
208
|
+
if (field === "fontSize") {
|
209
|
+
return Object.keys(value || {}).length;
|
210
|
+
} else {
|
211
|
+
return value;
|
212
|
+
}
|
213
|
+
});
|
214
|
+
return customized;
|
215
|
+
} else {
|
216
|
+
return null;
|
217
|
+
}
|
218
|
+
} catch (err) {
|
219
|
+
return null;
|
220
|
+
}
|
221
|
+
};
|
222
|
+
const addToTheme = (field, value, element) => {
|
223
|
+
switch (field) {
|
224
|
+
case "fontFamily":
|
225
|
+
return {
|
226
|
+
fontFamily: value
|
227
|
+
};
|
228
|
+
case "fontSize":
|
229
|
+
return {
|
230
|
+
fontSize: value?.lg
|
231
|
+
};
|
232
|
+
case "color":
|
233
|
+
return {
|
234
|
+
color: value
|
235
|
+
};
|
236
|
+
case "bold":
|
237
|
+
return {
|
238
|
+
fontWeight: "bold"
|
239
|
+
};
|
240
|
+
case "italic":
|
241
|
+
return {
|
242
|
+
fontStyle: "italic"
|
243
|
+
};
|
244
|
+
// case "underline":
|
245
|
+
// case "strikethrough":
|
246
|
+
// let textDecoration = "";
|
247
|
+
|
248
|
+
// if (element.underline) {
|
249
|
+
// textDecoration = "underline";
|
250
|
+
// }
|
251
|
+
|
252
|
+
// if (element.strikethrough) {
|
253
|
+
// textDecoration += " strikethrough";
|
254
|
+
// }
|
255
|
+
|
256
|
+
// return { textDecoration };
|
257
|
+
default:
|
258
|
+
return {};
|
259
|
+
}
|
260
|
+
};
|
261
|
+
const MAP_TEXT_THEME_FIELD = {
|
262
|
+
headingOne: "h1",
|
263
|
+
headingTwo: "h2",
|
264
|
+
headingThree: "h3",
|
265
|
+
headingFour: "h4",
|
266
|
+
headingFive: "h5",
|
267
|
+
headingSix: "h6",
|
268
|
+
paragraphOne: "para1",
|
269
|
+
paragraphTwo: "para2",
|
270
|
+
paragraphThree: "para3"
|
271
|
+
};
|
272
|
+
export const saveToTheme = editor => {
|
273
|
+
try {
|
274
|
+
if (editor.selection) {
|
275
|
+
const currentElement = Node.parent(editor, editor?.selection?.anchor?.path);
|
276
|
+
if (!currentElement) {
|
277
|
+
return false;
|
278
|
+
}
|
279
|
+
const {
|
280
|
+
children
|
281
|
+
} = currentElement;
|
282
|
+
if (children?.length > 1) {
|
283
|
+
return true;
|
284
|
+
}
|
285
|
+
let theme = {};
|
286
|
+
textThemeFields.forEach(field => {
|
287
|
+
const element = children[0] || {};
|
288
|
+
const value = element[field];
|
289
|
+
let style = {};
|
290
|
+
let isValueExist = false;
|
291
|
+
if (value) {
|
292
|
+
isValueExist = true;
|
293
|
+
if (field === "fontSize") {
|
294
|
+
isValueExist = !!Object.keys(value).length;
|
295
|
+
}
|
296
|
+
}
|
297
|
+
if (isValueExist) {
|
298
|
+
style = addToTheme(field, value, element);
|
299
|
+
}
|
300
|
+
theme = {
|
301
|
+
...theme,
|
302
|
+
...style
|
303
|
+
};
|
304
|
+
});
|
305
|
+
textThemeFields.forEach(field => {
|
306
|
+
Editor.removeMark(editor, field);
|
307
|
+
});
|
308
|
+
return {
|
309
|
+
field: MAP_TEXT_THEME_FIELD[currentElement?.type],
|
310
|
+
theme
|
311
|
+
};
|
312
|
+
}
|
313
|
+
} catch (err) {
|
314
|
+
return;
|
315
|
+
}
|
316
|
+
};
|
317
|
+
export const HEADING_THEME_FIELDS = ["h1", "h2", "h3", "h4", "h5", "h6"];
|
318
|
+
export const PARAGRAPH_THEME_FIELDS = ["para1", "para2", "para3"];
|
121
319
|
export const getBRValue = (props, rbr = "lg") => {
|
122
320
|
const {
|
123
321
|
value,
|
@@ -1,20 +1,26 @@
|
|
1
|
-
import {
|
1
|
+
import { useEffect, useState } from "react";
|
2
2
|
const useDrag = () => {
|
3
3
|
const [event, setEvent] = useState("");
|
4
|
-
const onMouseDown = useCallback(() => {
|
5
|
-
setEvent("start");
|
6
|
-
}, []);
|
7
|
-
const onMouseUp = useCallback(() => {
|
8
|
-
setEvent("end");
|
9
|
-
}, []);
|
10
4
|
useEffect(() => {
|
11
|
-
|
12
|
-
document.addEventListener("pointerup", onMouseUp);
|
5
|
+
addListener();
|
13
6
|
return () => {
|
14
|
-
|
15
|
-
document.removeEventListener("pointerup", onMouseUp);
|
7
|
+
removeListener();
|
16
8
|
};
|
17
9
|
}, []);
|
10
|
+
const onMouseDown = () => {
|
11
|
+
setEvent("start");
|
12
|
+
};
|
13
|
+
const onMouseUp = () => {
|
14
|
+
setEvent("end");
|
15
|
+
};
|
16
|
+
const addListener = () => {
|
17
|
+
document.addEventListener("pointerdown", onMouseDown);
|
18
|
+
document.addEventListener("pointerup", onMouseUp);
|
19
|
+
};
|
20
|
+
const removeListener = () => {
|
21
|
+
document.removeEventListener("pointerdown", onMouseDown);
|
22
|
+
document.removeEventListener("pointerup", onMouseUp);
|
23
|
+
};
|
18
24
|
return [event];
|
19
25
|
};
|
20
26
|
export default useDrag;
|
@@ -4,9 +4,8 @@ function useEditorScroll(editorWrapper = {
|
|
4
4
|
}, callback) {
|
5
5
|
useEffect(() => {
|
6
6
|
const handleScroll = () => {
|
7
|
-
console.log("Editor debug useEditorScroll ====>", editorWrapper, callback);
|
8
7
|
if (editorWrapper.current) {
|
9
|
-
callback();
|
8
|
+
callback("scroll");
|
10
9
|
}
|
11
10
|
};
|
12
11
|
const currentEditorWrapper = editorWrapper.current;
|