@flozy/editor 11.0.3 → 11.0.5

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 (146) hide show
  1. package/dist/Editor/ChatEditor.js +17 -16
  2. package/dist/Editor/CommonEditor.js +129 -16
  3. package/dist/Editor/DialogWrapper.js +31 -25
  4. package/dist/Editor/Editor.css +36 -8
  5. package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
  6. package/dist/Editor/Elements/AI/Styles.js +1 -0
  7. package/dist/Editor/Elements/Accordion/Accordion.js +28 -22
  8. package/dist/Editor/Elements/Accordion/AccordionButton.js +12 -3
  9. package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
  10. package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
  11. package/dist/Editor/Elements/Attachments/Attachments.js +153 -11
  12. package/dist/Editor/Elements/Attachments/AttachmentsButton.js +8 -3
  13. package/dist/Editor/Elements/Button/EditorButton.js +23 -7
  14. package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
  15. package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
  16. package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
  17. package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
  18. package/dist/Editor/Elements/Embed/Embed.js +36 -43
  19. package/dist/Editor/Elements/Embed/Image.js +236 -23
  20. package/dist/Editor/Elements/Embed/Video.js +245 -15
  21. package/dist/Editor/Elements/Form/Form.js +16 -10
  22. package/dist/Editor/Elements/Form/FormField.js +1 -1
  23. package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
  24. package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
  25. package/dist/Editor/Elements/FreeGrid/FreeGrid.js +31 -74
  26. package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +9 -5
  27. package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +3 -1
  28. package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
  29. package/dist/Editor/Elements/FreeGrid/helper.js +194 -0
  30. package/dist/Editor/Elements/FreeGrid/styles.js +15 -0
  31. package/dist/Editor/Elements/Grid/GridItem.js +1 -1
  32. package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
  33. package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +3 -2
  34. package/dist/Editor/Elements/Signature/SignaturePopup.js +24 -6
  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/TopBanner/TopBanner.js +4 -2
  39. package/dist/Editor/Elements/TopBanner/TopBannerButton.js +5 -3
  40. package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
  41. package/dist/Editor/MiniEditor.js +2 -1
  42. package/dist/Editor/Styles/EditorStyles.js +19 -4
  43. package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
  44. package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
  45. package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
  46. package/dist/Editor/Toolbar/FormatTools/TextSize.js +33 -29
  47. package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
  48. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
  49. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +25 -23
  50. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +25 -7
  51. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
  52. package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +24 -8
  53. package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
  54. package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +70 -10
  55. package/dist/Editor/Toolbar/PopupTool/TextFormat.js +73 -14
  56. package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
  57. package/dist/Editor/Toolbar/PopupTool/index.js +4 -3
  58. package/dist/Editor/Toolbar/toolbarGroups.js +56 -10
  59. package/dist/Editor/assets/svg/BackIcon.js +18 -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 +130 -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 +4 -0
  69. package/dist/Editor/common/Icon.js +28 -0
  70. package/dist/Editor/common/ImageSelector/ImageSelector.js +45 -7
  71. package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
  72. package/dist/Editor/common/ImageSelector/Styles.js +3 -9
  73. package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
  74. package/dist/Editor/common/MentionsPopup/index.js +9 -1
  75. package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
  76. package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
  77. package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
  78. package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
  79. package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
  80. package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
  81. package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
  82. package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
  83. package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +9 -1
  84. package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
  85. package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
  86. package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
  87. package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
  88. package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -11
  89. package/dist/Editor/common/RnD/Utils/index.js +3 -1
  90. package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +52 -63
  91. package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
  92. package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
  93. package/dist/Editor/common/RnD/index.js +61 -14
  94. package/dist/Editor/common/Shorthands/elements.js +62 -4
  95. package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
  96. package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
  97. package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +15 -2
  98. package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
  99. package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
  100. package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
  101. package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
  102. package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
  103. package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
  104. package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
  105. package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
  106. package/dist/Editor/common/StyleBuilder/index.js +8 -4
  107. package/dist/Editor/common/Uploader.js +125 -17
  108. package/dist/Editor/common/UploaderWithProgress.js +183 -0
  109. package/dist/Editor/common/iconslist.js +21 -0
  110. package/dist/Editor/commonStyle.js +67 -18
  111. package/dist/Editor/helper/index.js +10 -2
  112. package/dist/Editor/helper/textIndeces.js +58 -0
  113. package/dist/Editor/helper/theme.js +203 -2
  114. package/dist/Editor/hooks/useEditorTheme.js +153 -0
  115. package/dist/Editor/hooks/useMouseMove.js +9 -3
  116. package/dist/Editor/hooks/useThemeValues.js +63 -0
  117. package/dist/Editor/plugins/withEmbeds.js +12 -1
  118. package/dist/Editor/plugins/withHTML.js +3 -1
  119. package/dist/Editor/plugins/withTable.js +1 -1
  120. package/dist/Editor/service/fileupload.js +70 -0
  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 +82 -0
  124. package/dist/Editor/themeSettings/buttons/index.js +300 -0
  125. package/dist/Editor/themeSettings/buttons/style.js +23 -0
  126. package/dist/Editor/themeSettings/colorTheme/index.js +310 -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 +380 -0
  133. package/dist/Editor/themeSettings/style.js +299 -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 +332 -0
  138. package/dist/Editor/utils/SlateUtilityFunctions.js +191 -40
  139. package/dist/Editor/utils/accordion.js +67 -39
  140. package/dist/Editor/utils/button.js +1 -17
  141. package/dist/Editor/utils/draftToSlate.js +3 -2
  142. package/dist/Editor/utils/events.js +94 -89
  143. package/dist/Editor/utils/font.js +40 -37
  144. package/dist/Editor/utils/helper.js +98 -22
  145. package/package.json +4 -4
  146. package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/MultiSelect.js +0 -454
