@flozy/editor 4.0.7 → 4.0.8

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 (53) hide show
  1. package/dist/Editor/ChatEditor.js +21 -25
  2. package/dist/Editor/CommonEditor.js +3 -0
  3. package/dist/Editor/Editor.css +12 -1
  4. package/dist/Editor/Elements/Accordion/Accordion.js +1 -1
  5. package/dist/Editor/Elements/Accordion/AccordionSummary.js +21 -5
  6. package/dist/Editor/Elements/EmbedScript/Code.js +14 -12
  7. package/dist/Editor/Elements/EmbedScript/EmbedScript.js +7 -115
  8. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +130 -0
  9. package/dist/Editor/Elements/Emoji/EmojiPicker.js +4 -2
  10. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +35 -2
  11. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +8 -2
  12. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +43 -6
  13. package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +4 -0
  14. package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +3 -1
  15. package/dist/Editor/Elements/FreeGrid/styles.js +9 -0
  16. package/dist/Editor/Elements/List/CheckList.js +2 -1
  17. package/dist/Editor/Elements/Table/Table.js +1 -1
  18. package/dist/Editor/Elements/Table/TableCell.js +1 -1
  19. package/dist/Editor/Elements/Table/TableRow.js +2 -1
  20. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +66 -0
  21. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +9 -8
  22. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +8 -4
  23. package/dist/Editor/common/ColorPickerButton.js +12 -4
  24. package/dist/Editor/common/FontLoader/FontLoader.js +68 -0
  25. package/dist/Editor/common/Icon.js +4 -0
  26. package/dist/Editor/common/RnD/ElementOptions/Actions.js +7 -0
  27. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +4 -2
  28. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +47 -0
  29. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +4 -2
  30. package/dist/Editor/common/RnD/ElementSettings/Settings/index.js +3 -1
  31. package/dist/Editor/common/RnD/ElementSettings/settingsConstants.js +4 -2
  32. package/dist/Editor/common/RnD/OptionsPopup/style.js +23 -4
  33. package/dist/Editor/common/RnD/index.js +5 -3
  34. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +2 -1
  35. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +1 -0
  36. package/dist/Editor/common/StyleBuilder/boxStyle.js +31 -0
  37. package/dist/Editor/common/StyleBuilder/buttonStyle.js +1 -0
  38. package/dist/Editor/common/StyleBuilder/embedScriptStyle.js +10 -0
  39. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +15 -9
  40. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +18 -16
  41. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +6 -4
  42. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +19 -3
  43. package/dist/Editor/common/StyleBuilder/formButtonStyle.js +1 -0
  44. package/dist/Editor/common/StyleBuilder/formStyle.js +1 -0
  45. package/dist/Editor/helper/deserialize/index.js +3 -0
  46. package/dist/Editor/helper/index.js +22 -0
  47. package/dist/Editor/helper/theme.js +2 -1
  48. package/dist/Editor/hooks/useMouseMove.js +4 -1
  49. package/dist/Editor/utils/SlateUtilityFunctions.js +4 -10
  50. package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +9 -0
  51. package/dist/Editor/utils/embedScript.js +20 -2
  52. package/dist/Editor/utils/mentions.js +2 -0
  53. package/package.json +2 -1
@@ -61,7 +61,8 @@ const RnD = props => {
61
61
  dragging,
62
62
  setDragging,
63
63
  contextMenu,
64
- setContextMenu
64
+ setContextMenu,
65
+ theme
65
66
  } = useEditorContext();
66
67
  const str_path = path.join("|");
67
68
  const selectedElementProps = isSelectedElement(str_path, type);
@@ -245,7 +246,7 @@ const RnD = props => {
245
246
  });
246
247
  break;
247
248
  default:
248
- handleActionClick(actionType);
249
+ handleActionClick(actionType, path);
249
250
  return;
250
251
  }
