@flozy/editor 3.9.7 → 3.9.9

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 (113) hide show
  1. package/dist/Editor/CommonEditor.js +177 -109
  2. package/dist/Editor/Editor.css +7 -0
  3. package/dist/Editor/Elements/AI/AIInput.js +18 -24
  4. package/dist/Editor/Elements/AI/CustomSelect.js +19 -12
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +66 -89
  6. package/dist/Editor/Elements/AI/Styles.js +2 -1
  7. package/dist/Editor/Elements/AI/VoiceToText/AudioWave.js +73 -0
  8. package/dist/Editor/Elements/AI/VoiceToText/index.js +184 -0
  9. package/dist/Editor/Elements/AI/VoiceToText/style.js +40 -0
  10. package/dist/Editor/Elements/AI/helper.js +5 -3
  11. package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
  12. package/dist/Editor/Elements/Button/EditorButton.js +28 -16
  13. package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
  14. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
  16. package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
  17. package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
  18. package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
  19. package/dist/Editor/Elements/Grid/Grid.js +27 -3
  20. package/dist/Editor/Elements/Grid/GridItem.js +3 -1
  21. package/dist/Editor/Elements/Link/Link.js +6 -1
  22. package/dist/Editor/Elements/Link/LinkButton.js +4 -2
  23. package/dist/Editor/Elements/Link/LinkPopup.js +10 -3
  24. package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
  25. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +3 -3
  26. package/dist/Editor/Elements/Redo/RedoButton.js +14 -0
  27. package/dist/Editor/Elements/Signature/SignaturePopup.js +20 -5
  28. package/dist/Editor/Elements/Table/Styles.js +23 -1
  29. package/dist/Editor/Elements/Table/Table.js +2 -1
  30. package/dist/Editor/Elements/Table/TableCell.js +69 -7
  31. package/dist/Editor/Elements/TableContextMenu/TableContextMenu.js +1 -0
  32. package/dist/Editor/Elements/Undo/UndoButton.js +14 -0
  33. package/dist/Editor/MiniEditor.js +3 -1
  34. package/dist/Editor/Styles/EditorStyles.js +1 -1
  35. package/dist/Editor/Toolbar/Basic/index.js +4 -2
  36. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
  37. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  38. package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
  39. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +4 -2
  40. package/dist/Editor/Toolbar/Mini/Options/Options.js +10 -0
  41. package/dist/Editor/Toolbar/Mini/Styles.js +7 -0
  42. package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +12 -13
  43. package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +12 -13
  44. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
  45. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
  46. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
  47. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +40 -33
  48. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
  49. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
  50. package/dist/Editor/Toolbar/PopupTool/index.js +2 -2
  51. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  52. package/dist/Editor/assets/svg/AIIcons.js +153 -1
  53. package/dist/Editor/assets/svg/AddTemplateIcon.js +13 -10
  54. package/dist/Editor/assets/svg/RedoIcon.js +27 -0
  55. package/dist/Editor/assets/svg/SettingsIcon.js +28 -0
  56. package/dist/Editor/assets/svg/TextIcon.js +8 -5
  57. package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
  58. package/dist/Editor/assets/svg/UndoIcon.js +27 -0
  59. package/dist/Editor/common/ColorPickerButton.js +25 -9
  60. package/dist/Editor/common/CustomColorPicker/index.js +106 -0
  61. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  62. package/dist/Editor/common/CustomDialog/index.js +94 -0
  63. package/dist/Editor/common/CustomDialog/style.js +67 -0
  64. package/dist/Editor/common/CustomSelect.js +33 -0
  65. package/dist/Editor/common/DnD/DragHandleButton.js +56 -47
  66. package/dist/Editor/common/Icon.js +43 -3
  67. package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
  68. package/dist/Editor/common/LinkSettings/index.js +4 -2
  69. package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
  70. package/dist/Editor/common/LinkSettings/style.js +11 -8
  71. package/dist/Editor/common/Section/index.js +57 -7
  72. package/dist/Editor/common/Section/styles.js +11 -0
  73. package/dist/Editor/common/Shorthands/elements.js +54 -0
  74. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  75. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
  76. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  77. package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
  78. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
  79. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
  80. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
  81. package/dist/Editor/common/StyleBuilder/index.js +1 -1
  82. package/dist/Editor/common/iconslist.js +0 -31
  83. package/dist/Editor/helper/theme.js +190 -4
  84. package/dist/Editor/hooks/useEditorTheme.js +139 -0
  85. package/dist/Editor/hooks/useMouseMove.js +4 -1
  86. package/dist/Editor/hooks/useWindowMessage.js +10 -7
  87. package/dist/Editor/plugins/withEmbeds.js +1 -1
  88. package/dist/Editor/plugins/withHTML.js +1 -1
  89. package/dist/Editor/plugins/withTable.js +1 -1
  90. package/dist/Editor/theme/ThemeList.js +50 -173
  91. package/dist/Editor/theme/index.js +144 -0
  92. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  93. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  94. package/dist/Editor/themeSettings/buttons/style.js +21 -0
  95. package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
  96. package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
  97. package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
  98. package/dist/Editor/themeSettings/fonts/index.js +213 -0
  99. package/dist/Editor/themeSettings/fonts/style.js +44 -0
  100. package/dist/Editor/themeSettings/icons.js +60 -0
  101. package/dist/Editor/themeSettings/index.js +320 -0
  102. package/dist/Editor/themeSettings/style.js +152 -0
  103. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  104. package/dist/Editor/themeSettingsAI/index.js +356 -0
  105. package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
  106. package/dist/Editor/themeSettingsAI/style.js +247 -0
  107. package/dist/Editor/utils/SlateUtilityFunctions.js +161 -25
  108. package/dist/Editor/utils/button.js +1 -17
  109. package/dist/Editor/utils/events.js +54 -2
  110. package/dist/Editor/utils/font.js +40 -37
  111. package/dist/Editor/utils/helper.js +31 -2
  112. package/dist/Editor/utils/table.js +51 -43
  113. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-unused-vars */
