@flozy/editor 10.7.0 → 10.7.1

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 (140) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +126 -15
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +45 -11
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AI/Styles.js +1 -0
  7. package/dist/Editor/Elements/Accordion/Accordion.js +25 -17
  8. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  9. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
  10. package/dist/Editor/Elements/Attachments/Attachments.js +153 -11
  11. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +8 -3
  12. package/dist/Editor/Elements/Button/EditorButton.js +23 -7
  13. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  16. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  17. package/dist/Editor/Elements/Embed/Embed.js +36 -43
  18. package/dist/Editor/Elements/Embed/Image.js +240 -23
  19. package/dist/Editor/Elements/Embed/Video.js +246 -15
  20. package/dist/Editor/Elements/Form/FormField.js +1 -1
  21. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  22. package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
  23. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +39 -33
  24. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +7 -4
  25. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +1 -0
  26. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  27. package/dist/Editor/Elements/FreeGrid/helper.js +115 -0
  28. package/dist/Editor/Elements/FreeGrid/styles.js +9 -0
  29. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  30. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
  31. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  32. package/dist/Editor/Elements/Table/Table.js +3 -3
  33. package/dist/Editor/Elements/Title/title.js +6 -6
  34. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  35. package/dist/Editor/MiniEditor.js +2 -1
  36. package/dist/Editor/Styles/EditorStyles.js +20 -5
  37. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  38. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  39. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  40. package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
  41. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  42. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  43. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  44. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +4 -2
  45. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  46. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +7 -4
  47. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  48. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +69 -9
  49. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +58 -10
  50. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  51. package/dist/Editor/Toolbar/PopupTool/index.js +5 -2
  52. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  53. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  54. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  55. package/dist/Editor/common/ColorPickerButton.js +38 -16
  56. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  57. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  58. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  59. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  60. package/dist/Editor/common/CustomSelect.js +43 -0
  61. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  62. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  63. package/dist/Editor/common/Icon.js +28 -0
  64. package/dist/Editor/common/ImageSelector/ImageSelector.js +46 -8
  65. package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
  66. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  67. package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
  68. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  69. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  70. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  71. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  72. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  73. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  74. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
  75. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
  78. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
  79. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  80. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  81. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -18
  82. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  83. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +45 -58
  84. package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
  85. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  86. package/dist/Editor/common/RnD/index.js +48 -13
  87. package/dist/Editor/common/Shorthands/elements.js +54 -0
  88. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  89. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  90. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +15 -2
  91. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  92. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  93. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  95. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  100. package/dist/Editor/common/StyleBuilder/index.js +8 -4
  101. package/dist/Editor/common/Uploader.js +125 -17
  102. package/dist/Editor/common/UploaderWithProgress.js +183 -0
  103. package/dist/Editor/common/iconslist.js +21 -0
  104. package/dist/Editor/commonStyle.js +107 -64
  105. package/dist/Editor/helper/index.js +10 -2
  106. package/dist/Editor/helper/textIndeces.js +58 -0
  107. package/dist/Editor/helper/theme.js +203 -2
  108. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  109. package/dist/Editor/hooks/useMouseMove.js +9 -3
  110. package/dist/Editor/hooks/useThemeValues.js +63 -0
  111. package/dist/Editor/plugins/withEmbeds.js +1 -1
  112. package/dist/Editor/plugins/withHTML.js +7 -3
  113. package/dist/Editor/plugins/withTable.js +1 -1
  114. package/dist/Editor/service/fileupload.js +53 -0
  115. package/dist/Editor/theme/ThemeList.js +50 -173
  116. package/dist/Editor/theme/index.js +149 -0
  117. package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
  118. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  119. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  120. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  121. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  122. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  123. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  124. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  125. package/dist/Editor/themeSettings/icons.js +60 -0
  126. package/dist/Editor/themeSettings/index.js +380 -0
  127. package/dist/Editor/themeSettings/style.js +299 -0
  128. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  129. package/dist/Editor/themeSettingsAI/index.js +355 -0
  130. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  131. package/dist/Editor/themeSettingsAI/style.js +332 -0
  132. package/dist/Editor/utils/SlateUtilityFunctions.js +231 -25
  133. package/dist/Editor/utils/accordion.js +62 -34
  134. package/dist/Editor/utils/button.js +1 -17
  135. package/dist/Editor/utils/draftToSlate.js +3 -2
  136. package/dist/Editor/utils/font.js +40 -37
  137. package/dist/Editor/utils/helper.js +97 -21
  138. package/dist/Editor/utils/insertAppHeader.js +8 -4
  139. package/package.json +4 -4
  140. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -454
