@flozy/editor 3.6.9 → 3.7.1

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 (102) hide show
  1. package/dist/Editor/CommonEditor.js +111 -169
  2. package/dist/Editor/Elements/Accordion/Accordion.js +7 -74
  3. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +2 -3
  4. package/dist/Editor/Elements/Accordion/AccordionSummary.js +60 -4
  5. package/dist/Editor/Elements/AppHeader/AppHeader.js +4 -26
  6. package/dist/Editor/Elements/Button/EditorButton.js +18 -34
  7. package/dist/Editor/Elements/ChipText/ChipText.js +3 -3
  8. package/dist/Editor/Elements/Color Picker/ColorButtons.js +17 -60
  9. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  10. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  11. package/dist/Editor/Elements/Color Picker/Styles.js +1 -2
  12. package/dist/Editor/Elements/Embed/Frames/ImageFrame.js +0 -1
  13. package/dist/Editor/Elements/Emoji/EmojiButton.js +2 -2
  14. package/dist/Editor/Elements/Emoji/EmojiPicker.js +0 -16
  15. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +3 -12
  16. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +1 -2
  17. package/dist/Editor/Elements/Grid/Grid.js +1 -3
  18. package/dist/Editor/Elements/Grid/GridItem.js +2 -4
  19. package/dist/Editor/Elements/InlineIcon/InlineIcon.js +3 -2
  20. package/dist/Editor/Elements/Link/Link.js +1 -6
  21. package/dist/Editor/Elements/Link/LinkButton.js +2 -4
  22. package/dist/Editor/Elements/Link/LinkPopup.js +3 -11
  23. package/dist/Editor/Elements/List/CheckList.js +2 -6
  24. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  25. package/dist/Editor/MiniEditor.js +1 -3
  26. package/dist/Editor/Styles/EditorStyles.js +2 -3
  27. package/dist/Editor/Toolbar/Basic/index.js +2 -4
  28. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +2 -26
  29. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  30. package/dist/Editor/Toolbar/FormatTools/TextSize.js +11 -5
  31. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +11 -4
  32. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +86 -213
  33. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +1 -2
  34. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +13 -20
  35. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +7 -52
  36. package/dist/Editor/Toolbar/PopupTool/index.js +2 -9
  37. package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
  38. package/dist/Editor/common/ColorPickerButton.js +9 -25
  39. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  40. package/dist/Editor/common/Icon.js +2 -30
  41. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +2 -5
  42. package/dist/Editor/common/MentionsPopup/Styles.js +3 -6
  43. package/dist/Editor/common/Shorthands/elements.js +0 -54
  44. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
  45. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
  46. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  47. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +3 -13
  48. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
  49. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +7 -31
  50. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +4 -13
  51. package/dist/Editor/common/StyleBuilder/fieldTypes/icons.js +28 -12
  52. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +4 -14
  53. package/dist/Editor/common/StyleBuilder/formStyle.js +26 -25
  54. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  55. package/dist/Editor/helper/index.js +0 -15
  56. package/dist/Editor/helper/theme.js +4 -190
  57. package/dist/Editor/hooks/useMouseMove.js +6 -15
  58. package/dist/Editor/plugins/withEmbeds.js +1 -1
  59. package/dist/Editor/plugins/withHTML.js +5 -47
  60. package/dist/Editor/plugins/withLayout.js +10 -15
  61. package/dist/Editor/plugins/withTable.js +2 -2
  62. package/dist/Editor/theme/ThemeList.js +173 -50
  63. package/dist/Editor/utils/SlateUtilityFunctions.js +25 -157
  64. package/dist/Editor/utils/button.js +17 -1
  65. package/dist/Editor/utils/events.js +4 -11
  66. package/dist/Editor/utils/font.js +37 -40
  67. package/dist/Editor/utils/form.js +2 -2
  68. package/dist/Editor/utils/helper.js +12 -71
  69. package/dist/Editor/utils/serializeToHTML.js +13 -25
  70. package/dist/index.js +1 -5
  71. package/package.json +4 -4
  72. package/dist/Editor/ChatEditor.js +0 -211
  73. package/dist/Editor/Elements/Link/LinkPopupStyles.js +0 -28
  74. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -438
  75. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  76. package/dist/Editor/common/CustomColorPicker/index.js +0 -106
  77. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  78. package/dist/Editor/common/CustomDialog/index.js +0 -94
  79. package/dist/Editor/common/CustomDialog/style.js +0 -67
  80. package/dist/Editor/common/CustomSelect.js +0 -33
  81. package/dist/Editor/common/EditorCmds.js +0 -35
  82. package/dist/Editor/common/MUIIcon/index.js +0 -48
  83. package/dist/Editor/common/StyleBuilder/fieldTypes/loadIcon.js +0 -13
  84. package/dist/Editor/common/StyleBuilder/fieldTypes/mui_filled_icons.js +0 -2
  85. package/dist/Editor/hooks/useEditorTheme.js +0 -139
  86. package/dist/Editor/theme/index.js +0 -144
  87. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  88. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  89. package/dist/Editor/themeSettings/buttons/style.js +0 -21
  90. package/dist/Editor/themeSettings/colorTheme/index.js +0 -290
  91. package/dist/Editor/themeSettings/colorTheme/style.js +0 -77
  92. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -123
  93. package/dist/Editor/themeSettings/fonts/index.js +0 -213
  94. package/dist/Editor/themeSettings/fonts/style.js +0 -44
  95. package/dist/Editor/themeSettings/icons.js +0 -60
  96. package/dist/Editor/themeSettings/index.js +0 -320
  97. package/dist/Editor/themeSettings/style.js +0 -152
  98. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  99. package/dist/Editor/themeSettingsAI/index.js +0 -356
  100. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -190
  101. package/dist/Editor/themeSettingsAI/style.js +0 -247
  102. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +0 -361