2
- import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle } from "react";
2
+ import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle, createContext } from "react";
3
3
  import { createEditor, Transforms } from "slate";
4
4
  import { Slate, Editable, ReactEditor } from "slate-react";
5
5
  import { useDebounce, useDebouncedCallback } from "use-debounce";
@@ -18,7 +18,7 @@ import { getThumbnailImage, invertColor } from "./helper";
18
18
  import PopupTool from "./Toolbar/PopupTool";
19
19
  import "./font.css";
20
20
  import "./Editor.css";
21
- import { Box, Button, Typography } from "@mui/material";
21
+ import { Box, IconButton, Typography } from "@mui/material";
22
22
  import Shorthands from "./common/Shorthands";
23
23
  import MiniToolbar from "./Toolbar/Mini/MiniToolbar";
24
24
  import { EditorProvider } from "./hooks/useMouseMove";
@@ -28,12 +28,19 @@ import DragAndDrop from "./common/DnD";
28
28
  import Section from "./common/Section";
29
29
  import "animate.css";
30
30
  import decorators from "./utils/Decorators";
31
- import { getTRBLBreakPoints } from "./helper/theme";
31
+ import { getTRBLBreakPoints, getVariableValue } from "./helper/theme";
32
32
  import { handleInsertLastElement, onDeleteKey, outsideEditorClickLabel } from "./utils/helper";
33
33
  import useWindowResize from "./hooks/useWindowResize";
34
+ import { getTheme } from "./theme";
35
+ import { useTheme } from "@emotion/react";
36
+ import ThemeSettings from "./themeSettings";
37
+ import ThemeSettingsAI from "./themeSettingsAI";
38
+ import { Experimental_CssVarsProvider as CssVarsProvider, experimental_extendTheme as extendTheme } from "@mui/material/styles";
34
39
  import PopoverAIInput from "./Elements/AI/PopoverAIInput";
40
+ import { ThemeAIIcon, ThemePaintIcon } from "./assets/svg/ThemeIcons";
35
41
  import { jsx as _jsx } from "react/jsx-runtime";
36
42
  import { jsxs as _jsxs } from "react/jsx-runtime";
