@flozy/editor 5.9.7 → 5.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/Editor/CommonEditor.js +15 -17
  2. package/dist/Editor/Editor.css +1 -1
  3. package/dist/Editor/Elements/AI/PopoverAIInput.js +2 -12
  4. package/dist/Editor/Elements/Button/EditorButton.js +1 -0
  5. package/dist/Editor/Elements/DataView/DataView.js +4 -3
  6. package/dist/Editor/Elements/DataView/Layouts/DataTypes/NumberType.js +5 -1
  7. package/dist/Editor/Elements/DataView/Layouts/DataTypes/TextType.js +5 -1
  8. package/dist/Editor/Elements/DataView/Layouts/FilterView.js +23 -19
  9. package/dist/Editor/Elements/Form/Form.js +1 -0
  10. package/dist/Editor/Elements/FreeGrid/styles.js +1 -0
  11. package/dist/Editor/Elements/List/CheckList.js +2 -1
  12. package/dist/Editor/Elements/Search/SearchAttachment.js +1 -0
  13. package/dist/Editor/Elements/Search/SearchList.js +8 -1
  14. package/dist/Editor/Elements/SimpleText/index.js +19 -7
  15. package/dist/Editor/Elements/SimpleText/style.js +5 -1
  16. package/dist/Editor/Elements/Table/Table.js +3 -3
  17. package/dist/Editor/Elements/Table/TableCell.js +14 -9
  18. package/dist/Editor/MiniEditor.js +4 -2
  19. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +37 -28
  20. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectAlignment.js +3 -1
  21. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +1 -1
  22. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +3 -1
  23. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +1 -1
  24. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +9 -3
  25. package/dist/Editor/Toolbar/PopupTool/TemplateCard.js +1 -1
  26. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +45 -0
  27. package/dist/Editor/Toolbar/PopupTool/index.js +39 -29
  28. package/dist/Editor/common/FontLoader/FontList.js +11 -11
  29. package/dist/Editor/common/FontLoader/FontLoader.js +45 -75
  30. package/dist/Editor/common/ImageSelector/UploadStyles.js +2 -1
  31. package/dist/Editor/common/RnD/ElementSettings/styles.js +1 -0
  32. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +6 -0
  33. package/dist/Editor/common/Section/index.js +89 -60
  34. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  35. package/dist/Editor/common/StyleBuilder/fieldTypes/lineSpacing.js +79 -0
  36. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +4 -0
  37. package/dist/Editor/commonStyle.js +5 -0
  38. package/dist/Editor/helper/ensureWrappedVariables.js +28 -0
  39. package/dist/Editor/helper/theme.js +24 -1
  40. package/dist/Editor/hooks/useEditorScroll.js +1 -1
  41. package/dist/Editor/hooks/useMouseMove.js +6 -4
  42. package/dist/Editor/utils/SlateUtilityFunctions.js +10 -9
  43. package/dist/Editor/utils/customHooks/useTableResize.js +2 -1
  44. package/dist/Editor/utils/helper.js +41 -0
  45. package/dist/Editor/utils/pageSettings.js +14 -2
  46. package/dist/Editor/utils/table.js +21 -0
  47. package/package.json +2 -2
@@ -3,6 +3,7 @@ import PersonalVideoIcon from "@mui/icons-material/PersonalVideo";
3
3
  import PhoneIphoneIcon from "@mui/icons-material/PhoneIphone";
4
4
  import useSwitchViewport from "./styles";
5
5
  import { useEffect } from "react";