@@ -1,44 +1,22 @@
1
- import React, { useEffect, useMemo, useState } from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
  import { Grid, TextField, InputAdornment, Typography } from "@mui/material";
3
3
  import ColorPickerButton from "../../ColorPickerButton";
4
- import { useSlateStatic } from "slate-react";
5
- import { getElementStyle, getVariableValue } from "../../../helper/theme";
6
4
  import { jsx as _jsx } from "react/jsx-runtime";
7
5
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
- const MAP_STYLE_PROPS = {
9
- bgColor: "background-color",
10
- textColor: "color"
11
- };
12
6
  const Color = props => {
13
7
  const {
14
- value: val,
8
+ value,
15
9
  data,
16
10
  onChange,
17
- classes,
18
- elementProps,
19
- handleClose,
20
- customProps
11
+ classes
21
12
  } = props;
22
13
  const {
23
14
  key,
24
15
  label
25
16
  } = data;
26
17
  const [recentColors, setRecentColors] = useState({});
27
- const editor = useSlateStatic();
28
- const {
29
- value,
30
- inputValue
31
- } = useMemo(() => {
32
- const isVariable = val && val.startsWith("var");
33
- const value = isVariable ? val : getElementStyle(editor, elementProps, MAP_STYLE_PROPS[key]);
34
- const inputValue = isVariable ? getVariableValue(val) : getElementStyle(editor, elementProps, MAP_STYLE_PROPS[key]);
35
- return {
36
- value: value || val,
37
- inputValue: inputValue || val
38
- };
39
- }, [editor, val]);
40
18
  useEffect(() => {
41
- const storedColors = JSON.parse(localStorage.getItem("recentColors"));
19
+ const storedColors = JSON.parse(localStorage.getItem('recentColors'));
42
20
  if (storedColors) {
43
21
  setRecentColors(storedColors);
44
22
  }
@@ -61,7 +39,7 @@ const Color = props => {
61
39
  [key]: updatedColors
62
40
  };
63
41
  setRecentColors(updatedColors);
64
- localStorage.setItem("recentColors", JSON.stringify(updatedColors));
42
+ localStorage.setItem('recentColors', JSON.stringify(updatedColors));
65
43
  };
66
44
  return /*#__PURE__*/_jsxs(Grid, {
67
45
  item: true,
@@ -78,7 +56,7 @@ const Color = props => {
78
56
  children: label
79
57
  }), /*#__PURE__*/_jsx(TextField, {
80
58
  fullWidth: true,
81
- value: inputValue,
59
+ value: value,
82
60
  placeholder: `${label} color code`,
83
61
  InputLabelProps: {
84
62
  shrink: true
@@ -90,9 +68,7 @@ const Color = props => {
90
68
  classes: classes,
91
69
  value: value,
92
70
  onSave: onSave,
93
- recentColors: recentColors[key],
94
- handleClose: handleClose,
95
- disableEditTheme: customProps?.disableEditTheme
71
+ recentColors: recentColors[key]
96
72
  })
97
73
  })
98
74
  }
@@ -1,26 +1,19 @@
1
- import React, { useMemo } from "react";
1
+ import React from "react";
2
2
  import { TextField, IconButton, Grid, Typography } from "@mui/material";
3
3
  import { sizeMap } from "../../../utils/font.js";
4
4
  import { TextMinusIcon, TextPlusIcon } from "../../../common/iconslist.js";
5
- import { getElementStyle } from "../../../helper/theme.js";
6
- import { useSlateStatic } from "slate-react";
7
5
  import { jsx as _jsx } from "react/jsx-runtime";
8
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
9
7
  const FontSize = props => {
10
8
  const {
11
- value: val,
9
+ value,
12
10
  data,
13
- onChange,
14
- elementProps
11
+ onChange
15
12
  } = props;
16
13
  const {
17
14
  key,
18
15
  width
19
16
  } = data;
20
- const editor = useSlateStatic();
21
- const value = useMemo(() => {
22
- return getElementStyle(editor, elementProps, "font-size") || val;
23
- }, [editor, val]);
24
17
  const handleChange = e => {
25
18
  let inc = parseInt(e.target.value) || 16;
26
19
  inc = inc > 200 ? 200 : inc;
@@ -31,9 +24,7 @@ const FontSize = props => {
31
24
  const getSizeVal = () => {
32
25
  try {
33
26
  const size = `${value}`?.indexOf("px") >= 0 ? value : sizeMap[value] || value;
34
- const defaultSize = 16;
35
- const val = parseInt(size || defaultSize);
36
- return isNaN(val) ? defaultSize : val;
27
+ return parseInt(size || 16);
37
28
  } catch (err) {
38
29
  return "";
39
30
  }
@@ -1,10 +1,29 @@
1
1
  import React, { useState } from "react";
2
2
  import { Grid, IconButton, TextField, Tooltip } from "@mui/material";
3
- import MUIIcon from "./loadIcon";
4
- import MUIFilledIcons from "./mui_filled_icons";
3
+ import * as fIcons from "@mui/icons-material";
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
5
  import { jsxs as _jsxs } from "react/jsx-runtime";
7
6
  import { Fragment as _Fragment } from "react/jsx-runtime";
7
+ const MUIIcons = Object.keys(fIcons).reduce((a, b) => {
8
+ if (b.indexOf("Outlined") > -1) {
9
+ a.outlined.push(b);
10
+ } else if (b.indexOf("Rounded") > -1) {
11
+ a.rounded.push(b);
12
+ } else if (b.indexOf("Sharp") > -1) {
13
+ a.sharp.push(b);
14
+ } else if (b.indexOf("TwoTone") > -1) {
15
+ a.tt.push(b);
16
+ } else {
17
+ a.filled.push(b);
18
+ }
19
+ return a;
20
+ }, {
21
+ filled: [],
22
+ outlined: [],
23
+ rounded: [],
24
+ tt: [],
25
+ sharp: []
26
+ });
8
27
  const Icons = props => {
9
28
  const {
10
29
  value,
@@ -15,7 +34,7 @@ const Icons = props => {
15
34
  key
16
35
  } = data;
17
36
  const [val, setVal] = useState("");
18
- const [list, setList] = useState(MUIFilledIcons.slice(0, 90));
37
+ const [list, setList] = useState(MUIIcons.filled.slice(0, 90));
19
38
  const onSelectIcon = ico => () => {
20
39
  onChange({
21
40
  [key]: ico
@@ -25,11 +44,11 @@ const Icons = props => {
25
44
  const keyVal = e.target.value?.toLowerCase();
26
45
  setVal(keyVal);
27
46
  if (keyVal) {
28
- setList(MUIFilledIcons.filter(f => {
47
+ setList(MUIIcons.filled.filter(f => {
29
48
  return f.toLowerCase().indexOf(keyVal) > -1;
30
49
  }).slice(0, 90));
31
50
  } else {
32
- setList(MUIFilledIcons.slice(0, 90));
51
+ setList(MUIIcons.filled.slice(0, 90));
33
52
  }
34
53
  };
35
54
  const onRemoveIcon = () => {
@@ -37,7 +56,7 @@ const Icons = props => {
37
56
  [key]: null
38
57
  });
39
58
  };
40
- const SelectedIcon = value ? value : null;
59
+ const SelectedIcon = value ? fIcons[value] : null;
41
60
  return /*#__PURE__*/_jsxs(_Fragment, {
42
61
  children: [/*#__PURE__*/_jsx(Grid, {
43
62
  item: true,
@@ -73,9 +92,7 @@ const Icons = props => {
73
92
  arrow: true,
74
93
  children: /*#__PURE__*/_jsx(IconButton, {
75
94
  onClick: onRemoveIcon,
76
- children: /*#__PURE__*/_jsx(MUIIcon, {
77
- iconName: value
78
- })
95
+ children: /*#__PURE__*/_jsx(SelectedIcon, {})
79
96
  })
80
97
  }) : ""
81
98
  })]
@@ -90,14 +107,13 @@ const Icons = props => {
90
107
  paddingTop: "5px"
91
108
  },
92
109
  children: list.map(m => {
110
+ const Ico = fIcons[m];
93
111
  return /*#__PURE__*/_jsx(Tooltip, {
94
112
  title: m,
95
113
  arrow: true,
96
114
  children: /*#__PURE__*/_jsx(IconButton, {
97
115
  onClick: onSelectIcon(m),
98
- children: /*#__PURE__*/_jsx(MUIIcon, {
99
- iconName: m
100
- })
116
+ children: /*#__PURE__*/_jsx(Ico, {})
101
117
  })
102
118
  }, `mui_ico_${m}`);
103
119
  })
@@ -1,8 +1,7 @@
1
- import React, { useMemo } from "react";
1
+ import React from "react";
2
2
  import { FormControl, Grid, ListItemIcon, ListSubheader, MenuItem, Select, Typography } from "@mui/material";
3
- import { getBreakPointsValue, getElementStyle } from "../../../helper/theme";
3
+ import { getBreakPointsValue } from "../../../helper/theme";
4
4
  import useWindowResize from "../../../hooks/useWindowResize";
5
- import { useSlateStatic } from "slate-react";
6
5
  import { jsx as _jsx } from "react/jsx-runtime";
7
6
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
7
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -23,19 +22,10 @@ const TextOptions = props => {
23
22
  isBreakpoint,
24
23
  options,
25
24
  renderOption,
26
- width,
27
- themeEnabled
25
+ width
28
26
  } = data;
29
27
  const [size] = useWindowResize();
30
- const editor = useSlateStatic();
31
- const value = useMemo(() => {
32
- const userValue = isBreakpoint ? getBreakPointsValue(val, size?.device) : val;
33
- if (themeEnabled) {
34
- // editor takes a little amount of time to update the new style in element, in that case userValue will be returned
35
- return getElementStyle(editor, elementProps, key) || userValue;
36
- }
37
- return userValue;
38
- }, [editor, isBreakpoint, val, size?.device]);
28
+ const value = isBreakpoint ? getBreakPointsValue(val, size?.device) : val;
39
29
  const metaDataMappingOptions = metaMappings?.boards || [];
40
30
  const updatedOption = elementProps?.metadatamapping ? [...options, ...metaDataMappingOptions] : options;
41
31
  const handleChange = (e, d) => {
@@ -129,31 +129,32 @@ const formStyle = [{
129
129
  key: "backgroundImage",
130
130
  type: "backgroundImage"
131
131
  }]
132
- }, {
133
- tab: "Add to Boards",
134
- value: "metadatamapping",
135
- fields: [{
136
- label: "Add response to contacts board",
137
- key: "metadatamapping",
138
- type: "metadatamapping",
139
- compType: "card",
140
- content: "By default, form responses are added as separate cards on the default contact board.",
141
- value: "mappingToContactBoard",
142
- infoIcon: /*#__PURE__*/_jsx(Icon, {
143
- icon: "info"
144
- })
145
- }, {
146
- label: "Create a separate board",
147
- key: "metadatamapping",
148
- type: "metadatamapping",
149
- compType: "card",
150
- content: "By default, form responses are added as separate cards on a new board (Contact Us).",
151
- value: "mappingToSeparateBoard",
152
- infoIcon: /*#__PURE__*/_jsx(Icon, {
153
- icon: "info"
154
- })
155
- }]
156
- }, {
132
+ },
133
+ // {
134
+ // tab: "Add to Boards",
135
+ // value: "metadatamapping",
136
+ // fields: [
137
+ // {
138
+ // label: "Add response to contacts board",
139
+ // key: "metadatamapping",
140
+ // type: "metadatamapping",
141
+ // compType: "card",
142
+ // content: "By default, form responses are added as separate cards on the default contact board.",
143
+ // value: "mappingToContactBoard",
144
+ // infoIcon: <Icon icon="info" />
145
+ // },
146
+ // {
147
+ // label: "Create a separate board",
148
+ // key: "metadatamapping",
149
+ // type: "metadatamapping",
150
+ // compType: "card",
151
+ // content: "By default, form responses are added as separate cards on a new board (Contact Us).",
152
+ // value: "mappingToSeparateBoard",
153
+ // infoIcon: <Icon icon="info" />
154
+ // },
155
+ // ],
156
+ // },
157
+ {
157
158
  tab: "Save As Template",
158
159
  value: "saveAsTemplate",
159
160
  needActions: false,
@@ -87,7 +87,7 @@ const StyleBuilder = props => {
87
87
  ...data,
88
88
  field_type: data?.element
89
89
  });
90
- if (data?.hasOwnProperty("name")) {
90
+ if (data?.hasOwnProperty('name')) {
91
91
  setElementProps({
92
92
  ...elementProps,
93
93
  ...data,
@@ -139,19 +139,4 @@ export const isEmptyTextNode = element => {
139
139
  console.log(err);
140
140
  return false;
141
141
  }
142
- };
143
- export const debounce = function (func, wait, immediate) {
144
- let timeout;
145
- return function () {
146
- const context = this,
147
- args = arguments,
148
- later = function () {
149
- timeout = null;
150
- if (!immediate) func.apply(context, args);
151
- },
152
- callNow = immediate && !timeout;
153
- clearTimeout(timeout);
154
- timeout = setTimeout(later, wait);
155
- if (callNow) func.apply(context, args);
156
- };
157
142
  };
@@ -1,6 +1,4 @@
1
- import { ReactEditor } from "slate-react";
2
- import { fontFamilyMap, sizeMap } from "../utils/font";
3
- import { Editor, Node } from "slate";
1
+ import { sizeMap } from "../utils/font";
4
2
  export const breakpoints = {
5
3
  small: 0,
6
4
  mobile: 600,
@@ -29,7 +27,7 @@ const overrideValues = (value, ot) => {
29
27
  return Object.keys(value).reduce((a, b) => {
30
28
  return {
31
29
  ...a,
32
- [b]: overrides[ot] ? overrides[ot](value[b], value) : value
30
+ [b]: overrides[ot] ? overrides[ot](value[b]) : value
33
31
  };
34
32
  }, {});
35
33
  };
@@ -46,15 +44,7 @@ const overrides = {
46
44
  overrideReSizeH: val => {
47
45
  return `${val?.height}px`;
48
46
  },
49
- overrideBorderRadius: (val, breakpointValues) => {
50
- if (!val?.topLeft) {
51
- Object.values(breakpointValues || {}).forEach(v => {
52
- if (v) {
53
- // Applying the values from breakpoints that exist to those that do not have
54
- val = v;
55
- }
56
- });
57
- }
47
+ overrideBorderRadius: val => {
58
48
  return `${val?.topLeft}px ${val?.topRight}px ${val?.bottomLeft}px ${val?.bottomRight}px`;
59
49
  }
60
50
  };
@@ -107,180 +97,4 @@ export const getTRBLBreakPoints = (value, breakpoint) => {
107
97
  } catch (err) {
108
98
  console.log(err);
109
99
  }
110
- };
111
- export function getElementStyle(editor, element, stylePropertyName) {
112
- try {
113
- const path = ReactEditor.findPath(editor, element);
114
- if (path?.length) {
115
- const currentEle = Node.get(editor, path);
116
- const dom = ReactEditor.toDOMNode(editor, currentEle);
117
- const editorBtn = dom?.querySelector("button.theme-element");
118
- const elementStyle = window.getComputedStyle(editorBtn);
119
- const style = elementStyle[stylePropertyName];
120
- if (stylePropertyName === "fontFamily") {
121
- const val = Object.entries(fontFamilyMap).find(([key, value]) => value === style)?.[0];
122
- return val;
123
- }
124
- return style;
125
- }
126
- } catch (err) {
127
- // console.log(err);
128
- }
129
- }
130
- export function getTextSizeVal(editor) {
131
- try {
132
- const currentNode = Node.get(editor, editor.selection.anchor.path);
133
- const currentElement = ReactEditor.toDOMNode(editor, currentNode);
134
- if (currentElement) {
135
- const element = document.querySelector('span[data-slate-string="true"]');
136
- const computedStyle = window.getComputedStyle(element);
137
- return computedStyle.getPropertyValue("font-size") || "";
138
- }
139
- } catch (err) {
140
- // console.log(err);
141
- }
142
- }
143
- export function getVariableValue(val) {
144
- const bodyElement = document.body;
145
- const computedStyle = getComputedStyle(bodyElement);
146
- const [, variableName] = val?.match(/var\((--[^)]+)\)/) || [];
147
- const varValue = computedStyle.getPropertyValue(variableName).trim();
148
- return varValue;
149
- }
150
- export const textThemeFields = ["fontFamily", "fontSize", "color", "bold", "italic"
151
- // "underline",
152
- // "strikethrough",
153
- ];
154
-
155
- const themeElements = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
156
- export const isTextCustomized = editor => {
157
- try {
158
- if (editor.selection) {
159
- const currentElement = Node.parent(editor, editor?.selection?.anchor?.path);
160
- if (!currentElement) {
161
- return false;
162
- }
163
- const {
164
- children,
165
- type
166
- } = currentElement;
167
- if (!themeElements.includes(type)) {
168
- return false;
169
- }
170
- if (children?.length > 1) {
171
- return true;
172
- }
173
- const customized = textThemeFields.some(field => {
174
- const element = children[0] || {};
175
- const value = element[field];
176
- if (field === "fontSize") {
177
- return Object.keys(value || {}).length;
178
- } else {
179
- return value;
180
- }
181
- });
182
- return customized;
183
- } else {
184
- return null;
185
- }
186
- } catch (err) {
187
- return null;
188
- }
189
- };
190
- const addToTheme = (field, value, element) => {
191
- switch (field) {
192
- case "fontFamily":
193
- return {
194
- fontFamily: fontFamilyMap[value]
195
- };
196
- case "fontSize":
197
- return {
198
- fontSize: value?.lg
199
- };
200
- case "color":
201
- return {
202
- color: value
203
- };
204
- case "bold":
205
- return {
206
- fontWeight: "bold"
207
- };
208
- case "italic":
209
- return {
210
- fontStyle: "italic"
211
- };
212
- // case "underline":
213
- // case "strikethrough":
214
- // let textDecoration = "";
215
-
216
- // if (element.underline) {
217
- // textDecoration = "underline";
218
- // }
219
-
220
- // if (element.strikethrough) {
221
- // textDecoration += " strikethrough";
222
- // }
223
-
224
- // return { textDecoration };
225
- default:
226
- return {};
227
- }
228
- };
229
- const MAP_TEXT_THEME_FIELD = {
230
- headingOne: "h1",
231
- headingTwo: "h2",
232
- headingThree: "h3",
233
- headingFour: "h4",
234
- headingFive: "h5",
235
- headingSix: "h6",
236
- paragraphOne: "para1",
237
- paragraphTwo: "para2",
238
- paragraphThree: "para3"
239
- };
240
- export const saveToTheme = editor => {
241
- try {
242
- if (editor.selection) {
243
- const currentElement = Node.parent(editor, editor?.selection?.anchor?.path);
244
- if (!currentElement) {
245
- return false;
246
- }
247
- const {
248
- children
249
- } = currentElement;
250
- if (children?.length > 1) {
251
- return true;
252
- }
253
- let theme = {};
254
- textThemeFields.forEach(field => {
255
- const element = children[0] || {};
256
- const value = element[field];
257
- let style = {};
258
- let isValueExist = false;
259
- if (value) {
260
- isValueExist = true;
261
- if (field === "fontSize") {
262
- isValueExist = !!Object.keys(value).length;
263
- }
264
- }
265
- if (isValueExist) {
266
- style = addToTheme(field, value, element);
267
- }
268
- theme = {
269
- ...theme,
270
- ...style
271
- };
272
- });
273
- textThemeFields.forEach(field => {
274
- Editor.removeMark(editor, field);
275
- });
276
- return {
277
- field: MAP_TEXT_THEME_FIELD[currentElement?.type],
278
- theme
279
- };
280
- }
281
- } catch (err) {
282
- return;
283
- }
284
- };
285
- export const HEADING_THEME_FIELDS = ["h1", "h2", "h3", "h4", "h5", "h6"];
286
- export const PARAGRAPH_THEME_FIELDS = ["para1", "para2", "para3"];
100
+ };
@@ -1,6 +1,5 @@
1
1
  import { useEffect, useState, createContext, useContext, useMemo } from "react";
2
2
  import { getSelectedText } from "../utils/helper";
3
- import { debounce } from "../helper";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  const EditorContext = /*#__PURE__*/createContext();
6
5
  export const useEditorSelection = editor => {
@@ -29,7 +28,6 @@ export const EditorProvider = ({
29
28
  const path = event?.target?.getAttribute("data-path");
30
29
  const [popupType, setPopupType] = useState(""); // opened popup name in the editor will be stored
31
30
  const [openAI, setOpenAI] = useState("");
32
- const [selectedTheme, setSelectedTheme] = useState({});
33
31
  const onDrop = () => {
34
32
  setDrop(drop + 1);
35
33
  };
@@ -56,9 +54,7 @@ export const EditorProvider = ({
56
54
  popupType,
57
55
  setPopupType,
58
56
  openAI,
59
- setOpenAI,
60
- selectedTheme,
61
- setSelectedTheme
57
+ setOpenAI
62
58
  },
63
59
  children: children
64
60
  });
@@ -77,20 +73,15 @@ const useMouseMove = () => {
77
73
  };
78
74
  }, []);
79
75
  const onMouseMove = e => {
80
- const dpath = e?.target?.closest(".dpath");
81
- if (dpath) {
82
- console.log(`Stopped position: (${e.clientX}, ${e.clientY})`, dpath);
83
- setEvent({
84
- target: dpath
85
- });
86
- }
76
+ setEvent({
77
+ target: e.target
78
+ });
87
79
  };
88
- const debounceMouseMove = debounce(onMouseMove, 100);
89
80
  const addListener = () => {
90
- document.addEventListener("mousemove", debounceMouseMove);
81
+ document.addEventListener("mousemove", onMouseMove);
91
82
  };
92
83
  const removeListener = () => {
93
- document.removeEventListener("mousemove", debounceMouseMove);
84
+ document.removeEventListener("mousemove", onMouseMove);
94
85
  };
95
86
  return [event];
96
87
  };
@@ -1,5 +1,5 @@
1
1
  import { Transforms, Path, Node } from "slate";
2
- const AvoidCopying = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree", "blockquote"];
2
+ const AvoidCopying = ["headingOne", "headingTwo", "headingThree", "blockquote"];
3
3
  const withEmbeds = editor => {
4
4
  const {
5
5
  isVoid,