@flozy/editor 10.7.0 → 10.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Editor/ChatEditor.js +17 -16
- package/dist/Editor/CommonEditor.js +126 -15
- package/dist/Editor/DialogWrapper.js +31 -25
- package/dist/Editor/Editor.css +39 -11
- package/dist/Editor/Elements/AI/PopoverAIInput.js +11 -3
- package/dist/Editor/Elements/AI/Styles.js +1 -0
- package/dist/Editor/Elements/Accordion/Accordion.js +25 -17
- package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
- package/dist/Editor/Elements/Attachments/AttachmentStyles.js +16 -0
- package/dist/Editor/Elements/Attachments/Attachments.js +153 -11
- package/dist/Editor/Elements/Attachments/AttachmentsButton.js +14 -4
- package/dist/Editor/Elements/Button/EditorButton.js +23 -7
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +61 -14
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +10 -7
- package/dist/Editor/Elements/Color Picker/Styles.js +15 -13
- package/dist/Editor/Elements/Embed/Embed.js +36 -43
- package/dist/Editor/Elements/Embed/Image.js +240 -23
- package/dist/Editor/Elements/Embed/Video.js +246 -15
- package/dist/Editor/Elements/Form/FormField.js +1 -1
- package/dist/Editor/Elements/Form/Workflow/Styles.js +24 -22
- package/dist/Editor/Elements/Form/Workflow/constant.js +25 -1
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +39 -33
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +7 -4
- package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +1 -0
- package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
- package/dist/Editor/Elements/FreeGrid/helper.js +115 -0
- package/dist/Editor/Elements/FreeGrid/styles.js +9 -0
- package/dist/Editor/Elements/Grid/GridItem.js +1 -1
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +2 -1
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +3 -3
- package/dist/Editor/Elements/Title/title.js +6 -6
- package/dist/Editor/Elements/TopBanner/TopBanner.js +6 -1
- package/dist/Editor/Elements/TopBanner/TopBannerButton.js +8 -2
- package/dist/Editor/Elements/Variables/VariableButton.js +10 -1
- package/dist/Editor/MiniEditor.js +2 -1
- package/dist/Editor/Styles/EditorStyles.js +20 -5
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +27 -3
- package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +4 -3
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +10 -13
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +4 -2
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +6 -13
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +19 -5
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +167 -42
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +16 -7
- package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +69 -9
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +70 -12
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +439 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +5 -2
- package/dist/Editor/Toolbar/toolbarGroups.js +56 -10
- package/dist/Editor/assets/svg/BackIcon.js +18 -0
- package/dist/Editor/assets/svg/ThemeIcons.js +293 -0
- package/dist/Editor/common/ColorPickerButton.js +38 -16
- package/dist/Editor/common/CustomColorPicker/index.js +130 -0
- package/dist/Editor/common/CustomColorPicker/style.js +53 -0
- package/dist/Editor/common/CustomDialog2/index.js +94 -0
- package/dist/Editor/common/CustomDialog2/style.js +67 -0
- package/dist/Editor/common/CustomSelect.js +43 -0
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/FontLoader/FontLoader.js +3 -0
- package/dist/Editor/common/Icon.js +28 -0
- package/dist/Editor/common/ImageSelector/ImageSelector.js +45 -7
- package/dist/Editor/common/ImageSelector/Options/Upload.js +26 -11
- package/dist/Editor/common/ImageSelector/Styles.js +3 -9
- package/dist/Editor/common/LinkSettings/NavComponents.js +6 -2
- package/dist/Editor/common/MentionsPopup/index.js +9 -1
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +2 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +4 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +20 -7
- package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +3 -2
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +3 -1
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +20 -7
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +11 -2
- package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +17 -0
- package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +6 -3
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +28 -18
- package/dist/Editor/common/RnD/Utils/index.js +3 -1
- package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +45 -58
- package/dist/Editor/common/RnD/VirtualElement/helper.js +320 -130
- package/dist/Editor/common/RnD/VirtualElement/styles.js +22 -0
- package/dist/Editor/common/RnD/index.js +48 -13
- package/dist/Editor/common/Shorthands/elements.js +62 -4
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +4 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +20 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +12 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +16 -8
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +36 -10
- package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +115 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +16 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/menusArray.js +2 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +15 -7
- package/dist/Editor/common/StyleBuilder/index.js +8 -4
- package/dist/Editor/common/Uploader.js +125 -17
- package/dist/Editor/common/UploaderWithProgress.js +183 -0
- package/dist/Editor/common/iconslist.js +21 -0
- package/dist/Editor/commonStyle.js +107 -64
- package/dist/Editor/helper/index.js +10 -2
- package/dist/Editor/helper/textIndeces.js +58 -0
- package/dist/Editor/helper/theme.js +203 -2
- package/dist/Editor/hooks/useEditorTheme.js +153 -0
- package/dist/Editor/hooks/useMouseMove.js +9 -3
- package/dist/Editor/hooks/useThemeValues.js +63 -0
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +7 -3
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/service/fileupload.js +53 -0
- package/dist/Editor/theme/ThemeList.js +50 -173
- package/dist/Editor/theme/index.js +149 -0
- package/dist/Editor/themeSettings/ActiveTheme.js +82 -0
- package/dist/Editor/themeSettings/buttons/index.js +300 -0
- package/dist/Editor/themeSettings/buttons/style.js +23 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +310 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +81 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +121 -0
- package/dist/Editor/themeSettings/fonts/index.js +240 -0
- package/dist/Editor/themeSettings/fonts/style.js +62 -0
- package/dist/Editor/themeSettings/icons.js +60 -0
- package/dist/Editor/themeSettings/index.js +380 -0
- package/dist/Editor/themeSettings/style.js +299 -0
- package/dist/Editor/themeSettingsAI/icons.js +96 -0
- package/dist/Editor/themeSettingsAI/index.js +355 -0
- package/dist/Editor/themeSettingsAI/saveTheme.js +202 -0
- package/dist/Editor/themeSettingsAI/style.js +332 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +182 -21
- package/dist/Editor/utils/accordion.js +62 -34
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/draftToSlate.js +3 -2
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +97 -21
- package/dist/Editor/utils/insertAppHeader.js +8 -4
- package/package.json +4 -4
- 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
|
3
|
-
import { createEditor, Transforms, Editor } from
|
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:
|
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 ===
|
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 {
|
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 editor = useMemo(() => {
|
@@ -145,10 +158,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
145
158
|
const {
|
146
159
|
bannerSpacing,
|
147
160
|
pageBgImage,
|
148
|
-
pageColor,
|
161
|
+
pageColor = "",
|
149
162
|
color: pageTextColor,
|
150
163
|
pageWidth,
|
151
164
|
maxWidth: pageMaxWidth,
|
165
|
+
theme: selectedTheme,
|
152
166
|
lineHeight
|
153
167
|
} = pageSt?.pageProps || {
|
154
168
|
bannerSpacing: {
|
@@ -160,10 +174,17 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
160
174
|
};
|
161
175
|
const classes = editorStyles({
|
162
176
|
padHeight: !fullScreen ? otherProps?.padHeight : 20,
|
163
|
-
placeHolderColor: invertColor(pageColor || "#FFF"),
|
177
|
+
placeHolderColor: invertColor(pageColor.startsWith("var") ? getVariableValue(pageColor) : pageColor || "#FFF"),
|
164
178
|
theme,
|
165
179
|
overrideWrapperStyles
|
166
180
|
});
|
181
|
+
const [openTheme, setOpenTheme] = useState(false);
|
182
|
+
const [openAITheme, setOpenAITheme] = useState(false);
|
183
|
+
const [, setThemeUpdated] = useState(0);
|
184
|
+
const triggerRender = () => {
|
185
|
+
setThemeUpdated(prev => prev + 1); // Incrementing forces a re-render while updating theme
|
186
|
+
};
|
187
|
+
|
167
188
|
const isMobile = window.matchMedia("(max-width: 899px)")?.matches || false;
|
168
189
|
useEffect(() => {
|
169
190
|
setValue(draftToSlate({
|
@@ -188,11 +209,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
188
209
|
const debounced = useDebouncedCallback(
|
189
210
|
// function
|
190
211
|
value => {
|
212
|
+
debouncedValue.current = value;
|
191
213
|
const {
|
192
214
|
value: strVal,
|
193
215
|
...restVal
|
194
216
|
} = getOnSaveData(value);
|
195
|
-
debouncedValue.current = value;
|
196
217
|
onSave(strVal, restVal);
|
197
218
|
},
|
198
219
|
// delay in ms
|
@@ -203,7 +224,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
203
224
|
return {
|
204
225
|
value: JSON.stringify(val),
|
205
226
|
text: text,
|
206
|
-
title: serializeToText(title?.children) || "
|
227
|
+
title: serializeToText(title?.children) || ""
|
207
228
|
};
|
208
229
|
};
|
209
230
|
const getTitleSaveData = title => {
|
@@ -220,8 +241,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
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__*/
|
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" : ""}`,
|
@@ -596,6 +693,7 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
596
693
|
children: /*#__PURE__*/_jsxs(Box, {
|
597
694
|
component: "div",
|
598
695
|
className: "max-content",
|
696
|
+
sx: themeProps?.sxProps || {},
|
599
697
|
"data-info": outsideEditorClickLabel,
|
600
698
|
children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
|
601
699
|
className: "scroll-area",
|
@@ -641,8 +739,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
641
739
|
chars: chars,
|
642
740
|
type: type,
|
643
741
|
theme: theme,
|
644
|
-
|
645
|
-
|
742
|
+
customProps: customProps,
|
743
|
+
otherProps: customProps
|
646
744
|
}) : null, /*#__PURE__*/_jsx(RnDCopy, {
|
647
745
|
readOnly: readOnly
|
648
746
|
})]
|
@@ -665,6 +763,18 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
665
763
|
"data-info": outsideEditorClickLabel,
|
666
764
|
onClick: handleFooterClick,
|
667
765
|
children: footer
|
766
|
+
}), openTheme ? /*#__PURE__*/_jsx(ThemeSettings, {
|
767
|
+
open: openTheme,
|
768
|
+
setOpen: setOpenTheme,
|
769
|
+
editor: editor,
|
770
|
+
services: otherProps?.services,
|
771
|
+
appTheme: theme,
|
772
|
+
customProps: customProps
|
773
|
+
}) : null, /*#__PURE__*/_jsx(ThemeSettingsAI, {
|
774
|
+
openAITheme: openAITheme,
|
775
|
+
setOpenAITheme: setOpenAITheme,
|
776
|
+
onSaveTheme: otherProps?.onSaveTheme,
|
777
|
+
theme: theme
|
668
778
|
})]
|
669
779
|
})
|
670
780
|
}), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
|
@@ -673,8 +783,9 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
673
783
|
setIsTextSelected: setIsTextSelected,
|
674
784
|
customProps: customProps,
|
675
785
|
editorWrapper: editorWrapper
|
676
|
-
}) : null, !readOnly
|
786
|
+
}) : null, !readOnly ? /*#__PURE__*/_jsx(SwitchViewport, {
|
677
787
|
breakpoint: breakpoint,
|
788
|
+
show: showViewport,
|
678
789
|
onChange: b => onSwitchBreakpoint(b),
|
679
790
|
translation: translationFn
|
680
791
|
}) : 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__*/
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
24
|
+
zIndex: 1000
|
26
25
|
},
|
27
|
-
|
26
|
+
sx: classes.fullScreenWrapper,
|
27
|
+
children: [/*#__PURE__*/_jsx(DialogTitle, {
|
28
|
+
style: {
|
29
|
+
padding: "6px 8px"
|
30
|
+
},
|
28
31
|
children: /*#__PURE__*/_jsx(Grid, {
|
29
|
-
|
30
|
-
display: "flex",
|
31
|
-
justifyContent: "end"
|
32
|
-
},
|
33
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
34
|
-
onClick: onClose,
|
32
|
+
children: /*#__PURE__*/_jsx(Grid, {
|
35
33
|
style: {
|
36
|
-
|
34
|
+
display: "flex",
|
35
|
+
justifyContent: "end"
|
37
36
|
},
|
38
|
-
children: /*#__PURE__*/_jsx(
|
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
|
-
|
43
|
-
|
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
|
};
|
package/dist/Editor/Editor.css
CHANGED
@@ -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
|
}
|
@@ -1342,16 +1344,16 @@ blockquote {
|
|
1342
1344
|
|
1343
1345
|
::selection {
|
1344
1346
|
color: inherit;
|
1345
|
-
background: rgba(35, 131, 226, 0.35) !important;
|
1347
|
+
/* background: rgba(35, 131, 226, 0.35) !important; */
|
1346
1348
|
}
|
1347
1349
|
|
1348
1350
|
::-moz-selection {
|
1349
|
-
background: rgba(35, 131, 226, 0.35) !important;
|
1351
|
+
/* background: rgba(35, 131, 226, 0.35) !important; */
|
1350
1352
|
color: inherit;
|
1351
1353
|
}
|
1352
1354
|
|
1353
1355
|
::-webkit-selection {
|
1354
|
-
background: rgba(35, 131, 226, 0.35) !important;
|
1356
|
+
/* background: rgba(35, 131, 226, 0.35) !important; */
|
1355
1357
|
color: inherit;
|
1356
1358
|
}
|
1357
1359
|
|
@@ -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
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
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
|
-
|
261
|
-
|
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") {
|