@flozy/editor 3.9.7 → 3.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/Editor/CommonEditor.js +177 -109
  2. package/dist/Editor/Editor.css +7 -0
  3. package/dist/Editor/Elements/AI/AIInput.js +18 -24
  4. package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +66 -89
  6. package/dist/Editor/Elements/AI/Styles.js +2 -1
  7. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
  8. package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
  9. package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
  10. package/dist/Editor/Elements/AI/helper.js +5 -3
  11. package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
  12. package/dist/Editor/Elements/Button/EditorButton.js +28 -16
  13. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  16. package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
  17. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
  18. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  19. package/dist/Editor/Elements/Grid/Grid.js +27 -3
  20. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  21. package/dist/Editor/Elements/Link/Link.js +6 -1
  22. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  23. package/dist/Editor/Elements/Link/LinkPopup.js +10 -3
  24. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  25. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
  26. package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
  27. package/dist/Editor/Elements/Signature/SignaturePopup.js +20 -5
  28. package/dist/Editor/Elements/Table/Styles.js +23 -1
  29. package/dist/Editor/Elements/Table/Table.js +2 -1
  30. package/dist/Editor/Elements/Table/TableCell.js +69 -7
  31. package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +1 -0
  32. package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
  33. package/dist/Editor/MiniEditor.js +3 -1
  34. package/dist/Editor/Styles/EditorStyles.js +1 -1
  35. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  36. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
  37. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  38. package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
  39. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +4 -2
  40. package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
  41. package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
  42. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
  43. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
  44. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  45. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  46. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
  47. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +40 -33
  48. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
  49. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  50. package/dist/Editor/Toolbar/PopupTool/index.js +2 -2
  51. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  52. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  53. package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
  54. package/dist/Editor/assets/svg/RedoIcon.js +27 -0
  55. package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
  56. package/dist/Editor/assets/svg/TextIcon.js +8 -5
  57. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  58. package/dist/Editor/assets/svg/UndoIcon.js +27 -0
  59. package/dist/Editor/common/ColorPickerButton.js +25 -9
  60. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  61. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  62. package/dist/Editor/common/CustomDialog/index.js +94 -0
  63. package/dist/Editor/common/CustomDialog/style.js +67 -0
  64. package/dist/Editor/common/CustomSelect.js +33 -0
  65. package/dist/Editor/common/DnD/DragHandleButton.js +56 -47
  66. package/dist/Editor/common/Icon.js +43 -3
  67. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  68. package/dist/Editor/common/LinkSettings/index.js +4 -2
  69. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  70. package/dist/Editor/common/LinkSettings/style.js +11 -8
  71. package/dist/Editor/common/Section/index.js +57 -7
  72. package/dist/Editor/common/Section/styles.js +11 -0
  73. package/dist/Editor/common/Shorthands/elements.js +54 -0
  74. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  75. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  76. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  77. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  78. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
  79. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  80. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  81. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  82. package/dist/Editor/common/iconslist.js +0 -31
  83. package/dist/Editor/helper/theme.js +190 -4
  84. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  85. package/dist/Editor/hooks/useMouseMove.js +4 -1
  86. package/dist/Editor/hooks/useWindowMessage.js +10 -7
  87. package/dist/Editor/plugins/withEmbeds.js +1 -1
  88. package/dist/Editor/plugins/withHTML.js +1 -1
  89. package/dist/Editor/plugins/withTable.js +1 -1
  90. package/dist/Editor/theme/ThemeList.js +50 -173
  91. package/dist/Editor/theme/index.js +144 -0
  92. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  93. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  94. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  95. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  96. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  97. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  98. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  99. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  100. package/dist/Editor/themeSettings/icons.js +60 -0
  101. package/dist/Editor/themeSettings/index.js +320 -0
  102. package/dist/Editor/themeSettings/style.js +152 -0
  103. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  104. package/dist/Editor/themeSettingsAI/index.js +356 -0
  105. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  106. package/dist/Editor/themeSettingsAI/style.js +247 -0
  107. package/dist/Editor/utils/SlateUtilityFunctions.js +161 -25
  108. package/dist/Editor/utils/button.js +1 -17
  109. package/dist/Editor/utils/events.js +54 -2
  110. package/dist/Editor/utils/font.js +40 -37
  111. package/dist/Editor/utils/helper.js +31 -2
  112. package/dist/Editor/utils/table.js +51 -43
  113. package/package.json +3 -2
