@flozy/editor 3.7.8 → 3.7.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.
- package/dist/Editor/ChatEditor.js +2 -2
- package/dist/Editor/CommonEditor.js +169 -111
- package/dist/Editor/Elements/AI/AIInput.js +16 -5
- package/dist/Editor/Elements/AI/PopoverAIInput.js +31 -17
- package/dist/Editor/Elements/AI/Styles.js +2 -1
- package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
- package/dist/Editor/Elements/AI/VoiceToText/index.js +167 -0
- package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
- package/dist/Editor/Elements/Accordion/Accordion.js +74 -7
- package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +3 -2
- package/dist/Editor/Elements/Accordion/AccordionSummary.js +4 -60
- package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
- package/dist/Editor/Elements/Button/EditorButton.js +28 -16
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
- 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 +2 -1
- package/dist/Editor/Elements/Embed/Image.js +28 -20
- package/dist/Editor/Elements/Embed/Video.js +15 -11
- package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
- package/dist/Editor/Elements/Grid/Grid.js +2 -0
- package/dist/Editor/Elements/Grid/GridItem.js +3 -1
- package/dist/Editor/Elements/Link/Link.js +6 -1
- package/dist/Editor/Elements/Link/LinkButton.js +4 -2
- package/dist/Editor/Elements/Link/LinkPopup.js +11 -3
- package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
- package/dist/Editor/Elements/Table/Table.js +1 -1
- package/dist/Editor/Elements/Table/TableCell.js +1 -1
- package/dist/Editor/MiniEditor.js +3 -1
- package/dist/Editor/Toolbar/Basic/index.js +4 -2
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +20 -13
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +6 -5
- package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
- package/dist/Editor/assets/svg/AIIcons.js +153 -1
- package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
- package/dist/Editor/common/ColorPickerButton.js +25 -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/EditorCmds.js +35 -0
- package/dist/Editor/common/Icon.js +30 -2
- package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
- package/dist/Editor/common/LinkSettings/index.js +2 -1
- package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
- package/dist/Editor/common/MentionsPopup/Styles.js +5 -2
- package/dist/Editor/common/Shorthands/elements.js +54 -0
- package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
- package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
- package/dist/Editor/common/StyleBuilder/index.js +1 -1
- package/dist/Editor/helper/theme.js +190 -4
- package/dist/Editor/hooks/useEditorTheme.js +139 -0
- package/dist/Editor/hooks/useMouseMove.js +4 -2
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +47 -5
- package/dist/Editor/plugins/withLayout.js +15 -10
- package/dist/Editor/plugins/withTable.js +2 -2
- 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 +290 -0
- package/dist/Editor/themeSettings/buttons/style.js +21 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
- package/dist/Editor/themeSettings/fonts/index.js +213 -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 +190 -0
- package/dist/Editor/themeSettingsAI/style.js +247 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +157 -25
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/events.js +11 -4
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +73 -13
- package/package.json +2 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { useState, useEffect, useRef, cloneElement } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import STTStyles from "./style";
|
|
4
|
+
import { Grid, IconButton, Box } from "@mui/material";
|
|
5
|
+
import { AudioWave } from "./AudioWave";
|
|
6
|
+
import { CloseGreyCircle, PauseRecordingIcon, TickBlueCircle } from "../../../assets/svg/AIIcons";
|
|
7
|
+
import { MODES } from "../helper";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
function STT(props) {
|
|
11
|
+
const {
|
|
12
|
+
children,
|
|
13
|
+
otherProps,
|
|
14
|
+
onSend
|
|
15
|
+
} = props;
|
|
16
|
+
const {
|
|
17
|
+
services
|
|
18
|
+
} = otherProps;
|
|
19
|
+
const classes = STTStyles();
|
|
20
|
+
const [isRecording, setIsRecording] = useState(false);
|
|
21
|
+
const [mediaRecorder, setMediaRecorder] = useState(null);
|
|
22
|
+
const [audioChunks, setAudioChunks] = useState([]);
|
|
23
|
+
const [chunkIndex, setChunkIndex] = useState(0);
|
|
24
|
+
const audioChunksRef = useRef([]);
|
|
25
|
+
const [transcription, setTranscription] = useState("");
|
|
26
|
+
const [showPause, setShowPause] = useState(true);
|
|
27
|
+
const [isAILoading, setAILoading] = useState(false);
|
|
28
|
+
const setChunk = event => {
|
|
29
|
+
if (event.data.size > 0) {
|
|
30
|
+
setAudioChunks(prev => {
|
|
31
|
+
const updatedChunks = [...prev, event.data];
|
|
32
|
+
audioChunksRef.current = updatedChunks; // Update ref manually
|
|
33
|
+
return updatedChunks;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const sendChunck = async (isLast = false) => {
|
|
38
|
+
if (audioChunksRef.current.length > 0) {
|
|
39
|
+
const audioBlob = new Blob(audioChunksRef.current, {
|
|
40
|
+
type: "audio/webm"
|
|
41
|
+
});
|
|
42
|
+
const formData = new FormData();
|
|
43
|
+
formData.append("audio", audioBlob, `audio_chunk_${chunkIndex}.wav`);
|
|
44
|
+
formData.append("chunkIndex", chunkIndex); // Send chunk index to the backend
|
|
45
|
+
if (isLast) {
|
|
46
|
+
formData.append("isLastChunk", true); // Send chunk index to the backend
|
|
47
|
+
} else {
|
|
48
|
+
formData.append("isLastChunk", false);
|
|
49
|
+
setChunkIndex(prevIndex => prevIndex + 1);
|
|
50
|
+
}
|
|
51
|
+
const result = await services("speechToText", {
|
|
52
|
+
formData
|
|
53
|
+
});
|
|
54
|
+
setTranscription(result?.data);
|
|
55
|
+
await sendChunck();
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const handleStopRecording = () => {
|
|
59
|
+
sendChunck(true);
|
|
60
|
+
setAudioChunks([]);
|
|
61
|
+
};
|
|
62
|
+
const startRecording = async () => {
|
|
63
|
+
setTranscription("");
|
|
64
|
+
const stream = await navigator.mediaDevices.getUserMedia({
|
|
65
|
+
audio: true
|
|
66
|
+
});
|
|
67
|
+
const recorder = new MediaRecorder(stream);
|
|
68
|
+
setMediaRecorder(recorder);
|
|
69
|
+
recorder.ondataavailable = setChunk;
|
|
70
|
+
recorder.onstop = handleStopRecording;
|
|
71
|
+
recorder.start(100);
|
|
72
|
+
setIsRecording(true);
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
sendChunck();
|
|
75
|
+
}, 2000);
|
|
76
|
+
};
|
|
77
|
+
const stopRecording = () => {
|
|
78
|
+
if (mediaRecorder) {
|
|
79
|
+
mediaRecorder.stop();
|
|
80
|
+
|
|
81
|
+
// Stop all tracks to release the microphone
|
|
82
|
+
if (mediaRecorder.stream) {
|
|
83
|
+
mediaRecorder.stream.getTracks().forEach(track => track.stop());
|
|
84
|
+
}
|
|
85
|
+
setChunkIndex(0);
|
|
86
|
+
setShowPause(false);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const sendToInfiniti = async () => {
|
|
90
|
+
setAILoading(true);
|
|
91
|
+
setIsRecording(false);
|
|
92
|
+
const result = await services("infinityAI", {
|
|
93
|
+
mode: MODES.default,
|
|
94
|
+
query: transcription
|
|
95
|
+
});
|
|
96
|
+
const text = result?.data || "";
|
|
97
|
+
onSend("speech_to_text", {
|
|
98
|
+
text
|
|
99
|
+
});
|
|
100
|
+
stopRecording();
|
|
101
|
+
setAILoading(false);
|
|
102
|
+
};
|
|
103
|
+
const closeRecording = () => {
|
|
104
|
+
setAudioChunks([]);
|
|
105
|
+
stopRecording();
|
|
106
|
+
setIsRecording(false);
|
|
107
|
+
setShowPause(true);
|
|
108
|
+
setTranscription("");
|
|
109
|
+
};
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
audioChunksRef.current = audioChunks;
|
|
112
|
+
}, [audioChunks]);
|
|
113
|
+
return /*#__PURE__*/_jsx(Grid, {
|
|
114
|
+
xs: 12,
|
|
115
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
|
116
|
+
className: classes.SttContainer,
|
|
117
|
+
children: !isRecording ? /*#__PURE__*/_jsx(Grid, {
|
|
118
|
+
xs: 12,
|
|
119
|
+
children: /*#__PURE__*/cloneElement(children, {
|
|
120
|
+
startRecording,
|
|
121
|
+
isAILoading
|
|
122
|
+
})
|
|
123
|
+
}) : /*#__PURE__*/_jsxs(Grid, {
|
|
124
|
+
xs: 12,
|
|
125
|
+
sx: classes.AudioVizualizerContainer,
|
|
126
|
+
children: [transcription ? /*#__PURE__*/_jsx(Grid, {
|
|
127
|
+
xs: 12,
|
|
128
|
+
sx: classes.TranscriptionContainer,
|
|
129
|
+
children: transcription
|
|
130
|
+
}) : null, /*#__PURE__*/_jsxs(Grid, {
|
|
131
|
+
xs: 12,
|
|
132
|
+
sx: classes.AudioVizualizerContent,
|
|
133
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
134
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
135
|
+
onClick: closeRecording,
|
|
136
|
+
children: /*#__PURE__*/_jsx(CloseGreyCircle, {})
|
|
137
|
+
})
|
|
138
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
139
|
+
sx: classes.AudioVisualiser,
|
|
140
|
+
children: /*#__PURE__*/_jsx(AudioWave, {
|
|
141
|
+
audioChunks: audioChunks
|
|
142
|
+
})
|
|
143
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
144
|
+
children: showPause ? /*#__PURE__*/_jsx(IconButton, {
|
|
145
|
+
onClick: stopRecording,
|
|
146
|
+
children: /*#__PURE__*/_jsx(PauseRecordingIcon, {})
|
|
147
|
+
}) : /*#__PURE__*/_jsx(IconButton, {
|
|
148
|
+
onClick: sendToInfiniti,
|
|
149
|
+
disabled: !transcription,
|
|
150
|
+
style: !transcription ? {
|
|
151
|
+
opacity: 0.5
|
|
152
|
+
} : {},
|
|
153
|
+
children: /*#__PURE__*/_jsx(TickBlueCircle, {})
|
|
154
|
+
})
|
|
155
|
+
})]
|
|
156
|
+
})]
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
STT.defaultProps = {
|
|
162
|
+
classes: {}
|
|
163
|
+
};
|
|
164
|
+
STT.propTypes = {
|
|
165
|
+
classes: PropTypes.object
|
|
166
|
+
};
|
|
167
|
+
export const VoiceToText = STT;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const styles = () => ({
|
|
2
|
+
SttContainer: {
|
|
3
|
+
display: "flex",
|
|
4
|
+
width: "100%",
|
|
5
|
+
padding: "12px",
|
|
6
|
+
zIndex: 1
|
|
7
|
+
},
|
|
8
|
+
STTInput: {
|
|
9
|
+
width: "100%",
|
|
10
|
+
borderRadius: "8px",
|
|
11
|
+
"&& .MuiOutlinedInput-root .MuiOutlinedInput-notchedOutline": {
|
|
12
|
+
borderColor: "#2563EB"
|
|
13
|
+
},
|
|
14
|
+
"&& .MuiOutlinedInput-root": {
|
|
15
|
+
background: "rgba(252, 250, 255, 1)"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
AudioVizualizerContainer: {
|
|
19
|
+
width: "100%",
|
|
20
|
+
display: "flex",
|
|
21
|
+
background: "rgba(252, 250, 255, 1)",
|
|
22
|
+
borderRadius: "8px",
|
|
23
|
+
border: "1px solid #2563EB",
|
|
24
|
+
alignItems: "center",
|
|
25
|
+
flexWrap: "wrap"
|
|
26
|
+
},
|
|
27
|
+
AudioVizualizerContent: {
|
|
28
|
+
display: "flex",
|
|
29
|
+
height: "50px",
|
|
30
|
+
width: "100%"
|
|
31
|
+
},
|
|
32
|
+
AudioVisualiser: {
|
|
33
|
+
flexGrow: "1",
|
|
34
|
+
height: "100%"
|
|
35
|
+
},
|
|
36
|
+
TranscriptionContainer: {
|
|
37
|
+
padding: "12px"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
export default styles;
|
|
@@ -9,6 +9,55 @@ import Icon from "../../common/Icon";
|
|
|
9
9
|
import { useEditorSelection } from "../../hooks/useMouseMove";
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
const accordionBtnStyleKeys = {
|
|
13
|
+
accordionTextColor: "textColor",
|
|
14
|
+
accordionBgColor: "bgColor",
|
|
15
|
+
accordionBorderColor: "borderColor"
|
|
16
|
+
};
|
|
17
|
+
const getAccordionData = updateData => {
|
|
18
|
+
const accordionBtnStyle = {}; // accordion btn style will come under type: accordion node
|
|
19
|
+
const accordionTitleStyle = {}; // accordion title style will come under type: accordion-summary node
|
|
20
|
+
|
|
21
|
+
Object.entries(updateData).forEach(([key, value]) => {
|
|
22
|
+
const accordionBtnStyleKey = accordionBtnStyleKeys[key];
|
|
23
|
+
if (accordionBtnStyleKey) {
|
|
24
|
+
// converting accordion button elementProp keys to node keys e.g: accordionTextColor -> textColor
|
|
25
|
+
accordionBtnStyle[accordionBtnStyleKey] = value;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
accordionTitleStyle[key] = value;
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
accordionBtnStyle,
|
|
32
|
+
accordionTitleStyle
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const convertAccordionBtnStyleKeys = (data = {}) => {
|
|
36
|
+
const style = {
|
|
37
|
+
...data
|
|
38
|
+
};
|
|
39
|
+
Object.entries(accordionBtnStyleKeys).forEach(([key, value]) => {
|
|
40
|
+
const val = data[value];
|
|
41
|
+
if (val) {
|
|
42
|
+
// deleting the existing style key in node e.g: textColor
|
|
43
|
+
delete style[value];
|
|
44
|
+
|
|
45
|
+
// convertint into new key in element props e.g: accordionTextColor
|
|
46
|
+
style[key] = val;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return style;
|
|
50
|
+
};
|
|
51
|
+
const getElementProps = element => {
|
|
52
|
+
const accordionSummary = element.children?.find(c => c.type === "accordion-summary");
|
|
53
|
+
|
|
54
|
+
// joining accordion title and button styles
|
|
55
|
+
const elementProps = {
|
|
56
|
+
...accordionSummary,
|
|
57
|
+
...convertAccordionBtnStyleKeys(element)
|
|
58
|
+
};
|
|
59
|
+
return elementProps;
|
|
60
|
+
};
|
|
12
61
|
const Accordion = props => {
|
|
13
62
|
const {
|
|
14
63
|
attributes,
|
|
@@ -69,16 +118,34 @@ const Accordion = props => {
|
|
|
69
118
|
at: path
|
|
70
119
|
});
|
|
71
120
|
};
|
|
121
|
+
const setNodes = (data, path) => {
|
|
122
|
+
Transforms.setNodes(editor, data, {
|
|
123
|
+
at: path
|
|
124
|
+
});
|
|
125
|
+
};
|
|
72
126
|
const onSave = data => {
|
|
73
127
|
const updateData = {
|
|
74
128
|
...data
|
|
75
129
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
130
|
+
const {
|
|
131
|
+
accordionBtnStyle,
|
|
132
|
+
accordionTitleStyle
|
|
133
|
+
} = getAccordionData(updateData);
|
|
134
|
+
|
|
135
|
+
// applying accordion title style
|
|
136
|
+
const accordionSummary = data.children?.find(c => c.type === "accordion-summary");
|
|
137
|
+
const accordionSummaryPath = ReactEditor.findPath(editor, accordionSummary);
|
|
138
|
+
setNodes({
|
|
139
|
+
...accordionTitleStyle,
|
|
140
|
+
type: "accordion-summary",
|
|
141
|
+
children: accordionSummary.children
|
|
142
|
+
}, accordionSummaryPath);
|
|
143
|
+
|
|
144
|
+
// applying accordion button style
|
|
145
|
+
delete accordionBtnStyle.children;
|
|
146
|
+
setNodes({
|
|
147
|
+
...accordionBtnStyle
|
|
148
|
+
}, path);
|
|
82
149
|
onClose();
|
|
83
150
|
};
|
|
84
151
|
const onClose = () => {
|
|
@@ -123,7 +190,7 @@ const Accordion = props => {
|
|
|
123
190
|
},
|
|
124
191
|
children: children[1]
|
|
125
192
|
}), !readOnly && /*#__PURE__*/_jsx(ToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(AccordionBtnPopup, {
|
|
126
|
-
element: element,
|
|
193
|
+
element: getElementProps(element),
|
|
127
194
|
onSave: onSave,
|
|
128
195
|
onClose: onClose,
|
|
129
196
|
customProps: customProps
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import StyleBuilder from "../../common/StyleBuilder";
|
|
3
3
|
import accordionTitleBtnStyle from "../../common/StyleBuilder/accordionTitleBtnStyle";
|
|
4
|
+
import accordionTitleStyle from "../../common/StyleBuilder/accordionTitleStyle";
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
const AccordionBtnPopup = props => {
|
|
6
7
|
const {
|
|
@@ -10,12 +11,12 @@ const AccordionBtnPopup = props => {
|
|
|
10
11
|
customProps
|
|
11
12
|
} = props;
|
|
12
13
|
return /*#__PURE__*/_jsx(StyleBuilder, {
|
|
13
|
-
title: "Accordion
|
|
14
|
+
title: "Accordion Settings",
|
|
14
15
|
type: "accordionTitleBtnStyle",
|
|
15
16
|
element: element,
|
|
16
17
|
onSave: onSave,
|
|
17
18
|
onClose: onClose,
|
|
18
|
-
renderTabs: accordionTitleBtnStyle,
|
|
19
|
+
renderTabs: [...accordionTitleBtnStyle, ...accordionTitleStyle],
|
|
19
20
|
customProps: customProps
|
|
20
21
|
});
|
|
21
22
|
};
|
|
@@ -1,68 +1,17 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { Transforms } from "slate";
|
|
3
|
-
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
|
4
|
-
import AccordionTitlePopup from "./AccordionTitlePopup";
|
|
5
|
-
import { IconButton, Tooltip } from "@mui/material";
|
|
6
|
-
import { GridSettingsIcon } from "../../common/iconslist";
|
|
7
|
-
import { useEditorSelection } from "../../hooks/useMouseMove";
|
|
1
|
+
import React from "react";
|
|
8
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
3
|
const AccordionSummary = props => {
|
|
11
4
|
const {
|
|
12
5
|
attributes,
|
|
13
6
|
children,
|
|
14
|
-
element
|
|
15
|
-
customProps
|
|
7
|
+
element
|
|
16
8
|
} = props;
|
|
17
|
-
const {
|
|
18
|
-
readOnly
|
|
19
|
-
} = customProps;
|
|
20
|
-
const [openSetttings, setOpenSettings] = useState(false);
|
|
21
|
-
const editor = useSlateStatic();
|
|
22
|
-
const [showTool] = useEditorSelection(editor);
|
|
23
|
-
const selected = useSelected();
|
|
24
|
-
const path = ReactEditor.findPath(editor, element);
|
|
25
9
|
const {
|
|
26
10
|
textColor,
|
|
27
11
|
bgColor,
|
|
28
12
|
borderColor
|
|
29
13
|
} = element;
|
|
30
|
-
|
|
31
|
-
return selected && !showTool ? /*#__PURE__*/_jsx("div", {
|
|
32
|
-
className: "element-toolbar hr",
|
|
33
|
-
contentEditable: false,
|
|
34
|
-
style: {
|
|
35
|
-
top: "-42px"
|
|
36
|
-
},
|
|
37
|
-
children: /*#__PURE__*/_jsx(Tooltip, {
|
|
38
|
-
title: "Settings",
|
|
39
|
-
arrow: true,
|
|
40
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
41
|
-
onClick: onSettings,
|
|
42
|
-
children: /*#__PURE__*/_jsx(GridSettingsIcon, {})
|
|
43
|
-
})
|
|
44
|
-
})
|
|
45
|
-
}) : null;
|
|
46
|
-
};
|
|
47
|
-
const onSettings = () => {
|
|
48
|
-
setOpenSettings(true);
|
|
49
|
-
};
|
|
50
|
-
const onSave = data => {
|
|
51
|
-
const updateData = {
|
|
52
|
-
...data
|
|
53
|
-
};
|
|
54
|
-
delete updateData.children;
|
|
55
|
-
Transforms.setNodes(editor, {
|
|
56
|
-
...updateData
|
|
57
|
-
}, {
|
|
58
|
-
at: path
|
|
59
|
-
});
|
|
60
|
-
onClose();
|
|
61
|
-
};
|
|
62
|
-
const onClose = () => {
|
|
63
|
-
setOpenSettings(false);
|
|
64
|
-
};
|
|
65
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
14
|
+
return /*#__PURE__*/_jsx("div", {
|
|
66
15
|
className: `accordion-summary-container`,
|
|
67
16
|
...attributes,
|
|
68
17
|
style: {
|
|
@@ -72,12 +21,7 @@ const AccordionSummary = props => {
|
|
|
72
21
|
border: `1px solid ${borderColor}`,
|
|
73
22
|
color: textColor
|
|
74
23
|
},
|
|
75
|
-
children:
|
|
76
|
-
element: element,
|
|
77
|
-
onSave: onSave,
|
|
78
|
-
onClose: onClose,
|
|
79
|
-
customProps: customProps
|
|
80
|
-
}) : null]
|
|
24
|
+
children: children
|
|
81
25
|
});
|
|
82
26
|
};
|
|
83
27
|
export default AccordionSummary;
|
|
@@ -62,6 +62,11 @@ function AppHeader(props) {
|
|
|
62
62
|
const handleDrawerToggle = () => {
|
|
63
63
|
setMobileOpen(prevState => !prevState);
|
|
64
64
|
};
|
|
65
|
+
const closeDrawer = () => {
|
|
66
|
+
if (mobileOpen) {
|
|
67
|
+
handleDrawerToggle();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
65
70
|
const onSettings = e => {
|
|
66
71
|
if (!readOnly) {
|
|
67
72
|
e.stopPropagation();
|
|
@@ -148,10 +153,27 @@ function AppHeader(props) {
|
|
|
148
153
|
}), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(List, {
|
|
149
154
|
children: menus.map((item, i) => {
|
|
150
155
|
const buttonProps = handleLinkType(item.url, item.linkType, true, item.target === "_blank");
|
|
156
|
+
const onTouchEnd = e => {
|
|
157
|
+
if (buttonProps?.onTouchEnd) {
|
|
158
|
+
buttonProps?.onTouchEnd(e);
|
|
159
|
+
closeDrawer();
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const onClick = e => {
|
|
163
|
+
if (buttonProps?.onClick) {
|
|
164
|
+
buttonProps?.onClick(e);
|
|
165
|
+
closeDrawer();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const props = {
|
|
169
|
+
...buttonProps,
|
|
170
|
+
onTouchEnd,
|
|
171
|
+
onClick
|
|
172
|
+
};
|
|
151
173
|
return /*#__PURE__*/_jsx(ListItem, {
|
|
152
174
|
disablePadding: true,
|
|
153
175
|
children: /*#__PURE__*/_jsx(ListItemButton, {
|
|
154
|
-
...
|
|
176
|
+
...props,
|
|
155
177
|
sx: {
|
|
156
178
|
textAlign: "center"
|
|
157
179
|
},
|
|
@@ -229,7 +251,7 @@ function AppHeader(props) {
|
|
|
229
251
|
style: {
|
|
230
252
|
display: "inline-flex",
|
|
231
253
|
alignItems: "center",
|
|
232
|
-
color: textColor,
|
|
254
|
+
color: textColor || "#000000",
|
|
233
255
|
fontSize: logoFontSize,
|
|
234
256
|
fontFamily: titleFontFamily,
|
|
235
257
|
justifyContent: isLogoRight ? "end" : "start"
|
|
@@ -277,7 +299,7 @@ function AppHeader(props) {
|
|
|
277
299
|
fontFamily: fontFamily,
|
|
278
300
|
textTransform: "none",
|
|
279
301
|
fontSize: fontSize || "16px",
|
|
280
|
-
color: textColor || "#
|
|
302
|
+
color: textColor || "#000",
|
|
281
303
|
background: bgColor || "none",
|
|
282
304
|
"& .m-settings": {
|
|
283
305
|
display: "none",
|
|
@@ -292,7 +314,7 @@ function AppHeader(props) {
|
|
|
292
314
|
background: "#FFF"
|
|
293
315
|
},
|
|
294
316
|
"&:hover": {
|
|
295
|
-
color: textColorHover || textColor || "#
|
|
317
|
+
color: textColorHover || textColor || "#000",
|
|
296
318
|
background: bgColorHover || bgColor || "none",
|
|
297
319
|
"& .m-settings": {
|
|
298
320
|
display: "block"
|
|
@@ -13,6 +13,9 @@ import { WorkflowIcon } from "../../common/iconslist";
|
|
|
13
13
|
import { getTRBLBreakPoints, getBreakPointsValue } from "../../helper/theme";
|
|
14
14
|
import { handleLinkType, windowVar } from "../../utils/helper";
|
|
15
15
|
import LinkSettings from "../../common/LinkSettings";
|
|
16
|
+
import { useEditorTheme } from "../../hooks/useEditorTheme";
|
|
17
|
+
import { getTheme } from "../../theme";
|
|
18
|
+
import { fontFamilyMap } from "../../utils/font";
|
|
16
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
20
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
21
|
const EditorButton = props => {
|
|
@@ -30,6 +33,12 @@ const EditorButton = props => {
|
|
|
30
33
|
const path = ReactEditor.findPath(editor, element);
|
|
31
34
|
const [edit, setEdit] = useState(false);
|
|
32
35
|
const [openNav, setOpenNav] = useState(false);
|
|
36
|
+
const {
|
|
37
|
+
theme
|
|
38
|
+
} = useEditorTheme();
|
|
39
|
+
const {
|
|
40
|
+
buttonTheme
|
|
41
|
+
} = getTheme(theme);
|
|
33
42
|
const {
|
|
34
43
|
label,
|
|
35
44
|
bgColor,
|
|
@@ -43,7 +52,7 @@ const EditorButton = props => {
|
|
|
43
52
|
fontFamily,
|
|
44
53
|
textColorHover,
|
|
45
54
|
bgColorHover,
|
|
46
|
-
buttonIcon,
|
|
55
|
+
// buttonIcon,
|
|
47
56
|
iconPosition = "start",
|
|
48
57
|
borderStyle,
|
|
49
58
|
borderWidth,
|
|
@@ -62,13 +71,15 @@ const EditorButton = props => {
|
|
|
62
71
|
} = actionTrigger || {
|
|
63
72
|
options: []
|
|
64
73
|
};
|
|
65
|
-
const isTrigger = linkType === "
|
|
74
|
+
const isTrigger = linkType === "nextTrigger" || linkType === "prevTrigger";
|
|
66
75
|
const refURl = isTrigger ? buttonLink?.url : url;
|
|
76
|
+
const buttonIcon = element?.buttonIcon || buttonTheme?.buttonIcon;
|
|
67
77
|
const BtnIcon = buttonIcon ? buttonIcon : null;
|
|
68
78
|
windowVar.lastButtonProps = element;
|
|
69
79
|
const handleTrigger = async () => {
|
|
70
80
|
if (metadata?.buttonLink?.handler) {
|
|
71
|
-
|
|
81
|
+
const response = isTrigger ? linkType : "click";
|
|
82
|
+
metadata.buttonLink.handler(response);
|
|
72
83
|
} else if (redirectOnURLResult) {
|
|
73
84
|
// call api and redirect based on api result
|
|
74
85
|
const apiResult = await actionButtonRedirect({}, {
|
|
@@ -186,20 +197,9 @@ const EditorButton = props => {
|
|
|
186
197
|
children: [/*#__PURE__*/_jsxs(Box, {
|
|
187
198
|
sx: {
|
|
188
199
|
textDecoration: "none",
|
|
189
|
-
background: bgColor || "rgb(30, 75, 122)",
|
|
190
200
|
borderBlockStyle: "solid",
|
|
191
|
-
borderColor: borderColor || "transparent",
|
|
192
201
|
borderWidth: borderWidth !== undefined ? borderWidth : borderColor ? "1px" : "0px",
|
|
193
|
-
borderRadius: {
|
|
194
|
-
...getBreakPointsValue(borderRadius || {}, null, "overrideBorderRadius", true)
|
|
195
|
-
},
|
|
196
202
|
borderStyle: borderStyle || "solid",
|
|
197
|
-
padding: {
|
|
198
|
-
...getTRBLBreakPoints(bannerSpacing)
|
|
199
|
-
},
|
|
200
|
-
color: `${textColor || "#FFFFFF"}`,
|
|
201
|
-
fontSize: textSize || "inherit",
|
|
202
|
-
fontFamily: fontFamily || "PoppinsRegular",
|
|
203
203
|
display: "inline-flex",
|
|
204
204
|
alignItems: "center",
|
|
205
205
|
position: "relative",
|
|
@@ -207,14 +207,26 @@ const EditorButton = props => {
|
|
|
207
207
|
display: "none"
|
|
208
208
|
},
|
|
209
209
|
"&:hover": {
|
|
210
|
-
color: `${textColorHover || textColor
|
|
211
|
-
background: bgColorHover || bgColor
|
|
210
|
+
color: `${textColorHover || textColor}`,
|
|
211
|
+
background: bgColorHover || bgColor,
|
|
212
212
|
"& .element-toolbar": {
|
|
213
213
|
display: "flex"
|
|
214
214
|
}
|
|
215
|
+
},
|
|
216
|
+
color: `${textColor} !important`,
|
|
217
|
+
fontSize: `${textSize}px !important`,
|
|
218
|
+
fontFamily: `${fontFamilyMap[fontFamily] || ""} !important`,
|
|
219
|
+
background: `${bgColor} !important`,
|
|
220
|
+
borderColor: `${borderColor} !important`,
|
|
221
|
+
borderRadius: {
|
|
222
|
+
...getBreakPointsValue(borderRadius || buttonTheme?.borderRadius || {}, null, "overrideBorderRadius", true)
|
|
223
|
+
},
|
|
224
|
+
padding: {
|
|
225
|
+
...getTRBLBreakPoints(bannerSpacing || buttonTheme?.bannerSpacing || {})
|
|
215
226
|
}
|
|
216
227
|
},
|
|
217
228
|
...buttonProps,
|
|
229
|
+
className: "button theme-element",
|
|
218
230
|
children: [BtnIcon && iconPosition === "start" && /*#__PURE__*/_jsx(MUIIcon, {
|
|
219
231
|
iconName: buttonIcon,
|
|
220
232
|
style: {
|