@@ -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, handleCopy, 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);
@@ -127,7 +136,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
127
136
  fixedWidth = "60%",
128
137
  fullWidth = "80%",
129
138
  hideTools = [],
130
- translationMock
139
+ translationMock,
140
+ uploadFile,
141
+ resumeUploadState,
142
+ uploadTerminator,
143
+ isUploadInProgress = () => {}
131
144
  } = otherProps || {};
132
145
  const translationFn = translation || translationMock || (() => {});
133
146
  const getTitleSaveData = title => {
@@ -156,10 +169,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
156
169
  const {
157
170
  bannerSpacing,
158
171
  pageBgImage,
159
- pageColor,
172
+ pageColor = "",
160
173
  color: pageTextColor,
161
174
  pageWidth,
162
175
  maxWidth: pageMaxWidth,
176
+ theme: selectedTheme,
163
177
  lineHeight
164
178
  } = pageSt?.pageProps || {
165
179
  bannerSpacing: {
@@ -171,10 +185,17 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
171
185
  };
172
186
  const classes = editorStyles({
173
187
  padHeight: !fullScreen ? otherProps?.padHeight : 20,
174
- placeHolderColor: invertColor(pageColor || "#FFF"),
188
+ placeHolderColor: invertColor(pageColor.startsWith("var") ? getVariableValue(pageColor) : pageColor || "#FFF"),
175
189
  theme,
176
190
  overrideWrapperStyles
177
191
  });
192
+ const [openTheme, setOpenTheme] = useState(false);
193
+ const [openAITheme, setOpenAITheme] = useState(false);
194
+ const [, setThemeUpdated] = useState(0);
195
+ const triggerRender = () => {
196
+ setThemeUpdated(prev => prev + 1); // Incrementing forces a re-render while updating theme
197
+ };
198
+
178
199
  const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
179
200
  useEffect(() => {
180
201
  setValue(draftToSlate({
@@ -199,11 +220,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
199
220
  const debounced = useDebouncedCallback(
200
221
  // function
201
222
  value => {
223
+ debouncedValue.current = value;
202
224
  const {
203
225
  value: strVal,
204
226
  ...restVal
205
227
  } = getOnSaveData(value);
206
- debouncedValue.current = value;
207
228
  onSave(strVal, restVal);
208
229
  },
209
230
  // delay in ms
@@ -214,14 +235,18 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
214
235
  return {
215
236
  value: JSON.stringify(val),
216
237
  text: text,
217
- title: serializeToText(title?.children) || "Untitled"
238
+ title: serializeToText(title?.children) || ""
218
239
  };
219
240
  };
220
241
  const getPreviewImage = async (needBackground = false, options = {}) => {
221
242
  ReactEditor.blur(editor);
222
243
  const dom = needBackground ? editorWrapper?.current : editorWrapper?.current.getElementsByClassName("innert-editor-textbox")[0];
244
+ const pageBg = options?.fromBrains ? {
245
+ pageColor
246
+ } : {};
223
247
  const c = await getThumbnailImage(dom, {
224
248
  ...options,
249
+ ...pageBg,
225
250
  proxy: `${otherProps?.PAGES_API_HOST}/page/2canvas`
226
251
  });
227
252
  return c;
@@ -316,6 +341,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
316
341
  redo() {
317
342
  editor?.redo();
318
343
  },
344
+ toggleTheme() {
345
+ setOpenTheme(!openTheme);
346
+ },
347
+ toggleAITheme() {
348
+ setOpenAITheme(!openAITheme);
349
+ },
319
350
  getPageSettings: {
320
351
  background: pageBgImage && pageBgImage !== "none" ? `url(${pageBgImage})` : pageColor || ""
321
352
  }
@@ -370,7 +401,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
370
401
  ICON_API: "https://assets.agenciflow.com",
371
402
  translation: translationFn,
372
403
  getTitleSaveData,
373
- customLineHeight: lineH
404
+ customLineHeight: lineH,
405
+ uploadFile,
406
+ resumeUploadState,
407
+ uploadTerminator,
408
+ isUploadInProgress
374
409
  };
375
410
  const renderElement = useCallback(props => {
376
411
  return /*#__PURE__*/_jsx(Element, {
@@ -519,6 +554,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
519
554
  }
520
555
  return style;
521
556
  }, [pageBgImage, pageColor, pageTextColor]);
557
+ const themeProps = getTheme(selectedTheme);
522
558
 
523
559
  // const handleContextMenu = (e) => {
524
560
  // if (!readOnly) {
@@ -549,19 +585,80 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
549
585
  console.log("handleCursorScroll", err);
550
586
  }
551
587
  };
588
+ window.getTextIndeces = () => {
589
+ try {
590
+ const textWithPaths = extractTextWithPath(editor.children, []);
591
+ return textWithPaths;
592
+ } catch (err) {
593
+ console.log(err);
594
+ }
595
+ };
596
+ window.replaceTextIndeces = (path_data = []) => {
597
+ try {
598
+ const replacedJson = replaceTextPath(JSON.parse(JSON.stringify(editor.children)), path_data);
599
+
600
+ // loop delete all
601
+ editor.children.forEach(() => {
602
+ Transforms.delete(editor, {
603
+ at: [0]
604
+ });
605
+ });
606
+
607
+ // Insert new nodes
608
+ Transforms.insertNodes(editor, replacedJson, {
609
+ at: [0]
610
+ });
611
+ } catch (err) {
612
+ console.log(err);
613
+ }
614
+ };
615
+ window.replaceEditorContent = (fragments = []) => {
616
+ try {
617
+ // loop delete all
618
+ editor.children.forEach(() => {
619
+ Transforms.delete(editor, {
620
+ at: [0]
621
+ });
622
+ });
623
+
624
+ // Insert new nodes
625
+ Transforms.insertNodes(editor, fragments, {
626
+ at: [0]
627
+ });
628
+ } catch (err) {
629
+ console.log(err);
630
+ }
631
+ };
552
632
  return /*#__PURE__*/_jsxs(EditorProvider, {
553
633
  theme: theme,
554
634
  editor: editor,
635
+ openTheme: openTheme,
636
+ setOpenTheme: setOpenTheme,
637
+ triggerRender: triggerRender,
555
638
  children: [/*#__PURE__*/_jsx(FontLoader, {
556
639
  otherProps: {
557
640
  services: otherProps?.services
558
641
  },
559
642
  readOnly: readOnly
560
- }), /*#__PURE__*/_jsx(DialogWrapper, {
643
+ }), showThemeButtons ? /*#__PURE__*/_jsxs("div", {
644
+ className: "theme-buttons",
645
+ children: [/*#__PURE__*/_jsx(IconButton, {
646
+ onClick: () => setOpenTheme(true),
647
+ className: "themePaintIcon",
648
+ children: /*#__PURE__*/_jsx(ThemePaintIcon, {})
649
+ }), /*#__PURE__*/_jsx(IconButton, {
650
+ onClick: () => setOpenAITheme(true),
651
+ style: {
652
+ marginTop: "4px"
653
+ },
654
+ children: /*#__PURE__*/_jsx(ThemeAIIcon, {})
655
+ })]
656
+ }) : null, /*#__PURE__*/_jsx(DialogWrapper, {
561
657
  classes: classes,
562
658
  ...props,
563
659
  fullScreen: fullScreen,
564
660
  footer: footer || "",
661
+ selectedTheme: selectedTheme,
565
662
  children: /*#__PURE__*/_jsx(Box, {
566
663
  component: "div",
567
664
  className: `et-wrpr stimulate-${breakpoint} ${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
@@ -589,13 +686,16 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
589
686
  id: "slate-wrapper-scroll-container",
590
687
  ref: editorWrapper,
591
688
  onClick: e => {
592
- handleInsertLastElement(e, editor);
689
+ if (!isReadOnly) {
690
+ handleInsertLastElement(e, editor);
691
+ }
593
692
  },
594
693
  onScroll: handleScroll,
595
694
  style: editorWrapperStyle,
596
695
  children: /*#__PURE__*/_jsxs(Box, {
597
696
  component: "div",
598
697
  className: "max-content",
698
+ sx: themeProps?.sxProps || {},
599
699
  "data-info": outsideEditorClickLabel,
600
700
  children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
601
701
  className: "scroll-area",
@@ -641,8 +741,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
641
741
  chars: chars,
642
742
  type: type,
643
743
  theme: theme,
644
- otherProps: customProps,
645
- customProps: customProps
744
+ customProps: customProps,
745
+ otherProps: customProps
646
746
  }) : null, /*#__PURE__*/_jsx(RnDCopy, {
647
747
  readOnly: readOnly
648
748
  })]
@@ -665,6 +765,18 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
665
765
  "data-info": outsideEditorClickLabel,
666
766
  onClick: handleFooterClick,
667
767
  children: footer
768
+ }), openTheme ? /*#__PURE__*/_jsx(ThemeSettings, {
769
+ open: openTheme,
770
+ setOpen: setOpenTheme,
771
+ editor: editor,
772
+ services: otherProps?.services,
773
+ appTheme: theme,
774
+ customProps: customProps
775
+ }) : null, /*#__PURE__*/_jsx(ThemeSettingsAI, {
776
+ openAITheme: openAITheme,
777
+ setOpenAITheme: setOpenAITheme,
778
+ onSaveTheme: otherProps?.onSaveTheme,
779
+ theme: theme
668
780
  })]
669
781
  })
670
782
  }), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
@@ -673,8 +785,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
673
785
  setIsTextSelected: setIsTextSelected,
674
786
  customProps: customProps,
675
787
  editorWrapper: editorWrapper
676
- }) : null, !readOnly && showViewport ? /*#__PURE__*/_jsx(SwitchViewport, {
788
+ }) : null, !readOnly ? /*#__PURE__*/_jsx(SwitchViewport, {
677
789
  breakpoint: breakpoint,
790
+ show: showViewport,
678
791
  onChange: b => onSwitchBreakpoint(b),
679
792
  translation: translationFn
680
793
  }) : 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
  };
@@ -1132,6 +1132,8 @@ blockquote {
1132
1132
  margin: 0px;
1133
1133
  }
1134
1134
 
1135
+
1136
+
1135
1137
  .content-editable.empty {
1136
1138
  position: relative;
1137
1139
  }
@@ -1368,21 +1370,47 @@ code.markcode {
1368
1370
  background-color: #f3f3f3;
1369
1371
  font-family: 'Source Code Pro' !important;
1370
1372
  }
1373
+
1371
1374
  /* Hide the popper when the reference is hidden */
1372
1375
  .hide-popper-on-overlap[data-popper-escaped],
1373
1376
  .hide-popper-on-overlap[data-popper-reference-hidden] {
1374
1377
  visibility: hidden;
1375
1378
  pointer-events: none;
1376
1379
  }
1377
- code.markcode {
1378
- border-radius: 4px;
1379
- padding: 6px 8px;
1380
- margin: 8px 0px;
1381
- display: block;
1382
- background-color: #f3f3f3;
1383
- font-family: 'Source Code Pro' !important;
1380
+
1381
+ .theme-buttons {
1382
+ display: flex;
1383
+ justify-content: end;
1384
+ align-items: center;
1385
+ margin: auto;
1386
+ position: absolute;
1387
+ top: 60px;
1388
+ right: 20px;
1389
+ z-index: 1000;
1390
+ }
1391
+
1392
+ .themePaintIcon:hover .iconBorder {
1393
+ fill: #2563EB;
1394
+ }
1395
+
1396
+ .themePaintIcon:hover .iconStroke {
1397
+ stroke: #2563EB;
1384
1398
  }
1385
1399
 
1386
1400
  .hyperLink {
1387
1401
  word-break: break-all;
1388
- }
1402
+ }
1403
+
1404
+ .truncateText {
1405
+ display: inline-block;
1406
+ width: 380px;
1407
+ white-space: nowrap;
1408
+ overflow: hidden;
1409
+ text-overflow: ellipsis;
1410
+ }
1411
+
1412
+ @media only screen and (max-width: 600px) {
1413
+ .truncateText {
1414
+ width: 180px;
1415
+ }
1416
+ }
@@ -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") {
@@ -145,6 +145,7 @@ const Styles = theme => ({
145
145
  "& .option-label": {
146
146
  display: "flex",
147
147
  alignItems: "center",
148
+ whiteSpace: 'nowrap',
148
149
  gap: "8px"
149
150
  },
150
151
  "&:hover": {