@flozy/editor 4.4.0 → 4.4.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 +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}`);
|