@flozy/editor 5.0.3 → 5.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -136,13 +136,20 @@ const GridItem = props => {
136
136
  const minWidthInPercent = isRightCol ? `${widths?.right}%` : cmWidth;
137
137
  useEffect(() => {
138
138
  try {
139
- if (columnRef?.current && (!parentDOM?.parentDOM || !minWidth)) {
140
- initDoms();
139
+ if (columnRef?.current && (!parentDOM?.parentDOM || !minWidth || lastChild)) {
140
+ initDoms(lastChild);
141
+ if (lastChild) {
142
+ Transforms.setNodes(editor, {
143
+ minWidth: null
144
+ }, {
145
+ at: path
146
+ });
147
+ }
141
148
  }
142
149
  } catch (err) {
143
150
  console.log(err);
144
151
  }
145
- }, [columnRef?.current, minWidth, childCount]);
152
+ }, [columnRef?.current, minWidth, childCount, lastChild]);
146
153
  useEffect(() => {
147
154
  if (isDone || isRightCol) {
148
155
  initDoms();
@@ -23,15 +23,6 @@ const GridStyles = (theme, appTheme) => ({
23
23
  flexWrap: "wrap"
24
24
  }
25
25
  },
26
- "&.cc-1": {
27
- "& .grid-item": {
28
- "&:last-child": {
29
- "& .col-width-resizer": {
30
- display: "block !important"
31
- }
32
- }
33
- }
34
- },
35
26
  "& .grid-item": {
36
27
  minWidth: "var(--minWidth)",
37
28
  maxWidth: "var(--minWidth)",
@@ -15,7 +15,7 @@ const FontLoader = props => {
15
15
  let retryCount = 0;
16
16
  function loadNextBatch() {
17
17
  if (currentIndex >= families?.length) {
18
- console.log("All fonts have been loaded");
18
+ // console.log("All fonts have been loaded");
19
19
  return;
20
20
  }
21
21
  const batch = families?.slice(currentIndex, currentIndex + batchSize);
@@ -1,6 +1,7 @@
1
- import { Autocomplete, Checkbox, FormControlLabel, MenuItem, Select, TextField, Typography, createFilterOptions } from "@mui/material";
1
+ import { Autocomplete, Checkbox, FormControlLabel, MenuItem, TextField, Typography, createFilterOptions } from "@mui/material";
2
2
  import { useEffect, useMemo, useState } from "react";
3
3
  import { useSlate } from "slate-react";
4
+ import Select from "../Select";
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  import { Fragment as _Fragment } from "react/jsx-runtime";
6
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -5,13 +5,14 @@ import DialogContent from "@mui/material/DialogContent";
5
5
  import DialogActions from "@mui/material/DialogActions";
6
6
  import IconButton from "@mui/material/IconButton";
7
7
  import CloseIcon from "@mui/icons-material/Close";
8
- import { Box, FormControl, FormControlLabel, Grid, MenuItem, Radio, RadioGroup, Select, Typography } from "@mui/material";
8
+ import { Box, FormControl, FormControlLabel, Grid, MenuItem, Radio, RadioGroup, Typography } from "@mui/material";
9
9
  import { useState } from "react";
10
10
  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
14
  import { useEditorContext } from "../../hooks/useMouseMove";
15
+ import Select from "../Select";
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
16
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
18
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -0,0 +1,20 @@
1
+ import { Select as Core } from "@mui/material";
2
+ import SelectStyles from "./styles";
3
+ import { useEditorContext } from "../../hooks/useMouseMove";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ function Select(props) {
6
+ const {
7
+ children,
8
+ ...rest
9
+ } = props;
10
+ const {
11
+ theme
12
+ } = useEditorContext();
13
+ const classes = SelectStyles(theme);
14
+ return /*#__PURE__*/_jsx(Core, {
15
+ MenuProps: classes.MenuProps,
16
+ ...rest,
17
+ children: children
18
+ });
19
+ }
20
+ export default Select;
@@ -0,0 +1,17 @@
1
+ const SelectStyles = (theme = {}) => {
2
+ const {
3
+ textColor,
4
+ background
5
+ } = theme?.palette?.editor || {};
6
+ return {
7
+ MenuProps: {
8
+ PaperProps: {
9
+ sx: {
10
+ color: textColor,
11
+ background
12
+ }
13
+ }
14
+ }
15
+ };
16
+ };
17
+ export default SelectStyles;
@@ -329,14 +329,14 @@ export const isCarouselSelected = editor => {
329
329
  return false;
330
330
  }
331
331
  const [nodeEntry] = Editor.nodes(editor, {
332
- match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === 'carousel'
332
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "carousel"
333
333
  });
334
334
  if (!nodeEntry) {
335
335
  return false;
336
336
  }
337
337
  const [node] = nodeEntry;
338
338
  const carouselDom = ReactEditor.toDOMNode(editor, node);
339
- const isEdit = carouselDom.classList.contains('carousel_slider_edit');
339
+ const isEdit = carouselDom.classList.contains("carousel_slider_edit");
340
340
  return !isEdit;
341
341
  } catch (err) {
342
342
  console.log(err);
@@ -23,7 +23,6 @@ const withEmbeds = editor => {
23
23
  const previousPath = Path.previous(parentPath);
24
24
  const previousNode = Node.get(editor, previousPath);
25
25
  if (BlockTypes.includes(previousNode?.children[0]?.type) && parentNode?.type?.indexOf("heading") >= 0) {
26
- console.log("grid is in previous", parentPath, previousPath, [...args]);
27
26
  insertNodes(...[{
28
27
  type: "paragraph",
29
28
  children: [{
@@ -1,4 +1,4 @@
1
- import { Editor, Node, Transforms, Element, Path, Range } from "slate";
1
+ import { Editor, Node, Transforms, Element, Path, Range, Text } from "slate";
2
2
  import { ReactEditor } from "slate-react";
3
3
  import insertNewLine from "./insertNewLine";
4
4
  import { getDevice } from "../helper/theme";
@@ -110,11 +110,34 @@ export const isEmptyNode = (editor, children, path) => {
110
110
  }
111
111
  };
112
112
  export const outsideEditorClickLabel = "handle-outside-editor-click";
113
+ function isLastChildParagraphWithText(node) {
114
+ try {
115
+ if (!node || !Array.isArray(node.children)) {
116
+ return false;
117
+ }
118
+
119
+ // Get the last child node
120
+ const lastChild = node.children[node.children.length - 1];
121
+
122
+ // Check if the last child exists and is of type 'paragraph'
123
+ if (lastChild && lastChild.type === "paragraph") {
124
+ // Ensure all children of the paragraph node are text nodes
125
+ const hasOnlyTextChildren = lastChild.children.every(child => Text.isText(child));
126
+ console.log(hasOnlyTextChildren);
127
+ return hasOnlyTextChildren;
128
+ }
129
+ return false;
130
+ } catch (err) {
131
+ console.log(err);
132
+ return false;
133
+ }
134
+ }
113
135
  const insertNewLineOnColumn = (editor, pathStr) => {
114
136
  try {
115
137
  const path = pathStr.split(",").map(m => parseInt(m));
116
138
  const colNode = Node.get(editor, path);
117
- if (colNode?.type === "grid-item") {
139
+ const isValid = isLastChildParagraphWithText(colNode);
140
+ if (colNode?.type === "grid-item" && !isValid) {
118
141
  const newPath = [...path, colNode?.children.length];
119
142
  Transforms.insertNodes(editor, [{
120
143
  type: "paragraph",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "5.0.3",
3
+ "version": "5.0.4",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"