251
252
  } catch (err) {
@@ -520,7 +521,8 @@ const RnD = props => {
520
521
  editor: editor,
521
522
  path: sp,
522
523
  ...settingsProps,
523
- elementProps: elementProps
524
+ elementProps: elementProps,
525
+ theme: theme
524
526
  }), /*#__PURE__*/_jsx(DragInfo, {
525
527
  anchorEl: rndRef?.current,
526
528
  open: dragInfoOpen,
@@ -5,7 +5,8 @@ const accordionTitleBtnStyle = [{
5
5
  label: "Accordion Color",
6
6
  key: "accordionTextColor",
7
7
  type: "color",
8
- needPreview: true
8
+ needPreview: true,
9
+ hideGradient: true
9
10
  }, {
10
11
  label: "Accordion Background Color",
11
12
  key: "accordionBgColor",
@@ -54,6 +54,7 @@ const appHeaderStyle = [{
54
54
  label: "Menu Font Family",
55
55
  key: "fontFamily",
56
56
  type: "textOptions",
57
+ webFont: true,
57
58
  width: 7,
58
59
  options: fontOptions,
59
60
  renderOption: option => {
@@ -1,3 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  const boxStyle = [{
2
3
  tab: "Colors",
3
4
  value: "sectionColors",
@@ -25,6 +26,36 @@ const boxStyle = [{
25
26
  label: "Border",
26
27
  key: "sectionBorderRadius",
27
28
  type: "borderRadius"
29
+ }, {
30
+ label: "Border Color",
31
+ key: "borderColor",
32
+ type: "color"
33
+ }, {
34
+ label: "Border Width",
35
+ key: "borderWidth",
36
+ type: "text",
37
+ placeholder: "1px",
38
+ width: 6
39
+ }, {
40
+ label: "Border Style",
41
+ key: "borderStyle",
42
+ type: "textOptions",
43
+ width: 6,
44
+ options: [{
45
+ text: "Solid",
46
+ value: "solid"
47
+ }, {
48
+ text: "Dotted",
49
+ value: "dotted"
50
+ }, {
51
+ text: "Dashed",
52
+ value: "dashed"
53
+ }],
54
+ renderOption: option => {
55
+ return /*#__PURE__*/_jsx("span", {
56
+ children: option.text
57
+ });
58
+ }
28
59
  }]
29
60
  }];
30
61
  export default boxStyle;
@@ -11,6 +11,7 @@ const buttonStyle = [{
11
11
  label: "Font Family",
12
12
  key: "fontFamily",
13
13
  type: "textOptions",
14
+ webFont: true,
14
15
  options: fontOptions,
15
16
  width: 7,
16
17
  renderOption: option => {
@@ -0,0 +1,10 @@
1
+ const embedScriptStyle = [{
2
+ tab: "General",
3
+ value: "general",
4
+ fields: [{
5
+ label: "Embed Code",
6
+ key: "code",
7
+ type: "text"
8
+ }]
9
+ }];
10
+ export default embedScriptStyle;
@@ -89,7 +89,9 @@ const BannerSpacing = props => {
89
89
  value: !lockSpacing ? "" : pro_value?.top,
90
90
  className: "sliderInput",
91
91
  disabled: !lockSpacing,
92
- onChange: handleChange
92
+ onChange: handleChange,
93
+ type: "number",
94
+ placeholder: "0"
93
95
  })]
94
96
  }), /*#__PURE__*/_jsx(FormControlLabel, {
95
97
  className: "ccheckbox-primary",
@@ -131,50 +133,54 @@ const BannerSpacing = props => {
131
133
  children: [/*#__PURE__*/_jsx("div", {
132
134
  className: "bannerSpaceBoxTop",
133
135
  children: /*#__PURE__*/_jsx("input", {
134
- type: "text",
136
+ type: "number",
135
137
  name: "top",
136
138
  value: pro_value?.top,
137
139
  className: "borderInput",
138
140
  style: {
139
141
  ...squreStyle.topRight
140
142
  },
141
- onChange: handleChange
143
+ onChange: handleChange,
144
+ placeholder: "0"
142
145
  })
143
146
  }), /*#__PURE__*/_jsx("div", {
144
147
  className: "bannerSpaceBoxRight",
145
148
  children: /*#__PURE__*/_jsx("input", {
146
- type: "text",
149
+ type: "number",
147
150
  name: "right",
148
151
  value: pro_value?.right,
149
152
  className: "borderInput",
150
153
  style: {
151
154
  ...squreStyle.bottomLeft
152
155
  },
153
- onChange: handleChange
156
+ onChange: handleChange,
157
+ placeholder: "0"
154
158
  })
155
159
  }), /*#__PURE__*/_jsx("div", {
156
160
  className: "bannerSpaceBoxBottom",
157
161
  children: /*#__PURE__*/_jsx("input", {
158
- type: "text",
162
+ type: "number",
159
163
  name: "bottom",
160
164
  value: pro_value?.bottom,
161
165
  className: "borderInput",
162
166
  style: {
163
167
  ...squreStyle.bottomRight
164
168
  },
165
- onChange: handleChange
169
+ onChange: handleChange,
170
+ placeholder: "0"
166
171
  })
167
172
  }), /*#__PURE__*/_jsx("div", {
168
173
  className: "bannerSpaceBoxLeft",
169
174
  children: /*#__PURE__*/_jsx("input", {
170
- type: "text",
175
+ type: "number",
171
176
  name: "left",
172
177
  className: "borderInput",
173
178
  value: pro_value?.left,
174
179
  style: {
175
180
  ...squreStyle.topLeft
176
181
  },
177
- onChange: handleChange
182
+ onChange: handleChange,
183
+ placeholder: "0"
178
184
  })
179
185
  })]
180
186
  })
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { Grid, Typography, Slider, FormControlLabel, Checkbox, Box } from "@mui/material";
3
3
  import { radiusStyle } from "./radiusStyle";
4
4
  import useWindowResize from "../../../hooks/useWindowResize";
5
- import { getBreakPointsValue } from "../../../helper/theme";
5
+ import { getBreakPointsValue, getCustomizationValue } from "../../../helper/theme";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
8
  const BORDER_RADIUS_KEYS = ["topLeft", "topRight", "bottomLeft", "bottomRight"];
@@ -80,11 +80,13 @@ const BorderRadius = props => {
80
80
  }), /*#__PURE__*/_jsx(Box, {
81
81
  sx: classes.sapcingInput,
82
82
  component: "input",
83
- value: !lockRadius ? "" : value?.topLeft || 0,
84
- className: "sliderInput",
83
+ value: !lockRadius ? "" : getCustomizationValue(value?.topLeft),
84
+ className: "sliderInput removeScroll",
85
85
  name: "topLeft",
86
86
  disabled: !lockRadius,
87
- onChange: handleChange
87
+ onChange: handleChange,
88
+ type: "number",
89
+ placeholder: "0"
88
90
  })]
89
91
  }), /*#__PURE__*/_jsx(FormControlLabel, {
90
92
  className: "ccheckbox-primary",
@@ -125,10 +127,10 @@ const BorderRadius = props => {
125
127
  borderRadius: `${value?.topLeft}px ${value?.topRight}px ${value?.bottomLeft}px ${value?.bottomRight}px`
126
128
  },
127
129
  children: [/*#__PURE__*/_jsx("input", {
128
- type: "text",
130
+ type: "number",
129
131
  name: "topLeft",
130
- value: value?.topLeft,
131
- className: "borderInput",
132
+ value: getCustomizationValue(value?.topLeft),
133
+ className: "borderInput removeScroll",
132
134
  placeholder: "0",
133
135
  style: {
134
136
  ...radiusStyle.topLeft,
@@ -136,10 +138,10 @@ const BorderRadius = props => {
136
138
  },
137
139
  onChange: handleChange
138
140
  }), /*#__PURE__*/_jsx("input", {
139
- type: "text",
141
+ type: "number",
140
142
  name: "topRight",
141
- value: value?.topRight,
142
- className: "borderInput",
143
+ value: getCustomizationValue(value?.topRight),
144
+ className: "borderInput removeScroll",
143
145
  placeholder: "0",
144
146
  style: {
145
147
  ...radiusStyle.topRight,
@@ -148,10 +150,10 @@ const BorderRadius = props => {
148
150
  },
149
151
  onChange: handleChange
150
152
  }), /*#__PURE__*/_jsx("input", {
151
- type: "text",
153
+ type: "number",
152
154
  name: "bottomLeft",
153
- value: value?.bottomLeft,
154
- className: "borderInput",
155
+ value: getCustomizationValue(value?.bottomLeft),
156
+ className: "borderInput removeScroll",
155
157
  placeholder: "0",
156
158
  style: {
157
159
  ...radiusStyle.bottomLeft,
@@ -160,10 +162,10 @@ const BorderRadius = props => {
160
162
  },
161
163
  onChange: handleChange
162
164
  }), /*#__PURE__*/_jsx("input", {
163
- type: "text",
165
+ type: "number",
164
166
  name: "bottomRight",
165
- value: value?.bottomRight,
166
- className: "borderInput",
167
+ value: getCustomizationValue(value?.bottomRight),
168
+ className: "borderInput removeScroll",
167
169
  placeholder: "0",
168
170
  style: {
169
171
  ...radiusStyle.bottomRight,
@@ -12,11 +12,12 @@ const Color = props => {
12
12
  } = props;
13
13
  const {
14
14
  key,
15
- label
15
+ label,
16
+ hideGradient
16
17
  } = data;
17
18
  const [recentColors, setRecentColors] = useState({});
18
19
  useEffect(() => {
19
- const storedColors = JSON.parse(localStorage.getItem('recentColors'));
20
+ const storedColors = JSON.parse(localStorage.getItem("recentColors"));
20
21
  if (storedColors) {
21
22
  setRecentColors(storedColors);
22
23
  }
@@ -39,7 +40,7 @@ const Color = props => {
39
40
  [key]: updatedColors
40
41
  };
41
42
  setRecentColors(updatedColors);
42
- localStorage.setItem('recentColors', JSON.stringify(updatedColors));
43
+ localStorage.setItem("recentColors", JSON.stringify(updatedColors));
43
44
  };
44
45
  return /*#__PURE__*/_jsxs(Grid, {
45
46
  item: true,
@@ -68,7 +69,8 @@ const Color = props => {
68
69
  classes: classes,
69
70
  value: value,
70
71
  onSave: onSave,
71
- recentColors: recentColors[key]
72
+ recentColors: recentColors[key],
73
+ hideGradient: hideGradient
72
74
  })
73
75
  })
74
76
  }
@@ -2,6 +2,9 @@ import React from "react";
2
2
  import { FormControl, Grid, ListItemIcon, ListSubheader, MenuItem, Select, Typography } from "@mui/material";
3
3
  import { getBreakPointsValue } from "../../../helper/theme";
4
4
  import useWindowResize from "../../../hooks/useWindowResize";
5
+ import { useEditorContext } from "../../../hooks/useMouseMove";
6
+ import FontFamilyAutocomplete from "../../../Toolbar/FormatTools/FontFamilyAutocomplete";
7
+ import { useSlate } from "slate-react";
5
8
  import { jsx as _jsx } from "react/jsx-runtime";
6
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
7
10
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -22,12 +25,17 @@ const TextOptions = props => {
22
25
  isBreakpoint,
23
26
  options,
24
27
  renderOption,
25
- width
28
+ width,
29
+ webFont = false
26
30
  } = data;
31
+ const {
32
+ fontFamilies
33
+ } = useEditorContext();
34
+ const editor = useSlate();
27
35
  const [size] = useWindowResize();
28
36
  const value = isBreakpoint ? getBreakPointsValue(val, size?.device) : val;
29
37
  const metaDataMappingOptions = metaMappings?.boards || [];
30
- const updatedOption = elementProps?.metadatamapping ? [...options, ...metaDataMappingOptions] : options;
38
+ const updatedOption = elementProps?.metadatamapping ? [...options, ...metaDataMappingOptions] : webFont ? fontFamilies?.options : options;
31
39
  const handleChange = (e, d) => {
32
40
  if (isBreakpoint) {
33
41
  onChange({
@@ -69,7 +77,7 @@ const TextOptions = props => {
69
77
  },
70
78
  fullWidth: true,
71
79
  size: "small",
72
- children: /*#__PURE__*/_jsx(Select, {
80
+ children: !webFont ? /*#__PURE__*/_jsx(Select, {
73
81
  onChange: handleChange,
74
82
  value: value || updatedOption[0]?.value,
75
83
  placeholder: data?.label,
@@ -94,6 +102,14 @@ const TextOptions = props => {
94
102
  }), renderOption ? renderOption(m, elementProps) : m.label || m.text]
95
103
  }, `${key}_${i}`);
96
104
  })
105
+ }) : /*#__PURE__*/_jsx(FontFamilyAutocomplete, {
106
+ editor: editor,
107
+ format: key,
108
+ options: fontFamilies.options,
109
+ width: '100%',
110
+ onChange: onChange,
111
+ val: value,
112
+ webFont: true
97
113
  })
98
114
  })]
99
115
  })
@@ -16,6 +16,7 @@ const formButtonStyle = [{
16
16
  label: "Font Family",
17
17
  key: "fontFamily",
18
18
  type: "textOptions",
19
+ webFont: true,
19
20
  options: fontOptions,
20
21
  renderOption: option => {
21
22
  return /*#__PURE__*/_jsx("span", {
@@ -31,6 +31,7 @@ const formStyle = [{
31
31
  key: "fontFamily",
32
32
  type: "textOptions",
33
33
  options: fontOptions,
34
+ webFont: true,
34
35
  width: 7,
35
36
  renderOption: option => {
36
37
  return /*#__PURE__*/_jsx("span", {
@@ -59,6 +59,9 @@ const ELEMENT_TAGS = {
59
59
  P: () => ({
60
60
  type: "paragraph"
61
61
  }),
62
+ DIV: () => ({
63
+ type: "paragraph"
64
+ }),
62
65
  PRE: () => ({
63
66
  type: "code"
64
67
  }),
@@ -294,4 +294,26 @@ export const debounce = function (func, wait, immediate) {
294
294
  timeout = setTimeout(later, wait);
295
295
  if (callNow) func.apply(context, args);
296
296
  };
297
+ };
298
+ export const getTextColor = (color = "") => {
299
+ return color?.indexOf("gradient") >= 0 ? {
300
+ background: color?.concat("text"),
301
+ WebkitBackgroundClip: "text",
302
+ WebkitTextFillColor: "transparent",
303
+ color: "transparent",
304
+ caretColor: "black"
305
+ } : {
306
+ color
307
+ };
308
+ };
309
+ export const getBorderColor = (borderColor = "") => {
310
+ const borderStyle = borderColor ? {
311
+ border: "1px solid"
312
+ } : {};
313
+ if (borderColor?.indexOf("gradient") >= 0) {
314
+ borderStyle.borderImage = `${borderColor} 1`;
315
+ } else {
316
+ borderStyle.borderColor = borderColor;
317
+ }
318
+ return borderStyle;
297
319
  };
@@ -146,4 +146,5 @@ export const groupByBreakpoint = (styleProps, theme) => {
146
146
  ...groupedXS
147
147
  }
148
148
  };
149
- };
149
+ };
150
+ export const getCustomizationValue = value => isNaN(parseInt(value)) ? null : parseInt(value);
@@ -34,6 +34,7 @@ export const EditorProvider = ({
34
34
  const [contextMenu, setContextMenu] = useState({
35
35
  path: null
36
36
  });
37
+ const [fontFamilies, setFontFamilies] = useState({});
37
38
  useEffect(() => {
38
39
  window.updateSelectedItem = d => {
39
40
  setSelectedElement(d);
@@ -82,7 +83,9 @@ export const EditorProvider = ({
82
83
  setContextMenu,
83
84
  contextMenu,
84
85
  openAI,
85
- setOpenAI
86
+ setOpenAI,
87
+ fontFamilies,
88
+ setFontFamilies
86
89
  },
87
90
  children: children
88
91
  });
@@ -1,6 +1,6 @@
1
1
  import { Editor, Transforms, Element as SlateElement } from "slate";
2
2
  import { Box } from "@mui/material";
3
- import { fontFamilyMap, sizeMap } from "./font";
3
+ import { sizeMap } from "./font";
4
4
  import Link from "../Elements/Link/Link";
5
5
  import Image from "../Elements/Embed/Image";
6
6
  import Video from "../Elements/Embed/Video";
@@ -32,7 +32,7 @@ import FormField from "../Elements/Form/FormField";
32
32
  import InlineIcon from "../Elements/InlineIcon/InlineIcon";
33
33
  import SimpleText from "../Elements/SimpleText";
34
34
  import CheckList from "../Elements/List/CheckList";
35
- import { isEmptyTextNode } from "../helper";
35
+ import { getTextColor, isEmptyTextNode } from "../helper";
36
36
  import Attachments from "../Elements/Attachments/Attachments";
37
37
  import { getBreakPointsValue } from "../helper/theme";
38
38
  import Variables from "../Elements/Variables/Variable";
@@ -206,14 +206,8 @@ export const getMarked = (leaf, children, theme) => {
206
206
  }
207
207
  // cover under single span
208
208
  if (leaf.color || leaf.bgColor || leaf.fontSize || leaf.fontFamily || leaf.fontWeight || className) {
209
- const family = fontFamilyMap[leaf?.fontFamily];
210
- const textStyles = leaf?.color?.indexOf("gradient") >= 0 ? {
211
- background: leaf?.color?.concat("text"),
212
- WebkitBackgroundClip: "text",
213
- WebkitTextFillColor: "transparent"
214
- } : {
215
- color: leaf.color
216
- };
209
+ const family = leaf?.fontFamily;
210
+ const textStyles = getTextColor(leaf?.color);
217
211
  children = /*#__PURE__*/_jsx("span", {
218
212
  style: {
219
213
  background: leaf.bgColor
@@ -321,6 +321,15 @@ export const getBlock = props => {
321
321
  ...attributes,
322
322
  children: children
323
323
  });
324
+ case "link":
325
+ return /*#__PURE__*/_jsx("p", {
326
+ ...attributes,
327
+ ...element.attr,
328
+ className: `content-editable ${isEmpty ? "empty" : ""}`
329
+ // placeholder="paragraph"
330
+ ,
331
+ children: children
332
+ });
324
333
  case "unorderedList":
325
334
  return /*#__PURE__*/_jsx("ul", {
326
335
  ...attributes,
@@ -9,9 +9,10 @@ export const createEmbedScript = embedData => ({
9
9
  }],
10
10
  isEncoded: true,
11
11
  // to handle the old code's that already inserted
12
- isSanitized: true // to handle the old code's that already inserted
12
+ isSanitized: true,
13
+ // to handle the old code's that already inserted
14
+ updatedOn: new Date().getTime()
13
15
  });
14
-
15
16
  export const insertEmbedScript = (editor, embedData) => {
16
17
  try {
17
18
  const embed = createEmbedScript(embedData);
@@ -22,4 +23,21 @@ export const insertEmbedScript = (editor, embedData) => {
22
23
  } catch (err) {
23
24
  console.log(err);
24
25
  }
26
+ };
27
+ export const updateEmbedScript = (editor, embedData, updatePath = null, parentPath = null) => {
28
+ try {
29
+ Transforms.setNodes(editor, {
30
+ embedData: encodeString(embedData),
31
+ updatedOn: new Date().getTime()
32
+ }, {
33
+ at: updatePath
34
+ });
35
+ Transforms.setNodes(editor, {
36
+ lg_updatedOn: new Date().getTime()
37
+ }, {
38
+ at: parentPath
39
+ });
40
+ } catch (err) {
41
+ console.log(err);
42
+ }
25
43
  };
@@ -1,4 +1,5 @@
1
1
  import { Transforms } from "slate";
2
+ import { ReactEditor } from 'slate-react';
2
3
  export const insertMention = (editor, character, type) => {
3
4
  if (type === "mentions") {
4
5
  const mention = {
@@ -9,6 +10,7 @@ export const insertMention = (editor, character, type) => {
9
10
  }]
10
11
  };
11
12
  Transforms.insertNodes(editor, mention);
13
+ ReactEditor.focus(editor);
12
14
  Transforms.move(editor);
13
15
  } else if (type === "elements" && character && character.onInsert) {
14
16
  character.onInsert(editor);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "4.0.7",
3
+ "version": "4.0.8",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -49,6 +49,7 @@
49
49
  "use-debounce": "^10.0.0",
50
50
  "wavesurfer.js": "^7.8.6",
51
51
  "web-vitals": "^2.1.4",
52
+ "webfontloader": "^1.6.28",
52
53
  "y-websocket": "^1.5.0",
53
54
  "yjs": "^13.6.8"
54
55
  },