@flozy/editor 1.6.0 → 1.6.2

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 (110) hide show
  1. package/dist/Editor/CommonEditor.js +131 -104
  2. package/dist/Editor/DialogWrapper.js +3 -0
  3. package/dist/Editor/Editor.css +27 -36
  4. package/dist/Editor/Elements/Accordion/AccordionButton.js +13 -12
  5. package/dist/Editor/Elements/AppHeader/AppHeader.js +2 -2
  6. package/dist/Editor/Elements/Button/ButtonToolIcon.js +10 -9
  7. package/dist/Editor/Elements/Button/EditorButton.js +4 -20
  8. package/dist/Editor/Elements/Carousel/Carousel.js +47 -28
  9. package/dist/Editor/Elements/Carousel/CarouselButton.js +7 -8
  10. package/dist/Editor/Elements/Color Picker/ColorButtons.js +133 -0
  11. package/dist/Editor/Elements/Color Picker/ColorPicker.js +39 -19
  12. package/dist/Editor/Elements/Color Picker/Styles.js +51 -0
  13. package/dist/Editor/Elements/Color Picker/defaultColors.js +1 -1
  14. package/dist/Editor/Elements/Embed/Embed.js +33 -126
  15. package/dist/Editor/Elements/Embed/Image.js +15 -7
  16. package/dist/Editor/Elements/Embed/Video.js +12 -5
  17. package/dist/Editor/Elements/Emoji/EmojiButton.js +73 -0
  18. package/dist/Editor/Elements/Emoji/EmojiPicker.js +0 -0
  19. package/dist/Editor/Elements/Form/Form.js +24 -12
  20. package/dist/Editor/Elements/Form/FormButton.js +11 -9
  21. package/dist/Editor/Elements/Form/FormElements/FormText.js +1 -0
  22. package/dist/Editor/Elements/Form/FormField.js +7 -1
  23. package/dist/Editor/Elements/Grid/Grid.js +15 -4
  24. package/dist/Editor/Elements/Grid/GridButton.js +52 -29
  25. package/dist/Editor/Elements/Grid/GridItem.js +30 -19
  26. package/dist/Editor/Elements/Grid/Styles.js +11 -0
  27. package/dist/Editor/Elements/List/CheckList.js +57 -0
  28. package/dist/Editor/Elements/List/CheckListButton.js +24 -0
  29. package/dist/Editor/Elements/NewLine/NewLineButton.js +14 -14
  30. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +17 -60
  31. package/dist/Editor/Elements/Signature/Signature.js +9 -3
  32. package/dist/Editor/Elements/Signature/SignatureButton.js +10 -9
  33. package/dist/Editor/Elements/Signature/SignaturePopup.js +50 -7
  34. package/dist/Editor/Elements/SimpleText.js +62 -0
  35. package/dist/Editor/Elements/Table/Styles.js +66 -0
  36. package/dist/Editor/Elements/Table/Table.js +33 -16
  37. package/dist/Editor/Elements/Table/TableCell.js +54 -24
  38. package/dist/Editor/Elements/Table/TableSelector.js +13 -15
  39. package/dist/Editor/Elements/Table/table.css +0 -10
  40. package/dist/Editor/Elements/TopBanner/Styles.js +33 -0
  41. package/dist/Editor/Elements/TopBanner/TopBanner.js +106 -0
  42. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +47 -0
  43. package/dist/Editor/Styles/EditorStyles.js +50 -0
  44. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +8 -3
  45. package/dist/Editor/Toolbar/FormatTools/FontFamilyDropdown.js +16 -16
  46. package/dist/Editor/Toolbar/FormatTools/FontSize.js +17 -17
  47. package/dist/Editor/Toolbar/FormatTools/TextSize.js +13 -3
  48. package/dist/Editor/Toolbar/FormatTools/index.js +3 -2
  49. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +101 -0
  50. package/dist/Editor/Toolbar/Mini/Options/Options.js +17 -0
  51. package/dist/Editor/Toolbar/Mini/Styles.js +30 -0
  52. package/dist/Editor/Toolbar/PopupTool/AddElements.js +32 -0
  53. package/dist/Editor/Toolbar/PopupTool/AddTemplates.js +115 -0
  54. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +65 -0
  55. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +160 -6
  56. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +263 -80
  57. package/dist/Editor/Toolbar/PopupTool/index.js +33 -44
  58. package/dist/Editor/Toolbar/Toolbar.js +178 -134
  59. package/dist/Editor/Toolbar/styles.css +1 -1
  60. package/dist/Editor/Toolbar/toolbarGroups.js +83 -34
  61. package/dist/Editor/assets/svg/AddElementIcon.js +29 -0
  62. package/dist/Editor/assets/svg/AddTemplateIcon.js +29 -0
  63. package/dist/Editor/assets/svg/TextIcon.js +29 -0
  64. package/dist/Editor/common/Icon.js +48 -5
  65. package/dist/Editor/common/ImageList.js +10 -4
  66. package/dist/Editor/common/ImageSelector/ImageSelector.js +117 -0
  67. package/dist/Editor/common/ImageSelector/Options/AddLink.js +44 -0
  68. package/dist/Editor/common/ImageSelector/Options/ChooseAssets.js +39 -0
  69. package/dist/Editor/common/ImageSelector/Options/Upload.js +30 -0
  70. package/dist/Editor/common/ImageSelector/Styles.js +41 -0
  71. package/dist/Editor/common/ImageUploader.js +19 -8
  72. package/dist/Editor/common/MentionsPopup/ElementsListCard.js +66 -0
  73. package/dist/Editor/common/MentionsPopup/MentionsListCard.js +70 -0
  74. package/dist/Editor/common/MentionsPopup/Styles.js +68 -0
  75. package/dist/Editor/common/MentionsPopup/index.js +129 -0
  76. package/dist/Editor/common/Shorthands/elements.js +191 -0
  77. package/dist/Editor/common/Shorthands/index.js +7 -0
  78. package/dist/Editor/common/Shorthands/mentions.js +8 -0
  79. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +21 -73
  80. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +3 -20
  81. package/dist/Editor/common/StyleBuilder/index.js +0 -1
  82. package/dist/Editor/common/StyleBuilder/tableStyle.js +9 -5
  83. package/dist/Editor/common/ToolbarIcon.js +43 -0
  84. package/dist/Editor/common/Uploader.js +10 -7
  85. package/dist/Editor/common/iconslist.js +46 -1
  86. package/dist/Editor/hooks/useMentions.js +104 -17
  87. package/dist/Editor/hooks/useMouseMove.js +53 -0
  88. package/dist/Editor/hooks/useScroll.js +26 -0
  89. package/dist/Editor/plugins/withEmbeds.js +12 -0
  90. package/dist/Editor/service/fileupload.js +2 -2
  91. package/dist/Editor/utils/SlateUtilityFunctions.js +61 -10
  92. package/dist/Editor/utils/carousel.js +5 -2
  93. package/dist/Editor/utils/carouselItem.js +2 -2
  94. package/dist/Editor/utils/customHooks/useResize.js +2 -3
  95. package/dist/Editor/utils/customHooks/useTableResize.js +2 -1
  96. package/dist/Editor/utils/embed.js +19 -5
  97. package/dist/Editor/utils/emoji.js +8 -0
  98. package/dist/Editor/utils/events.js +49 -12
  99. package/dist/Editor/utils/form.js +3 -9
  100. package/dist/Editor/utils/formfield.js +2 -1
  101. package/dist/Editor/utils/grid.js +44 -8
  102. package/dist/Editor/utils/gridItem.js +4 -3
  103. package/dist/Editor/utils/insertNewLine.js +12 -0
  104. package/dist/Editor/utils/mentions.js +14 -10
  105. package/dist/Editor/utils/pageSettings.js +67 -0
  106. package/dist/Editor/utils/signature.js +6 -8
  107. package/dist/Editor/utils/table.js +79 -18
  108. package/dist/Editor/utils/topBanner.js +58 -0
  109. package/package.json +4 -1
  110. package/dist/Editor/common/MentionsPopup.js +0 -56
