@flozy/editor 3.7.2 → 3.7.3
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/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 +25 -14
- 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/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 +4 -2
- 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/MentionsPopup/Styles.js +5 -2
- 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/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 +71 -12
- package/package.json +1 -1
|
@@ -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;
|
|
@@ -62,6 +62,11 @@ function AppHeader(props) {
|
|
|
62
62
|
const handleDrawerToggle = () => {
|
|
63
63
|
setMobileOpen(prevState => !prevState);
|
|
64
64
|
};
|
|
65
|
+
const closeDrawer = () => {
|
|
66
|
+
if (mobileOpen) {
|
|
67
|
+
handleDrawerToggle();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
65
70
|
const onSettings = e => {
|
|
66
71
|
if (!readOnly) {
|
|
67
72
|
e.stopPropagation();
|
|
@@ -148,10 +153,27 @@ function AppHeader(props) {
|
|
|
148
153
|
}), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(List, {
|
|
149
154
|
children: menus.map((item, i) => {
|
|
150
155
|
const buttonProps = handleLinkType(item.url, item.linkType, true, item.target === "_blank");
|
|
156
|
+
const onTouchEnd = e => {
|
|
157
|
+
if (buttonProps?.onTouchEnd) {
|
|
158
|
+
buttonProps?.onTouchEnd(e);
|
|
159
|
+
closeDrawer();
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const onClick = e => {
|
|
163
|
+
if (buttonProps?.onClick) {
|
|
164
|
+
buttonProps?.onClick(e);
|
|
165
|
+
closeDrawer();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
const props = {
|
|
169
|
+
...buttonProps,
|
|
170
|
+
onTouchEnd,
|
|
171
|
+
onClick
|
|
172
|
+
};
|
|
151
173
|
return /*#__PURE__*/_jsx(ListItem, {
|
|
152
174
|
disablePadding: true,
|
|
153
175
|
children: /*#__PURE__*/_jsx(ListItemButton, {
|
|
154
|
-
...
|
|
176
|
+
...props,
|
|
155
177
|
sx: {
|
|
156
178
|
textAlign: "center"
|
|
157
179
|
},
|
|
@@ -229,7 +251,7 @@ function AppHeader(props) {
|
|
|
229
251
|
style: {
|
|
230
252
|
display: "inline-flex",
|
|
231
253
|
alignItems: "center",
|
|
232
|
-
color: textColor,
|
|
254
|
+
color: textColor || "#000000",
|
|
233
255
|
fontSize: logoFontSize,
|
|
234
256
|
fontFamily: titleFontFamily,
|
|
235
257
|
justifyContent: isLogoRight ? "end" : "start"
|
|
@@ -277,7 +299,7 @@ function AppHeader(props) {
|
|
|
277
299
|
fontFamily: fontFamily,
|
|
278
300
|
textTransform: "none",
|
|
279
301
|
fontSize: fontSize || "16px",
|
|
280
|
-
color: textColor || "#
|
|
302
|
+
color: textColor || "#000",
|
|
281
303
|
background: bgColor || "none",
|
|
282
304
|
"& .m-settings": {
|
|
283
305
|
display: "none",
|
|
@@ -292,7 +314,7 @@ function AppHeader(props) {
|
|
|
292
314
|
background: "#FFF"
|
|
293
315
|
},
|
|
294
316
|
"&:hover": {
|
|
295
|
-
color: textColorHover || textColor || "#
|
|
317
|
+
color: textColorHover || textColor || "#000",
|
|
296
318
|
background: bgColorHover || bgColor || "none",
|
|
297
319
|
"& .m-settings": {
|
|
298
320
|
display: "block"
|