@flozy/editor 9.9.8 → 9.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 (143) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +116 -16
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +16 -8
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  7. package/dist/Editor/Elements/Button/EditorButton.js +25 -9
  8. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  9. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  10. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  11. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  12. package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +4 -2
  13. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +454 -0
  14. package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +21 -6
  15. package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +5 -1
  16. package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +3 -2
  17. package/dist/Editor/Elements/DataView/Layouts/Options/index.js +11 -0
  18. package/dist/Editor/Elements/DataView/Layouts/ViewData.js +8 -4
  19. package/dist/Editor/Elements/Embed/Video.js +1 -1
  20. package/dist/Editor/Elements/EmbedScript/Code.js +14 -2
  21. package/dist/Editor/Elements/EmbedScript/EmbedScriptPopup.js +57 -28
  22. package/dist/Editor/Elements/EmbedScript/styles.js +89 -0
  23. package/dist/Editor/Elements/Form/Form.js +179 -168
  24. package/dist/Editor/Elements/Form/FormField.js +10 -4
  25. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  26. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +5 -15
  27. package/dist/Editor/Elements/FreeGrid/Options/More.js +8 -8
  28. package/dist/Editor/Elements/FreeGrid/styles.js +64 -7
  29. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  30. package/dist/Editor/Elements/List/CheckList.js +4 -1
  31. package/dist/Editor/Elements/Search/SearchAttachment.js +40 -9
  32. package/dist/Editor/Elements/Search/SearchButton.js +9 -8
  33. package/dist/Editor/Elements/Search/SearchList.js +9 -7
  34. package/dist/Editor/Elements/SimpleText/index.js +6 -1
  35. package/dist/Editor/Elements/SimpleText/style.js +2 -2
  36. package/dist/Editor/Elements/Table/Table.js +3 -3
  37. package/dist/Editor/Elements/Title/title.js +6 -6
  38. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  39. package/dist/Editor/MiniEditor.js +2 -1
  40. package/dist/Editor/Styles/EditorStyles.js +5 -5
  41. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  42. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  43. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  44. package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
  45. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  46. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  47. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
  48. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +7 -4
  50. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  51. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +72 -12
  52. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +100 -27
  53. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  54. package/dist/Editor/Toolbar/PopupTool/index.js +1 -1
  55. package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
  56. package/dist/Editor/assets/svg/BackIcon.js +18 -0
  57. package/dist/Editor/assets/svg/ClearAllRounded.js +31 -0
  58. package/dist/Editor/assets/svg/ResetIconNew.js +23 -0
  59. package/dist/Editor/assets/svg/SettingsIcon.js +1 -0
  60. package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
  61. package/dist/Editor/common/ColorPickerButton.js +38 -16
  62. package/dist/Editor/common/CustomColorPicker/index.js +131 -0
  63. package/dist/Editor/common/CustomColorPicker/style.js +53 -0
  64. package/dist/Editor/common/CustomDialog2/index.js +94 -0
  65. package/dist/Editor/common/CustomDialog2/style.js +67 -0
  66. package/dist/Editor/common/CustomSelect.js +43 -0
  67. package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
  68. package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
  69. package/dist/Editor/common/Icon.js +31 -1
  70. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  71. package/dist/Editor/common/LinkSettings/NavComponents.js +34 -8
  72. package/dist/Editor/common/LinkSettings/index.js +84 -68
  73. package/dist/Editor/common/LinkSettings/style.js +245 -30
  74. package/dist/Editor/common/RnD/ElementOptions/Actions.js +13 -14
  75. package/dist/Editor/common/RnD/ElementOptions/Icons/LinkIcon.js +1 -0
  76. package/dist/Editor/common/RnD/ElementOptions/index.js +2 -2
  77. package/dist/Editor/common/RnD/ElementOptions/styles.js +28 -1
  78. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +6 -5
  79. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  82. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  83. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  84. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +3 -2
  85. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  86. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
  87. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +3 -2
  88. package/dist/Editor/common/RnD/ElementSettings/styles.js +147 -12
  89. package/dist/Editor/common/RnD/OptionsPopup/index.js +8 -5
  90. package/dist/Editor/common/RnD/OptionsPopup/style.js +121 -19
  91. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +8 -5
  92. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  93. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  94. package/dist/Editor/common/RnD/Utils/gridDropItem.js +1 -2
  95. package/dist/Editor/common/Select/index.js +2 -0
  96. package/dist/Editor/common/Shorthands/elements.js +54 -0
  97. package/dist/Editor/common/SnackBar/index.js +43 -0
  98. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +5 -0
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  102. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  103. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  104. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  105. package/dist/Editor/common/StyleBuilder/fieldTypes/lineSpacing.js +7 -6
  106. package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +13 -6
  107. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  108. package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +5 -7
  109. package/dist/Editor/common/Uploader.js +8 -0
  110. package/dist/Editor/common/iconListV2.js +101 -6
  111. package/dist/Editor/common/iconslist.js +24 -0
  112. package/dist/Editor/commonStyle.js +174 -61
  113. package/dist/Editor/helper/textIndeces.js +58 -0
  114. package/dist/Editor/helper/theme.js +203 -2
  115. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  116. package/dist/Editor/hooks/useMouseMove.js +8 -5
  117. package/dist/Editor/hooks/useThemeValues.js +63 -0
  118. package/dist/Editor/plugins/withEmbeds.js +1 -1
  119. package/dist/Editor/plugins/withHTML.js +3 -1
  120. package/dist/Editor/plugins/withTable.js +1 -1
  121. package/dist/Editor/theme/ThemeList.js +50 -173
  122. package/dist/Editor/theme/index.js +149 -0
  123. package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
  124. package/dist/Editor/themeSettings/buttons/index.js +290 -0
  125. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  126. package/dist/Editor/themeSettings/colorTheme/index.js +309 -0
  127. package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
  128. package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
  129. package/dist/Editor/themeSettings/fonts/index.js +240 -0
  130. package/dist/Editor/themeSettings/fonts/style.js +62 -0
  131. package/dist/Editor/themeSettings/icons.js +60 -0
  132. package/dist/Editor/themeSettings/index.js +361 -0
  133. package/dist/Editor/themeSettings/style.js +292 -0
  134. package/dist/Editor/themeSettingsAI/icons.js +96 -0
  135. package/dist/Editor/themeSettingsAI/index.js +355 -0
  136. package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
  137. package/dist/Editor/themeSettingsAI/style.js +324 -0
  138. package/dist/Editor/utils/SlateUtilityFunctions.js +166 -43
  139. package/dist/Editor/utils/button.js +1 -17
  140. package/dist/Editor/utils/draftToSlate.js +3 -2
  141. package/dist/Editor/utils/font.js +40 -37
  142. package/dist/Editor/utils/helper.js +90 -19
  143. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback, useMemo, useRef, useImperativeHandle, forwardRef, useState } from "react";
