@flozy/editor 11.0.1 → 11.0.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/ChatEditor.js +16 -17
- package/dist/Editor/CommonEditor.js +16 -129
- package/dist/Editor/DialogWrapper.js +25 -31
- package/dist/Editor/Editor.css +8 -36
- 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 +22 -28
- package/dist/Editor/Elements/Accordion/AccordionButton.js +3 -12
- package/dist/Editor/Elements/AppHeader/AppHeader.js +3 -3
- package/dist/Editor/Elements/Attachments/Attachments.js +11 -153
- package/dist/Editor/Elements/Attachments/AttachmentsButton.js +3 -8
- package/dist/Editor/Elements/Button/EditorButton.js +7 -23
- 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/MultiSelect.js +454 -0
- package/dist/Editor/Elements/Embed/Embed.js +43 -36
- package/dist/Editor/Elements/Embed/Image.js +23 -236
- package/dist/Editor/Elements/Embed/Video.js +15 -245
- package/dist/Editor/Elements/Form/FormField.js +1 -1
- package/dist/Editor/Elements/Form/Workflow/Styles.js +22 -24
- package/dist/Editor/Elements/Form/Workflow/constant.js +1 -25
- package/dist/Editor/Elements/FreeGrid/FreeGrid.js +33 -39
- 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/styles.js +0 -15
- package/dist/Editor/Elements/Grid/GridItem.js +1 -1
- package/dist/Editor/Elements/PageSettings/PageSettingsButton.js +1 -2
- package/dist/Editor/Elements/Signature/SignatureOptions/TypeSignature.js +2 -3
- package/dist/Editor/Elements/Signature/SignaturePopup.js +1 -4
- package/dist/Editor/Elements/SimpleText/style.js +2 -2
- package/dist/Editor/Elements/Table/Table.js +3 -3
- package/dist/Editor/Elements/Title/title.js +6 -6
- package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -4
- package/dist/Editor/Elements/TopBanner/TopBannerButton.js +3 -5
- package/dist/Editor/Elements/Variables/VariableButton.js +1 -10
- package/dist/Editor/MiniEditor.js +1 -2
- package/dist/Editor/Styles/EditorStyles.js +7 -19
- 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 +29 -33
- 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 +23 -25
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectList.js +7 -25
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/SelectTypography.js +42 -167
- package/dist/Editor/Toolbar/PopupTool/MiniTextFormat/index.js +8 -24
- package/dist/Editor/Toolbar/PopupTool/PopperHeader.js +1 -2
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +10 -70
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +14 -73
- package/dist/Editor/Toolbar/PopupTool/index.js +2 -3
- package/dist/Editor/Toolbar/toolbarGroups.js +10 -56
- package/dist/Editor/common/ColorPickerButton.js +16 -38
- package/dist/Editor/common/DnD/DragHandleButton.js +1 -1
- package/dist/Editor/common/FontLoader/FontLoader.js +0 -4
- package/dist/Editor/common/Icon.js +0 -28
- package/dist/Editor/common/ImageSelector/ImageSelector.js +7 -45
- package/dist/Editor/common/ImageSelector/Options/Upload.js +11 -26
- package/dist/Editor/common/ImageSelector/Styles.js +9 -3
- package/dist/Editor/common/LinkSettings/NavComponents.js +2 -6
- package/dist/Editor/common/MentionsPopup/index.js +1 -9
- package/dist/Editor/common/RnD/ElementSettings/OtherSettings/Settings.js +1 -2
- 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 +7 -20
- package/dist/Editor/common/RnD/ElementSettings/Settings/TableSettings.js +2 -3
- package/dist/Editor/common/RnD/ElementSettings/Settings/TextSettings.js +1 -9
- package/dist/Editor/common/RnD/ElementSettings/Settings/VideoSettings.js +7 -20
- 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 +18 -28
- package/dist/Editor/common/RnD/Utils/index.js +1 -3
- package/dist/Editor/common/RnD/VirtualElement/VirtualTextElement.js +58 -45
- package/dist/Editor/common/RnD/VirtualElement/helper.js +130 -320
- package/dist/Editor/common/RnD/VirtualElement/styles.js +0 -22
- package/dist/Editor/common/RnD/index.js +13 -48
- package/dist/Editor/common/Shorthands/elements.js +4 -62
- 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 +2 -15
- 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/text.js +1 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/textOptions.js +7 -15
- package/dist/Editor/common/StyleBuilder/index.js +4 -8
- package/dist/Editor/common/Uploader.js +17 -125
- package/dist/Editor/common/iconslist.js +0 -21
- package/dist/Editor/commonStyle.js +45 -64
- package/dist/Editor/helper/index.js +2 -10
- package/dist/Editor/helper/theme.js +2 -203
- package/dist/Editor/hooks/useMouseMove.js +3 -9
- package/dist/Editor/plugins/withEmbeds.js +1 -12
- package/dist/Editor/plugins/withHTML.js +1 -3
- package/dist/Editor/plugins/withTable.js +1 -1
- package/dist/Editor/service/fileupload.js +0 -70
- package/dist/Editor/theme/ThemeList.js +173 -50
- package/dist/Editor/utils/SlateUtilityFunctions.js +40 -189
- package/dist/Editor/utils/accordion.js +40 -68
- package/dist/Editor/utils/button.js +17 -1
- package/dist/Editor/utils/draftToSlate.js +2 -3
- package/dist/Editor/utils/events.js +89 -94
- package/dist/Editor/utils/font.js +37 -40
- package/dist/Editor/utils/formfield.js +2 -2
- package/dist/Editor/utils/helper.js +22 -98
- package/package.json +4 -4
- package/dist/Editor/Elements/Attachments/AttachmentStyles.js +0 -16
- 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/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/RnD/Theme/MainThemeProvider.js +0 -17
- package/dist/Editor/common/StyleBuilder/fieldTypes/embedUpload.js +0 -115
- package/dist/Editor/common/UploaderWithProgress.js +0 -183
- 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
@@ -197,102 +197,9 @@ export const removeAccordion = (editor, accordionPath) => {
|
|
197
197
|
select: true
|
198
198
|
});
|
199
199
|
};
|
200
|
-
export const customizeEnterEvent = (editor, ele, e) => {
|
201
|
-
const {
|
202
|
-
type
|
203
|
-
} = ele[0];
|
204
|
-
const path = ele[1];
|
205
|
-
const text = Node.string(ele[0]);
|
206
|
-
let breakNext = false;
|
207
|
-
switch (type) {
|
208
|
-
case "list-item":
|
209
|
-
if (!text) {
|
210
|
-
e?.preventDefault();
|
211
|
-
escapeEvent({
|
212
|
-
editor
|
213
|
-
});
|
214
|
-
}
|
215
|
-
break;
|
216
|
-
case "check-list-item":
|
217
|
-
const selectionPath = editor?.selection?.anchor?.path;
|
218
|
-
const currEle = Node.parent(editor, selectionPath);
|
219
|
-
const currEleText = Node.string(currEle);
|
220
|
-
if (!currEleText) {
|
221
|
-
e?.preventDefault();
|
222
|
-
checkListEnterEvent(editor, type);
|
223
|
-
}
|
224
|
-
break;
|
225
|
-
case "accordion-summary":
|
226
|
-
e?.preventDefault();
|
227
|
-
breakNext = true;
|
228
|
-
if (!text) {
|
229
|
-
const accordionIndex = ele[1].slice(0, Math.max(ele[1].length - 1));
|
230
|
-
removeAccordion(editor, accordionIndex);
|
231
|
-
} else {
|
232
|
-
const nextPath = Path.next(Path.parent(ele[1]));
|
233
|
-
insertAccordion(editor, nextPath);
|
234
|
-
}
|
235
|
-
break;
|
236
|
-
case "headingOne":
|
237
|
-
case "headingTwo":
|
238
|
-
case "headingThree":
|
239
|
-
const {
|
240
|
-
selection
|
241
|
-
} = editor;
|
242
|
-
if (selection && Range.isCollapsed(selection)) {
|
243
|
-
const isAtEnd = Editor.isEnd(editor, selection.anchor, path);
|
244
|
-
const isAtStart = Editor.isStart(editor, selection.anchor, path);
|
245
|
-
if (isAtEnd) {
|
246
|
-
e?.preventDefault();
|
247
|
-
Transforms.insertNodes(editor, {
|
248
|
-
type: "paragraph",
|
249
|
-
children: [{
|
250
|
-
text: ""
|
251
|
-
}]
|
252
|
-
});
|
253
|
-
const newLocation = Editor.after(editor, selection);
|
254
|
-
if (newLocation) {
|
255
|
-
Transforms.select(editor, newLocation);
|
256
|
-
}
|
257
|
-
} else if (!isAtStart) {
|
258
|
-
e?.preventDefault();
|
259
|
-
Transforms.splitNodes(editor);
|
260
|
-
Transforms.setNodes(editor, {
|
261
|
-
type: "paragraph"
|
262
|
-
}, {
|
263
|
-
at: Editor.after(editor, selection)
|
264
|
-
});
|
265
|
-
const newLocation = Editor.after(editor, selection);
|
266
|
-
if (newLocation) {
|
267
|
-
Transforms.select(editor, newLocation);
|
268
|
-
}
|
269
|
-
} else if (isAtStart) {
|
270
|
-
e?.preventDefault();
|
271
|
-
Transforms.insertNodes(editor, {
|
272
|
-
type: "paragraph",
|
273
|
-
children: [{
|
274
|
-
text: ""
|
275
|
-
}]
|
276
|
-
}, {
|
277
|
-
at: Editor.before(editor, selection)
|
278
|
-
});
|
279
|
-
Transforms.select(editor, Editor.before(editor, selection));
|
280
|
-
const newLocation = Editor.before(editor, selection);
|
281
|
-
if (newLocation) {
|
282
|
-
Transforms.select(editor, newLocation);
|
283
|
-
}
|
284
|
-
}
|
285
|
-
return;
|
286
|
-
}
|
287
|
-
break;
|
288
|
-
default:
|
289
|
-
}
|
290
|
-
return {
|
291
|
-
breakNext
|
292
|
-
};
|
293
|
-
};
|
294
200
|
export const enterEvent = (e, editor, isMobile) => {
|
295
201
|
try {
|
202
|
+
const ele = isListItem(editor);
|
296
203
|
// on shift enter break line in same node
|
297
204
|
if (e.shiftKey && !isMobile) {
|
298
205
|
e.preventDefault();
|
@@ -304,6 +211,94 @@ export const enterEvent = (e, editor, isMobile) => {
|
|
304
211
|
} else {
|
305
212
|
Transforms.insertText(editor, "\n");
|
306
213
|
}
|
214
|
+
} else if (ele && ele[0]) {
|
215
|
+
const {
|
216
|
+
type
|
217
|
+
} = ele[0];
|
218
|
+
const path = ele[1];
|
219
|
+
const text = Node.string(ele[0]);
|
220
|
+
switch (type) {
|
221
|
+
case "list-item":
|
222
|
+
if (!text) {
|
223
|
+
e.preventDefault();
|
224
|
+
escapeEvent({
|
225
|
+
editor
|
226
|
+
});
|
227
|
+
}
|
228
|
+
break;
|
229
|
+
case "check-list-item":
|
230
|
+
const selectionPath = editor?.selection?.anchor?.path;
|
231
|
+
const currEle = Node.parent(editor, selectionPath);
|
232
|
+
const currEleText = Node.string(currEle);
|
233
|
+
if (!currEleText) {
|
234
|
+
e.preventDefault();
|
235
|
+
checkListEnterEvent(editor, type);
|
236
|
+
}
|
237
|
+
break;
|
238
|
+
case "accordion-summary":
|
239
|
+
e.preventDefault();
|
240
|
+
if (!text) {
|
241
|
+
const accordionIndex = ele[1].slice(0, Math.max(ele[1].length - 1));
|
242
|
+
removeAccordion(editor, accordionIndex);
|
243
|
+
} else {
|
244
|
+
const nextPath = Path.next(Path.parent(ele[1]));
|
245
|
+
insertAccordion(editor, nextPath);
|
246
|
+
}
|
247
|
+
break;
|
248
|
+
case "headingOne":
|
249
|
+
case "headingTwo":
|
250
|
+
case "headingThree":
|
251
|
+
const {
|
252
|
+
selection
|
253
|
+
} = editor;
|
254
|
+
if (selection && Range.isCollapsed(selection)) {
|
255
|
+
const isAtEnd = Editor.isEnd(editor, selection.anchor, path);
|
256
|
+
const isAtStart = Editor.isStart(editor, selection.anchor, path);
|
257
|
+
if (isAtEnd) {
|
258
|
+
e.preventDefault();
|
259
|
+
Transforms.insertNodes(editor, {
|
260
|
+
type: "paragraph",
|
261
|
+
children: [{
|
262
|
+
text: ""
|
263
|
+
}]
|
264
|
+
});
|
265
|
+
const newLocation = Editor.after(editor, selection);
|
266
|
+
if (newLocation) {
|
267
|
+
Transforms.select(editor, newLocation);
|
268
|
+
}
|
269
|
+
} else if (!isAtStart) {
|
270
|
+
e.preventDefault();
|
271
|
+
Transforms.splitNodes(editor);
|
272
|
+
Transforms.setNodes(editor, {
|
273
|
+
type: "paragraph"
|
274
|
+
}, {
|
275
|
+
at: Editor.after(editor, selection)
|
276
|
+
});
|
277
|
+
const newLocation = Editor.after(editor, selection);
|
278
|
+
if (newLocation) {
|
279
|
+
Transforms.select(editor, newLocation);
|
280
|
+
}
|
281
|
+
} else if (isAtStart) {
|
282
|
+
e.preventDefault();
|
283
|
+
Transforms.insertNodes(editor, {
|
284
|
+
type: "paragraph",
|
285
|
+
children: [{
|
286
|
+
text: ""
|
287
|
+
}]
|
288
|
+
}, {
|
289
|
+
at: Editor.before(editor, selection)
|
290
|
+
});
|
291
|
+
Transforms.select(editor, Editor.before(editor, selection));
|
292
|
+
const newLocation = Editor.before(editor, selection);
|
293
|
+
if (newLocation) {
|
294
|
+
Transforms.select(editor, newLocation);
|
295
|
+
}
|
296
|
+
}
|
297
|
+
return;
|
298
|
+
}
|
299
|
+
break;
|
300
|
+
default:
|
301
|
+
}
|
307
302
|
}
|
308
303
|
// Handle blockquote splitting
|
309
304
|
if (!e.shiftKey) {
|
@@ -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",
|
@@ -13,8 +13,8 @@ export const formField = data => {
|
|
13
13
|
text: ""
|
14
14
|
}],
|
15
15
|
field_type: "text",
|
16
|
-
bgColor: data?.bgColor ? data?.bgColor : "
|
17
|
-
borderColor: data?.borderColor ? data?.borderColor : "
|
16
|
+
bgColor: data?.bgColor ? data?.bgColor : "",
|
17
|
+
borderColor: data?.borderColor ? data?.borderColor : "",
|
18
18
|
bannerSpacing: {
|
19
19
|
left: 16,
|
20
20
|
right: 16,
|
@@ -2,9 +2,7 @@ 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
5
|
import { getCurrentElementText } from "../plugins/withHTML";
|
7
|
-
import { isEmptyTextNode } from "../helper";
|
8
6
|
export const windowVar = {};
|
9
7
|
let ST_TIMEOUT = null;
|
10
8
|
const BLOCKS = ["grid", "dataView"];
|
@@ -175,7 +173,7 @@ export const handleInsertLastElement = (event, editor) => {
|
|
175
173
|
if (isFreeGrid) {
|
176
174
|
return;
|
177
175
|
}
|
178
|
-
const isLastElementEmpty =
|
176
|
+
const isLastElementEmpty = lastElement && lastElement.type === "paragraph" && !lastElement.children[0]?.text && !lastElement.children?.some(c => BLOCKS.includes(c.type));
|
179
177
|
if (!ReactEditor.isFocused(editor)) {
|
180
178
|
if (isLastElementEmpty) {
|
181
179
|
if (hasPath) {
|
@@ -219,13 +217,9 @@ export const handleInsertLastElement = (event, editor) => {
|
|
219
217
|
};
|
220
218
|
export const isListItem = editor => {
|
221
219
|
const format = ["list-item", "check-list-item", "accordion-summary", "headingOne", "headingTwo", "headingThree"];
|
222
|
-
const [
|
220
|
+
const [node] = Editor.nodes(editor, {
|
223
221
|
match: n => !Editor.isEditor(n) && Element.isElement(n) && format.indexOf(n.type) > -1
|
224
222
|
});
|
225
|
-
let node = node1;
|
226
|
-
if (node2 && node2[0] && node2[0].type === "accordion-summary") {
|
227
|
-
node = node2;
|
228
|
-
}
|
229
223
|
return node;
|
230
224
|
};
|
231
225
|
export const getNode = (editor, path) => {
|
@@ -498,34 +492,6 @@ export const decodeString = str => {
|
|
498
492
|
console.log(err);
|
499
493
|
}
|
500
494
|
};
|
501
|
-
export const getContrastColor = color => {
|
502
|
-
let r, g, b;
|
503
|
-
|
504
|
-
// Check if the color is in hex format
|
505
|
-
if (color.startsWith("#")) {
|
506
|
-
r = parseInt(color.substring(1, 3), 16);
|
507
|
-
g = parseInt(color.substring(3, 5), 16);
|
508
|
-
b = parseInt(color.substring(5, 7), 16);
|
509
|
-
}
|
510
|
-
// Check if the color is in RGB/RGBA format
|
511
|
-
else if (color.startsWith("rgb")) {
|
512
|
-
const rgbValues = color.replace(/^rgba?\(|\s+|\)$/g, "") // Remove the rgb/rgba and spaces
|
513
|
-
.split(","); // Split the values into an array
|
514
|
-
|
515
|
-
r = parseInt(rgbValues[0]);
|
516
|
-
g = parseInt(rgbValues[1]);
|
517
|
-
b = parseInt(rgbValues[2]);
|
518
|
-
} else {
|
519
|
-
// If the format is not recognized, default to black text
|
520
|
-
return "#000000";
|
521
|
-
}
|
522
|
-
|
523
|
-
// Calculate relative luminance
|
524
|
-
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
525
|
-
|
526
|
-
// Return black for light colors, white for dark colors
|
527
|
-
return luminance > 0.5 ? "#000000" : "#FFFFFF";
|
528
|
-
};
|
529
495
|
export const onDeleteKey = (event, {
|
530
496
|
editor
|
531
497
|
}) => {
|
@@ -743,10 +709,6 @@ export const isRestrictedNode = (event, editor) => {
|
|
743
709
|
return isNodeRestricted;
|
744
710
|
}
|
745
711
|
};
|
746
|
-
export function capitalizeFirstLetter(str) {
|
747
|
-
if (!str) return str;
|
748
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
749
|
-
}
|
750
712
|
export const insertLineBreakAtEndOfPath = (editor, path) => {
|
751
713
|
try {
|
752
714
|
const [node, nodePath] = Editor.node(editor, path); // Get the node at the specified path
|
@@ -765,13 +727,6 @@ export const insertLineBreakAtEndOfPath = (editor, path) => {
|
|
765
727
|
console.log(err);
|
766
728
|
}
|
767
729
|
};
|
768
|
-
export function isHavingSelection(editor) {
|
769
|
-
try {
|
770
|
-
return editor?.selection && !Range.isCollapsed(editor.selection);
|
771
|
-
} catch (err) {
|
772
|
-
console.log(err);
|
773
|
-
}
|
774
|
-
}
|
775
730
|
const omitNodes = ["site-settings", "page-settings"];
|
776
731
|
export function getInitialValue(value = [], readOnly) {
|
777
732
|
if (readOnly === "readonly" && value?.length) {
|
@@ -802,17 +757,20 @@ export function getInitialValue(value = [], readOnly) {
|
|
802
757
|
}
|
803
758
|
return value;
|
804
759
|
}
|
760
|
+
export function capitalizeFirstLetter(str) {
|
761
|
+
if (!str) return str;
|
762
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
763
|
+
}
|
764
|
+
export function isHavingSelection(editor) {
|
765
|
+
try {
|
766
|
+
return editor?.selection && !Range.isCollapsed(editor.selection);
|
767
|
+
} catch (err) {
|
768
|
+
console.log(err);
|
769
|
+
}
|
770
|
+
}
|
805
771
|
export function getSelectedCls(defaultCls = "", selected, selectedClsName = "selected") {
|
806
772
|
return `${defaultCls} ${selected ? selectedClsName : ""}`;
|
807
773
|
}
|
808
|
-
export function handleNegativeInteger(val) {
|
809
|
-
return val < 0 ? 0 : val;
|
810
|
-
}
|
811
|
-
export const containsSurrogatePair = text => {
|
812
|
-
// Match surrogate pairs (high and low surrogate)
|
813
|
-
const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
|
814
|
-
return surrogatePairRegex.test(text);
|
815
|
-
};
|
816
774
|
export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
|
817
775
|
try {
|
818
776
|
const options = {
|
@@ -826,6 +784,11 @@ export const getNodeWithType = (editor, nodeType = "", otherOptions) => {
|
|
826
784
|
return [];
|
827
785
|
}
|
828
786
|
};
|
787
|
+
export const containsSurrogatePair = text => {
|
788
|
+
// Match surrogate pairs (high and low surrogate)
|
789
|
+
const surrogatePairRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
|
790
|
+
return surrogatePairRegex.test(text);
|
791
|
+
};
|
829
792
|
export const getSlateDom = (editor, range) => {
|
830
793
|
try {
|
831
794
|
const slateDom = ReactEditor.toDOMRange(editor, range);
|
@@ -876,6 +839,9 @@ export const hideSlateSelection = () => {
|
|
876
839
|
const root = document.documentElement;
|
877
840
|
root.style.setProperty("--slate-highlight-bg", "none");
|
878
841
|
};
|
842
|
+
export function handleNegativeInteger(val) {
|
843
|
+
return val < 0 ? 0 : val;
|
844
|
+
}
|
879
845
|
export const insertSlashNode = (editor, insertNode) => {
|
880
846
|
try {
|
881
847
|
// Delete the currently selected text
|
@@ -1018,46 +984,4 @@ export const handleCopy = (event, editor) => {
|
|
1018
984
|
event.clipboardData?.setData("text/plain", text);
|
1019
985
|
event.clipboardData?.setData("application/x-slate-fragment", encodedFragment);
|
1020
986
|
};
|
1021
|
-
export const ALLOWED_TEXT_NODES = ["paragraph", "title", "headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "blockquote"];
|
1022
|
-
function convertColorToRgb(color) {
|
1023
|
-
if (color?.startsWith("#")) {
|
1024
|
-
// HEX to RGB
|
1025
|
-
let hex = color.replace("#", "");
|
1026
|
-
let r, g, b;
|
1027
|
-
if (hex.length === 3) {
|
1028
|
-
hex = hex.split("").map(x => x + x).join("");
|
1029
|
-
}
|
1030
|
-
if (hex.length === 6) {
|
1031
|
-
[r, g, b] = [hex.substring(0, 2), hex.substring(2, 4), hex.substring(4, 6)].map(val => parseInt(val, 16));
|
1032
|
-
return `rgb(${r}, ${g}, ${b})`;
|
1033
|
-
}
|
1034
|
-
} else {
|
1035
|
-
return color;
|
1036
|
-
}
|
1037
|
-
}
|
1038
|
-
export const getSelectedColor = (selectedColor, theme, hideThemeColors) => {
|
1039
|
-
const colorVars = hideThemeColors ? null : theme?.vars?.colors;
|
1040
|
-
let selectedValue = selectedColor;
|
1041
|
-
if (colorVars) {
|
1042
|
-
const convertedColor = convertColorToRgb(selectedColor);
|
1043
|
-
Object.entries(theme.colors).forEach(([key, value]) => {
|
1044
|
-
const convertedThemeColor = convertColorToRgb(value);
|
1045
|
-
if (convertedThemeColor === convertedColor) {
|
1046
|
-
selectedValue = colorVars[key];
|
1047
|
-
}
|
1048
|
-
});
|
1049
|
-
}
|
1050
|
-
return selectedValue;
|
1051
|
-
};
|
1052
|
-
const themeTextFormats = ["headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "paragraphOne", "paragraphTwo", "paragraphThree"];
|
1053
|
-
export const getSelectedElementColor = (editor, format, theme) => {
|
1054
|
-
const [isThemeText] = Editor.nodes(editor, {
|
1055
|
-
at: editor.selection,
|
1056
|
-
match: n => themeTextFormats.includes(n?.type)
|
1057
|
-
});
|
1058
|
-
if (!isThemeText) {
|
1059
|
-
return activeMark(editor, "color") || "#000000";
|
1060
|
-
}
|
1061
|
-
const color = getSelectedElementStyle(format, editor, format);
|
1062
|
-
return getSelectedColor(color, theme);
|
1063
|
-
};
|
987
|
+
export const ALLOWED_TEXT_NODES = ["paragraph", "title", "headingOne", "headingTwo", "headingThree", "headingFour", "headingFive", "headingSix", "blockquote"];
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@flozy/editor",
|
3
|
-
"version": "11.0.
|
3
|
+
"version": "11.0.3",
|
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,16 +0,0 @@
|
|
1
|
-
const useAttachmentStyle = theme => ({
|
2
|
-
attachmentRoot: {
|
3
|
-
"& .uploadinDetails": {
|
4
|
-
display: "flex",
|
5
|
-
gap: "10px",
|
6
|
-
"& .MuiCircularProgress-root": {
|
7
|
-
width: "15px !important",
|
8
|
-
height: "15px !important"
|
9
|
-
}
|
10
|
-
},
|
11
|
-
"& .cancelBtn": {
|
12
|
-
display: "contents"
|
13
|
-
}
|
14
|
-
}
|
15
|
-
});
|
16
|
-
export default useAttachmentStyle;
|
@@ -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
|
-
};
|