@flozy/editor 4.4.0 → 4.4.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Editor/ChatEditor.js +14 -2
- package/dist/Editor/CommonEditor.js +24 -11
- package/dist/Editor/Editor.css +1 -7
- package/dist/Editor/Elements/AI/PopoverAIInput.js +76 -71
- package/dist/Editor/Elements/AI/Styles.js +1 -0
- package/dist/Editor/Elements/Button/EditorButton.js +4 -8
- package/dist/Editor/Elements/Embed/Embed.css +1 -1
- package/dist/Editor/Elements/Embed/Image.js +2 -3
- package/dist/Editor/Elements/Embed/Video.js +2 -3
- package/dist/Editor/Elements/Form/Form.js +1 -0
- package/dist/Editor/Elements/Form/Workflow/FormWorkflow.js +12 -3
- package/dist/Editor/Elements/Mentions/Mentions.js +3 -2
- package/dist/Editor/Elements/SimpleText/index.js +2 -3
- package/dist/Editor/Elements/Table/TableRow.js +1 -1
- package/dist/Editor/Styles/EditorStyles.js +1 -1
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +2 -1
- package/dist/Editor/Toolbar/PopupTool/ButtonTemplatesCard.js +29 -35
- package/dist/Editor/Toolbar/PopupTool/FullViewCard.js +30 -35
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +2 -0
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +38 -22
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +1 -0
- package/dist/Editor/Toolbar/PopupTool/index.js +5 -5
- package/dist/Editor/common/FontLoader/FontLoader.js +6 -6
- package/dist/Editor/common/Icon.js +1 -1
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/SaveAsTemplate.js +0 -1
- package/dist/Editor/common/RnD/index.js +2 -3
- package/dist/Editor/common/Section/index.js +1 -11
- package/dist/Editor/common/Section/styles.js +0 -14
- package/dist/Editor/common/Shorthands/mentions.js +1 -1
- package/dist/Editor/helper/index.js +2 -4
- package/dist/Editor/hooks/useBreakpoints.js +1 -1
- package/dist/Editor/hooks/useMentions.js +39 -13
- package/dist/Editor/hooks/withCommon.js +7 -2
- package/dist/Editor/plugins/withHTML.js +29 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +0 -9
- package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +1 -24
- package/dist/Editor/utils/customHooks/useResize.js +3 -2
- package/dist/Editor/utils/events.js +0 -36
- package/package.json +1 -1
- package/dist/Editor/helper/RnD/focusNode.js +0 -70
@@ -46,7 +46,8 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
46
46
|
const [deboundedValue] = useDebounce(value, 500);
|
47
47
|
const editor = useMemo(() => {
|
48
48
|
return withCommon(createEditor(), {
|
49
|
-
needLayout
|
49
|
+
needLayout,
|
50
|
+
isChatEditor: true
|
50
51
|
});
|
51
52
|
}, []);
|
52
53
|
const isReadOnly = readOnly === "readonly";
|
@@ -248,6 +249,16 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
248
249
|
restVal
|
249
250
|
});
|
250
251
|
};
|
252
|
+
const handlePaste = event => {
|
253
|
+
const items = event.clipboardData.items;
|
254
|
+
for (let i = 0; i < items.length; i++) {
|
255
|
+
if (items[i].type.startsWith("image/")) {
|
256
|
+
event.preventDefault(); // Prevent the default paste behavior
|
257
|
+
return; // Exit early to keep the editor empty
|
258
|
+
}
|
259
|
+
}
|
260
|
+
};
|
261
|
+
|
251
262
|
return /*#__PURE__*/_jsx(EditorProvider, {
|
252
263
|
theme: theme,
|
253
264
|
editor: editor,
|
@@ -267,7 +278,8 @@ const ChatEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
267
278
|
placeholder: "Start typing ...",
|
268
279
|
spellCheck: true,
|
269
280
|
onBlur: handleBlur,
|
270
|
-
onKeyDown: onKeyDown
|
281
|
+
onKeyDown: onKeyDown,
|
282
|
+
onPaste: handlePaste
|
271
283
|
}), !readOnly ? /*#__PURE__*/_jsx(MentionsPopup, {
|
272
284
|
ref: mentionsRef,
|
273
285
|
mentions: mentions,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/* eslint-disable no-unused-vars */
|
2
2
|
import React, { useRef, useCallback, useEffect, useMemo, useState, forwardRef, useImperativeHandle } from "react";
|
3
3
|
import PropTypes from "prop-types";
|
4
|
-
import { createEditor, Transforms } from "slate";
|
4
|
+
import { createEditor, Transforms, Range } from "slate";
|
5
5
|
import { Slate, Editable, ReactEditor } from "slate-react";
|
6
6
|
import { useDebounce, useDebouncedCallback } from "use-debounce";
|
7
7
|
import { getMarked, getBlock } from "./utils/SlateUtilityFunctions";
|
@@ -10,7 +10,7 @@ import { draftToSlate } from "./utils/draftToSlate";
|
|
10
10
|
import useMentions from "./hooks/useMentions";
|
11
11
|
import MentionsPopup from "./common/MentionsPopup";
|
12
12
|
import { RemoteCursorOverlay } from "./RemoteCursorOverlay/Overlay";
|
13
|
-
import { mentionsEvent, commands, indentation, escapeEvent, enterEvent
|
13
|
+
import { mentionsEvent, commands, indentation, escapeEvent, enterEvent } from "./utils/events";
|
14
14
|
import withCommon from "./hooks/withCommon";
|
15
15
|
import DialogWrapper from "./DialogWrapper";
|
16
16
|
import { serializeToText } from "./utils/serializeToText";
|
@@ -33,10 +33,10 @@ import PopoverAIInput from "./Elements/AI/PopoverAIInput";
|
|
33
33
|
import RnDCopy from "./common/RnD/RnDCopy";
|
34
34
|
import SwitchViewport from "./common/RnD/SwitchViewport/SwitchViewport";
|
35
35
|
import { onInsertFragment } from "./utils/RnD/RnDCtrlCmds";
|
36
|
+
import FontLoader from "./common/FontLoader/FontLoader";
|
36
37
|
import "./font.css";
|
37
38
|
import "./Editor.css";
|
38
39
|
import "animate.css";
|
39
|
-
import FontLoader from "./common/FontLoader/FontLoader";
|
40
40
|
import { jsx as _jsx } from "react/jsx-runtime";
|
41
41
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
42
42
|
const Item = /*#__PURE__*/forwardRef(({
|
@@ -365,10 +365,20 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
365
365
|
});
|
366
366
|
} else if (event.key === "Enter") {
|
367
367
|
enterEvent(event, editor, customProps?.isMobile);
|
368
|
-
} else if (event.key ===
|
369
|
-
|
370
|
-
|
371
|
-
|
368
|
+
} else if (event.key === 'Backspace') {
|
369
|
+
const {
|
370
|
+
selection
|
371
|
+
} = editor;
|
372
|
+
event.preventDefault();
|
373
|
+
if (selection) {
|
374
|
+
if (!Range.isCollapsed(selection)) {
|
375
|
+
editor.deleteFragment();
|
376
|
+
} else {
|
377
|
+
editor.deleteBackward({
|
378
|
+
unit: 'character'
|
379
|
+
});
|
380
|
+
}
|
381
|
+
}
|
372
382
|
}
|
373
383
|
}, [chars, editor, target, mentions, setMentions, search, type, mentionsRef]);
|
374
384
|
const Overlay = collaborativeEditor && !isReadOnly ? RemoteCursorOverlay : React.Fragment;
|
@@ -433,19 +443,22 @@ const CommonEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
433
443
|
const selection = window?.getSelection();
|
434
444
|
if (selection && selection.rangeCount > 0) {
|
435
445
|
const cursorPosition = selection.getRangeAt(0)?.getBoundingClientRect();
|
436
|
-
const
|
446
|
+
const containerRect = container?.getBoundingClientRect();
|
447
|
+
const containerBottom = containerRect?.bottom;
|
437
448
|
if (cursorPosition && cursorPosition.bottom > containerBottom - 250) {
|
449
|
+
// Calculate dynamic scroll based on remaining space
|
450
|
+
const scrollAmount = Math.min(200, cursorPosition.bottom - containerBottom + 250);
|
438
451
|
container?.scrollBy({
|
439
|
-
top:
|
452
|
+
top: scrollAmount,
|
440
453
|
behavior: "smooth"
|
441
454
|
});
|
442
455
|
}
|
443
456
|
} else {
|
444
|
-
console.warn(
|
457
|
+
console.warn('No valid selection range found');
|
445
458
|
}
|
446
459
|
}
|
447
460
|
} catch (err) {
|
448
|
-
console.log(
|
461
|
+
console.log('handleCursorScroll', err);
|
449
462
|
}
|
450
463
|
};
|
451
464
|
return /*#__PURE__*/_jsx(EditorProvider, {
|
package/dist/Editor/Editor.css
CHANGED
@@ -244,13 +244,6 @@ blockquote {
|
|
244
244
|
width: 17px !important;
|
245
245
|
}
|
246
246
|
|
247
|
-
.react-datepicker__input-container input {
|
248
|
-
height: 40px !important;
|
249
|
-
border: 1px solid #ccc;
|
250
|
-
border-radius: 5px;
|
251
|
-
width: 100%;
|
252
|
-
}
|
253
|
-
|
254
247
|
.close-popupbtn {
|
255
248
|
border-radius: 4px !important;
|
256
249
|
width: 24px;
|
@@ -891,6 +884,7 @@ blockquote {
|
|
891
884
|
/* For Firefox */
|
892
885
|
.removeScroll {
|
893
886
|
-moz-appearance: textfield;
|
887
|
+
appearance: none;
|
894
888
|
}
|
895
889
|
|
896
890
|
.borderInput:focus-visible {
|
@@ -40,9 +40,11 @@ const scrollToAIInput = editor => {
|
|
40
40
|
}, 200);
|
41
41
|
};
|
42
42
|
const insertText = (editor, text, options) => {
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
if (text?.length) {
|
44
|
+
const parsed = new DOMParser().parseFromString(text, "text/html");
|
45
|
+
const fragment = deserialize(parsed.body);
|
46
|
+
Transforms.insertFragment(editor, fragment, options);
|
47
|
+
}
|
46
48
|
};
|
47
49
|
const insertAtNextLine = (editor, text) => {
|
48
50
|
const nextLine = getNextLine(editor);
|
@@ -200,80 +202,83 @@ function PopoverAIInput({
|
|
200
202
|
selectedEleRef.current = selectedElement;
|
201
203
|
}, [selectedElement]);
|
202
204
|
const onSend = async (type, option) => {
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
205
|
+
try {
|
206
|
+
if (type === "close") {
|
207
|
+
onClickOutside();
|
208
|
+
return;
|
209
|
+
}
|
210
|
+
if (type === "done") {
|
211
|
+
// Get the current selection point
|
212
|
+
const {
|
213
|
+
anchor
|
214
|
+
} = editor.selection;
|
215
|
+
const {
|
216
|
+
path
|
217
|
+
} = anchor;
|
218
|
+
const {
|
219
|
+
text: selectText
|
220
|
+
} = Node.get(editor, path);
|
221
|
+
if (selectText?.length) {
|
222
|
+
insertAtNextLine(editor, generatedText);
|
223
|
+
} else {
|
224
|
+
insertText(editor, generatedText);
|
225
|
+
}
|
226
|
+
onClickOutside();
|
227
|
+
return;
|
228
|
+
}
|
229
|
+
if (type === "replace_selection") {
|
230
|
+
// replace generated text
|
221
231
|
insertText(editor, generatedText);
|
232
|
+
onClickOutside();
|
233
|
+
return;
|
222
234
|
}
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
}
|
232
|
-
if (type === "speech_to_text") {
|
233
|
-
setGeneratedText(option.text);
|
234
|
-
return;
|
235
|
-
}
|
236
|
-
if (type === "try_again") {
|
237
|
-
// resetting the previous option and try again
|
238
|
-
option = selectedOption;
|
239
|
-
type = selectedOption.value;
|
240
|
-
} else {
|
241
|
-
setSelectedOption(option);
|
242
|
-
}
|
243
|
-
setLoading(true);
|
244
|
-
const payload = {
|
245
|
-
mode: option.mode || 0,
|
246
|
-
query: option?.inputValue || inputValue
|
247
|
-
};
|
248
|
-
if (option.mode === MODES.translate || option.mode === MODES.rephraseTone) {
|
249
|
-
payload.textOptionInput = type;
|
250
|
-
}
|
251
|
-
if (option.mode) {
|
252
|
-
payload.textData = generatedText || window.getSelection().toString();
|
253
|
-
}
|
254
|
-
const result = await services("infinityAI", payload);
|
255
|
-
setLoading(false);
|
256
|
-
setInputValue("");
|
257
|
-
let {
|
258
|
-
data: text
|
259
|
-
} = result || {};
|
260
|
-
if (!text) {
|
261
|
-
onClickOutside();
|
262
|
-
return;
|
263
|
-
}
|
264
|
-
if (!option.replace) {
|
265
|
-
if (type === "continue_writing") {
|
266
|
-
setGeneratedText(generatedText + text);
|
235
|
+
if (type === "speech_to_text") {
|
236
|
+
setGeneratedText(option.text);
|
237
|
+
return;
|
238
|
+
}
|
239
|
+
if (type === "try_again") {
|
240
|
+
// resetting the previous option and try again
|
241
|
+
option = selectedOption;
|
242
|
+
type = selectedOption.value;
|
267
243
|
} else {
|
268
|
-
|
244
|
+
setSelectedOption(option);
|
269
245
|
}
|
270
|
-
|
271
|
-
|
272
|
-
|
246
|
+
setLoading(true);
|
247
|
+
const payload = {
|
248
|
+
mode: option.mode || 0,
|
249
|
+
query: option?.inputValue || inputValue
|
250
|
+
};
|
251
|
+
if (option.mode === MODES.translate || option.mode === MODES.rephraseTone) {
|
252
|
+
payload.textOptionInput = type;
|
253
|
+
}
|
254
|
+
if (option.mode) {
|
255
|
+
payload.textData = generatedText || window.getSelection().toString();
|
256
|
+
}
|
257
|
+
const result = await services("infinityAI", payload);
|
258
|
+
setLoading(false);
|
259
|
+
setInputValue("");
|
260
|
+
let {
|
261
|
+
data: text
|
262
|
+
} = result || {};
|
263
|
+
if (!text) {
|
264
|
+
onClickOutside();
|
265
|
+
return;
|
266
|
+
}
|
267
|
+
if (!option.replace) {
|
268
|
+
if (type === "continue_writing") {
|
269
|
+
setGeneratedText(generatedText + text);
|
270
|
+
} else {
|
271
|
+
setGeneratedText(text);
|
272
|
+
}
|
273
|
+
return;
|
274
|
+
}
|
275
|
+
insertText(editor, text);
|
273
276
|
|
274
|
-
|
277
|
+
// scrollToAIInput();
|
278
|
+
} catch (err) {
|
279
|
+
console.error("Error on sending/inserting text", err);
|
280
|
+
}
|
275
281
|
};
|
276
|
-
|
277
282
|
const onInputChange = e => {
|
278
283
|
setInputValue(e.target.value);
|
279
284
|
};
|
@@ -10,14 +10,10 @@ import { getTRBLBreakPoints, getBreakPointsValue, groupByBreakpoint } from "../.
|
|
10
10
|
import { handleLinkType, windowVar } from "../../utils/helper";
|
11
11
|
import LinkSettings from "../../common/LinkSettings";
|
12
12
|
import Icon from "../../common/Icon";
|
13
|
-
import { useEditorContext } from "../../hooks/useMouseMove";
|
14
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
15
14
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
16
15
|
const EditorButton = props => {
|
17
16
|
const theme = useTheme();
|
18
|
-
const {
|
19
|
-
theme: appTheme
|
20
|
-
} = useEditorContext();
|
21
17
|
const {
|
22
18
|
attributes,
|
23
19
|
element,
|
@@ -144,8 +140,8 @@ const EditorButton = props => {
|
|
144
140
|
sx: {
|
145
141
|
display: "inline-flex",
|
146
142
|
color: "rgba(0, 0, 0, 0.54)",
|
147
|
-
borderRadius:
|
148
|
-
border:
|
143
|
+
borderRadius: '50% !important',
|
144
|
+
border: 'none !important'
|
149
145
|
},
|
150
146
|
...btnProps,
|
151
147
|
children: /*#__PURE__*/_jsx(Icon, {
|
@@ -216,7 +212,7 @@ const EditorButton = props => {
|
|
216
212
|
},
|
217
213
|
"& svg": {
|
218
214
|
"& path": {
|
219
|
-
stroke:
|
215
|
+
stroke: theme.palette.text.primary
|
220
216
|
}
|
221
217
|
},
|
222
218
|
"& button": {
|
@@ -281,7 +277,7 @@ const EditorButton = props => {
|
|
281
277
|
right: "-42px",
|
282
278
|
stroke: "#fff",
|
283
279
|
"& path": {
|
284
|
-
fill: openMoreOptions ?
|
280
|
+
fill: openMoreOptions ? theme.palette.text.blueText : ""
|
285
281
|
}
|
286
282
|
},
|
287
283
|
onClick: handleMoreBtn,
|
@@ -94,8 +94,7 @@ const ImageContent = props => {
|
|
94
94
|
onTouchEnd: onTouchEnd // for mobile
|
95
95
|
,
|
96
96
|
"data-path": path.join(","),
|
97
|
-
draggable: false
|
98
|
-
contentEditable: false
|
97
|
+
draggable: false
|
99
98
|
});
|
100
99
|
};
|
101
100
|
const Image = props => {
|
@@ -223,7 +222,7 @@ const Image = props => {
|
|
223
222
|
const getWidth = () => {
|
224
223
|
if (resizing) {
|
225
224
|
return {
|
226
|
-
width: `${size.
|
225
|
+
width: `${size.widthInPercent}%`,
|
227
226
|
height: objectFit ? `${size.height}px` : "auto"
|
228
227
|
};
|
229
228
|
} else {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
1
|
+
import React, { useState, useEffect, useCallback } from "react";
|
2
2
|
import { useSlateStatic, ReactEditor } from "slate-react";
|
3
3
|
import { Node, Transforms } from "slate";
|
4
4
|
import { IconButton, Tooltip, Box, useTheme } from "@mui/material";
|
@@ -179,7 +179,7 @@ const Video = ({
|
|
179
179
|
const getWidth = () => {
|
180
180
|
if (resizing) {
|
181
181
|
return {
|
182
|
-
width: size.
|
182
|
+
width: size.widthInPercent ? `${size.widthInPercent}%` : "100%",
|
183
183
|
height: url ? `${size.height || 370}px` : "auto"
|
184
184
|
};
|
185
185
|
} else {
|
@@ -220,7 +220,6 @@ const Video = ({
|
|
220
220
|
alignContent: vertical
|
221
221
|
},
|
222
222
|
...element.attr,
|
223
|
-
contentEditable: false,
|
224
223
|
children: [openSetttings ? /*#__PURE__*/_jsx(EmbedPopup, {
|
225
224
|
element: element,
|
226
225
|
onSave: onSave,
|
@@ -71,11 +71,11 @@ const FormWorkflow = props => {
|
|
71
71
|
children: [/*#__PURE__*/_jsx(Grid, {
|
72
72
|
item: true,
|
73
73
|
sx: classes.radioBtn,
|
74
|
-
children: /*#__PURE__*/
|
74
|
+
children: /*#__PURE__*/_jsxs(RadioGroup, {
|
75
75
|
name: "set timing",
|
76
76
|
value: schedule,
|
77
77
|
defaultValue: 1,
|
78
|
-
children: /*#__PURE__*/_jsx(FormControlLabel, {
|
78
|
+
children: [/*#__PURE__*/_jsx(FormControlLabel, {
|
79
79
|
value: "immediately",
|
80
80
|
label: "Immediately",
|
81
81
|
onChange: () => {
|
@@ -84,7 +84,16 @@ const FormWorkflow = props => {
|
|
84
84
|
control: /*#__PURE__*/_jsx(Radio, {
|
85
85
|
size: "small"
|
86
86
|
})
|
87
|
-
})
|
87
|
+
}), /*#__PURE__*/_jsx(FormControlLabel, {
|
88
|
+
value: "after",
|
89
|
+
label: "After",
|
90
|
+
onChange: () => {
|
91
|
+
setSchedule("after");
|
92
|
+
},
|
93
|
+
control: /*#__PURE__*/_jsx(Radio, {
|
94
|
+
size: "small"
|
95
|
+
})
|
96
|
+
})]
|
88
97
|
})
|
89
98
|
}), schedule === "after" && /*#__PURE__*/_jsx(Grid, {
|
90
99
|
item: true,
|
@@ -14,9 +14,10 @@ const Mentions = ({
|
|
14
14
|
verticalAlign: "baseline",
|
15
15
|
display: "inline-block",
|
16
16
|
borderRadius: "4px",
|
17
|
-
backgroundColor: "#
|
17
|
+
backgroundColor: "#2563EB",
|
18
18
|
fontSize: "0.9em",
|
19
|
-
boxShadow: selected && focused ? "0 0 0 2px #B4D5FF" : "none"
|
19
|
+
boxShadow: selected && focused ? "0 0 0 2px #B4D5FF" : "none",
|
20
|
+
color: "#FFF"
|
20
21
|
};
|
21
22
|
// See if our empty text child has any styling marks applied and apply those
|
22
23
|
if (element.children[0].bold) {
|
@@ -6,7 +6,6 @@ import { isTextSelected } from "../../utils/helper";
|
|
6
6
|
import { useEditorContext } from "../../hooks/useMouseMove";
|
7
7
|
import SimpleTextStyle from "./style";
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
9
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
10
9
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
11
10
|
import { createElement as _createElement } from "react";
|
12
11
|
const SimpleText = props => {
|
@@ -48,9 +47,9 @@ const SimpleText = props => {
|
|
48
47
|
sx: classes.root,
|
49
48
|
key: `para_${path.join("|")}`
|
50
49
|
}, children, openAI ? null : /*#__PURE__*/_jsx("span", {
|
51
|
-
contentEditable: false,
|
52
50
|
className: "placeholder-simple-text",
|
53
|
-
children: isEmptyEditor ? editorPlaceholder || "Write Something..." : showPlaceHolder ? opacity && selected ? /*#__PURE__*/_jsxs(
|
51
|
+
children: isEmptyEditor ? editorPlaceholder || "Write Something..." : showPlaceHolder ? opacity && selected ? /*#__PURE__*/_jsxs("span", {
|
52
|
+
className: "placeholder-simple-text-default",
|
54
53
|
children: ["Type ", /*#__PURE__*/_jsx("span", {
|
55
54
|
style: {
|
56
55
|
backgroundColor: '#F2F6FA',
|
@@ -123,7 +123,8 @@ const MiniToolbar = props => {
|
|
123
123
|
label,
|
124
124
|
icon: Icon
|
125
125
|
}) => {
|
126
|
-
const isDisabled = popupType === type || type === "undo" ? !canUndo : type === "redo" ? !canRedo : false;
|
126
|
+
const isDisabled = popupType === type || type === "undo" ? !canUndo : type === "redo" ? !canRedo : false; // for textFormat type
|
127
|
+
|
127
128
|
return /*#__PURE__*/_jsx(Tooltip, {
|
128
129
|
arrow: true,
|
129
130
|
title: label,
|
@@ -1,28 +1,22 @@
|
|
1
1
|
import React from "react";
|
2
|
-
import { Box,
|
2
|
+
import { Box, Card, CardMedia, Grid } from "@mui/material";
|
3
|
+
|
4
|
+
// const Select = (props) => {
|
5
|
+
// const { classes, data, onSelectTemplate } = props;
|
6
|
+
// return (
|
7
|
+
// <Box
|
8
|
+
// className="template-card-action"
|
9
|
+
// component={"div"}
|
10
|
+
// sx={classes.templateCardBtnGrp}
|
11
|
+
// style={{ padding: 0, background: "transparent"}}
|
12
|
+
// >
|
13
|
+
// <Button className="blueBtn" onClick={onSelectTemplate(data)}>
|
14
|
+
// Select
|
15
|
+
// </Button>
|
16
|
+
// </Box>
|
17
|
+
// );
|
18
|
+
// };
|
3
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
4
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
5
|
-
const Select = props => {
|
6
|
-
const {
|
7
|
-
classes,
|
8
|
-
data,
|
9
|
-
onSelectTemplate
|
10
|
-
} = props;
|
11
|
-
return /*#__PURE__*/_jsx(Box, {
|
12
|
-
className: "template-card-action",
|
13
|
-
component: "div",
|
14
|
-
sx: classes.templateCardBtnGrp,
|
15
|
-
style: {
|
16
|
-
padding: 0,
|
17
|
-
background: "transparent"
|
18
|
-
},
|
19
|
-
children: /*#__PURE__*/_jsx(Button, {
|
20
|
-
className: "blueBtn",
|
21
|
-
onClick: onSelectTemplate(data),
|
22
|
-
children: "Select"
|
23
|
-
})
|
24
|
-
});
|
25
|
-
};
|
26
20
|
const ButtonTemplateCard = props => {
|
27
21
|
const {
|
28
22
|
classes,
|
@@ -34,19 +28,19 @@ const ButtonTemplateCard = props => {
|
|
34
28
|
xs: 3,
|
35
29
|
children: /*#__PURE__*/_jsx(Card, {
|
36
30
|
sx: classes.paperOverrides,
|
37
|
-
children: /*#__PURE__*/
|
31
|
+
children: /*#__PURE__*/_jsx(Box, {
|
38
32
|
sx: classes.buttonCardMediaWrpr,
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
})
|
33
|
+
onClick: onSelectTemplate(m),
|
34
|
+
children: /*#__PURE__*/_jsx("div", {
|
35
|
+
className: "img-wrapper",
|
36
|
+
children: /*#__PURE__*/_jsx(CardMedia, {
|
37
|
+
className: `template-card-media`,
|
38
|
+
component: "div",
|
39
|
+
image: m?.thumbnail,
|
40
|
+
alt: m?.title,
|
41
|
+
sx: classes.buttonCardMedia
|
42
|
+
})
|
43
|
+
})
|
50
44
|
})
|
51
45
|
})
|
52
46
|
}, `template_${m.id}`);
|