43
+ export const ThemeContext = /*#__PURE__*/createContext(null);
37
44
  const Item = /*#__PURE__*/forwardRef(({
38
45
  children,
39
46
  ...props
@@ -60,7 +67,8 @@ const Leaf = ({
60
67
  children,
61
68
  leaf
62
69
  }) => {
63
- children = getMarked(leaf, children);
70
+ const theme = useTheme();
71
+ children = getMarked(leaf, children, theme);
64
72
  return /*#__PURE__*/_jsx("span", {
65
73
  ...attributes,
66
74
  children: children
@@ -79,7 +87,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
79
87
  toolbarOptions,
80
88
  otherProps,
81
89
  isIframe,
82
- theme
90
+ theme,
91
+ showThemeButtons
83
92
  } = props;
84
93
  const editorWrapper = useRef();
85
94
  const mentionsRef = useRef();
@@ -123,10 +132,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
123
132
  const {
124
133
  bannerSpacing,
125
134
  pageBgImage,
126
- pageColor,
135
+ pageColor = "",
127
136
  color: pageTextColor,
128
137
  pageWidth,
129
- maxWidth: pageMaxWidth
138
+ maxWidth: pageMaxWidth,
139
+ theme: selectedTheme
130
140
  } = pageSt?.pageProps || {
131
141
  bannerSpacing: {
132
142
  left: 0,
@@ -137,9 +147,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
137
147
  };
138
148
  const classes = editorStyles({
139
149
  padHeight: !fullScreen ? otherProps?.padHeight : 20,
140
- placeHolderColor: invertColor(pageColor || "#FFF"),
150
+ placeHolderColor: invertColor(pageColor.startsWith("var") ? getVariableValue(pageColor) : pageColor || "#FFF"),
141
151
  theme
142
152
  });
153
+ const [openTheme, setOpenTheme] = useState(false);
154
+ const [openAITheme, setOpenAITheme] = useState(false);
143
155
  useEffect(() => {
144
156
  setValue(draftToSlate({
145
157
  data: content
@@ -239,6 +251,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
239
251
  redo() {
240
252
  editor?.redo();
241
253
  },
254
+ toggleTheme() {
255
+ setOpenTheme(!openTheme);
256
+ },
257
+ toggleAITheme() {
258
+ setOpenAITheme(!openAITheme);
259
+ },
242
260
  getPageSettings: {
243
261
  background: pageBgImage && pageBgImage !== "none" ? `url(${pageBgImage})` : pageColor || ""
244
262
  }
@@ -386,113 +404,163 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
386
404
  }
387
405
  return style;
388
406
  }, [pageBgImage, pageColor]);
389
- return /*#__PURE__*/_jsx(EditorProvider, {
390
- theme: theme,
391
- editor: editor,
392
- children: /*#__PURE__*/_jsx(DialogWrapper, {
393
- classes: classes,
394
- ...props,
395
- fullScreen: fullScreen,
396
- footer: footer || "",
397
- children: /*#__PURE__*/_jsx(Box, {
398
- component: "div",
399
- className: `${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
400
- sx: classes.root,
401
- style: {
402
- ...dotBg
403
- },
404
- children: /*#__PURE__*/_jsxs(Slate, {
405
- editor: editor,
406
- initialValue: value,
407
- onChange: handleEditorChange,
408
- children: [/*#__PURE__*/_jsx(DragAndDrop, {
409
- children: /*#__PURE__*/_jsxs(Overlay, {
410
- children: [/*#__PURE__*/_jsx(Box, {
411
- className: `${hasTopBanner() ? "has-topbanner" : ""} ${!pageColor ? "no-color" : ""} ${isScrolling ? "" : "hideScroll"} scrollable-content scrollSmooth`,
412
- sx: classes.slateWrapper,
413
- id: "slate-wrapper-scroll-container"
414
- // style={editorWrapperStyle}
415
- ,
416
- ref: editorWrapper,
417
- onClick: e => {
418
- handleInsertLastElement(e, editor);
419
- },
420
- onScroll: handleScroll,
421
- style: editorWrapperStyle,
422
- children: /*#__PURE__*/_jsxs(Box, {
423
- component: "div",
424
- className: "max-content",
425
- "data-info": outsideEditorClickLabel,
426
- children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
427
- className: "scroll-area",
428
- "data-info": outsideEditorClickLabel,
407
+ const themeProps = getTheme(selectedTheme);
408
+ const handleCursorScroll = container => {
409
+ const cursorPosition = window.getSelection()?.getRangeAt(0).getBoundingClientRect();
410
+ const containerBottom = container.getBoundingClientRect().bottom;
411
+ if (cursorPosition?.bottom > containerBottom - 250) {
412
+ container.scrollBy({
413
+ top: 200,
414
+ behavior: 'smooth'
415
+ });
416
+ }
417
+ };
418
+ return /*#__PURE__*/_jsx(ThemeContext.Provider, {
419
+ value: {
420
+ openTheme,
421
+ setOpenTheme
422
+ },
423
+ children: /*#__PURE__*/_jsx(CssVarsProvider, {
424
+ theme: extendTheme(selectedTheme?.theme?.cssVars || {}),
425
+ children: /*#__PURE__*/_jsxs(EditorProvider, {
426
+ theme: theme,
427
+ editor: editor,
428
+ children: [showThemeButtons ? /*#__PURE__*/_jsxs("div", {
429
+ style: {
430
+ display: "flex",
431
+ justifyContent: "end",
432
+ alignItems: "center",
433
+ gap: "8px",
434
+ width: "70vw",
435
+ margin: "auto"
436
+ },
437
+ children: [/*#__PURE__*/_jsx(IconButton, {
438
+ onClick: () => setOpenTheme(true),
439
+ children: /*#__PURE__*/_jsx(ThemePaintIcon, {})
440
+ }), /*#__PURE__*/_jsx(IconButton, {
441
+ onClick: () => setOpenAITheme(true),
442
+ style: {
443
+ marginTop: "4px"
444
+ },
445
+ children: /*#__PURE__*/_jsx(ThemeAIIcon, {})
446
+ })]
447
+ }) : null, /*#__PURE__*/_jsx(DialogWrapper, {
448
+ classes: classes,
449
+ ...props,
450
+ fullScreen: fullScreen,
451
+ footer: footer || "",
452
+ children: /*#__PURE__*/_jsx(Box, {
453
+ component: "div",
454
+ className: `${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
455
+ sx: classes.root,
456
+ style: {
457
+ ...dotBg
458
+ },
459
+ children: /*#__PURE__*/_jsxs(Slate, {
460
+ editor: editor,
461
+ initialValue: value,
462
+ onChange: handleEditorChange,
463
+ children: [/*#__PURE__*/_jsx(DragAndDrop, {
464
+ children: /*#__PURE__*/_jsxs(Overlay, {
465
+ children: [/*#__PURE__*/_jsx(Box, {
466
+ className: `${hasTopBanner() ? "has-topbanner" : ""} ${!pageColor ? "no-color" : ""} ${isScrolling ? "" : "hideScroll"} scrollable-content scrollSmooth`,
467
+ sx: classes.slateWrapper,
468
+ id: "slate-wrapper-scroll-container"
469
+ // style={editorWrapperStyle}
470
+ ,
471
+ ref: editorWrapper,
472
+ onClick: e => {
473
+ handleInsertLastElement(e, editor);
474
+ },
475
+ onScroll: handleScroll,
476
+ style: editorWrapperStyle,
429
477
  children: /*#__PURE__*/_jsxs(Box, {
430
478
  component: "div",
431
- className: `editor-wrapper ${pageWidth === "fixed" ? "fixed" : "full"}`,
432
- sx: {
433
- backgroundColor: "transparent",
434
- padding: {
435
- ...getTRBLBreakPoints(bannerSpacing)
436
- },
437
- width: !pageWidth || pageWidth === "fixed" ? fixedWidth : fullWidth,
438
- height: viewport.h ? `${viewport.h}px` : `100%`,
439
- alignSelf: "center",
440
- transformOrigin: "left top",
441
- transition: "all 0.3s",
442
- minHeight: "87%",
443
- maxWidth: pageMaxWidth ? `${parseInt(pageMaxWidth)}px !important` : "auto"
444
- },
479
+ className: "max-content",
480
+ sx: themeProps?.sxProps || {},
445
481
  "data-info": outsideEditorClickLabel,
446
- children: [/*#__PURE__*/_jsx(Editable, {
447
- className: "innert-editor-textbox",
448
- readOnly: isReadOnly,
449
- renderElement: renderElement,
450
- renderLeaf: renderLeaf,
451
- decorate: decorators,
452
- onKeyDown: onKeyDown
453
- }), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
454
- ref: mentionsRef,
455
- mentions: mentions,
456
- setMentions: setMentions,
457
- editor: editor,
458
- target: target,
459
- index: index,
460
- chars: chars,
461
- type: type,
482
+ children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
483
+ className: "scroll-area",
484
+ "data-info": outsideEditorClickLabel,
485
+ children: /*#__PURE__*/_jsxs(Box, {
486
+ component: "div",
487
+ className: `editor-wrapper ${pageWidth === "fixed" ? "fixed" : "full"}`,
488
+ sx: {
489
+ backgroundColor: "transparent",
490
+ padding: {
491
+ ...getTRBLBreakPoints(bannerSpacing)
492
+ },
493
+ width: !pageWidth || pageWidth === "fixed" ? fixedWidth : fullWidth,
494
+ height: viewport.h ? `${viewport.h}px` : `100%`,
495
+ alignSelf: "center",
496
+ transformOrigin: "left top",
497
+ transition: "all 0.3s",
498
+ minHeight: "87%",
499
+ maxWidth: pageMaxWidth ? `${parseInt(pageMaxWidth)}px !important` : "auto"
500
+ },
501
+ "data-info": outsideEditorClickLabel,
502
+ children: [/*#__PURE__*/_jsx(Editable, {
503
+ className: "innert-editor-textbox",
504
+ readOnly: isReadOnly,
505
+ renderElement: renderElement,
506
+ renderLeaf: renderLeaf,
507
+ decorate: decorators,
508
+ onKeyDown: onKeyDown,
509
+ onSelect: () => handleCursorScroll(editorWrapper.current)
510
+ }), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
511
+ ref: mentionsRef,
512
+ mentions: mentions,
513
+ setMentions: setMentions,
514
+ editor: editor,
515
+ target: target,
516
+ index: index,
517
+ chars: chars,
518
+ type: type,
519
+ theme: theme
520
+ }) : null]
521
+ })
522
+ }), !hideMiniToolBar ? /*#__PURE__*/_jsx(MiniToolbar, {
523
+ customProps: customProps,
524
+ toolbarOptions: toolbarOptions,
462
525
  theme: theme
463
- }) : null]
526
+ }) : null, /*#__PURE__*/_jsx(PopoverAIInput, {
527
+ otherProps: otherProps || {}
528
+ }), footer && (fullScreen || readOnly) && /*#__PURE__*/_jsx(Typography, {
529
+ sx: {
530
+ color: "rgb(100, 116, 139)",
531
+ fontSize: "13px",
532
+ paddingBottom: hideMiniToolBar ? "0px" : "12px",
533
+ cursor: "pointer"
534
+ },
535
+ align: "center",
536
+ "data-info": outsideEditorClickLabel,
537
+ onClick: handleFooterClick,
538
+ children: footer
539
+ }), openTheme ? /*#__PURE__*/_jsx(ThemeSettings, {
540
+ open: openTheme,
541
+ setOpen: setOpenTheme,
542
+ editor: editor,
543
+ services: otherProps?.services
544
+ }) : null, /*#__PURE__*/_jsx(ThemeSettingsAI, {
545
+ openAITheme: openAITheme,
546
+ setOpenAITheme: setOpenAITheme,
547
+ onSaveTheme: otherProps?.onSaveTheme
548
+ })]
464
549
  })
465
- }), !hideMiniToolBar ? /*#__PURE__*/_jsx(MiniToolbar, {
466
- customProps: customProps,
467
- toolbarOptions: toolbarOptions,
468
- theme: theme
469
- }) : null, /*#__PURE__*/_jsx(PopoverAIInput, {
470
- otherProps: otherProps || {}
471
- }), footer && (fullScreen || readOnly) && /*#__PURE__*/_jsx(Typography, {
472
- sx: {
473
- color: "rgb(100, 116, 139)",
474
- fontSize: "13px",
475
- paddingBottom: hideMiniToolBar ? "0px" : "12px",
476
- cursor: "pointer"
477
- },
478
- align: "center",
479
- "data-info": outsideEditorClickLabel,
480
- onClick: handleFooterClick,
481
- children: footer
482
- })]
550
+ }), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
551
+ onDrawerOpen: onDrawerOpen,
552
+ theme: theme,
553
+ setIsTextSelected: setIsTextSelected,
554
+ customProps: customProps
555
+ }) : null]
483
556
  })
484
- }), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
485
- onDrawerOpen: onDrawerOpen,
486
- theme: theme,
487
- setIsTextSelected: setIsTextSelected,
488
- customProps: customProps
489
- }) : null]
490
- })
491
- }), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
492
- ...htmlAction,
493
- handleCodeToText: handleCodeToText
494
- })]
495
- }, id)
557
+ }), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
558
+ ...htmlAction,
559
+ handleCodeToText: handleCodeToText
560
+ })]
561
+ }, id)
562
+ })
563
+ })]
496
564
  })
