@flozy/editor 1.1.5 → 1.1.7

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 (40) hide show
  1. package/dist/Editor/CollaborativeEditor.js +6 -1
  2. package/dist/Editor/CommonEditor.js +17 -3
  3. package/dist/Editor/Editor.css +15 -3
  4. package/dist/Editor/Elements/AppHeader/AppHeader.js +221 -0
  5. package/dist/Editor/Elements/AppHeader/AppHeaderButton.js +19 -0
  6. package/dist/Editor/Elements/AppHeader/AppHeaderPopup.js +20 -0
  7. package/dist/Editor/Elements/Button/EditorButton.js +3 -3
  8. package/dist/Editor/Elements/Carousel/Carousel.js +19 -5
  9. package/dist/Editor/Elements/Carousel/CarouselItem.js +5 -1
  10. package/dist/Editor/Elements/ChipText/ChipText.js +44 -0
  11. package/dist/Editor/Elements/ChipText/ChipTextButton.js +64 -0
  12. package/dist/Editor/Elements/ChipText/ChipTextPopup.js +24 -0
  13. package/dist/Editor/Elements/DrawerMenu/DrawerMenu.js +66 -0
  14. package/dist/Editor/Elements/DrawerMenu/DrawerMenuButton.js +21 -0
  15. package/dist/Editor/Elements/Link/Link.js +5 -5
  16. package/dist/Editor/Elements/Link/LinkButton.js +50 -37
  17. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +27 -21
  18. package/dist/Editor/Elements/Table/Table.js +160 -10
  19. package/dist/Editor/Elements/Table/TableCell.js +55 -143
  20. package/dist/Editor/Elements/Table/table.css +13 -0
  21. package/dist/Editor/Toolbar/Toolbar.js +18 -0
  22. package/dist/Editor/Toolbar/toolbarGroups.js +9 -0
  23. package/dist/Editor/common/ColorPickerButton.js +65 -0
  24. package/dist/Editor/common/StyleBuilder/appHeaderStyle.js +63 -0
  25. package/dist/Editor/common/StyleBuilder/chipTextStyle.js +35 -0
  26. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +8 -14
  27. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  28. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +114 -0
  29. package/dist/Editor/common/StyleBuilder/index.js +8 -3
  30. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +20 -0
  31. package/dist/Editor/plugins/withLinks.js +40 -2
  32. package/dist/Editor/plugins/withTable.js +10 -1
  33. package/dist/Editor/utils/SlateUtilityFunctions.js +15 -0
  34. package/dist/Editor/utils/customHooks/useTableResize.js +46 -0
  35. package/dist/Editor/utils/insertAppHeader.js +55 -0
  36. package/dist/Editor/utils/insertChipText.js +49 -0
  37. package/dist/Editor/utils/insertDrawerMenu.js +52 -0
  38. package/dist/Editor/utils/serializer.js +26 -16
  39. package/dist/Editor/utils/table.js +26 -3
  40. package/package.json +2 -1
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
- import { useFocused, useSelected, useSlateStatic } from 'slate-react';
3
- import { removeLink } from '../../utils/link';
4
- import unlink from '../../Toolbar/toolbarIcons/unlink.svg';
5
- import './styles.css';
1
+ import React from "react";
2
+ import { useFocused, useSelected, useSlateStatic } from "slate-react";
3
+ import { removeLink } from "../../utils/link";
4
+ import unlink from "../../Toolbar/toolbarIcons/unlink.svg";
5
+ import "./styles.css";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
8
8
  const Link = ({
@@ -1,10 +1,10 @@
1
1
  import { useRef, useState } from "react";
2
+ import { Transforms } from "slate";
3
+ import { Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, Grid, TextField, Button, IconButton } from "@mui/material";
4
+ import { CheckBox } from "@mui/icons-material";
2
5
  import { insertLink } from "../../utils/link";
3
- import Button from "../../common/Button";
4
6
  import Icon from "../../common/Icon";
5
7
  import { isBlockActive } from "../../utils/SlateUtilityFunctions";
6
- import usePopup from "../../utils/customHooks/usePopup";
7
- import { Transforms } from "slate";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const LinkButton = props => {
@@ -12,7 +12,7 @@ const LinkButton = props => {
12
12
  editor
13
13
  } = props;
14
14
  const linkInputRef = useRef(null);
15
- const [showInput, setShowInput] = usePopup(linkInputRef);
15
+ const [showInput, setShowInput] = useState(false);
16
16
  const [url, setUrl] = useState("");
17
17
  const [showInNewTab, setShowInNewTab] = useState(false);
18
18
  const [selection, setSelection] = useState();
@@ -23,62 +23,75 @@ const LinkButton = props => {
23
23
  showInNewTab
24
24
  });
25
25
  setUrl("");
26
- setShowInput(prev => !prev);
26
+ setShowInput(false);
27
27
  setShowInNewTab(false);
28
28
  };
29
29
  const toggleLink = () => {
30
30
  setSelection(editor.selection);
31
- setShowInput(prev => !prev);
31
+ setShowInput(true);
32
32
  };
33
33
  const handleInputChange = ({
34
34
  target
35
35
  }) => {
36
36
  if (target.type === "checkbox") {
37
- setShowInNewTab(prev => !prev);
37
+ setShowInNewTab(target.checked);
38
38
  } else {
39
39
  setUrl(target.value);
40
40
  }
41
41
  };
42
+ const handleClose = () => {
43
+ setShowInput(false);
44
+ };
42
45
  return /*#__PURE__*/_jsxs("div", {
43
46
  ref: linkInputRef,
44
47
  className: "popup-wrapper1",
45
- children: [/*#__PURE__*/_jsx(Button, {
48
+ children: [/*#__PURE__*/_jsx(IconButton, {
46
49
  className: showInput ? "clicked" : "",
47
- active: isBlockActive(editor, "link"),
50
+ active: isBlockActive(editor, "link") ? "active" : "",
48
51
  format: "link",
49
52
  onClick: toggleLink,
50
53
  children: /*#__PURE__*/_jsx(Icon, {
51
54
  icon: "link"
52
55
  })
53
- }), showInput && /*#__PURE__*/_jsxs("div", {
54
- className: "popup",
55
- children: [/*#__PURE__*/_jsxs("div", {
56
- style: {
57
- display: "flex",
58
- gap: "4px",
59
- margin: "5px 2px"
60
- },
61
- children: [/*#__PURE__*/_jsx("input", {
62
- type: "text",
63
- placeholder: "https://google.com",
64
- value: url,
65
- onChange: handleInputChange
66
- }), /*#__PURE__*/_jsx("div", {
56
+ }), showInput && /*#__PURE__*/_jsxs(Dialog, {
57
+ open: true,
58
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
59
+ children: "Link"
60
+ }), /*#__PURE__*/_jsx(DialogContent, {
61
+ children: /*#__PURE__*/_jsxs(Grid, {
62
+ container: true,
63
+ spacing: 2,
64
+ children: [/*#__PURE__*/_jsx(Grid, {
65
+ item: true,
66
+ xs: 12,
67
+ children: /*#__PURE__*/_jsx(TextField, {
68
+ size: "small",
69
+ fullWidth: true,
70
+ value: url,
71
+ placeholder: "https://google.com",
72
+ onChange: handleInputChange
73
+ })
74
+ }), /*#__PURE__*/_jsx(Grid, {
75
+ item: true,
76
+ xs: 12,
77
+ children: /*#__PURE__*/_jsx(FormControl, {
78
+ children: /*#__PURE__*/_jsx(FormControlLabel, {
79
+ control: /*#__PURE__*/_jsx(CheckBox, {
80
+ checked: showInNewTab,
81
+ onChange: handleInputChange
82
+ }),
83
+ label: "Open in new tab"
84
+ })
85
+ })
86
+ })]
87
+ })
88
+ }), /*#__PURE__*/_jsxs(DialogActions, {
89
+ children: [/*#__PURE__*/_jsx(Button, {
90
+ onClick: handleClose,
91
+ children: "Cancel"
92
+ }), /*#__PURE__*/_jsx(Button, {
67
93
  onClick: handleInsertLink,
68
- children: /*#__PURE__*/_jsx(Icon, {
69
- icon: "add"
70
- })
71
- })]
72
- }), /*#__PURE__*/_jsxs("label", {
73
- children: [/*#__PURE__*/_jsx("input", {
74
- type: "checkbox",
75
- checked: showInNewTab,
76
- onChange: handleInputChange
77
- }), /*#__PURE__*/_jsx("span", {
78
- style: {
79
- fontSize: "0.8em"
80
- },
81
- children: "Open in new tab"
94
+ children: "Add"
82
95
  })]
83
96
  })]
84
97
  })]
@@ -5,22 +5,23 @@ import ArticleIcon from "@mui/icons-material/Article";
5
5
  import { useSlateStatic, ReactEditor } from "slate-react";
6
6
  import PageSettingsPopup from "./PageSettingsPopup";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
+ import { Fragment as _Fragment } from "react/jsx-runtime";
8
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
9
10
  const PageSettingsButton = props => {
10
11
  const {
11
12
  customProps
12
13
  } = props;
13
14
  const [openSetttings, setOpenSettings] = useState(false);
14
- const [pageProps, setPageProps] = useState({});
15
15
  const editor = useSlateStatic();
16
16
  const onSettings = () => {
17
17
  const {
18
- element
18
+ element,
19
+ path
19
20
  } = getPageSettingsPath();
20
- if (element) {
21
- setPageProps(element?.pageProps || {});
22
- setOpenSettings(true);
23
- }
21
+ setOpenSettings({
22
+ element: element?.pageProps || {},
23
+ path
24
+ });
24
25
  };
25
26
  const getPageSettingsPath = () => {
26
27
  try {
@@ -30,11 +31,17 @@ const PageSettingsButton = props => {
30
31
  return !Editor.isEditor(n) && Element.isElement(n) && n.type === "page-settings";
31
32
  }
32
33
  });
33
- const path = ReactEditor.findPath(editor, pageSettingsNode[0]);
34
- return {
35
- path,
36
- element: pageSettingsNode[0]
37
- };
34
+ if (pageSettingsNode && pageSettingsNode[0]) {
35
+ const path = ReactEditor.findPath(editor, pageSettingsNode[0]);
36
+ return {
37
+ path,
38
+ element: pageSettingsNode[0]
39
+ };
40
+ } else {
41
+ return {
42
+ path: null
43
+ };
44
+ }
38
45
  } catch (err) {
39
46
  console.log(err);
40
47
  return {
@@ -43,20 +50,17 @@ const PageSettingsButton = props => {
43
50
  }
44
51
  };
45
52
  const onSave = data => {
46
- const {
47
- path
48
- } = getPageSettingsPath();
49
53
  const updateData = {
50
54
  ...data
51
55
  };
52
56
  delete updateData.children;
53
- if (path) {
57
+ if (openSetttings?.path) {
54
58
  Transforms.setNodes(editor, {
55
59
  pageProps: {
56
60
  ...updateData
57
61
  }
58
62
  }, {
59
- at: path
63
+ at: openSetttings?.path
60
64
  });
61
65
  } else {
62
66
  Transforms.insertNodes(editor, [{
@@ -74,11 +78,13 @@ const PageSettingsButton = props => {
74
78
  const onClose = () => {
75
79
  setOpenSettings(false);
76
80
  };
77
- return /*#__PURE__*/_jsxs(IconButton, {
78
- title: "Page Settings",
79
- onClick: onSettings,
80
- children: [/*#__PURE__*/_jsx(ArticleIcon, {}), openSetttings ? /*#__PURE__*/_jsx(PageSettingsPopup, {
81
- element: pageProps,
81
+ return /*#__PURE__*/_jsxs(_Fragment, {
82
+ children: [/*#__PURE__*/_jsx(IconButton, {
83
+ title: "Page Settings",
84
+ onClick: onSettings,
85
+ children: /*#__PURE__*/_jsx(ArticleIcon, {})
86
+ }), openSetttings !== false ? /*#__PURE__*/_jsx(PageSettingsPopup, {
87
+ element: openSetttings?.element || {},
82
88
  onSave: onSave,
83
89
  onClose: onClose,
84
90
  customProps: customProps
@@ -1,30 +1,180 @@
1
- import React from "react";
1
+ import React, { useState } from "react";
2
+ import { Transforms } from "slate";
3
+ import { useSelected, useSlateStatic } from "slate-react";
4
+ import { IconButton } from "@mui/material";
5
+ import AlignHorizontalLeftIcon from "@mui/icons-material/AlignHorizontalLeft";
6
+ import AlignHorizontalRightIcon from "@mui/icons-material/AlignHorizontalRight";
7
+ import AlignVerticalTopIcon from "@mui/icons-material/AlignVerticalTop";
8
+ import AlignVerticalBottomIcon from "@mui/icons-material/AlignVerticalBottom";
9
+ import DeleteForeverIcon from "@mui/icons-material/DeleteForever";
10
+ import SettingsIcon from "@mui/icons-material/Settings";
11
+ import DeleteCellIcon from "./DeleteCellIcon";
12
+ import DeleteRowIcon from "./DeleteRowIcon";
13
+ import { TableUtil } from "../../utils/table";
14
+ import TablePopup from "./TablePopup";
15
+ import "./table.css";
2
16
  import { jsx as _jsx } from "react/jsx-runtime";
3
- const Table = ({
4
- attributes,
5
- children,
6
- element
7
- }) => {
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ const TABLE_MENUS = [{
19
+ Icon: AlignHorizontalRightIcon,
20
+ text: "Insert Columns to the Right",
21
+ action: {
22
+ type: "insertColumn",
23
+ position: "after"
24
+ }
25
+ }, {
26
+ Icon: AlignHorizontalLeftIcon,
27
+ text: "Insert Columns to the Left",
28
+ action: {
29
+ type: "insertColumn",
30
+ position: "at"
31
+ }
32
+ }, {
33
+ Icon: AlignVerticalTopIcon,
34
+ text: "Insert Row Above",
35
+ action: {
36
+ type: "insertRow",
37
+ positon: "at"
38
+ }
39
+ }, {
40
+ Icon: AlignVerticalBottomIcon,
41
+ text: "Insert Row Below",
42
+ action: {
43
+ type: "insertRow",
44
+ position: "after"
45
+ }
46
+ }, {
47
+ Icon: DeleteRowIcon,
48
+ text: "Delete Row",
49
+ action: {
50
+ type: "deleteRow"
51
+ }
52
+ }, {
53
+ Icon: DeleteCellIcon,
54
+ text: "Delete Column",
55
+ action: {
56
+ type: "deleteColumn"
57
+ }
58
+ }, {
59
+ Icon: SettingsIcon,
60
+ text: "Settings",
61
+ action: {
62
+ type: "settings"
63
+ }
64
+ }, {
65
+ Icon: DeleteForeverIcon,
66
+ text: "Remove Table",
67
+ action: {
68
+ type: "remove"
69
+ }
70
+ }];
71
+ const Table = props => {
72
+ const {
73
+ element,
74
+ attributes,
75
+ children,
76
+ customProps
77
+ } = props;
78
+ const [openSetttings, setOpenSettings] = useState(false);
8
79
  const {
9
80
  bgColor,
10
81
  borderColor
11
82
  } = element;
12
- return /*#__PURE__*/_jsx("div", {
83
+ const editor = useSlateStatic();
84
+ const selected = useSelected();
85
+ const table = new TableUtil(editor);
86
+ const tableProps = table.getTableProps();
87
+ const handleAction = ({
88
+ type,
89
+ position
90
+ }) => () => {
91
+ Transforms.select(editor, editor.selection);
92
+ switch (type) {
93
+ case "insertRow":
94
+ table.insertRow(position);
95
+ break;
96
+ case "insertColumn":
97
+ table.insertColumn(position);
98
+ break;
99
+ case "deleteRow":
100
+ table.deleteRow();
101
+ break;
102
+ case "deleteColumn":
103
+ table.deleteColumn();
104
+ break;
105
+ case "remove":
106
+ table.removeTable();
107
+ break;
108
+ case "settings":
109
+ if (tableProps) {
110
+ onSettings(true);
111
+ }
112
+ break;
113
+ default:
114
+ return;
115
+ }
116
+ };
117
+ const ToolBar = () => {
118
+ return selected ? /*#__PURE__*/_jsx("div", {
119
+ contentEditable: false,
120
+ style: {
121
+ position: "absolute",
122
+ top: "-40px",
123
+ left: 0,
124
+ backgroundColor: "#CCC"
125
+ },
126
+ children: TABLE_MENUS.map(({
127
+ Icon,
128
+ text,
129
+ action
130
+ }) => {
131
+ return /*#__PURE__*/_jsx(IconButton, {
132
+ title: text,
133
+ onClick: handleAction(action),
134
+ children: /*#__PURE__*/_jsx(Icon, {})
135
+ }, text);
136
+ })
137
+ }) : null;
138
+ };
139
+ const onSettings = () => {
140
+ setOpenSettings(true);
141
+ };
142
+ const onSave = data => {
143
+ const updateData = {
144
+ ...data
145
+ };
146
+ delete updateData.children;
147
+ delete updateData.type;
148
+ table.updateTableStyle(updateData, {
149
+ ...tableProps
150
+ });
151
+ onClose();
152
+ };
153
+ const onClose = () => {
154
+ setOpenSettings(false);
155
+ };
156
+ return /*#__PURE__*/_jsxs("div", {
13
157
  style: {
14
158
  minWidth: "100%",
15
159
  maxWidth: "100%",
16
160
  position: "relative"
17
161
  },
18
- children: /*#__PURE__*/_jsx("table", {
162
+ children: [/*#__PURE__*/_jsx("table", {
19
163
  style: {
20
164
  backgroundColor: bgColor,
21
- border: `1px solid ${borderColor}`
165
+ border: `1px solid ${borderColor}`,
166
+ width: "auto"
22
167
  },
23
168
  children: /*#__PURE__*/_jsx("tbody", {
24
169
  ...attributes,
25
170
  children: children
26
171
  })
27
- })
172
+ }), /*#__PURE__*/_jsx(ToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(TablePopup, {
173
+ element: tableProps?.styleProps || {},
174
+ onSave: onSave,
175
+ onClose: onClose,
176
+ customProps: customProps
177
+ }) : null]
28
178
  });
29
179
  };
30
180
  export default Table;
@@ -1,89 +1,50 @@
1
- import React, { useState } from "react";
2
- import { Transforms, Editor, Element } from "slate";
1
+ import React, { useState, useEffect } from "react";
2
+ import { Editor, Element } from "slate";
3
3
  import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
4
- import { IconButton } from "@mui/material";
5
- import AlignHorizontalLeftIcon from "@mui/icons-material/AlignHorizontalLeft";
6
- import AlignHorizontalRightIcon from "@mui/icons-material/AlignHorizontalRight";
7
- import AlignVerticalTopIcon from "@mui/icons-material/AlignVerticalTop";
8
- import AlignVerticalBottomIcon from "@mui/icons-material/AlignVerticalBottom";
9
- import DeleteForeverIcon from "@mui/icons-material/DeleteForever";
10
- import SettingsIcon from "@mui/icons-material/Settings";
11
- import DeleteCellIcon from "./DeleteCellIcon";
12
- import DeleteRowIcon from "./DeleteRowIcon";
4
+ import useTableResize from "../../utils/customHooks/useTableResize";
13
5
  import { TableUtil } from "../../utils/table";
14
- import TablePopup from "./TablePopup";
15
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { Fragment as _Fragment } from "react/jsx-runtime";
16
8
  import { jsxs as _jsxs } from "react/jsx-runtime";
17
- const TABLE_MENUS = [{
18
- Icon: AlignHorizontalRightIcon,
19
- text: "Insert Columns to the Right",
20
- action: {
21
- type: "insertColumn",
22
- position: "after"
23
- }
24
- }, {
25
- Icon: AlignHorizontalLeftIcon,
26
- text: "Insert Columns to the Left",
27
- action: {
28
- type: "insertColumn",
29
- position: "at"
30
- }
31
- }, {
32
- Icon: AlignVerticalTopIcon,
33
- text: "Insert Row Above",
34
- action: {
35
- type: "insertRow",
36
- positon: "at"
37
- }
38
- }, {
39
- Icon: AlignVerticalBottomIcon,
40
- text: "Insert Row Below",
41
- action: {
42
- type: "insertRow",
43
- position: "after"
44
- }
45
- }, {
46
- Icon: DeleteRowIcon,
47
- text: "Delete Row",
48
- action: {
49
- type: "deleteRow"
50
- }
51
- }, {
52
- Icon: DeleteCellIcon,
53
- text: "Delete Column",
54
- action: {
55
- type: "deleteColumn"
56
- }
57
- }, {
58
- Icon: SettingsIcon,
59
- text: "Settings",
60
- action: {
61
- type: "settings"
62
- }
63
- }, {
64
- Icon: DeleteForeverIcon,
65
- text: "Remove Table",
66
- action: {
67
- type: "remove"
68
- }
69
- }];
9
+ const Resizer = ({
10
+ onMouseDown
11
+ }) => {
12
+ return /*#__PURE__*/_jsx(_Fragment, {
13
+ children: /*#__PURE__*/_jsx("button", {
14
+ contentEditable: false,
15
+ onPointerDown: onMouseDown,
16
+ className: "cell-resizer",
17
+ style: {
18
+ width: "10px",
19
+ height: "100%",
20
+ position: "absolute",
21
+ right: "0px",
22
+ top: 0
23
+ }
24
+ })
25
+ });
26
+ };
70
27
  const TableCell = props => {
71
28
  const {
72
29
  element,
73
30
  attributes,
74
- children,
75
- customProps
31
+ children
76
32
  } = props;
77
- const [openSetttings, setOpenSettings] = useState(false);
78
33
  const {
79
34
  bgColor,
80
35
  borderColor
81
36
  } = element;
37
+ const [parentDOM, setParentDOM] = useState(null);
82
38
  const editor = useSlateStatic();
83
39
  const selected = useSelected();
40
+ const path = ReactEditor.findPath(editor, element);
41
+ const isHeader = path.length >= 2 ? path[path.length - 2] === 0 : false;
42
+ const [size, onMouseDown, resizing, onLoad] = useTableResize({
43
+ parentDOM,
44
+ size: element?.size
45
+ });
84
46
  const table = new TableUtil(editor);
85
47
  const tableProps = table.getTableProps();
86
- const path = ReactEditor.findPath(editor, element);
87
48
  const [tableNode] = Editor.nodes(editor, {
88
49
  at: path,
89
50
  match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
@@ -94,87 +55,38 @@ const TableCell = props => {
94
55
  });
95
56
  const [parentProps] = tableNode || [{}];
96
57
  const [rowProps] = rowNode || [{}];
97
- const handleInsert = ({
98
- type,
99
- position
100
- }) => () => {
101
- Transforms.select(editor, editor.selection);
102
- switch (type) {
103
- case "insertRow":
104
- table.insertRow(position);
105
- break;
106
- case "insertColumn":
107
- table.insertColumn(position);
108
- break;
109
- case "deleteRow":
110
- table.deleteRow();
111
- break;
112
- case "deleteColumn":
113
- table.deleteColumn();
114
- break;
115
- case "remove":
116
- table.removeTable();
117
- break;
118
- case "settings":
119
- if (tableProps) {
120
- onSettings(true);
121
- }
122
- break;
123
- default:
124
- return;
58
+ useEffect(() => {
59
+ if (editor && element) {
60
+ const dom = ReactEditor.toDOMNode(editor, element);
61
+ setParentDOM(dom);
62
+ onLoad(element?.size || {
63
+ width: 100,
64
+ height: 100
65
+ });
125
66
  }
126
- };
127
- const ToolBar = () => {
128
- return selected ? /*#__PURE__*/_jsx("div", {
129
- contentEditable: false,
130
- style: {
131
- position: "absolute",
132
- top: "-40px",
133
- left: 0,
134
- backgroundColor: "#CCC"
135
- },
136
- children: TABLE_MENUS.map(({
137
- Icon,
138
- text,
139
- action
140
- }) => {
141
- return /*#__PURE__*/_jsx(IconButton, {
142
- title: text,
143
- onClick: handleInsert(action),
144
- children: /*#__PURE__*/_jsx(Icon, {})
145
- }, text);
146
- })
147
- }) : null;
148
- };
149
- const onSettings = () => {
150
- setOpenSettings(true);
151
- };
152
- const onSave = data => {
153
- const updateData = {
154
- ...data
155
- };
156
- delete updateData.children;
157
- delete updateData.type;
158
- table.updateTableStyle(updateData, {
159
- ...tableProps
160
- });
161
- onClose();
162
- };
163
- const onClose = () => {
164
- setOpenSettings(false);
165
- };
67
+ }, []);
68
+ useEffect(() => {
69
+ if (!resizing && tableProps) {
70
+ table.updateTableStyle({
71
+ "col.size": size
72
+ }, tableProps);
73
+ }
74
+ }, [resizing]);
75
+ const sizeProps = isHeader ? {
76
+ width: size?.width || 100
77
+ } : {};
166
78
  return /*#__PURE__*/_jsxs("td", {
167
79
  ...element.attr,
168
80
  ...attributes,
81
+ className: "editor-table-cell",
169
82
  style: {
83
+ position: "relative",
170
84
  backgroundColor: bgColor,
171
- border: `3px solid ${borderColor || rowProps?.borderColor || parentProps?.borderColor}`
85
+ border: `3px solid ${borderColor || rowProps?.borderColor || parentProps?.borderColor}`,
86
+ ...(sizeProps || {})
172
87
  },
173
- children: [/*#__PURE__*/_jsx(ToolBar, {}), children, openSetttings ? /*#__PURE__*/_jsx(TablePopup, {
174
- element: tableProps?.styleProps || {},
175
- onSave: onSave,
176
- onClose: onClose,
177
- customProps: customProps
88
+ children: [children, selected && isHeader ? /*#__PURE__*/_jsx(Resizer, {
89
+ onMouseDown: onMouseDown
178
90
  }) : null]
179
91
  });
180
92
  };
@@ -0,0 +1,13 @@
1
+ .editor-table-cell {
2
+ /* min-width: 100px; */
3
+ }
4
+
5
+ .editor-table-cell .cell-resizer {
6
+ width: 10px;
7
+ height: 100%;
8
+ position: absolute;
9
+ right: 0;
10
+ top: 0;
11
+ visibility: visible;
12
+ background-color: aqua;
13
+ }