6
+ import { useEditorContext } from "../../../hooks/useMouseMove";
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
9
  const SwitchViewport = props => {
@@ -11,6 +12,9 @@ const SwitchViewport = props => {
11
12
  onChange
12
13
  } = props;
13
14
  const classes = useSwitchViewport();
15
+ const {
16
+ setActiveBreakPoint
17
+ } = useEditorContext();
14
18
  useEffect(() => {
15
19
  console.log(breakpoint);
16
20
  }, [breakpoint]);
@@ -21,6 +25,7 @@ const SwitchViewport = props => {
21
25
  children: /*#__PURE__*/_jsx(IconButton, {
22
26
  className: `${!breakpoint || breakpoint === "lg" ? "active" : ""}`,
23
27
  onClick: () => {
28
+ setActiveBreakPoint("");
24
29
  onChange("");
25
30
  },
26
31
  children: /*#__PURE__*/_jsx(PersonalVideoIcon, {})
@@ -30,6 +35,7 @@ const SwitchViewport = props => {
30
35
  children: /*#__PURE__*/_jsx(IconButton, {
31
36
  className: `${breakpoint === "xs" ? "active" : ""}`,
32
37
  onClick: () => {
38
+ setActiveBreakPoint("xs");
33
39
  onChange("xs");
34
40
  },
35
41
  children: /*#__PURE__*/_jsx(PhoneIphoneIcon, {})
@@ -2,34 +2,36 @@ import React, { useRef, useState } from "react";
2
2
  import { useTheme } from "@mui/material";
3
3
  import { Transforms } from "slate";
4
4
  import { ReactEditor, useSlateStatic } from "slate-react";
5
- import { Box, IconButton, Tooltip } from "@mui/material";
5
+ import { Box, IconButton, Popper, Tooltip } from "@mui/material";
6
6
  import SectionPopup from "../../Elements/Grid/SectionPopup";
7
7
  import { getBreakPointsValue, getTRBLBreakPoints, groupByBreakpoint } from "../../helper/theme";
8
- // import DragHandle from "../DnD/DragHandleButton";
9
- // import { useEditorSelection } from "../../hooks/useMouseMove";
8
+ import DragHandle from "../DnD/DragHandleButton";
9
+ import { useEditorSelection } from "../../hooks/useMouseMove";
10
10
  import SectionStyle from "./styles";
11
11
  import useWindowResize from "../../hooks/useWindowResize";
12
12
  import { SectionSettingIcon } from "../iconListV2";
13
-
14
- // const list_types = ["orderedList", "unorderedList"];
15
13
  import { jsx as _jsx } from "react/jsx-runtime";
16
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
+ import { Fragment as _Fragment } from "react/jsx-runtime";
17
16
  const Toolbar = ({
17
+ fromPopper,
18
18
  readOnly,
19
19
  showTool,
20
- onSettings,
21
- isSectionFullWidth
20
+ onSettings
22
21
  }) => {
23
22
  return !readOnly && !showTool ? /*#__PURE__*/_jsx(Box, {
24
23
  component: "div",
25
24
  className: `element-toolbar no-border-button hr section-tw sectionIcon`,
26
25
  contentEditable: false,
27
- sx: {
28
- left: isSectionFullWidth ? "0px" : "-28px",
29
- top: isSectionFullWidth ? "-28px" : "1px",
30
- "&:hover": {
31
- backgroundColor: "rgba(0,0,0,0.5)"
32
- }
26
+ style: fromPopper ? {
27
+ position: "unset",
28
+ marginLeft: "28px",
29
+ paddingTop: "4px",
30
+ marginRight: "10px",
31
+ height: "100%"
32
+ } : {
33
+ left: "-28px",
34
+ top: "1px"
33
35
  },
34
36
  children: /*#__PURE__*/_jsx(Tooltip, {
35
37
  title: "Section Settings",
@@ -40,6 +42,7 @@ const Toolbar = ({
40
42
  })
41
43
  }) : null;
42
44
  };
45
+ const list_types = ["orderedList", "unorderedList"];
43
46
  const Section = props => {
44
47
  const themeReact = useTheme();
45
48
  const theme = props?.theme;
@@ -53,8 +56,7 @@ const Section = props => {
53
56
  readOnly
54
57
  } = customProps;
55
58
  const editor = useSlateStatic();
56
- // const [isHovering, setIsHovering] = useState(false);
57
- const [size] = useWindowResize();
59
+ const [showTool] = useEditorSelection(editor);
58
60
  const [openSetttings, setOpenSettings] = useState(false);
59
61
  const {
60
62
  sectionBgColor,
@@ -71,43 +73,16 @@ const Section = props => {
71
73
  } = sectionAlignment || {};
72
74
  const path = ReactEditor.findPath(editor, element);
73
75
  const anchorEl = useRef(null);
74
- // const popperEl = useRef(null);
75
- // const [showTool] = useEditorSelection(editor);
76
+ const popperEl = useRef(null);
77
+ const [size] = useWindowResize();
76
78
  const isSectionFullWidth = sectionGridSize && sectionGridSize[size?.device] >= 12;
77
- const isFreeGrid = element?.children[0]?.type === "freegrid";
78
- const needHover = false;
79
- let tempProps = {};
80
- if (element?.type === "temp") {
81
- tempProps = {
82
- "--left": `${element?.left}px`,
83
- "--top": `${element?.top}px`
84
- };
85
- }
86
- const sectionBgImage = sectionBackgroundImage && sectionBackgroundImage !== "none" ? {
87
- backgroundImage: `url(${sectionBackgroundImage})`
88
- } : {};
89
- const edSectionSp = groupByBreakpoint({
90
- padding: {
91
- ...getTRBLBreakPoints(sectionBannerSpacing)
92
- },
93
- borderRadius: {
94
- ...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
95
- }
96
- }, themeReact);
97
- const edInnerSp = groupByBreakpoint({
98
- width: {
99
- ...getBreakPointsValue(sectionGridSize || 8, null, "overrideGridSize", true)
100
- }
101
- }, themeReact);
102
-
103
- // const onMouseEnter = () => {
104
- // setIsHovering(true);
105
- // };
106
-
107
- // const onMouseLeave = () => {
108
- // setIsHovering(false);
109
- // };
110
-
79
+ const [isHovering, setIsHovering] = useState(false);
80
+ const onMouseEnter = () => {
81
+ setIsHovering(true);
82
+ };
83
+ const onMouseLeave = () => {
84
+ setIsHovering(false);
85
+ };
111
86
  const onSettings = () => {
112
87
  setOpenSettings(true);
113
88
  };
@@ -131,6 +106,31 @@ const Section = props => {
131
106
  at: path
132
107
  });
133
108
  };
109
+ const isFreeGrid = element?.children?.find(f => f.type === "freegrid");
110
+ const needHover = element?.children?.find(f => f.type === "grid" && !list_types.includes(element.type)) ? "" : "";
111
+ let tempProps = {};
112
+ if (element?.type === "temp") {
113
+ tempProps = {
114
+ "--left": `${element?.left}px`,
115
+ "--top": `${element?.top}px`
116
+ };
117
+ }
118
+ const sectionBgImage = sectionBackgroundImage && sectionBackgroundImage !== "none" ? {
119
+ backgroundImage: `url(${sectionBackgroundImage})`
120
+ } : {};
121
+ const edSectionSp = groupByBreakpoint({
122
+ padding: {
123
+ ...getTRBLBreakPoints(sectionBannerSpacing)
124
+ },
125
+ borderRadius: {
126
+ ...getBreakPointsValue(sectionBorderRadius || {}, null, "overrideBorderRadius", true)
127
+ }
128
+ }, themeReact);
129
+ const edInnerSp = groupByBreakpoint({
130
+ width: {
131
+ ...getBreakPointsValue(sectionGridSize || 8, null, "overrideGridSize", true)
132
+ }
133
+ }, themeReact);
134
134
  return path.length === 1 && !isFreeGrid ? /*#__PURE__*/_jsxs(Box, {
135
135
  component: "div",
136
136
  className: `ed-section-wrapper ${readOnly ? "" : "hselect"} ${needHover} is-${element?.type}`,
@@ -145,10 +145,9 @@ const Section = props => {
145
145
  flexDirection: flexDirection || "column",
146
146
  alignItems: horizantal,
147
147
  justifyContent: vertical
148
- }
149
- // onMouseEnter={onMouseEnter}
150
- // onMouseLeave={onMouseLeave}
151
- ,
148
+ },
149
+ onMouseEnter: onMouseEnter,
150
+ onMouseLeave: onMouseLeave,
152
151
  children: [/*#__PURE__*/_jsxs(Box, {
153
152
  className: "ed-section-inner",
154
153
  sx: {
@@ -156,11 +155,41 @@ const Section = props => {
156
155
  ...edInnerSp
157
156
  },
158
157
  ref: anchorEl,
159
- children: [/*#__PURE__*/_jsx(Toolbar, {
160
- isSectionFullWidth: isSectionFullWidth,
161
- readOnly: readOnly,
162
- showTool: false,
163
- onSettings: onSettings
158
+ children: [isHovering && isSectionFullWidth ? /*#__PURE__*/_jsx(Popper, {
159
+ open: isHovering && isSectionFullWidth,
160
+ anchorEl: anchorEl?.current,
161
+ placement: "top-start",
162
+ sx: {
163
+ zIndex: 9999
164
+ },
165
+ disablePortal: true,
166
+ ref: popperEl,
167
+ className: "sectionPopper",
168
+ children: /*#__PURE__*/_jsxs(Box, {
169
+ sx: {
170
+ bgcolor: "background.paper",
171
+ height: "30px",
172
+ position: "relative",
173
+ background: theme?.palette?.type === "dark" ? theme?.palette?.editor?.miniToolBarBackground : "#F6F6F6"
174
+ },
175
+ children: [!readOnly && !showTool ? /*#__PURE__*/_jsx(DragHandle, {
176
+ ...props,
177
+ fromPopper: true
178
+ }) : null, /*#__PURE__*/_jsx(Toolbar, {
179
+ fromPopper: true,
180
+ readOnly: readOnly,
181
+ showTool: showTool,
182
+ onSettings: onSettings
183
+ })]
184
+ })
185
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
186
+ children: [!readOnly && !showTool ? /*#__PURE__*/_jsx(DragHandle, {
187
+ ...props
188
+ }) : null, /*#__PURE__*/_jsx(Toolbar, {
189
+ readOnly: readOnly,
190
+ showTool: showTool,
191
+ onSettings: onSettings
192
+ })]
164
193
  }), children]
165
194
  }), openSetttings ? /*#__PURE__*/_jsx(SectionPopup, {
166
195
  element: {
@@ -18,6 +18,7 @@ import FontSize from "./fontSize";
18
18
  import SelectSwitch from "./selectSwitch";
19
19
  import CardsMapping from "./card";
20
20
  import MetaDataMapping from "./metaDataMapping";
21
+ import LineSpacing from "./lineSpacing";
21
22
  const FieldMap = {
22
23
  text: Text,
23
24
  bannerSpacing: BannerSpacing,
@@ -38,6 +39,7 @@ const FieldMap = {
38
39
  fontSize: FontSize,
39
40
  selectSwitch: SelectSwitch,
40
41
  card: CardsMapping,
41
- metadatamapping: MetaDataMapping
42
+ metadatamapping: MetaDataMapping,
43
+ lineSpacing: LineSpacing
42
44
  };
43
45
  export default FieldMap;
@@ -0,0 +1,79 @@
1
+ import React, { useState } from "react";
2
+ import { Grid, Slider, Typography, Box } from "@mui/material";
3
+ import { getBreakPointsValue } from "../../../helper/theme";
4
+ import useWindowResize from "../../../hooks/useWindowResize";
5
+ import { useEditorContext } from "../../../hooks/useMouseMove";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ const LineSpacing = props => {
9
+ const {
10
+ value: val,
11
+ data,
12
+ onChange
13
+ } = props;
14
+ const {
15
+ theme
16
+ } = useEditorContext();
17
+ const {
18
+ key
19
+ } = data;
20
+ const [size] = useWindowResize();
21
+ const pro_value = getBreakPointsValue(val, size?.device);
22
+ const [value, setValue] = useState(pro_value);
23
+ let breakpointValue = getBreakPointsValue(val, null);
24
+ breakpointValue = typeof breakpointValue['lg'] === 'object' ? breakpointValue['lg'] : breakpointValue;
25
+ useState(() => {
26
+ setValue(pro_value);
27
+ }, [pro_value]);
28
+ const handleChange = e => {
29
+ onChange({
30
+ [key]: {
31
+ ...breakpointValue,
32
+ [size?.device]: e.target.value
33
+ }
34
+ });
35
+ };
36
+ return /*#__PURE__*/_jsxs(Grid, {
37
+ item: true,
38
+ xs: 12,
39
+ children: [/*#__PURE__*/_jsx(Typography, {
40
+ variant: "body1",
41
+ color: "primary",
42
+ style: {
43
+ fontSize: "14px",
44
+ fontWeight: 500
45
+ },
46
+ children: data?.label
47
+ }), /*#__PURE__*/_jsxs(Grid, {
48
+ container: true,
49
+ wrap: "nowrap",
50
+ className: "sld-wrpr",
51
+ children: [/*#__PURE__*/_jsx(Slider, {
52
+ className: "spacingSlider",
53
+ defaultValue: value || 1.43,
54
+ "aria-label": "Default",
55
+ valueLabelDisplay: "auto",
56
+ min: 0.5,
57
+ max: 3.0,
58
+ step: 0.1,
59
+ name: "lineHeight",
60
+ onChange: handleChange
61
+ }), /*#__PURE__*/_jsx(Box, {
62
+ component: "input",
63
+ sx: {
64
+ background: theme?.palette?.editor?.background,
65
+ color: theme?.palette?.editor?.textColor
66
+ },
67
+ name: "lineHeight",
68
+ value: pro_value,
69
+ className: "sliderInput",
70
+ onChange: handleChange,
71
+ type: "number",
72
+ placeholder: "0",
73
+ disabled: true,
74
+ defaultValue: pro_value || 1.43
75
+ })]
76
+ })]
77
+ });
78
+ };
79
+ export default LineSpacing;
@@ -25,6 +25,10 @@ const pageSettingsStyle = [{
25
25
  label: "Padding",
26
26
  key: "bannerSpacing",
27
27
  type: "bannerSpacing"
28
+ }, {
29
+ label: "Line Spacing",
30
+ key: "lineHeight",
31
+ type: "lineSpacing"
28
32
  }]
29
33
  }, {
30
34
  tab: "Max Width",
@@ -49,6 +49,11 @@ const useCommonStyle = theme => ({
49
49
  fontWeight: "500",
50
50
  fontFamily: "Inter, sans-serif"
51
51
  },
52
+ "& .MuiPaper-root": {
53
+ border: `unset !important`,
54
+ borderRadius: '0px',
55
+ height: 'fit-content'
56
+ },
52
57
  "& p": {
53
58
  marginBottom: "7px",
54
59
  marginTop: "4px"
@@ -0,0 +1,28 @@
1
+ export const ensureWrappedVariables = content => {
2
+ return content.map(node => {
3
+ if (node.children) {
4
+ return {
5
+ ...node,
6
+ children: node.children.reduce((result, child, index, arr) => {
7
+ if (child.type === "variables") {
8
+ if (index === 0 || !arr[index - 1].text || arr[index - 1].text.trim() === "") {
9
+ result.push({
10
+ text: ""
11
+ });
12
+ }
13
+ result.push(child);
14
+ if (index === arr.length - 1 || !arr[index + 1]?.text || arr[index + 1]?.text.trim() === "") {
15
+ result.push({
16
+ text: ""
17
+ });
18
+ }
19
+ } else {
20
+ result.push(child);
21
+ }
22
+ return result;
23
+ }, [])
24
+ };
25
+ }
26
+ return node;
27
+ });
28
+ };
@@ -161,4 +161,27 @@ export const groupByBreakpoint = (styleProps, theme) => {
161
161
  }
162
162
  };
163
163
  };
164
- export const getCustomizationValue = value => isNaN(parseInt(value)) ? null : parseInt(value);
164
+ export const getCustomizationValue = value => isNaN(parseInt(value)) ? null : parseInt(value);
165
+ export const getBreakpointLineSpacing = (value, breakpoint) => {
166
+ try {
167
+ const values = getBreakPointsValue(value, breakpoint);
168
+ const cssVal = BREAKPOINTS_DEVICES.reduce((a, b) => {
169
+ if (values[b] || values["lg"]) {
170
+ const value = values[b] || values["lg"];
171
+ return {
172
+ ...a,
173
+ [b]: value
174
+ };
175
+ } else {
176
+ return a;
177
+ }
178
+ }, {});
179
+ if (breakpoint) {
180
+ return value[breakpoint] || value["lg"] || value;
181
+ } else {
182
+ return cssVal["lg"];
183
+ }
184
+ } catch (err) {
185
+ // console.log(err);
186
+ }
187
+ };
@@ -5,7 +5,7 @@ function useEditorScroll(editorWrapper = {
5
5
  useEffect(() => {
6
6
  const handleScroll = () => {
7
7
  if (editorWrapper.current) {
8
- callback("scroll");
8
+ callback();
9
9
  }
10
10
  };
11
11
  const currentEditorWrapper = editorWrapper.current;
@@ -1,7 +1,6 @@
1
1
  import { useEffect, useState, createContext, useContext, useMemo } from "react";
2
2
  import { getSelectedText } from "../utils/helper";
3
3
  import { debounce } from "../helper";
4
- import { defaultFontFamilies } from "../common/FontLoader/FontList";
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
5
  const EditorContext = /*#__PURE__*/createContext();
7
6
  export const useEditorSelection = editor => {
@@ -35,7 +34,8 @@ export const EditorProvider = ({
35
34
  const [contextMenu, setContextMenu] = useState({
36
35
  path: null
37
36
  });
38
- const [fontFamilies, setFontFamilies] = useState(defaultFontFamilies);
37
+ const [fontFamilies, setFontFamilies] = useState({});
38
+ const [activeBreakPoint, setActiveBreakPoint] = useState("");
39
39
  useEffect(() => {
40
40
  window.updateSelectedItem = d => {
41
41
  setSelectedElement(d);
@@ -98,8 +98,10 @@ export const EditorProvider = ({
98
98
  setOpenAI,
99
99
  updateDragging,
100
100
  fontFamilies,
101
- setFontFamilies
102
- }), [path, editor?.selection, selectedPath, selectedElement, contextMenu, openAI, popupType, drop]);
101
+ setFontFamilies,
102
+ activeBreakPoint,
103
+ setActiveBreakPoint
104
+ }), [path, editor?.selection, selectedPath, selectedElement, contextMenu, openAI, popupType, drop, activeBreakPoint]);
103
105
  return /*#__PURE__*/_jsx(EditorContext.Provider, {
104
106
  value: otherValues,
105
107
  children: children
@@ -173,10 +173,9 @@ export const getMarked = (leaf, children, theme) => {
173
173
  if (leaf.highlight) {
174
174
  children = /*#__PURE__*/_jsx("span", {
175
175
  style: {
176
- color: "inherit"
176
+ color: "inherit",
177
+ background: "var(--slate-highlight-bg)"
177
178
  },
178
- className: "slate-highlight" // while opening AI, we will use this element to highlight the selection. (PopoverAIInput.js)
179
- ,
180
179
  children: children
181
180
  });
182
181
  }
@@ -338,7 +337,8 @@ export const getBlock = props => {
338
337
  borderRadius: `${element?.color ? "0px" : "12px"} 12px 12px ${element?.color ? "0px" : "12px"}`,
339
338
  margin: `${element?.bgColor ? "16px" : "0px"} 0px`,
340
339
  width: element?.bgColor ? "calc(100% - 16px)" : "100%",
341
- borderWidth: element?.color ? "0px 0px 0px 3px" : "0px"
340
+ borderWidth: element?.color ? "0px 0px 0px 3px" : "0px",
341
+ lineHeight: 1.43
342
342
  },
343
343
  children: children
344
344
  });
@@ -398,6 +398,9 @@ export const getBlock = props => {
398
398
  });
399
399
  case "orderedList":
400
400
  return /*#__PURE__*/_jsx("ol", {
401
+ style: {
402
+ lineHeight: 1.43
403
+ },
401
404
  className: "listItemMargin",
402
405
  type: "1",
403
406
  ...attributes,
@@ -405,6 +408,9 @@ export const getBlock = props => {
405
408
  });
406
409
  case "unorderedList":
407
410
  return /*#__PURE__*/_jsx("ul", {
411
+ style: {
412
+ lineHeight: 1.43
413
+ },
408
414
  className: "listItemMargin",
409
415
  ...attributes,
410
416
  children: children
@@ -614,11 +620,6 @@ export const getBlock = props => {
614
620
  children: children
615
621
  });
616
622
  default:
617
- // return (
618
- // <span {...attributes} {...element.attr}>
619
- // {children}
620
- // </span>
621
- // );
622
623
  return /*#__PURE__*/_jsx(SimpleText, {
623
624
  ...props,
624
625
  isEmpty: isEmpty
@@ -43,7 +43,8 @@ const useTableResize = ({
43
43
  minWidth
44
44
  } = minMaxProps || {};
45
45
  setSize(currentSize => {
46
- const calcWidth = currentSize?.width + e.movementX;
46
+ const width = currentSize?.width || parentDOM?.clientWidth;
47
+ const calcWidth = width + e.movementX;
47
48
  return {
48
49
  width: minWidth && calcWidth < minWidth ? minWidth : calcWidth,
49
50
  height: currentSize.height + e.movementY,
@@ -713,6 +713,47 @@ export const getSlateDom = (editor, range) => {
713
713
  console.log(err);
714
714
  }
715
715
  };
716
+
717
+ // The inputs inside the dynamic table lose focus after calling `setNodes` on the first `onChange` event.
718
+ // To replicate this issue, insert some paragraph nodes above the dynamic table, then type something in the title.
719
+ // After typing the first word, the input loses focus.
720
+ export const focusDynamicTableInput = e => {
721
+ setTimeout(() => {
722
+ const input = document.getElementById(e.target.id);
723
+ if (input) {
724
+ // Check if the input is not already focused
725
+ if (document.activeElement !== input) {
726
+ const length = input.value.length;
727
+ // Focus on the input
728
+ input.focus();
729
+
730
+ // number input not supports selection
731
+ if (e.target.type !== "number") {
732
+ // Set the cursor to the end
733
+ input.setSelectionRange(length, length);
734
+ }
735
+ }
736
+ }
737
+ }, 0);
738
+ };
739
+ export const clearWindowSelection = () => {
740
+ const selection = window.getSelection();
741
+ if (selection) {
742
+ selection.removeAllRanges(); // Clears the selection
743
+ }
744
+ };
745
+
746
+ export const viewSlateSelection = () => {
747
+ // if ai is opened, remove the window selection class and open then slate selection, To resolve: focussing on the ai input removes window selection automatically
748
+ clearWindowSelection();
749
+ const selectionBg = "rgba(35, 131, 226, 0.35)";
750
+ const root = document.documentElement;
751
+ root.style.setProperty("--slate-highlight-bg", selectionBg);
752
+ };
753
+ export const hideSlateSelection = () => {
754
+ const root = document.documentElement;
755
+ root.style.setProperty("--slate-highlight-bg", "none");
756
+ };
716
757
  export function handleNegativeInteger(val) {
717
758
  return val < 0 ? 0 : val;
718
759
  }
@@ -9,7 +9,13 @@ export const findPageSettings = editor => {
9
9
  path: null,
10
10
  element: {
11
11
  pageProps: {
12
- pageWidth: "fixed"
12
+ pageWidth: "fixed",
13
+ "lineHeight": {
14
+ "xs": 1.43,
15
+ "sm": 1.43,
16
+ "md": 1.43,
17
+ "lg": 1.43
18
+ }
13
19
  }
14
20
  }
15
21
  };
@@ -34,7 +40,13 @@ export const getPageSettings = editor => {
34
40
  path: null,
35
41
  element: {
36
42
  pageProps: {
37
- pageWidth: "fixed"
43
+ pageWidth: "fixed",
44
+ "lineHeight": {
45
+ "xs": 1.43,
46
+ "sm": 1.43,
47
+ "md": 1.43,
48
+ "lg": 1.43
49
+ }
38
50
  }
39
51
  }
40
52
  };
@@ -753,4 +753,25 @@ export const clearCellText = (editor, currentCellPath) => {
753
753
  } catch (err) {
754
754
  console.log(err);
755
755
  }
756
+ };
757
+ export const getTableColumns = element => {
758
+ const {
759
+ columns,
760
+ children
761
+ } = element || {};
762
+ if (columns) {
763
+ return columns;
764
+ }
765
+ const firstRow = children?.length ? children[0] : {};
766
+ return firstRow?.children?.length || 0;
767
+ };
768
+ export const getTableRows = element => {
769
+ const {
770
+ rows,
771
+ children
772
+ } = element || {};
773
+ if (rows) {
774
+ return rows;
775
+ }
776
+ return children?.length || 0;
756
777
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "5.9.7",
3
+ "version": "5.9.9",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -69,7 +69,7 @@
69
69
  "storybook": "storybook dev -p 6006",
70
70
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
71
71
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
72
- "publish:local": "rm -rf /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist --copy-files"
72
+ "publish:local": "rm -rf /Users/agmac30/Documents/CODE_BASE/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agmac30/Documents/CODE_BASE/flozy/client/node_modules/@flozy/editor/dist --copy-files"
73
73
  },
74
74
  "eslintConfig": {
75
75
  "extends": [