@flozy/editor 11.1.1 → 11.1.3

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 (143) hide show
  1. package/dist/Editor/ChatEditor.js +6 -6
  2. package/dist/Editor/CommonEditor.js +82 -21
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +37 -4
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  7. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
  8. package/dist/Editor/Elements/Attachments/Attachments.js +154 -11
  9. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +8 -3
  10. package/dist/Editor/Elements/Button/EditorButton.js +22 -7
  11. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  12. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  13. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  14. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  15. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +134 -55
  16. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SelectV1.js +7 -8
  17. package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +8 -3
  18. package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +1 -1
  19. package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +1 -1
  20. package/dist/Editor/Elements/Embed/Embed.css +5 -0
  21. package/dist/Editor/Elements/Embed/Embed.js +37 -43
  22. package/dist/Editor/Elements/Embed/Image.js +242 -22
  23. package/dist/Editor/Elements/Embed/Video.js +277 -32
  24. package/dist/Editor/Elements/Form/Form.js +10 -35
  25. package/dist/Editor/Elements/Form/FormField.js +1 -1
  26. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  27. package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
  28. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +34 -75
  29. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +9 -5
  30. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +3 -1
  31. package/dist/Editor/Elements/FreeGrid/helper.js +194 -0
  32. package/dist/Editor/Elements/FreeGrid/styles.js +15 -0
  33. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  34. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
  35. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -3
  36. package/dist/Editor/Elements/Signature/SignaturePopup.js +2 -13
  37. package/dist/Editor/Elements/SimpleText/index.js +4 -1
  38. package/dist/Editor/Elements/Table/Table.js +2 -1
  39. package/dist/Editor/Elements/Table/TableCell.js +10 -3
  40. package/dist/Editor/Elements/Title/title.js +4 -5
  41. package/dist/Editor/Elements/TopBanner/TopBanner.js +4 -2
  42. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +5 -3
  43. package/dist/Editor/Styles/EditorStyles.js +16 -5
  44. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  45. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  46. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  47. package/dist/Editor/Toolbar/FormatTools/TextSize.js +33 -29
  48. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +3 -1
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +25 -23
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +15 -5
  53. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  54. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +65 -7
  55. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +66 -12
  56. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  57. package/dist/Editor/Toolbar/PopupTool/index.js +7 -4
  58. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  59. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  60. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  61. package/dist/Editor/common/ColorPickerButton.js +38 -19
  62. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  63. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  64. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  65. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  66. package/dist/Editor/common/CustomSelect.js +43 -0
  67. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  68. package/dist/Editor/common/FontLoader/FontLoader.js +1 -0
  69. package/dist/Editor/common/Icon.js +28 -0
  70. package/dist/Editor/common/ImageSelector/ImageSelector.js +45 -7
  71. package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
  72. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  73. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  74. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  75. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  78. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +3 -2
  79. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +2 -0
  82. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
  83. package/dist/Editor/common/RnD/GuideLines/styles.js +1 -1
  84. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  85. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  86. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -11
  87. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  88. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +52 -63
  89. package/dist/Editor/common/RnD/VirtualElement/helper.js +248 -68
  90. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  91. package/dist/Editor/common/RnD/index.js +61 -14
  92. package/dist/Editor/common/Shorthands/elements.js +54 -0
  93. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  94. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  95. package/dist/Editor/common/StyleBuilder/fieldStyle.js +1 -0
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +18 -4
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
  102. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +15 -4
  103. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  104. package/dist/Editor/common/StyleBuilder/formStyle.js +19 -13
  105. package/dist/Editor/common/StyleBuilder/index.js +8 -4
  106. package/dist/Editor/common/Uploader.js +118 -17
  107. package/dist/Editor/common/UploaderWithProgress.js +183 -0
  108. package/dist/Editor/common/iconslist.js +21 -0
  109. package/dist/Editor/commonStyle.js +37 -3
  110. package/dist/Editor/helper/index.js +4 -1
  111. package/dist/Editor/helper/theme.js +203 -2
  112. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  113. package/dist/Editor/hooks/useMouseMove.js +12 -3
  114. package/dist/Editor/hooks/useTable.js +62 -1
  115. package/dist/Editor/hooks/useThemeValues.js +63 -0
  116. package/dist/Editor/plugins/withEmbeds.js +1 -1
  117. package/dist/Editor/plugins/withHTML.js +56 -3
  118. package/dist/Editor/plugins/withTable.js +1 -1
  119. package/dist/Editor/service/fileupload.js +70 -0
  120. package/dist/Editor/theme/ThemeList.js +50 -173
  121. package/dist/Editor/theme/index.js +149 -0
  122. package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
  123. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  124. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  125. package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
  126. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  127. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  128. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  129. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  130. package/dist/Editor/themeSettings/icons.js +60 -0
  131. package/dist/Editor/themeSettings/index.js +380 -0
  132. package/dist/Editor/themeSettings/style.js +299 -0
  133. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  134. package/dist/Editor/themeSettingsAI/index.js +355 -0
  135. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  136. package/dist/Editor/themeSettingsAI/style.js +332 -0
  137. package/dist/Editor/utils/SlateUtilityFunctions.js +162 -38
  138. package/dist/Editor/utils/accordion.js +1 -1
  139. package/dist/Editor/utils/button.js +1 -17
  140. package/dist/Editor/utils/font.js +40 -37
  141. package/dist/Editor/utils/helper.js +76 -3
  142. package/dist/Editor/utils/insertAppHeader.js +8 -4
  143. package/package.json +1 -1