2
- import { Editable, Slate, ReactEditor } from 'slate-react';
3
- import { createEditor, Transforms, Editor } from 'slate';
2
+ import { Editable, Slate, ReactEditor } from "slate-react";
3
+ import { createEditor, Transforms, Editor } from "slate";
4
4
  import withCommon from "./hooks/withCommon";
5
5
  import { getBlock, getMarked, serializeMentions } from "./utils/chatEditor/SlateUtilityFunctions";
6
6
  import MiniTextFormat from "./Toolbar/PopupTool/MiniTextFormat";
@@ -33,15 +33,15 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
33
33
  isMobile = false,
34
34
  debounceTimeOut = 10,
35
35
  isMarkDown = false,
36
- markDownContent = '',
36
+ markDownContent = "",
37
37
  translation
38
38
  } = props;
39
39
  const classes = usePopupStyle(theme);
40
40
  const convertedContent = draftToSlate({
41
41
  data: content && content?.length > 0 ? content : [{
42
- type: 'paragraph',
42
+ type: "paragraph",
43
43
  children: [{
44
- text: ''
44
+ text: ""
45
45
  }]
46
46
  }]
47
47
  });
@@ -153,14 +153,6 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
153
153
  // needLayout = true,
154
154
  } = otherProps || {};
155
155
  const mentionsRef = useRef();
156
- const customProps = {
157
- ...(otherProps || {}),
158
- hideTools: ["settings", "add_column", "drag", "resize"],
159
- readOnly: isReadOnly,
160
- editorPlaceholder: "Write Something",
161
- page_id: 1,
162
- translation: translation || translationMock
163
- };
164
156
  const [mentions, setMentions] = useMentions({
165
157
  editor,
166
158
  selection: editor?.selection
@@ -222,6 +214,15 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
222
214
  debounced(newValue);
223
215
  debouncedValue.current = newValue;
224
216
  };
217
+ const dummyTranslation = () => {};
218
+ const customProps = {
219
+ ...(otherProps || {}),
220
+ hideTools: ["settings", "add_column", "drag", "resize"],
221
+ readOnly: isReadOnly,
222
+ editorPlaceholder: "Write Something",
223
+ page_id: 1,
224
+ translation: translation || translationMock || dummyTranslation
225
+ };
225
226
  const Element = props => {
226
227
  return getBlock(props);
227
228
  };
@@ -257,7 +258,7 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
257
258
  editor
258
259
  });
