@flozy/editor 11.2.3 → 11.2.4

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 (145) hide show
  1. package/dist/Editor/ChatEditor.js +7 -7
  2. package/dist/Editor/CommonEditor.js +86 -24
  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 +239 -11
  9. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +11 -4
  10. package/dist/Editor/Elements/Button/EditorButton.js +32 -44
  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.js +37 -43
  21. package/dist/Editor/Elements/Embed/Image.js +307 -26
  22. package/dist/Editor/Elements/Embed/Video.js +355 -35
  23. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +9 -6
  24. package/dist/Editor/Elements/EmbedScript/styles.js +17 -1
  25. package/dist/Editor/Elements/Form/FormField.js +1 -1
  26. package/dist/Editor/Elements/Form/Workflow/Styles.js +25 -22
  27. package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
  28. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +37 -76
  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/Table/Table.js +2 -1
  36. package/dist/Editor/Elements/Table/TableCell.js +10 -3
  37. package/dist/Editor/Elements/Title/title.js +4 -5
  38. package/dist/Editor/Elements/TopBanner/TopBanner.js +4 -2
  39. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +5 -3
  40. package/dist/Editor/Styles/EditorStyles.js +19 -5
  41. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  42. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  43. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  44. package/dist/Editor/Toolbar/FormatTools/TextSize.js +33 -29
  45. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  46. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +3 -1
  47. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +25 -23
  48. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +15 -5
  50. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  51. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +65 -7
  52. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +66 -12
  53. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  54. package/dist/Editor/Toolbar/PopupTool/index.js +6 -4
  55. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  56. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  57. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  58. package/dist/Editor/common/ColorPickerButton.js +38 -19
  59. package/dist/Editor/common/CustomColorPicker/index.js +130 -0
  60. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  61. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  62. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  63. package/dist/Editor/common/CustomSelect.js +43 -0
  64. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  65. package/dist/Editor/common/FontLoader/FontLoader.js +1 -0
  66. package/dist/Editor/common/Icon.js +28 -0
  67. package/dist/Editor/common/ImageSelector/ImageSelector.js +66 -13
  68. package/dist/Editor/common/ImageSelector/Options/ChooseAssets.js +1 -1
  69. package/dist/Editor/common/ImageSelector/Options/RecentUploads.js +483 -0
  70. package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
  71. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  72. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  73. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  74. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  75. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +3 -2
  78. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
  79. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +2 -0
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
  82. package/dist/Editor/common/RnD/GuideLines/styles.js +1 -1
  83. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  84. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  85. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -11
  86. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  87. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +52 -63
  88. package/dist/Editor/common/RnD/VirtualElement/helper.js +248 -68
  89. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  90. package/dist/Editor/common/RnD/index.js +61 -14
  91. package/dist/Editor/common/Shorthands/elements.js +55 -3
  92. package/dist/Editor/common/StyleBuilder/buttonStyle.js +5 -15
  93. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  94. package/dist/Editor/common/StyleBuilder/fieldStyle.js +1 -0
  95. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +13 -3
  96. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +16 -4
  102. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  103. package/dist/Editor/common/StyleBuilder/formStyle.js +19 -13
  104. package/dist/Editor/common/StyleBuilder/index.js +10 -19
  105. package/dist/Editor/common/Uploader.js +118 -17
  106. package/dist/Editor/common/UploaderWithProgress.js +183 -0
  107. package/dist/Editor/common/iconslist.js +21 -0
  108. package/dist/Editor/commonStyle.js +111 -53
  109. package/dist/Editor/helper/index.js +4 -1
  110. package/dist/Editor/helper/theme.js +203 -2
  111. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  112. package/dist/Editor/hooks/useMouseMove.js +12 -3
  113. package/dist/Editor/hooks/useTable.js +62 -1
  114. package/dist/Editor/hooks/useThemeValues.js +63 -0
  115. package/dist/Editor/plugins/withEmbeds.js +1 -1
  116. package/dist/Editor/plugins/withHTML.js +56 -3
  117. package/dist/Editor/plugins/withTable.js +1 -1
  118. package/dist/Editor/service/fileTracking.js +22 -0
  119. package/dist/Editor/service/fileupload.js +77 -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 +165 -40
  138. package/dist/Editor/utils/accordion.js +1 -1
  139. package/dist/Editor/utils/attachments.js +138 -2
  140. package/dist/Editor/utils/button.js +1 -17
  141. package/dist/Editor/utils/font.js +40 -37
  142. package/dist/Editor/utils/formfield.js +2 -2
  143. package/dist/Editor/utils/helper.js +101 -3
  144. package/dist/Editor/utils/insertAppHeader.js +8 -4
  145. package/package.json +1 -1
