@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.
Files changed (97) hide show
  1. package/dist/Editor/ChatEditor.js +2 -2
  2. package/dist/Editor/CommonEditor.js +169 -111
  3. package/dist/Editor/Elements/AI/AIInput.js +16 -5
  4. package/dist/Editor/Elements/AI/PopoverAIInput.js +31 -17
  5. package/dist/Editor/Elements/AI/Styles.js +2 -1
  6. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
  7. package/dist/Editor/Elements/AI/VoiceToText/index.js +167 -0
  8. package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
  9. package/dist/Editor/Elements/Accordion/Accordion.js +74 -7
  10. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +3 -2
  11. package/dist/Editor/Elements/Accordion/AccordionSummary.js +4 -60
  12. package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
  13. package/dist/Editor/Elements/Button/EditorButton.js +28 -16
  14. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  16. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  17. package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
  18. package/dist/Editor/Elements/Embed/Image.js +28 -20
  19. package/dist/Editor/Elements/Embed/Video.js +15 -11
  20. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  21. package/dist/Editor/Elements/Grid/Grid.js +2 -0
  22. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  23. package/dist/Editor/Elements/Link/Link.js +6 -1
  24. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  25. package/dist/Editor/Elements/Link/LinkPopup.js +11 -3
  26. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  27. package/dist/Editor/Elements/Table/Table.js +1 -1
  28. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  29. package/dist/Editor/MiniEditor.js +3 -1
  30. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  31. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
  32. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  33. package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
  34. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  35. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  36. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
  37. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +20 -13
  38. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
  39. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  40. package/dist/Editor/Toolbar/PopupTool/index.js +6 -5
  41. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  42. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  43. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  44. package/dist/Editor/common/ColorPickerButton.js +25 -9
  45. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  46. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  47. package/dist/Editor/common/CustomDialog/index.js +94 -0
  48. package/dist/Editor/common/CustomDialog/style.js +67 -0
  49. package/dist/Editor/common/CustomSelect.js +33 -0
  50. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  51. package/dist/Editor/common/EditorCmds.js +35 -0
  52. package/dist/Editor/common/Icon.js +30 -2
  53. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  54. package/dist/Editor/common/LinkSettings/index.js +2 -1
  55. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  56. package/dist/Editor/common/MentionsPopup/Styles.js +5 -2
  57. package/dist/Editor/common/Shorthands/elements.js +54 -0
  58. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
  59. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
  60. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  61. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  62. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  63. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  64. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
  65. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  66. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  67. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  68. package/dist/Editor/helper/theme.js +190 -4
  69. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  70. package/dist/Editor/hooks/useMouseMove.js +4 -2
  71. package/dist/Editor/plugins/withEmbeds.js +1 -1
  72. package/dist/Editor/plugins/withHTML.js +47 -5
  73. package/dist/Editor/plugins/withLayout.js +15 -10
  74. package/dist/Editor/plugins/withTable.js +2 -2
  75. package/dist/Editor/theme/ThemeList.js +50 -173
  76. package/dist/Editor/theme/index.js +144 -0
  77. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  78. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  79. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  80. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  81. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  82. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  83. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  84. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  85. package/dist/Editor/themeSettings/icons.js +60 -0
  86. package/dist/Editor/themeSettings/index.js +320 -0
  87. package/dist/Editor/themeSettings/style.js +152 -0
  88. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  89. package/dist/Editor/themeSettingsAI/index.js +356 -0
  90. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  91. package/dist/Editor/themeSettingsAI/style.js +247 -0
  92. package/dist/Editor/utils/SlateUtilityFunctions.js +157 -25
  93. package/dist/Editor/utils/button.js +1 -17
  94. package/dist/Editor/utils/events.js +11 -4
  95. package/dist/Editor/utils/font.js +40 -37
  96. package/dist/Editor/utils/helper.js +73 -13
  97. 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
- delete updateData.children;
77
- Transforms.setNodes(editor, {
78
- ...updateData
79
- }, {
80
- at: path
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 Collapse Button",
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, { useState } from "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
- const ToolBar = () => {
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: [children, !readOnly && /*#__PURE__*/_jsx(ToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(AccordionTitlePopup, {
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
- ...buttonProps,
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 || "#FFF",
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 || "#FFF",
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 === "actionTrigger";
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
- metadata.buttonLink.handler("click");
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 || "#FFFFFF"}`,
211
- background: bgColorHover || bgColor || "rgb(30, 75, 122)",
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: {