@flozy/editor 1.1.1 → 1.1.4

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 (92) hide show
  1. package/dist/Editor/CollaborativeEditor.js +7 -2
  2. package/dist/Editor/CommonEditor.js +59 -37
  3. package/dist/Editor/Editor.css +209 -12
  4. package/dist/Editor/Elements/Accordion/Accordion.js +100 -0
  5. package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +20 -0
  6. package/dist/Editor/Elements/Accordion/AccordionButton.js +22 -0
  7. package/dist/Editor/Elements/Accordion/AccordionDetails.js +18 -0
  8. package/dist/Editor/Elements/Accordion/AccordionSummary.js +69 -0
  9. package/dist/Editor/Elements/Accordion/AccordionTitlePopup.js +20 -0
  10. package/dist/Editor/Elements/Button/ButtonPopup.js +20 -0
  11. package/dist/Editor/Elements/Button/ButtonToolIcon.js +19 -0
  12. package/dist/Editor/Elements/Button/EditorButton.js +124 -0
  13. package/dist/Editor/Elements/Carousel/Arrows.js +39 -0
  14. package/dist/Editor/Elements/Carousel/Carousel.js +82 -0
  15. package/dist/Editor/Elements/Carousel/CarouselButton.js +19 -0
  16. package/dist/Editor/Elements/Carousel/CarouselItem.js +13 -0
  17. package/dist/Editor/Elements/Carousel/slick-theme.min.css +143 -0
  18. package/dist/Editor/Elements/Carousel/slick.min.css +83 -0
  19. package/dist/Editor/Elements/Color Picker/ColorPicker.js +1 -1
  20. package/dist/Editor/Elements/Embed/Embed.css +22 -2
  21. package/dist/Editor/Elements/Embed/Embed.js +89 -74
  22. package/dist/Editor/Elements/Embed/EmbedPopup.js +23 -0
  23. package/dist/Editor/Elements/Embed/Image.js +92 -10
  24. package/dist/Editor/Elements/Embed/Video.js +31 -5
  25. package/dist/Editor/Elements/Equation/EquationButton.js +12 -12
  26. package/dist/Editor/Elements/Grid/Grid.js +64 -8
  27. package/dist/Editor/Elements/Grid/GridButton.js +2 -4
  28. package/dist/Editor/Elements/Grid/GridItem.js +59 -5
  29. package/dist/Editor/Elements/Grid/GridItemPopup.js +20 -0
  30. package/dist/Editor/Elements/Grid/GridPopup.js +22 -0
  31. package/dist/Editor/Elements/ID/Id.js +1 -1
  32. package/dist/Editor/Elements/ImageText/ImageText.js +14 -0
  33. package/dist/Editor/Elements/ImageText/ImageTextWrapper.js +14 -0
  34. package/dist/Editor/Elements/Link/LinkButton.js +1 -1
  35. package/dist/Editor/Elements/NewLine/NewLineButton.js +2 -1
  36. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +88 -0
  37. package/dist/Editor/Elements/PageSettings/PageSettingsPopup.js +22 -0
  38. package/dist/Editor/Elements/Signature/Signature.js +50 -0
  39. package/dist/Editor/Elements/Signature/SignatureButton.js +19 -0
  40. package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +39 -0
  41. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +84 -0
  42. package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +50 -0
  43. package/dist/Editor/Elements/Signature/SignatureOptions/index.js +5 -0
  44. package/dist/Editor/Elements/Signature/SignaturePopup.js +243 -0
  45. package/dist/Editor/Elements/Signature/Signed.js +80 -0
  46. package/dist/Editor/Elements/Table/DeleteCellIcon.js +24 -0
  47. package/dist/Editor/Elements/Table/DeleteRowIcon.js +24 -0
  48. package/dist/Editor/Elements/Table/Table.js +9 -1
  49. package/dist/Editor/Elements/Table/TableCell.js +181 -0
  50. package/dist/Editor/Elements/Table/TablePopup.js +22 -0
  51. package/dist/Editor/Elements/Table/TableRow.js +31 -0
  52. package/dist/Editor/Elements/Table/TableSelector.js +62 -68
  53. package/dist/Editor/Toolbar/Toolbar.js +47 -10
  54. package/dist/Editor/Toolbar/styles.css +20 -11
  55. package/dist/Editor/Toolbar/toolbarGroups.js +17 -19
  56. package/dist/Editor/common/Button.js +4 -8
  57. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +23 -0
  58. package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +35 -0
  59. package/dist/Editor/common/StyleBuilder/buttonStyle.js +47 -0
  60. package/dist/Editor/common/StyleBuilder/embedImageStyle.js +63 -0
  61. package/dist/Editor/common/StyleBuilder/fieldTypes/alignment.js +88 -0
  62. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +87 -0
  63. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +136 -0
  64. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +126 -0
  65. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +89 -0
  66. package/dist/Editor/common/StyleBuilder/fieldTypes/elementSize.js +110 -0
  67. package/dist/Editor/common/StyleBuilder/fieldTypes/gridSize.js +42 -0
  68. package/dist/Editor/common/StyleBuilder/fieldTypes/imageTexts.js +75 -0
  69. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +21 -0
  70. package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +46 -0
  71. package/dist/Editor/common/StyleBuilder/gridItemStyle.js +51 -0
  72. package/dist/Editor/common/StyleBuilder/gridStyle.js +51 -0
  73. package/dist/Editor/common/StyleBuilder/index.js +114 -0
  74. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +10 -0
  75. package/dist/Editor/common/StyleBuilder/tableStyle.js +38 -0
  76. package/dist/Editor/common/Uploader.js +87 -0
  77. package/dist/Editor/plugins/withEmbeds.js +12 -5
  78. package/dist/Editor/plugins/withTable.js +5 -4
  79. package/dist/Editor/service/fileupload.js +17 -0
  80. package/dist/Editor/utils/SlateUtilityFunctions.js +72 -23
  81. package/dist/Editor/utils/accordion.js +25 -0
  82. package/dist/Editor/utils/button.js +11 -0
  83. package/dist/Editor/utils/carousel.js +13 -0
  84. package/dist/Editor/utils/carouselItem.js +19 -0
  85. package/dist/Editor/utils/customHooks/useContextMenu.js +8 -8
  86. package/dist/Editor/utils/customHooks/useResize.js +1 -1
  87. package/dist/Editor/utils/font.js +59 -0
  88. package/dist/Editor/utils/helper.js +32 -0
  89. package/dist/Editor/utils/imageText.js +19 -0
  90. package/dist/Editor/utils/signature.js +23 -0
  91. package/dist/Editor/utils/table.js +172 -0
  92. package/package.json +11 -3
