@flozy/editor 3.9.8 → 3.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/dist/Editor/ChatEditor.js +55 -45
  2. package/dist/Editor/CommonEditor.js +180 -111
  3. package/dist/Editor/Editor.css +9 -2
  4. package/dist/Editor/Elements/AI/AIInput.js +18 -24
  5. package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
  6. package/dist/Editor/Elements/AI/PopoverAIInput.js +66 -89
  7. package/dist/Editor/Elements/AI/Styles.js +2 -1
  8. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
  9. package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
  10. package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
  11. package/dist/Editor/Elements/AI/helper.js +5 -3
  12. package/dist/Editor/Elements/Accordion/Accordion.js +74 -7
  13. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +3 -2
  14. package/dist/Editor/Elements/Accordion/AccordionSummary.js +4 -60
  15. package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
  16. package/dist/Editor/Elements/Button/EditorButton.js +28 -16
  17. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
  18. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  19. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  20. package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
  21. package/dist/Editor/Elements/Embed/Image.js +29 -21
  22. package/dist/Editor/Elements/Embed/Video.js +15 -11
  23. package/dist/Editor/Elements/Emoji/EmojiPicker.js +4 -2
  24. package/dist/Editor/Elements/Form/Form.js +1 -1
  25. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
  26. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  27. package/dist/Editor/Elements/Grid/Grid.js +33 -16
  28. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  29. package/dist/Editor/Elements/Link/Link.js +6 -1
  30. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  31. package/dist/Editor/Elements/Link/LinkPopup.js +10 -3
  32. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  33. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +8 -4
  34. package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
  35. package/dist/Editor/Elements/Signature/SignaturePopup.js +20 -5
  36. package/dist/Editor/Elements/Table/Styles.js +23 -1
  37. package/dist/Editor/Elements/Table/Table.js +3 -2
  38. package/dist/Editor/Elements/Table/TableCell.js +70 -8
  39. package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +1 -0
  40. package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
  41. package/dist/Editor/MiniEditor.js +3 -1
  42. package/dist/Editor/Styles/EditorStyles.js +1 -1
  43. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  44. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
  45. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  46. package/dist/Editor/Toolbar/FormatTools/TextSize.js +29 -18
  47. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +29 -3
  48. package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
  49. package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
  50. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
  51. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  53. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  54. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
  55. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +40 -33
  56. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
  57. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  58. package/dist/Editor/Toolbar/PopupTool/index.js +4 -5
  59. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  60. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  61. package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
  62. package/dist/Editor/assets/svg/RedoIcon.js +27 -0
  63. package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
  64. package/dist/Editor/assets/svg/TextIcon.js +8 -5
  65. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  66. package/dist/Editor/assets/svg/UndoIcon.js +27 -0
  67. package/dist/Editor/common/ColorPickerButton.js +25 -9
  68. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  69. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  70. package/dist/Editor/common/CustomDialog/index.js +94 -0
  71. package/dist/Editor/common/CustomDialog/style.js +67 -0
  72. package/dist/Editor/common/CustomSelect.js +33 -0
  73. package/dist/Editor/common/DnD/DragHandleButton.js +56 -47
  74. package/dist/Editor/common/EditorCmds.js +35 -0
  75. package/dist/Editor/common/Icon.js +43 -3
  76. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  77. package/dist/Editor/common/LinkSettings/index.js +4 -2
  78. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  79. package/dist/Editor/common/LinkSettings/style.js +11 -8
  80. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +6 -1
  81. package/dist/Editor/common/MentionsPopup/Styles.js +5 -2
  82. package/dist/Editor/common/Section/index.js +57 -7
  83. package/dist/Editor/common/Section/styles.js +11 -0
  84. package/dist/Editor/common/Shorthands/elements.js +54 -0
  85. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
  86. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
  87. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  88. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  89. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  90. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  91. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
  92. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  93. package/dist/Editor/common/StyleBuilder/fieldTypes/selectBox.js +14 -3
  94. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  95. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  96. package/dist/Editor/common/iconslist.js +0 -31
  97. package/dist/Editor/helper/deserialize/index.js +14 -9
  98. package/dist/Editor/helper/theme.js +190 -4
  99. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  100. package/dist/Editor/hooks/useMouseMove.js +4 -2
  101. package/dist/Editor/hooks/useWindowMessage.js +10 -7
  102. package/dist/Editor/plugins/withEmbeds.js +1 -1
  103. package/dist/Editor/plugins/withHTML.js +47 -5
  104. package/dist/Editor/plugins/withLayout.js +15 -10
  105. package/dist/Editor/plugins/withTable.js +2 -2
  106. package/dist/Editor/theme/ThemeList.js +50 -173
  107. package/dist/Editor/theme/index.js +144 -0
  108. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  109. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  110. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  111. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  112. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  113. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  114. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  115. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  116. package/dist/Editor/themeSettings/icons.js +60 -0
  117. package/dist/Editor/themeSettings/index.js +320 -0
  118. package/dist/Editor/themeSettings/style.js +152 -0
  119. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  120. package/dist/Editor/themeSettingsAI/index.js +356 -0
  121. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  122. package/dist/Editor/themeSettingsAI/style.js +247 -0
  123. package/dist/Editor/utils/SlateUtilityFunctions.js +161 -25
  124. package/dist/Editor/utils/button.js +1 -17
  125. package/dist/Editor/utils/draftToSlate.js +1 -1
  126. package/dist/Editor/utils/events.js +65 -6
  127. package/dist/Editor/utils/font.js +40 -37
  128. package/dist/Editor/utils/helper.js +74 -14
  129. package/dist/Editor/utils/table.js +51 -43
  130. package/package.json +3 -2