497
565
  })
498
566
  });
@@ -245,6 +245,13 @@ blockquote {
245
245
  width: 17px !important;
246
246
  }
247
247
 
248
+ .react-datepicker__input-container input {
249
+ height: 40px !important;
250
+ border: 1px solid #ccc;
251
+ border-radius: 5px;
252
+ width: 100%;
253
+ }
254
+
248
255
  .close-popupbtn {
249
256
  border-radius: 4px !important;
250
257
  width: 24px;
@@ -6,11 +6,11 @@ import Icon from "../../common/Icon";
6
6
  import { IoSend } from "react-icons/io5";
7
7
  import React, { forwardRef, useEffect, useRef } 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: window.getSelection().toString().length
21
+ show: generatedText?.length
22
22
  },
23
23
  fromToolBar: {
24
24
  options: editContentOptions,
@@ -36,19 +36,19 @@ 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
53
  const refs = useClickOutside({
54
54
  onClickOutside,
@@ -74,22 +74,10 @@ function AIInput({
74
74
  if (isSendBtnDisabled) {
75
75
  return;
76
76
  }
77
- onSend("", {
78
- replace: true,
79
- isSendBtn: true
80
- });
77
+ onSend("", {});
81
78
  };
82
79
  return /*#__PURE__*/_jsxs(_Fragment, {
83
- children: [size.device === "xs" ? /*#__PURE__*/_jsx(Box, {
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, {
80
+ children: [/*#__PURE__*/_jsxs(Box, {
93
81
  component: "div",
94
82
  sx: classes.aiContainer,
95
83
  children: [generatedText ? /*#__PURE__*/_jsx(Typography, {
@@ -101,7 +89,9 @@ function AIInput({
101
89
  fontFamily: "inherit",
102
90
  margin: 0
103
91
  },
104
- children: generatedText
92
+ dangerouslySetInnerHTML: {
93
+ __html: generatedText
94
+ }
105
95
  })
106
96
  }) : null, /*#__PURE__*/_jsxs(Box, {
107
97
  component: "form",
@@ -132,21 +122,25 @@ function AIInput({
132
122
  handleSendBtnClick();
133
123
  }
134
124
  }
135
- }), fromToolBar ? null : /*#__PURE__*/_jsx(Box, {
125
+ }), fromToolBar ? null : /*#__PURE__*/_jsxs(Box, {
136
126
  component: "div",
137
127
  style: classes.sendIconContainer,
138
128
  className: "icons-elements",
139
- children: /*#__PURE__*/_jsx(IconButton, {
129
+ children: [/*#__PURE__*/_jsx(IconButton, {
130
+ disabled: loading,
131
+ onClick: () => startRecording(),
132
+ children: /*#__PURE__*/_jsx(ChatMicIcon, {})
133
+ }), /*#__PURE__*/_jsx(IconButton, {
140
134
  sx: isSendBtnDisabled ? classes.sendBtnDisabled : classes.sendBtn,
141
135
  onClick: () => handleSendBtnClick(),
142
136
  children: /*#__PURE__*/_jsx(IoSend, {
143
137
  color: "#fff",
144
138
  size: 14
145
139
  })
146
- })
140
+ })]
147
141
  })]
148
142
  })]
149
- }), size.device === "xs" ? null : /*#__PURE__*/_jsx(Box, {
143
+ }), /*#__PURE__*/_jsx(Box, {
150
144
  component: "div",
151
145
  ref: refs[1],
152
146
  sx: classes.customSelectWrapper,
@@ -1,4 +1,4 @@
1
- import { Box, Button, IconButton, Popover, Typography } from "@mui/material";
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
- setOpen(e.currentTarget);
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(Popover, {
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
- children: /*#__PURE__*/_jsx(CustomSelect, {
95
- options: option.options,
96
- onSend: onSend,
97
- classes: classes,
98
- show: open
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
  });