@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
@@ -0,0 +1,49 @@
1
+ import { Editor, Transforms, Path, Range, Element } from "slate";
2
+ export const createChipTextNode = (href, showInNewTab, text) => ({
3
+ type: "chip-text",
4
+ href,
5
+ target: showInNewTab ? "_blank" : "_self",
6
+ children: [{
7
+ text
8
+ }]
9
+ });
10
+ export const insertChipText = (editor, {
11
+ url,
12
+ showInNewTab
13
+ }) => {
14
+ const {
15
+ selection
16
+ } = editor;
17
+ const chipText = createChipTextNode(url, showInNewTab, "Chip Text");
18
+ if (!!selection) {
19
+ const [parent, parentPath] = Editor.parent(editor, selection.focus.path);
20
+ if (editor.isVoid(parent)) {
21
+ Transforms.insertNodes(editor, {
22
+ type: "paragraph",
23
+ children: [chipText]
24
+ }, {
25
+ at: Path.next(parentPath),
26
+ select: true
27
+ });
28
+ } else if (Range.isCollapsed(selection)) {
29
+ Transforms.insertNodes(editor, chipText, {
30
+ select: true
31
+ });
32
+ } else {
33
+ Transforms.wrapNodes(editor, chipText, {
34
+ split: true
35
+ });
36
+ }
37
+ } else {
38
+ Transforms.insertNodes(editor, {
39
+ type: "paragraph",
40
+ children: [chipText]
41
+ });
42
+ }
43
+ };
44
+ export const removeChipText = (editor, path) => {
45
+ Transforms.unwrapNodes(editor, {
46
+ at: path,
47
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "chip-text"
48
+ });
49
+ };
@@ -0,0 +1,52 @@
1
+ import { Editor, Transforms, Path, Range, Element } from "slate";
2
+ export const createDrawerMenuNode = ({
3
+ text
4
+ }) => ({
5
+ type: "drawer",
6
+ anchor: "left",
7
+ menus: [{
8
+ type: "menu",
9
+ text: "Menu 1",
10
+ url: "http://google.com"
11
+ }],
12
+ children: [{
13
+ text: "Menu"
14
+ }]
15
+ });
16
+ export const insertDrawerMenu = (editor, props) => {
17
+ const {
18
+ selection
19
+ } = editor;
20
+ const drawerMenu = createDrawerMenuNode(props);
21
+ if (!!selection) {
22
+ const [parent, parentPath] = Editor.parent(editor, selection.focus.path);
23
+ if (editor.isVoid(parent)) {
24
+ Transforms.insertNodes(editor, {
25
+ type: "paragraph",
26
+ children: [drawerMenu]
27
+ }, {
28
+ at: Path.next(parentPath),
29
+ select: true
30
+ });
31
+ } else if (Range.isCollapsed(selection)) {
32
+ Transforms.insertNodes(editor, drawerMenu, {
33
+ select: true
34
+ });
35
+ } else {
36
+ Transforms.wrapNodes(editor, drawerMenu, {
37
+ split: true
38
+ });
39
+ }
40
+ } else {
41
+ Transforms.insertNodes(editor, {
42
+ type: "paragraph",
43
+ children: [drawerMenu]
44
+ });
45
+ }
46
+ };
47
+ export const removeDrawerMenu = (editor, path) => {
48
+ Transforms.unwrapNodes(editor, {
49
+ at: path,
50
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "drawer"
51
+ });
52
+ };
@@ -1,28 +1,38 @@
1
- import { Text } from 'slate';
2
- import { getBlock, getMarked } from './SlateUtilityFunctions.js';
3
- import ReactDOMServer from 'react-dom/server';
1
+ import { Text } from "slate";
2
+ import { getBlock, getMarked } from "./SlateUtilityFunctions.js";
3
+ import ReactDOMServer from "react-dom/server";
4
4
  const {
5
- renderToStaticMarkup
5
+ renderToString
6
6
  } = ReactDOMServer;