@@ -0,0 +1,22 @@
1
+ // Minimal fallback file tracking service - just logs errors
2
+ export const trackFileUpload = async (fileData, customProps, category) => {
3
+ // Return success to prevent breaking the flow
4
+ return {
5
+ success: true,
6
+ message: "Fallback mode - not tracked"
7
+ };
8
+ };
9
+
10
+ // Minimal fallback recent uploads service - just logs errors
11
+ export const getRecentUploads = async (params, customProps) => {
12
+ // Return empty data to prevent breaking the flow
13
+ return {
14
+ data: [],
15
+ pagination: {
16
+ total: 0,
17
+ limit: 20,
18
+ offset: 0,
19
+ hasMore: false
20
+ }
21
+ };
22
+ };
@@ -1,3 +1,4 @@
1
+ import { Transforms } from "slate";
1
2
  export const uploadFile = async (formData, props) => {
2
3
  try {
3
4
  const response = await fetch(`${props.API_HOST}/general/notes/file_upload`, {
@@ -13,4 +14,80 @@ export const uploadFile = async (formData, props) => {
13
14
  console.log(err);
14
15
  return err;
15
16
  }
17
+ };
18
+ export const formatFileSize = bytes => {
19
+ const MB = bytes / (1024 * 1024);
20
+ if (MB < 100) {
21
+ return `${MB.toFixed(2)} MB`;
22
+ } else {
23
+ const GB = MB / 1024;
24
+ return `${GB.toFixed(2)} GB`;
25
+ }
26
+ };
27
+ export const insertUploadStatusNodeForAttachment = (editor, file) => {
28
+ const uploadId = `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
29
+ const node = {
30
+ type: getFileTypeFromName(file?.name),
31
+ url: "",
32
+ fileName: file?.name,
33
+ uploadId,
34
+ file: file,
35
+ isUploading: true,
36
+ isUpload: true,
37
+ fileSize: file?.size,
38
+ children: [{
39
+ text: ""
40
+ }]
41
+ };
42
+ Transforms.insertNodes(editor, node);
43
+ return uploadId;
44
+ };
45
+ export const getFileTypeFromName = fileName => {
46
+ const extension = fileName.split(".").pop()?.toLowerCase();
47
+ if (!extension) return "unknown";
48
+ switch (extension) {
49
+ case "pdf":
50
+ return "pdf";
51
+ case "doc":
52
+ case "docx":
53
+ case "rtf":
54
+ case "txt":
55
+ case "pages":
56
+ return "doc";
57
+ case "xls":
58
+ case "xlsx":
59
+ case "csv":
60
+ case "numbers":
61
+ return "xls";
62
+ case "ppt":
63
+ case "pptx":
64
+ case "key":
65
+ return "ppt";
66
+ default:
67
+ return "docs";
68
+ }
69
+ };
70
+ export const buildUpdateData = (data, url) => {
71
+ if (typeof data === "string") {
72
+ return {
73
+ url: data
74
+ };
75
+ }
76
+ if (typeof data?.url?.embedURL === "string") {
77
+ return {
78
+ url: data.url.embedURL
79
+ };
80
+ }
81
+
82
+ // Handle new data structure from ImageSelector (for recent uploads, manual URLs, etc.)
83
+ if (typeof data?.embedURL === "string") {
84
+ return {
85
+ url: data.embedURL
86
+ };
87
+ }
88
+ const resolvedUrl = data?.url && data.url !== "none" ? data.url : typeof url === "string" ? url : "";
89
+ return {
90
+ ...data,
91
+ url: resolvedUrl
92
+ };
16
93
  };
@@ -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,149 @@
1
+ import { getDevice } from "../helper/theme";
2
+ const themeClassName = ".theme-element";
3
+ function getTextStyles(props) {
4
+ const {
5
+ fontSize,
6
+ textDecoration,
7
+ color,
8
+ ...rest
9
+ } = props;
10
+ const device = getDevice(window.innerWidth);
11
+ const fontS = typeof fontSize === "object" ? fontSize[device] : fontSize;
12
+ return {
13
+ ...rest,
14
+ '& span[data-slate-string="true"]': {
15
+ textDecoration,
16
+ fontSize: fontS,
17
+ color: color || "inherit"
18
+ }
19
+
20
+ // "&::after": {
21
+ // // for placeholder
22
+ // fontSize,
23
+ // },
24
+ };
25
+ }
26
+
27
+ const transformHeading = (props, elementType) => {
28
+ return {
29
+ [`& ${elementType}${themeClassName}`]: getTextStyles(props)
30
+ };
31
+ };
32
+ const transformParagraph = (props, paraType) => {
33
+ return {
34
+ [`& p${themeClassName}.${paraType}`]: getTextStyles(props)
35
+ };
36
+ };
37
+ const transformButton = props => {
38
+ const {
39
+ borderRadius,
40
+ lockRadius,
41
+ bannerSpacing,
42
+ buttonIcon,
43
+ hover,
44
+ ...classProps
45
+ } = props;
46
+ return {
47
+ [`& .button${themeClassName}`]: {
48
+ ...classProps,
49
+ "&:hover": hover
50
+ },
51
+ buttonTheme: {
52
+ borderRadius,
53
+ lockRadius,
54
+ bannerSpacing,
55
+ buttonIcon
56
+ }
57
+ };
58
+ };
59
+ const transformProps = (elementType, props) => {
60
+ let transformedProp = {};
61
+ let otherProps = {};
62
+ switch (elementType) {
63
+ case "h1":
64
+ case "h2":
65
+ case "h3":
66
+ case "h4":
67
+ case "h5":
68
+ case "h6":
69
+ transformedProp = transformHeading(props, elementType);
70
+ break;
71
+ case "para1":
72
+ case "para2":
73
+ case "para3":
74
+ transformedProp = transformParagraph(props, elementType);
75
+ break;
76
+ case "button":
77
+ const {
78
+ buttonTheme,
79
+ ...classProps
80
+ } = transformButton(props, elementType);
81
+ transformedProp = classProps;
82
+ otherProps = {
83
+ buttonTheme
84
+ };
85
+ break;
86
+ default:
87
+ }
88
+ return {
89
+ transformedProp,
90
+ otherProps
91
+ };
92
+ };
93
+ export const transformTheme = (selectedTheme = {}) => {
94
+ let sxProps = {};
95
+ let others = {};
96
+ const {
97
+ elementProps
98
+ } = selectedTheme;
99
+ if (elementProps) {
100
+ Object.entries(elementProps).forEach(([key, value]) => {
101
+ const {
102
+ transformedProp,
103
+ otherProps
104
+ } = transformProps(key, value);
105
+ sxProps = {
106
+ ...sxProps,
107
+ ...transformedProp
108
+ };
109
+ others = {
110
+ ...others,
111
+ ...otherProps
112
+ };
113
+ });
114
+ }
115
+ return {
116
+ sxProps,
117
+ ...others
118
+ };
119
+ };
120
+ export const defaultTheme = () => ({
121
+ theme: {
122
+ cssVars: {},
123
+ elementProps: {
124
+ button: {
125
+ color: "#FFFFFF",
126
+ background: "#2563EB",
127
+ fontFamily: "PoppinsRegular",
128
+ fontWeight: 400,
129
+ fontSize: "inherit",
130
+ borderColor: "transparent",
131
+ borderRadius: {
132
+ topLeft: 30,
133
+ topRight: 30,
134
+ bottomLeft: 30,
135
+ bottomRight: 30
136
+ },
137
+ bannerSpacing: {
138
+ left: 16,
139
+ top: 8,
140
+ right: 16,
141
+ bottom: 8
142
+ }
143
+ }
144
+ }
145
+ }
146
+ });
147
+ export function getTheme(selectedTheme) {
148
+ return transformTheme(selectedTheme?.theme || defaultTheme().theme);
149
+ }
@@ -0,0 +1,82 @@
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 activeThemeTitle",
27
+ children: id ? "Active Theme" : "No theme activated"
28
+ }), /*#__PURE__*/_jsx(Grid, {
29
+ className: "flexAlign",
30
+ children: id ? /*#__PURE__*/_jsxs(_Fragment, {
31
+ children: [/*#__PURE__*/_jsx(Typography, {
32
+ variant: "body1",
33
+ className: "fs-14 flexItem",
34
+ title: name,
35
+ children: name
36
+ }), /*#__PURE__*/_jsxs(Typography, {
37
+ variant: "body2",
38
+ className: "fs-12 textSecondary flexItem",
39
+ style: {
40
+ marginLeft: id ? "4px" : "0px"
41
+ },
42
+ children: ["- ", mood_name]
43
+ })]
44
+ }) : /*#__PURE__*/_jsx(Typography, {
45
+ variant: "body2",
46
+ className: "fs-12 textSecondary",
47
+ style: {
48
+ marginLeft: id ? "4px" : "0px"
49
+ },
50
+ children: `Select 'Explore More' to activate a theme and customize your design.`
51
+ })
52
+ }), /*#__PURE__*/_jsxs(Grid, {
53
+ container: true,
54
+ justifyContent: "space-between",
55
+ alignItems: "end",
56
+ sx: {
57
+ mt: 1
58
+ },
59
+ children: [/*#__PURE__*/_jsx(Grid, {
60
+ className: "flexAlign",
61
+ sx: {
62
+ gap: "10px"
63
+ },
64
+ children: id ? /*#__PURE__*/_jsx(_Fragment, {
65
+ children: themeColors?.map((color, i) => {
66
+ return /*#__PURE__*/_jsx(Grid, {
67
+ className: "activeColorBox",
68
+ style: {
69
+ background: color
70
+ }
71
+ }, i);
72
+ })
73
+ }) : null
74
+ }), onExplore && /*#__PURE__*/_jsx(Link, {
75
+ className: "pointer fs-12 fw-500 exploreBtn",
76
+ onClick: onExplore,
77
+ children: "Explore More"
78
+ })]
79
+ })]
80
+ });
81
+ }
82
+ export default ActiveTheme;