@@ -1,5 +1,5 @@
1
- import React, { useEffect, useState } from "react";
2
- import { Editor, Range, Transforms } from "slate";
1
+ import React, { useState } from "react";
2
+ import { Transforms } from "slate";
3
3
  import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
4
4
  import AccordionBtnPopup from "./AccordionBtnPopup";
5
5
  import { IconButton, Tooltip, Box } from "@mui/material";
@@ -94,22 +94,30 @@ const Accordion = props => {
94
94
  theme
95
95
  } = useEditorContext();
96
96
  const classes = useCommonStyle(theme);
97
- useEffect(() => {
98
- if (!editor.selection || !children[1]) return;
99
- try {
100
- const accordionDetailsElement = element.children?.[1];
101
- const detailsPath = ReactEditor.findPath(editor, accordionDetailsElement);
102
- const detailsRange = Editor.range(editor, detailsPath);
103
- const isInside = Range.intersection(detailsRange, editor.selection);
104
- if (isInside && !toggle) {
105
- setToggle(true);
106
- }
107
- } catch (e) {
108
- console.error(e);
109
- }
110
- }, [editor.selection, children]);
97
+
98
+ // useEffect(() => {
99
+ // if (!editor.selection || !children[1]) return;
100
+
101
+ // try {
102
+ // const accordionDetailsElement = element.children?.[1];
103
+
104
+ // const detailsPath = ReactEditor.findPath(editor, accordionDetailsElement);
105
+
106
+ // const detailsRange = Editor.range(editor, detailsPath);
107
+
108
+ // const isInside = Range.intersection(detailsRange, editor.selection);
109
+
110
+ // if (isInside && !toggle) {
111
+ // setToggle(true);
112
+ // }
113
+ // } catch (e) {
114
+ // console.error(e);
115
+ // }
116
+ // }, [editor.selection, children]);
117
+
111
118
  const onToggle = () => {
112
119
  setToggle(!toggle);
120
+ Transforms.deselect(editor);
113
121
  };