@@ -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: {
@@ -1,11 +1,15 @@
1
- import React, { useState } from "react";
2
- import { Box, IconButton, Popover } from "@mui/material";
1
+ import React, { useContext, useState } from "react";
2
+ import { Box, IconButton, Popover, Typography, useTheme } from "@mui/material";
3
3
  import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
4
4
  import Button from "../../common/Button";
5
5
  import { colors } from "./defaultColors";
6
6
  import ColorPicker from "./colorPicker.svg";
7
+ import { ThemeContext } from "../../CommonEditor";
8
+ import { useSlateStatic } from "slate-react";
9
+ import { Transforms } from "slate";
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) {
@@ -31,9 +35,7 @@ const SingleColorButton = ({
31
35
  style: {
32
36
  width: "100%",
33
37
  display: "flex",
34
- alignItems: "center",
35
- padding: padding || "8px",
36
- justifyContent: "center"
38
+ padding: padding || "8px"
37
39
  },
38
40
  children: [crs.map(m => /*#__PURE__*/_jsx(Button, {
39
41
  onClick: handleSelect(m),
@@ -109,11 +111,17 @@ const ColorButtons = props => {
109
111
  forMiniTool,
110
112
  openColorTool,
111
113
  onClose,
112
- onColorPickerClick
114
+ onColorPickerClick,
115
+ disableEditTheme
113
116
  } = props;
114
117
  const [row1, ...restRows] = ColorChunks([]);
115
118
  const [anchorEl, setAnchorEl] = useState(null);
116
119
  const open = Boolean(anchorEl);
120
+ const theme = useTheme();
121
+ const editor = useSlateStatic();
122
+ const {
123
+ setOpenTheme
124
+ } = useContext(ThemeContext);
117
125
  const handleMore = e => {
118
126
  setAnchorEl(e.currentTarget);
119
127
  };
@@ -126,6 +134,7 @@ const ColorButtons = props => {
126
134
  const handleSelect = color => () => {
127
135
  onSelect(color);
128
136
  };
137
+ const colorVars = theme?.vars?.colors || {};
129
138
  return /*#__PURE__*/_jsxs(Box, {
130
139
  component: "span",
131
140
  sx: classes.colorButtons,
@@ -142,7 +151,7 @@ const ColorButtons = props => {
142
151
  activeColor: activeColor
143
152
  }, `si_btn_row1_${m}_${i}`);
144
153
  })
145
- }), /*#__PURE__*/_jsxs(Popover, {
154
+ }), /*#__PURE__*/_jsx(Popover, {
146
155
  open: open || openColorTool,
147
156
  anchorEl: anchorEl || openColorTool,
148
157
  onClose: handleClose,
@@ -156,9 +165,39 @@ const ColorButtons = props => {
156
165
  },
157
166
  sx: classes.colorPopper,
158
167
  className: "colorPopper",
159
- children: [/*#__PURE__*/_jsx(Box, {
168
+ children: /*#__PURE__*/_jsxs(Box, {
160
169
  sx: classes.colorButtonsInner,
161
- children: restRows.map((m, i) => {
170
+ children: [Object.values(colorVars)?.length ? /*#__PURE__*/_jsxs(_Fragment, {
171
+ children: [/*#__PURE__*/_jsxs(Box, {
172
+ component: "div",
173
+ className: "singleColorTitleWrapper",
174
+ children: [/*#__PURE__*/_jsx(Typography, {
175
+ variant: "subtitle2",
176
+ children: "Theme colour"
177
+ }), disableEditTheme ? null : /*#__PURE__*/_jsx("div", {
178
+ className: "editBtn",
179
+ onClick: () => {
180
+ Transforms.deselect(editor, {
181
+ at: editor.selection
182
+ });
183
+ setOpenTheme("editThemeColor");
184
+ },
185
+ children: "Edit"
186
+ })]
187
+ }), /*#__PURE__*/_jsx(SingleColorButton, {
188
+ crs: Object.values(colorVars),
189
+ handleSelect: handleSelect,
190
+ classes: classes,
191
+ activeColor: activeColor
192
+ })]
193
+ }) : null, /*#__PURE__*/_jsx(Box, {
194
+ component: "div",
195
+ className: "singleColorTitleWrapper",
196
+ children: /*#__PURE__*/_jsx(Typography, {
197
+ variant: "subtitle2",
198
+ children: "Custom colour"
199
+ })
200
+ }), restRows.map((m, i) => {
162
201
  return /*#__PURE__*/_jsx(SingleColorButton, {
163
202
  id: `p2_${id}`,
164
203
  crs: m,
@@ -167,14 +206,18 @@ const ColorButtons = props => {
167
206
  classes: classes,
168
207
  activeColor: activeColor
169
208
  }, `si_btn_${m}_${i}`);
170
- })
171
- }), forMiniTool ? /*#__PURE__*/_jsx(IconButton, {
172
- onClick: onColorPickerClick,
173
- children: /*#__PURE__*/_jsx("img", {
174
- src: ColorPicker,
175
- alt: "color wheel"
176
- })
177
- }) : null]
209
+ }), forMiniTool ? /*#__PURE__*/_jsx(IconButton, {
210
+ onClick: onColorPickerClick,
211
+ style: {
212
+ alignSelf: "start",
213
+ margin: "6px"
214
+ },
215
+ children: /*#__PURE__*/_jsx("img", {
216
+ src: ColorPicker,
217
+ alt: "color wheel"
218
+ })
219
+ }) : null]
220
+ })
178
221
  })]
179
222
  });
180
223
  };
@@ -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,7 +1,6 @@
1
1
  import React, { useState } from "react";
2
2
  import { ReactEditor } from "slate-react";
3
3
  import { Transforms } from "slate";
4
- import ColorPickerTool from "react-gcolor-picker";
5
4
  import { IconButton, Tooltip, Box, Popover } from "@mui/material";
6
5
  import { addMarkData, activeMark } from "../../utils/SlateUtilityFunctions";
7
6
  import ColorButtons from "./ColorButtons";
@@ -9,6 +8,7 @@ import ColorPickerStyles from "./Styles";
9
8
  import colorWheel from "./colorWheel.png";
10
9
  import "./ColorPicker.css";
11
10
  import { useEditorContext } from "../../hooks/useMouseMove";
11
+ import CustomColorPicker from "../../common/CustomColorPicker";
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  import { Fragment as _Fragment } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -95,10 +95,10 @@ const ColorPicker = props => {
95
95
  horizontal: "top"
96
96
  },
97
97
  sx: classes.colorPickerPopup,
98
- children: /*#__PURE__*/_jsx(ColorPickerTool, {
98
+ children: /*#__PURE__*/_jsx(CustomColorPicker, {
99
99
  gradient: true,
100
- value: activeColor,
101
- onChange: handleFormSubmit
100
+ onChange: handleFormSubmit,
101
+ color: activeColor
102
102
  })
103
103
  })]
104
104
  });
