@flozy/editor 3.8.2 → 3.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. package/dist/Editor/ChatEditor.js +45 -55
  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/Emoji/EmojiPicker.js +2 -4
  21. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  22. package/dist/Editor/Elements/Grid/Grid.js +2 -0
  23. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  24. package/dist/Editor/Elements/Link/Link.js +6 -1
  25. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  26. package/dist/Editor/Elements/Link/LinkPopup.js +11 -3
  27. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  28. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
  29. package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
  30. package/dist/Editor/Elements/Table/Table.js +1 -1
  31. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  32. package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
  33. package/dist/Editor/MiniEditor.js +3 -1
  34. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  35. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
  36. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  37. package/dist/Editor/Toolbar/FormatTools/TextSize.js +29 -18
  38. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +4 -2
  39. package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
  40. package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
  41. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  42. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  43. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
  44. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +20 -13
  45. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
  46. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  47. package/dist/Editor/Toolbar/PopupTool/index.js +6 -5
  48. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  49. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  50. package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
  51. package/dist/Editor/assets/svg/RedoIcon.js +27 -0
  52. package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
  53. package/dist/Editor/assets/svg/TextIcon.js +8 -5
  54. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  55. package/dist/Editor/assets/svg/UndoIcon.js +27 -0
  56. package/dist/Editor/common/ColorPickerButton.js +25 -9
  57. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  58. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  59. package/dist/Editor/common/CustomDialog/index.js +94 -0
  60. package/dist/Editor/common/CustomDialog/style.js +67 -0
  61. package/dist/Editor/common/CustomSelect.js +33 -0
  62. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  63. package/dist/Editor/common/EditorCmds.js +35 -0
  64. package/dist/Editor/common/Icon.js +43 -3
  65. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  66. package/dist/Editor/common/LinkSettings/index.js +2 -1
  67. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  68. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +1 -6
  69. package/dist/Editor/common/MentionsPopup/Styles.js +5 -2
  70. package/dist/Editor/common/Shorthands/elements.js +54 -0
  71. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
  72. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
  73. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  74. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  75. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  76. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  77. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
  78. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  79. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  80. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  81. package/dist/Editor/common/iconslist.js +0 -31
  82. package/dist/Editor/helper/deserialize/index.js +14 -9
  83. package/dist/Editor/helper/theme.js +190 -4
  84. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  85. package/dist/Editor/hooks/useMouseMove.js +4 -2
  86. package/dist/Editor/plugins/withEmbeds.js +1 -1
  87. package/dist/Editor/plugins/withHTML.js +47 -5
  88. package/dist/Editor/plugins/withLayout.js +15 -10
  89. package/dist/Editor/plugins/withTable.js +2 -2
  90. package/dist/Editor/theme/ThemeList.js +50 -173
  91. package/dist/Editor/theme/index.js +144 -0
  92. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  93. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  94. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  95. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  96. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  97. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  98. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  99. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  100. package/dist/Editor/themeSettings/icons.js +60 -0
  101. package/dist/Editor/themeSettings/index.js +320 -0
  102. package/dist/Editor/themeSettings/style.js +152 -0
  103. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  104. package/dist/Editor/themeSettingsAI/index.js +356 -0
  105. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  106. package/dist/Editor/themeSettingsAI/style.js +247 -0
  107. package/dist/Editor/utils/SlateUtilityFunctions.js +161 -25
  108. package/dist/Editor/utils/button.js +1 -17
  109. package/dist/Editor/utils/draftToSlate.js +1 -1
  110. package/dist/Editor/utils/events.js +11 -4
  111. package/dist/Editor/utils/font.js +40 -37
  112. package/dist/Editor/utils/helper.js +51 -1
  113. package/package.json +2 -1
@@ -0,0 +1,73 @@
1
+ import { Box } from "@mui/material";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import WaveSurfer from "wavesurfer.js";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const SoundWave = props => {
6
+ const {
7
+ audioChunks = null
8
+ } = props; // Initialize to null if not provided
9
+ const waveContent = useRef(null);
10
+ const wavesurfer = useRef(null);
11
+ const [playOnce, setPlayOnce] = useState(false);
12
+ useEffect(() => {
13
+ if (waveContent.current) {
14
+ if (wavesurfer.current) {
15
+ wavesurfer.current.destroy();
16
+ }
17
+ wavesurfer.current = WaveSurfer.create({
18
+ container: waveContent.current,
19
+ waveColor: "#2563EB",
20
+ progressColor: "#2563EB",
21
+ cursorWidth: 0,
22
+ // Disable the cursor
23
+ barWidth: 2,
24
+ barGap: 1,
25
+ barRadius: 2,
26
+ scrollParent: false,
27
+ // Prevent scrolling
28
+ height: waveContent.current.clientHeight // Set height to fit container
29
+ });
30
+
31
+ // Fit the waveform to the container width
32
+ const resize = () => {
33
+ if (wavesurfer.current) {
34
+ const containerWidth = waveContent.current.clientWidth;
35
+ const duration = wavesurfer.current.getDuration();
36
+ if (duration > 0) {
37
+ const newZoom = containerWidth / duration;
38
+ wavesurfer.current.zoom(newZoom);
39
+ }
40
+ }
41
+ };
42
+ window.addEventListener("resize", resize);
43
+ resize();
44
+ return () => {
45
+ window.removeEventListener("resize", resize);
46
+ };
47
+ }
48
+ }, []);
49
+ useEffect(() => {
50
+ if (wavesurfer.current && audioChunks) {
51
+ const audioBlob = new Blob(audioChunks, {
52
+ type: "audio/webm"
53
+ });
54
+ const recordedUrl = URL.createObjectURL(audioBlob);
55
+ wavesurfer.current.load(recordedUrl).then().catch(e => console.error("Error loading audio: ", e));
56
+ if (!playOnce) {
57
+ setPlayOnce(true);
58
+ }
59
+ } else if (wavesurfer.current && !audioChunks) {
60
+ // Clear the waveform when audioChunks is null
61
+ wavesurfer.current.empty();
62
+ }
63
+ }, [audioChunks, playOnce]);
64
+ return /*#__PURE__*/_jsx(Box, {
65
+ ref: waveContent,
66
+ style: {
67
+ width: "100%",
68
+ height: "100%",
69
+ overflow: "hidden"
70
+ }
71
+ });
72
+ };
73
+ export const AudioWave = SoundWave;
@@ -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: {