259
260
  } else if (event.key === "Enter" && !isMobile) {
260
- const isEmpty = debouncedValue?.current.length === 1 && debouncedValue?.current[0].type === 'paragraph' && debouncedValue?.current[0].children.length === 1 && debouncedValue?.current[0].children[0].text === '';
261
+ const isEmpty = debouncedValue?.current.length === 1 && debouncedValue?.current[0].type === "paragraph" && debouncedValue?.current[0].children.length === 1 && debouncedValue?.current[0].children[0].text === "";
261
262
  if (isEmpty) {
262
263
  event.preventDefault();
263
264
  return;
@@ -297,10 +298,10 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
297
298
  }
298
299
  };
299
300
 
301
+ const html = isMarkDown ? convertMDToHTML(markDownContent) : null;
300
302
  const handleFocus = () => {
301
303
  setIsFocused(true);
302
304
  };
303
- const html = isMarkDown ? convertMDToHTML(markDownContent) : null;
304
305
  return !isMarkDown ? /*#__PURE__*/_jsx(EditorProvider, {
305
306
  theme: theme,
306
307
  editor: editor,
@@ -314,13 +315,13 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
314
315
  closeMainPopup: handleClose,
315
316
  customProps: customProps
316
317
  }), /*#__PURE__*/_jsx(Editable, {
317
- onFocus: handleFocus,
318
318
  className: "chatEditorRoot",
319
319
  renderElement: renderElement,
320
320
  renderLeaf: renderLeaf,
321
321
  decorate: decorators,
322
322
  placeholder: "Start typing ...",
323
323
  spellCheck: true,
324
+ onFocus: handleFocus,
324
325
  onBlur: handleBlur,
325
326
  onKeyDown: onKeyDown,
326
327
  onPaste: handlePaste,
@@ -1,7 +1,7 @@
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 PropTypes from "prop-types";
4
- import { createEditor, Range, Transforms } from "slate";
4
+ import { createEditor, Editor, Range, Transforms } from "slate";
5
5
  import { Slate, Editable, ReactEditor } from "slate-react";
6
6
  import { useDebouncedCallback } from "use-debounce";
7
7
  import { getMarked, getBlock } from "./utils/SlateUtilityFunctions";
@@ -17,7 +17,7 @@ import { serializeToText } from "./utils/serializeToText";
17
17
  import { getPageSettings } from "./utils/pageSettings";
18
18
  import { getThumbnailImage, invertColor, pageTextStyle } from "./helper";
19
19
  import PopupTool from "./Toolbar/PopupTool";
20
- import { Box, Typography, useTheme } from "@mui/material";
20
+ import { Box, Typography, useTheme, IconButton } from "@mui/material";
21
21
  import Shorthands from "./common/Shorthands";
22
22
  import MiniToolbar from "./Toolbar/Mini/MiniToolbar";
23
23
  import { EditorProvider } from "./hooks/useMouseMove";
@@ -26,9 +26,12 @@ import editorStyles from "./Styles/EditorStyles";
26
26
  import DragAndDrop from "./common/DnD";
27
27
  import Section from "./common/Section";
28
28
  import decorators from "./utils/Decorators";
29
- import { getBreakpointLineSpacing, getTRBLBreakPoints } from "./helper/theme";
29
+ import { getTRBLBreakPoints, getVariableValue, getBreakpointLineSpacing } from "./helper/theme";
30
30
  import { getInitialValue, handleInsertLastElement, isEverythingSelected, isFreeGrid, isFreeGridFragment, isRestrictedNode, outsideEditorClickLabel } from "./utils/helper";
31
31
  import useWindowResize from "./hooks/useWindowResize";
32
+ import { getTheme } from "./theme";
33
+ import ThemeSettings from "./themeSettings";
34
+ import ThemeSettingsAI from "./themeSettingsAI";
32
35
  import PopoverAIInput from "./Elements/AI/PopoverAIInput";
33
36
  import RnDCopy from "./common/RnD/RnDCopy";
34
37
  import SwitchViewport from "./common/RnD/SwitchViewport/SwitchViewport";
@@ -37,9 +40,12 @@ import "./font.css";
37
40
  import "./Editor.css";
38
41
  import "animate.css";
39
42
  import FontLoader from "./common/FontLoader/FontLoader";
43
+ import { ThemeAIIcon, ThemePaintIcon } from "./assets/svg/ThemeIcons";
40
44
  import { CustomDialogComponent } from "./common/CustomDialog";
45
+ import { extractTextWithPath, replaceTextPath } from "./helper/textIndeces.js";
41
46
  import { jsx as _jsx } from "react/jsx-runtime";
42
47
  import { jsxs as _jsxs } from "react/jsx-runtime";
48
+ export const ThemeContext = /*#__PURE__*/createContext(null);
43
49
  const Item = /*#__PURE__*/forwardRef(({
44
50
  children,
45
51
  ...props
@@ -81,6 +87,7 @@ const updateTopBanner = (content = [], setTopBanner) => {
81
87
  return firstNode?.type === "topbanner" ? firstNode : null;
82
88
  });
83
89
  };
90
+ const dummyTranslation = () => {};
84
91
  const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
85
92
  const {
86
93
  id,
@@ -94,6 +101,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
94
101
  otherProps,
95
102
  isIframe,
96
103
  theme,
104
+ showThemeButtons,
97
105
  showViewport = false,
98
106
  overrideWrapperStyles = {},
99
107
  translation
@@ -101,7 +109,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
101
109
  const editorWrapper = useRef();
102
110
  const mentionsRef = useRef();
103
111
  const convertedContent = draftToSlate({
104
- data: content
112
+ data: content,
113
+ needLayout: otherProps?.needLayout
105
114
  });
106
115
  const [value, setValue] = useState(convertedContent);
107
116
  const [isInteracted, setIsInteracted] = useState(false);
@@ -129,7 +138,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
129
138
  hideTools = [],
130
139
  translationMock
131
140
  } = otherProps || {};
132
- const translationFn = translation || translationMock;
141
+ const translationFn = translation || translationMock || dummyTranslation;
133
142
  const editor = useMemo(() => {
134
143
  if (collaborativeEditor) return collaborativeEditor;
135
144
  const editor = createEditor();
@@ -145,10 +154,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
145
154
  const {
146
155
  bannerSpacing,
147
156
  pageBgImage,
148
- pageColor,
157
+ pageColor = "",
149
158
  color: pageTextColor,
150
159
  pageWidth,
151
160
  maxWidth: pageMaxWidth,
161
+ theme: selectedTheme,
152
162
  lineHeight
153
163
  } = pageSt?.pageProps || {
154
164
  bannerSpacing: {
@@ -160,10 +170,17 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
160
170
  };
161
171
  const classes = editorStyles({
162
172
  padHeight: !fullScreen ? otherProps?.padHeight : 20,
163
- placeHolderColor: invertColor(pageColor || "#FFF"),
173
+ placeHolderColor: invertColor(pageColor.startsWith("var") ? getVariableValue(pageColor) : pageColor || "#FFF"),
164
174
  theme,
165
175
  overrideWrapperStyles
166
176
  });
177
+ const [openTheme, setOpenTheme] = useState(false);
178
+ const [openAITheme, setOpenAITheme] = useState(false);
179
+ const [, setThemeUpdated] = useState(0);
180
+ const triggerRender = () => {
181
+ setThemeUpdated(prev => prev + 1); // Incrementing forces a re-render while updating theme
182
+ };
183
+
167
184
  const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
168
185
  useEffect(() => {
169
186
  setValue(draftToSlate({
@@ -177,11 +194,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
177
194
  const debounced = useDebouncedCallback(
178
195
  // function
179
196
  value => {
197
+ debouncedValue.current = value;
180
198
  const {
181
199
  value: strVal,
182
200
  ...restVal
183
201
  } = getOnSaveData(value);
184
- debouncedValue.current = value;
185
202
  onSave(strVal, restVal);
186
203
  },
187
204
  // delay in ms
@@ -192,7 +209,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
192
209
  return {
193
210
  value: JSON.stringify(val),
194
211
  text: text,
195
- title: serializeToText(title?.children) || "Untitled"
212
+ title: serializeToText(title?.children) || ""
196
213
  };
197
214
  };
198
215
  const getTitleSaveData = title => {
@@ -305,6 +322,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
305
322
  redo() {
306
323
  editor?.redo();
307
324
  },
325
+ toggleTheme() {
326
+ setOpenTheme(!openTheme);
327
+ },
328
+ toggleAITheme() {
329
+ setOpenAITheme(!openAITheme);
330
+ },
308
331
  getPageSettings: {
309
332
  background: pageBgImage && pageBgImage !== "none" ? `url(${pageBgImage})` : pageColor || ""
310
333
  }
@@ -347,6 +370,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
347
370
  const onDrawerOpen = status => {
348
371
  setIsDrawerOpen(status);
349
372
  };
373
+ const lineH = getBreakpointLineSpacing(lineHeight, breakpoint || (isMobile ? "xs" : ""));
350
374
  const isReadOnly = readOnly === "readonly";
351
375
  const customProps = {
352
376
  ...(otherProps || {}),
@@ -359,9 +383,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
359
383
  onDrawerOpen: onDrawerOpen,
360
384
  ICON_API: "https://assets.agenciflow.com",
361
385
  translation: translationFn,
362
- getTitleSaveData
386
+ getTitleSaveData,
387
+ customLineHeight: lineH
363
388
  };
364
- const lineH = getBreakpointLineSpacing(lineHeight, breakpoint);
365
389
  const renderElement = useCallback(props => {
366
390
  return /*#__PURE__*/_jsx(Element, {
367
391
  ...props,
@@ -504,6 +528,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
504
528
  }
505
529
  return style;
506
530
  }, [pageBgImage, pageColor, pageTextColor]);
531
+ const themeProps = getTheme(selectedTheme);
507
532
 
508
533
  // const handleContextMenu = (e) => {
509
534
  // if (!readOnly) {
@@ -534,14 +559,75 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
534
559
  console.log("handleCursorScroll", err);
535
560
  }
536
561
  };
562
+ window.getTextIndeces = () => {
563
+ try {
564
+ const textWithPaths = extractTextWithPath(editor.children, []);
565
+ return textWithPaths;
566
+ } catch (err) {
567
+ console.log(err);
568
+ }
569
+ };
570
+ window.replaceTextIndeces = (path_data = []) => {
571
+ try {
572
+ const replacedJson = replaceTextPath(JSON.parse(JSON.stringify(editor.children)), path_data);
573
+
574
+ // loop delete all
575
+ editor.children.forEach(() => {
576
+ Transforms.delete(editor, {
577
+ at: [0]
578
+ });
579
+ });
580
+
581
+ // Insert new nodes
582
+ Transforms.insertNodes(editor, replacedJson, {
583
+ at: [0]
584
+ });
585
+ } catch (err) {
586
+ console.log(err);
587
+ }
588
+ };
589
+ window.replaceEditorContent = (fragments = []) => {
590
+ try {
591
+ // loop delete all
592
+ editor.children.forEach(() => {
593
+ Transforms.delete(editor, {
594
+ at: [0]
595
+ });
596
+ });
597
+
598
+ // Insert new nodes
599
+ Transforms.insertNodes(editor, fragments, {
600
+ at: [0]
601
+ });
602
+ } catch (err) {
603
+ console.log(err);
604
+ }
605
+ };
537
606
  return /*#__PURE__*/_jsxs(EditorProvider, {
538
607
  theme: theme,
539
608
  editor: editor,
540
- children: [/*#__PURE__*/_jsx(DialogWrapper, {
609
+ openTheme: openTheme,
610
+ setOpenTheme: setOpenTheme,
611
+ triggerRender: triggerRender,
612
+ children: [showThemeButtons ? /*#__PURE__*/_jsxs("div", {
613
+ className: "theme-buttons",
614
+ children: [/*#__PURE__*/_jsx(IconButton, {
615
+ onClick: () => setOpenTheme(true),
616
+ className: "themePaintIcon",
617
+ children: /*#__PURE__*/_jsx(ThemePaintIcon, {})
618
+ }), /*#__PURE__*/_jsx(IconButton, {
619
+ onClick: () => setOpenAITheme(true),
620
+ style: {
621
+ marginTop: "4px"
622
+ },
623
+ children: /*#__PURE__*/_jsx(ThemeAIIcon, {})
624
+ })]
625
+ }) : null, /*#__PURE__*/_jsx(DialogWrapper, {
541
626
  classes: classes,
542
627
  ...props,
543
628
  fullScreen: fullScreen,
544
629
  footer: footer || "",
630
+ selectedTheme: selectedTheme,
545
631
  children: /*#__PURE__*/_jsxs(Box, {
546
632
  component: "div",
547
633
  className: `et-wrpr stimulate-${breakpoint} ${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
@@ -576,6 +662,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
576
662
  children: /*#__PURE__*/_jsxs(Box, {
577
663
  component: "div",
578
664
  className: "max-content",
665
+ sx: themeProps?.sxProps || {},
579
666
  "data-info": outsideEditorClickLabel,
580
667
  children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
581
668
  className: "scroll-area",
@@ -620,8 +707,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
620
707
  chars: chars,
621
708
  type: type,
622
709
  theme: theme,
623
- otherProps: customProps,
624
- customProps: customProps
710
+ customProps: customProps,
711
+ otherProps: customProps
625
712
  }) : null, /*#__PURE__*/_jsx(RnDCopy, {
626
713
  readOnly: readOnly
627
714
  })]
@@ -644,6 +731,18 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
644
731
  "data-info": outsideEditorClickLabel,
645
732
  onClick: handleFooterClick,
646
733
  children: footer
734
+ }), openTheme ? /*#__PURE__*/_jsx(ThemeSettings, {
735
+ open: openTheme,
736
+ setOpen: setOpenTheme,
737
+ editor: editor,
738
+ services: otherProps?.services,
739
+ appTheme: theme,
740
+ customProps: customProps
741
+ }) : null, /*#__PURE__*/_jsx(ThemeSettingsAI, {
742
+ openAITheme: openAITheme,
743
+ setOpenAITheme: setOpenAITheme,
744
+ onSaveTheme: otherProps?.onSaveTheme,
745
+ theme: theme
647
746
  })]
648
747
  })
649
748
  }), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
@@ -652,8 +751,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
652
751
  setIsTextSelected: setIsTextSelected,
653
752
  customProps: customProps,
654
753
  editorWrapper: editorWrapper
655
- }) : null, !readOnly && showViewport ? /*#__PURE__*/_jsx(SwitchViewport, {
754
+ }) : null, !readOnly ? /*#__PURE__*/_jsx(SwitchViewport, {
656
755
  breakpoint: breakpoint,
756
+ show: showViewport,
657
757
  onChange: b => onSwitchBreakpoint(b),
658
758
  translation: translation || translationMock
659
759
  }) : null]
@@ -2,6 +2,7 @@ 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
4
  import ViewportStimulator from "./common/RnD/Theme/ViewportStimulator";
5
+ import MainThemeProvider from "./common/RnD/Theme/MainThemeProvider";
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
7
8
  const DialogWrapper = props => {
@@ -9,40 +10,45 @@ const DialogWrapper = props => {
9
10
  fullScreen,
10
11
  onClose,
11
12
  children,
12
- classes
13
+ classes,
14
+ selectedTheme
13
15
  } = props;
14
- return fullScreen ? /*#__PURE__*/_jsxs(Dialog, {
15
- className: `dialogComp`,
16
- open: fullScreen,
17
- fullScreen: fullScreen,
18
- onClose: onClose,
19
- style: {
20
- zIndex: 1000
21
- },
22
- sx: classes.fullScreenWrapper,
23
- children: [/*#__PURE__*/_jsx(DialogTitle, {
16
+ return fullScreen ? /*#__PURE__*/_jsx(MainThemeProvider, {
17
+ userSelectedTheme: selectedTheme,
18
+ children: /*#__PURE__*/_jsxs(Dialog, {
19
+ className: `dialogComp`,
20
+ open: fullScreen,
21
+ fullScreen: fullScreen,
22
+ onClose: onClose,
24
23
  style: {
25
- padding: "6px 8px"
24
+ zIndex: 1000
26
25
  },
27
- children: /*#__PURE__*/_jsx(Grid, {
26
+ sx: classes.fullScreenWrapper,
27
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
28
+ style: {
29
+ padding: "6px 8px"
30
+ },
28
31
  children: /*#__PURE__*/_jsx(Grid, {
29
- style: {
30
- display: "flex",
31
- justifyContent: "end"
32
- },
33
- children: /*#__PURE__*/_jsx(IconButton, {
34
- onClick: onClose,
32
+ children: /*#__PURE__*/_jsx(Grid, {
35
33
  style: {
36
- background: "rgba(255,255,255,0.5)"
34
+ display: "flex",
35
+ justifyContent: "end"
37
36
  },
38
- children: /*#__PURE__*/_jsx(CloseIcon, {})
37
+ children: /*#__PURE__*/_jsx(IconButton, {
38
+ onClick: onClose,
39
+ style: {
40
+ background: "rgba(255,255,255,0.5)"
41
+ },
42
+ children: /*#__PURE__*/_jsx(CloseIcon, {})
43
+ })
39
44
  })
40
45
  })
41
- })
42
- }), /*#__PURE__*/_jsx(DialogContent, {
43
- children: children
44
- })]
46
+ }), /*#__PURE__*/_jsx(DialogContent, {
47
+ children: children
48
+ })]
49
+ })
45
50
  }) : /*#__PURE__*/_jsx(ViewportStimulator, {
51
+ selectedTheme: selectedTheme,
46
52
  children: children
47
53
  });
48
54
  };
@@ -1342,21 +1342,29 @@ code.markcode {
1342
1342
  background-color: #f3f3f3;
1343
1343
  font-family: 'Source Code Pro' !important;
1344
1344
  }
1345
+
1345
1346
  /* Hide the popper when the reference is hidden */
1346
1347
  .hide-popper-on-overlap[data-popper-escaped],
1347
1348
  .hide-popper-on-overlap[data-popper-reference-hidden] {
1348
1349
  visibility: hidden;
1349
1350
  pointer-events: none;
1350
1351
  }
1351
- code.markcode {
1352
- border-radius: 4px;
1353
- padding: 6px 8px;
1354
- margin: 8px 0px;
1355
- display: block;
1356
- background-color: #f3f3f3;
1357
- font-family: 'Source Code Pro' !important;
1352
+
1353
+ .theme-buttons {
1354
+ display: flex;
1355
+ justify-content: end;
1356
+ align-items: center;
1357
+ margin: auto;
1358
+ position: absolute;
1359
+ top: 60px;
1360
+ right: 20px;
1361
+ z-index: 1000;
1362
+ }
1363
+
1364
+ .themePaintIcon:hover .iconBorder {
1365
+ fill: #2563EB;
1358
1366
  }
1359
1367
 
1360
1368
  .hyperLink {
1361
1369
  word-break: break-all;
1362
- }
1370
+ }
@@ -167,6 +167,7 @@ function PopoverAIInput({
167
167
  const [generatedText, setGeneratedText] = useState("");
168
168
  const [inputValue, setInputValue] = useState("");
169
169
  const [selectedOption, setSelectedOption] = useState();
170
+ const [threadId, setThreadId] = useState("");
170
171
  const selectedEleRef = useRef({});
171
172
  const classes = Styles();
172
173
  const editor = useSlate();
@@ -188,6 +189,7 @@ function PopoverAIInput({
188
189
  useEffect(() => {
189
190
  if (openAI) {
190
191
  scrollToAIInput(editor);
192
+ setThreadId("");
191
193
  }
192
194
  }, [openAI]);
193
195
  useEffect(() => {
@@ -196,8 +198,12 @@ function PopoverAIInput({
196
198
  const framePayload = (type, option) => {
197
199
  let payload = {
198
200
  mode: option.mode || 0,
199
- query: option?.inputValue || inputValue
201
+ query: option?.inputValue || inputValue,
202
+ useSession: true
200
203
  };
204
+ if (threadId) {
205
+ payload.threadId = threadId;
206
+ }
201
207
  if (option.mode === MODES.translate || option.mode === MODES.rephraseTone) {
202
208
  payload.textOptionInput = type;
203
209
  }
@@ -257,12 +263,14 @@ function PopoverAIInput({
257
263
  setLoading(false);
258
264
  setInputValue("");
259
265
  let {
260
- data: text
261
- } = result || {};
266
+ body: text,
267
+ threadId
268
+ } = result?.data || {};
262
269
  if (!text) {
263
270
  onClickOutside();
264
271
  return;
265
272
  }
273
+ setThreadId(threadId || "");
266
274
 
267
275
  // if (!option.replace) {
268
276
  if (type === "continue_writing") {
@@ -265,7 +265,7 @@ function AppHeader(props) {
265
265
  style: {
266
266
  display: "inline-flex",
267
267
  alignItems: "center",
268
- color: textColor,
268
+ color: textColor || "#000000",
269
269
  fontSize: logoFontSize,
270
270
  fontFamily: titleFontFamily,
271
271
  justifyContent: isLogoRight ? "end" : "start"
@@ -320,7 +320,7 @@ function AppHeader(props) {
320
320
  fontFamily: fontFamily,
321
321
  textTransform: "none",
322
322
  fontSize: fontSize || "16px",
323
- color: textColor || "#FFF",
323
+ color: textColor || "#000",
324
324
  background: bgColor || "none",
325
325
  "& .m-settings": {
326
326
  display: "none",
@@ -335,7 +335,7 @@ function AppHeader(props) {
335
335
  background: "#FFF"
336
336
  },
337
337
  "&:hover": {
338
- color: textColorHover || textColor || "#FFF",
338
+ color: textColorHover || textColor || "#000",
339
339
  background: bgColorHover || bgColor || "none",
340
340
  "& .m-settings": {
341
341
  display: "block"
@@ -9,6 +9,8 @@ import { WorkflowIcon } from "../../common/iconslist";
9
9
  import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../../helper/theme";
10
10
  import { handleLinkType, windowVar } from "../../utils/helper";
11
11
  import LinkSettings from "../../common/LinkSettings";
12
+ import { useEditorTheme } from "../../hooks/useEditorTheme";
13
+ import { getTheme } from "../../theme";
12
14
  import Icon from "../../common/Icon";
13
15
  import { useEditorContext } from "../../hooks/useMouseMove";
14
16
  import useCommonStyle from "../../commonStyle";
@@ -40,6 +42,12 @@ const EditorButton = props => {
40
42
  const [openMoreOptions, setOpenMoreOptions] = useState(false);
41
43
  const [, setIconLoaded] = useState(false);
42
44
  const classes = useCommonStyle(appTheme);
45
+ const {
46
+ theme: selectedTheme
47
+ } = useEditorTheme();
48
+ const {
49
+ buttonTheme
50
+ } = getTheme(selectedTheme);
43
51
  const {
44
52
  label,
45
53
  bgColor,
@@ -53,7 +61,7 @@ const EditorButton = props => {
53
61
  fontFamily,
54
62
  textColorHover,
55
63
  bgColorHover,
56
- buttonIcon,
64
+ // buttonIcon,
57
65
  iconPosition = "start",
58
66
  borderStyle,
59
67
  borderWidth,
@@ -74,6 +82,7 @@ const EditorButton = props => {
74
82
  };
75
83
  const isTrigger = linkType === "nextTrigger" || linkType === "prevTrigger";
76
84
  const refURl = isTrigger ? buttonLink?.url : url;
85
+ const buttonIcon = element?.buttonIcon || buttonTheme?.buttonIcon;
77
86
  const BtnIcon = buttonIcon ? buttonIcon : null;
78
87
  windowVar.lastButtonProps = element;
79
88
  const handleTrigger = async () => {
@@ -164,6 +173,7 @@ const EditorButton = props => {
164
173
  display: "inline-flex",
165
174
  color: "rgba(0, 0, 0, 0.54)",
166
175
  marginBottom: "0px !important",
176
+ ...classes.buttonMoreOption,
167
177
  ...classes.buttonMoreOption3
168
178
  },
169
179
  ...btnProps,
@@ -264,19 +274,14 @@ const EditorButton = props => {
264
274
  display: "inline-block"
265
275
  },
266
276
  children: [/*#__PURE__*/_jsxs(Box, {
277
+ className: `btn textAlign-${tAlign} button theme-element`,
267
278
  ref: buttonRef,
268
- className: `btn textAlign-${tAlign}`,
269
279
  sx: {
270
280
  textDecoration: "none",
271
- background: bgColor || "rgb(30, 75, 122)",
272
281
  borderBlockStyle: "solid",
273
- borderColor: borderColor || "transparent",
274
282
  borderWidth: borderWidth !== undefined ? borderWidth : borderColor ? "1px" : "0px",
275
283
  ...btnSp,
276
284
  borderStyle: borderStyle || "solid",
277
- color: `${textColor || "#FFFFFF"}`,
278
- fontSize: textSize || "inherit",
279
- fontFamily: fontFamily || "PoppinsRegular",
280
285
  display: "inline-flex",
281
286
  alignItems: "center",
282
287
  position: "relative",
@@ -285,11 +290,22 @@ const EditorButton = props => {
285
290
  display: "none"
286
291
  },
287
292
  "&:hover": {
288
- color: `${textColorHover || textColor || "#FFFFFF"}`,
289
- background: bgColorHover || bgColor || "rgb(30, 75, 122)",
293
+ color: `${textColorHover || textColor}`,
294
+ background: bgColorHover || bgColor,
290
295
  "& .element-toolbar": {
291
296
  display: "flex"
292
297
  }
298
+ },
299
+ color: textColor ? `${textColor} !important` : "#FFFFFF",
300
+ fontSize: textSize ? `${textSize}px !important` : "inherit",
301
+ fontFamily: fontFamily ? `${fontFamily} !important` : "PoppinsRegular",
302
+ background: `${bgColor} !important`,
303
+ borderColor: `${borderColor} !important`,
304
+ borderRadius: {
305
+ ...getBreakPointsValue(borderRadius || buttonTheme?.borderRadius || {}, null, "overrideBorderRadius", true)
306
+ },
307
+ padding: {
308
+ ...getTRBLBreakPoints(bannerSpacing || buttonTheme?.bannerSpacing || {})
293
309
  }
294
310
  },
295
311
  ...buttonProps,