@@ -15,7 +15,8 @@ const ColorPickerStyles = theme => ({
15
15
  colorPopper: {
16
16
  "& .MuiPaper-root": {
17
17
  backgroundColor: theme?.palette?.editor?.background,
18
- '@media only screen and (max-width: 600px)': {
18
+ padding: "4px 14px",
19
+ "@media only screen and (max-width: 600px)": {
19
20
  marginTop: "-40px"
20
21
  }
21
22
  }
@@ -167,15 +167,19 @@ const Image = ({
167
167
  onTouchEnd
168
168
  } = handleLinkType(webAddress, linkType, readOnly, isNewTab);
169
169
  const handleImageClick = () => {
170
- Transforms.select(editor, {
171
- anchor: Editor.start(editor, path),
172
- focus: Editor.end(editor, path)
173
- });
174
- if (onClick) {
175
- onClick();
176
- }
177
- if (onTouchEnd) {
178
- onTouchEnd();
170
+ try {
171
+ Transforms.select(editor, {
172
+ anchor: Editor.start(editor, path),
173
+ focus: Editor.end(editor, path)
174
+ });
175
+ if (onClick) {
176
+ onClick();
177
+ }
178
+ if (onTouchEnd) {
179
+ onTouchEnd();
180
+ }
181
+ } catch (err) {
182
+ console.log(err);
179
183
  }
180
184
  };
181
185
  useEffect(() => {
@@ -189,16 +193,20 @@ const Image = ({
189
193
  setOpenSettings(true);
190
194
  };
191
195
  const onSave = data => {
192
- const updateData = {
193
- ...data
194
- };
195
- delete updateData.children;
196
- Transforms.setNodes(editor, {
197
- ...updateData
198
- }, {
199
- at: path
200
- });
201
- onClose();
196
+ try {
197
+ const updateData = {
198
+ ...data
199
+ };
200
+ delete updateData.children;
201
+ Transforms.setNodes(editor, {
202
+ ...updateData
203
+ }, {
204
+ at: path
205
+ });
206
+ onClose();
207
+ } catch (err) {
208
+ console.log(err);
209
+ }
202
210
  };
203
211
  const onClose = () => {
204
212
  setOpenSettings(false);
@@ -237,7 +245,7 @@ const Image = ({
237
245
  lg: "flex",
238
246
  xs: xsHidden ? "none" : "flex"
239
247
  },
240
- width: `100% !important`,
248
+ width: `100%`,
241
249
  maxWidth: "100%",
242
250
  padding: {
243
251
  ...getTRBLBreakPoints(bannerSpacing)
@@ -288,7 +296,7 @@ const Image = ({
288
296
  readOnly: readOnly,
289
297
  handleImageClick: handleImageClick
290
298
  })
291
- }) : null, url && !readOnly && /*#__PURE__*/_jsx(IconButton, {
299
+ }) : null, selected && !readOnly && /*#__PURE__*/_jsx(IconButton, {
292
300
  onPointerDown: onMouseDown,
293
301
  style: {
294
302
  opacity: 1,