@@ -0,0 +1,57 @@
1
+ import React from "react";
2
+ import { ReactEditor, useReadOnly, useSlateStatic } from "slate-react";
3
+ import { Transforms } from "slate";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { jsxs as _jsxs } from "react/jsx-runtime";
6
+ const CheckList = ({
7
+ attributes,
8
+ children,
9
+ element
10
+ }) => {
11
+ const editor = useSlateStatic();
12
+ const readOnly = useReadOnly();
13
+ const {
14
+ checked
15
+ } = element;
16
+ return /*#__PURE__*/_jsxs("div", {
17
+ ...attributes,
18
+ className: "checkbox-list",
19
+ style: {
20
+ textAlign: element.alignment || "left"
21
+ },
22
+ children: [/*#__PURE__*/_jsxs("span", {
23
+ contentEditable: false,
24
+ className: "checkbox-edit",
25
+ children: [/*#__PURE__*/_jsx("input", {
26
+ type: "checkbox",
27
+ className: "styled-checkbox",
28
+ checked: checked,
29
+ style: {
30
+ marginRight: "8px"
31
+ },
32
+ onChange: event => {
33
+ const path = ReactEditor.findPath(editor, element);
34
+ const newProperties = {
35
+ checked: event.target.checked
36
+ };
37
+ Transforms.setNodes(editor, newProperties, {
38
+ at: path
39
+ });
40
+ }
41
+ }), /*#__PURE__*/_jsx("span", {
42
+ className: "checkbox-inner"
43
+ })]
44
+ }), /*#__PURE__*/_jsx("span", {
45
+ contentEditable: !readOnly,
46
+ suppressContentEditableWarning: true,
47
+ className: "",
48
+ style: {
49
+ flex: 1,
50
+ opacity: checked ? 1 : 1,
51
+ textDecoration: !checked ? "none" : "none"
52
+ },
53
+ children: children
54
+ })]
55
+ });
56
+ };
57
+ export default CheckList;
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import Icon from "../../common/Icon";
3
+ import { toggleBlock } from "../../utils/SlateUtilityFunctions";
4
+ import ToolbarIcon from "../../common/ToolbarIcon";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { Fragment as _Fragment } from "react/jsx-runtime";
7
+ const CheckListButton = props => {
8
+ const {
9
+ editor
10
+ } = props;
11
+ const handleClick = type => () => {
12
+ toggleBlock(editor, type);
13
+ };
14
+ return /*#__PURE__*/_jsx(_Fragment, {
15
+ children: /*#__PURE__*/_jsx(ToolbarIcon, {
16
+ title: "Check List",
17
+ icon: /*#__PURE__*/_jsx(Icon, {
18
+ icon: "checkList"
19
+ }),
20
+ onClick: handleClick("checkList")
21
+ })
22
+ });
23
+ };
24
+ export default CheckListButton;
@@ -1,10 +1,12 @@
1
1
  import React from "react";