7
7
  export const serialize = node => {
8
- if (Text.isText(node)) {
9
- let string = getMarked(node, node.text);
10
- string = renderToStaticMarkup(string);
11
- return string;
8
+ try {
9
+ if (Text.isText(node)) {
10
+ let string = getMarked(node, node.text);
11
+ string = renderToString(string);
12
+ return string;
13
+ }
14
+ const children = node.children.map(n => serialize(n)).join("");
15
+ let block = getBlock({
16
+ children,
17
+ element: node
18
+ });
19
+ block = renderToString(block);
20
+ return block;
21
+ } catch (err) {
22
+ console.log(err);
23
+ return null;
12
24
  }
13
- const children = node.children.map(n => serialize(n)).join('');
14
- let block = getBlock({
15
- children,
16
- element: node
17
- });
18
- block = renderToStaticMarkup(block);
19
- return block;
20
25
  };
21
26
  export const serializer = editorValue => {
22
27
  if (editorValue.length > 0) {
23
- return editorValue.map(n => serialize(n)).join('');
28
+ return editorValue.map(n => serialize(n)).join("");
24
29
  }
25
30
  };
26
31
  export const deserializer = body => {
27
32
  console.log(body);
33
+ };
34
+ export const convertToHTML = editorWrapper => {
35
+ if (editorWrapper && editorWrapper?.current) {
36
+ return editorWrapper?.current;
37
+ }
28
38
  };
@@ -1,4 +1,5 @@
1
- import { Transforms, Editor, Range, Element, Path } from "slate";
1
+ import { Transforms, Editor, Range, Element, Path, Node } from "slate";
2
+ import { ReactEditor } from "slate-react";
2
3
  const prefixKey = (obj, pk = "") => {
3
4
  return Object.keys(obj).reduce((a, b) => {
4
5
  a[`${pk}${b}`] = obj[b];
@@ -54,6 +55,30 @@ export class TableUtil {
54
55
  });
55
56
  };
56
57
 
58
+ getDOMNode = path => {
59
+ try {
60
+ const [tableNode] = Editor.nodes(this.editor, {
61
+ at: path,
62
+ match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table"
63
+ });
64
+ const tableDOM = ReactEditor.toDOMNode(this.editor, tableNode[0]);
65
+ return tableDOM;
66
+ } catch (err) {
67
+ console.log(err);
68
+ }
69
+ };
70
+ getTotalWidth = (path, colCount = 0) => {
71
+ try {
72
+ let totalWidth = 0;
73
+ for (let i = 0; i < colCount; i++) {
74
+ const dom = ReactEditor.toDOMNode(this.editor, Node.get(this.editor, [...path, 0, i]));
75
+ totalWidth += parseFloat(dom.style.width);
76
+ }
77
+ return totalWidth;
78
+ } catch (err) {
79
+ console.log(err);
80
+ }
81
+ };
57
82
  insertRow = action => {
58
83
  const {
59
84
  selection
@@ -172,7 +197,6 @@ export class TableUtil {
172
197
  selection
173
198
  } = this.editor;
174
199
  if (!!selection && Range.isCollapsed(selection)) {
175
- console.log("styleProps", styleProps);
176
200
  const tableProps = parseByPrefixKey(styleProps, "table.");
177
201
  const rowProps = parseByPrefixKey(styleProps, "row.");
178
202
  const cellProps = parseByPrefixKey(styleProps, "col.");
@@ -181,7 +205,6 @@ export class TableUtil {
181
205
  currentRowPath,
182
206
  currentTablePath
183
207
  } = paths;
184
- console.log(tableProps, rowProps, cellProps);
185
208
  Transforms.setNodes(this.editor, {
186
209
  ...tableProps
187
210
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -22,6 +22,7 @@
22
22
  "interweave": "^13.1.0",
23
23
  "lint-staged": "^13.2.3",
24
24
  "prettier": "^3.0.1",
25
+ "react-best-gradient-color-picker": "^2.2.23",
25
26
  "react-datepicker": "^4.18.0",
26
27
  "react-icons": "^4.10.1",
27
28
  "react-katex": "^3.0.1",