@flozy/editor 3.9.1 → 3.9.3

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 (116) hide show
  1. package/dist/Editor/ChatEditor.js +16 -0
  2. package/dist/Editor/CommonEditor.js +109 -177
  3. package/dist/Editor/Editor.css +12 -8
  4. package/dist/Editor/Elements/AI/AIInput.js +18 -17
  5. package/dist/Editor/Elements/AI/CustomSelect.js +12 -19
  6. package/dist/Editor/Elements/AI/PopoverAIInput.js +28 -23
  7. package/dist/Editor/Elements/AI/Styles.js +1 -2
  8. package/dist/Editor/Elements/Accordion/Accordion.js +1 -1
  9. package/dist/Editor/Elements/Accordion/AccordionSummary.js +21 -5
  10. package/dist/Editor/Elements/AppHeader/AppHeader.js +4 -26
  11. package/dist/Editor/Elements/Button/EditorButton.js +16 -28
  12. package/dist/Editor/Elements/Color Picker/ColorButtons.js +17 -60
  13. package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  15. package/dist/Editor/Elements/Color Picker/Styles.js +1 -2
  16. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +3 -12
  17. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +1 -2
  18. package/dist/Editor/Elements/Grid/Grid.js +3 -27
  19. package/dist/Editor/Elements/Grid/GridItem.js +1 -3
  20. package/dist/Editor/Elements/Link/Link.js +1 -6
  21. package/dist/Editor/Elements/Link/LinkButton.js +2 -4
  22. package/dist/Editor/Elements/Link/LinkPopup.js +3 -10
  23. package/dist/Editor/Elements/List/CheckList.js +2 -1
  24. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
  25. package/dist/Editor/Elements/Signature/SignaturePopup.js +3 -14
  26. package/dist/Editor/Elements/Table/Styles.js +1 -23
  27. package/dist/Editor/Elements/Table/Table.js +1 -2
  28. package/dist/Editor/Elements/Table/TableCell.js +7 -69
  29. package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +0 -1
  30. package/dist/Editor/MiniEditor.js +1 -3
  31. package/dist/Editor/Styles/EditorStyles.js +1 -1
  32. package/dist/Editor/Toolbar/Basic/index.js +2 -4
  33. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +2 -26
  34. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  35. package/dist/Editor/Toolbar/FormatTools/TextSize.js +18 -29
  36. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -4
  37. package/dist/Editor/Toolbar/Mini/Options/Options.js +0 -10
  38. package/dist/Editor/Toolbar/Mini/Styles.js +0 -7
  39. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +11 -4
  40. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +86 -213
  41. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +1 -2
  42. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +16 -22
  43. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +7 -52
  44. package/dist/Editor/Toolbar/PopupTool/index.js +17 -7
  45. package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
  46. package/dist/Editor/assets/svg/AIIcons.js +1 -153
  47. package/dist/Editor/assets/svg/AddTemplateIcon.js +10 -13
  48. package/dist/Editor/assets/svg/TextIcon.js +5 -8
  49. package/dist/Editor/common/ColorPickerButton.js +18 -26
  50. package/dist/Editor/common/DnD/DragHandleButton.js +47 -56
  51. package/dist/Editor/common/Icon.js +3 -43
  52. package/dist/Editor/common/LinkSettings/NavComponents.js +2 -5
  53. package/dist/Editor/common/LinkSettings/index.js +2 -4
  54. package/dist/Editor/common/LinkSettings/navOptions.js +2 -7
  55. package/dist/Editor/common/LinkSettings/style.js +8 -11
  56. package/dist/Editor/common/Section/index.js +7 -57
  57. package/dist/Editor/common/Section/styles.js +0 -11
  58. package/dist/Editor/common/Shorthands/elements.js +0 -54
  59. package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +2 -1
  60. package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
  61. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +29 -33
  62. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +25 -31
  63. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  64. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +7 -29
  65. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +4 -13
  66. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +4 -14
  67. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  68. package/dist/Editor/common/iconslist.js +31 -0
  69. package/dist/Editor/helper/index.js +22 -0
  70. package/dist/Editor/helper/theme.js +4 -189
  71. package/dist/Editor/hooks/useMouseMove.js +1 -4
  72. package/dist/Editor/hooks/useWindowMessage.js +7 -10
  73. package/dist/Editor/plugins/withEmbeds.js +1 -1
  74. package/dist/Editor/plugins/withHTML.js +1 -1
  75. package/dist/Editor/plugins/withTable.js +1 -1
  76. package/dist/Editor/theme/ThemeList.js +173 -50
  77. package/dist/Editor/utils/SlateUtilityFunctions.js +27 -169
  78. package/dist/Editor/utils/button.js +17 -1
  79. package/dist/Editor/utils/events.js +2 -54
  80. package/dist/Editor/utils/font.js +37 -40
  81. package/dist/Editor/utils/helper.js +2 -31
  82. package/dist/Editor/utils/table.js +43 -51
  83. package/package.json +3 -4
  84. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +0 -73
  85. package/dist/Editor/Elements/AI/VoiceToText/index.js +0 -177
  86. package/dist/Editor/Elements/AI/VoiceToText/style.js +0 -40
  87. package/dist/Editor/Elements/Link/LinkPopupStyles.js +0 -28
  88. package/dist/Editor/Elements/Redo/RedoButton.js +0 -14
  89. package/dist/Editor/Elements/Undo/UndoButton.js +0 -14
  90. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -438
  91. package/dist/Editor/assets/svg/RedoIcon.js +0 -27
  92. package/dist/Editor/assets/svg/SettingsIcon.js +0 -28
  93. package/dist/Editor/assets/svg/ThemeIcons.js +0 -291
  94. package/dist/Editor/assets/svg/UndoIcon.js +0 -27
  95. package/dist/Editor/common/CustomColorPicker/index.js +0 -106
  96. package/dist/Editor/common/CustomColorPicker/style.js +0 -53
  97. package/dist/Editor/common/CustomDialog/index.js +0 -94
  98. package/dist/Editor/common/CustomDialog/style.js +0 -67
  99. package/dist/Editor/common/CustomSelect.js +0 -33
  100. package/dist/Editor/hooks/useEditorTheme.js +0 -139
  101. package/dist/Editor/theme/index.js +0 -144
  102. package/dist/Editor/themeSettings/ActiveTheme.js +0 -72
  103. package/dist/Editor/themeSettings/buttons/index.js +0 -290
  104. package/dist/Editor/themeSettings/buttons/style.js +0 -21
  105. package/dist/Editor/themeSettings/colorTheme/index.js +0 -290
  106. package/dist/Editor/themeSettings/colorTheme/style.js +0 -77
  107. package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -123
  108. package/dist/Editor/themeSettings/fonts/index.js +0 -213
  109. package/dist/Editor/themeSettings/fonts/style.js +0 -44
  110. package/dist/Editor/themeSettings/icons.js +0 -60
  111. package/dist/Editor/themeSettings/index.js +0 -320
  112. package/dist/Editor/themeSettings/style.js +0 -152
  113. package/dist/Editor/themeSettingsAI/icons.js +0 -96
  114. package/dist/Editor/themeSettingsAI/index.js +0 -356
  115. package/dist/Editor/themeSettingsAI/saveTheme.js +0 -190
  116. package/dist/Editor/themeSettingsAI/style.js +0 -247
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flozy/editor",
3
- "version": "3.9.1",
3
+ "version": "3.9.3",
4
4
  "description": "An Editor for flozy app brain",
