@flozy/editor 10.6.3 → 10.6.5
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 +16 -17
- package/dist/Editor/CommonEditor.js +14 -129
- package/dist/Editor/DialogWrapper.js +25 -31
- package/dist/Editor/Editor.css +11 -49
- package/dist/Editor/Elements/AI/PopoverAIInput.js +3 -11
- package/dist/Editor/Elements/AI/Styles.js +0 -1
- package/dist/Editor/Elements/Accordion/Accordion.js +9 -45
- package/dist/Editor/Elements/Accordion/AccordionSummary.js +23 -1
- package/dist/Editor/Elements/AppHeader/AppHeader.js +5 -10
- package/dist/Editor/Elements/Button/EditorButton.js +10 -26
- package/dist/Editor/Elements/Carousel/CarouselItem.js +1 -2
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +14 -61
- package/dist/Editor/Elements/Color Picker/ColorPicker.css +1 -25
- package/dist/Editor/Elements/Color Picker/ColorPicker.js +7 -10
- package/dist/Editor/Elements/Color Picker/Styles.js +13 -15
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/{SelectV1.js → MultiSelect.js} +69 -125
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +10 -10
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/SelectType.js +9 -28
- package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +5 -12
- package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +14 -40
- package/dist/Editor/Elements/Divider/Divider.js +1 -1
- package/dist/Editor/Elements/Embed/Embed.css +0 -4
- package/dist/Editor/Elements/Embed/Video.js +1 -1
- package/dist/Editor/Elements/Form/Form.js +3 -3
- package/dist/Editor/Elements/Form/FormElements/FormTextArea.js +1 -0
- package/dist/Editor/Elements/Form/FormField.js +1 -1
- package/dist/Editor/Elements/Form/Workflow/Styles.js +22 -24
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +31 -35
- package/dist/Editor/Elements/FreeGrid/FreeGridBox.js +4 -7
- package/dist/Editor/Elements/FreeGrid/FreeGridItem.js +0 -1
- package/dist/Editor/Elements/FreeGrid/Options/More.js +7 -7
- package/dist/Editor/Elements/FreeGrid/Options/sectionItemOptions.js +1 -1
- package/dist/Editor/Elements/FreeGrid/styles.js +0 -14
- package/dist/Editor/Elements/Grid/Grid.js +2 -14
- package/dist/Editor/Elements/Grid/GridItem.js +1 -1
- package/dist/Editor/Elements/Signature/Signature.css +1 -2
- package/dist/Editor/Elements/Signature/SignatureOptions/DrawSignature.js +5 -18
- package/dist/Editor/Elements/Signature/SignatureOptions/UploadSignature.js +3 -16
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/AddRowCol.js +2 -8
- package/dist/Editor/Elements/Table/DragButton.js +1 -0
- package/dist/Editor/Elements/Table/Draggable.js +2 -6
- package/dist/Editor/Elements/Table/Styles.js +0 -7
- package/dist/Editor/Elements/Table/Table.js +3 -3
- package/dist/Editor/Elements/Table/TableCell.js +5 -24
- package/dist/Editor/Elements/Title/title.js +11 -8
- package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
- package/dist/Editor/MiniEditor.js +1 -2
- package/dist/Editor/Styles/EditorStyles.js +4 -4
- package/dist/Editor/Toolbar/FormatTools/Dropdown.js +3 -27
- package/dist/Editor/Toolbar/FormatTools/FontFamilyAutocomplete.js +3 -4
- package/dist/Editor/Toolbar/FormatTools/MarkButton.js +2 -2
- package/dist/Editor/Toolbar/FormatTools/TextSize.js +13 -10
- package/dist/Editor/Toolbar/Mini/MiniToolbar.js +1 -2
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/MiniColorPicker.js +2 -4
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectFontSize.js +13 -6
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +42 -167
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +4 -7
- package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +1 -2
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +13 -73
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +10 -58
- package/dist/Editor/Toolbar/PopupTool/index.js +5 -12
- package/dist/Editor/Toolbar/toolbarGroups.js +6 -48
- package/dist/Editor/common/ColorPickerButton.js +16 -41
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/FontLoader/FontLoader.js +0 -3
- package/dist/Editor/common/Icon.js +0 -28
- package/dist/Editor/common/ImageSelector/ImageSelector.js +2 -2
- package/dist/Editor/common/ImageSelector/Styles.js +9 -3
- package/dist/Editor/common/LinkSettings/NavComponents.js +65 -45
- package/dist/Editor/common/LinkSettings/index.js +28 -17
- package/dist/Editor/common/LinkSettings/navOptions.js +2 -2
- package/dist/Editor/common/LinkSettings/style.js +244 -164
- package/dist/Editor/common/RnD/ElementOptions/Actions.js +5 -4
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +1 -2
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Signature.js +3 -4
- package/dist/Editor/common/RnD/ElementSettings/Settings/AppHeaderSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/BoxSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/ButtonSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/CodeSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +2 -4
- package/dist/Editor/common/RnD/ElementSettings/Settings/ImageSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/styles.js +1 -0
- package/dist/Editor/common/RnD/OptionsPopup/style.js +1 -0
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +2 -11
- package/dist/Editor/common/RnD/Theme/ViewportStimulator.js +3 -6
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +19 -28
- package/dist/Editor/common/RnD/Utils/index.js +25 -58
- package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +58 -42
- package/dist/Editor/common/RnD/VirtualElement/helper.js +132 -323
- package/dist/Editor/common/RnD/VirtualElement/styles.js +0 -16
- package/dist/Editor/common/RnD/index.js +38 -72
- package/dist/Editor/common/Select/index.js +7 -44
- package/dist/Editor/common/Select/styles.js +2 -30
- package/dist/Editor/common/Shorthands/elements.js +0 -54
- package/dist/Editor/common/StyleBuilder/accordionTitleBtnStyle.js +2 -2
- package/dist/Editor/common/StyleBuilder/accordionTitleStyle.js +9 -12
- package/dist/Editor/common/StyleBuilder/buttonStyle.js +2 -4
- package/dist/Editor/common/StyleBuilder/embedVideoStyle.js +0 -4
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +0 -5
- package/dist/Editor/common/StyleBuilder/fieldTypes/bannerSpacing.js +2 -12
- package/dist/Editor/common/StyleBuilder/fieldTypes/borderRadius.js +7 -15
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +8 -16
- package/dist/Editor/common/StyleBuilder/fieldTypes/color.js +10 -36
- package/dist/Editor/common/StyleBuilder/fieldTypes/fontSize.js +7 -16
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +1 -3
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +7 -15
- package/dist/Editor/common/SwipeableDrawer/style.js +12 -14
- package/dist/Editor/common/Uploader.js +0 -16
- package/dist/Editor/common/iconListV2.js +0 -76
- package/dist/Editor/common/iconslist.js +0 -21
- package/dist/Editor/commonStyle.js +61 -116
- package/dist/Editor/helper/deserialize/index.js +4 -6
- package/dist/Editor/helper/index.js +2 -6
- package/dist/Editor/helper/theme.js +2 -203
- package/dist/Editor/hooks/useMouseMove.js +3 -9
- package/dist/Editor/hooks/useTable.js +4 -5
- package/dist/Editor/plugins/withCustomDeleteBackward.js +1 -6
- package/dist/Editor/plugins/withEmbeds.js +1 -1
- package/dist/Editor/plugins/withHTML.js +5 -14
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/theme/ThemeList.js +173 -50
- package/dist/Editor/utils/SlateUtilityFunctions.js +50 -173
- package/dist/Editor/utils/accordion.js +39 -129
- package/dist/Editor/utils/button.js +17 -1
- package/dist/Editor/utils/customHooks/useTableResize.js +9 -49
- package/dist/Editor/utils/draftToSlate.js +2 -3
- package/dist/Editor/utils/events.js +6 -60
- package/dist/Editor/utils/font.js +37 -40
- package/dist/Editor/utils/formfield.js +0 -1
- package/dist/Editor/utils/helper.js +29 -144
- package/dist/Editor/utils/insertAppHeader.js +1 -1
- package/dist/Editor/utils/signature.js +9 -2
- package/package.json +4 -4
- package/dist/Editor/Elements/FreeGrid/helper.js +0 -115
- package/dist/Editor/Toolbar/PopupTool/ThemeTextFormat.js +0 -439
- package/dist/Editor/assets/svg/BackIcon.js +0 -18
- package/dist/Editor/assets/svg/ThemeIcons.js +0 -293
- package/dist/Editor/common/Checkbox/index.js +0 -46
- package/dist/Editor/common/Checkbox/styles.js +0 -45
- package/dist/Editor/common/CustomColorPicker/index.js +0 -130
- package/dist/Editor/common/CustomColorPicker/style.js +0 -53
- package/dist/Editor/common/CustomDialog2/index.js +0 -94
- package/dist/Editor/common/CustomDialog2/style.js +0 -67
- package/dist/Editor/common/CustomSelect.js +0 -43
- package/dist/Editor/common/RadioGroup/index.js +0 -48
- package/dist/Editor/common/RadioGroup/styles.js +0 -29
- package/dist/Editor/common/RnD/Theme/MainThemeProvider.js +0 -17
- package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
- package/dist/Editor/helper/textIndeces.js +0 -58
- package/dist/Editor/hooks/useEditorTheme.js +0 -153
- package/dist/Editor/hooks/useThemeValues.js +0 -63
- package/dist/Editor/theme/index.js +0 -149
- package/dist/Editor/themeSettings/ActiveTheme.js +0 -82
- package/dist/Editor/themeSettings/buttons/index.js +0 -300
- package/dist/Editor/themeSettings/buttons/style.js +0 -23
- package/dist/Editor/themeSettings/colorTheme/index.js +0 -310
- package/dist/Editor/themeSettings/colorTheme/style.js +0 -81
- package/dist/Editor/themeSettings/fonts/PreviewElement.js +0 -121
- package/dist/Editor/themeSettings/fonts/index.js +0 -240
- package/dist/Editor/themeSettings/fonts/style.js +0 -62
- package/dist/Editor/themeSettings/icons.js +0 -60
- package/dist/Editor/themeSettings/index.js +0 -380
- package/dist/Editor/themeSettings/style.js +0 -299
- package/dist/Editor/themeSettingsAI/icons.js +0 -96
- package/dist/Editor/themeSettingsAI/index.js +0 -355
- package/dist/Editor/themeSettingsAI/saveTheme.js +0 -202
- package/dist/Editor/themeSettingsAI/style.js +0 -332
- package/dist/Editor/utils/updateFormName.js +0 -22
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Editor, Transforms, Element, Node, Path, Range
|
1
|
+
import { Editor, Transforms, Element, Node, Path, Range } from "slate";
|
2
2
|
import { toggleBlock } from "./SlateUtilityFunctions";
|
3
3
|
import insertNewLine from "./insertNewLine";
|
4
4
|
import { insertAccordion } from "./accordion";
|
5
|
-
import {
|
5
|
+
import { isListItem } from "./helper";
|
6
6
|
import RnDCtrlCmds from "./RnD/RnDCtrlCmds";
|
7
7
|
import EDITORCMDS from "../common/EditorCmds";
|
8
8
|
const HOTKEYS = {
|
@@ -183,20 +183,6 @@ const checkListEnterEvent = (editor, type) => {
|
|
183
183
|
insertNewLine(editor);
|
184
184
|
}
|
185
185
|
};
|
186
|
-
export const removeAccordion = (editor, accordionPath) => {
|
187
|
-
const accordion = getNode(editor, accordionPath);
|
188
|
-
Transforms.removeNodes(editor, {
|
189
|
-
at: accordionPath
|
190
|
-
});
|
191
|
-
const insertNodes = [];
|
192
|
-
accordion.children.forEach(a => {
|
193
|
-
a.children.forEach(n => insertNodes.push(n));
|
194
|
-
});
|
195
|
-
Transforms.insertNodes(editor, insertNodes, {
|
196
|
-
at: accordionPath,
|
197
|
-
select: true
|
198
|
-
});
|
199
|
-
};
|
200
186
|
export const enterEvent = (e, editor, isMobile) => {
|
201
187
|
try {
|
202
188
|
const ele = isListItem(editor);
|
@@ -239,7 +225,9 @@ export const enterEvent = (e, editor, isMobile) => {
|
|
239
225
|
e.preventDefault();
|
240
226
|
if (!text) {
|
241
227
|
const accordionIndex = ele[1].slice(0, Math.max(ele[1].length - 1));
|
242
|
-
|
228
|
+
Transforms.removeNodes(editor, {
|
229
|
+
at: accordionIndex
|
230
|
+
});
|
243
231
|
} else {
|
244
232
|
const nextPath = Path.next(Path.parent(ele[1]));
|
245
233
|
insertAccordion(editor, nextPath);
|
@@ -341,48 +329,6 @@ export const enterEvent = (e, editor, isMobile) => {
|
|
341
329
|
console.log(err);
|
342
330
|
}
|
343
331
|
};
|
344
|
-
|
345
|
-
// not using now
|
346
|
-
// export const handleAccordionOnBackspace = (e, editor) => {
|
347
|
-
// try {
|
348
|
-
// let isAccordion = false;
|
349
|
-
|
350
|
-
// const [accordionDetails] = getNodeWithType(editor, "accordion-details");
|
351
|
-
// const [accordionDetailsNode] = accordionDetails || [];
|
352
|
-
|
353
|
-
// if (accordionDetailsNode) {
|
354
|
-
// const dom = ReactEditor.toDOMNode(editor, accordionDetailsNode);
|
355
|
-
|
356
|
-
// if (dom?.parentElement) {
|
357
|
-
// dom.parentElement.style.display = "block";
|
358
|
-
// }
|
359
|
-
// }
|
360
|
-
|
361
|
-
// const [accordionSummary] = getNodeWithType(editor, "accordion-summary");
|
362
|
-
|
363
|
-
// const [accordionTitle, accordionTitlePath] = accordionSummary || [];
|
364
|
-
|
365
|
-
// if (accordionTitle) {
|
366
|
-
// // no selection
|
367
|
-
// if (Range.isCollapsed(editor.selection)) {
|
368
|
-
// const start = Editor.start(editor, accordionTitlePath);
|
369
|
-
// const isCursorAtStart = Point.equals(editor.selection.focus, start);
|
370
|
-
|
371
|
-
// if (isCursorAtStart) {
|
372
|
-
// e.preventDefault();
|
373
|
-
// const parentPath = Path.parent(accordionTitlePath);
|
374
|
-
// removeAccordion(editor, parentPath);
|
375
|
-
// isAccordion = true;
|
376
|
-
// }
|
377
|
-
// }
|
378
|
-
// }
|
379
|
-
|
380
|
-
// return isAccordion;
|
381
|
-
// } catch (err) {
|
382
|
-
// console.log(err);
|
383
|
-
// }
|
384
|
-
// };
|
385
|
-
|
386
332
|
export const upDownArrowKeyEvents = (e, editor) => {
|
387
333
|
try {
|
388
334
|
const {
|
@@ -402,7 +348,7 @@ export const upDownArrowKeyEvents = (e, editor) => {
|
|
402
348
|
}
|
403
349
|
Transforms.move(editor, {
|
404
350
|
distance: 0,
|
405
|
-
unit:
|
351
|
+
unit: 'offset',
|
406
352
|
reverse: false
|
407
353
|
});
|
408
354
|
Transforms.select(editor, {
|
@@ -7,43 +7,43 @@ export const sizeMap = {
|
|
7
7
|
export const fontFamilyMap = {
|
8
8
|
PoppinsRegular: "PoppinsRegular",
|
9
9
|
PoppinsBold: "PoppinsBold",
|
10
|
-
sans:
|
11
|
-
serif:
|
12
|
-
monospace:
|
13
|
-
roboto: "Roboto, sans-serif",
|
14
|
-
qwitcher: '
|
15
|
-
garamond: '
|
16
|
-
anton: "Anton, sans-serif",
|
17
|
-
dmserif: '
|
18
|
-
inter: "Inter, sans-serif",
|
19
|
-
libre: '
|
20
|
-
montserrat: "Montserrat, sans-serif",
|
21
|
-
opensans: '
|
22
|
-
publicsans: '
|
23
|
-
raleway: "Raleway, sans-serif",
|
24
|
-
spacemono: '
|
25
|
-
bulgarian: '
|
26
|
-
impact: "Impact, serif",
|
27
|
-
redacted: '
|
28
|
-
greatVibes: '
|
29
|
-
zeyada: "Zeyada, cursive",
|
30
|
-
allura: "Allura, cursive",
|
31
|
-
pinyon: '
|
32
|
-
muellerhoff: '
|
33
|
-
dawning: '
|
10
|
+
sans: "Helvetica,Arial, sans serif",
|
11
|
+
serif: "Georgia, Times New Roaman,serif",
|
12
|
+
monospace: "Monaco, Courier New,monospace",
|
13
|
+
roboto: "'Roboto', sans-serif",
|
14
|
+
qwitcher: "'Qwitcher Grypen', cursive",
|
15
|
+
garamond: "'EB Garamond', serif",
|
16
|
+
anton: "'Anton', sans-serif",
|
17
|
+
dmserif: "'DM Serif Text', serif",
|
18
|
+
inter: "'Inter', sans-serif",
|
19
|
+
libre: "'Libre Baskerville', serif",
|
20
|
+
montserrat: "'Montserrat', sans-serif",
|
21
|
+
opensans: "'Open Sans', sans-serif",
|
22
|
+
publicsans: "'Public Sans', sans-serif",
|
23
|
+
raleway: "'Raleway', sans-serif",
|
24
|
+
spacemono: "'Space Mono', sans-serif",
|
25
|
+
bulgarian: "'Bulgarian Garamond', monospace",
|
26
|
+
impact: "'Impact', serif",
|
27
|
+
redacted: "'Redacted Script', cursive",
|
28
|
+
greatVibes: "'Great Vibes', cursive",
|
29
|
+
zeyada: "'Zeyada', cursive",
|
30
|
+
allura: "'Allura', cursive",
|
31
|
+
pinyon: "'Pinyon Script', cursive",
|
32
|
+
muellerhoff: "'Herr Von Muellerhoff', cursive",
|
33
|
+
dawning: "'Dawning of a New Day', cursive",
|
34
34
|
// New Font Added for Type Signature
|
35
|
-
comingsoon: '
|
36
|
-
dancingScript: '
|
37
|
-
engagement: "Engagement, cursive",
|
38
|
-
gaegu: "Gaegu, cursive",
|
39
|
-
ingridDarling: '
|
40
|
-
kitaOne: "
|
41
|
-
laBelleAurore: '
|
42
|
-
lobster: "Lobster, cursive",
|
43
|
-
meaCulpa: '
|
44
|
-
meddon: "Meddon, cursive",
|
45
|
-
merriWeather: "Merriweather, serif",
|
46
|
-
theGirlNextDoor: '
|
35
|
+
comingsoon: "'Coming Soon', cursive",
|
36
|
+
dancingScript: "'Dancing Script', cursive",
|
37
|
+
engagement: "'Engagement', cursive",
|
38
|
+
gaegu: "'Gaegu', cursive",
|
39
|
+
ingridDarling: "'Ingrid Darling', cursive",
|
40
|
+
kitaOne: "'Kite One', sans - serif",
|
41
|
+
laBelleAurore: "'La Belle Aurore', cursive",
|
42
|
+
lobster: "'Lobster', cursive",
|
43
|
+
meaCulpa: "'Mea Culpa', cursive",
|
44
|
+
meddon: "'Meddon', cursive",
|
45
|
+
merriWeather: "'Merriweather', serif",
|
46
|
+
theGirlNextDoor: "'The Girl Next Door', cursive"
|
47
47
|
};
|
48
48
|
export const fontOptions = Object.keys(fontFamilyMap).map(m => {
|
49
49
|
return {
|
@@ -62,10 +62,7 @@ export const signedTextFonts = Object.keys(fontFamilyMap).slice(-12).map(m => {
|
|
62
62
|
export const headingMap = {
|
63
63
|
headingOne: "32px",
|
64
64
|
headingTwo: "24px",
|
65
|
-
headingThree: "19px"
|
66
|
-
headingFour: "16px",
|
67
|
-
headingFive: "13px",
|
68
|
-
headingSix: "11px"
|
65
|
+
headingThree: "19px"
|
69
66
|
};
|
70
67
|
export const fontWeightOptions = [{
|
71
68
|
text: "Bold",
|
@@ -2,8 +2,6 @@ import { Editor, Node, Transforms, Element, Path, Range, Text } from "slate";
|
|
2
2
|
import { ReactEditor } from "slate-react";
|
3
3
|
import insertNewLine from "./insertNewLine";
|
4
4
|
import { getDevice } from "../helper/theme";
|
5
|
-
import { activeMark, getSelectedElementStyle } from "./SlateUtilityFunctions";
|
6
|
-
import { getCurrentElementText } from "../plugins/withHTML";
|
7
5
|
export const windowVar = {};
|
8
6
|
let ST_TIMEOUT = null;
|
9
7
|
const BLOCKS = ["grid", "dataView"];
|
@@ -335,8 +333,7 @@ const handleLinkBtnClick = (e, props, isMobilePreview, metadata) => {
|
|
335
333
|
}
|
336
334
|
}
|
337
335
|
};
|
338
|
-
export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}, metadata = {}
|
339
|
-
) => {
|
336
|
+
export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick = () => {}, metadata = {}) => {
|
340
337
|
const props = {};
|
341
338
|
if (!readOnly) {
|
342
339
|
return {
|
@@ -368,9 +365,6 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
|
|
368
365
|
case "page":
|
369
366
|
const [page = "", section] = url?.split("#") || [];
|
370
367
|
const sec = section ? `#${section}` : "";
|
371
|
-
if (isEditMode) {
|
372
|
-
break;
|
373
|
-
}
|
374
368
|
if (page === "_currentPage") {
|
375
369
|
props.component = "button";
|
376
370
|
props.onClick = () => {
|
@@ -391,12 +385,11 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
|
|
391
385
|
const currentUserPage = getCurrentUserPage();
|
392
386
|
props.href = isCurrentPage(page) ? `./${currentUserPage}${sec}` : `./${url}`;
|
393
387
|
if (openInNewTab) {
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
props.target = "_blank";
|
388
|
+
if (isCurrentPage(page)) {
|
389
|
+
// temp fix, if user is presented in current page, open in new tab option is restricted, we will scroll to the element in current page
|
390
|
+
} else {
|
391
|
+
props.target = "_blank";
|
392
|
+
}
|
400
393
|
}
|
401
394
|
}
|
402
395
|
break;
|
@@ -431,7 +424,7 @@ export const handleLinkType = (url, linkType, readOnly, openInNewTab, onClick =
|
|
431
424
|
|
432
425
|
// for iphone fix
|
433
426
|
if (props.component === "a" && props.href) {
|
434
|
-
const isMobile =
|
427
|
+
const isMobile = getDevice(window.innerWidth) === "xs";
|
435
428
|
if (isMobile) {
|
436
429
|
props.component = "button"; // iphone is opening two tabs, on open in new tab because of a tag.
|
437
430
|
}
|
@@ -492,34 +485,6 @@ export const decodeString = str => {
|
|
492
485
|
console.log(err);
|
493
486
|
}
|
494
487
|
};
|
495
|
-
export const getContrastColor = color => {
|
496
|
-
let r, g, b;
|
497
|
-
|
498
|
-
// Check if the color is in hex format
|
499
|
-
if (color.startsWith("#")) {
|
500
|
-
r = parseInt(color.substring(1, 3), 16);
|
501
|
-
g = parseInt(color.substring(3, 5), 16);
|
502
|
-
b = parseInt(color.substring(5, 7), 16);
|
503
|
-
}
|
504
|
-
// Check if the color is in RGB/RGBA format
|
505
|
-
else if (color.startsWith("rgb")) {
|
506
|
-
const rgbValues = color.replace(/^rgba?\(|\s+|\)$/g, "") // Remove the rgb/rgba and spaces
|
507
|
-
.split(","); // Split the values into an array
|
508
|
-
|
509
|
-
r = parseInt(rgbValues[0]);
|
510
|
-
g = parseInt(rgbValues[1]);
|
511
|
-
b = parseInt(rgbValues[2]);
|
512
|
-
} else {
|
513
|
-
// If the format is not recognized, default to black text
|
514
|
-
return "#000000";
|
515
|
-
}
|
516
|
-
|
517
|
-
// Calculate relative luminance
|
518
|
-
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
519
|
-
|
520
|
-
// Return black for light colors, white for dark colors
|
521
|
-
return luminance > 0.5 ? "#000000" : "#FFFFFF";
|
522
|
-
};
|
523
488
|
export const onDeleteKey = (event, {
|
524
489
|
editor
|
525
490
|
}) => {
|
@@ -737,10 +702,6 @@ export const isRestrictedNode = (event, editor) => {
|
|
737
702
|
return isNodeRestricted;
|
738
703
|
}
|
739
704
|
};
|
740
|
-
export function capitalizeFirstLetter(str) {
|
741
|
-
if (!str) return str;
|
742
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
743
|
-
}
|
744
705
|
export const insertLineBreakAtEndOfPath = (editor, path) => {
|
745
706
|
try {
|
746
707
|
const [node, nodePath] = Editor.node(editor, path); // Get the node at the specified path
|
@@ -759,13 +720,6 @@ export const insertLineBreakAtEndOfPath = (editor, path) => {
|
|
759
720
|
console.log(err);
|
760
721
|
}
|
761
722
|
};
|
762
|
-
export function isHavingSelection(editor) {
|
763
|
-
try {
|
764
|
-
return editor?.selection && !Range.isCollapsed(editor.selection);
|
765
|
-
} catch (err) {
|
766
|
-
console.log(err);
|
767
|
-
}
|
768
|
-
}
|
769
723
|
const omitNodes = ["site-settings", "page-settings"];
|
770
724
|
export function getInitialValue(value = [], readOnly) {
|
771
725
|
if (readOnly === "readonly" && value?.length) {
|
@@ -796,17 +750,20 @@ export function getInitialValue(value = [], readOnly) {
|
|
796
750
|
}
|
797
751
|
return value;
|
798
752
|
}
|
753
|
+
export function capitalizeFirstLetter(str) {
|
754
|
+
if (!str) return str;
|
755
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
756
|
+
}
|
757
|
+
export function isHavingSelection(editor) {
|
758
|
+
try {
|
759
|
+
return editor?.selection && !Range.isCollapsed(editor.selection);
|
760
|
+
} catch (err) {
|
761
|
+
console.log(err);
|
762
|
+
}
|
763
|
+
}
|
799
764
|
export function getSelectedCls(defaultCls = "", selected, selectedClsName = "selected") {
|
800
765
|
return `${defaultCls} ${selected ? selectedClsName : ""}`;
|
801
766
|
}
|
802
|
-
export function handleNegativeInteger(val) {
|
803
|
-
return val < 0 ? 0 : val;
|
804
|
-
}
|
805
|
-
export const containsSurrogatePair = text => {
|
806
|
-
// Match surrogate pairs (high and low surrogate)
|
807
|
-
const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
|
808
|
-
return surrogatePairRegex.test(text);
|
809
|
-
};
|
810
767
|
export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
|
811
768
|
try {
|
812
769
|
const options = {
|
@@ -820,6 +777,11 @@ export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
|
|
820
777
|
return [];
|
821
778
|
}
|
822
779
|
};
|
780
|
+
export const containsSurrogatePair = text => {
|
781
|
+
// Match surrogate pairs (high and low surrogate)
|
782
|
+
const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
|
783
|
+
return surrogatePairRegex.test(text);
|
784
|
+
};
|
823
785
|
export const getSlateDom = (editor, range) => {
|
824
786
|
try {
|
825
787
|
const slateDom = ReactEditor.toDOMRange(editor, range);
|
@@ -860,8 +822,7 @@ export const clearWindowSelection = () => {
|
|
860
822
|
|
861
823
|
export const viewSlateSelection = () => {
|
862
824
|
// if ai is opened, remove the window selection class and open then slate selection, To resolve: focussing on the ai input removes window selection automatically
|
863
|
-
|
864
|
-
|
825
|
+
clearWindowSelection();
|
865
826
|
const selectionBg = "rgba(35, 131, 226, 0.35)";
|
866
827
|
const root = document.documentElement;
|
867
828
|
root.style.setProperty("--slate-highlight-bg", selectionBg);
|
@@ -870,24 +831,9 @@ export const hideSlateSelection = () => {
|
|
870
831
|
const root = document.documentElement;
|
871
832
|
root.style.setProperty("--slate-highlight-bg", "none");
|
872
833
|
};
|
873
|
-
export
|
874
|
-
|
875
|
-
|
876
|
-
editor.deleteFragment();
|
877
|
-
const currentText = getCurrentElementText(editor);
|
878
|
-
const currentPath = editor?.selection?.anchor?.path;
|
879
|
-
let insertAt = currentPath;
|
880
|
-
if (currentText?.trim()) {
|
881
|
-
const parentPath = Path.parent(currentPath);
|
882
|
-
insertAt = Path.next(parentPath);
|
883
|
-
}
|
884
|
-
Transforms.insertNodes(editor, insertNode, {
|
885
|
-
at: insertAt
|
886
|
-
});
|
887
|
-
} catch (err) {
|
888
|
-
console.log(err);
|
889
|
-
}
|
890
|
-
};
|
834
|
+
export function handleNegativeInteger(val) {
|
835
|
+
return val < 0 ? 0 : val;
|
836
|
+
}
|
891
837
|
export const isEverythingSelected = editor => {
|
892
838
|
const {
|
893
839
|
selection
|
@@ -918,61 +864,6 @@ export const getCurrentNodeText = editor => {
|
|
918
864
|
console.log("Error:", error);
|
919
865
|
}
|
920
866
|
};
|
921
|
-
function convertColorToRgb(color) {
|
922
|
-
if (color?.startsWith("#")) {
|
923
|
-
// HEX to RGB
|
924
|
-
let hex = color.replace("#", "");
|
925
|
-
let r, g, b;
|
926
|
-
if (hex.length === 3) {
|
927
|
-
hex = hex.split("").map(x => x + x).join("");
|
928
|
-
}
|
929
|
-
if (hex.length === 6) {
|
930
|
-
[r, g, b] = [hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6)].map(val => parseInt(val, 16));
|
931
|
-
return `rgb(${r}, ${g}, ${b})`;
|
932
|
-
}
|
933
|
-
} else {
|
934
|
-
return color;
|
935
|
-
}
|
936
|
-
}
|
937
|
-
export const getSelectedColor = (selectedColor, theme, hideThemeColors) => {
|
938
|
-
const colorVars = hideThemeColors ? null : theme?.vars?.colors;
|
939
|
-
let selectedValue = selectedColor;
|
940
|
-
if (colorVars) {
|
941
|
-
const convertedColor = convertColorToRgb(selectedColor);
|
942
|
-
Object.entries(theme.colors).forEach(([key, value]) => {
|
943
|
-
const convertedThemeColor = convertColorToRgb(value);
|
944
|
-
if (convertedThemeColor === convertedColor) {
|
945
|
-
selectedValue = colorVars[key];
|
946
|
-
}
|
947
|
-
});
|
948
|
-
}
|
949
|
-
return selectedValue;
|
950
|
-
};
|
951
|
-
const themeTextFormats = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
|
952
|
-
export const getSelectedElementColor = (editor, format, theme) => {
|
953
|
-
const [isThemeText] = Editor.nodes(editor, {
|
954
|
-
at: editor.selection,
|
955
|
-
match: n => themeTextFormats.includes(n?.type)
|
956
|
-
});
|
957
|
-
if (!isThemeText) {
|
958
|
-
return activeMark(editor, "color") || "#000000";
|
959
|
-
}
|
960
|
-
const color = getSelectedElementStyle(format, editor, format);
|
961
|
-
return getSelectedColor(color, theme);
|
962
|
-
};
|
963
|
-
export const isHavingColor = color => {
|
964
|
-
if (!color) {
|
965
|
-
return false;
|
966
|
-
}
|
967
|
-
if (color.includes("rgba")) {
|
968
|
-
const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),?\s*(\d*\.?\d+)?\)/);
|
969
|
-
if (!match) return false; // Invalid format
|
970
|
-
|
971
|
-
const alpha = match[4] !== undefined ? parseFloat(match[4]) : 1; // Default alpha = 1
|
972
|
-
return alpha !== 0;
|
973
|
-
}
|
974
|
-
return true;
|
975
|
-
};
|
976
867
|
const handleCopiedList = (el, domRange) => {
|
977
868
|
// Ensure you're working with an Element, not a Text node
|
978
869
|
const startEl = domRange.startContainer.nodeType === Node.ELEMENT_NODE ? domRange.startContainer : domRange.startContainer.parentElement;
|
@@ -992,15 +883,11 @@ const handleCopiedList = (el, domRange) => {
|
|
992
883
|
el.insertAdjacentText("afterbegin", "- ");
|
993
884
|
}
|
994
885
|
};
|
995
|
-
const cleanCopiedDOM = container => {
|
996
|
-
container.querySelectorAll('[style*="display: none"], [contenteditable="false"]').forEach(el => el.remove());
|
997
|
-
return container;
|
998
|
-
};
|
999
886
|
const getCopiedTextFormat = domRange => {
|
1000
887
|
const contents = domRange.cloneContents();
|
1001
888
|
const div = document.createElement("div");
|
1002
889
|
div.appendChild(contents);
|
1003
|
-
|
890
|
+
|
1004
891
|
// Replace <br> with newlines
|
1005
892
|
div.querySelectorAll("br").forEach(br => br.replaceWith("\n"));
|
1006
893
|
const BLOCK_TAGS = ["DIV", "P", "LI", "H1", "H2", "H3", "H4", "H5", "H6"];
|
@@ -1028,7 +915,6 @@ const getCopiedHTMLFormat = domRange => {
|
|
1028
915
|
const htmlContents = domRange.cloneContents();
|
1029
916
|
const container = document.createElement("div");
|
1030
917
|
container.appendChild(htmlContents);
|
1031
|
-
cleanCopiedDOM(container);
|
1032
918
|
const html = container.innerHTML;
|
1033
919
|
return html;
|
1034
920
|
};
|
@@ -1053,5 +939,4 @@ export const handleCopy = (event, editor) => {
|
|
1053
939
|
event.clipboardData?.setData("text/html", html);
|
1054
940
|
event.clipboardData?.setData("text/plain", text);
|
1055
941
|
event.clipboardData?.setData("application/x-slate-fragment", encodedFragment);
|
1056
|
-
};
|
1057
|
-
export const ALLOWED_TEXT_NODES = ["paragraph", "title", "headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "blockquote"];
|
942
|
+
};
|
@@ -1,5 +1,9 @@
|
|
1
|
-
import {
|
1
|
+
import { Path, Transforms } from "slate";
|
2
|
+
import insertNewLine from "./insertNewLine";
|
3
|
+
import { getCurrentElementText } from "../plugins/withHTML";
|
2
4
|
export const insertSignature = editor => {
|
5
|
+
const hasText = getCurrentElementText(editor);
|
6
|
+
const insertPath = hasText ? Path.next(Path.parent(editor?.selection.focus.path)) : editor.selection.anchor.path;
|
3
7
|
const signature = {
|
4
8
|
type: "signature",
|
5
9
|
alignment: "center",
|
@@ -13,5 +17,8 @@ export const insertSignature = editor => {
|
|
13
17
|
text: " "
|
14
18
|
}]
|
15
19
|
};
|
16
|
-
|
20
|
+
Transforms.insertNodes(editor, signature, {
|
21
|
+
at: insertPath
|
22
|
+
});
|
23
|
+
insertNewLine(editor);
|
17
24
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@flozy/editor",
|
3
|
-
"version": "10.6.
|
3
|
+
"version": "10.6.5",
|
4
4
|
"description": "An Editor for flozy app brain",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -38,6 +38,7 @@
|
|
38
38
|
"react-icons": "^4.10.1",
|
39
39
|
"react-katex": "^3.0.1",
|
40
40
|
"react-rnd": "^10.4.11",
|
41
|
+
"react-scripts": "5.0.1",
|
41
42
|
"react-signature-canvas": "^1.0.6",
|
42
43
|
"react-slick": "^0.29.0",
|
43
44
|
"sanitize-html": "^2.13.0",
|
@@ -68,7 +69,7 @@
|
|
68
69
|
"storybook": "storybook dev -p 6006",
|
69
70
|
"build-storybook": "NODE_OPTIONS='--max_old_space_size=4096' storybook build",
|
70
71
|
"publish:npm": "rm -rf dist && mkdir dist && babel src/components -d dist --copy-files",
|
71
|
-
"publish:local": "rm -rf /Users/
|
72
|
+
"publish:local": "rm -rf /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist && babel src/components -d /Users/agmac03/flozy/client/node_modules/@flozy/editor/dist --copy-files",
|
72
73
|
"publish:flozy": "./publish-flozy.sh",
|
73
74
|
"publish:flozy2": "./publish-flozy2.sh",
|
74
75
|
"publish:permission": "chmod +x publish-flozy.sh && chmod +x publish-flozy2.sh"
|
@@ -121,8 +122,7 @@
|
|
121
122
|
"prop-types": "^15.8.1",
|
122
123
|
"source-map-explorer": "^2.5.3",
|
123
124
|
"storybook": "^7.4.0",
|
124
|
-
"webpack": "^5.88.2"
|
125
|
-
"react-scripts": "5.0.1"
|
125
|
+
"webpack": "^5.88.2"
|
126
126
|
},
|
127
127
|
"overrides": {
|
128
128
|
"react-refresh": "0.11.0"
|
@@ -1,115 +0,0 @@
|
|
1
|
-
import { ROW_HEIGHT } from "../../common/RnD/Utils/gridDropItem";
|
2
|
-
import { getElementOffset } from "../../common/RnD/VirtualElement/VirtualTextElement";
|
3
|
-
import { RND_ITEMS } from "../../helper";
|
4
|
-
export const ELEMENT_CASE = {
|
5
|
-
ADD_TEXT: "addText",
|
6
|
-
ADD_BUTTON: "addButton",
|
7
|
-
ADD_SIGNATURE: "addSignature",
|
8
|
-
ADD_IMAGE: "addImage",
|
9
|
-
ADD_VIDEO: "addVideo",
|
10
|
-
ADD_TABLE: "addTable",
|
11
|
-
ADD_CODE: "addCode",
|
12
|
-
ADD_BOX: "addBox",
|
13
|
-
ADD_FORM: "addForm",
|
14
|
-
ADD_APP_HEADER: "addAppHeader",
|
15
|
-
ADD_DIVIDER: "addDivider"
|
16
|
-
};
|
17
|
-
const commonXsValues = {
|
18
|
-
top_xs: 0,
|
19
|
-
marginTop_xs: 12,
|
20
|
-
left_xs: 24,
|
21
|
-
width_xs: 272,
|
22
|
-
xs_updatedOn: new Date().getTime()
|
23
|
-
};
|
24
|
-
const elementXsValues = {
|
25
|
-
[ELEMENT_CASE.ADD_TEXT]: {
|
26
|
-
...commonXsValues,
|
27
|
-
height_xs: 50
|
28
|
-
},
|
29
|
-
[ELEMENT_CASE.ADD_BUTTON]: {
|
30
|
-
...commonXsValues,
|
31
|
-
height_xs: 50
|
32
|
-
},
|
33
|
-
[ELEMENT_CASE.ADD_SIGNATURE]: {
|
34
|
-
...commonXsValues,
|
35
|
-
height_xs: 173
|
36
|
-
},
|
37
|
-
[ELEMENT_CASE.ADD_IMAGE]: {
|
38
|
-
...commonXsValues,
|
39
|
-
height_xs: 80
|
40
|
-
},
|
41
|
-
[ELEMENT_CASE.ADD_VIDEO]: {
|
42
|
-
...commonXsValues,
|
43
|
-
height_xs: 300
|
44
|
-
},
|
45
|
-
[ELEMENT_CASE.ADD_TABLE]: {
|
46
|
-
...commonXsValues,
|
47
|
-
height_xs: 165
|
48
|
-
},
|
49
|
-
[ELEMENT_CASE.ADD_CODE]: {
|
50
|
-
...commonXsValues,
|
51
|
-
height: 300
|
52
|
-
},
|
53
|
-
[ELEMENT_CASE.ADD_BOX]: {
|
54
|
-
...commonXsValues,
|
55
|
-
height_xs: 300
|
56
|
-
},
|
57
|
-
[ELEMENT_CASE.ADD_FORM]: {
|
58
|
-
...commonXsValues,
|
59
|
-
height_xs: 80
|
60
|
-
},
|
61
|
-
[ELEMENT_CASE.ADD_APP_HEADER]: {
|
62
|
-
...commonXsValues,
|
63
|
-
height_xs: 80
|
64
|
-
},
|
65
|
-
[ELEMENT_CASE.ADD_DIVIDER]: {
|
66
|
-
...commonXsValues,
|
67
|
-
height_xs: 24
|
68
|
-
}
|
69
|
-
};
|
70
|
-
export const findMaxYValue = (sectionItems, breakpoint) => {
|
71
|
-
let maxY = 0;
|
72
|
-
sectionItems.forEach(item => {
|
73
|
-
const isHidden = breakpoint === "xs" && item.children.some(c => c.xsHidden);
|
74
|
-
if (item?.type && RND_ITEMS.includes(item.type) && !isHidden) {
|
75
|
-
const {
|
76
|
-
bottom
|
77
|
-
} = getElementOffset(item, breakpoint === "lg" ? "lg" : "xs");
|
78
|
-
maxY = Math.max(maxY, bottom);
|
79
|
-
}
|
80
|
-
});
|
81
|
-
return maxY;
|
82
|
-
};
|
83
|
-
export const convertToGridArea = y => {
|
84
|
-
// Calculate grid position
|
85
|
-
const row = Math.floor(y / ROW_HEIGHT) + 1;
|
86
|
-
|
87
|
-
// to calculate difference inside the grid
|
88
|
-
const marginTop = Math.abs((row - 1) * ROW_HEIGHT - y);
|
89
|
-
|
90
|
-
// Update grid area
|
91
|
-
const gridArea = `${row} / 1 / ${row + 1} / 2`;
|
92
|
-
return {
|
93
|
-
gridArea,
|
94
|
-
marginTop
|
95
|
-
};
|
96
|
-
};
|
97
|
-
export const getNewElementXsValues = (type, sectionItems) => {
|
98
|
-
const values = elementXsValues[type] || {};
|
99
|
-
const y = sectionItems?.length ? findMaxYValue(sectionItems) : 0;
|
100
|
-
const {
|
101
|
-
gridArea,
|
102
|
-
marginTop
|
103
|
-
} = convertToGridArea(y);
|
104
|
-
const BUFFER_MARGIN_TOP = 12;
|
105
|
-
const xsVal = {
|
106
|
-
...values,
|
107
|
-
gridArea_xs: gridArea,
|
108
|
-
marginTop_xs: marginTop + BUFFER_MARGIN_TOP
|
109
|
-
};
|
110
|
-
const sectionHeightXs = y + values?.height_xs + BUFFER_MARGIN_TOP + 12;
|
111
|
-
return {
|
112
|
-
xsVal,
|
113
|
-
sectionHeightXs
|
114
|
-
};
|
115
|
-
};
|