@flozy/editor 5.1.8 → 5.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -111,7 +111,7 @@ const Divider = props => {
111
111
  contentEditable: false,
112
112
  style: {
113
113
  zIndex: 1000,
114
- left: "50%"
114
+ left: "0%"
115
115
  },
116
116
  children: /*#__PURE__*/_jsx(DividerToolbar, {
117
117
  selected: selected,
@@ -4,7 +4,7 @@ import { Node, Transforms, Editor } from "slate";
4
4
  import AspectRatioIcon from "@mui/icons-material/AspectRatio";
5
5
  import useResize from "../../utils/customHooks/useResize";
6
6
  import EmbedPopup from "./EmbedPopup";
7
- import { IconButton, Tooltip, Box, useTheme } from "@mui/material";
7
+ import { IconButton, Tooltip, Box, useTheme, Popper } from "@mui/material";
8
8
  import { GridSettingsIcon, LinkIcon } from "../../common/iconslist";
9
9
  import { useEditorContext } from "../../hooks/useMouseMove";
10
10
  import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../../helper/theme";
@@ -19,15 +19,15 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
19
19
  const ToolBar = ({
20
20
  isEmpty,
21
21
  onSettings,
22
- setOpenNav
22
+ setOpenNav,
23
+ topM
23
24
  }) => {
24
25
  return !isEmpty ? /*#__PURE__*/_jsxs("div", {
25
26
  className: "element-toolbar visible-on-hover",
26
27
  contentEditable: false,
27
28
  style: {
28
- top: "0px",
29
- right: "0px",
30
- left: "auto",
29
+ top: "-5px",
30
+ left: topM ? "35px" : "0px",
31
31
  margin: "0px"
32
32
  },
33
33
  children: [/*#__PURE__*/_jsx(Tooltip, {
@@ -155,7 +155,10 @@ const Image = props => {
155
155
  }, {
156
156
  at: path
157
157
  });
158
- }
158
+ },
159
+ MW: 32,
160
+ MH: 32,
161
+ MP: 2
159
162
  });
160
163
  const arr = Array.from(Node.elements(editor));
161
164
  const ele = arr.find(([elem]) => element === elem);
@@ -277,7 +280,8 @@ const Image = props => {
277
280
  children: [!readOnly && /*#__PURE__*/_jsx(ToolBar, {
278
281
  isEmpty: isEmpty,
279
282
  onSettings: onSettings,
280
- setOpenNav: setOpenNav
283
+ setOpenNav: setOpenNav,
284
+ topM: size.width < 100
281
285
  }), /*#__PURE__*/_jsx(ImageContent, {
282
286
  ...element,
283
287
  readOnly: readOnly,
@@ -52,6 +52,7 @@ const GridItemToolbar = props => {
52
52
  sx: classes.popTools,
53
53
  className: "gi-tool-pp",
54
54
  disablePortal: true,
55
+ contentEditable: false,
55
56
  children: [/*#__PURE__*/_jsx(Tooltip, {
56
57
  title: "Column Settings",
57
58
  arrow: true,
@@ -354,12 +355,14 @@ const GridItem = props => {
354
355
  onMouseDown: onMouseDown,
355
356
  height: "auto"
356
357
  }) : null, /*#__PURE__*/_jsxs(Dialog, {
358
+ sx: classes.dialog,
357
359
  open: Boolean(alert),
358
360
  onClose: handleClose,
359
361
  children: [/*#__PURE__*/_jsx(DialogContent, {
360
362
  children: alert
361
363
  }), /*#__PURE__*/_jsx(DialogActions, {
362
364
  children: /*#__PURE__*/_jsx(Button, {
365
+ variant: "contained",
363
366
  onClick: handleClose,
364
367
  children: "Close"
365
368
  })
@@ -106,6 +106,12 @@ const GridStyles = (theme, appTheme) => ({
106
106
  }
107
107
  }
108
108
  }
109
+ },
110
+ dialog: {
111
+ "& .MuiPaper-root": {
112
+ background: appTheme?.palette?.editor?.background,
113
+ color: appTheme?.palette?.editor?.textColor
114
+ }
109
115
  }
110
116
  });
111
117
  export default GridStyles;
@@ -2,6 +2,7 @@ import { Transforms, Editor, Element, Node, Path } from "slate";
2
2
  import deserialize from "../helper/deserialize";
3
3
  import { decodeAndParseBase64 } from "../utils/helper";
4
4
  const avoidDefaultInsert = ["table", "grid"];
5
+ const LIST_TAGS = ["ol", "ul", "img", "table"];
5
6
  const loopChildren = (children = [], defaultInsert) => {
6
7
  if (!children?.length) {
7
8
  return defaultInsert;
@@ -120,12 +121,21 @@ const withHtml = editor => {
120
121
  const slateHTML = data?.getData("application/x-slate-fragment");
121
122
  const html = data?.getData("text/html");
122
123
  const currentEl = getCurrentElement(editor);
123
- let eltype = currentEl?.type;
124
+ const eltype = currentEl?.type;
125
+ const isTitlePath = editor?.selection?.anchor?.path[0] === 0;
124
126
  if (slateHTML && !formatFragment[eltype]) {
125
127
  const [tableCellNode] = Editor.nodes(editor, {
126
128
  match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-cell"
127
129
  });
128
130
  const decoded = decodeAndParseBase64(slateHTML);
131
+ if (decoded && decoded[0] && decoded[0]?.type !== "paragraph" && isTitlePath) {
132
+ decoded.unshift({
133
+ type: "title",
134
+ children: [{
135
+ text: ""
136
+ }]
137
+ });
138
+ }
129
139
  if (tableCellNode) {
130
140
  const tableCellChild = getTableCellChild(decoded);
131
141
  if (tableCellChild?.length) {
@@ -170,10 +180,40 @@ const withHtml = editor => {
170
180
  Transforms.insertText(editor, text);
171
181
  }
172
182
  } else {
173
- handleInsert(editor, () => insertData(data), decoded);
183
+ handleInsert(editor, () => {
184
+ if (isTitlePath) {
185
+ Transforms.insertNodes(editor, [{
186
+ type: "title",
187
+ children: [{
188
+ text: ""
189
+ }]
190
+ }], {
191
+ at: [0]
192
+ });
193
+ insertData(data);
194
+ }
195
+ }, decoded);
174
196
  }
175
197
  } else if (html) {
176
198
  const parsed = new DOMParser().parseFromString(html, "text/html");
199
+ const rootElement = parsed.body || parsed.documentElement;
200
+ const isList = LIST_TAGS.includes(rootElement.firstChild.tagName.toLowerCase());
201
+
202
+ // if selection is in title add the empty paragraph
203
+ if (isTitlePath && isList) {
204
+ // Check if the first child exists and is not a paragraph
205
+ if (!rootElement.firstChild || rootElement.firstChild.tagName.toLowerCase() !== "p") {
206
+ // Create a new empty paragraph element
207
+ const emptyParagraph = parsed.createElement("p");
208
+
209
+ // Insert the empty paragraph at the beginning
210
+ if (rootElement.firstChild) {
211
+ rootElement.insertBefore(emptyParagraph, rootElement.firstChild);
212
+ } else {
213
+ rootElement.appendChild(emptyParagraph);
214
+ }
215
+ }
216
+ }
177
217
  const isGoogleSheet = parsed.body.querySelector("google-sheets-html-origin");
178
218
  if (isGoogleSheet) {
179
219
  if (editor.isChatEditor) {
@@ -4,7 +4,10 @@ const useResize = ({
4
4
  parentDOM,
5
5
  size: allSize,
6
6
  isGrid,
7
- onChange
7
+ onChange,
8
+ MH,
9
+ MW,
10
+ MP
8
11
  }) => {
9
12
  const device = getDevice(window.innerWidth);
10
13
  const defaultSize = getBreakPointsValue(allSize);
@@ -52,9 +55,9 @@ const useResize = ({
52
55
  const cWP = calcWidth / width * 100;
53
56
  const calcHeight = (parseInt(currentSize.height) || height) + e.movementY;
54
57
  const calc = {
55
- width: Math.max(calcWidth, 140),
56
- height: Math.max(calcHeight, 50),
57
- widthInPercent: cWP > 100 ? 100 : Math.max(cWP, 15)
58
+ width: Math.max(calcWidth, MW || 140),
59
+ height: Math.max(calcHeight, MH || 50),
60
+ widthInPercent: cWP > 100 ? 100 : Math.max(cWP, MP || 15)
58
61
  };
59
62
  latest = calc;
60
63
  return calc;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "5.1.8",
3
+ "version": "5.1.9",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"