@@ -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,9 @@ 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,
190
+ width: "80%"
80
191
  },
81
192
  children: [/*#__PURE__*/_jsx(Typography, {
82
193
  style: {
@@ -85,16 +196,48 @@ const Attachments = props => {
85
196
  fontSize: "14px"
86
197
  },
87
198
  component: "div",
88
- children: fileName
89
- }), /*#__PURE__*/_jsx(Typography, {
199
+ className: "truncateText",
200
+ children: fileName2 || fileName
201
+ }), /*#__PURE__*/_jsxs(Typography, {
90
202
  style: {
91
203
  fontWeight: "normal",
92
204
  color: "#64748b",
93
205
  fontSize: "11px"
94
206
  },
95
207
  component: "div",
96
- children: formatDate(date)
208
+ className: "uploadinDetails",
209
+ children: [uploadStatus?.isUploading && /*#__PURE__*/_jsxs(_Fragment, {
210
+ children: [/*#__PURE__*/_jsx(Typography, {
211
+ sx: {
212
+ fontSize: 12,
213
+ color: "#64748b"
214
+ },
215
+ children: `${formatFileSize(fileSize)}`
216
+ }), /*#__PURE__*/_jsx(CircularProgress, {
217
+ variant: "determinate",
218
+ value: uploadStatus?.uploadPercentage ?? 0,
219
+ size: 20,
220
+ thickness: 5
221
+ }), /*#__PURE__*/_jsx(Typography, {
222
+ sx: {
223
+ fontSize: 12,
224
+ color: "#64748b"
225
+ },
226
+ children: `${uploadStatus?.uploadPercentage?.toFixed(0) ?? 0}%`
227
+ })]
228
+ }), !uploadStatus?.isUploading && formatDate(date)]
97
229
  })]
230
+ }), uploadStatus?.isUploading && /*#__PURE__*/_jsx(IconButton, {
231
+ onClick: cancelUpload,
232
+ sx: {
233
+ position: "absolute",
234
+ right: 4,
235
+ top: 4
236
+ },
237
+ "aria-label": "Cancel upload",
238
+ size: "small",
239
+ className: "cancelBtn",
240
+ children: /*#__PURE__*/_jsx(HighlightOffRoundedIcon, {})
98
241
  })]