114
122
  const ToolBar = () => {
115
123
  return selected && !showTool ? /*#__PURE__*/_jsxs("div", {
@@ -206,7 +214,6 @@ const Accordion = props => {
206
214
  className: "accordion-title"
207
215
  // style={{ background: bgColor, ...borderStyle }}
208
216
  ,
209
- onClick: onToggle,
210
217
  children: [/*#__PURE__*/_jsx(Box, {
211
218
  role: "button",
212
219
  className: "accordion-summary-collapse-btn",
@@ -221,6 +228,7 @@ const Accordion = props => {
221
228
  },
222
229
  cursor: "pointer"
223
230
  },
231
+ onClick: onToggle,
224
232
  children: !toggle ? /*#__PURE__*/_jsx(Icon, {
225
233
  icon: "accordionArrow"
226
234
  }) : /*#__PURE__*/_jsx(Icon, {
@@ -268,7 +268,7 @@ function AppHeader(props) {
268
268
  style: {
269
269
  display: "inline-flex",
270
270
  alignItems: "center",
271
- color: textColor,
271
+ color: textColor || "#000000",
272
272
  fontSize: logoFontSize,
273
273
  fontFamily: titleFontFamily,
274
274
  justifyContent: isLogoRight ? "end" : "start"
@@ -323,7 +323,7 @@ function AppHeader(props) {
323
323
  fontFamily: fontFamily,
324
324
  textTransform: "none",
325
325
  fontSize: fontSize || "16px",
326
- color: textColor || "#FFF",
326
+ color: textColor || "#000",
327
327
  background: bgColor || "none",
328
328
  border: borderColorHover ? `1px solid transparent` : "none",
329
329
  "& .m-settings": {
@@ -339,7 +339,7 @@ function AppHeader(props) {
339
339
  background: "#FFF"
340
340
  },
341
341
  "&:hover": {
342
- color: textColorHover || textColor || "#FFF",
342
+ color: textColorHover || textColor || "#000",
343
343
  background: bgColorHover || bgColor || "none",
344
344
  border: borderColorHover ? `1px solid ${borderColorHover}` : "none",
345
345
  "& .m-settings": {
@@ -0,0 +1,16 @@
1
+ const useAttachmentStyle = theme => ({
2
+ attachmentRoot: {
3
+ "& .uploadinDetails": {
4
+ display: "flex",
5
+ gap: "10px",
6
+ "& .MuiCircularProgress-root": {
7
+ width: "15px !important",
8
+ height: "15px !important"
9
+ }
10
+ },
11
+ "& .cancelBtn": {
12
+ display: "contents"
13
+ }
14
+ }
15
+ });
16
+ export default useAttachmentStyle;
@@ -1,33 +1,141 @@
1
- import React from "react";
2
- import { Box, Card, CardMedia, CardContent, Typography } from "@mui/material";
1
+ import React, { useEffect, useRef, useState } from "react";
2
+ import Box from '@mui/material/Box';
3
+ import Card from '@mui/material/Card';
4
+ import CardMedia from '@mui/material/CardMedia';
5
+ import CardContent from '@mui/material/CardContent';
6
+ import Typography from '@mui/material/Typography';
7
+ import CircularProgress from '@mui/material/CircularProgress';
8
+ import IconButton from '@mui/material/IconButton';
3
9
  import PictureAsPdfIcon from "@mui/icons-material/PictureAsPdf";
4
10
  import TextSnippetIcon from "@mui/icons-material/TextSnippet";
11
+ import HighlightOffRoundedIcon from "@mui/icons-material/HighlightOffRounded";
12
+ import { Transforms } from "slate";
13
+ import { ReactEditor, useSlateStatic } from "slate-react";
5
14
  import { formatDate } from "../../utils/helper";
6
15
  import Icon from "../../common/Icon";
7
16
  import { getEmbedURL } from "../../helper";
8
17
  import Video from "../Embed/Video";
18
+ import { formatFileSize } from "../../service/fileupload";
19
+ import { useEditorContext } from "../../hooks/useMouseMove";
20
+ import useAttachmentStyle from "./AttachmentStyles";
9
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
+ import { Fragment as _Fragment } from "react/jsx-runtime";
10
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
11
24
  const Attachments = props => {
12
25
  const {
13
26
  attributes,
14
27
  element,
15
- children
28
+ children,
29
+ customProps
16
30
  } = props;
17
31
  const {
18
32
  url,
19
33
  type,
20
- date
34
+ date,
35
+ fileName,
36
+ isUploading,
37
+ file,
38
+ fileSize,
39
+ uniqueId
21
40
  } = element;
41
+ const {
42
+ resumeUploadState,
43
+ services,
44
+ uploadFile,
45
+ uploadTerminator
46
+ } = customProps || {};
22
47
  const {
23
48
  isEmbed
24
49
  } = getEmbedURL(element, true);
25
50
  const getLastName = url?.split("/").pop();
26
- const fileName = `${decodeURIComponent(getLastName)}`;
51
+ const fileName2 = `${decodeURIComponent(getLastName)}`;
52
+ const editor = useSlateStatic();
53
+ const {
54
+ theme
55
+ } = useEditorContext();
56
+ const classes = useAttachmentStyle(theme);
57
+ const path = ReactEditor.findPath(editor, element);
58
+ const [redirectURL, setRedirectURL] = useState(isUploading ? null : url);
59
+ const [uploadStatus, setUploadStatus] = useState({
60
+ isUploading: !!isUploading,
61
+ uploadPercentage: 0,
62
+ fileName: fileName || fileName2,
63
+ fileSize: fileSize
64
+ });
65
+ const xhrRef = useRef(null);
66
+ const cancelUpload = () => {
67
+ Transforms.removeNodes(editor, {
68
+ at: path
69
+ });
70
+ uploadTerminator(uniqueId, setUploadStatus);
71
+ };
72
+ const onSave = url => {
73
+ setRedirectURL(url);
74
+ Transforms.setNodes(editor, {
75
+ url: url,
76
+ isUploading: false
77
+ }, {
78
+ at: path
79
+ });
80
+ setUploadStatus({
81
+ isUploading: false,
82
+ uploadPercentage: 0,
83
+ fileName: null,
84
+ fileSize: null
85
+ });
86
+ };
87
+ const handleFileUpload = async () => {
88
+ if (!file) return;
89
+ try {
90
+ const id = !uniqueId ? crypto?.randomUUID() : uniqueId;
91
+ const result = await services("uploadFile", file);
92
+ const uploadUrl = result?.data?.[0];
93
+ const fileEntry = {
94
+ file: file,
95
+ xhrRef,
96
+ presidnedURL: uploadUrl,
97
+ status: "uploading"
98
+ };
99
+ uploadFile(id, fileEntry, setUploadStatus, onSave, "document");
100
+ Transforms.setNodes(editor, {
101
+ uniqueId: id,
102
+ isUploading: true
103
+ }, {
104
+ at: path
105
+ });
106
+ } catch (error) {
107
+ console.error("Upload failed:", error);
108
+ setUploadStatus(prev => ({
109
+ ...prev,
110
+ isUploading: false,
111
+ uploadPercentage: 0
112
+ }));
113
+ }
114
+ };
115
+ const noUploadTracks = () => {
116
+ setUploadStatus({
117
+ isUploading: false,
118
+ uploadPercentage: 0,
119
+ fileName: null,
120
+ fileSize: null
121
+ });
122
+ setRedirectURL(null);
123
+ Transforms.removeNodes(editor, {
124
+ at: path
125
+ });
126
+ };
127
+ useEffect(() => {
128
+ if (uniqueId && isUploading) {
129
+ resumeUploadState(uniqueId, setUploadStatus, onSave, noUploadTracks, "document");
130
+ } else if (file && isUploading) {
131
+ handleFileUpload();
132
+ }
133
+ }, []);
27
134
  return !isEmbed ? /*#__PURE__*/_jsxs(Box, {
28
135
  component: "div",
29
136
  className: "attachment-wrpr-ev2",
30
137
  ...attributes,
138
+ sx: classes?.attachmentRoot,
31
139
  contentEditable: false,
32
140
  style: {
33
141
  display: "block"
@@ -41,7 +149,8 @@ const Attachments = props => {
41
149
  padding: "8px",
42
150
  boxShadow: "none",
43
151
  border: "1px solid #eae9e9",
44
- backgroundColor: "#F7F7F7"
152
+ backgroundColor: "#F7F7F7",
153
+ position: "relative"
45
154
  },
46
155
  children: [/*#__PURE__*/_jsx(CardMedia, {
47
156
  sx: {
@@ -67,7 +176,7 @@ const Attachments = props => {
67
176
  })
68
177
  }), /*#__PURE__*/_jsxs(CardContent, {
69
178
  component: "a",
70
- href: url,
179
+ href: redirectURL,
71
180
  target: "_blank",
72
181
  style: {
73
182
  display: "flex",
@@ -76,7 +185,8 @@ const Attachments = props => {
76
185
  padding: "8px",
77
186
  textDecoration: "none",
78
187
  flexDirection: "column",
79
- color: "#0F172A"
188
+ color: "#0F172A",
189
+ flexGrow: uploadStatus?.isUploading && 1
80
190
  },
81
191
  children: [/*#__PURE__*/_jsx(Typography, {
82
192
  style: {
@@ -85,16 +195,48 @@ const Attachments = props => {
85
195
  fontSize: "14px"
86
196
  },
87
197
  component: "div",
88
- children: fileName
89
- }), /*#__PURE__*/_jsx(Typography, {
198
+ className: "truncateText",
199
+ children: fileName2 || fileName
200
+ }), /*#__PURE__*/_jsxs(Typography, {
90
201
  style: {
91
202
  fontWeight: "normal",
92
203
  color: "#64748b",
93
204
  fontSize: "11px"
94
205
  },
95
206
  component: "div",
96
- children: formatDate(date)
207
+ className: "uploadinDetails",
208
+ children: [uploadStatus?.isUploading && /*#__PURE__*/_jsxs(_Fragment, {
209
+ children: [/*#__PURE__*/_jsx(Typography, {
210
+ sx: {
211
+ fontSize: 12,
212
+ color: "#64748b"
213
+ },
214
+ children: `${formatFileSize(fileSize)}`
215
+ }), /*#__PURE__*/_jsx(CircularProgress, {
216
+ variant: "determinate",
217
+ value: uploadStatus?.uploadPercentage ?? 0,
218
+ size: 20,
219
+ thickness: 5
220
+ }), /*#__PURE__*/_jsx(Typography, {
221
+ sx: {
222
+ fontSize: 12,
223
+ color: "#64748b"
224
+ },
225
+ children: `${uploadStatus?.uploadPercentage?.toFixed(0) ?? 0}%`
226
+ })]
227
+ }), !uploadStatus?.isUploading && formatDate(date)]
97
228
  })]
229
+ }), uploadStatus?.isUploading && /*#__PURE__*/_jsx(IconButton, {
230
+ onClick: cancelUpload,
231
+ sx: {
232
+ position: "absolute",
233
+ right: 4,
234
+ top: 4
235
+ },
236
+ "aria-label": "Cancel upload",
237
+ size: "small",
238
+ className: "cancelBtn",
239
+ children: /*#__PURE__*/_jsx(HighlightOffRoundedIcon, {})
98
240
  })]
99
241
  }), /*#__PURE__*/_jsx("span", {
100
242
  contentEditable: false,
@@ -4,6 +4,7 @@ import ToolbarIcon from "../../common/ToolbarIcon";
4
4
  import Icon from "../../common/Icon";
5
5
  import ImageSelector from "../../common/ImageSelector/ImageSelector";
6
6
  import { insertAttachments } from "../../utils/attachments";
7
+ import { insertUploadStatusNodeForAttachment } from "../../service/fileupload";
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";
@@ -21,9 +22,13 @@ const AttachmentsButton = props => {
21
22
  SetOpen(true);
22
23
  };
23
24
  const onSelectImage = url => {
24
- insertAttachments(editor, {
25
- url
26
- });
25
+ if (!url?.isUpload && url?.embedURL) {
26
+ insertAttachments(editor, {
27
+ url: url?.embedURL
28
+ });
29
+ } else {
30
+ insertUploadStatusNodeForAttachment(editor, url?.file);
31
+ }
27
32
  handleClose();
28
33
  };
29
34
  const handleClose = () => {
@@ -9,6 +9,8 @@ import { WorkflowIcon } from "../../common/iconslist";
9
9
  import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../../helper/theme";
10
10
  import { handleLinkType, windowVar } from "../../utils/helper";
11
11
  import LinkSettings from "../../common/LinkSettings";
12
+ import { useEditorTheme } from "../../hooks/useEditorTheme";
13
+ import { getTheme } from "../../theme";
12
14
  import Icon from "../../common/Icon";
13
15
  import { useEditorContext } from "../../hooks/useMouseMove";
14
16
  import useCommonStyle from "../../commonStyle";
@@ -40,6 +42,12 @@ const EditorButton = props => {
40
42
  const [openMoreOptions, setOpenMoreOptions] = useState(false);
41
43
  const [, setIconLoaded] = useState(false);
42
44
  const classes = useCommonStyle(appTheme);
45
+ const {
46
+ theme: selectedTheme
47
+ } = useEditorTheme();
48
+ const {
49
+ buttonTheme
50
+ } = getTheme(selectedTheme);
43
51
  const {
44
52
  label,
45
53
  bgColor,
@@ -54,7 +62,7 @@ const EditorButton = props => {
54
62
  textColorHover,
55
63
  bgColorHover,
56
64
  borderColorHover,
57
- buttonIcon,
65
+ // buttonIcon,
58
66
  iconPosition = "start",
59
67
  borderStyle,
60
68
  borderWidth,
@@ -75,6 +83,7 @@ const EditorButton = props => {
75
83
  };
76
84
  const isTrigger = linkType === "nextTrigger" || linkType === "prevTrigger";
77
85
  const refURl = isTrigger ? buttonLink?.url : url;
86
+ const buttonIcon = element?.buttonIcon || buttonTheme?.buttonIcon;
78
87
  const BtnIcon = buttonIcon ? buttonIcon : null;
79
88
  windowVar.lastButtonProps = element;
80
89
  const handleTrigger = async () => {
@@ -165,6 +174,7 @@ const EditorButton = props => {
165
174
  display: "inline-flex",
166
175
  color: "rgba(0, 0, 0, 0.54)",
167
176
  marginBottom: "0px !important",
177
+ ...classes.buttonMoreOption,
168
178
  ...classes.buttonMoreOption3
169
179
  },
170
180
  ...btnProps,
@@ -265,19 +275,14 @@ const EditorButton = props => {
265
275
  display: "inline-block"
266
276
  },
267
277
  children: [/*#__PURE__*/_jsxs(Box, {
278
+ className: `btn textAlign-${tAlign} button theme-element`,
268
279
  ref: buttonRef,
269
- className: `btn textAlign-${tAlign}`,
270
280
  sx: {
271
281
  textDecoration: "none",
272
- background: bgColor || "rgb(30, 75, 122)",
273
282
  borderBlockStyle: "solid",
274
- borderColor: borderColor || "transparent",
275
283
  borderWidth: borderWidth !== undefined ? borderWidth : borderColor || borderColorHover ? "1px" : "0px",
276
284
  ...btnSp,
277
285
  borderStyle: borderStyle || "solid",
278
- color: `${textColor || "#FFFFFF"}`,
279
- fontSize: textSize || "inherit",
280
- fontFamily: fontFamily || "PoppinsRegular",
281
286
  display: "inline-flex",
282
287
  alignItems: "center",
283
288
  position: "relative",
@@ -292,6 +297,17 @@ const EditorButton = props => {
292
297
  "& .element-toolbar": {
293
298
  display: "flex"
294
299
  }
300
+ },
301
+ color: textColor ? `${textColor} !important` : "#FFFFFF",
302
+ fontSize: textSize ? `${textSize}px !important` : "inherit",
303
+ fontFamily: fontFamily ? `${fontFamily} !important` : "PoppinsRegular",
304
+ background: `${bgColor} !important`,
305
+ borderColor: `${borderColor} !important`,
306
+ borderRadius: {
307
+ ...getBreakPointsValue(borderRadius || buttonTheme?.borderRadius || {}, null, "overrideBorderRadius", true)
308
+ },
309
+ padding: {
310
+ ...getTRBLBreakPoints(bannerSpacing || buttonTheme?.bannerSpacing || {})
295
311
  }
296
312
  },
297
313
  ...buttonProps,
@@ -1,11 +1,15 @@
1
1
  import React, { useState } from "react";
2
- import { Box, IconButton, Popover } from "@mui/material";
2
+ import { Box, IconButton, Popover, Typography, useTheme } from "@mui/material";
3
3
  import KeyboardArrowDownRoundedIcon from "@mui/icons-material/KeyboardArrowDownRounded";
4
4
  import Button from "../../common/Button";
5
5
  import { colors } from "./defaultColors";
6
6
  import ColorPicker from "./colorPicker.svg";
7
+ import { useSlateStatic } from "slate-react";
8
+ import { Transforms } from "slate";
9
+ import { useEditorContext } from "../../hooks/useMouseMove";
7
10
  import { jsx as _jsx } from "react/jsx-runtime";
8
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { Fragment as _Fragment } from "react/jsx-runtime";
9
13
  let c = [];
10
14
  const ColorChunks = (recentColors = []) => [...recentColors, ...colors].reduce((a, b, i) => {
11
15
  if (i % 7 === 0) {
@@ -32,8 +36,8 @@ const SingleColorButton = ({
32
36
  width: "100%",
33
37
  display: "flex",
34
38
  alignItems: "center",
35
- padding: padding || "8px 0px",
36
- justifyContent: "center"
39
+ padding: padding || "8px 0px"
40
+ // justifyContent: "center",
37
41
  },
38
42
  children: [crs.map(m => /*#__PURE__*/_jsx(Button, {
39
43
  onClick: handleSelect(m),
@@ -110,12 +114,18 @@ const ColorButtons = props => {
110
114
  openColorTool,
111
115
  onClose,
112
116
  onColorPickerClick,
117
+ disableEditTheme,
113
118
  defaultColors = []
114
119
  } = props;
115
120
  const [row1, ...restRows] = ColorChunks([]);
116
121
  const [anchorEl, setAnchorEl] = useState(null);
117
122
  const open = Boolean(anchorEl);
118
123
  const firstRow = defaultColors?.length ? defaultColors : row1;
124
+ const theme = useTheme();
125
+ const editor = useSlateStatic();
126
+ const {
127
+ setOpenTheme
128
+ } = useEditorContext();
119
129
  const handleMore = e => {
120
130
  setAnchorEl(e.currentTarget);
121
131
  };
@@ -128,6 +138,7 @@ const ColorButtons = props => {
128
138
  const handleSelect = color => () => {
129
139
  onSelect(color);
130
140
  };
141
+ const colorVars = theme?.vars?.colors || {};
131
142
  return /*#__PURE__*/_jsxs(Box, {
132
143
  component: "span",
133
144
  sx: classes.colorButtons,
@@ -144,7 +155,7 @@ const ColorButtons = props => {
144
155
  activeColor: activeColor
145
156
  }, `si_btn_row1_${m}_${i}`);
146
157
  })
147
- }), /*#__PURE__*/_jsxs(Popover, {
158
+ }), /*#__PURE__*/_jsx(Popover, {
148
159
  open: open || openColorTool,
149
160
  anchorEl: anchorEl || openColorTool,
150
161
  onClose: handleClose,
@@ -158,9 +169,40 @@ const ColorButtons = props => {
158
169
  },
159
170
  sx: classes.colorPopper,
160
171
  className: "colorPopper",
161
- children: [/*#__PURE__*/_jsx(Box, {
172
+ children: /*#__PURE__*/_jsxs(Box, {
162
173
  sx: classes.colorButtonsInner,
163
- children: restRows.map((m, i) => {
174
+ children: [Object.values(colorVars)?.length ? /*#__PURE__*/_jsxs(_Fragment, {
175
+ children: [/*#__PURE__*/_jsxs(Box, {
176
+ component: "div",
177
+ className: "singleColorTitleWrapper",
178
+ children: [/*#__PURE__*/_jsx(Typography, {
179
+ variant: "subtitle2",
180
+ children: "Theme colours"
181
+ }), disableEditTheme ? null : /*#__PURE__*/_jsx("div", {
182
+ className: "editBtn",
183
+ onClick: () => {
184
+ Transforms.deselect(editor, {
185
+ at: editor.selection
186
+ });
187
+ handleClose();
188
+ setOpenTheme("editThemeColor");
189
+ },
190
+ children: "Edit"
191
+ })]
192
+ }), /*#__PURE__*/_jsx(SingleColorButton, {
193
+ crs: Object.values(colorVars),
194
+ handleSelect: handleSelect,
195
+ classes: classes,
196
+ activeColor: activeColor
197
+ })]
198
+ }) : null, /*#__PURE__*/_jsx(Box, {
199
+ component: "div",
200
+ className: "singleColorTitleWrapper",
201
+ children: /*#__PURE__*/_jsx(Typography, {
202
+ variant: "subtitle2",
203
+ children: "Custom colour"
204
+ })
205
+ }), restRows.map((m, i) => {
164
206
  return /*#__PURE__*/_jsx(SingleColorButton, {
165
207
  id: `p2_${id}`,
166
208
  crs: m,
@@ -169,14 +211,19 @@ const ColorButtons = props => {
169
211
  classes: classes,
170
212
  activeColor: activeColor
171
213
  }, `si_btn_${m}_${i}`);
172
- })
173
- }), forMiniTool ? /*#__PURE__*/_jsx(IconButton, {
174
- onClick: onColorPickerClick,
175
- children: /*#__PURE__*/_jsx("img", {
176
- src: ColorPicker,
177
- alt: "color wheel"
178
- })
179
- }) : null]
214
+ }), forMiniTool ? /*#__PURE__*/_jsx(IconButton, {
215
+ onClick: onColorPickerClick,
216
+ style: {
217
+ alignSelf: "start",
218
+ margin: "6px",
219
+ padding: "0px"
220
+ },
221
+ children: /*#__PURE__*/_jsx("img", {
222
+ src: ColorPicker,
223
+ alt: "color wheel"
224
+ })
225
+ }) : null]
226
+ })
180
227
  })]
181
228
  });
182
229
  };
@@ -60,4 +60,28 @@
60
60
  padding: 0 15px !important;
61
61
  width: 60px !important;
62
62
  flex-shrink: 0;
63
- }
63
+ }
64
+
65
+
66
+ .singleColorTitleWrapper {
67
+ display: flex;
68
+ justify-content: space-between;
69
+ align-items: center;
70
+ padding: 10px;
71
+ width: 100%;
72
+ border-bottom: 1px solid #DCE4EC;
73
+ }
74
+
75
+ .singleColorTitleWrapper .MuiTypography-root {
76
+ font-weight: 600;
77
+ }
78
+
79
+ .singleColorTitleWrapper .editBtn {
80
+ text-transform: none;
81
+ color: #2563EB;
82
+ text-decoration: underline;
83
+ padding: 0px;
84
+ min-width: unset;
85
+ cursor: pointer;
86
+ font-size: 14px;
87
+ }
@@ -1,13 +1,14 @@
1
1
  import React, { useState } from "react";
2
2
  import { ReactEditor } from "slate-react";
3
- import ColorPickerTool from "react-gcolor-picker";
4
- import { IconButton, Tooltip, Box, Popover } from "@mui/material";
3
+ import { IconButton, Tooltip, Box, Popover, useTheme } from "@mui/material";
5
4
  import { addMarkData, activeMark } from "../../utils/SlateUtilityFunctions";
6
5
  import ColorButtons from "./ColorButtons";
7
6
  import ColorPickerStyles from "./Styles";
8
7
  import colorWheel from "./colorWheel.png";
9
8
  import "./ColorPicker.css";
10
9
  import { useEditorContext } from "../../hooks/useMouseMove";
10
+ import CustomColorPicker from "../../common/CustomColorPicker";
11
+ import { getSelectedElementColor } from "../../utils/helper";
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  import { Fragment as _Fragment } from "react/jsx-runtime";
13
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -25,7 +26,8 @@ const ColorPicker = props => {
25
26
  classes,
26
27
  forMiniTool,
27
28
  openColorTool,
28
- closeColorTool
29
+ closeColorTool,
30
+ type
29
31
  } = props;
30
32
  const {
31
33
  theme
@@ -34,6 +36,7 @@ const ColorPicker = props => {
34
36
  const [anchorEl, setAnchorEl] = useState(null);
35
37
  const open = Boolean(anchorEl);
36
38
  const pickerStyles = ColorPickerStyles(theme);
39
+ const muiTheme = useTheme();
37
40
  const onOpen = e => {
38
41
  e.preventDefault();
39
42
  setAnchorEl(e.currentTarget);
@@ -58,7 +61,7 @@ const ColorPicker = props => {
58
61
  setAnchorEl(null);
59
62
  setSelection(null);
60
63
  };
61
- const activeColor = activeMark(editor, format) || DEFAULT_COLOR[format];
64
+ const activeColor = type === "textColor" ? getSelectedElementColor(editor, format, muiTheme) : activeMark(editor, format) || DEFAULT_COLOR[format];
62
65
  return /*#__PURE__*/_jsxs(_Fragment, {
63
66
  children: [forMiniTool ? null : /*#__PURE__*/_jsx(Tooltip, {
64
67
  title: title,
@@ -96,10 +99,10 @@ const ColorPicker = props => {
96
99
  horizontal: "top"
97
100
  },
98
101
  sx: classes.colorPickerPopup,
99
- children: /*#__PURE__*/_jsx(ColorPickerTool, {
102
+ children: /*#__PURE__*/_jsx(CustomColorPicker, {
100
103
  gradient: true,
101
- value: activeColor,
102
- onChange: handleFormSubmit
104
+ onChange: handleFormSubmit,
105
+ color: activeColor
103
106
  })
104
107
  })]
105
108
  });