@flozy/editor 4.3.1 → 4.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -42,7 +42,8 @@ function AIInput({
42
42
  onInputChange,
43
43
  onClickOutside,
44
44
  startRecording,
45
- loading
45
+ loading,
46
+ isMobile
46
47
  }, ref) {
47
48
  const {
48
49
  theme
@@ -130,7 +131,7 @@ function AIInput({
130
131
  component: "div",
131
132
  style: classes.sendIconContainer,
132
133
  className: "icons-elements",
133
- children: [/*#__PURE__*/_jsx(IconButton, {
134
+ children: [isMobile ? null : /*#__PURE__*/_jsx(IconButton, {
134
135
  disabled: loading,
135
136
  onClick: () => startRecording(),
136
137
  children: /*#__PURE__*/_jsx(ChatMicIcon, {})
@@ -1,4 +1,4 @@
1
- import { useEffect, useState } from "react";
1
+ import { useEffect, useRef, useState } from "react";
2
2
  import { useEditorContext } from "../../hooks/useMouseMove";
3
3
  import Styles from "./Styles";
4
4
  import { Fade, Paper, Popper } from "@mui/material";
@@ -173,10 +173,11 @@ function PopoverAIInput({
173
173
  const [generatedText, setGeneratedText] = useState("");
174
174
  const [inputValue, setInputValue] = useState("");
175
175
  const [selectedOption, setSelectedOption] = useState();
176
+ const selectedEleRef = useRef({});
176
177
  const classes = Styles();
177
178
  const editor = useSlate();
178
179
  const updateAnchor = () => {
179
- updateAnchorEl(setAnchorEl, editor, openAI, selectedElement);
180
+ updateAnchorEl(setAnchorEl, editor, openAI, selectedEleRef.current);
180
181
  };
181
182
  useEditorScroll(editorWrapper, updateAnchor);
182
183
  const onClickOutside = () => {
@@ -195,6 +196,9 @@ function PopoverAIInput({
195
196
  scrollToAIInput(editor);
196
197
  }
197
198
  }, [openAI]);
199
+ useEffect(() => {
200
+ selectedEleRef.current = selectedElement;
201
+ }, [selectedElement]);
198
202
  const onSend = async (type, option) => {
199
203
  if (type === "close") {
200
204
  onClickOutside();
@@ -303,7 +307,8 @@ function PopoverAIInput({
303
307
  openAI: openAI,
304
308
  inputValue: inputValue,
305
309
  onInputChange: onInputChange,
306
- onClickOutside: onClickOutside
310
+ onClickOutside: onClickOutside,
311
+ isMobile: otherProps?.isMobile
307
312
  })
308
313
  })
309
314
  })
@@ -10,7 +10,6 @@ import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../.
10
10
  import { handleLinkType, windowVar } from "../../utils/helper";
11
11
  import LinkSettings from "../../common/LinkSettings";
12
12
  import Icon from "../../common/Icon";
13
- import { useEditorContext } from "../../hooks/useMouseMove";
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
15
  const EditorButton = props => {
@@ -14,9 +14,10 @@ const Mentions = ({
14
14
  verticalAlign: "baseline",
15
15
  display: "inline-block",
16
16
  borderRadius: "4px",
17
- backgroundColor: "#eee",
17
+ backgroundColor: "#2563EB",
18
18
  fontSize: "0.9em",
19
- boxShadow: selected && focused ? "0 0 0 2px #B4D5FF" : "none"
19
+ boxShadow: selected && focused ? "0 0 0 2px #B4D5FF" : "none",
20
+ color: "#FFF"
20
21
  };
21
22
  // See if our empty text child has any styling marks applied and apply those
22
23
  if (element.children[0].bold) {
@@ -1,27 +1,22 @@
1
1
  import React from "react";
2
- import { Box, Button, Card, CardMedia, Grid } from "@mui/material";
2
+ import { Box, Card, CardMedia, Grid } from "@mui/material";
3
+
4
+ // const Select = (props) => {
5
+ // const { classes, data, onSelectTemplate } = props;
6
+ // return (
7
+ // <Box
8
+ // className="template-card-action"
9
+ // component={"div"}
10
+ // sx={classes.templateCardBtnGrp}
11
+ // style={{ padding: 0, background: "transparent"}}
12
+ // >
13
+ // <Button className="blueBtn" onClick={onSelectTemplate(data)}>
14
+ // Select
15
+ // </Button>
16
+ // </Box>
17
+ // );
18
+ // };
3
19
  import { jsx as _jsx } from "react/jsx-runtime";
4
- const Select = props => {
5
- const {
6
- classes,
7
- data,
8
- onSelectTemplate
9
- } = props;
10
- return /*#__PURE__*/_jsx(Box, {
11
- className: "template-card-action",
12
- component: "div",
13
- sx: classes.templateCardBtnGrp,
14
- style: {
15
- padding: 0,
16
- background: "transparent"
17
- },
18
- children: /*#__PURE__*/_jsx(Button, {
19
- className: "blueBtn",
20
- onClick: onSelectTemplate(data),
21
- children: "Select"
22
- })
23
- });
24
- };
25
20
  const ButtonTemplateCard = props => {
26
21
  const {
27
22
  classes,
@@ -1,26 +1,22 @@
1
1
  import React from "react";
2
- import { Box, Button, Card, CardMedia, Grid } from "@mui/material";
2
+ import { Box, Card, CardMedia, Grid } from "@mui/material";
3
+
4
+ // const Select = (props) => {
5
+ // const { classes, data, onSelectTemplate } = props;
6
+ // return (
7
+ // <Box
8
+ // className="template-card-action"
9
+ // component={"div"}
10
+ // sx={classes.templateCardBtnGrp}
11
+ // style={{background: "transparent"}}
12
+ // >
13
+ // <Button className="blueBtn" onClick={onSelectTemplate(data)}>
14
+ // Select
15
+ // </Button>
16
+ // </Box>
17
+ // );
18
+ // };
3
19
  import { jsx as _jsx } from "react/jsx-runtime";
4
- const Select = props => {
5
- const {
6
- classes,
7
- data,
8
- onSelectTemplate
9
- } = props;
10
- return /*#__PURE__*/_jsx(Box, {
11
- className: "template-card-action",
12
- component: "div",
13
- sx: classes.templateCardBtnGrp,
14
- style: {
15
- background: "transparent"
16
- },
17
- children: /*#__PURE__*/_jsx(Button, {
18
- className: "blueBtn",
19
- onClick: onSelectTemplate(data),
20
- children: "Select"
21
- })
22
- });
23
- };
24
20
  const FullViewCard = props => {
25
21
  const {
26
22
  classes,
@@ -50,9 +50,6 @@ const FontLoader = props => {
50
50
  }
51
51
  loadNextBatch();
52
52
  };
53
- const sanitizeFontFamily = fontFamily => {
54
- return fontFamily.replace(/\\/g, '').replace(/['"]/g, '');
55
- };
56
53
  useEffect(() => {
57
54
  let families = [...defaultFonts];
58
55
  if (!readOnly) {
@@ -70,13 +67,23 @@ const FontLoader = props => {
70
67
  console.log(err);
71
68
  });
72
69
  } else {
70
+ function correctFontArray(fontString) {
71
+ let fontsArray = fontString.split(',');
72
+ let cleanedFontsArray = [...new Set(fontsArray.map(font => font.trim()))];
73
+ return cleanedFontsArray;
74
+ }
75
+ function sanitizeFontFamily(fontFamily) {
76
+ const correctedFonts = correctFontArray(fontFamily);
77
+ return correctedFonts.join(', ');
78
+ }
73
79
  const elements = Array.from(document?.querySelectorAll("*"));
74
80
  const fontSet = new Set();
75
81
  elements.forEach(element => {
76
82
  const computedStyles = window?.getComputedStyle(element);
77
83
  fontSet.add(sanitizeFontFamily(computedStyles?.fontFamily));
78
84
  });
79
- families = Array.from(fontSet);
85
+ let families = Array.from(fontSet);
86
+ families = correctFontArray(families.join(', '));
80
87
  loadFontsInBatches(families);
81
88
  }
82
89
  }, []);
@@ -11,6 +11,7 @@ import LinkSettingsStyles from "./style";
11
11
  import { getNavOptions } from "./navOptions";
12
12
  import { ScrollTopBottom, SelectPage, TextInput, Trigger } from "./NavComponents";
13
13
  import SwipeableDrawer from "../SwipeableDrawer";
14
+ import { useEditorContext } from "../../hooks/useMouseMove";
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
17
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -30,18 +31,20 @@ function getNav(navType, navOptions) {
30
31
  };
31
32
  }
32
33
  export default function LinkSettings(props) {
34
+ const {
35
+ theme
36
+ } = useEditorContext();
33
37
  const {
34
38
  handleClose,
35
39
  onSave,
36
40
  customProps,
37
41
  navType
38
42
  } = props;
39
- const themeType = localStorage.getItem("themeType");
40
43
  const {
41
44
  isMobile
42
45
  } = customProps;
43
46
  const navOptions = getNavOptions(customProps.hideTools);
44
- const classes = LinkSettingsStyles(themeType);
47
+ const classes = LinkSettingsStyles(theme);
45
48
  const [nav, setNav] = useState(getNav(navType, navOptions));
46
49
  const [navValue, setNavValue] = useState(props?.navValue || "");
47
50
  const [openInNewTab, setOpenInNewTab] = useState(props.openInNewTab || false);
@@ -1,8 +1,5 @@
1
- const ButtonNavSettingsStyles = themeType => ({
1
+ const ButtonNavSettingsStyles = theme => ({
2
2
  dialogContainer: {
3
- "& .MuiPaper-root": {
4
- background: themeType === "dark" ? "#141720 !important" : "#ffffff !important"
5
- },
6
3
  "& .MuiDialogContent-root": {
7
4
  padding: "0px 20px"
8
5
  },
@@ -19,6 +16,23 @@ const ButtonNavSettingsStyles = themeType => ({
19
16
  },
20
17
  "& .MuiGrid-item": {
21
18
  padding: "14px"
19
+ },
20
+ "& .MuiPaper-root": {
21
+ backgroundColor: theme?.palette?.editor?.background,
22
+ "& .MuiTypography-root": {
23
+ color: theme?.palette?.editor?.textColor
24
+ },
25
+ "& .MuiInputBase-root": {
26
+ border: `1px solid ${theme?.palette?.editor?.textColor}`,
27
+ color: theme?.palette?.editor?.textColor
28
+ },
29
+ "& .MuiSvgIcon-root": {
30
+ color: theme?.palette?.editor?.textColor
31
+ },
32
+ "& .MuiFormLabel-root": {
33
+ color: theme?.palette?.editor?.textColor,
34
+ backgroundColor: theme?.palette?.editor?.background
35
+ }
22
36
  }
23
37
  },
24
38
  saveBtn: {
@@ -49,7 +63,7 @@ const ButtonNavSettingsStyles = themeType => ({
49
63
  position: "absolute",
50
64
  right: 8,
51
65
  top: 8,
52
- color: theme => theme.palette.grey[500]
66
+ color: theme?.palette?.grey[500]
53
67
  },
54
68
  gridDivider: {
55
69
  borderRight: "1px solid rgba(0, 0, 0, 0.12)"
@@ -60,7 +74,7 @@ const ButtonNavSettingsStyles = themeType => ({
60
74
  gap: "8px",
61
75
  paddingTop: "14px",
62
76
  marginTop: "14px",
63
- borderTop: theme => `1px solid ${theme.palette.grey[300]}`
77
+ borderTop: `1px solid ${theme?.palette?.grey[300]}`
64
78
  }
65
79
  });
66
80
  export default ButtonNavSettingsStyles;
@@ -11,7 +11,8 @@ const Link = props => {
11
11
  customProps,
12
12
  editor,
13
13
  path,
14
- childType
14
+ childType,
15
+ theme
15
16
  } = props;
16
17
  const pPath = path?.split("|")?.map(m => parseInt(m));
17
18
  const element_path = [...pPath, 0];
@@ -137,7 +138,7 @@ const Link = props => {
137
138
  console.log(err);
138
139
  }
139
140
  };
140
- return blockProps?.navType !== undefined ? /*#__PURE__*/_jsx(LinkSettings, {
141
+ return /*#__PURE__*/_jsx(LinkSettings, {
141
142
  handleClose: onClose,
142
143
  onSave: d => {
143
144
  const upData = getTransformedData(d);
@@ -147,7 +148,8 @@ const Link = props => {
147
148
  onClose();
148
149
  },
149
150
  ...(blockProps || {}),
150
- customProps: customProps
151
- }) : null;
151
+ customProps: customProps,
152
+ theme: theme
153
+ });
152
154
  };
153
155
  export default Link;
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
- import { Node } from "slate";
3
2
  import { Dialog, DialogContent, DialogTitle, IconButton } from "@mui/material";
4
3
  import SaveAsTemplate from "../../../StyleBuilder/fieldTypes/saveAsTemplate";
5
4
  import { CloseIcon } from "../../../iconslist";
@@ -416,7 +416,9 @@ const RnD = props => {
416
416
  }
417
417
  };
418
418
  const onMouseOver = e => {
419
- e.stopPropagation();
419
+ if (type !== "child") {
420
+ e.stopPropagation();
421
+ }
420
422
  if (type !== "child") {
421
423
  updateDragging({
422
424
  dragOver: str_path
@@ -546,7 +548,7 @@ const RnD = props => {
546
548
  contextMenu: contextMenu,
547
549
  handleClose: handleClose,
548
550
  theme: theme
549
- }), type === "parent" && breakpoint === "lg" ? /*#__PURE__*/_jsx(VirtualElement, {
551
+ }), type === "parent" && breakpoint === "lg" && !readOnly ? /*#__PURE__*/_jsx(VirtualElement, {
550
552
  parentEle: positionRef?.current?.resizableElement?.current,
551
553
  updated_at: updated_at,
552
554
  path: str_path,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "4.3.1",
3
+ "version": "4.3.3",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"