@@ -0,0 +1,139 @@
1
+ import { useSlate } from "slate-react";
2
+ import { defaultTheme } from "../theme";
3
+ import { getPageSettings, updatePageSettings } from "../utils/pageSettings";
4
+ import { HEADING_THEME_FIELDS, PARAGRAPH_THEME_FIELDS } from "../helper/theme";
5
+ const MAP_FIELDS = {
6
+ HEADING: HEADING_THEME_FIELDS,
7
+ PARAGRAPH: PARAGRAPH_THEME_FIELDS
8
+ };
9
+ function getUpdatePayload(prevTheme = {}, update, actionData) {
10
+ const {
11
+ action,
12
+ fieldName
13
+ } = actionData || {};
14
+ const {
15
+ theme: prev
16
+ } = prevTheme;
17
+ let theme = {};
18
+ let themeProps = {};
19
+ switch (action) {
20
+ case "THEME_CHANGE":
21
+ theme = update;
22
+ break;
23
+ case "CSS_VAR_CHANGE":
24
+ const prevCssVars = prev?.cssVars || {};
25
+ const prevValue = prevCssVars[fieldName] || {};
26
+ themeProps = {
27
+ ...(prev || {}),
28
+ cssVars: {
29
+ ...prevCssVars,
30
+ [fieldName]: {
31
+ ...prevValue,
32
+ ...update
33
+ }
34
+ }
35
+ };
36
+ theme = {
37
+ ...prevTheme,
38
+ theme: themeProps
39
+ };
40
+ break;
41
+ case "ELEMENT_PROPS_CHANGE":
42
+ const prevEleProps = prev?.elementProps || {};
43
+ const prevEleValue = prevEleProps[fieldName] || {};
44
+ themeProps = {
45
+ ...(prev || {}),
46
+ elementProps: {
47
+ ...prevEleProps,
48
+ [fieldName]: {
49
+ ...prevEleValue,
50
+ ...update
51
+ }
52
+ }
53
+ };
54
+ theme = {
55
+ ...prevTheme,
56
+ theme: themeProps
57
+ };
58
+ break;
59
+ case "OTHER_PROPS_CHANGE":
60
+ themeProps = {
61
+ ...(prev || {}),
62
+ otherProps: {
63
+ ...(prev.otherProps || {}),
64
+ ...update
65
+ }
66
+ };
67
+ theme = {
68
+ ...prevTheme,
69
+ theme: themeProps
70
+ };
71
+ break;
72
+ case "FONT_CHANGE":
73
+ const {
74
+ elementProps = {},
75
+ otherProps = {}
76
+ } = prev;
77
+ const fields = MAP_FIELDS[actionData?.fieldType];
78
+ const headingUpdate = {};
79
+ fields?.forEach(field => {
80
+ const prevHeadingData = elementProps[field];
81
+ headingUpdate[field] = {
82
+ ...prevHeadingData,
83
+ ...update
84
+ };
85
+ });
86
+ themeProps = {
87
+ ...(prev || {}),
88
+ elementProps: {
89
+ ...elementProps,
90
+ ...headingUpdate
91
+ },
92
+ otherProps: {
93
+ ...otherProps,
94
+ headingFontFamily: update?.fontFamily
95
+ }
96
+ };
97
+ theme = {
98
+ ...prevTheme,
99
+ theme: themeProps
100
+ };
101
+ break;
102
+ default:
103
+ theme = {
104
+ ...prevTheme,
105
+ ...(update || {})
106
+ };
107
+ break;
108
+ }
109
+ return theme;
110
+ }
111
+ const updateTheme = (editor, pageSt, update, actionData) => {
112
+ const {
113
+ pageProps
114
+ } = pageSt || {};
115
+ const {
116
+ theme
117
+ } = pageProps || {};
118
+ updatePageSettings(editor, {
119
+ ...(pageProps || {}),
120
+ theme: getUpdatePayload(theme, update, actionData)
121
+ });
122
+ };
123
+ export const useEditorTheme = () => {
124
+ const editor = useSlate();
125
+ const {
126
+ element: pageSt
127
+ } = getPageSettings(editor) || {};
128
+ const {
129
+ pageProps
130
+ } = pageSt || {};
131
+ const {
132
+ theme
133
+ } = pageProps || {};
134
+ return {
135
+ selectedTheme: theme?.theme || defaultTheme?.theme,
136
+ updateTheme: (update, actionData) => updateTheme(editor, pageSt, update, actionData),
137
+ theme
138
+ };
139
+ };
@@ -29,6 +29,7 @@ export const EditorProvider = ({
29
29
  const path = event?.target?.getAttribute("data-path");
30
30
  const [popupType, setPopupType] = useState(""); // opened popup name in the editor will be stored
31
31
  const [openAI, setOpenAI] = useState("");
32
+ const [selectedTheme, setSelectedTheme] = useState({});
32
33
  const onDrop = () => {
33
34
  setDrop(drop + 1);
34
35
  };
@@ -55,7 +56,9 @@ export const EditorProvider = ({
55
56
  popupType,
56
57
  setPopupType,
57
58
  openAI,
58
- setOpenAI
59
+ setOpenAI,
60
+ selectedTheme,
61
+ setSelectedTheme
59
62
  },
60
63
  children: children
61
64
  });
@@ -4,9 +4,19 @@ const useWindowMessage = props => {
4
4
  type
5
5
  } = props;
6
6
  const [message, setMessage] = useState(null);
7
+ const sendMessage = action => {
8
+ if (window.parent) {
9
+ window.parent.postMessage({
10
+ ...action
11
+ }, "*");
12
+ }
13
+ };
7
14
  useEffect(() => {
8
15
  if (window.addEventListener) {
9
16
  window.addEventListener("message", onMessage, false);
17
+ sendMessage({
18
+ isLoaded: true
19
+ });
10
20
  } else {
11
21
  window.attachEvent("onmessage", onMessage);
12
22
  }
@@ -23,13 +33,6 @@ const useWindowMessage = props => {
23
33
  setMessage(e?.data[type]);
24
34
  }
25
35
  };
26
- const sendMessage = action => {
27
- if (window.parent) {
28
- window.parent.postMessage({
29
- ...action
30
- }, "*");
31
- }
32
- };
33
36
  return [message, sendMessage];
34
37
  };
35
38
  export default useWindowMessage;
@@ -1,5 +1,5 @@
1
1
  import { Transforms, Path, Node } from "slate";
2
- const AvoidCopying = ["headingOne", "headingTwo", "headingThree", "blockquote"];
2
+ const AvoidCopying = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree", "blockquote"];
3
3
  const withEmbeds = editor => {
4
4
  const {
5
5
  isVoid,
@@ -15,7 +15,7 @@ const loopChildren = (children = [], defaultInsert) => {
15
15
  }
16
16
  return defaultInsert;
17
17
  };
18
- const getCurrentElement = editor => {
18
+ export const getCurrentElement = editor => {
19
19
  try {
20
20
  if (editor.selection) {
21
21
  return Node.parent(editor, editor?.selection?.anchor?.path);
@@ -1,6 +1,6 @@
1
1
  import { Editor, Range, Point, Element, Transforms, Node } from "slate";
2
2
  import { TableUtil, createTableCell } from "../utils/table";
3
- const NON_DELETABLE_BLOCKS = ["table-cell", "carousel-item"];
3
+ const NON_DELETABLE_BLOCKS = ["table-cell", "carousel-item", "page-settings"];
4
4
  const withTable = editor => {
5
5
  const {
6
6
  deleteBackward,
@@ -1,181 +1,58 @@
1
- import { MenuItem, Select, useTheme } from "@mui/material";
2
- import { fontOptions } from "../utils/font";
3
- import { toolbarGroups } from "../Toolbar/toolbarGroups";
1
+ import { Box, MenuItem, Select } from "@mui/material";
2
+ import { defaultTheme } from ".";
3
+ import { useEditorTheme } from "../hooks/useEditorTheme";
4
+ import { useEffect, useState } from "react";
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
6
- const themes = [{
7
- label: "Theme 1",
8
- colors: ["#c90c1f", "#ff5d05"]
9
- }, {
10
- label: "Theme 2",
11
- colors: ["#4c0be3", "#43f7ee"]
12
- }, {
13
- label: "Theme 3",
14
- colors: ["#22f20f", "#fff705"]
15
- }];
16
- const allTools = toolbarGroups.flat();
17
- function ThemeList(props) {
7
+ function ThemeList({
8
+ editor,
9
+ services = () => {}
10
+ }) {
11
+ const [themes, setThemes] = useState([]);
12
+ const [loading, setLoading] = useState(false);
13
+ console.log("loading", loading);
14
+ const getThemesList = async () => {
15
+ setLoading(true);
16
+ try {
17
+ const result = await services("getThemes", {});
18
+ setThemes(result?.data || []);
19
+ } catch (err) {
20
+ console.log(err);
21
+ }
22
+ setLoading(false);
23
+ };
18
24
  const {
19
- selectedTheme,
20
- setSelectedTheme
21
- } = props;
22
- const fontWeight = allTools.find(f => f.format === "fontWeight");
23
- const fontStyles = [{
24
- text: "Bold",
25
- value: "bold",
26
- styleField: "fontWeight"
27
- }, {
28
- text: "Italic",
29
- value: "italic",
30
- styleField: "fontStyle"
31
- }
32
- // {
33
- // text: "Underline",
34
- // value: "underline",
35
- // styleField: "textDecoration",
36
- // },
37
- // {
38
- // text: "Line through",
39
- // value: "line-through",
40
- // styleField: "textDecoration",
41
- // },
42
- ];
43
-
44
- const theme = useTheme();
45
- const colorVars = theme?.vars?.colors || {};
46
- const handleTypographyTheme = (key, value, elementType) => {
47
- setSelectedTheme(prev => {
48
- const newValue = {
49
- ...prev,
50
- typography: {
51
- ...(prev.typography || {}),
52
- [elementType]: {
53
- ...(prev?.typography?.[elementType] || {}),
54
- [key]: value
55
- }
56
- }
57
- };
58
- if (!value) {
59
- delete newValue?.typography?.[elementType]?.[key];
60
- }
61
- return newValue;
62
- });
25
+ updateTheme
26
+ } = useEditorTheme();
27
+ useEffect(() => {
28
+ getThemesList();
29
+ }, []);
30
+ const handleThemeChange = e => {
31
+ const {
32
+ value
33
+ } = e.target;
34
+ const selectedTheme = themes.find(t => t.id === value) || defaultTheme;
35
+ updateTheme(selectedTheme, "THEME_CHANGE");
63
36
  };
64
- return /*#__PURE__*/_jsxs("div", {
65
- children: [themes.map((theme, i) => {
66
- return /*#__PURE__*/_jsxs("button", {
67
- style: {
68
- margin: "10px"
69
- },
70
- onClick: () => setSelectedTheme(prev => ({
71
- ...prev,
72
- colors: theme.colors
73
- })),
74
- children: [theme.label, /*#__PURE__*/_jsx("div", {
75
- children: theme.colors.map((c, j) => {
76
- return /*#__PURE__*/_jsx("div", {
77
- style: {
78
- width: "20px",
79
- height: "20px",
80
- background: c,
81
- margin: "10px"
82
- }
83
- }, j);
84
- })
85
- })]
86
- }, i);
87
- }), /*#__PURE__*/_jsxs("div", {
88
- children: ["Heading 1 Font Family", /*#__PURE__*/_jsx(Select
89
- // value={""}
90
- , {
91
- label: "Font Family",
92
- onChange: e => {
93
- handleTypographyTheme("fontFamily", e.target.value, "h1");
94
- },
95
- children: fontOptions.map((font, i) => {
96
- const {
97
- text,
98
- value
99
- } = font;
100
- return /*#__PURE__*/_jsx(MenuItem, {
101
- value: value,
102
- children: text
103
- }, i);
104
- })
105
- }), "Font Weight", /*#__PURE__*/_jsx(Select
106
- // value={""}
107
- , {
108
- label: "Font Weight",
109
- onChange: e => {
110
- handleTypographyTheme("fontWeight", e.target.value, "h1");
111
- },
112
- children: fontWeight.options.map((option, i) => {
113
- const {
114
- text,
115
- value
116
- } = option;
117
- return /*#__PURE__*/_jsx(MenuItem, {
118
- value: value,
119
- children: text
120
- }, i);
121
- })
122
- }), /*#__PURE__*/_jsx("input", {
123
- type: "number",
124
- placeholder: "font size",
125
- onChange: e => {
126
- handleTypographyTheme("fontSize", e.target.value, "h1");
127
- }
128
- }), /*#__PURE__*/_jsxs("div", {
129
- children: ["Text", /*#__PURE__*/_jsx("br", {}), "Theme color", Object.values(colorVars).map((colorVar, i) => {
130
- return /*#__PURE__*/_jsx("button", {
131
- style: {
132
- width: "20px",
133
- height: "20px",
134
- background: colorVar,
135
- margin: "10px",
136
- outline: "none"
137
- },
138
- onClick: () => handleTypographyTheme("color", colorVar, "h1")
139
- }, i);
140
- }), "normal color", /*#__PURE__*/_jsx("button", {
141
- style: {
142
- width: "20px",
143
- height: "20px",
144
- background: "#ff00e1",
145
- margin: "10px",
146
- outline: "none"
147
- },
148
- onClick: () => handleTypographyTheme("color", "#ff00e1", "h1")
149
- })]
150
- }), /*#__PURE__*/_jsxs("div", {
151
- children: ["Font styles", fontStyles.map((option, i) => {
152
- const styles = selectedTheme?.typography?.h1 || {};
153
- const {
154
- text,
155
- value,
156
- styleField
157
- } = option;
158
- return /*#__PURE__*/_jsxs("button", {
159
- onClick: () => {
160
- handleTypographyTheme(styleField, styles[styleField] === value ? null : value, "h1");
161
- },
162
- children: [text, " ", styles[styleField] === value]
163
- }, i);
164
- })]
165
- }), /*#__PURE__*/_jsx("input", {
166
- type: "number",
167
- placeholder: "Margin text Spacing",
168
- onChange: e => {
169
- handleTypographyTheme("letterSpacing", e.target.value, "h1");
170
- }
171
- }), /*#__PURE__*/_jsx("input", {
172
- type: "number",
173
- placeholder: "Line spacing",
174
- onChange: e => {
175
- handleTypographyTheme("lineHeight", e.target.value, "h1");
176
- }
37
+ return /*#__PURE__*/_jsx(Box, {
38
+ sx: {
39
+ padding: "10px",
40
+ background: "#efefef",
41
+ borderRadius: "6px"
42
+ },
43
+ children: /*#__PURE__*/_jsxs(Select, {
44
+ onChange: handleThemeChange,
45
+ defaultValue: 0,
46
+ children: [/*#__PURE__*/_jsx(MenuItem, {
47
+ value: 0,
48
+ children: "Default Theme"
49
+ }), themes.map((theme, i) => {
50
+ return /*#__PURE__*/_jsx(MenuItem, {
51
+ value: theme?.id,
52
+ children: theme?.name
53
+ }, i);
177
54
  })]
178
- })]
55
+ })
179
56
  });
180
57
  }
181
58
  export default ThemeList;
@@ -0,0 +1,144 @@
1
+ const themeClassName = ".theme-element";
2
+ function getTextStyles(props) {
3
+ const {
4
+ fontSize,
5
+ textDecoration,
6
+ ...rest
7
+ } = props;
8
+ return {
9
+ ...rest,
10
+ '& span[data-slate-string="true"]': {
11
+ textDecoration,
12
+ fontSize
13
+ }
14
+
15
+ // "&::after": {
16
+ // // for placeholder
17
+ // fontSize,
18
+ // },
19
+ };
20
+ }
21
+
22
+ const transformHeading = (props, elementType) => {
23
+ return {
24
+ [`& ${elementType}${themeClassName}`]: getTextStyles(props)
25
+ };
26
+ };
27
+ const transformParagraph = (props, paraType) => {
28
+ return {
29
+ [`& p${themeClassName}.${paraType}`]: getTextStyles(props)
30
+ };
31
+ };
32
+ const transformButton = props => {
33
+ const {
34
+ borderRadius,
35
+ lockRadius,
36
+ bannerSpacing,
37
+ buttonIcon,
38
+ hover,
39
+ ...classProps
40
+ } = props;
41
+ return {
42
+ [`& .button${themeClassName}`]: {
43
+ ...classProps,
44
+ "&:hover": hover
45
+ },
46
+ buttonTheme: {
47
+ borderRadius,
48
+ lockRadius,
49
+ bannerSpacing,
50
+ buttonIcon
51
+ }
52
+ };
53
+ };
54
+ const transformProps = (elementType, props) => {
55
+ let transformedProp = {};
56
+ let otherProps = {};
57
+ switch (elementType) {
58
+ case "h1":
59
+ case "h2":
60
+ case "h3":
61
+ case "h4":
62
+ case "h5":
63
+ case "h6":
64
+ transformedProp = transformHeading(props, elementType);
65
+ break;
66
+ case "para1":
67
+ case "para2":
68
+ case "para3":
69
+ transformedProp = transformParagraph(props, elementType);
70
+ break;
71
+ case "button":
72
+ const {
73
+ buttonTheme,
74
+ ...classProps
75
+ } = transformButton(props, elementType);
76
+ transformedProp = classProps;
77
+ otherProps = {
78
+ buttonTheme
79
+ };
80
+ break;
81
+ default:
82
+ }
83
+ return {
84
+ transformedProp,
85
+ otherProps
86
+ };
87
+ };
88
+ export const transformTheme = (selectedTheme = {}) => {
89
+ let sxProps = {};
90
+ let others = {};
91
+ const {
92
+ elementProps
93
+ } = selectedTheme;
94
+ if (elementProps) {
95
+ Object.entries(elementProps).forEach(([key, value]) => {
96
+ const {
97
+ transformedProp,
98
+ otherProps
99
+ } = transformProps(key, value);
100
+ sxProps = {
101
+ ...sxProps,
102
+ ...transformedProp
103
+ };
104
+ others = {
105
+ ...others,
106
+ ...otherProps
107
+ };
108
+ });
109
+ }
110
+ return {
111
+ sxProps,
112
+ ...others
113
+ };
114
+ };
115
+ export const defaultTheme = {
116
+ theme: {
117
+ cssVars: {},
118
+ elementProps: {
119
+ button: {
120
+ color: "#FFFFFF",
121
+ background: "#2563EB",
122
+ fontFamily: "PoppinsRegular",
123
+ fontWeight: 400,
124
+ fontSize: "inherit",
125
+ borderColor: "transparent",
126
+ borderRadius: {
127
+ topLeft: 30,
128
+ topRight: 30,
129
+ bottomLeft: 30,
130
+ bottomRight: 30
131
+ },
132
+ bannerSpacing: {
133
+ left: 16,
134
+ top: 8,
135
+ right: 16,
136
+ bottom: 8
137
+ }
138
+ }
139
+ }
140
+ }
141
+ };
142
+ export function getTheme(selectedTheme) {
143
+ return transformTheme(selectedTheme?.theme || defaultTheme.theme);
144
+ }
@@ -0,0 +1,72 @@
1
+ import { Grid, Link, Typography } from "@mui/material";
2
+ import { useEditorTheme } from "../hooks/useEditorTheme";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { Fragment as _Fragment } from "react/jsx-runtime";
6
+ function ActiveTheme(props) {
7
+ const {
8
+ onExplore
9
+ } = props;
10
+ const {
11
+ theme
12
+ } = useEditorTheme();
13
+ const {
14
+ colors = {}
15
+ } = theme?.theme?.cssVars || {};
16
+ const {
17
+ id,
18
+ name,
19
+ mood_name = ""
20
+ } = theme || {};
21
+ const themeColors = Object.values(colors || {});
22
+ return /*#__PURE__*/_jsxs(Grid, {
23
+ className: "activeThemeInnner",
24
+ children: [/*#__PURE__*/_jsx(Typography, {
25
+ variant: "body1",
26
+ className: "title",
27
+ children: id ? "Active Theme" : "No theme activated"
28
+ }), /*#__PURE__*/_jsxs(Grid, {
29
+ className: "flexAlign",
30
+ children: [/*#__PURE__*/_jsx(Typography, {
31
+ variant: "body1",
32
+ className: "fs-14",
33
+ children: name
34
+ }), /*#__PURE__*/_jsxs(Typography, {
35
+ variant: "body2",
36
+ color: "textSecondary",
37
+ className: "fs-12",
38
+ style: {
39
+ marginLeft: "4px"
40
+ },
41
+ children: [id ? ` - ` : null, id ? mood_name : "Select 'Explore More' to activate a theme and customize your design."]
42
+ })]
43
+ }), /*#__PURE__*/_jsxs(Grid, {
44
+ container: true,
45
+ justifyContent: "space-between",
46
+ sx: {
47
+ mt: 1
48
+ },
49
+ children: [/*#__PURE__*/_jsx(Grid, {
50
+ className: "flexAlign",
51
+ sx: {
52
+ gap: "10px"
53
+ },
54
+ children: id ? /*#__PURE__*/_jsx(_Fragment, {
55
+ children: themeColors?.map((color, i) => {
56
+ return /*#__PURE__*/_jsx(Grid, {
57
+ className: "activeColorBox",
58
+ style: {
59
+ background: color
60
+ }
61
+ }, i);
62
+ })
63
+ }) : null
64
+ }), onExplore && /*#__PURE__*/_jsx(Link, {
65
+ className: "pointer fs-12 fw-500",
66
+ onClick: onExplore,
67
+ children: "Explore More"
68
+ })]
69
+ })]
70
+ });
71
+ }
72
+ export default ActiveTheme;