@flozy/editor 8.0.8 → 8.0.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 (133) hide show
  1. package/dist/Editor/ChatEditor.js +1 -2
  2. package/dist/Editor/CommonEditor.js +33 -112
  3. package/dist/Editor/DialogWrapper.js +25 -31
  4. package/dist/Editor/Editor.css +16 -32
  5. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  6. package/dist/Editor/Elements/Button/EditorButton.js +9 -25
  7. package/dist/Editor/Elements/Color Picker/ColorButtons.js +12 -57
  8. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  9. package/dist/Editor/Elements/Color Picker/ColorPicker.js +7 -9
  10. package/dist/Editor/Elements/Color Picker/Styles.js +1 -1
  11. package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +1 -4
  12. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +4 -3
  13. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/styles.js +1 -6
  14. package/dist/Editor/Elements/DataView/Layouts/DataTypes/DateType.js +9 -19
  15. package/dist/Editor/Elements/DataView/Layouts/Options/styles.js +1 -1
  16. package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +2 -32
  17. package/dist/Editor/Elements/DataView/Layouts/TableView.js +29 -126
  18. package/dist/Editor/Elements/DataView/Layouts/ViewData.js +3 -3
  19. package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +1 -1
  20. package/dist/Editor/Elements/DataView/styles.js +8 -8
  21. package/dist/Editor/Elements/Embed/Image.js +2 -2
  22. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +14 -0
  23. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +1 -2
  24. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +1 -2
  25. package/dist/Editor/Elements/FreeGrid/styles.js +0 -3
  26. package/dist/Editor/Elements/Grid/GridItem.js +3 -2
  27. package/dist/Editor/Elements/Link/Link.js +43 -70
  28. package/dist/Editor/Elements/SimpleText/index.js +12 -7
  29. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  30. package/dist/Editor/Elements/Table/Table.js +16 -17
  31. package/dist/Editor/Elements/Table/TableCell.js +3 -4
  32. package/dist/Editor/Elements/Title/title.js +1 -13
  33. package/dist/Editor/Elements/Variables/Style.js +2 -28
  34. package/dist/Editor/Elements/Variables/VariableButton.js +4 -17
  35. package/dist/Editor/Styles/EditorStyles.js +291 -287
  36. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
  37. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
  38. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  39. package/dist/Editor/Toolbar/FormatTools/TextSize.js +15 -7
  40. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +0 -1
  41. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +8 -9
  42. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +13 -6
  43. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +85 -210
  44. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +1 -2
  45. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +12 -16
  46. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +9 -56
  47. package/dist/Editor/Toolbar/PopupTool/index.js +56 -34
  48. package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
  49. package/dist/Editor/common/ColorPickerButton.js +9 -35
  50. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  51. package/dist/Editor/common/DnD/Draggable.js +1 -0
  52. package/dist/Editor/common/FontLoader/FontList.js +11 -3
  53. package/dist/Editor/common/FontLoader/FontLoader.js +42 -74
  54. package/dist/Editor/common/Icon.js +0 -28
  55. package/dist/Editor/common/ImageSelector/Options/Upload.js +2 -2
  56. package/dist/Editor/common/ImageSelector/Styles.js +9 -3
  57. package/dist/Editor/common/ImageSelector/UploadStyles.js +10 -9
  58. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -1
  59. package/dist/Editor/common/LinkSettings/index.js +5 -1
  60. package/dist/Editor/common/LinkSettings/style.js +7 -0
  61. package/dist/Editor/common/MentionsPopup/Styles.js +12 -6
  62. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +1 -2
  63. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
  64. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
  65. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
  66. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
  67. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +2 -4
  68. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +2 -3
  69. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
  70. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +2 -3
  71. package/dist/Editor/common/RnD/ElementSettings/styles.js +2 -0
  72. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -8
  73. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
  74. package/dist/Editor/common/RnD/Utils/gridDropItem.js +4 -5
  75. package/dist/Editor/common/RnD/Utils/index.js +0 -45
  76. package/dist/Editor/common/RnD/index.js +3 -23
  77. package/dist/Editor/common/Section/index.js +89 -60
  78. package/dist/Editor/common/Shorthands/elements.js +0 -54
  79. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  80. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +0 -5
  81. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +2 -12
  82. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
  83. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +2 -10
  84. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +11 -35
  85. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +4 -13
  86. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +7 -15
  87. package/dist/Editor/common/Uploader.js +0 -8
  88. package/dist/Editor/commonStyle.js +69 -114
  89. package/dist/Editor/helper/deserialize/index.js +1 -1
  90. package/dist/Editor/helper/index.js +2 -2
  91. package/dist/Editor/helper/theme.js +2 -200
  92. package/dist/Editor/hooks/useDrag.js +11 -17
  93. package/dist/Editor/hooks/useEditorScroll.js +2 -1
  94. package/dist/Editor/hooks/useMouseMove.js +3 -9
  95. package/dist/Editor/plugins/withEmbeds.js +1 -1
  96. package/dist/Editor/plugins/withHTML.js +21 -20
  97. package/dist/Editor/plugins/withLayout.js +1 -1
  98. package/dist/Editor/plugins/withTable.js +1 -1
  99. package/dist/Editor/theme/ThemeList.js +173 -50
  100. package/dist/Editor/utils/SlateUtilityFunctions.js +49 -157
  101. package/dist/Editor/utils/button.js +14 -0
  102. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +0 -23
  103. package/dist/Editor/utils/draftToSlate.js +2 -3
  104. package/dist/Editor/utils/font.js +37 -40
  105. package/dist/Editor/utils/helper.js +19 -59
  106. package/dist/Editor/utils/link.js +1 -1
  107. package/package.json +3 -6
  108. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -438
  109. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  110. package/dist/Editor/common/CustomColorPicker/index.js +0 -106
  111. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  112. package/dist/Editor/common/CustomDialog/index.js +0 -90
  113. package/dist/Editor/common/CustomDialog/style.js +0 -67
  114. package/dist/Editor/common/CustomDialog/styles.js +0 -80
  115. package/dist/Editor/common/CustomSelect.js +0 -33
  116. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
  117. package/dist/Editor/hooks/useEditorTheme.js +0 -153
  118. package/dist/Editor/theme/index.js +0 -144
  119. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  120. package/dist/Editor/themeSettings/buttons/index.js +0 -283
  121. package/dist/Editor/themeSettings/buttons/style.js +0 -21
  122. package/dist/Editor/themeSettings/colorTheme/index.js +0 -292
  123. package/dist/Editor/themeSettings/colorTheme/style.js +0 -77
  124. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
  125. package/dist/Editor/themeSettings/fonts/index.js +0 -220
  126. package/dist/Editor/themeSettings/fonts/style.js +0 -44
  127. package/dist/Editor/themeSettings/icons.js +0 -60
  128. package/dist/Editor/themeSettings/index.js +0 -320
  129. package/dist/Editor/themeSettings/style.js +0 -152
  130. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  131. package/dist/Editor/themeSettingsAI/index.js +0 -356
  132. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -197
  133. package/dist/Editor/themeSettingsAI/style.js +0 -250