5
5
  "files": [
6
6
  "dist"
@@ -46,7 +46,6 @@
46
46
  "slate-react": "^0.98.3",
47
47
  "styled-components": "^5.3.11",
48
48
  "use-debounce": "^10.0.0",
49
- "wavesurfer.js": "^7.8.6",
50
49
  "web-vitals": "^2.1.4",
51
50
  "y-websocket": "^1.5.0",
52
51
  "yjs": "^13.6.8"
@@ -62,10 +61,10 @@
62
61
  "build": "NODE_OPTIONS='--max_old_space_size=4096' craco build",
63
62
  "test": "craco test --passWithNoTests",
64
63
  "eject": "react-scripts eject",
65
- "storybook": "storybook dev -p 6006",
64
+ "storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook dev -p 6006",
66
65
  "build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
67
66
  "publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
68
- "publish:local": "rm -rf /Users/agenciflow08/Documents/flozyapp/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agenciflow08/Documents/flozyapp/client/node_modules/@flozy/editor/dist --copy-files"
67
+ "publish:local": "rm -rf /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agenciflow08/Documents/flozy/client/node_modules/@flozy/editor/dist --copy-files"
69
68
  },
70
69
  "eslintConfig": {
71
70
  "extends": [
@@ -1,73 +0,0 @@
1
- import { Box } from "@mui/material";
2
- import { useEffect, useRef, useState } from "react";
3
- import WaveSurfer from "wavesurfer.js";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const SoundWave = props => {
6
- const {
7
- audioChunks = null
8
- } = props; // Initialize to null if not provided
9
- const waveContent = useRef(null);
10
- const wavesurfer = useRef(null);
11
- const [playOnce, setPlayOnce] = useState(false);
12
- useEffect(() => {
13
- if (waveContent.current) {
14
- if (wavesurfer.current) {
15
- wavesurfer.current.destroy();
16
- }
17
- wavesurfer.current = WaveSurfer.create({
18
- container: waveContent.current,
19
- waveColor: "#2563EB",
20
- progressColor: "#2563EB",
21
- cursorWidth: 0,
22
- // Disable the cursor
23
- barWidth: 2,
24
- barGap: 1,
25
- barRadius: 2,
26
- scrollParent: false,
27
- // Prevent scrolling
28
- height: waveContent.current.clientHeight // Set height to fit container
29
- });
30
-
31
- // Fit the waveform to the container width
32
- const resize = () => {
33
- if (wavesurfer.current) {
34
- const containerWidth = waveContent.current.clientWidth;
35
- const duration = wavesurfer.current.getDuration();
36
- if (duration > 0) {
37
- const newZoom = containerWidth / duration;
38
- wavesurfer.current.zoom(newZoom);
39
- }
40
- }
41
- };
42
- window.addEventListener("resize", resize);
43
- resize();
44
- return () => {
45
- window.removeEventListener("resize", resize);
46
- };
47
- }
48
- }, []);
49
- useEffect(() => {
50
- if (wavesurfer.current && audioChunks) {
51
- const audioBlob = new Blob(audioChunks, {
52
- type: "audio/webm"
53
- });
54
- const recordedUrl = URL.createObjectURL(audioBlob);
55
- wavesurfer.current.load(recordedUrl).then().catch(e => console.error("Error loading audio: ", e));
56
- if (!playOnce) {
57
- setPlayOnce(true);
58
- }
59
- } else if (wavesurfer.current && !audioChunks) {
60
- // Clear the waveform when audioChunks is null
61
- wavesurfer.current.empty();
62
- }
63
- }, [audioChunks, playOnce]);
64
- return /*#__PURE__*/_jsx(Box, {
65
- ref: waveContent,
66
- style: {
67
- width: "100%",
68
- height: "100%",
69
- overflow: "hidden"
70
- }
71
- });
72
- };
73
- export const AudioWave = SoundWave;
@@ -1,177 +0,0 @@
1
- import { useState, useEffect, useRef, cloneElement } from "react";
2
- import PropTypes from "prop-types";
3
- import STTStyles from "./style";
4
- import { Grid, IconButton, Box } from "@mui/material";
5
- import { AudioWave } from "./AudioWave";
6
- import { CloseGreyCircle, PauseRecordingIcon, TickBlueCircle } from "../../../assets/svg/AIIcons";
7
- import { MODES } from "../helper";
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- import { jsxs as _jsxs } from "react/jsx-runtime";
10
- function STT(props) {
11
- const {
12
- children,
13
- otherProps,
14
- onSend
15
- } = props;
16
- const {
17
- services
18
- } = otherProps;
19
- const classes = STTStyles();
20
- const [isRecording, setIsRecording] = useState(false);
21
- const [mediaRecorder, setMediaRecorder] = useState(null);
22
- const [audioChunks, setAudioChunks] = useState([]);
23
- const [chunkIndex, setChunkIndex] = useState(0);
24
- const audioChunksRef = useRef([]);
25
- const [transcription, setTranscription] = useState("");
26
- const [showPause, setShowPause] = useState(true);
27
- const [isAILoading, setAILoading] = useState(false);
28
- const setChunk = event => {
29
- if (event.data.size > 0) {
30
- setAudioChunks(prev => {
31
- const updatedChunks = [...prev, event.data];
32
- audioChunksRef.current = updatedChunks; // Update ref manually
33
- return updatedChunks;
34
- });
35
- }
36
- };
37
- const sendChunck = async (isLast = false) => {
38
- if (audioChunksRef.current.length > 0) {
39
- const audioBlob = new Blob(audioChunksRef.current, {
40
- type: "audio/webm"
41
- });
42
- const formData = new FormData();
43
- formData.append("audio", audioBlob, `audio_chunk_${chunkIndex}.wav`);
44
- formData.append("chunkIndex", chunkIndex); // Send chunk index to the backend
45
- if (isLast) {
46
- formData.append("isLastChunk", true); // Send chunk index to the backend
47
- } else {
48
- formData.append("isLastChunk", false);
49
- setChunkIndex(prevIndex => prevIndex + 1);
50
- }
51
- const result = await services("speechToText", {
52
- formData
53
- });
54
- setTranscription(result?.data);
55
- await sendChunck();
56
- }
57
- };
58
- const handleStopRecording = () => {
59
- sendChunck(true);
60
- setAudioChunks([]);
61
- };
62
- const startRecording = async () => {
63
- setTranscription("");
64
- const stream = await navigator.mediaDevices.getUserMedia({
65
- audio: true
66
- });
67
- const recorder = new MediaRecorder(stream);
68
- setMediaRecorder(recorder);
69
- recorder.ondataavailable = setChunk;
70
- recorder.onstop = handleStopRecording;
71
- recorder.start(100);
72
- setIsRecording(true);
73
- setTimeout(() => {
74
- sendChunck();
75
- }, 2000);
76
- };
77
- const stopRecording = () => {
78
- if (mediaRecorder) {
79
- mediaRecorder.stop();
80
-
81
- // Stop all tracks to release the microphone
82
- if (mediaRecorder.stream) {
83
- mediaRecorder.stream.getTracks().forEach(track => track.stop());
84
- }
85
- setChunkIndex(0);
86
- setShowPause(false);
87
- }
88
- };
89
- const sendToInfiniti = async () => {
90
- setAILoading(true);
91
- setIsRecording(false);
92
- const result = await services("infinityAI", {
93
- mode: MODES.default,
94
- query: transcription
95
- });
96
- const text = result?.data || "";
97
- onSend("speech_to_text", {
98
- text
99
- });
100
- stopRecording();
101
- setAILoading(false);
102
- };
103
- const closeRecording = () => {
104
- setAudioChunks([]);
105
- stopRecording();
106
- setIsRecording(false);
107
- setShowPause(true);
108
- setTranscription("");
109
- };
110
- useEffect(() => {
111
- audioChunksRef.current = audioChunks;
112
- }, [audioChunks]);
113
- const transcriptionText = transcription && transcription.replace(/\s+/g, "")?.length; // Remove all whitespace characters like \n \t
114
-
115
- return /*#__PURE__*/_jsx(Grid, {
116
- xs: 12,
117
- children: /*#__PURE__*/_jsx(Grid, {
118
- className: classes.SttContainer,
119
- children: !isRecording ? /*#__PURE__*/_jsx(Grid, {
120
- xs: 12,
121
- children: /*#__PURE__*/cloneElement(children, {
122
- startRecording,
123
- isAILoading
124
- })
125
- }) : /*#__PURE__*/_jsxs(Grid, {
126
- xs: 12,
127
- sx: classes.AudioVizualizerContainer,
128
- children: [transcriptionText ? /*#__PURE__*/_jsx(Grid, {
129
- xs: 12,
130
- sx: classes.TranscriptionContainer,
131
- children: /*#__PURE__*/_jsx("pre", {
132
- style: {
133
- whiteSpace: "pre-wrap",
134
- wordWrap: "break-word",
135
- fontFamily: "inherit",
136
- margin: 0
137
- },
138
- children: transcription
139
- })
140
- }) : null, /*#__PURE__*/_jsxs(Grid, {
141
- xs: 12,
142
- sx: classes.AudioVizualizerContent,
143
- children: [/*#__PURE__*/_jsx(Box, {
144
- children: /*#__PURE__*/_jsx(IconButton, {
145
- onClick: closeRecording,
146
- children: /*#__PURE__*/_jsx(CloseGreyCircle, {})
147
- })
148
- }), /*#__PURE__*/_jsx(Box, {
149
- sx: classes.AudioVisualiser,
150
- children: /*#__PURE__*/_jsx(AudioWave, {
151
- audioChunks: audioChunks
152
- })
153
- }), /*#__PURE__*/_jsx(Box, {
154
- children: showPause ? /*#__PURE__*/_jsx(IconButton, {
155
- onClick: stopRecording,
156
- children: /*#__PURE__*/_jsx(PauseRecordingIcon, {})
157
- }) : /*#__PURE__*/_jsx(IconButton, {
158
- onClick: sendToInfiniti,
159
- disabled: !transcriptionText,
160
- style: !transcriptionText ? {
161
- opacity: 0.5
162
- } : {},
163
- children: /*#__PURE__*/_jsx(TickBlueCircle, {})
164
- })
165
- })]
166
- })]
167
- })
168
- })
169
- });
170
- }
171
- STT.defaultProps = {
172
- classes: {}
173
- };
174
- STT.propTypes = {
175
- classes: PropTypes.object
176
- };
177
- export const VoiceToText = STT;
@@ -1,40 +0,0 @@
1
- const styles = () => ({
2
- SttContainer: {
3
- display: "flex",
4
- width: "100%",
5
- padding: "12px",
6
- zIndex: 1
7
- },
8
- STTInput: {
9
- width: "100%",
10
- borderRadius: "8px",
11
- "&& .MuiOutlinedInput-root .MuiOutlinedInput-notchedOutline": {
12
- borderColor: "#2563EB"
13
- },
14
- "&& .MuiOutlinedInput-root": {
15
- background: "rgba(252, 250, 255, 1)"
16
- }
17
- },
18
- AudioVizualizerContainer: {
19
- width: "100%",
20
- display: "flex",
21
- background: "rgba(252, 250, 255, 1)",
22
- borderRadius: "8px",
23
- border: "1px solid #2563EB",
24
- alignItems: "center",
25
- flexWrap: "wrap"
26
- },
27
- AudioVizualizerContent: {
28
- display: "flex",
29
- height: "50px",
30
- width: "100%"
31
- },
32
- AudioVisualiser: {
33
- flexGrow: "1",
34
- height: "100%"
35
- },
36
- TranscriptionContainer: {
37
- padding: "12px"
38
- }
39
- });
40
- export default styles;
@@ -1,28 +0,0 @@
1
- const LinkPopupStyles = themeType => ({
2
- addLinkField: {
3
- "& .MuiOutlinedInput-input": {
4
- fontSize: "12px",
5
- fontWeight: 500,
6
- color: themeType === "dark" ? "#FFFFFF !important" : "#000000 !important"
7
- },
8
- "& .MuiFormHelperText-root": {
9
- color: themeType === "dark" ? "#FFFFFF !important" : "#000000 !important"
10
- },
11
- "& .MuiOutlinedInput-root": {
12
- boxShadow: "0px 4px 10px rgba(0, 0, 0, 0.16)",
13
- color: themeType === "dark" ? "#FFFFFF !important" : "#000000 !important",
14
- borderRadius: "7px",
15
- "& fieldset": {
16
- borderColor: "#D8DDE1"
17
- },
18
- "&:hover fieldset": {
19
- borderColor: "#64748B"
20
- },
21
- "&.Mui-focused fieldset": {
22
- borderColor: "#2563EB"
23
- },
24
- "& .MuiFormLabel-root": {}
25
- }
26
- }
27
- });
28
- export default LinkPopupStyles;
@@ -1,14 +0,0 @@
1
- import React from "react";
2
- import { useSlateStatic } from "slate-react";
3
- import RedoIcon from "../../assets/svg/RedoIcon";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const RedoButton = () => {
6
- const editor = useSlateStatic();
7
- const onRedo = () => {
8
- editor?.redo();
9
- };
10
- return /*#__PURE__*/_jsx(RedoIcon, {
11
- onClick: onRedo
12
- });
13
- };
14
- export default RedoButton;
@@ -1,14 +0,0 @@
1
- import React from "react";
2
- import { useSlateStatic } from "slate-react";
3
- import UndoIcon from "../../assets/svg/UndoIcon";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const UndoButton = () => {
6
- const editor = useSlateStatic();
7
- const onUndo = () => {
8
- editor?.undo();
9
- };
10
- return /*#__PURE__*/_jsx(UndoIcon, {
11
- onClick: onUndo
12
- });
13
- };
14
- export default UndoButton;