2
- import { IconButton, Tooltip } from "@mui/material";
3
2
  import KeyboardReturnIcon from "@mui/icons-material/KeyboardReturn";
4
3
  import { Transforms } from "slate";
5
4
  import { ReactEditor, useSlateStatic } from "slate-react";
5
+ import ToolbarIcon from "../../common/ToolbarIcon";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
- const NewLineButton = () => {
7
+ const NewLineButton = ({
8
+ icoBtnType
9
+ }) => {
8
10
  const editor = useSlateStatic();
9
11
  const onAddNewLine = () => {
10
12
  Transforms.insertNodes(editor, [{
@@ -18,19 +20,17 @@ const NewLineButton = () => {
18
20
  });
19
21
  ReactEditor.focus(editor);
20
22
  };
21
- return /*#__PURE__*/_jsx(Tooltip, {
23
+ return /*#__PURE__*/_jsx(ToolbarIcon, {
22
24
  title: "New Line",
23
- arrow: true,
24
- children: /*#__PURE__*/_jsx(IconButton, {
25
- onClick: onAddNewLine,
26
- children: /*#__PURE__*/_jsx(KeyboardReturnIcon, {
27
- sx: {
28
- fill: "#64748B",
29
- width: "18px",
30
- height: "18px"
31
- }
32
- })
33
- })
25
+ onClick: onAddNewLine,
26
+ icon: /*#__PURE__*/_jsx(KeyboardReturnIcon, {
27
+ sx: {
28
+ fill: "#64748B",
29
+ width: "18px",
30
+ height: "18px"
31
+ }
32
+ }),
33
+ icoBtnType: icoBtnType
34
34
  });
35
35
  };
36
36
  export default NewLineButton;
@@ -1,15 +1,16 @@
1
1
  import React, { useState } from "react";
2
- import { Transforms, Editor, Element } from "slate";
3
- import { IconButton, Tooltip } from "@mui/material";
4
- import { useSlateStatic, ReactEditor } from "slate-react";
2
+ import { useSlateStatic } from "slate-react";
5
3
  import PageSettingsPopup from "./PageSettingsPopup";
6
4
  import { PageSettings } from "../../common/iconslist";
5
+ import ToolbarIcon from "../../common/ToolbarIcon";
6
+ import { getPageSettings, updatePageSettings } from "../../utils/pageSettings";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  import { Fragment as _Fragment } from "react/jsx-runtime";
9
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const PageSettingsButton = props => {
11
11
  const {
12
- customProps
12
+ customProps,
13
+ icoBtnType
13
14
  } = props;
14
15
  const [openSetttings, setOpenSettings] = useState(false);
15
16
  const editor = useSlateStatic();
@@ -17,77 +18,33 @@ const PageSettingsButton = props => {
17
18
  const {
18
19
  element,
19
20
  path
20
- } = getPageSettingsPath();
21
+ } = getPageSettings(editor);
21
22
  setOpenSettings({
22
23
  element: element?.pageProps || {},
23
24
  path
24
25
  });
25
26
  };
26
- const getPageSettingsPath = () => {
27
+ const onSave = data => {
27
28
  try {
28
- const [pageSettingsNode] = Editor.nodes(editor, {
29
- at: [],
30
- match: n => {
31
- return !Editor.isEditor(n) && Element.isElement(n) && n.type === "page-settings";
32
- }
33
- });
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
- }
29
+ const updateData = {
30
+ ...data
31
+ };
32
+ delete updateData.children;
33
+ updatePageSettings(editor, updateData);
34
+ onClose();
45
35
  } catch (err) {
46
36
  console.log(err);
47
- return {
48
- path: null
49
- };
50
- }
51
- };
52
- const onSave = data => {
53
- const updateData = {
54
- ...data
55
- };
56
- delete updateData.children;
57
- if (openSetttings?.path) {
58
- Transforms.setNodes(editor, {
59
- pageProps: {
60
- ...updateData
61
- }
62
- }, {
63
- at: openSetttings?.path
64
- });
65
- } else {
66
- Transforms.insertNodes(editor, [{
67
- type: "page-settings",
68
- pageProps: {
69
- ...updateData
70
- },
71
- children: [{
72
- text: ""
73
- }]
74
- }], {
75
- at: [editor.children.length]
76
- });
77
37
  }
78
- onClose();
79
38
  };
80
39
  const onClose = () => {
81
40
  setOpenSettings(false);
82
41
  };
83
42
  return /*#__PURE__*/_jsxs(_Fragment, {
84
- children: [/*#__PURE__*/_jsx(Tooltip, {
43
+ children: [/*#__PURE__*/_jsx(ToolbarIcon, {
85
44
  title: "Page Settings",
86
- arrow: true,
87
- children: /*#__PURE__*/_jsx(IconButton, {
88
- onClick: onSettings,
89
- children: /*#__PURE__*/_jsx(PageSettings, {})
90
- })
45
+ onClick: onSettings,
46
+ icon: /*#__PURE__*/_jsx(PageSettings, {}),
47
+ icoBtnType: icoBtnType
91
48
  }), openSetttings !== false ? /*#__PURE__*/_jsx(PageSettingsPopup, {
92
49
  element: openSetttings?.element || {},
93
50
  onSave: onSave,
@@ -29,22 +29,28 @@ const Signature = props => {
29
29
  }],
30
30
  ...data
31
31
  }], {
32
- at: [...path, 0]
32
+ at: path
33
33
  });
34
34
  };
35
35
  const onClear = () => {
36
36
  Transforms.removeNodes(editor, {
37
- at: [...path, 0]
37
+ at: path
38
38
  });
39
39
  };
40
40
  return /*#__PURE__*/_jsxs("div", {
41
41
  className: `signature-container`,
42
42
  ...attributes,
43
+ contentEditable: false,
43
44
  children: [!isSigned ? /*#__PURE__*/_jsx(SignaturePopup, {
44
45
  customProps: customProps,
45
46
  onSave: onSave,
46
47
  onClear: onClear
47
- }) : null, children]
48
+ }) : null, /*#__PURE__*/_jsx("span", {
49
+ style: {
50
+ display: "none"
51
+ },
52
+ children: children
53
+ })]
48
54
  });
49
55
  };
50
56
  export default Signature;
@@ -1,22 +1,23 @@
1
1
  import React from "react";
2
- import { IconButton, Tooltip } from "@mui/material";
3
2
  import { insertSignature } from "../../utils/signature";
4
- import { SignatureIcon } from "../../common/iconslist";
3
+ import ToolbarIcon from "../../common/ToolbarIcon";
4
+ import Icon from "../../common/Icon";
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  const SignatureButton = props => {
7
7
  const {
8
- editor
8
+ editor,
9
+ icoBtnType
9
10
  } = props;
10
11
  const handleInsertSignature = () => {
11
12
  insertSignature(editor);
12
13
  };
13
- return /*#__PURE__*/_jsx(Tooltip, {
14
+ return /*#__PURE__*/_jsx(ToolbarIcon, {
14
15
  title: "Signature",
15
- arrow: true,
16
- children: /*#__PURE__*/_jsx(IconButton, {
17
- onClick: handleInsertSignature,
18
- children: /*#__PURE__*/_jsx(SignatureIcon, {})
19
- })
16
+ onClick: handleInsertSignature,
17
+ icon: /*#__PURE__*/_jsx(Icon, {
18
+ icon: "signature"
19
+ }),
20
+ icoBtnType: icoBtnType
20
21
  });
21
22
  };
22
23
  export default SignatureButton;
@@ -19,6 +19,10 @@ const SignaturePopup = props => {
19
19
  customProps,
20
20
  className
21
21
  } = props;
22
+ const {
23
+ readOnly,
24
+ metadata
25
+ } = customProps;
22
26
  const [open, setOpen] = useState(false);
23
27
  const [tab, setTab] = useState(0);
24
28
  const SeletectedTab = SignatureOptions[tab];
@@ -38,7 +42,13 @@ const SignaturePopup = props => {
38
42
  resource_id: customProps?.page_id
39
43
  });
40
44
  onSave(signedData);
41
- handleClose();
45
+ // manual delay
46
+ setTimeout(() => {
47
+ if (metadata && metadata?.actionHandler) {
48
+ metadata?.actionHandler("signed", signedData);
49
+ }
50
+ handleClose();
51
+ }, 0);
42
52
  };
43
53
  const handleClear = () => {
44
54
  onClear();
@@ -77,7 +87,7 @@ const SignaturePopup = props => {
77
87
  return /*#__PURE__*/_jsxs(_Fragment, {
78
88
  children: [/*#__PURE__*/_jsx("div", {
79
89
  className: `signature-btn-container`,
80
- children: /*#__PURE__*/_jsx("button", {
90
+ children: /*#__PURE__*/_jsx(Button, {
81
91
  contentEditable: false,
82
92
  onClick: handleOpen,
83
93
  children: "Sign Here"
@@ -187,13 +197,14 @@ const SignaturePopup = props => {
187
197
  sx: {
188
198
  pt: 2
189
199
  },
200
+ spacing: 1,
190
201
  style: {
191
202
  display: "flex",
192
203
  justifyContent: "space-between"
193
204
  },
194
205
  children: [/*#__PURE__*/_jsxs(Grid, {
195
206
  item: true,
196
- xs: 5,
207
+ xs: 6,
197
208
  style: {
198
209
  display: "flex",
199
210
  alignItems: "center"
@@ -207,7 +218,10 @@ const SignaturePopup = props => {
207
218
  children: "Name:"
208
219
  })
209
220
  }), /*#__PURE__*/_jsx(Grid, {
221
+ item: true,
222
+ xs: 12,
210
223
  children: /*#__PURE__*/_jsx(TextField, {
224
+ fullWidth: true,
211
225
  id: "signedBy",
212
226
  name: "signedBy",
213
227
  placeholder: "Enter Name",
@@ -217,7 +231,7 @@ const SignaturePopup = props => {
217
231
  })]
218
232
  }), /*#__PURE__*/_jsxs(Grid, {
219
233
  item: true,
220
- xs: 5,
234
+ xs: 6,
221
235
  style: {
222
236
  display: "flex",
223
237
  alignItems: "center"
@@ -231,6 +245,8 @@ const SignaturePopup = props => {
231
245
  children: "Date:"
232
246
  })
233
247
  }), /*#__PURE__*/_jsx(Grid, {
248
+ item: true,
249
+ xs: 12,
234
250
  children: /*#__PURE__*/_jsx(DatePicker, {
235
251
  showIcon: true,
236
252
  id: "signedOn",
@@ -244,6 +260,33 @@ const SignaturePopup = props => {
244
260
  }
245
261
  })
246
262
  })]
263
+ }), /*#__PURE__*/_jsxs(Grid, {
264
+ item: true,
265
+ xs: 6,
266
+ style: {
267
+ display: "flex",
268
+ alignItems: "center"
269
+ },
270
+ children: [/*#__PURE__*/_jsx(Grid, {
271
+ style: {
272
+ marginRight: "8px"
273
+ },
274
+ children: /*#__PURE__*/_jsx("label", {
275
+ htmlFor: "signedByEmail",
276
+ children: "Email:"
277
+ })
278
+ }), /*#__PURE__*/_jsx(Grid, {
279
+ item: true,
280
+ xs: 12,
281
+ children: /*#__PURE__*/_jsx(TextField, {
282
+ fullWidth: true,
283
+ id: "signedByEmail",
284
+ name: "signedByEmail",
285
+ placeholder: "Enter Email",
286
+ size: "small",
287
+ onChange: onChange
288
+ })
289
+ })]
247
290
  })]
248
291
  })]
249
292
  }), /*#__PURE__*/_jsxs(DialogActions, {
@@ -293,11 +336,11 @@ const SignaturePopup = props => {
293
336
  })
294
337
  })]
295
338
  }) : null, /*#__PURE__*/_jsxs(_Fragment, {
296
- children: [/*#__PURE__*/_jsx(Button, {
339
+ children: [!readOnly ? /*#__PURE__*/_jsx(Button, {
297
340
  onClick: handleClear,
298
341
  className: "secondaryBtn",
299
- children: "Clear"
300
- }), /*#__PURE__*/_jsx(Button, {
342
+ children: "Delete"
343
+ }) : null, /*#__PURE__*/_jsx(Button, {
301
344
  onClick: handleSave,
302
345
  className: "primaryBtn",
303
346
  children: "Save"
@@ -0,0 +1,62 @@
1
+ import React from "react";
2
+ import { useSlateStatic, useSelected, ReactEditor } from "slate-react";
3
+ import { Node } from "slate";
4
+ import { Box } from "@mui/material";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ const SimpleTextStyle = () => ({
8
+ root: {
9
+ position: "relative",
10
+ padding: "0px",
11
+ "& .placeholder-simple-text": {
12
+ color: "#B8C5D7",
13
+ background: "#FFF",
14
+ position: "absolute",
15
+ zIndex: -1,
16
+ left: "4px",
17
+ top: 0,
18
+ bottom: 0,
19
+ margin: "auto",
20
+ pointerEvents: "none",
21
+ height: "18px",
22
+ padding: "0px",
23
+ "& .bg-pad-sl": {
24
+ padding: "2px 4px 2px 4px",
25
+ background: "#F2F6FA",
26
+ fontSize: "12px"
27
+ }
28
+ }
29
+ }
30
+ });
31
+ const SimpleText = props => {
32
+ const {
33
+ element,
34
+ attributes,
35
+ children
36
+ } = props;
37
+ const classes = SimpleTextStyle();
38
+ const editor = useSlateStatic();
39
+ const selected = useSelected();
40
+ const path = ReactEditor.findPath(editor, element);
41
+ // const parentPath = Path.parent(path);
42
+ // const parentNode = Node.get(editor, parentPath);
43
+ const noContent = Node.string(Node.get(editor, path)).length === 0 && path.length === 1;
44
+ const emptyEditor = editor.children.length === 1 && path[0] === 0 && path.length === 1 && !selected;
45
+ return /*#__PURE__*/_jsxs(Box, {
46
+ ...element.attr,
47
+ ...attributes,
48
+ className: `simple-text`,
49
+ sx: classes.root,
50
+ children: [children, selected && noContent ? /*#__PURE__*/_jsxs("span", {
51
+ className: "placeholder-simple-text",
52
+ children: ["Type ", /*#__PURE__*/_jsx("span", {
53
+ className: "bg-pad-sl",
54
+ children: "/"
55
+ }), " for browse elements"]
56
+ }) : null, emptyEditor ? /*#__PURE__*/_jsx("span", {
57
+ className: "placeholder-simple-text",
58
+ children: "Write Something..."
59
+ }) : null]
60
+ });
61
+ };
62
+ export default SimpleText;
@@ -0,0 +1,66 @@
1
+ const TableStyles = () => ({
2
+ tableToolBar: {
3
+ position: "absolute",
4
+ top: "-34px",
5
+ left: 0,
6
+ backgroundColor: "#FFF",
7
+ border: "1px solid rgba(37, 99, 235, 0.32)",
8
+ boxShadow: "0px 0px 10px 0px rgba(0, 0, 0, 0.16)",
9
+ borderRadius: "0px",
10
+ width: "32px",
11
+ height: "32px",
12
+ overflow: "hidden",
13
+ transition: "all 0.3s",
14
+ "& button": {
15
+ "& svg": {
16
+ width: "16px",
17
+ height: "16px"
18
+ }
19
+ },
20
+ "&.active": {
21
+ width: "auto",
22
+ "& .toggle": {
23
+ rotate: "180deg"
24
+ }
25
+ },
26
+ "& .toolbtn": {
27
+ "& svg": {
28
+ stroke: "rgb(100, 116, 139)"
29
+ }
30
+ }
31
+ },
32
+ table: {
33
+ "& td": {
34
+ padding: "8px 8px",
35
+ border: "1px solid #E0E0E0",
36
+ "&.selection": {
37
+ "& *::selection": {
38
+ background: "transparent"
39
+ }
40
+ }
41
+ },
42
+ "& .selection-area-tc": {
43
+ position: "absolute",
44
+ width: "100%",
45
+ height: "100%",
46
+ top: 0,
47
+ left: 0,
48
+ background: "rgba(149, 218, 255, .3)",
49
+ pointerEvents: "none"
50
+ }
51
+ },
52
+ cellResizer: {
53
+ position: "absolute",
54
+ cursor: "col-resize",
55
+ right: "-2px",
56
+ top: 0,
57
+ background: "transparent",
58
+ width: "4px",
59
+ borderRadius: "0px",
60
+ zIndex: 1,
61
+ "&:hover": {
62
+ background: "#ccc"
63
+ }
64
+ }
65
+ });
66
+ export default TableStyles;
@@ -1,18 +1,21 @@
1
1
  import React, { useState } from "react";
2
2
  import { Transforms } from "slate";
3
3
  import { useSelected, useSlateStatic } from "slate-react";
4
- import { IconButton } from "@mui/material";
4
+ import { Box, IconButton, Tooltip, Table as TableComp, TableBody } from "@mui/material";
5
5
  import AlignHorizontalLeftIcon from "@mui/icons-material/AlignHorizontalLeft";
6
6
  import AlignHorizontalRightIcon from "@mui/icons-material/AlignHorizontalRight";
7
7
  import AlignVerticalTopIcon from "@mui/icons-material/AlignVerticalTop";
8
8
  import AlignVerticalBottomIcon from "@mui/icons-material/AlignVerticalBottom";
9
9
  import DeleteForeverIcon from "@mui/icons-material/DeleteForever";
10
+ import ArrowRightIcon from "@mui/icons-material/ArrowRight";
11
+ import MoreVertIcon from "@mui/icons-material/MoreVert";
10
12
  import SettingsIcon from "@mui/icons-material/Settings";
11
13
  import DeleteCellIcon from "./DeleteCellIcon";
12
14
  import DeleteRowIcon from "./DeleteRowIcon";
13
15
  import { TableUtil } from "../../utils/table";
14
16
  import TablePopup from "./TablePopup";
15
17
  import "./table.css";
18
+ import TableStyles from "./Styles";
16
19
  import { jsx as _jsx } from "react/jsx-runtime";
17
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
21
  const TABLE_MENUS = [{
@@ -75,10 +78,12 @@ const Table = props => {
75
78
  children,
76
79
  customProps
77
80
  } = props;
81
+ const classes = TableStyles();
78
82
  const {
79
83
  readOnly
80
84
  } = customProps;
81
85
  const [openSetttings, setOpenSettings] = useState(false);
86
+ const [exandTools, setExpandTools] = useState(false);
82
87
  const {
83
88
  bgColor,
84
89
  borderColor
@@ -117,27 +122,38 @@ const Table = props => {
117
122
  return;
118
123
  }
119
124
  };
125
+ const handleExpand = () => {
126
+ setExpandTools(!exandTools);
127
+ };
120
128
  const ToolBar = () => {
121
- return selected ? /*#__PURE__*/_jsx("div", {
129
+ return selected ? /*#__PURE__*/_jsxs(Box, {
130
+ component: "div",
122
131
  contentEditable: false,
123
- className: "tableToolBar",
124
- style: {
125
- position: "absolute",
126
- top: "-40px",
127
- left: 0,
128
- backgroundColor: "#CCC"
129
- },
130
- children: TABLE_MENUS.map(({
132
+ className: `tableToolBar ${exandTools ? "active" : ""}`,
133
+ sx: classes.tableToolBar,
134
+ children: [/*#__PURE__*/_jsx(Tooltip, {
135
+ title: "Show Tools",
136
+ arrow: true,
137
+ onClick: handleExpand,
138
+ children: /*#__PURE__*/_jsx(IconButton, {
139
+ className: "toolbtn toggle",
140
+ children: /*#__PURE__*/_jsx(MoreVertIcon, {})
141
+ })
142
+ }), TABLE_MENUS.map(({
131
143
  Icon,
132
144
  text,
133
145
  action
134
146
  }) => {
135
- return /*#__PURE__*/_jsx(IconButton, {
147
+ return /*#__PURE__*/_jsx(Tooltip, {
136
148
  title: text,
137
- onClick: handleAction(action),
138
- children: /*#__PURE__*/_jsx(Icon, {})
149
+ arrow: true,
150
+ children: /*#__PURE__*/_jsx(IconButton, {
151
+ className: "toolbtn",
152
+ onClick: handleAction(action),
153
+ children: /*#__PURE__*/_jsx(Icon, {})
154
+ })
139
155
  }, text);
140
- })
156
+ })]
141
157
  }) : null;
142
158
  };
143
159
  const onSettings = () => {
@@ -163,13 +179,14 @@ const Table = props => {
163
179
  maxWidth: "100%",
164
180
  position: "relative"
165
181
  },
166
- children: [/*#__PURE__*/_jsx("table", {
182
+ children: [/*#__PURE__*/_jsx(TableComp, {
183
+ sx: classes.table,
167
184
  style: {
168
185
  backgroundColor: bgColor,
169
186
  border: `1px solid ${borderColor}`,
170
187
  width: "auto"
171
188
  },
172
- children: /*#__PURE__*/_jsx("tbody", {
189
+ children: /*#__PURE__*/_jsx(TableBody, {
173
190
  ...attributes,
174
191
  children: children
175
192
  })