@@ -9,7 +9,7 @@ const parseCopiedHTML = html => {
9
9
  const parsed = new DOMParser().parseFromString(html, "text/html");
10
10
 
11
11
  // if ol, ul are inside li, remove and push ol,ul after that li to maintain format between our slate list and external source list's json
12
- parsed.querySelectorAll("li > ul, li > ol, li > table").forEach(list => {
12
+ parsed.querySelectorAll("li > ul, li > ol").forEach(list => {
13
13
  // Find the parent li
14
14
  const parentLi = list.parentElement;
15
15
 
@@ -30,8 +30,6 @@ const parseCopiedHTML = html => {
30
30
 
31
31
  // claude.ai, copy list inbetween, some li tags are not wrapped with ul or ol
32
32
  parsed.querySelectorAll("li").forEach(li => {
33
- li.innerHTML = li.innerHTML.replace(/^\n+|\n+$/g, ""); // Removes leading and trailing newlines
34
-
35
33
  // Check if the parent of <li> is not a <ul> or <ol>
36
34
  if (!li.parentElement || li.parentElement.tagName !== "UL" && li.parentElement.tagName !== "OL") {
37
35
  // Create a <ul> element
@@ -57,7 +55,7 @@ const loopChildren = (children = [], defaultInsert) => {
57
55
  }
58
56
  return defaultInsert;
59
57
  };
60
- export const getCurrentElement = editor => {
58
+ const getCurrentElement = editor => {
61
59
  try {
62
60
  if (editor.selection) {
63
61
  return Node.parent(editor, editor?.selection?.anchor?.path);
@@ -238,9 +236,9 @@ const withHtml = editor => {
238
236
  const isNonText = rootElement ? rootElement?.querySelector(NON_TEXT_TAGS.toString()) : false;
239
237
  const isGoogleSheet = parsed.body.querySelector("google-sheets-html-origin");
240
238
  if (isGoogleSheet) {
241
- // if (editor.isChatEditor) {
242
- // return;
243
- // }
239
+ if (editor.isChatEditor) {
240
+ return;
241
+ }
244
242
  const table = rootElement.querySelector("table");
245
243
  const colGrp = table.querySelector("colgroup");
246
244
  if (colGrp) {
@@ -255,19 +253,22 @@ const withHtml = editor => {
255
253
  return;
256
254
  }
257
255
  const fragment = deserialize(parsed.body);
258
- const formattedFragment = formatFragment[eltype] ? formatFragment[eltype](fragment) : fragment;
259
-
260
- // let is_img_table = false;
261
- // formattedFragment.map((f) => {
262
- // if (f.type === "image" || f?.type?.includes("table")) {
263
- // is_img_table = true;
264
- // }
265
- // });
266
-
267
- // if (editor.isChatEditor && is_img_table) {
268
- // return;
269
- // }
270
-
256
+ const normalizeFragment = formatFragment[eltype];
257
+ if (normalizeFragment && isNonText) {
258
+ // When a non-text node is pasted into a list item, insert it into the next node.
259
+ insertAtNextNode(editor, fragment);
260
+ return;
261
+ }
262
+ const formattedFragment = normalizeFragment ? normalizeFragment(fragment) : fragment;
263
+ let is_img_table = false;
264
+ formattedFragment.map(f => {
265
+ if (f.type === "image" || f?.type?.includes("table")) {
266
+ is_img_table = true;
267
+ }
268
+ });
269
+ if (editor.isChatEditor && is_img_table) {
270
+ return;
271
+ }
271
272
  if (isTitlePath && isNonText) {
272
273
  insertAtNextNode(editor, formattedFragment);
273
274
  return;
@@ -39,7 +39,7 @@ const withLayout = editor => {
39
39
  const title = {
40
40
  type: "title",
41
41
  children: [{
42
- text: ""
42
+ text: "Untitled"
43
43
  }]
44
44
  };
45
45
  Transforms.insertNodes(editor, title, {
@@ -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", "page-settings"];
3
+ const NON_DELETABLE_BLOCKS = ["table-cell", "carousel-item"];
4
4
  const withTable = editor => {
5
5
  const {
6
6
  deleteBackward,
@@ -1,58 +1,181 @@
1
- import { Box, MenuItem, Select } from "@mui/material";
2
- import { defaultTheme } from ".";
3
- import { useEditorTheme } from "../hooks/useEditorTheme";
4
- import { useEffect, useState } from "react";
1
+ import { MenuItem, Select, useTheme } from "@mui/material";
2
+ import { fontOptions } from "../utils/font";
3
+ import { toolbarGroups } from "../Toolbar/toolbarGroups";
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
5
  import { jsxs as _jsxs } from "react/jsx-runtime";
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
- };
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) {
24
18
  const {
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");
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
+ });
36
63
  };
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);
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
+ }
54
177
  })]
55
- })
178
+ })]
56
179
  });
57
180
  }
58
181
  export default ThemeList;
@@ -34,12 +34,12 @@ import SimpleText from "../Elements/SimpleText";
34
34
  import CheckList from "../Elements/List/CheckList";
35
35
  import { getTextColor, isEmptyTextNode } from "../helper";
36
36
  import Attachments from "../Elements/Attachments/Attachments";
37
- import { getBreakPointsValue, textThemeFields, getElementProperty } from "../helper/theme";
37
+ import { getBreakPointsValue, groupByBreakpoint } from "../helper/theme";
38
38
  import Variables from "../Elements/Variables/Variable";
39
+ import insertNewLine from "./insertNewLine";
39
40
  import Divider from "../Elements/Divider/Divider";
40
- import { getBorderColor } from "./helper";
41
+ import { getBorderColor, getSlateDom } from "./helper";
41
42
  import Code from "../Elements/EmbedScript/Code";
42
- import { ReactEditor } from "slate-react";
43
43
  import FreeGrid from "../Elements/FreeGrid/FreeGrid";
44
44
  import FreeGridItem from "../Elements/FreeGrid/FreeGridItem";
45
45
  import FreeGridBox from "../Elements/FreeGrid/FreeGridBox";
@@ -47,7 +47,7 @@ import DataView from "../Elements/DataView/DataView";
47
47
  import ViewData from "../Elements/DataView/Layouts/ViewData";
48
48
  import ColumnView from "../Elements/DataView/Layouts/ColumnView";
49
49
  import SearchAttachment from "../Elements/Search/SearchAttachment";
50
- import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
50
+ // import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
51
51
  import { jsx as _jsx } from "react/jsx-runtime";
52
52
  const alignment = ["alignLeft", "alignRight", "alignCenter", "alignJustify"];
53
53
  const list_types = ["orderedList", "unorderedList"];
@@ -55,17 +55,7 @@ const LIST_FORMAT_TYPE = {
55
55
  orderedList: "list-item",
56
56
  unorderedList: "list-item"
57
57
  };
58
-
59
- // const NEWLINESAFTER = [
60
- // "headingOne",
61
- // "headingTwo",
62
- // "headingThree",
63
- // "headingFour",
64
- // "headingFive",
65
- // "headingSix",
66
- // ];
67
-
68
- const THEME_BLOCK_FIELDS = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
58
+ const NEWLINESAFTER = ["headingOne", "headingTwo", "headingThree"];
69
59
  export const toggleBlock = (editor, format, selection = true, attr = {}) => {
70
60
  const isActive = isBlockActive(editor, format);
71
61
  const isList = list_types.includes(format);
@@ -98,9 +88,8 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
98
88
  if (!selection) {
99
89
  Transforms.insertText(editor, "");
100
90
  }
101
- const forActiveType = THEME_BLOCK_FIELDS.some(f => f === format) ? format : "paragraph";
102
91
  Transforms.setNodes(editor, {
103
- type: isActive ? forActiveType : isList ? LIST_FORMAT_TYPE[format] : format,
92
+ type: isActive ? "paragraph" : isList ? LIST_FORMAT_TYPE[format] : format,
104
93
  ...attr
105
94
  });
106
95
  if (isList && !isActive) {
@@ -109,12 +98,10 @@ export const toggleBlock = (editor, format, selection = true, attr = {}) => {
109
98
  children: []
110
99
  });
111
100
  }
112
-
113
- // if (NEWLINESAFTER.indexOf(format) > -1) {
114
- // insertNewLine(editor);
115
- // }
101
+ if (NEWLINESAFTER.indexOf(format) > -1) {
102
+ insertNewLine(editor);
103
+ }
116
104
  };
117
-
118
105
  export const addMarkData = (editor, data) => {
119
106
  try {
120
107
  Editor.addMark(editor, data.format, data.value);
@@ -123,14 +110,9 @@ export const addMarkData = (editor, data) => {
123
110
  }
124
111
  };
125
112
  export const toggleMark = (editor, format) => {
126
- const isActive = isMarkBtnActive(editor, format);
113
+ const isActive = isMarkActive(editor, format);
127
114
  if (isActive) {
128
- const isThemeSupportedMark = textThemeFields.some(f => f === format);
129
- if (isThemeSupportedMark) {
130
- Editor.addMark(editor, format, false);
131
- } else {
132
- Editor.removeMark(editor, format);
133
- }
115
+ Editor.removeMark(editor, format);
134
116
  } else {
135
117
  Editor.addMark(editor, format, true);
136
118
  }
@@ -144,52 +126,6 @@ export const isMarkActive = (editor, format) => {
144
126
  return null;
145
127
  }
146
128
  };
147
- export const isMarkBtnActive = (editor, format) => {
148
- switch (format) {
149
- case "bold":
150
- {
151
- const style = getSelectedElementStyle("font-weight", editor);
152
- return style === "700";
153
- }
154
- case "italic":
155
- {
156
- const style = getSelectedElementStyle("font-style", editor);
157
- return style === format;
158
- }
159
- // case "underline": {
160
- // const style = getSelectedElementStyle("text-decoration");
161
-
162
- // return style?.includes(format);
163
- // }
164
- // case "strikethrough": {
165
- // const style = getSelectedElementStyle("text-decoration");
166
-
167
- // return style?.includes("line-through");
168
- // }
169
- default:
170
- return isMarkActive(editor, format);
171
- }
172
- };
173
- export const getSelectedElementStyle = (styleProperty, editor) => {
174
- try {
175
- if (!editor.selection) {
176
- return "";
177
- }
178
- if (Range.isCollapsed(editor.selection)) {
179
- return "";
180
- }
181
- const domRange = ReactEditor.toDOMRange(editor, editor.selection);
182
- const selectedDomNode = domRange.commonAncestorContainer;
183
-
184
- // If it's a text node, get its parent element
185
- const selectedElement = selectedDomNode.nodeType === 3 ? selectedDomNode.parentElement : selectedDomNode;
186
- if (selectedElement) {
187
- return getElementProperty(selectedElement, styleProperty);
188
- }
189
- } catch (err) {
190
- console.log(err);
191
- }
192
- };
193
129
  export const isBlockActive = (editor, format) => {
194
130
  const [match] = Editor.nodes(editor, {
195
131
  match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === format
@@ -225,38 +161,23 @@ export const activeMark = (editor, format) => {
225
161
  };
226
162
  try {
227
163
  const marks = Editor.marks(editor);
228
- const defaultValue = defaultMarkData[format];
164
+ let defaultValue = defaultMarkData[format];
165
+ const {
166
+ selection
167
+ } = editor || {};
168
+ if (format === "fontSize" && selection && !Range.isCollapsed(selection)) {
169
+ const slateDom = getSlateDom(editor, editor?.selection);
170
+ if (slateDom) {
171
+ const parentElement = slateDom.commonAncestorContainer.parentElement;
172
+ defaultValue = window.getComputedStyle(parentElement).fontSize;
173
+ }
174
+ }
229
175
  return marks?.[format] ?? defaultValue;
230
176
  } catch (err) {
231
177
  console.log(err);
232
178
  return null;
233
179
  }
234
180
  };
235
-
236
- // to avoid the styles, that automatically assign from themes
237
- const getThemeMarkedLeaf = (leaf, children) => {
238
- const {
239
- italic,
240
- bold
241
- } = leaf || {};
242
- const style = {};
243
- if (italic === false) {
244
- style.fontStyle = "normal";
245
- }
246
- if (bold === false) {
247
- style.fontWeight = "normal";
248
- }
249
- if (Object.keys(style).length) {
250
- children = /*#__PURE__*/_jsx(Box, {
251
- component: "span",
252
- sx: {
253
- "& span": style
254
- },
255
- children: children
256
- });
257
- }
258
- return children;
259
- };
260
181
  export const getMarked = (leaf, children, theme) => {
261
182
  const className = leaf?.doublequote ? "doublequote" : "";
262
183
  if (leaf.highlight) {
@@ -283,7 +204,6 @@ export const getMarked = (leaf, children, theme) => {
283
204
  children: children
284
205
  });
285
206
  }
286
- children = getThemeMarkedLeaf(leaf, children);
287
207
  if (leaf.strikethrough) {
288
208
  children = /*#__PURE__*/_jsx("span", {
289
209
  style: {
@@ -311,27 +231,20 @@ export const getMarked = (leaf, children, theme) => {
311
231
  if (leaf.color || leaf.bgColor || leaf.fontSize || leaf.fontFamily || leaf.fontWeight || className) {
312
232
  const family = leaf?.fontFamily;
313
233
  const textStyles = getTextColor(leaf?.color);
314
- const fontSize = {
315
- lg: sizeMap[leaf.fontSize] || leaf.fontSize,
316
- ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
317
- };
318
- const fontSizesImportant = {};
319
- Object.entries(fontSize).forEach(([key, value]) => {
320
- fontSizesImportant[key] = `${value} !important`;
321
- });
322
- const fontSizeWithBreakpoints = wrapThemeBreakpoints(fontSizesImportant, "fontSize", theme);
323
234
  children = /*#__PURE__*/_jsx("span", {
235
+ style: {
236
+ background: leaf.bgColor
237
+ },
324
238
  children: /*#__PURE__*/_jsx(Box, {
325
239
  className: className,
326
240
  component: "span",
327
241
  sx: {
328
- "& span": {
329
- // fontSize: fontSizesImportant,
330
- // ...groupByBreakpoint(fontSizesImportant, theme),
331
- background: leaf.bgColor,
332
- ...fontSizeWithBreakpoints
333
- },
334
- ...fontSizeWithBreakpoints,
242
+ ...groupByBreakpoint({
243
+ fontSize: {
244
+ lg: sizeMap[leaf.fontSize] || leaf.fontSize,
245
+ ...getBreakPointsValue(leaf.fontSize, null, "overrideText")
246
+ }
247
+ }, theme),
335
248
  // ...wrapThemeBreakpoints(
336
249
  // {
337
250
  // lg: sizeMap[leaf.fontSize] || leaf.fontSize,
@@ -373,71 +286,55 @@ export const getBlock = props => {
373
286
  } = props;
374
287
  const attributes = props.attributes ?? {};
375
288
  const isEmpty = isEmptyTextNode(element);
376
- const commonHeadingProps = () => ({
377
- ...attributes,
378
- ...element.attr,
379
- className: `edt-headings content-editable ${isEmpty ? "empty" : ""} theme-element`
380
- });
381
- const commonParaProps = paraType => ({
382
- ...attributes,
383
- ...element.attr,
384
- className: `content-editable ${isEmpty ? "empty" : ""} theme-element ${paraType}`
385
- });
386
289
  switch (element.type) {
387
290
  case "headingOne":
388
291
  return /*#__PURE__*/_jsx("h1", {
389
- ...commonHeadingProps(),
292
+ ...attributes,
293
+ ...element.attr,
294
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
390
295
  placeholder: "Heading 1",
391
296
  children: children
392
297
  });
393
298
  case "headingTwo":
394
299
  return /*#__PURE__*/_jsx("h2", {
395
- ...commonHeadingProps(),
300
+ ...attributes,
301
+ ...element.attr,
302
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
396
303
  placeholder: "Heading 2",
397
304
  children: children
398
305
  });
399
306
  case "headingThree":
400
307
  return /*#__PURE__*/_jsx("h3", {
401
- ...commonHeadingProps(),
308
+ ...attributes,
309
+ ...element.attr,
310
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
402
311
  placeholder: "Heading 3",
403
312
  children: children
404
313
  });
405
314
  case "headingFour":
406
315
  return /*#__PURE__*/_jsx("h4", {
407
- ...commonHeadingProps(),
316
+ ...attributes,
317
+ ...element.attr,
318
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
408
319
  placeholder: "Heading 4",
409
320
  children: children
410
321
  });
411
322
  case "headingFive":
412
323
  return /*#__PURE__*/_jsx("h5", {
413
- ...commonHeadingProps(),
324
+ ...attributes,
325
+ ...element.attr,
326
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
414
327
  placeholder: "Heading 5",
415
328
  children: children
416
329
  });
417
330
  case "headingSix":
418
331
  return /*#__PURE__*/_jsx("h6", {
419
- ...commonHeadingProps(),
332
+ ...attributes,
333
+ ...element.attr,
334
+ className: `edt-headings content-editable ${isEmpty ? "empty" : ""}`,
420
335
  placeholder: "Heading 6",
421
336
  children: children
422
337
  });
423
- case "paragraphOne":
424
- return /*#__PURE__*/_jsx("p", {
425
- ...commonParaProps("para1"),
426
- placeholder: "Paragraph 1",
427
- children: children
428
- });
429
- case "paragraphTwo":
430
- return /*#__PURE__*/_jsx("p", {
431
- ...commonParaProps("para2"),
432
- placeholder: "Paragraph 2",
433
- children: children
434
- });
435
- case "paragraphThree":
436
- return /*#__PURE__*/_jsx("p", {
437
- ...commonParaProps("para3"),
438
- placeholder: "Paragraph 3",
439
- children: children
440
- });
441
338
  case "blockquote":
442
339
  return /*#__PURE__*/_jsx("blockquote", {
443
340
  ...attributes,
@@ -733,11 +630,6 @@ export const getBlock = props => {
733
630
  children: children
734
631
  });
735
632
  default:
736
- // return (
737
- // <span {...attributes} {...element.attr}>
738
- // {children}
739
- // </span>
740
- // );
741
633
  return /*#__PURE__*/_jsx(SimpleText, {
742
634
  ...props,
743
635
  isEmpty: isEmpty
@@ -11,6 +11,20 @@ export const insertButton = editor => {
11
11
  linkType: "webAddress"
12
12
  },
13
13
  iconPosition: "start",
14
+ bgColor: "#2563EB",
15
+ textColor: "#FFF",
16
+ borderRadius: {
17
+ topLeft: 30,
18
+ topRight: 30,
19
+ bottomLeft: 30,
20
+ bottomRight: 30
21
+ },
22
+ bannerSpacing: {
23
+ left: 16,
24
+ top: 8,
25
+ right: 16,
26
+ bottom: 8
27
+ },
14
28
  ...(windowVar.lastButtonProps || {})
15
29
  };
16
30
  Transforms.insertNodes(editor, button);