@flozy/editor 5.3.0 → 5.3.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 +25 -34
- package/dist/Editor/CommonEditor.js +20 -12
- package/dist/Editor/Editor.css +28 -15
- package/dist/Editor/Elements/AI/AIInput.js +0 -3
- package/dist/Editor/Elements/AppHeader/AppHeader.js +6 -6
- package/dist/Editor/Elements/Button/EditorButton.js +8 -2
- package/dist/Editor/Elements/Color Picker/ColorButtons.js +4 -2
- package/dist/Editor/Elements/DataView/DataView.js +124 -0
- package/dist/Editor/Elements/DataView/DataViewButton.js +23 -0
- package/dist/Editor/Elements/DataView/Layouts/ColumnView.js +67 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/CheckType.js +33 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/Select.js +162 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/SimpleSelect.js +40 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/Components/styles.js +67 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/DateType.js +35 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/MultiSelectType.js +39 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/NumberType.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/PersonType.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/SelectType.js +35 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/TextType.js +36 -0
- package/dist/Editor/Elements/DataView/Layouts/DataTypes/index.js +17 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseField.js +29 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/ChooseSort.js +38 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/SortOptions/index.js +74 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/index.js +64 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterSort/styles.js +106 -0
- package/dist/Editor/Elements/DataView/Layouts/FilterView.js +174 -0
- package/dist/Editor/Elements/DataView/Layouts/Formula.js +29 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AddOptions.js +113 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AddProperty.js +37 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/AllProperties.js +111 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/ChangeProperty.js +60 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/ColumnsList.js +36 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/Constants.js +101 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/EditOption.js +160 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/EditProperty.js +190 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/FilterProperty.js +42 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/PropertyList.js +30 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/index.js +110 -0
- package/dist/Editor/Elements/DataView/Layouts/Options/styles.js +179 -0
- package/dist/Editor/Elements/DataView/Layouts/TableStyles.js +112 -0
- package/dist/Editor/Elements/DataView/Layouts/TableView.js +227 -0
- package/dist/Editor/Elements/DataView/Layouts/ViewData.js +80 -0
- package/dist/Editor/Elements/DataView/Layouts/colStyles.js +10 -0
- package/dist/Editor/Elements/DataView/Layouts/index.js +25 -0
- package/dist/Editor/Elements/DataView/Providers/DataViewProvider.js +281 -0
- package/dist/Editor/Elements/DataView/Utils/globalSearch.js +15 -0
- package/dist/Editor/Elements/DataView/Utils/multiSortRows.js +74 -0
- package/dist/Editor/Elements/DataView/styles.js +154 -0
- package/dist/Editor/Elements/Form/Form.js +1 -0
- package/dist/Editor/Elements/FreeGrid/breakpointConstants.js +4 -4
- package/dist/Editor/Elements/FreeGrid/styles.js +2 -1
- package/dist/Editor/Elements/List/CheckList.js +2 -1
- package/dist/Editor/Elements/Search/SearchAttachment.js +1 -0
- package/dist/Editor/Elements/SimpleText/index.js +8 -1
- package/dist/Editor/Elements/SimpleText/style.js +10 -1
- package/dist/Editor/Elements/Table/Table.js +1 -1
- package/dist/Editor/Elements/TopBanner/TopBanner.js +2 -1
- package/dist/Editor/Styles/EditorStyles.js +7 -2
- package/dist/Editor/Toolbar/PopupTool/PopupToolStyle.js +10 -0
- package/dist/Editor/Toolbar/PopupTool/TextFormat.js +45 -0
- package/dist/Editor/Toolbar/Toolbar.js +6 -0
- package/dist/Editor/Toolbar/toolbarGroups.js +4 -0
- package/dist/Editor/common/FontLoader/FontLoader.js +4 -4
- package/dist/Editor/common/Icon.js +6 -0
- package/dist/Editor/common/MentionsPopup/Styles.js +2 -5
- package/dist/Editor/common/RnD/ElementSettings/Settings/FormSettings.js +1 -0
- package/dist/Editor/common/RnD/GuideLines/styles.js +3 -3
- package/dist/Editor/common/RnD/ShadowElement.js +1 -1
- package/dist/Editor/common/RnD/SwitchViewport/SwitchViewport.js +14 -2
- package/dist/Editor/common/RnD/Utils/gridDropItem.js +9 -6
- package/dist/Editor/common/RnD/index.js +3 -2
- package/dist/Editor/common/Shorthands/elements.js +13 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/backgroundImage.js +5 -0
- package/dist/Editor/common/StyleBuilder/fieldTypes/card.js +10 -2
- package/dist/Editor/common/StyleBuilder/fieldTypes/index.js +3 -1
- package/dist/Editor/common/StyleBuilder/fieldTypes/lineSpacing.js +79 -0
- package/dist/Editor/common/StyleBuilder/pageSettingsStyle.js +4 -0
- package/dist/Editor/common/Uploader.js +8 -0
- package/dist/Editor/common/iconListV2.js +53 -53
- package/dist/Editor/common/iconslist.js +6 -3
- package/dist/Editor/commonStyle.js +9 -0
- package/dist/Editor/helper/enforceDateFormat.js +41 -0
- package/dist/Editor/helper/index.js +16 -3
- package/dist/Editor/helper/theme.js +24 -1
- package/dist/Editor/hooks/useMouseMove.js +5 -2
- package/dist/Editor/plugins/withEmbeds.js +30 -26
- package/dist/Editor/plugins/withHTML.js +47 -12
- package/dist/Editor/plugins/withLayout.js +42 -0
- package/dist/Editor/utils/SlateUtilityFunctions.js +27 -4
- package/dist/Editor/utils/button.js +4 -4
- package/dist/Editor/utils/chatEditor/SlateUtilityFunctions.js +26 -1
- package/dist/Editor/utils/dataView.js +43 -0
- package/dist/Editor/utils/events.js +0 -1
- package/dist/Editor/utils/helper.js +51 -1
- package/dist/Editor/utils/pageSettings.js +14 -2
- package/dist/Editor/utils/serializeToText.js +2 -0
- package/package.json +1 -1
|
@@ -940,59 +940,6 @@ export function CalendlyIcon() {
|
|
|
940
940
|
})]
|
|
941
941
|
});
|
|
942
942
|
}
|
|
943
|
-
export function DragIcon() {
|
|
944
|
-
return /*#__PURE__*/_jsxs("svg", {
|
|
945
|
-
width: "16",
|
|
946
|
-
height: "12",
|
|
947
|
-
viewBox: "0 0 10 6",
|
|
948
|
-
fill: "none",
|
|
949
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
950
|
-
className: "dragIcon",
|
|
951
|
-
children: [/*#__PURE__*/_jsx("ellipse", {
|
|
952
|
-
cx: "1.49462",
|
|
953
|
-
cy: "4.42384",
|
|
954
|
-
rx: "0.779289",
|
|
955
|
-
ry: "0.779289",
|
|
956
|
-
transform: "rotate(-90 1.49462 4.42384)",
|
|
957
|
-
fill: "#94A3B8"
|
|
958
|
-
}), /*#__PURE__*/_jsx("ellipse", {
|
|
959
|
-
cx: "4.99999",
|
|
960
|
-
cy: "4.42384",
|
|
961
|
-
rx: "0.779289",
|
|
962
|
-
ry: "0.779289",
|
|
963
|
-
transform: "rotate(-90 4.99999 4.42384)",
|
|
964
|
-
fill: "#94A3B8"
|
|
965
|
-
}), /*#__PURE__*/_jsx("ellipse", {
|
|
966
|
-
cx: "8.50732",
|
|
967
|
-
cy: "4.42384",
|
|
968
|
-
rx: "0.779289",
|
|
969
|
-
ry: "0.779289",
|
|
970
|
-
transform: "rotate(-90 8.50732 4.42384)",
|
|
971
|
-
fill: "#94A3B8"
|
|
972
|
-
}), /*#__PURE__*/_jsx("ellipse", {
|
|
973
|
-
cx: "1.49462",
|
|
974
|
-
cy: "0.91993",
|
|
975
|
-
rx: "0.779289",
|
|
976
|
-
ry: "0.779289",
|
|
977
|
-
transform: "rotate(-90 1.49462 0.91993)",
|
|
978
|
-
fill: "#94A3B8"
|
|
979
|
-
}), /*#__PURE__*/_jsx("ellipse", {
|
|
980
|
-
cx: "4.99999",
|
|
981
|
-
cy: "0.91993",
|
|
982
|
-
rx: "0.779289",
|
|
983
|
-
ry: "0.779289",
|
|
984
|
-
transform: "rotate(-90 4.99999 0.91993)",
|
|
985
|
-
fill: "#94A3B8"
|
|
986
|
-
}), /*#__PURE__*/_jsx("ellipse", {
|
|
987
|
-
cx: "8.50732",
|
|
988
|
-
cy: "0.91993",
|
|
989
|
-
rx: "0.779289",
|
|
990
|
-
ry: "0.779289",
|
|
991
|
-
transform: "rotate(-90 8.50732 0.91993)",
|
|
992
|
-
fill: "#94A3B8"
|
|
993
|
-
})]
|
|
994
|
-
});
|
|
995
|
-
}
|
|
996
943
|
export function LeftAlignTextFormat() {
|
|
997
944
|
return /*#__PURE__*/_jsxs("svg", {
|
|
998
945
|
width: "19",
|
|
@@ -1245,4 +1192,57 @@ export function CodeElementIcon() {
|
|
|
1245
1192
|
strokeLinejoin: "round"
|
|
1246
1193
|
})]
|
|
1247
1194
|
});
|
|
1195
|
+
}
|
|
1196
|
+
export function DragIcon() {
|
|
1197
|
+
return /*#__PURE__*/_jsxs("svg", {
|
|
1198
|
+
width: "16",
|
|
1199
|
+
height: "12",
|
|
1200
|
+
viewBox: "0 0 10 6",
|
|
1201
|
+
fill: "none",
|
|
1202
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1203
|
+
className: "dragIcon",
|
|
1204
|
+
children: [/*#__PURE__*/_jsx("ellipse", {
|
|
1205
|
+
cx: "1.49462",
|
|
1206
|
+
cy: "4.42384",
|
|
1207
|
+
rx: "0.779289",
|
|
1208
|
+
ry: "0.779289",
|
|
1209
|
+
transform: "rotate(-90 1.49462 4.42384)",
|
|
1210
|
+
fill: "#94A3B8"
|
|
1211
|
+
}), /*#__PURE__*/_jsx("ellipse", {
|
|
1212
|
+
cx: "4.99999",
|
|
1213
|
+
cy: "4.42384",
|
|
1214
|
+
rx: "0.779289",
|
|
1215
|
+
ry: "0.779289",
|
|
1216
|
+
transform: "rotate(-90 4.99999 4.42384)",
|
|
1217
|
+
fill: "#94A3B8"
|
|
1218
|
+
}), /*#__PURE__*/_jsx("ellipse", {
|
|
1219
|
+
cx: "8.50732",
|
|
1220
|
+
cy: "4.42384",
|
|
1221
|
+
rx: "0.779289",
|
|
1222
|
+
ry: "0.779289",
|
|
1223
|
+
transform: "rotate(-90 8.50732 4.42384)",
|
|
1224
|
+
fill: "#94A3B8"
|
|
1225
|
+
}), /*#__PURE__*/_jsx("ellipse", {
|
|
1226
|
+
cx: "1.49462",
|
|
1227
|
+
cy: "0.91993",
|
|
1228
|
+
rx: "0.779289",
|
|
1229
|
+
ry: "0.779289",
|
|
1230
|
+
transform: "rotate(-90 1.49462 0.91993)",
|
|
1231
|
+
fill: "#94A3B8"
|
|
1232
|
+
}), /*#__PURE__*/_jsx("ellipse", {
|
|
1233
|
+
cx: "4.99999",
|
|
1234
|
+
cy: "0.91993",
|
|
1235
|
+
rx: "0.779289",
|
|
1236
|
+
ry: "0.779289",
|
|
1237
|
+
transform: "rotate(-90 4.99999 0.91993)",
|
|
1238
|
+
fill: "#94A3B8"
|
|
1239
|
+
}), /*#__PURE__*/_jsx("ellipse", {
|
|
1240
|
+
cx: "8.50732",
|
|
1241
|
+
cy: "0.91993",
|
|
1242
|
+
rx: "0.779289",
|
|
1243
|
+
ry: "0.779289",
|
|
1244
|
+
transform: "rotate(-90 8.50732 0.91993)",
|
|
1245
|
+
fill: "#94A3B8"
|
|
1246
|
+
})]
|
|
1247
|
+
});
|
|
1248
1248
|
}
|
|
@@ -1346,19 +1346,22 @@ export const GridAddSectionIcon = props => /*#__PURE__*/_jsxs("svg", {
|
|
|
1346
1346
|
stroke: "#64748B",
|
|
1347
1347
|
strokeWidth: "1.5",
|
|
1348
1348
|
strokeLinecap: "round",
|
|
1349
|
-
strokeLinejoin: "round"
|
|
1349
|
+
strokeLinejoin: "round",
|
|
1350
|
+
className: "fillStroke"
|
|
1350
1351
|
}), /*#__PURE__*/_jsx("path", {
|
|
1351
1352
|
d: "M10.1733 6.125V14.875",
|
|
1352
1353
|
stroke: "#64748B",
|
|
1353
1354
|
strokeWidth: "1.5",
|
|
1354
1355
|
strokeLinecap: "round",
|
|
1355
|
-
strokeLinejoin: "round"
|
|
1356
|
+
strokeLinejoin: "round",
|
|
1357
|
+
className: "fillStroke"
|
|
1356
1358
|
}), /*#__PURE__*/_jsx("path", {
|
|
1357
1359
|
d: "M5.79834 10.5H14.5483",
|
|
1358
1360
|
stroke: "#64748B",
|
|
1359
1361
|
strokeWidth: "1.5",
|
|
1360
1362
|
strokeLinecap: "round",
|
|
1361
|
-
strokeLinejoin: "round"
|
|
1363
|
+
strokeLinejoin: "round",
|
|
1364
|
+
className: "fillStroke"
|
|
1362
1365
|
})]
|
|
1363
1366
|
});
|
|
1364
1367
|
export const FormIcon = () => {
|
|
@@ -252,6 +252,15 @@ const useCommonStyle = theme => ({
|
|
|
252
252
|
border: `1px solid transparent !important`
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
+
},
|
|
256
|
+
buttonMoreOption: {
|
|
257
|
+
background: `${theme?.palette?.editor?.aiInputBackground} !important`,
|
|
258
|
+
border: `1px solid ${theme?.palette?.editor?.buttonBorder1} !important`,
|
|
259
|
+
'& svg': {
|
|
260
|
+
'& path': {
|
|
261
|
+
stroke: `${theme?.palette?.editor?.closeButtonSvgStroke} !important`
|
|
262
|
+
}
|
|
263
|
+
}
|
|
255
264
|
}
|
|
256
265
|
});
|
|
257
266
|
export default useCommonStyle;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function enforceDateFormat(inputElement) {
|
|
2
|
+
inputElement.addEventListener("input", event => {
|
|
3
|
+
const input = event.target;
|
|
4
|
+
let value = input.value;
|
|
5
|
+
|
|
6
|
+
// Allow only numbers and forward slashes
|
|
7
|
+
value = value.replace(/[^\d/]/g, "");
|
|
8
|
+
|
|
9
|
+
// Enforce MM/DD/YYYY structure
|
|
10
|
+
if (value.length > 10) {
|
|
11
|
+
value = value.slice(0, 10);
|
|
12
|
+
}
|
|
13
|
+
const parts = value.split("/");
|
|
14
|
+
if (parts.length > 1) {
|
|
15
|
+
parts[0] = parts[0].slice(0, 2); // Limit MM to 2 digits
|
|
16
|
+
if (parts[0] > 12) parts[0] = "12"; // Max month value
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (parts.length > 2) {
|
|
20
|
+
parts[1] = parts[1].slice(0, 2); // Limit DD to 2 digits
|
|
21
|
+
if (parts[1] > 31) parts[1] = "31"; // Max day value
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (parts.length > 3) {
|
|
25
|
+
parts[2] = parts[2].slice(0, 4); // Limit YYYY to 4 digits
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
input.value = parts.join("/");
|
|
29
|
+
|
|
30
|
+
// Optionally, validate the full date
|
|
31
|
+
if (input.value.length === 10) {
|
|
32
|
+
const [month, day, year] = input.value.split("/").map(Number);
|
|
33
|
+
const isValidDate = !isNaN(Date.parse(`${year}-${month}-${day}`));
|
|
34
|
+
if (!isValidDate) {
|
|
35
|
+
input.value = ""; // Clear input if invalid
|
|
36
|
+
alert("Invalid date format. Please enter a valid MM/DD/YYYY date.");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export default enforceDateFormat;
|
|
@@ -308,7 +308,13 @@ export const getTextColor = (color = "") => {
|
|
|
308
308
|
color: "transparent !important",
|
|
309
309
|
caretColor: "black",
|
|
310
310
|
"& span": {
|
|
311
|
-
color: "transparent !important"
|
|
311
|
+
color: "transparent !important",
|
|
312
|
+
"& ::selection": {
|
|
313
|
+
color: "#000 !important"
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
"& ::selection": {
|
|
317
|
+
color: "#000 !important"
|
|
312
318
|
}
|
|
313
319
|
} : {
|
|
314
320
|
color
|
|
@@ -331,14 +337,14 @@ export const isCarouselSelected = editor => {
|
|
|
331
337
|
return false;
|
|
332
338
|
}
|
|
333
339
|
const [nodeEntry] = Editor.nodes(editor, {
|
|
334
|
-
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type ===
|
|
340
|
+
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "carousel"
|
|
335
341
|
});
|
|
336
342
|
if (!nodeEntry) {
|
|
337
343
|
return false;
|
|
338
344
|
}
|
|
339
345
|
const [node] = nodeEntry;
|
|
340
346
|
const carouselDom = ReactEditor.toDOMNode(editor, node);
|
|
341
|
-
const isEdit = carouselDom.classList.contains(
|
|
347
|
+
const isEdit = carouselDom.classList.contains("carousel_slider_edit");
|
|
342
348
|
return !isEdit;
|
|
343
349
|
} catch (err) {
|
|
344
350
|
console.log(err);
|
|
@@ -360,4 +366,11 @@ export const clearBrainText = editor => {
|
|
|
360
366
|
} catch (err) {
|
|
361
367
|
console.log(err);
|
|
362
368
|
}
|
|
369
|
+
};
|
|
370
|
+
export const clearSelectionOnly = editor => {
|
|
371
|
+
try {
|
|
372
|
+
Transforms.deselect(editor);
|
|
373
|
+
} catch (err) {
|
|
374
|
+
console.log(err);
|
|
375
|
+
}
|
|
363
376
|
};
|
|
@@ -147,4 +147,27 @@ export const groupByBreakpoint = (styleProps, theme) => {
|
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
149
|
};
|
|
150
|
-
export const getCustomizationValue = value => isNaN(parseInt(value)) ? null : parseInt(value);
|
|
150
|
+
export const getCustomizationValue = value => isNaN(parseInt(value)) ? null : parseInt(value);
|
|
151
|
+
export const getBreakpointLineSpacing = (value, breakpoint) => {
|
|
152
|
+
try {
|
|
153
|
+
const values = getBreakPointsValue(value, breakpoint);
|
|
154
|
+
const cssVal = BREAKPOINTS_DEVICES.reduce((a, b) => {
|
|
155
|
+
if (values[b] || values["lg"]) {
|
|
156
|
+
const value = values[b] || values["lg"];
|
|
157
|
+
return {
|
|
158
|
+
...a,
|
|
159
|
+
[b]: value
|
|
160
|
+
};
|
|
161
|
+
} else {
|
|
162
|
+
return a;
|
|
163
|
+
}
|
|
164
|
+
}, {});
|
|
165
|
+
if (breakpoint) {
|
|
166
|
+
return value[breakpoint] || value["lg"] || value;
|
|
167
|
+
} else {
|
|
168
|
+
return cssVal["lg"];
|
|
169
|
+
}
|
|
170
|
+
} catch (err) {
|
|
171
|
+
// console.log(err);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
@@ -35,6 +35,7 @@ export const EditorProvider = ({
|
|
|
35
35
|
path: null
|
|
36
36
|
});
|
|
37
37
|
const [fontFamilies, setFontFamilies] = useState({});
|
|
38
|
+
const [activeBreakPoint, setActiveBreakPoint] = useState("");
|
|
38
39
|
useEffect(() => {
|
|
39
40
|
window.updateSelectedItem = d => {
|
|
40
41
|
setSelectedElement(d);
|
|
@@ -97,8 +98,10 @@ export const EditorProvider = ({
|
|
|
97
98
|
setOpenAI,
|
|
98
99
|
updateDragging,
|
|
99
100
|
fontFamilies,
|
|
100
|
-
setFontFamilies
|
|
101
|
-
|
|
101
|
+
setFontFamilies,
|
|
102
|
+
activeBreakPoint,
|
|
103
|
+
setActiveBreakPoint
|
|
104
|
+
}), [path, editor?.selection, selectedPath, selectedElement, contextMenu, openAI, popupType, drop, activeBreakPoint]);
|
|
102
105
|
return /*#__PURE__*/_jsx(EditorContext.Provider, {
|
|
103
106
|
value: otherValues,
|
|
104
107
|
children: children
|
|
@@ -40,32 +40,36 @@ const withEmbeds = editor => {
|
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
editor.insertBreak = (...args) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
43
|
+
try {
|
|
44
|
+
const parentPath = Path.parent(editor.selection.focus.path);
|
|
45
|
+
const parentNode = Node.get(editor, parentPath);
|
|
46
|
+
if (editor.isVoid(parentNode)) {
|
|
47
|
+
const nextPath = Path.next(parentPath);
|
|
48
|
+
Transforms.insertNodes(editor, {
|
|
49
|
+
type: "paragraph",
|
|
50
|
+
children: [{
|
|
51
|
+
text: ""
|
|
52
|
+
}]
|
|
53
|
+
}, {
|
|
54
|
+
at: nextPath,
|
|
55
|
+
select: true // Focus on this node once inserted
|
|
56
|
+
});
|
|
57
|
+
} else if (AvoidCopying.indexOf(parentNode?.type) >= 0) {
|
|
58
|
+
const nextPath = Path.next(parentPath);
|
|
59
|
+
Transforms.insertNodes(editor, {
|
|
60
|
+
type: "paragraph",
|
|
61
|
+
children: [{
|
|
62
|
+
text: ""
|
|
63
|
+
}]
|
|
64
|
+
}, {
|
|
65
|
+
at: nextPath,
|
|
66
|
+
select: true // Focus on this node once inserted
|
|
67
|
+
});
|
|
68
|
+
} else {
|
|
69
|
+
insertBreak(...args);
|
|
70
|
+
}
|
|
71
|
+
} catch (err) {
|
|
72
|
+
console.log(err);
|
|
69
73
|
}
|
|
70
74
|
};
|
|
71
75
|
return editor;
|
|
@@ -2,6 +2,8 @@ import { Transforms, Editor, Element, Node, Path } from "slate";
|
|
|
2
2
|
import deserialize from "../helper/deserialize";
|
|
3
3
|
import { decodeAndParseBase64 } from "../utils/helper";
|
|
4
4
|
const avoidDefaultInsert = ["table", "grid"];
|
|
5
|
+
const NON_TEXT_TAGS = ["ol", "ul", "img", "table", "video", "a", "button", "GOOGLE-SHEETS-HTML-ORIGIN"];
|
|
6
|
+
const ALLOWED_TEXT_NODES = ["paragraph", "title", "headingOne", "headingTwo", "headingThree"];
|
|
5
7
|
const loopChildren = (children = [], defaultInsert) => {
|
|
6
8
|
if (!children?.length) {
|
|
7
9
|
return defaultInsert;
|
|
@@ -61,13 +63,18 @@ const insertAtNextNode = (editor, formattedFragment) => {
|
|
|
61
63
|
console.log(err);
|
|
62
64
|
}
|
|
63
65
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
|
|
67
|
+
// const handleInsert = (editor, defaultInsert, fragment = []) => {
|
|
68
|
+
// if (
|
|
69
|
+
// getCurrentElementText(editor) &&
|
|
70
|
+
// fragment.some((f) => f.type === "table")
|
|
71
|
+
// ) {
|
|
72
|
+
// insertAtNextNode(editor, fragment);
|
|
73
|
+
// } else {
|
|
74
|
+
// defaultInsert();
|
|
75
|
+
// }
|
|
76
|
+
// };
|
|
77
|
+
|
|
71
78
|
const getTableCellChild = (fragment = []) => {
|
|
72
79
|
const table = fragment.find(node => node.type === "table");
|
|
73
80
|
const row = table?.children?.find(node => node.type === "table-row");
|
|
@@ -120,7 +127,10 @@ const withHtml = editor => {
|
|
|
120
127
|
const slateHTML = data?.getData("application/x-slate-fragment");
|
|
121
128
|
const html = data?.getData("text/html");
|
|
122
129
|
const currentEl = getCurrentElement(editor);
|
|
123
|
-
|
|
130
|
+
const eltype = currentEl?.type;
|
|
131
|
+
const firstNode = editor?.children?.[0];
|
|
132
|
+
const titlePath = firstNode?.type === "topbanner" ? 1 : 0;
|
|
133
|
+
const isTitlePath = editor.needLayout && editor?.selection?.anchor?.path[0] === titlePath;
|
|
124
134
|
if (slateHTML && !formatFragment[eltype]) {
|
|
125
135
|
const [tableCellNode] = Editor.nodes(editor, {
|
|
126
136
|
match: n => !Editor.isEditor(n) && Element.isElement(n) && n.type === "table-cell"
|
|
@@ -170,22 +180,38 @@ const withHtml = editor => {
|
|
|
170
180
|
Transforms.insertText(editor, text);
|
|
171
181
|
}
|
|
172
182
|
} else {
|
|
173
|
-
|
|
183
|
+
const isTextNode = ALLOWED_TEXT_NODES.includes(decoded?.[0]?.type);
|
|
184
|
+
if (isTitlePath && !isTextNode) {
|
|
185
|
+
insertAtNextNode(editor, decoded);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const currentText = getCurrentElementText(editor);
|
|
189
|
+
if (currentText && !isTextNode) {
|
|
190
|
+
insertAtNextNode(editor, decoded);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
insertData(data);
|
|
174
194
|
}
|
|
175
195
|
} else if (html) {
|
|
176
196
|
const parsed = new DOMParser().parseFromString(html, "text/html");
|
|
197
|
+
const rootElement = parsed.body || parsed.documentElement;
|
|
198
|
+
const isNonText = rootElement ? rootElement?.querySelector(NON_TEXT_TAGS.toString()) : false;
|
|
177
199
|
const isGoogleSheet = parsed.body.querySelector("google-sheets-html-origin");
|
|
178
200
|
if (isGoogleSheet) {
|
|
179
201
|
if (editor.isChatEditor) {
|
|
180
202
|
return;
|
|
181
203
|
}
|
|
182
|
-
const table =
|
|
204
|
+
const table = rootElement.querySelector("table");
|
|
183
205
|
const colGrp = table.querySelector("colgroup");
|
|
184
206
|
if (colGrp) {
|
|
185
207
|
colGrp.remove();
|
|
186
208
|
}
|
|
187
209
|
const fragment = deserialize(table);
|
|
188
|
-
|
|
210
|
+
if (isTitlePath) {
|
|
211
|
+
insertAtNextNode(editor, [fragment]);
|
|
212
|
+
} else {
|
|
213
|
+
Transforms.insertFragment(editor, [fragment]);
|
|
214
|
+
}
|
|
189
215
|
return;
|
|
190
216
|
}
|
|
191
217
|
const fragment = deserialize(parsed.body);
|
|
@@ -199,7 +225,16 @@ const withHtml = editor => {
|
|
|
199
225
|
if (editor.isChatEditor && is_img_table) {
|
|
200
226
|
return;
|
|
201
227
|
}
|
|
202
|
-
|
|
228
|
+
if (isTitlePath && isNonText) {
|
|
229
|
+
insertAtNextNode(editor, formattedFragment);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const currentText = getCurrentElementText(editor);
|
|
233
|
+
if (currentText && isNonText) {
|
|
234
|
+
insertAtNextNode(editor, formattedFragment);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
Transforms.insertFragment(editor, formattedFragment);
|
|
203
238
|
return;
|
|
204
239
|
} else {
|
|
205
240
|
insertData(data);
|
|
@@ -58,7 +58,49 @@ const withLayout = editor => {
|
|
|
58
58
|
Transforms.insertNodes(editor, paragraph, {
|
|
59
59
|
at: path.concat(1)
|
|
60
60
|
});
|
|
61
|
+
return;
|
|
61
62
|
}
|
|
63
|
+
|
|
64
|
+
// Transforms.insertNodes(editor, paragraph, { at: [0] });
|
|
65
|
+
// const extractFirstText = (node) => {
|
|
66
|
+
// if (node.text) {
|
|
67
|
+
// return node.text;
|
|
68
|
+
// }
|
|
69
|
+
// if (node.children) {
|
|
70
|
+
// for (const child of node.children) {
|
|
71
|
+
// const text = extractFirstText(child);
|
|
72
|
+
// if (text) {
|
|
73
|
+
// return text;
|
|
74
|
+
// }
|
|
75
|
+
// }
|
|
76
|
+
// }
|
|
77
|
+
// return "";
|
|
78
|
+
// };
|
|
79
|
+
|
|
80
|
+
// const extractRemainingNodes = (node) => {
|
|
81
|
+
// if (!node.children) {
|
|
82
|
+
// return [];
|
|
83
|
+
// }
|
|
84
|
+
// const [, ...remainingChildren] = node.children;
|
|
85
|
+
// return remainingChildren.map((child) => ({ ...child }));
|
|
86
|
+
// };
|
|
87
|
+
|
|
88
|
+
// const firstNode = editor.children[0];
|
|
89
|
+
// const firstContent = extractFirstText(firstNode);
|
|
90
|
+
|
|
91
|
+
// if (firstNode.type !== "title") {
|
|
92
|
+
// const titleNode = {
|
|
93
|
+
// type: "title",
|
|
94
|
+
// children: [{ text: firstContent }],
|
|
95
|
+
// };
|
|
96
|
+
// Transforms.removeNodes(editor, { at: [0] });
|
|
97
|
+
// Transforms.insertNodes(editor, titleNode, { at: [0], select: true });
|
|
98
|
+
// const remainingNodes = extractRemainingNodes(firstNode);
|
|
99
|
+
// if (remainingNodes.length > 0) {
|
|
100
|
+
// Transforms.insertNodes(editor, remainingNodes, { at: [1] });
|
|
101
|
+
// }
|
|
102
|
+
// }
|
|
103
|
+
|
|
62
104
|
ORDERS_LAYOUT.forEach((enforce, index) => {
|
|
63
105
|
if (index < editor.children.length) {
|
|
64
106
|
const existsNode = Node.get(editor, [index]);
|
|
@@ -43,6 +43,9 @@ import Code from "../Elements/EmbedScript/Code";
|
|
|
43
43
|
import FreeGrid from "../Elements/FreeGrid/FreeGrid";
|
|
44
44
|
import FreeGridItem from "../Elements/FreeGrid/FreeGridItem";
|
|
45
45
|
import FreeGridBox from "../Elements/FreeGrid/FreeGridBox";
|
|
46
|
+
import DataView from "../Elements/DataView/DataView";
|
|
47
|
+
import ViewData from "../Elements/DataView/Layouts/ViewData";
|
|
48
|
+
import ColumnView from "../Elements/DataView/Layouts/ColumnView";
|
|
46
49
|
import SearchAttachment from "../Elements/Search/SearchAttachment";
|
|
47
50
|
// import { wrapThemeBreakpoints } from "../Elements/FreeGrid/breakpointConstants";
|
|
48
51
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -152,7 +155,7 @@ export const activeMark = (editor, format) => {
|
|
|
152
155
|
const defaultMarkData = {
|
|
153
156
|
color: "#000000",
|
|
154
157
|
bgColor: "#FFFFFF",
|
|
155
|
-
fontSize: "
|
|
158
|
+
fontSize: "14px",
|
|
156
159
|
fontFamily: "PoppinsRegular",
|
|
157
160
|
fontWeight: "normal"
|
|
158
161
|
};
|
|
@@ -237,7 +240,8 @@ export const getMarked = (leaf, children, theme) => {
|
|
|
237
240
|
// },
|
|
238
241
|
...textStyles,
|
|
239
242
|
fontFamily: family,
|
|
240
|
-
fontWeight: leaf.fontWeight
|
|
243
|
+
fontWeight: leaf.fontWeight,
|
|
244
|
+
WebkitTextFillColor: 'unset !important'
|
|
241
245
|
},
|
|
242
246
|
children: children
|
|
243
247
|
})
|
|
@@ -246,7 +250,6 @@ export const getMarked = (leaf, children, theme) => {
|
|
|
246
250
|
if (leaf.highlight) {
|
|
247
251
|
children = /*#__PURE__*/_jsx("span", {
|
|
248
252
|
style: {
|
|
249
|
-
background: "#EAEBFE",
|
|
250
253
|
color: "inherit"
|
|
251
254
|
},
|
|
252
255
|
children: children
|
|
@@ -309,7 +312,8 @@ export const getBlock = props => {
|
|
|
309
312
|
borderRadius: `${element?.color ? "0px" : "12px"} 12px 12px ${element?.color ? "0px" : "12px"}`,
|
|
310
313
|
margin: `${element?.bgColor ? "16px" : "0px"} 0px`,
|
|
311
314
|
width: element?.bgColor ? "calc(100% - 16px)" : "100%",
|
|
312
|
-
borderWidth: element?.color ? "0px 0px 0px 3px" : "0px"
|
|
315
|
+
borderWidth: element?.color ? "0px 0px 0px 3px" : "0px",
|
|
316
|
+
lineHeight: 1.43
|
|
313
317
|
},
|
|
314
318
|
children: children
|
|
315
319
|
});
|
|
@@ -369,6 +373,9 @@ export const getBlock = props => {
|
|
|
369
373
|
});
|
|
370
374
|
case "orderedList":
|
|
371
375
|
return /*#__PURE__*/_jsx("ol", {
|
|
376
|
+
style: {
|
|
377
|
+
lineHeight: 1.43
|
|
378
|
+
},
|
|
372
379
|
className: "listItemMargin",
|
|
373
380
|
type: "1",
|
|
374
381
|
...attributes,
|
|
@@ -376,6 +383,9 @@ export const getBlock = props => {
|
|
|
376
383
|
});
|
|
377
384
|
case "unorderedList":
|
|
378
385
|
return /*#__PURE__*/_jsx("ul", {
|
|
386
|
+
style: {
|
|
387
|
+
lineHeight: 1.43
|
|
388
|
+
},
|
|
379
389
|
className: "listItemMargin",
|
|
380
390
|
...attributes,
|
|
381
391
|
children: children
|
|
@@ -564,6 +574,19 @@ export const getBlock = props => {
|
|
|
564
574
|
contentEditable: false,
|
|
565
575
|
children: children
|
|
566
576
|
});
|
|
577
|
+
// Data View
|
|
578
|
+
case "dataView":
|
|
579
|
+
return /*#__PURE__*/_jsx(DataView, {
|
|
580
|
+
...props
|
|
581
|
+
});
|
|
582
|
+
case "viewData":
|
|
583
|
+
return /*#__PURE__*/_jsx(ViewData, {
|
|
584
|
+
...props
|
|
585
|
+
});
|
|
586
|
+
case "columnView":
|
|
587
|
+
return /*#__PURE__*/_jsx(ColumnView, {
|
|
588
|
+
...props
|
|
589
|
+
});
|
|
567
590
|
default:
|
|
568
591
|
return /*#__PURE__*/_jsx(SimpleText, {
|
|
569
592
|
...props,
|
|
@@ -3,6 +3,7 @@ import { Box } from "@mui/material";
|
|
|
3
3
|
import { fontFamilyMap, sizeMap } from "../font";
|
|
4
4
|
import Mentions from "../../Elements/Mentions/Mentions";
|
|
5
5
|
import CheckList from "../../Elements/List/CheckList";
|
|
6
|
+
import SimpleText from "../../Elements/SimpleText";
|
|
6
7
|
import { isEmptyTextNode } from "../../helper";
|
|
7
8
|
import { getBreakPointsValue } from "../../helper/theme";
|
|
8
9
|
import insertNewLine from "../insertNewLine";
|
|
@@ -15,6 +16,20 @@ const LIST_FORMAT_TYPE = {
|
|
|
15
16
|
unorderedList: "list-item"
|
|
16
17
|
};
|
|
17
18
|
const NEWLINESAFTER = ["headingOne", "headingTwo", "headingThree"];
|
|
19
|
+
export const serializeMentions = node => {
|
|
20
|
+
try {
|
|
21
|
+
if (node?.type === 'mention') {
|
|
22
|
+
return [node.character];
|
|
23
|
+
}
|
|
24
|
+
let children = Array.isArray(node) ? node : node?.children;
|
|
25
|
+
children = children && Array.isArray(children) ? children : [];
|
|
26
|
+
let mentions = children.map(child => serializeMentions(child)).flat();
|
|
27
|
+
return mentions.filter(Boolean);
|
|
28
|
+
} catch (err) {
|
|
29
|
+
console.log(err);
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
};
|
|
18
33
|
export const toggleBlock = (editor, format, selection = true, attr = {}) => {
|
|
19
34
|
const isActive = isBlockActive(editor, format);
|
|
20
35
|
const isList = list_types.includes(format);
|
|
@@ -245,6 +260,13 @@ export const getBlock = props => {
|
|
|
245
260
|
,
|
|
246
261
|
children: children
|
|
247
262
|
});
|
|
263
|
+
case "title":
|
|
264
|
+
return /*#__PURE__*/_jsx("h3", {
|
|
265
|
+
...attributes,
|
|
266
|
+
...element.attr,
|
|
267
|
+
className: `content-editable ${isEmpty ? "empty" : ""}`,
|
|
268
|
+
children: children
|
|
269
|
+
});
|
|
248
270
|
case "headingThree":
|
|
249
271
|
return /*#__PURE__*/_jsx("h3", {
|
|
250
272
|
...attributes,
|
|
@@ -342,6 +364,9 @@ export const getBlock = props => {
|
|
|
342
364
|
...props
|
|
343
365
|
});
|
|
344
366
|
default:
|
|
345
|
-
return
|
|
367
|
+
return /*#__PURE__*/_jsx(SimpleText, {
|
|
368
|
+
...props,
|
|
369
|
+
isEmpty: isEmpty
|
|
370
|
+
});
|
|
346
371
|
}
|
|
347
372
|
};
|