@flozy/editor 4.0.3 → 4.0.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.
- package/dist/Editor/CommonEditor.js +85 -13
- package/dist/Editor/DialogWrapper.js +4 -3
- package/dist/Editor/Editor.css +28 -2
- package/dist/Editor/Elements/AI/AIInput.js +31 -33
- package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
- package/dist/Editor/Elements/AI/PopoverAIInput.js +119 -132
- package/dist/Editor/Elements/AI/Styles.js +2 -2
- package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
- package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
- package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
- package/dist/Editor/Elements/AI/helper.js +5 -3
- package/dist/Editor/Elements/AppHeader/AppHeader.js +36 -23
- package/dist/Editor/Elements/Button/EditorButton.js +23 -16
- package/dist/Editor/Elements/Carousel/CarouselButton.js +2 -2
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +1 -1
- package/dist/Editor/Elements/Color Picker/Styles.js +1 -0
- package/dist/Editor/Elements/Embed/Image.js +15 -14
- package/dist/Editor/Elements/Embed/Video.js +12 -8
- package/dist/Editor/Elements/Emoji/EmojiButton.js +11 -7
- package/dist/Editor/Elements/Form/Form.js +43 -27
- package/dist/Editor/Elements/Form/FormField.js +21 -10
- package/dist/Editor/Elements/Form/Workflow/index.js +5 -2
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +437 -0
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +206 -0
- package/dist/Editor/Elements/FreeGrid/FreeGridButton.js +23 -0
- package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +236 -0
- package/dist/Editor/Elements/FreeGrid/Options/AddElement.js +44 -0
- package/dist/Editor/Elements/FreeGrid/Options/More.js +24 -0
- package/dist/Editor/Elements/FreeGrid/Options/SectionSettings.js +47 -0
- package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +19 -0
- package/dist/Editor/Elements/FreeGrid/breakpointConstants.js +75 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +214 -0
- package/dist/Editor/Elements/Grid/Grid.js +12 -8
- package/dist/Editor/Elements/Grid/GridItem.js +31 -21
- package/dist/Editor/Elements/Link/LinkPopup.js +69 -13
- package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
- package/dist/Editor/Elements/NewLine/NewLineButton.js +2 -2
- package/dist/Editor/Elements/Signature/Signature.css +13 -6
- package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +2 -1
- package/dist/Editor/Elements/Signature/SignaturePopup.js +186 -31
- package/dist/Editor/Elements/SimpleText/index.js +19 -7
- package/dist/Editor/Elements/SimpleText/style.js +44 -1
- package/dist/Editor/ErrorBoundary.js +30 -0
- package/dist/Editor/Styles/EditorStyles.js +28 -0
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +1 -1
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +2 -2
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +33 -5
- package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
- package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/CustomSelectTool.js +3 -0
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectSuperSubscript.js +59 -0
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +107 -40
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +57 -61
- package/dist/Editor/Toolbar/PopupTool/index.js +13 -3
- package/dist/Editor/Toolbar/Toolbar.js +7 -0
- package/dist/Editor/Toolbar/toolbarGroups.js +15 -5
- package/dist/Editor/assets/svg/AIIcons.js +153 -1
- package/dist/Editor/common/EditorCmds.js +0 -3
- package/dist/Editor/common/EditorIcons.js +7 -7
- package/dist/Editor/common/Icon.js +39 -30
- package/dist/Editor/common/ImageList.js +16 -3
- package/dist/Editor/common/ImageSelector/ImageSelector.js +30 -9
- package/dist/Editor/common/ImageSelector/Styles.js +2 -1
- package/dist/Editor/common/LinkSettings/index.js +2 -1
- package/dist/Editor/common/LinkSettings/style.js +11 -8
- package/dist/Editor/common/MentionsPopup/Styles.js +1 -1
- package/dist/Editor/common/MentionsPopup/index.js +12 -8
- package/dist/Editor/common/RnD/ContextMenu/CMenus.js +142 -0
- package/dist/Editor/common/RnD/ContextMenu/index.js +38 -0
- package/dist/Editor/common/RnD/ContextMenu/styles.js +21 -0
- package/dist/Editor/common/RnD/DragInfo/index.js +31 -0
- package/dist/Editor/common/RnD/DragInfo/styles.js +15 -0
- package/dist/Editor/common/RnD/DragOver/index.js +55 -0
- package/dist/Editor/common/RnD/DragOver/styles.js +23 -0
- package/dist/Editor/common/RnD/ElementOptions/Actions.js +102 -0
- package/dist/Editor/common/RnD/ElementOptions/Icons/LinkIcon.js +26 -0
- package/dist/Editor/common/RnD/ElementOptions/index.js +95 -0
- package/dist/Editor/common/RnD/ElementOptions/styles.js +41 -0
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Link.js +153 -0
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +36 -0
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +60 -0
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/index.js +9 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +47 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +47 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +47 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +48 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +47 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +30 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +47 -0
- package/dist/Editor/common/RnD/ElementSettings/Settings/index.js +17 -0
- package/dist/Editor/common/RnD/ElementSettings/index.js +17 -0
- package/dist/Editor/common/RnD/ElementSettings/settingsConstants.js +18 -0
- package/dist/Editor/common/RnD/ElementSettings/styles.js +94 -0
- package/dist/Editor/common/RnD/GuideLines/BoundaryLine.js +52 -0
- package/dist/Editor/common/RnD/GuideLines/index.js +33 -0
- package/dist/Editor/common/RnD/GuideLines/styles.js +62 -0
- package/dist/Editor/common/RnD/OptionsPopup/index.js +50 -0
- package/dist/Editor/common/RnD/OptionsPopup/style.js +36 -0
- package/dist/Editor/common/RnD/RnDCopy.js +23 -0
- package/dist/Editor/common/RnD/ShadowElement.js +34 -0
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +40 -0
- package/dist/Editor/common/RnD/SwitchViewport/styles.js +24 -0
- package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +63 -0
- package/dist/Editor/common/RnD/TransformHandles/CornerHandle.js +19 -0
- package/dist/Editor/common/RnD/TransformHandles/Icons/BottomRightIcon.js +13 -0
- package/dist/Editor/common/RnD/TransformHandles/SizeHandle.js +20 -0
- package/dist/Editor/common/RnD/TransformHandles/index.js +67 -0
- package/dist/Editor/common/RnD/Utils/alignmentDetection.js +26 -0
- package/dist/Editor/common/RnD/Utils/calculateDropItem.js +98 -0
- package/dist/Editor/common/RnD/Utils/collisionDetection.js +52 -0
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +181 -0
- package/dist/Editor/common/RnD/Utils/index.js +251 -0
- package/dist/Editor/common/RnD/VirtualElement/index.js +77 -0
- package/dist/Editor/common/RnD/VirtualElement/styles.js +27 -0
- package/dist/Editor/common/RnD/VirtualElement/updateAutoProps.js +28 -0
- package/dist/Editor/common/RnD/index.js +567 -0
- package/dist/Editor/common/RnD/styles.js +4 -0
- package/dist/Editor/common/Section/index.js +21 -12
- package/dist/Editor/common/Section/styles.js +7 -4
- package/dist/Editor/common/Shorthands/elements.js +21 -9
- package/dist/Editor/common/StyleBuilder/boxStyle.js +30 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +18 -10
- package/dist/Editor/common/StyleBuilder/fieldTypes/saveAsTemplate.js +18 -5
- package/dist/Editor/common/StyleBuilder/fieldTypes/text.js +4 -2
- package/dist/Editor/common/StyleBuilder/index.js +6 -4
- package/dist/Editor/common/StyleBuilder/sectionStyle.js +13 -2
- package/dist/Editor/common/iconListV2.js +843 -0
- package/dist/Editor/commonStyle.js +6 -0
- package/dist/Editor/helper/RnD/focusOnNewItem.js +39 -0
- package/dist/Editor/helper/RnD/scrollToNewSection.js +24 -0
- package/dist/Editor/helper/breakpoint.js +5 -0
- package/dist/Editor/helper/index.js +139 -0
- package/dist/Editor/helper/theme.js +50 -1
- package/dist/Editor/hooks/useBreakpoints.js +34 -0
- package/dist/Editor/hooks/useMouseMove.js +36 -8
- package/dist/Editor/hooks/useWindowMessage.js +10 -7
- package/dist/Editor/hooks/withCommon.js +2 -1
- package/dist/Editor/hooks/withErrorHandling.js +14 -0
- package/dist/Editor/utils/RnD/RnDCtrlCmds.js +197 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +36 -4
- package/dist/Editor/utils/events.js +5 -0
- package/dist/Editor/utils/form.js +7 -2
- package/dist/Editor/utils/formfield.js +1 -1
- package/dist/Editor/utils/freegrid.js +91 -0
- package/dist/Editor/utils/helper.js +43 -0
- package/dist/Editor/utils/insertAppHeader.js +47 -40
- package/package.json +6 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-unused-vars */
|
|
2
2
|
import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle } from "react";
|
|
3
|
+
import PropTypes from "prop-types";
|
|
3
4
|
import { createEditor, Transforms } from "slate";
|
|
4
5
|
import { Slate, Editable, ReactEditor } from "slate-react";
|
|
5
6
|
import { useDebounce, useDebouncedCallback } from "use-debounce";
|
|
@@ -16,9 +17,7 @@ import { serializeToText } from "./utils/serializeToText";
|
|
|
16
17
|
import { getPageSettings } from "./utils/pageSettings";
|
|
17
18
|
import { getThumbnailImage, invertColor } from "./helper";
|
|
18
19
|
import PopupTool from "./Toolbar/PopupTool";
|
|
19
|
-
import "
|
|
20
|
-
import "./Editor.css";
|
|
21
|
-
import { Box, Button, Typography } from "@mui/material";
|
|
20
|
+
import { Box, Typography, useTheme } from "@mui/material";
|
|
22
21
|
import Shorthands from "./common/Shorthands";
|
|
23
22
|
import MiniToolbar from "./Toolbar/Mini/MiniToolbar";
|
|
24
23
|
import { EditorProvider } from "./hooks/useMouseMove";
|
|
@@ -26,12 +25,17 @@ import TopBanner from "./Elements/TopBanner/TopBanner";
|
|
|
26
25
|
import editorStyles from "./Styles/EditorStyles";
|
|
27
26
|
import DragAndDrop from "./common/DnD";
|
|
28
27
|
import Section from "./common/Section";
|
|
29
|
-
import "animate.css";
|
|
30
28
|
import decorators from "./utils/Decorators";
|
|
31
29
|
import { getTRBLBreakPoints } from "./helper/theme";
|
|
32
|
-
import { handleInsertLastElement,
|
|
30
|
+
import { handleInsertLastElement, isFreeGridFragment, outsideEditorClickLabel } from "./utils/helper";
|
|
33
31
|
import useWindowResize from "./hooks/useWindowResize";
|
|
34
32
|
import PopoverAIInput from "./Elements/AI/PopoverAIInput";
|
|
33
|
+
import RnDCopy from "./common/RnD/RnDCopy";
|
|
34
|
+
import SwitchViewport from "./common/RnD/SwitchViewport/SwitchViewport";
|
|
35
|
+
import { onInsertFragment } from "./utils/RnD/RnDCtrlCmds";
|
|
36
|
+
import "./font.css";
|
|
37
|
+
import "./Editor.css";
|
|
38
|
+
import "animate.css";
|
|
35
39
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
36
40
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
37
41
|
const Item = /*#__PURE__*/forwardRef(({
|
|
@@ -60,7 +64,8 @@ const Leaf = ({
|
|
|
60
64
|
children,
|
|
61
65
|
leaf
|
|
62
66
|
}) => {
|
|
63
|
-
|
|
67
|
+
const theme = useTheme();
|
|
68
|
+
children = getMarked(leaf, children, theme);
|
|
64
69
|
return /*#__PURE__*/_jsx("span", {
|
|
65
70
|
...attributes,
|
|
66
71
|
children: children
|
|
@@ -79,7 +84,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
79
84
|
toolbarOptions,
|
|
80
85
|
otherProps,
|
|
81
86
|
isIframe,
|
|
82
|
-
theme
|
|
87
|
+
theme,
|
|
88
|
+
showViewport = false
|
|
83
89
|
} = props;
|
|
84
90
|
const editorWrapper = useRef();
|
|
85
91
|
const mentionsRef = useRef();
|
|
@@ -99,6 +105,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
99
105
|
});
|
|
100
106
|
const [isScrolling, setIsScrolling] = useState(false);
|
|
101
107
|
const [isTextSelected, setIsTextSelected] = useState(false);
|
|
108
|
+
const [breakpoint, setBreakpoint] = useState("");
|
|
102
109
|
const [size] = useWindowResize();
|
|
103
110
|
const {
|
|
104
111
|
needDotsBG,
|
|
@@ -110,7 +117,6 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
110
117
|
fullWidth = "80%",
|
|
111
118
|
hideTools
|
|
112
119
|
} = otherProps || {};
|
|
113
|
-
const [drag, setDrag] = useState(null);
|
|
114
120
|
const editor = useMemo(() => {
|
|
115
121
|
if (collaborativeEditor) return collaborativeEditor;
|
|
116
122
|
return withCommon(createEditor(), {
|
|
@@ -144,6 +150,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
144
150
|
setValue(draftToSlate({
|
|
145
151
|
data: content
|
|
146
152
|
}));
|
|
153
|
+
if (!ReactEditor.isFocused(editor)) {
|
|
154
|
+
ReactEditor.focus(editor);
|
|
155
|
+
}
|
|
147
156
|
}, [id, content]);
|
|
148
157
|
useEffect(() => {
|
|
149
158
|
if (editorWrapper && editorWrapper?.current && JSON.stringify(loadedValue) !== JSON.stringify(deboundedValue) && isInteracted && onSave) {
|
|
@@ -172,6 +181,17 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
172
181
|
});
|
|
173
182
|
return c;
|
|
174
183
|
};
|
|
184
|
+
|
|
185
|
+
// Example of resetting or re-rendering all nodes
|
|
186
|
+
const reRenderAllNodes = () => {
|
|
187
|
+
const newNodes = JSON.parse(JSON.stringify(value));
|
|
188
|
+
setValue(newNodes); // This will re-render the whole document
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const onSwitchBreakpoint = b => {
|
|
192
|
+
setBreakpoint(b);
|
|
193
|
+
reRenderAllNodes();
|
|
194
|
+
};
|
|
175
195
|
useImperativeHandle(ref, () => ({
|
|
176
196
|
async getThumbnail(needBackground = false, options = {}) {
|
|
177
197
|
try {
|
|
@@ -191,7 +211,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
191
211
|
insertFragments(fragments, clearAll = false, rest = {}) {
|
|
192
212
|
try {
|
|
193
213
|
if (!clearAll) {
|
|
194
|
-
if (
|
|
214
|
+
if (isFreeGridFragment(fragments)) {
|
|
215
|
+
onInsertFragment({
|
|
216
|
+
editor,
|
|
217
|
+
slateNodes: fragments[0] || fragments
|
|
218
|
+
});
|
|
219
|
+
} else if (rest?.nextLine) {
|
|
195
220
|
const {
|
|
196
221
|
anchor
|
|
197
222
|
} = editor?.selection || {};
|
|
@@ -233,6 +258,10 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
233
258
|
h
|
|
234
259
|
});
|
|
235
260
|
},
|
|
261
|
+
switchViewport(bp) {
|
|
262
|
+
console.log("switching breakpoint", bp);
|
|
263
|
+
onSwitchBreakpoint(bp);
|
|
264
|
+
},
|
|
236
265
|
undo() {
|
|
237
266
|
editor?.undo();
|
|
238
267
|
},
|
|
@@ -305,6 +334,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
305
334
|
const onKeyDown = useCallback(event => {
|
|
306
335
|
const isMetaKey = event.metaKey && event.keyCode >= 65 && event.keyCode <= 90;
|
|
307
336
|
const isCtrlKey = event.ctrlKey || isMetaKey;
|
|
337
|
+
// for RnD item move front and back
|
|
338
|
+
const isUpandDown = event.metaKey && [38, 40].indexOf(event.keyCode) > -1;
|
|
308
339
|
if (target && chars.length > 0 && !isCtrlKey) {
|
|
309
340
|
mentionsEvent({
|
|
310
341
|
event,
|
|
@@ -316,7 +347,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
316
347
|
type,
|
|
317
348
|
mentionsRef
|
|
318
349
|
});
|
|
319
|
-
} else if (isCtrlKey) {
|
|
350
|
+
} else if (isCtrlKey || isUpandDown) {
|
|
320
351
|
commands({
|
|
321
352
|
event,
|
|
322
353
|
editor,
|
|
@@ -334,6 +365,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
334
365
|
});
|
|
335
366
|
} else if (event.key === "Enter") {
|
|
336
367
|
enterEvent(event, editor, customProps?.isMobile);
|
|
368
|
+
} else if (event.key === 'Backspace') {
|
|
369
|
+
event.preventDefault();
|
|
370
|
+
editor.deleteBackward();
|
|
337
371
|
}
|
|
338
372
|
}, [chars, editor, target, mentions, setMentions, search, type, mentionsRef]);
|
|
339
373
|
const Overlay = collaborativeEditor && !isReadOnly ? RemoteCursorOverlay : React.Fragment;
|
|
@@ -386,6 +420,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
386
420
|
}
|
|
387
421
|
return style;
|
|
388
422
|
}, [pageBgImage, pageColor]);
|
|
423
|
+
const handleContextMenu = e => {
|
|
424
|
+
if (!readOnly) {
|
|
425
|
+
e.preventDefault();
|
|
426
|
+
e.stopPropagation();
|
|
427
|
+
}
|
|
428
|
+
};
|
|
389
429
|
const handleCursorScroll = container => {
|
|
390
430
|
try {
|
|
391
431
|
const cursorPosition = window.getSelection()?.getRangeAt(0).getBoundingClientRect();
|
|
@@ -410,11 +450,13 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
410
450
|
footer: footer || "",
|
|
411
451
|
children: /*#__PURE__*/_jsx(Box, {
|
|
412
452
|
component: "div",
|
|
413
|
-
className:
|
|
453
|
+
className: `et-wrpr stimulate-${breakpoint} ${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
|
|
414
454
|
sx: classes.root,
|
|
415
455
|
style: {
|
|
416
456
|
...dotBg
|
|
417
457
|
},
|
|
458
|
+
"data-breakpoint": breakpoint,
|
|
459
|
+
onContextMenu: handleContextMenu,
|
|
418
460
|
children: /*#__PURE__*/_jsxs(Slate, {
|
|
419
461
|
editor: editor,
|
|
420
462
|
initialValue: value,
|
|
@@ -475,11 +517,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
475
517
|
chars: chars,
|
|
476
518
|
type: type,
|
|
477
519
|
theme: theme
|
|
478
|
-
}) : null
|
|
520
|
+
}) : null, /*#__PURE__*/_jsx(RnDCopy, {
|
|
521
|
+
readOnly: readOnly
|
|
522
|
+
})]
|
|
479
523
|
})
|
|
480
524
|
}), !hideMiniToolBar ? /*#__PURE__*/_jsx(MiniToolbar, {
|
|
481
525
|
customProps: customProps,
|
|
482
|
-
toolbarOptions: toolbarOptions,
|
|
483
526
|
theme: theme
|
|
484
527
|
}) : null, /*#__PURE__*/_jsx(PopoverAIInput, {
|
|
485
528
|
otherProps: otherProps || {}
|
|
@@ -501,6 +544,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
501
544
|
theme: theme,
|
|
502
545
|
setIsTextSelected: setIsTextSelected,
|
|
503
546
|
customProps: customProps
|
|
547
|
+
}) : null, !readOnly && showViewport ? /*#__PURE__*/_jsx(SwitchViewport, {
|
|
548
|
+
breakpoint: breakpoint,
|
|
549
|
+
onChange: b => onSwitchBreakpoint(b)
|
|
504
550
|
}) : null]
|
|
505
551
|
})
|
|
506
552
|
}), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
|
|
@@ -513,4 +559,30 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
513
559
|
});
|
|
514
560
|
});
|
|
515
561
|
CommonEditor.displayName = "CommonEditor";
|
|
562
|
+
CommonEditor.propTypes = {
|
|
563
|
+
/** Id of the content */
|
|
564
|
+
id: PropTypes.string,
|
|
565
|
+
/** Set to true for readonly mode */
|
|
566
|
+
readOnly: PropTypes.oneOf(["readonly", ""]),
|
|
567
|
+
/** It can be a draft js content or a slate js content */
|
|
568
|
+
content: PropTypes.any,
|
|
569
|
+
/** User details */
|
|
570
|
+
user: PropTypes.object,
|
|
571
|
+
/** API URL base for pages api calls */
|
|
572
|
+
apiHOST: PropTypes.string,
|
|
573
|
+
/** A callback function with updated edited content,
|
|
574
|
+
* this method will get called whenever the content changes happen and wait idle for 500ms
|
|
575
|
+
* uses the debounce mechanism
|
|
576
|
+
*/
|
|
577
|
+
onSave: PropTypes.func,
|
|
578
|
+
/**
|
|
579
|
+
* MUI theme object form parent application
|
|
580
|
+
*/
|
|
581
|
+
theme: PropTypes.object,
|
|
582
|
+
/**
|
|
583
|
+
* Editor component based props can be passed here
|
|
584
|
+
* @property {bool} isSignerDetailsRequired - To make username and email required in Forms
|
|
585
|
+
*/
|
|
586
|
+
otherProps: PropTypes.object
|
|
587
|
+
};
|
|
516
588
|
export default CommonEditor;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Dialog, DialogTitle, DialogContent, IconButton, Grid } from "@mui/material";
|
|
3
3
|
import CloseIcon from "@mui/icons-material/Close";
|
|
4
|
-
|
|
5
|
-
// import commonStyle from "./commonStyle";
|
|
4
|
+
import ViewportStimulator from "./common/RnD/Theme/ViewportStimulator";
|
|
6
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
6
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
7
|
const DialogWrapper = props => {
|
|
@@ -43,7 +42,9 @@ const DialogWrapper = props => {
|
|
|
43
42
|
}), /*#__PURE__*/_jsx(DialogContent, {
|
|
44
43
|
children: children
|
|
45
44
|
})]
|
|
46
|
-
}) :
|
|
45
|
+
}) : /*#__PURE__*/_jsx(ViewportStimulator, {
|
|
46
|
+
children: children
|
|
47
|
+
});
|
|
47
48
|
};
|
|
48
49
|
DialogWrapper.defaultProps = {
|
|
49
50
|
fullScreen: false,
|
package/dist/Editor/Editor.css
CHANGED
|
@@ -267,7 +267,7 @@ blockquote {
|
|
|
267
267
|
margin: 12px 0px;
|
|
268
268
|
padding: 0px 5px;
|
|
269
269
|
border: 0px solid #ccc;
|
|
270
|
-
min-height:
|
|
270
|
+
min-height: 211px;
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
.signature-signed-wrapper {
|
|
@@ -331,7 +331,7 @@ blockquote {
|
|
|
331
331
|
.signature-canvas {
|
|
332
332
|
height: 100%;
|
|
333
333
|
width: 100%;
|
|
334
|
-
border: 1px solid #
|
|
334
|
+
border: 1px solid #2563EB;
|
|
335
335
|
border-radius: 12px;
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -364,6 +364,7 @@ blockquote {
|
|
|
364
364
|
|
|
365
365
|
.dialog-actions-si .MuiButtonBase-root {
|
|
366
366
|
opacity: 1;
|
|
367
|
+
padding: 6px 5px 0px 3px !important
|
|
367
368
|
}
|
|
368
369
|
|
|
369
370
|
.signature-tab {
|
|
@@ -374,6 +375,19 @@ blockquote {
|
|
|
374
375
|
width: 100%;
|
|
375
376
|
}
|
|
376
377
|
|
|
378
|
+
.signature-tab2 {
|
|
379
|
+
/* display: flex; */
|
|
380
|
+
align-items: center;
|
|
381
|
+
border-width: 0px, 0px, 0px, 0px;
|
|
382
|
+
border-style: solid;
|
|
383
|
+
border-color: #2563EB;
|
|
384
|
+
justify-content: center;
|
|
385
|
+
flex-direction: column;
|
|
386
|
+
width: 100%;
|
|
387
|
+
border-radius: 7px;
|
|
388
|
+
padding: 10px;
|
|
389
|
+
}
|
|
390
|
+
|
|
377
391
|
.upload-sign-img-wrapper {
|
|
378
392
|
text-align: center;
|
|
379
393
|
}
|
|
@@ -439,6 +453,10 @@ blockquote {
|
|
|
439
453
|
color: #ffffff !important;
|
|
440
454
|
border: 1px solid #2563eb !important;
|
|
441
455
|
width: auto !important;
|
|
456
|
+
padding: 2px 0px 0px 0px !important;
|
|
457
|
+
min-width: 89px !important;
|
|
458
|
+
font-family: Inter, sans-serif;
|
|
459
|
+
text-transform: none;
|
|
442
460
|
}
|
|
443
461
|
|
|
444
462
|
.MuiButton-root.primaryBtn.disabled,
|
|
@@ -459,6 +477,10 @@ blockquote {
|
|
|
459
477
|
margin-right: 15px !important;
|
|
460
478
|
color: #2563eb;
|
|
461
479
|
width: auto !important;
|
|
480
|
+
padding: 2px 0px 0px 0px !important;
|
|
481
|
+
min-width: 89px !important;
|
|
482
|
+
font-family: Inter, sans-serif;
|
|
483
|
+
text-transform: none;
|
|
462
484
|
}
|
|
463
485
|
|
|
464
486
|
.deleteBtn {
|
|
@@ -1126,4 +1148,8 @@ blockquote {
|
|
|
1126
1148
|
|
|
1127
1149
|
.scrollSmooth {
|
|
1128
1150
|
scroll-behavior: smooth;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
.freegrid-section {
|
|
1154
|
+
max-width: 100% !important;
|
|
1129
1155
|
}
|
|
@@ -4,13 +4,13 @@ import Icon from "../../common/Icon";
|
|
|
4
4
|
// import { TbRotateClockwise } from "react-icons/tb";
|
|
5
5
|
// import { FaRegCircleCheck } from "react-icons/fa6";
|
|
6
6
|
import { IoSend } from "react-icons/io5";
|
|
7
|
-
import React, { forwardRef, useEffect, useRef } from "react";
|
|
7
|
+
import React, { forwardRef, useEffect, useRef, useState } from "react";
|
|
8
8
|
import WaveLoading from "../../common/WaveLoading";
|
|
9
|
-
import useWindowResize from "../../hooks/useWindowResize";
|
|
10
9
|
import CustomSelect from "./CustomSelect";
|
|
11
10
|
import { editContentOptions, newContentOptions, generatedContentOptions } from "./helper";
|
|
12
11
|
import useClickOutside from "../../hooks/useClickOutside";
|
|
13
12
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
|
13
|
+
import { ChatMicIcon } from "../../assets/svg/AIIcons";
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
16
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -18,7 +18,7 @@ function getProps(openAI, generatedText) {
|
|
|
18
18
|
const dropDownProps = {
|
|
19
19
|
fromElements: {
|
|
20
20
|
options: newContentOptions,
|
|
21
|
-
show:
|
|
21
|
+
show: generatedText?.length
|
|
22
22
|
},
|
|
23
23
|
fromToolBar: {
|
|
24
24
|
options: editContentOptions,
|
|
@@ -36,20 +36,21 @@ function getProps(openAI, generatedText) {
|
|
|
36
36
|
}
|
|
37
37
|
function AIInput({
|
|
38
38
|
onSend,
|
|
39
|
-
loading,
|
|
40
39
|
generatedText,
|
|
41
40
|
openAI,
|
|
42
41
|
inputValue,
|
|
43
42
|
onInputChange,
|
|
44
|
-
onClickOutside
|
|
43
|
+
onClickOutside,
|
|
44
|
+
startRecording,
|
|
45
|
+
loading
|
|
45
46
|
}, ref) {
|
|
46
47
|
const {
|
|
47
48
|
theme
|
|
48
49
|
} = useEditorContext();
|
|
49
50
|
const classes = Styles(theme);
|
|
50
51
|
const inputRef = useRef();
|
|
51
|
-
const [size] = useWindowResize();
|
|
52
52
|
const inputWrapperRef = useRef();
|
|
53
|
+
const [contentHeight, setContentHeight] = useState("100px");
|
|
53
54
|
const refs = useClickOutside({
|
|
54
55
|
onClickOutside,
|
|
55
56
|
omitIds: ["infinity-select-popover"],
|
|
@@ -74,35 +75,28 @@ function AIInput({
|
|
|
74
75
|
if (isSendBtnDisabled) {
|
|
75
76
|
return;
|
|
76
77
|
}
|
|
77
|
-
onSend("", {
|
|
78
|
-
replace: true,
|
|
79
|
-
isSendBtn: true
|
|
80
|
-
});
|
|
78
|
+
onSend("", {});
|
|
81
79
|
};
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
const selectWrapper = refs?.length ? refs[1]?.current : null;
|
|
82
|
+
const slateWrapper = document.getElementById("slate-wrapper-scroll-container");
|
|
83
|
+
if (selectWrapper && slateWrapper) {
|
|
84
|
+
const height = slateWrapper.offsetHeight - selectWrapper.offsetHeight - 80;
|
|
85
|
+
setContentHeight(height + "px");
|
|
86
|
+
}
|
|
87
|
+
}, [refs, generatedText]);
|
|
82
88
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
83
|
-
children: [
|
|
84
|
-
component: "div",
|
|
85
|
-
ref: refs[1],
|
|
86
|
-
sx: classes.customSelectWrapper,
|
|
87
|
-
children: /*#__PURE__*/_jsx(CustomSelect, {
|
|
88
|
-
...props,
|
|
89
|
-
onSend: onSend,
|
|
90
|
-
classes: classes
|
|
91
|
-
})
|
|
92
|
-
}) : null, /*#__PURE__*/_jsxs(Box, {
|
|
89
|
+
children: [/*#__PURE__*/_jsxs(Box, {
|
|
93
90
|
component: "div",
|
|
94
91
|
sx: classes.aiContainer,
|
|
95
92
|
children: [generatedText ? /*#__PURE__*/_jsx(Typography, {
|
|
96
93
|
sx: classes.generatedText,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
},
|
|
104
|
-
children: generatedText
|
|
105
|
-
})
|
|
94
|
+
style: {
|
|
95
|
+
maxHeight: contentHeight
|
|
96
|
+
},
|
|
97
|
+
dangerouslySetInnerHTML: {
|
|
98
|
+
__html: generatedText
|
|
99
|
+
}
|
|
106
100
|
}) : null, /*#__PURE__*/_jsxs(Box, {
|
|
107
101
|
component: "form",
|
|
108
102
|
sx: classes.aiInputWrapper,
|
|
@@ -132,21 +126,25 @@ function AIInput({
|
|
|
132
126
|
handleSendBtnClick();
|
|
133
127
|
}
|
|
134
128
|
}
|
|
135
|
-
}), fromToolBar ? null : /*#__PURE__*/
|
|
129
|
+
}), fromToolBar ? null : /*#__PURE__*/_jsxs(Box, {
|
|
136
130
|
component: "div",
|
|
137
131
|
style: classes.sendIconContainer,
|
|
138
132
|
className: "icons-elements",
|
|
139
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
133
|
+
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
134
|
+
disabled: loading,
|
|
135
|
+
onClick: () => startRecording(),
|
|
136
|
+
children: /*#__PURE__*/_jsx(ChatMicIcon, {})
|
|
137
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
140
138
|
sx: isSendBtnDisabled ? classes.sendBtnDisabled : classes.sendBtn,
|
|
141
139
|
onClick: () => handleSendBtnClick(),
|
|
142
140
|
children: /*#__PURE__*/_jsx(IoSend, {
|
|
143
141
|
color: "#fff",
|
|
144
142
|
size: 14
|
|
145
143
|
})
|
|
146
|
-
})
|
|
144
|
+
})]
|
|
147
145
|
})]
|
|
148
146
|
})]
|
|
149
|
-
}),
|
|
147
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
150
148
|
component: "div",
|
|
151
149
|
ref: refs[1],
|
|
152
150
|
sx: classes.customSelectWrapper,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Box, Button, IconButton,
|
|
1
|
+
import { Box, Button, IconButton, Popper, Typography } from "@mui/material";
|
|
2
2
|
import React, { useRef, useState } from "react";
|
|
3
3
|
import { FaChevronRight } from "react-icons/fa";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -49,9 +49,17 @@ function DisplayOption({
|
|
|
49
49
|
} = option;
|
|
50
50
|
const [open, setOpen] = useState(false);
|
|
51
51
|
const optionRef = useRef();
|
|
52
|
+
const openOptions = e => {
|
|
53
|
+
if (option.options?.length && !open) {
|
|
54
|
+
setOpen(e.currentTarget);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
52
58
|
return /*#__PURE__*/_jsxs(Box, {
|
|
53
59
|
sx: classes.optionWrapper,
|
|
54
60
|
ref: optionRef,
|
|
61
|
+
onMouseEnter: openOptions,
|
|
62
|
+
onMouseLeave: () => setOpen(null),
|
|
55
63
|
children: [/*#__PURE__*/_jsxs(Button, {
|
|
56
64
|
sx: classes.optionBtn,
|
|
57
65
|
onClick: e => {
|
|
@@ -59,7 +67,7 @@ function DisplayOption({
|
|
|
59
67
|
|
|
60
68
|
// is having child options
|
|
61
69
|
if (option.options?.length) {
|
|
62
|
-
|
|
70
|
+
openOptions(e);
|
|
63
71
|
return;
|
|
64
72
|
}
|
|
65
73
|
setOpen(null);
|
|
@@ -77,25 +85,24 @@ function DisplayOption({
|
|
|
77
85
|
size: 12
|
|
78
86
|
})
|
|
79
87
|
})]
|
|
80
|
-
}), /*#__PURE__*/_jsx(
|
|
88
|
+
}), /*#__PURE__*/_jsx(Popper, {
|
|
81
89
|
open: open && option.options,
|
|
82
90
|
anchorEl: open,
|
|
83
91
|
sx: {
|
|
84
92
|
zIndex: 9001,
|
|
85
93
|
background: "transparent"
|
|
86
94
|
},
|
|
87
|
-
anchorOrigin: {
|
|
88
|
-
vertical: "top",
|
|
89
|
-
horizontal: "right"
|
|
90
|
-
},
|
|
91
95
|
onClose: () => {
|
|
92
96
|
setOpen(null);
|
|
93
97
|
},
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
placement: "right-start",
|
|
99
|
+
children: /*#__PURE__*/_jsx(Box, {
|
|
100
|
+
children: /*#__PURE__*/_jsx(CustomSelect, {
|
|
101
|
+
options: option.options,
|
|
102
|
+
onSend: onSend,
|
|
103
|
+
classes: classes,
|
|
104
|
+
show: open
|
|
105
|
+
})
|
|
99
106
|
})
|
|
100
107
|
})]
|
|
101
108
|
});
|