@@ -0,0 +1,243 @@
1
+ import React, { useState } from "react";
2
+ import { Dialog, DialogTitle, DialogContent, DialogActions, Button, IconButton, Grid, TextField } from "@mui/material";
3
+ import CloseIcon from "@mui/icons-material/Close";
4
+ import BrushIcon from "@mui/icons-material/Brush";
5
+ import DatePicker from "react-datepicker";
6
+ import "react-datepicker/dist/react-datepicker.css";
7
+ import SignatureOptions from "./SignatureOptions";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { Fragment as _Fragment } from "react/jsx-runtime";
11
+ const BrushSizes = [1, 3, 5];
12
+ const SignaturePopup = props => {
13
+ const {
14
+ onSave,
15
+ onClear,
16
+ customProps
17
+ } = props;
18
+ const [open, setOpen] = useState(false);
19
+ const [tab, setTab] = useState(0);
20
+ const SeletectedTab = SignatureOptions[tab];
21
+ const [signedData, setSignedData] = useState({});
22
+ const [brush, setBrush] = useState({
23
+ size: 1,
24
+ color: "#000000"
25
+ });
26
+ const handleOpen = () => {
27
+ setOpen(true);
28
+ };
29
+ const handleClose = () => {
30
+ setOpen(false);
31
+ };
32
+ const handleSave = () => {
33
+ onSave(signedData);
34
+ handleClose();
35
+ };
36
+ const handleClear = () => {
37
+ onClear();
38
+ handleClose();
39
+ };
40
+ const onDataChange = data => {
41
+ setSignedData({
42
+ ...signedData,
43
+ ...data
44
+ });
45
+ };
46
+ const onChange = e => {
47
+ setSignedData({
48
+ ...signedData,
49
+ [e.target.name]: e.target.value
50
+ });
51
+ };
52
+ const onBrushSize = val => () => {
53
+ setBrush({
54
+ ...brush,
55
+ size: val
56
+ });
57
+ };
58
+ const onBrushColor = e => {
59
+ setBrush({
60
+ ...brush,
61
+ color: e.target.value
62
+ });
63
+ };
64
+ const onUploadDone = data => {
65
+ setSignedData({
66
+ ...signedData,
67
+ ...data
68
+ });
69
+ handleSave();
70
+ setOpen(false);
71
+ };
72
+ return /*#__PURE__*/_jsxs(_Fragment, {
73
+ children: [/*#__PURE__*/_jsx("div", {
74
+ className: `signature-btn-container`,
75
+ children: /*#__PURE__*/_jsx("button", {
76
+ contentEditable: false,
77
+ onClick: handleOpen,
78
+ children: "Sign Here"
79
+ })
80
+ }), /*#__PURE__*/_jsxs(Dialog, {
81
+ open: open,
82
+ onClose: handleClose,
83
+ fullWidth: true,
84
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
85
+ children: /*#__PURE__*/_jsxs("div", {
86
+ style: {
87
+ display: "flex",
88
+ justifyContent: "space-between"
89
+ },
90
+ children: [/*#__PURE__*/_jsx("div", {
91
+ style: {
92
+ display: "flex"
93
+ },
94
+ children: "Signature"
95
+ }), /*#__PURE__*/_jsx("div", {
96
+ style: {
97
+ display: "flex"
98
+ },
99
+ children: /*#__PURE__*/_jsx(IconButton, {
100
+ onClick: handleClose,
101
+ children: /*#__PURE__*/_jsx(CloseIcon, {})
102
+ })
103
+ })]
104
+ })
105
+ }), /*#__PURE__*/_jsxs(DialogContent, {
106
+ children: [/*#__PURE__*/_jsxs("div", {
107
+ className: "signature-btn-grps",
108
+ children: [/*#__PURE__*/_jsx(Button, {
109
+ onClick: () => setTab(0),
110
+ className: tab === 0 ? "active" : "",
111
+ children: "Draw Signature"
112
+ }), /*#__PURE__*/_jsx(Button, {
113
+ onClick: () => setTab(1),
114
+ className: tab === 1 ? "active" : "",
115
+ children: "Type Signature"
116
+ }), /*#__PURE__*/_jsx(Button, {
117
+ onClick: () => setTab(2),
118
+ className: tab === 2 ? "active" : "",
119
+ children: "Upload Signature"
120
+ })]
121
+ }), /*#__PURE__*/_jsx("div", {
122
+ className: "signature-tab-content",
123
+ children: SeletectedTab ? /*#__PURE__*/_jsx(SeletectedTab, {
124
+ onDataChange: onDataChange,
125
+ customProps: {
126
+ ...(customProps || {}),
127
+ brush: brush
128
+ },
129
+ onUploadDone: onUploadDone
130
+ }) : null
131
+ }), /*#__PURE__*/_jsxs(Grid, {
132
+ container: true,
133
+ padding: 2,
134
+ style: {
135
+ display: "flex",
136
+ justifyContent: "space-between"
137
+ },
138
+ children: [/*#__PURE__*/_jsxs(Grid, {
139
+ item: true,
140
+ xs: 5,
141
+ style: {
142
+ display: "flex",
143
+ alignItems: "center"
144
+ },
145
+ children: [/*#__PURE__*/_jsx(Grid, {
146
+ style: {
147
+ marginRight: "8px"
148
+ },
149
+ children: /*#__PURE__*/_jsx("label", {
150
+ htmlFor: "signedBy",
151
+ children: "Name:"
152
+ })
153
+ }), /*#__PURE__*/_jsx(Grid, {
154
+ children: /*#__PURE__*/_jsx(TextField, {
155
+ id: "signedBy",
156
+ name: "signedBy",
157
+ placeholder: "Enter Name",
158
+ size: "small",
159
+ onChange: onChange
160
+ })
161
+ })]
162
+ }), /*#__PURE__*/_jsxs(Grid, {
163
+ item: true,
164
+ xs: 5,
165
+ style: {
166
+ display: "flex",
167
+ alignItems: "center"
168
+ },
169
+ children: [/*#__PURE__*/_jsx(Grid, {
170
+ style: {
171
+ marginRight: "8px"
172
+ },
173
+ children: /*#__PURE__*/_jsx("label", {
174
+ htmlFor: "signedOn",
175
+ children: "Date:"
176
+ })
177
+ }), /*#__PURE__*/_jsx(Grid, {
178
+ children: /*#__PURE__*/_jsx(DatePicker, {
179
+ showIcon: true,
180
+ id: "signedOn",
181
+ selected: signedData?.signedOn ? new Date(signedData?.signedOn) : new Date(),
182
+ dateFormat: "MM/dd/yyyy",
183
+ onChange: date => {
184
+ setSignedData({
185
+ ...signedData,
186
+ signedOn: new Date(date).toISOString().split("T")[0]
187
+ });
188
+ }
189
+ })
190
+ })]
191
+ })]
192
+ })]
193
+ }), /*#__PURE__*/_jsxs(DialogActions, {
194
+ className: "dialog-actions-si",
195
+ children: [tab === 0 ? /*#__PURE__*/_jsxs(Grid, {
196
+ container: true,
197
+ padding: 2,
198
+ style: {
199
+ display: "flex",
200
+ alignItems: "center"
201
+ },
202
+ children: [/*#__PURE__*/_jsx(Grid, {
203
+ item: true,
204
+ children: /*#__PURE__*/_jsx("input", {
205
+ type: "color",
206
+ className: "brushcolorpic",
207
+ onChange: onBrushColor,
208
+ size: "4",
209
+ value: brush?.color
210
+ })
211
+ }), /*#__PURE__*/_jsx(Grid, {
212
+ item: true,
213
+ children: /*#__PURE__*/_jsx(Grid, {
214
+ className: "dflex alignCenter sizeIcons",
215
+ children: BrushSizes.map(m => {
216
+ return /*#__PURE__*/_jsx(IconButton, {
217
+ onClick: onBrushSize(m),
218
+ disableRipple: true,
219
+ className: brush.size === m ? "active" : "",
220
+ children: /*#__PURE__*/_jsx(BrushIcon, {
221
+ style: {
222
+ width: 24 + m,
223
+ height: 24 + m
224
+ }
225
+ })
226
+ }, `sit-bs-${m}`);
227
+ })
228
+ })
229
+ })]
230
+ }) : null, tab !== 2 ? /*#__PURE__*/_jsxs(_Fragment, {
231
+ children: [/*#__PURE__*/_jsx(Button, {
232
+ onClick: handleClear,
233
+ children: "Clear"
234
+ }), /*#__PURE__*/_jsx(Button, {
235
+ onClick: handleSave,
236
+ children: "Save"
237
+ })]
238
+ }) : null]
239
+ })]
240
+ })]
241
+ });
242
+ };
243
+ export default SignaturePopup;
@@ -0,0 +1,80 @@
1
+ import React, { useState } from "react";
2
+ import DeleteIcon from "@mui/icons-material/Delete";
3
+ import { IconButton } from "@mui/material";
4
+ import { Transforms } from "slate";
5
+ import { useSlateStatic, ReactEditor } from "slate-react";
6
+ import { fontFamilyMap } from "../../utils/font";
7
+ import { formatDate } from "../../utils/helper";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ const Signed = props => {
11
+ const editor = useSlateStatic();
12
+ const {
13
+ attributes,
14
+ element,
15
+ children
16
+ } = props;
17
+ const {
18
+ signature,
19
+ signedBy,
20
+ signedOn,
21
+ signedText,
22
+ fontFamily
23
+ } = element;
24
+ const [selected, setSelected] = useState(false);
25
+ const onSelect = () => {
26
+ setSelected(!selected);
27
+ };
28
+ const onDelete = () => {
29
+ const path = ReactEditor.findPath(editor, element);
30
+ Transforms.removeNodes(editor, {
31
+ at: path
32
+ });
33
+ };
34
+ const renderSign = () => {
35
+ if (signature) {
36
+ return /*#__PURE__*/_jsx("img", {
37
+ src: signature,
38
+ alt: "signature",
39
+ style: {
40
+ width: "150px",
41
+ height: "auto"
42
+ }
43
+ });
44
+ } else if (signedText) {
45
+ return /*#__PURE__*/_jsx("span", {
46
+ className: "signed-text",
47
+ style: {
48
+ fontFamily: fontFamilyMap[fontFamily]
49
+ },
50
+ children: signedText
51
+ });
52
+ }
53
+ return null;
54
+ };
55
+ return /*#__PURE__*/_jsxs("div", {
56
+ className: "signature-signed-wrapper",
57
+ ...attributes,
58
+ children: [/*#__PURE__*/_jsxs("span", {
59
+ className: "signature-signed-span",
60
+ contentEditable: false,
61
+ children: [selected ? /*#__PURE__*/_jsx(IconButton, {
62
+ className: "signed-btn-del",
63
+ onClick: onDelete,
64
+ children: /*#__PURE__*/_jsx(DeleteIcon, {})
65
+ }) : null, /*#__PURE__*/_jsxs("button", {
66
+ className: "signed-btn",
67
+ onClick: onSelect,
68
+ children: [renderSign(), /*#__PURE__*/_jsx("div", {
69
+ style: {
70
+ fontWeight: "bold"
71
+ },
72
+ children: signedBy || ""
73
+ }), /*#__PURE__*/_jsx("div", {
74
+ children: formatDate(signedOn, "MM/DD/YYYY")
75
+ })]
76
+ })]
77
+ }), children]
78
+ });
79
+ };
80
+ export default Signed;
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { jsxs as _jsxs } from "react/jsx-runtime";
4
+ const DeleteCell = () => {
5
+ return /*#__PURE__*/_jsxs("svg", {
6
+ width: "24px",
7
+ height: "24px",
8
+ viewBox: "0 0 24 24",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ children: [/*#__PURE__*/_jsx("path", {
12
+ fillRule: "evenodd",
13
+ clipRule: "evenodd",
14
+ d: "M20 16V20L4 20V4H20V8H18.5V5.5H15V18.5L18.5 18.5V16H20ZM5.5 16.5V18.5H8.5V16.5L5.5 16.5ZM10 16.5V18.5L13.5 18.5V16.5L10 16.5ZM13.5 8.01957V5.5H10V8.01958L13.5 8.01957ZM8.5 8.01958V5.5H5.5V8.01959L8.5 8.01958ZM8.5 9.51958L5.5 9.51959V11.5L8.5 11.5V9.51958ZM8.5 13L5.5 13V15L8.5 15V13ZM10 13V15L13.5 15V13L10 13ZM10 11.5L13.5 11.5V9.51957L10 9.51958V11.5Z",
15
+ fill: "#1F2328"
16
+ }), /*#__PURE__*/_jsx("path", {
17
+ fillRule: "evenodd",
18
+ clipRule: "evenodd",
19
+ d: "M18.7176 13.0606L19.9373 14.2803L20.9979 13.2197L19.7782 12L20.9979 10.7803L19.9372 9.71967L18.7176 10.9393L17.4979 9.71968L16.4373 10.7803L17.6569 12L16.4373 13.2196L17.4979 14.2803L18.7176 13.0606Z",
20
+ fill: "#1F2328"
21
+ })]
22
+ });
23
+ };
24
+ export default DeleteCell;
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { jsxs as _jsxs } from "react/jsx-runtime";
4
+ const DeleteCell = () => {
5
+ return /*#__PURE__*/_jsxs("svg", {
6
+ width: "24px",
7
+ height: "24px",
8
+ viewBox: "0 0 24 24",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ children: [/*#__PURE__*/_jsx("path", {
12
+ fillRule: "evenodd",
13
+ clipRule: "evenodd",
14
+ d: "M20 4H4V20H8V18.5H5.5V13H18.5V18.5H16V20H20V4ZM5.5 8V5.5H8.5V8H5.5ZM10 8V5.5H14L13.9999 8H10ZM15.4999 8L15.5 5.5H18.5V8H15.4999ZM15.4999 9.5H18.5V11.5H15.4998L15.4999 9.5ZM8.5 11.5H5.5V9.5H8.5V11.5ZM10 11.5V9.5H13.9999L13.9998 11.5H10Z",
15
+ fill: "#1F2328"
16
+ }), /*#__PURE__*/_jsx("path", {
17
+ fillRule: "evenodd",
18
+ clipRule: "evenodd",
19
+ d: "M12 18.7804L13.2197 20.0001L14.2803 18.9395L13.0606 17.7197L14.2802 16.5001L13.2196 15.4395L12 16.6591L10.7803 15.4395L9.71968 16.5001L10.9393 17.7197L9.71967 18.9394L10.7803 20.0001L12 18.7804Z",
20
+ fill: "#1F2328"
21
+ })]
22
+ });
23
+ };
24
+ export default DeleteCell;
@@ -5,13 +5,21 @@ const Table = ({
5
5
  children,
6
6
  element
7
7
  }) => {
8
+ const {
9
+ bgColor,
10
+ borderColor
11
+ } = element;
8
12
  return /*#__PURE__*/_jsx("div", {
9
13
  style: {
10
14
  minWidth: "100%",
11
15
  maxWidth: "100%",
12
- overflow: "auto"
16
+ position: "relative"
13
17
  },
14
18
  children: /*#__PURE__*/_jsx("table", {
19
+ style: {
20
+ backgroundColor: bgColor,
21
+ border: `1px solid ${borderColor}`
22
+ },
15
23
  children: /*#__PURE__*/_jsx("tbody", {
16
24
  ...attributes,
17
25
  children: children
@@ -0,0 +1,181 @@
1
+ import React, { useState } from "react";
2
+ import { Transforms, Editor, Element } from "slate";
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";
13
+ import { TableUtil } from "../../utils/table";
14
+ import TablePopup from "./TablePopup";
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ 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
+ }];
70
+ const TableCell = props => {
71
+ const {
72
+ element,
73
+ attributes,
74
+ children,
75
+ customProps
76
+ } = props;
77
+ const [openSetttings, setOpenSettings] = useState(false);
78
+ const {
79
+ bgColor,
80
+ borderColor
81
+ } = element;
82
+ const editor = useSlateStatic();
83
+ const selected = useSelected();
84
+ const table = new TableUtil(editor);
85
+ const tableProps = table.getTableProps();
86
+ const path = ReactEditor.findPath(editor, element);
87
+ const [tableNode] = Editor.nodes(editor, {
88
+ at: path,
89
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
90
+ });
91
+ const [rowNode] = Editor.nodes(editor, {
92
+ at: path,
93
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-row"
94
+ });
95
+ const [parentProps] = tableNode || [{}];
96
+ 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;
125
+ }
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
+ };
166
+ return /*#__PURE__*/_jsxs("td", {
167
+ ...element.attr,
168
+ ...attributes,
169
+ style: {
170
+ backgroundColor: bgColor,
171
+ border: `3px solid ${borderColor || rowProps?.borderColor || parentProps?.borderColor}`
172
+ },
173
+ children: [/*#__PURE__*/_jsx(ToolBar, {}), children, openSetttings ? /*#__PURE__*/_jsx(TablePopup, {
174
+ element: tableProps?.styleProps || {},
175
+ onSave: onSave,
176
+ onClose: onClose,
177
+ customProps: customProps
178
+ }) : null]
179
+ });
180
+ };
181
+ export default TableCell;
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import StyleBuilder from "../../common/StyleBuilder";
3
+ import tableStyle from "../../common/StyleBuilder/tableStyle";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TablePopup = props => {
6
+ const {
7
+ element,
8
+ onSave,
9
+ onClose,
10
+ customProps
11
+ } = props;
12
+ return /*#__PURE__*/_jsx(StyleBuilder, {
13
+ title: "Table",
14
+ type: "gridStyle",
15
+ element: element,
16
+ onSave: onSave,
17
+ onClose: onClose,
18
+ renderTabs: tableStyle,
19
+ customProps: customProps
20
+ });
21
+ };
22
+ export default TablePopup;
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import { Editor, Element } from "slate";
3
+ import { useSlateStatic, ReactEditor } from "slate-react";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const TableRow = props => {
6
+ const {
7
+ attributes,
8
+ children,
9
+ element
10
+ } = props;
11
+ const {
12
+ bgColor,
13
+ borderColor
14
+ } = element;
15
+ const editor = useSlateStatic();
16
+ const path = ReactEditor.findPath(editor, element);
17
+ const [tableNode] = Editor.nodes(editor, {
18
+ at: path,
19
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
20
+ });
21
+ const [tableProps] = tableNode || [{}];
22
+ return /*#__PURE__*/_jsx("tr", {
23
+ ...attributes,
24
+ style: {
25
+ backgroundColor: bgColor,
26
+ border: `1px solid ${borderColor || tableProps?.borderColor}`
27
+ },
28
+ children: children
29
+ });
30
+ };
31
+ export default TableRow;