@flozy/editor 3.7.6 → 3.7.7
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 +2 -29
- package/dist/Editor/CommonEditor.js +169 -111
- package/dist/Editor/Elements/Accordion/Accordion.js +74 -7
- package/dist/Editor/Elements/Accordion/AccordionBtnPopup.js +3 -2
- package/dist/Editor/Elements/Accordion/AccordionSummary.js +4 -60
- package/dist/Editor/Elements/AppHeader/AppHeader.js +26 -4
- package/dist/Editor/Elements/Button/EditorButton.js +28 -16
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +60 -17
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +25 -1
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +4 -4
- package/dist/Editor/Elements/Color Picker/Styles.js +2 -1
- package/dist/Editor/Elements/Embed/Frames/ImageFrame.js +1 -0
- package/dist/Editor/Elements/Embed/Image.js +28 -20
- package/dist/Editor/Elements/Embed/Video.js +15 -11
- package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
- package/dist/Editor/Elements/Form/Workflow/UserInputs.js +2 -1
- package/dist/Editor/Elements/Grid/Grid.js +2 -0
- package/dist/Editor/Elements/Grid/GridItem.js +3 -1
- package/dist/Editor/Elements/Link/Link.js +6 -1
- package/dist/Editor/Elements/Link/LinkButton.js +4 -2
- package/dist/Editor/Elements/Link/LinkPopup.js +11 -3
- package/dist/Editor/Elements/Link/LinkPopupStyles.js +28 -0
- package/dist/Editor/Elements/Table/TableCell.js +1 -1
- package/dist/Editor/MiniEditor.js +3 -1
- package/dist/Editor/Toolbar/Basic/index.js +4 -2
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +26 -2
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +5 -11
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +4 -11
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +213 -86
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +20 -13
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +52 -7
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +438 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +12 -11
- package/dist/Editor/Toolbar/toolbarGroups.js +48 -6
- package/dist/Editor/assets/svg/ThemeIcons.js +291 -0
- package/dist/Editor/common/ColorPickerButton.js +25 -9
- package/dist/Editor/common/CustomColorPicker/index.js +106 -0
- package/dist/Editor/common/CustomColorPicker/style.js +53 -0
- package/dist/Editor/common/CustomDialog/index.js +94 -0
- package/dist/Editor/common/CustomDialog/style.js +67 -0
- package/dist/Editor/common/CustomSelect.js +33 -0
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/EditorCmds.js +35 -0
- package/dist/Editor/common/Icon.js +30 -2
- package/dist/Editor/common/LinkSettings/NavComponents.js +5 -2
- package/dist/Editor/common/LinkSettings/index.js +2 -1
- package/dist/Editor/common/LinkSettings/navOptions.js +7 -2
- package/dist/Editor/common/MentionsPopup/Styles.js +6 -3
- package/dist/Editor/common/Shorthands/elements.js +54 -0
- package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +7 -7
- package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +16 -16
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +4 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +13 -3
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +15 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/buttonLink.js +1 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +31 -7
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +13 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +14 -4
- package/dist/Editor/common/StyleBuilder/index.js +1 -1
- package/dist/Editor/helper/theme.js +190 -4
- package/dist/Editor/hooks/useEditorTheme.js +139 -0
- package/dist/Editor/hooks/useMouseMove.js +4 -2
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +47 -5
- package/dist/Editor/plugins/withLayout.js +15 -10
- package/dist/Editor/plugins/withTable.js +2 -2
- package/dist/Editor/theme/ThemeList.js +50 -173
- package/dist/Editor/theme/index.js +144 -0
- package/dist/Editor/themeSettings/ActiveTheme.js +72 -0
- package/dist/Editor/themeSettings/buttons/index.js +290 -0
- package/dist/Editor/themeSettings/buttons/style.js +21 -0
- package/dist/Editor/themeSettings/colorTheme/index.js +290 -0
- package/dist/Editor/themeSettings/colorTheme/style.js +77 -0
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +123 -0
- package/dist/Editor/themeSettings/fonts/index.js +213 -0
- package/dist/Editor/themeSettings/fonts/style.js +44 -0
- package/dist/Editor/themeSettings/icons.js +60 -0
- package/dist/Editor/themeSettings/index.js +320 -0
- package/dist/Editor/themeSettings/style.js +152 -0
- package/dist/Editor/themeSettingsAI/icons.js +96 -0
- package/dist/Editor/themeSettingsAI/index.js +356 -0
- package/dist/Editor/themeSettingsAI/saveTheme.js +190 -0
- package/dist/Editor/themeSettingsAI/style.js +247 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +157 -25
- package/dist/Editor/utils/button.js +1 -17
- package/dist/Editor/utils/events.js +11 -4
- package/dist/Editor/utils/font.js +40 -37
- package/dist/Editor/utils/helper.js +73 -13
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useRef, useState, useEffect, useImperativeHandle, forwardRef } from "react";
|
|
2
2
|
import { Editable, Slate, ReactEditor } from 'slate-react';
|
|
3
|
-
import { createEditor
|
|
3
|
+
import { createEditor } from 'slate';
|
|
4
4
|
import { useDebounce } from "use-debounce";
|
|
5
5
|
import withCommon from "./hooks/withCommon";
|
|
6
6
|
import { getBlock, getMarked } from "./utils/chatEditor/SlateUtilityFunctions";
|
|
@@ -26,8 +26,7 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
26
26
|
needLayout = false,
|
|
27
27
|
toolBar = true,
|
|
28
28
|
onSave,
|
|
29
|
-
onsubmit
|
|
30
|
-
onBlur = () => {}
|
|
29
|
+
onsubmit
|
|
31
30
|
} = props;
|
|
32
31
|
const classes = usePopupStyle(theme);
|
|
33
32
|
const convertedContent = draftToSlate({
|
|
@@ -55,21 +54,6 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
55
54
|
if (editor) {
|
|
56
55
|
ReactEditor.focus(editor);
|
|
57
56
|
}
|
|
58
|
-
},
|
|
59
|
-
clearAll() {
|
|
60
|
-
if (!editor) return;
|
|
61
|
-
editor.children = [{
|
|
62
|
-
type: 'paragraph',
|
|
63
|
-
children: [{
|
|
64
|
-
text: ''
|
|
65
|
-
}]
|
|
66
|
-
}];
|
|
67
|
-
Transforms.select(editor, {
|
|
68
|
-
path: [0, 0],
|
|
69
|
-
offset: 0
|
|
70
|
-
});
|
|
71
|
-
ReactEditor.focus(editor);
|
|
72
|
-
setValue(editor.children);
|
|
73
57
|
}
|
|
74
58
|
}));
|
|
75
59
|
useEffect(() => {
|
|
@@ -190,16 +174,6 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
190
174
|
}
|
|
191
175
|
}, [chars, editor, target, mentions, setMentions, search, type, mentionsRef]);
|
|
192
176
|
const handleClose = () => {};
|
|
193
|
-
const handleBlur = () => {
|
|
194
|
-
const {
|
|
195
|
-
value: strVal,
|
|
196
|
-
...restVal
|
|
197
|
-
} = getOnSaveData(value);
|
|
198
|
-
onBlur({
|
|
199
|
-
strVal,
|
|
200
|
-
restVal
|
|
201
|
-
});
|
|
202
|
-
};
|
|
203
177
|
return /*#__PURE__*/_jsx(EditorProvider, {
|
|
204
178
|
theme: theme,
|
|
205
179
|
editor: editor,
|
|
@@ -218,7 +192,6 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
218
192
|
placeholder: "Start typing ...",
|
|
219
193
|
spellCheck: true,
|
|
220
194
|
autoFocus: true,
|
|
221
|
-
onBlur: handleBlur,
|
|
222
195
|
onKeyDown: onKeyDown
|
|
223
196
|
}), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
|
|
224
197
|
ref: mentionsRef,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-unused-vars */
|
|
2
|
-
import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle } from "react";
|
|
2
|
+
import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle, createContext } from "react";
|
|
3
3
|
import { createEditor, Transforms } from "slate";
|
|
4
4
|
import { Slate, Editable, ReactEditor } from "slate-react";
|
|
5
5
|
import { useDebounce, useDebouncedCallback } from "use-debounce";
|
|
@@ -18,7 +18,7 @@ import { getThumbnailImage, invertColor } from "./helper";
|
|
|
18
18
|
import PopupTool from "./Toolbar/PopupTool";
|
|
19
19
|
import "./font.css";
|
|
20
20
|
import "./Editor.css";
|
|
21
|
-
import { Box,
|
|
21
|
+
import { Box, IconButton, Typography } from "@mui/material";
|
|
22
22
|
import Shorthands from "./common/Shorthands";
|
|
23
23
|
import MiniToolbar from "./Toolbar/Mini/MiniToolbar";
|
|
24
24
|
import { EditorProvider } from "./hooks/useMouseMove";
|
|
@@ -28,12 +28,19 @@ import DragAndDrop from "./common/DnD";
|
|
|
28
28
|
import Section from "./common/Section";
|
|
29
29
|
import "animate.css";
|
|
30
30
|
import decorators from "./utils/Decorators";
|
|
31
|
-
import { getTRBLBreakPoints } from "./helper/theme";
|
|
32
|
-
import { handleInsertLastElement, outsideEditorClickLabel } from "./utils/helper";
|
|
31
|
+
import { getTRBLBreakPoints, getVariableValue } from "./helper/theme";
|
|
32
|
+
import { handleInsertLastElement, onDeleteKey, outsideEditorClickLabel } from "./utils/helper";
|
|
33
33
|
import useWindowResize from "./hooks/useWindowResize";
|
|
34
|
+
import { getTheme } from "./theme";
|
|
35
|
+
import { useTheme } from "@emotion/react";
|
|
36
|
+
import ThemeSettings from "./themeSettings";
|
|
37
|
+
import ThemeSettingsAI from "./themeSettingsAI";
|
|
38
|
+
import { Experimental_CssVarsProvider as CssVarsProvider, experimental_extendTheme as extendTheme } from "@mui/material/styles";
|
|
34
39
|
import PopoverAIInput from "./Elements/AI/PopoverAIInput";
|
|
40
|
+
import { ThemeAIIcon, ThemePaintIcon } from "./assets/svg/ThemeIcons";
|
|
35
41
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
36
42
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
43
|
+
export const ThemeContext = /*#__PURE__*/createContext(null);
|
|
37
44
|
const Item = /*#__PURE__*/forwardRef(({
|
|
38
45
|
children,
|
|
39
46
|
...props
|
|
@@ -60,7 +67,8 @@ const Leaf = ({
|
|
|
60
67
|
children,
|
|
61
68
|
leaf
|
|
62
69
|
}) => {
|
|
63
|
-
|
|
70
|
+
const theme = useTheme();
|
|
71
|
+
children = getMarked(leaf, children, theme);
|
|
64
72
|
return /*#__PURE__*/_jsx("span", {
|
|
65
73
|
...attributes,
|
|
66
74
|
children: children
|
|
@@ -79,7 +87,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
79
87
|
toolbarOptions,
|
|
80
88
|
otherProps,
|
|
81
89
|
isIframe,
|
|
82
|
-
theme
|
|
90
|
+
theme,
|
|
91
|
+
showThemeButtons
|
|
83
92
|
} = props;
|
|
84
93
|
const editorWrapper = useRef();
|
|
85
94
|
const mentionsRef = useRef();
|
|
@@ -123,10 +132,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
123
132
|
const {
|
|
124
133
|
bannerSpacing,
|
|
125
134
|
pageBgImage,
|
|
126
|
-
pageColor,
|
|
135
|
+
pageColor = "",
|
|
127
136
|
color: pageTextColor,
|
|
128
137
|
pageWidth,
|
|
129
|
-
maxWidth: pageMaxWidth
|
|
138
|
+
maxWidth: pageMaxWidth,
|
|
139
|
+
theme: selectedTheme
|
|
130
140
|
} = pageSt?.pageProps || {
|
|
131
141
|
bannerSpacing: {
|
|
132
142
|
left: 0,
|
|
@@ -137,9 +147,11 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
137
147
|
};
|
|
138
148
|
const classes = editorStyles({
|
|
139
149
|
padHeight: !fullScreen ? otherProps?.padHeight : 20,
|
|
140
|
-
placeHolderColor: invertColor(pageColor || "#FFF"),
|
|
150
|
+
placeHolderColor: invertColor(pageColor.startsWith("var") ? getVariableValue(pageColor) : pageColor || "#FFF"),
|
|
141
151
|
theme
|
|
142
152
|
});
|
|
153
|
+
const [openTheme, setOpenTheme] = useState(false);
|
|
154
|
+
const [openAITheme, setOpenAITheme] = useState(false);
|
|
143
155
|
useEffect(() => {
|
|
144
156
|
setValue(draftToSlate({
|
|
145
157
|
data: content
|
|
@@ -239,6 +251,12 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
239
251
|
redo() {
|
|
240
252
|
editor?.redo();
|
|
241
253
|
},
|
|
254
|
+
toggleTheme() {
|
|
255
|
+
setOpenTheme(!openTheme);
|
|
256
|
+
},
|
|
257
|
+
toggleAITheme() {
|
|
258
|
+
setOpenAITheme(!openAITheme);
|
|
259
|
+
},
|
|
242
260
|
getPageSettings: {
|
|
243
261
|
background: pageBgImage && pageBgImage !== "none" ? `url(${pageBgImage})` : pageColor || ""
|
|
244
262
|
}
|
|
@@ -319,7 +337,8 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
319
337
|
} else if (isCtrlKey) {
|
|
320
338
|
commands({
|
|
321
339
|
event,
|
|
322
|
-
editor
|
|
340
|
+
editor,
|
|
341
|
+
needLayout
|
|
323
342
|
});
|
|
324
343
|
} else if (event.key === "Tab") {
|
|
325
344
|
event.preventDefault();
|
|
@@ -385,113 +404,152 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
385
404
|
}
|
|
386
405
|
return style;
|
|
387
406
|
}, [pageBgImage, pageColor]);
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
children: /*#__PURE__*/
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
407
|
+
const themeProps = getTheme(selectedTheme);
|
|
408
|
+
return /*#__PURE__*/_jsx(ThemeContext.Provider, {
|
|
409
|
+
value: {
|
|
410
|
+
openTheme,
|
|
411
|
+
setOpenTheme
|
|
412
|
+
},
|
|
413
|
+
children: /*#__PURE__*/_jsx(CssVarsProvider, {
|
|
414
|
+
theme: extendTheme(selectedTheme?.theme?.cssVars || {}),
|
|
415
|
+
children: /*#__PURE__*/_jsxs(EditorProvider, {
|
|
416
|
+
theme: theme,
|
|
417
|
+
editor: editor,
|
|
418
|
+
children: [showThemeButtons ? /*#__PURE__*/_jsxs("div", {
|
|
419
|
+
style: {
|
|
420
|
+
display: "flex",
|
|
421
|
+
justifyContent: "end",
|
|
422
|
+
alignItems: "center",
|
|
423
|
+
gap: "8px",
|
|
424
|
+
width: "70vw",
|
|
425
|
+
margin: "auto"
|
|
426
|
+
},
|
|
427
|
+
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
428
|
+
onClick: () => setOpenTheme(true),
|
|
429
|
+
children: /*#__PURE__*/_jsx(ThemePaintIcon, {})
|
|
430
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
431
|
+
onClick: () => setOpenAITheme(true),
|
|
432
|
+
style: {
|
|
433
|
+
marginTop: "4px"
|
|
434
|
+
},
|
|
435
|
+
children: /*#__PURE__*/_jsx(ThemeAIIcon, {})
|
|
436
|
+
})]
|
|
437
|
+
}) : null, /*#__PURE__*/_jsx(DialogWrapper, {
|
|
438
|
+
classes: classes,
|
|
439
|
+
...props,
|
|
440
|
+
fullScreen: fullScreen,
|
|
441
|
+
footer: footer || "",
|
|
442
|
+
children: /*#__PURE__*/_jsx(Box, {
|
|
443
|
+
component: "div",
|
|
444
|
+
className: `${editorClass || ""} ${isIframe ? "iframe-editor" : ""}`,
|
|
445
|
+
sx: classes.root,
|
|
446
|
+
style: {
|
|
447
|
+
...dotBg
|
|
448
|
+
},
|
|
449
|
+
children: /*#__PURE__*/_jsxs(Slate, {
|
|
450
|
+
editor: editor,
|
|
451
|
+
initialValue: value,
|
|
452
|
+
onChange: handleEditorChange,
|
|
453
|
+
children: [/*#__PURE__*/_jsx(DragAndDrop, {
|
|
454
|
+
children: /*#__PURE__*/_jsxs(Overlay, {
|
|
455
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
456
|
+
className: `${hasTopBanner() ? "has-topbanner" : ""} ${!pageColor ? "no-color" : ""} ${isScrolling ? "" : "hideScroll"} scrollable-content scrollSmooth`,
|
|
457
|
+
sx: classes.slateWrapper,
|
|
458
|
+
id: "slate-wrapper-scroll-container"
|
|
459
|
+
// style={editorWrapperStyle}
|
|
460
|
+
,
|
|
461
|
+
ref: editorWrapper,
|
|
462
|
+
onClick: e => {
|
|
463
|
+
handleInsertLastElement(e, editor);
|
|
464
|
+
},
|
|
465
|
+
onScroll: handleScroll,
|
|
466
|
+
style: editorWrapperStyle,
|
|
428
467
|
children: /*#__PURE__*/_jsxs(Box, {
|
|
429
468
|
component: "div",
|
|
430
|
-
className:
|
|
431
|
-
sx: {
|
|
432
|
-
backgroundColor: "transparent",
|
|
433
|
-
padding: {
|
|
434
|
-
...getTRBLBreakPoints(bannerSpacing)
|
|
435
|
-
},
|
|
436
|
-
width: !pageWidth || pageWidth === "fixed" ? fixedWidth : fullWidth,
|
|
437
|
-
height: viewport.h ? `${viewport.h}px` : `100%`,
|
|
438
|
-
alignSelf: "center",
|
|
439
|
-
transformOrigin: "left top",
|
|
440
|
-
transition: "all 0.3s",
|
|
441
|
-
minHeight: "87%",
|
|
442
|
-
maxWidth: pageMaxWidth ? `${parseInt(pageMaxWidth)}px !important` : "auto"
|
|
443
|
-
},
|
|
469
|
+
className: "max-content",
|
|
470
|
+
sx: themeProps?.sxProps || {},
|
|
444
471
|
"data-info": outsideEditorClickLabel,
|
|
445
|
-
children: [/*#__PURE__*/_jsx(
|
|
446
|
-
className: "
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
472
|
+
children: [renderTopBanner(), /*#__PURE__*/_jsx("div", {
|
|
473
|
+
className: "scroll-area",
|
|
474
|
+
"data-info": outsideEditorClickLabel,
|
|
475
|
+
children: /*#__PURE__*/_jsxs(Box, {
|
|
476
|
+
component: "div",
|
|
477
|
+
className: `editor-wrapper ${pageWidth === "fixed" ? "fixed" : "full"}`,
|
|
478
|
+
sx: {
|
|
479
|
+
backgroundColor: "transparent",
|
|
480
|
+
padding: {
|
|
481
|
+
...getTRBLBreakPoints(bannerSpacing)
|
|
482
|
+
},
|
|
483
|
+
width: !pageWidth || pageWidth === "fixed" ? fixedWidth : fullWidth,
|
|
484
|
+
height: viewport.h ? `${viewport.h}px` : `100%`,
|
|
485
|
+
alignSelf: "center",
|
|
486
|
+
transformOrigin: "left top",
|
|
487
|
+
transition: "all 0.3s",
|
|
488
|
+
minHeight: "87%",
|
|
489
|
+
maxWidth: pageMaxWidth ? `${parseInt(pageMaxWidth)}px !important` : "auto"
|
|
490
|
+
},
|
|
491
|
+
"data-info": outsideEditorClickLabel,
|
|
492
|
+
children: [/*#__PURE__*/_jsx(Editable, {
|
|
493
|
+
className: "innert-editor-textbox",
|
|
494
|
+
readOnly: isReadOnly,
|
|
495
|
+
renderElement: renderElement,
|
|
496
|
+
renderLeaf: renderLeaf,
|
|
497
|
+
decorate: decorators,
|
|
498
|
+
onKeyDown: onKeyDown
|
|
499
|
+
}), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
|
|
500
|
+
ref: mentionsRef,
|
|
501
|
+
mentions: mentions,
|
|
502
|
+
setMentions: setMentions,
|
|
503
|
+
editor: editor,
|
|
504
|
+
target: target,
|
|
505
|
+
index: index,
|
|
506
|
+
chars: chars,
|
|
507
|
+
type: type,
|
|
508
|
+
theme: theme
|
|
509
|
+
}) : null]
|
|
510
|
+
})
|
|
511
|
+
}), !hideMiniToolBar ? /*#__PURE__*/_jsx(MiniToolbar, {
|
|
512
|
+
customProps: customProps,
|
|
513
|
+
toolbarOptions: toolbarOptions,
|
|
461
514
|
theme: theme
|
|
462
|
-
}) : null
|
|
515
|
+
}) : null, /*#__PURE__*/_jsx(PopoverAIInput, {
|
|
516
|
+
otherProps: otherProps || {}
|
|
517
|
+
}), footer && (fullScreen || readOnly) && /*#__PURE__*/_jsx(Typography, {
|
|
518
|
+
sx: {
|
|
519
|
+
color: "rgb(100, 116, 139)",
|
|
520
|
+
fontSize: "13px",
|
|
521
|
+
paddingBottom: hideMiniToolBar ? "0px" : "12px",
|
|
522
|
+
cursor: "pointer"
|
|
523
|
+
},
|
|
524
|
+
align: "center",
|
|
525
|
+
"data-info": outsideEditorClickLabel,
|
|
526
|
+
onClick: handleFooterClick,
|
|
527
|
+
children: footer
|
|
528
|
+
}), openTheme ? /*#__PURE__*/_jsx(ThemeSettings, {
|
|
529
|
+
open: openTheme,
|
|
530
|
+
setOpen: setOpenTheme,
|
|
531
|
+
editor: editor,
|
|
532
|
+
services: otherProps?.services
|
|
533
|
+
}) : null, /*#__PURE__*/_jsx(ThemeSettingsAI, {
|
|
534
|
+
openAITheme: openAITheme,
|
|
535
|
+
setOpenAITheme: setOpenAITheme,
|
|
536
|
+
onSaveTheme: otherProps?.onSaveTheme
|
|
537
|
+
})]
|
|
463
538
|
})
|
|
464
|
-
}), !
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
}), footer && (fullScreen || readOnly) && /*#__PURE__*/_jsx(Typography, {
|
|
471
|
-
sx: {
|
|
472
|
-
color: "rgb(100, 116, 139)",
|
|
473
|
-
fontSize: "13px",
|
|
474
|
-
paddingBottom: hideMiniToolBar ? "0px" : "12px",
|
|
475
|
-
cursor: "pointer"
|
|
476
|
-
},
|
|
477
|
-
align: "center",
|
|
478
|
-
"data-info": outsideEditorClickLabel,
|
|
479
|
-
onClick: handleFooterClick,
|
|
480
|
-
children: footer
|
|
481
|
-
})]
|
|
539
|
+
}), !readOnly ? /*#__PURE__*/_jsx(PopupTool, {
|
|
540
|
+
onDrawerOpen: onDrawerOpen,
|
|
541
|
+
theme: theme,
|
|
542
|
+
setIsTextSelected: setIsTextSelected,
|
|
543
|
+
customProps: customProps
|
|
544
|
+
}) : null]
|
|
482
545
|
})
|
|
483
|
-
}),
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
}), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
|
|
491
|
-
...htmlAction,
|
|
492
|
-
handleCodeToText: handleCodeToText
|
|
493
|
-
})]
|
|
494
|
-
}, id)
|
|
546
|
+
}), htmlAction.showInput && /*#__PURE__*/_jsx(CodeToText, {
|
|
547
|
+
...htmlAction,
|
|
548
|
+
handleCodeToText: handleCodeToText
|
|
549
|
+
})]
|
|
550
|
+
}, id)
|
|
551
|
+
})
|
|
552
|
+
})]
|
|
495
553
|
})
|
|
496
554
|
})
|
|
497
555
|
});
|
|
@@ -9,6 +9,55 @@ import Icon from "../../common/Icon";
|
|
|
9
9
|
import { useEditorSelection } from "../../hooks/useMouseMove";
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
const accordionBtnStyleKeys = {
|
|
13
|
+
accordionTextColor: "textColor",
|
|
14
|
+
accordionBgColor: "bgColor",
|
|
15
|
+
accordionBorderColor: "borderColor"
|
|
16
|
+
};
|
|
17
|
+
const getAccordionData = updateData => {
|
|
18
|
+
const accordionBtnStyle = {}; // accordion btn style will come under type: accordion node
|
|
19
|
+
const accordionTitleStyle = {}; // accordion title style will come under type: accordion-summary node
|
|
20
|
+
|
|
21
|
+
Object.entries(updateData).forEach(([key, value]) => {
|
|
22
|
+
const accordionBtnStyleKey = accordionBtnStyleKeys[key];
|
|
23
|
+
if (accordionBtnStyleKey) {
|
|
24
|
+
// converting accordion button elementProp keys to node keys e.g: accordionTextColor -> textColor
|
|
25
|
+
accordionBtnStyle[accordionBtnStyleKey] = value;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
accordionTitleStyle[key] = value;
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
accordionBtnStyle,
|
|
32
|
+
accordionTitleStyle
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const convertAccordionBtnStyleKeys = (data = {}) => {
|
|
36
|
+
const style = {
|
|
37
|
+
...data
|
|
38
|
+
};
|
|
39
|
+
Object.entries(accordionBtnStyleKeys).forEach(([key, value]) => {
|
|
40
|
+
const val = data[value];
|
|
41
|
+
if (val) {
|
|
42
|
+
// deleting the existing style key in node e.g: textColor
|
|
43
|
+
delete style[value];
|
|
44
|
+
|
|
45
|
+
// convertint into new key in element props e.g: accordionTextColor
|
|
46
|
+
style[key] = val;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return style;
|
|
50
|
+
};
|
|
51
|
+
const getElementProps = element => {
|
|
52
|
+
const accordionSummary = element.children?.find(c => c.type === "accordion-summary");
|
|
53
|
+
|
|
54
|
+
// joining accordion title and button styles
|
|
55
|
+
const elementProps = {
|
|
56
|
+
...accordionSummary,
|
|
57
|
+
...convertAccordionBtnStyleKeys(element)
|
|
58
|
+
};
|
|
59
|
+
return elementProps;
|
|
60
|
+
};
|
|
12
61
|
const Accordion = props => {
|
|
13
62
|
const {
|
|
14
63
|
attributes,
|
|
@@ -69,16 +118,34 @@ const Accordion = props => {
|
|
|
69
118
|
at: path
|
|
70
119
|
});
|
|
71
120
|
};
|
|
121
|
+
const setNodes = (data, path) => {
|
|
122
|
+
Transforms.setNodes(editor, data, {
|
|
123
|
+
at: path
|
|
124
|
+
});
|
|
125
|
+
};
|
|
72
126
|
const onSave = data => {
|
|
73
127
|
const updateData = {
|
|
74
128
|
...data
|
|
75
129
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
130
|
+
const {
|
|
131
|
+
accordionBtnStyle,
|
|
132
|
+
accordionTitleStyle
|
|
133
|
+
} = getAccordionData(updateData);
|
|
134
|
+
|
|
135
|
+
// applying accordion title style
|
|
136
|
+
const accordionSummary = data.children?.find(c => c.type === "accordion-summary");
|
|
137
|
+
const accordionSummaryPath = ReactEditor.findPath(editor, accordionSummary);
|
|
138
|
+
setNodes({
|
|
139
|
+
...accordionTitleStyle,
|
|
140
|
+
type: "accordion-summary",
|
|
141
|
+
children: accordionSummary.children
|
|
142
|
+
}, accordionSummaryPath);
|
|
143
|
+
|
|
144
|
+
// applying accordion button style
|
|
145
|
+
delete accordionBtnStyle.children;
|
|
146
|
+
setNodes({
|
|
147
|
+
...accordionBtnStyle
|
|
148
|
+
}, path);
|
|
82
149
|
onClose();
|
|
83
150
|
};
|
|
84
151
|
const onClose = () => {
|
|
@@ -123,7 +190,7 @@ const Accordion = props => {
|
|
|
123
190
|
},
|
|
124
191
|
children: children[1]
|
|
125
192
|
}), !readOnly && /*#__PURE__*/_jsx(ToolBar, {}), openSetttings ? /*#__PURE__*/_jsx(AccordionBtnPopup, {
|
|
126
|
-
element: element,
|
|
193
|
+
element: getElementProps(element),
|
|
127
194
|
onSave: onSave,
|
|
128
195
|
onClose: onClose,
|
|
129
196
|
customProps: customProps
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import StyleBuilder from "../../common/StyleBuilder";
|
|
3
3
|
import accordionTitleBtnStyle from "../../common/StyleBuilder/accordionTitleBtnStyle";
|
|
4
|
+
import accordionTitleStyle from "../../common/StyleBuilder/accordionTitleStyle";
|
|
4
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
6
|
const AccordionBtnPopup = props => {
|
|
6
7
|
const {
|
|
@@ -10,12 +11,12 @@ const AccordionBtnPopup = props => {
|
|
|
10
11
|
customProps
|
|
11
12
|
} = props;
|
|
12
13
|
return /*#__PURE__*/_jsx(StyleBuilder, {
|
|
13
|
-
title: "Accordion
|
|
14
|
+
title: "Accordion Settings",
|
|
14
15
|
type: "accordionTitleBtnStyle",
|
|
15
16
|
element: element,
|
|
16
17
|
onSave: onSave,
|
|
17
18
|
onClose: onClose,
|
|
18
|
-
renderTabs: accordionTitleBtnStyle,
|
|
19
|
+
renderTabs: [...accordionTitleBtnStyle, ...accordionTitleStyle],
|
|
19
20
|
customProps: customProps
|
|
20
21
|
});
|
|
21
22
|
};
|
|
@@ -1,68 +1,17 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { Transforms } from "slate";
|
|
3
|
-
import { useSelected, useSlateStatic, ReactEditor } from "slate-react";
|
|
4
|
-
import AccordionTitlePopup from "./AccordionTitlePopup";
|
|
5
|
-
import { IconButton, Tooltip } from "@mui/material";
|
|
6
|
-
import { GridSettingsIcon } from "../../common/iconslist";
|
|
7
|
-
import { useEditorSelection } from "../../hooks/useMouseMove";
|
|
1
|
+
import React from "react";
|
|
8
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
3
|
const AccordionSummary = props => {
|
|
11
4
|
const {
|
|
12
5
|
attributes,
|
|
13
6
|
children,
|
|
14
|
-
element
|
|
15
|
-
customProps
|
|
7
|
+
element
|
|
16
8
|
} = props;
|
|
17
|
-
const {
|
|
18
|
-
readOnly
|
|
19
|
-
} = customProps;
|
|
20
|
-
const [openSetttings, setOpenSettings] = useState(false);
|
|
21
|
-
const editor = useSlateStatic();
|
|
22
|
-
const [showTool] = useEditorSelection(editor);
|
|
23
|
-
const selected = useSelected();
|
|
24
|
-
const path = ReactEditor.findPath(editor, element);
|
|
25
9
|
const {
|
|
26
10
|
textColor,
|
|
27
11
|
bgColor,
|
|
28
12
|
borderColor
|
|
29
13
|
} = element;
|
|
30
|
-
|
|
31
|
-
return selected && !showTool ? /*#__PURE__*/_jsx("div", {
|
|
32
|
-
className: "element-toolbar hr",
|
|
33
|
-
contentEditable: false,
|
|
34
|
-
style: {
|
|
35
|
-
top: "-42px"
|
|
36
|
-
},
|
|
37
|
-
children: /*#__PURE__*/_jsx(Tooltip, {
|
|
38
|
-
title: "Settings",
|
|
39
|
-
arrow: true,
|
|
40
|
-
children: /*#__PURE__*/_jsx(IconButton, {
|
|
41
|
-
onClick: onSettings,
|
|
42
|
-
children: /*#__PURE__*/_jsx(GridSettingsIcon, {})
|
|
43
|
-
})
|
|
44
|
-
})
|
|
45
|
-
}) : null;
|
|
46
|
-
};
|
|
47
|
-
const onSettings = () => {
|
|
48
|
-
setOpenSettings(true);
|
|
49
|
-
};
|
|
50
|
-
const onSave = data => {
|
|
51
|
-
const updateData = {
|
|
52
|
-
...data
|
|
53
|
-
};
|
|
54
|
-
delete updateData.children;
|
|
55
|
-
Transforms.setNodes(editor, {
|
|
56
|
-
...updateData
|
|
57
|
-
}, {
|
|
58
|
-
at: path
|
|
59
|
-
});
|
|
60
|
-
onClose();
|
|
61
|
-
};
|
|
62
|
-
const onClose = () => {
|
|
63
|
-
setOpenSettings(false);
|
|
64
|
-
};
|
|
65
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
14
|
+
return /*#__PURE__*/_jsx("div", {
|
|
66
15
|
className: `accordion-summary-container`,
|
|
67
16
|
...attributes,
|
|
68
17
|
style: {
|
|
@@ -72,12 +21,7 @@ const AccordionSummary = props => {
|
|
|
72
21
|
border: `1px solid ${borderColor}`,
|
|
73
22
|
color: textColor
|
|
74
23
|
},
|
|
75
|
-
children:
|
|
76
|
-
element: element,
|
|
77
|
-
onSave: onSave,
|
|
78
|
-
onClose: onClose,
|
|
79
|
-
customProps: customProps
|
|
80
|
-
}) : null]
|
|
24
|
+
children: children
|
|
81
25
|
});
|
|
82
26
|
};
|
|
83
27
|
export default AccordionSummary;
|