99
242
  }), /*#__PURE__*/_jsx("span", {
100
243
  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,
@@ -53,8 +61,8 @@ const EditorButton = props => {
53
61
  fontFamily,
54
62
  textColorHover,
55
63
  bgColorHover,
64
+ // buttonIcon,
56
65
  borderColorHover,
57
- 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 () => {
@@ -265,19 +274,14 @@ const EditorButton = props => {
265
274
  display: "inline-block"
266
275
  },
267
276
  children: [/*#__PURE__*/_jsxs(Box, {
277
+ className: `btn textAlign-${tAlign} button theme-element`,
268
278
  ref: buttonRef,
269
- className: `btn textAlign-${tAlign}`,
270
279
  sx: {
271
280
  textDecoration: "none",
272
- background: bgColor || "rgb(30, 75, 122)",
273
281
  borderBlockStyle: "solid",
274
- borderColor: borderColor || "transparent",
275
282
  borderWidth: borderWidth !== undefined ? borderWidth : borderColor || borderColorHover ? "1px" : "0px",
276
283
  ...btnSp,
277
284
  borderStyle: borderStyle || "solid",
278
- color: `${textColor || "#FFFFFF"}`,
279
- fontSize: textSize || "inherit",
280
- fontFamily: fontFamily || "PoppinsRegular",
281
285
  display: "inline-flex",
282
286
  alignItems: "center",
283
287
  position: "relative",
@@ -292,6 +296,17 @@ const EditorButton = props => {
292
296
  "& .element-toolbar": {
293
297
  display: "flex"
294
298
  }
299
+ },
300
+ color: textColor ? `${textColor} !important` : "#FFFFFF",
301
+ fontSize: textSize ? `${textSize}px !important` : "inherit",
302
+ fontFamily: fontFamily ? `${fontFamily} !important` : "PoppinsRegular",
303
+ background: `${bgColor} !important`,
304
+ borderColor: `${borderColor} !important`,
305
+ borderRadius: {
306
+ ...getBreakPointsValue(borderRadius || buttonTheme?.borderRadius || {}, null, "overrideBorderRadius", true)
307
+ },
308
+ padding: {
309
+ ...getTRBLBreakPoints(bannerSpacing || buttonTheme?.bannerSpacing || {})
295
310
  }
296
311
  },
297
312
  ...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
  });
@@ -20,24 +20,26 @@ const ColorPickerStyles = theme => ({
20
20
  background: `${theme?.palette?.editor?.miniToolBarBackground}`,
21
21
  border: `1px solid ${theme?.palette?.editor?.miniToolBarBorder} !important`,
22
22
  borderRadius: "7px !important",
23
- padding: "0px 5px",
24
- '@media only screen and (max-width: 600px)': {
23
+ padding: "0px 10px",
24
+ "@media only screen and (max-width: 600px)": {
25
25
  marginTop: "-40px"
26
26
  }
27
27
  }
28
28
  },
29
29
  colorButtonSingle: {
30
+ border: "1.5px solid #DCE4EC !important",
30
31
  "&.active": {
31
- "&:before": {
32
- content: '" "',
33
- position: "absolute",
34
- top: "-4px",
35
- left: "-4px",
36
- width: "calc(100% + 8px)",
37
- height: "calc(100% + 8px)",
38
- border: "2px solid #2563EB",
39
- borderRadius: "50%"
40
- }
32
+ // "&:before": {
33
+ // content: '" "',
34
+ // position: "absolute",
35
+ // top: "-4px",
36
+ // left: "-4px",
37
+ // width: "calc(100% + 8px)",
38
+ // height: "calc(100% + 8px)",
39
+ // border: "2px solid #2563EB",
40
+ // borderRadius: "50%",
41
+ // },
42
+ outline: "2px solid #2563EB"
41
43
  }
42
44
  },
43
45
  colorButtonsInner: {
@@ -59,7 +61,7 @@ const ColorPickerStyles = theme => ({
59
61
  width: "24px",
60
62
  height: "24px",
61
63
  margin: "0px 4px",
62
- border: "unset"
64
+ border: "1.5px solid #DCE4EC"
63
65
  }
64
66
  },
65
67
  colorPickerIcon: {