easy-email-pro-theme 1.49.6 → 1.50.0
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/lib/index.js +161 -17
- package/lib/typings/components/DraggingPlaceholderWrapper/index.d.ts +9 -0
- package/lib/typings/components/EditorTabs/index.d.ts +2 -0
- package/lib/typings/components/index.d.ts +2 -0
- package/lib/typings/themes/Retro/index.d.ts +2 -0
- package/lib/typings/typings/custom-types.d.ts +6 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -54,7 +54,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
54
54
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
|
-
import { classnames, useEditorActions, useDragNodePath, useStandaloneElementEditing, useEditorProps, useRefState, isDOMElement, useMergeTagsData, useLockState, useEventCallback, useSelectedNodePath, useSelectedNode, useSetSelectedNodePath, useSetHoverNodePath, useUniversalElementEditing, useUniversalElementPath, useStandaloneElementPath, useStandaloneElement, useActiveTab, ActiveTabKeys, toggleFormat, TextFormat, useUniversalElement, isFormatActive, validation, CustomEvent, getDynamicImagePlaceholder, EmailEditorProvider, EmailEditor, useForceUpdate, IframeComponent, useEditorState, HtmlStringToReactNodes, useStandaloneElementSaveButton, useEqualState, useDragoverDirection } from "easy-email-pro-editor";
|
|
57
|
+
import { classnames, useEditorActions, useDragNodePath, useStandaloneElementEditing, useEditorProps, useRefState, isDOMElement, useMergeTagsData, useLockState, useEventCallback, useSelectedNodePath, useSelectedNode, useSetSelectedNodePath, useSetHoverNodePath, useUniversalElementEditing, useUniversalElementPath, useStandaloneElementPath, useStandaloneElement, useActiveTab, ActiveTabKeys, toggleFormat, TextFormat, useUniversalElement, isFormatActive, validation, CustomEvent, getDynamicImagePlaceholder, EmailEditorProvider, EmailEditor, useForceUpdate, IframeComponent, useEditorState, HtmlStringToReactNodes, useStandaloneElementSaveButton, useEqualState, ExternalComponents, useDragoverDirection } from "easy-email-pro-editor";
|
|
58
58
|
import { useSlate, ReactEditor, useSlateStatic, useSelected } from "slate-react";
|
|
59
59
|
import * as React$2 from "react";
|
|
60
60
|
import React__default, { useRef, useState, useEffect, useCallback, useMemo, createContext, useContext, useLayoutEffect, memo, useReducer, cloneElement, forwardRef, Suspense, Component, createElement } from "react";
|
|
@@ -66,8 +66,8 @@ import { Form, Input, Modal, Collapse, Space, Empty, Card, Grid, Button as Butto
|
|
|
66
66
|
import { IconPlus, IconDelete, IconEdit, IconLeft, IconCopy, IconUndo, IconRedo, IconMinus, IconEye, IconSubscribeAdd, IconClose, IconCheckCircleFill, IconDragArrow, IconLock, IconUnlock, IconQuestionCircle, IconLink, IconCloud, IconSend, IconDown } from "@arco-design/web-react/icon";
|
|
67
67
|
import { unstable_batchedUpdates, createPortal } from "react-dom";
|
|
68
68
|
import mjml from "mjml-browser";
|
|
69
|
-
import { renderToStaticMarkup } from "react-dom/server";
|
|
70
69
|
import { HistoryEditor } from "slate-history";
|
|
70
|
+
import { renderToStaticMarkup } from "react-dom/server";
|
|
71
71
|
const styleText$h = `@font-face {
|
|
72
72
|
font-family: "iconfont"; /* Project id 4003152 */
|
|
73
73
|
src: url('data:font/woff2;base64,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') format('woff2'),
|
|
@@ -697,13 +697,20 @@ function IconFont(props) {
|
|
|
697
697
|
);
|
|
698
698
|
}
|
|
699
699
|
const assignIdsToElementTree = (element, overwrite = false) => {
|
|
700
|
+
const map = /* @__PURE__ */ new Map();
|
|
700
701
|
const newElement = cloneDeep(element);
|
|
701
702
|
const loop2 = (node) => {
|
|
702
703
|
if (NodeUtils.isElement(node)) {
|
|
703
704
|
if (overwrite) {
|
|
704
705
|
node.id = nanoid();
|
|
705
706
|
} else {
|
|
706
|
-
|
|
707
|
+
if (map.has(node.id)) {
|
|
708
|
+
const newId = nanoid();
|
|
709
|
+
node.id = newId;
|
|
710
|
+
console.log(`have same id ${node.id}, regenerate ${newId}`);
|
|
711
|
+
} else {
|
|
712
|
+
map.set(node.id, true);
|
|
713
|
+
}
|
|
707
714
|
}
|
|
708
715
|
if (node.children) {
|
|
709
716
|
node.children.forEach(loop2);
|
|
@@ -732,11 +739,18 @@ const DraggingProvider = ({
|
|
|
732
739
|
const editor = useSlate();
|
|
733
740
|
const [inited, setInited] = useState(false);
|
|
734
741
|
const [isDragging, setIsDragging] = useState(false);
|
|
742
|
+
const autoScrollIntervalRef = useRef(null);
|
|
743
|
+
const lastThrottleTime = useRef(0);
|
|
744
|
+
const THROTTLE_DELAY = 100;
|
|
735
745
|
let root2 = null;
|
|
746
|
+
let rootWindow = null;
|
|
736
747
|
try {
|
|
737
748
|
root2 = ReactEditor.getWindow(editor).document;
|
|
749
|
+
rootWindow = ReactEditor.getWindow(editor);
|
|
738
750
|
} catch (error2) {
|
|
739
751
|
}
|
|
752
|
+
const autoScrollConfig = useRefState(editorProps.autoScroll);
|
|
753
|
+
const dragoverType = editorProps.dragoverType;
|
|
740
754
|
useEffect(() => {
|
|
741
755
|
if (!root2)
|
|
742
756
|
return;
|
|
@@ -779,7 +793,84 @@ const DraggingProvider = ({
|
|
|
779
793
|
return;
|
|
780
794
|
if (editorProps.readOnly)
|
|
781
795
|
return;
|
|
796
|
+
let lastScrollClientY = 0;
|
|
797
|
+
const handleAutoScroll = (clientY) => {
|
|
798
|
+
if (!root2)
|
|
799
|
+
return;
|
|
800
|
+
const hasMoved = Math.abs(clientY - lastScrollClientY) > 20;
|
|
801
|
+
if (hasMoved) {
|
|
802
|
+
lastScrollClientY = clientY;
|
|
803
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
804
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
805
|
+
autoScrollIntervalRef.current = null;
|
|
806
|
+
}
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
const scrollContainer = root2.defaultView;
|
|
810
|
+
if (!scrollContainer)
|
|
811
|
+
return;
|
|
812
|
+
const inputConfig = autoScrollConfig.current === true ? {} : autoScrollConfig.current;
|
|
813
|
+
const config = __spreadValues({
|
|
814
|
+
scrollSpeed: 10,
|
|
815
|
+
bottomTriggerArea: 50,
|
|
816
|
+
topTriggerArea: 50,
|
|
817
|
+
scrollDelay: 300
|
|
818
|
+
}, inputConfig);
|
|
819
|
+
const scrollSpeed = config.scrollSpeed;
|
|
820
|
+
const bottomTriggerArea = config.bottomTriggerArea;
|
|
821
|
+
const topTriggerArea = config.topTriggerArea;
|
|
822
|
+
const scrollDelay = config.scrollDelay;
|
|
823
|
+
const viewportHeight = rootWindow.innerHeight;
|
|
824
|
+
const scrollTop = scrollContainer.scrollY;
|
|
825
|
+
const scrollHeight = root2.body.scrollHeight;
|
|
826
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
827
|
+
return;
|
|
828
|
+
}
|
|
829
|
+
const distanceFromBottom = viewportHeight - clientY;
|
|
830
|
+
if (distanceFromBottom < bottomTriggerArea && scrollTop + viewportHeight < scrollHeight - 5) {
|
|
831
|
+
lastScrollClientY = clientY;
|
|
832
|
+
const scrollTimer = setTimeout(() => {
|
|
833
|
+
autoScrollIntervalRef.current = window.setInterval(() => {
|
|
834
|
+
const currentScrollY = scrollContainer.scrollY;
|
|
835
|
+
const currentViewportHeight = rootWindow.innerHeight;
|
|
836
|
+
const currentScrollHeight = root2.body.scrollHeight;
|
|
837
|
+
if (currentScrollY + currentViewportHeight >= currentScrollHeight - 5) {
|
|
838
|
+
if (autoScrollIntervalRef.current) {
|
|
839
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
840
|
+
autoScrollIntervalRef.current = null;
|
|
841
|
+
}
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
scrollContainer.scrollBy(0, scrollSpeed);
|
|
845
|
+
}, 16);
|
|
846
|
+
}, scrollDelay);
|
|
847
|
+
autoScrollIntervalRef.current = scrollTimer;
|
|
848
|
+
return;
|
|
849
|
+
}
|
|
850
|
+
if (clientY < topTriggerArea && scrollTop > 0) {
|
|
851
|
+
lastScrollClientY = clientY;
|
|
852
|
+
const scrollTimer = setTimeout(() => {
|
|
853
|
+
autoScrollIntervalRef.current = window.setInterval(() => {
|
|
854
|
+
const currentScrollY = scrollContainer.scrollY;
|
|
855
|
+
if (currentScrollY <= 0) {
|
|
856
|
+
if (autoScrollIntervalRef.current) {
|
|
857
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
858
|
+
autoScrollIntervalRef.current = null;
|
|
859
|
+
}
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
scrollContainer.scrollBy(0, -scrollSpeed);
|
|
863
|
+
}, 16);
|
|
864
|
+
}, scrollDelay);
|
|
865
|
+
autoScrollIntervalRef.current = scrollTimer;
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
};
|
|
782
869
|
const onDragover = (ev) => {
|
|
870
|
+
if (propsDataRef.current && autoScrollConfig.current) {
|
|
871
|
+
handleAutoScroll(ev.clientY);
|
|
872
|
+
}
|
|
873
|
+
const now2 = Date.now();
|
|
783
874
|
const removeSelectedStyle = () => {
|
|
784
875
|
root2 == null ? void 0 : root2.querySelectorAll("[data-slate-dragover='true']").forEach((item2) => item2.removeAttribute("data-slate-dragover"));
|
|
785
876
|
root2 == null ? void 0 : root2.querySelectorAll("[data-slate-dragover-direction]").forEach(
|
|
@@ -901,6 +992,12 @@ const DraggingProvider = ({
|
|
|
901
992
|
return;
|
|
902
993
|
}
|
|
903
994
|
ev.preventDefault();
|
|
995
|
+
if (dragoverType === "placeholder") {
|
|
996
|
+
if (now2 - lastThrottleTime.current < THROTTLE_DELAY) {
|
|
997
|
+
return;
|
|
998
|
+
}
|
|
999
|
+
lastThrottleTime.current = now2;
|
|
1000
|
+
}
|
|
904
1001
|
const node = ReactEditor.toDOMNode(editor, dropElement);
|
|
905
1002
|
const rect = node.getBoundingClientRect();
|
|
906
1003
|
const isTop = ev.clientY < rect.y + rect.height / 2;
|
|
@@ -944,6 +1041,10 @@ const DraggingProvider = ({
|
|
|
944
1041
|
}
|
|
945
1042
|
};
|
|
946
1043
|
const onDrop = (ev) => {
|
|
1044
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
1045
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
1046
|
+
autoScrollIntervalRef.current = null;
|
|
1047
|
+
}
|
|
947
1048
|
removePlaceholder();
|
|
948
1049
|
setIsDragging(false);
|
|
949
1050
|
const propsData = propsDataRef.current;
|
|
@@ -1106,17 +1207,27 @@ const DraggingProvider = ({
|
|
|
1106
1207
|
removeDraggingStyle();
|
|
1107
1208
|
setHoverNodePath(null);
|
|
1108
1209
|
removePlaceholder();
|
|
1210
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
1211
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
1212
|
+
autoScrollIntervalRef.current = null;
|
|
1213
|
+
}
|
|
1109
1214
|
}
|
|
1110
1215
|
};
|
|
1111
1216
|
root2.addEventListener("dragover", onDragover, false);
|
|
1112
1217
|
root2.addEventListener("mousemove", onMousemove);
|
|
1113
1218
|
root2.addEventListener("drop", onDrop);
|
|
1114
1219
|
return () => {
|
|
1220
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
1221
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
1222
|
+
autoScrollIntervalRef.current = null;
|
|
1223
|
+
}
|
|
1115
1224
|
root2 == null ? void 0 : root2.removeEventListener("dragover", onDragover, false);
|
|
1116
1225
|
root2 == null ? void 0 : root2.removeEventListener("drop", onDrop);
|
|
1117
1226
|
root2 == null ? void 0 : root2.removeEventListener("mousemove", onMousemove);
|
|
1118
1227
|
};
|
|
1119
1228
|
}, [
|
|
1229
|
+
autoScrollConfig,
|
|
1230
|
+
dragoverType,
|
|
1120
1231
|
editor,
|
|
1121
1232
|
editorProps.readOnly,
|
|
1122
1233
|
inited,
|
|
@@ -1125,6 +1236,7 @@ const DraggingProvider = ({
|
|
|
1125
1236
|
removeDraggingStyle,
|
|
1126
1237
|
removePlaceholder,
|
|
1127
1238
|
root2,
|
|
1239
|
+
rootWindow,
|
|
1128
1240
|
setDragoverDirection,
|
|
1129
1241
|
setDragoverNodePath,
|
|
1130
1242
|
setHoverNodePath,
|
|
@@ -1167,6 +1279,10 @@ const DraggingProvider = ({
|
|
|
1167
1279
|
setIsDragging(true);
|
|
1168
1280
|
},
|
|
1169
1281
|
onDragEnd() {
|
|
1282
|
+
if (autoScrollIntervalRef.current !== null) {
|
|
1283
|
+
window.clearInterval(autoScrollIntervalRef.current);
|
|
1284
|
+
autoScrollIntervalRef.current = null;
|
|
1285
|
+
}
|
|
1170
1286
|
removeDraggingStyle();
|
|
1171
1287
|
setHoverNodePath(null);
|
|
1172
1288
|
removePlaceholder();
|
|
@@ -2256,7 +2372,7 @@ const ElementSelected = ({ element, nodeElement, path: path2 }) => {
|
|
|
2256
2372
|
const renderContent = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(ElementTools$1, { element, nodeElement, path: path2 }), /* @__PURE__ */ React__default.createElement("style", null, styleText$e));
|
|
2257
2373
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, renderContent);
|
|
2258
2374
|
};
|
|
2259
|
-
const styleText$d = "
|
|
2375
|
+
const styleText$d = "body {\n --sectionElementOffset: 100px;\n --wrapperElementOffset: 150px;\n}\n\n@media screen and (max-width: 850px) {\n [data-slate-block=page] {\n --sectionElementOffset: 70px;\n --wrapperElementOffset: 100px;\n }\n}\n.section-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n.hero-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-full-width=true].section-category-hover {\n width: calc(100% - 4px);\n transform: none;\n}\n\n[data-is-hero-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-section-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-full-width=true].wrapper-category-hover {\n width: calc(100% - 4px - 16px);\n transform: none;\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}\n\n[data-is-wrapper-category=true][data-is-full-width=true].element-tools-container {\n width: calc(100% - 4px);\n transform: none;\n}\n\n.wrapper-category-hover {\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--wrapperElementOffset));\n transform: translate(calc(-1 * var(--wrapperElementOffset)), 0);\n position: absolute;\n}";
|
|
2260
2376
|
const styleText$c = "[data-standard-table2-selected=true] ::selection {\n background: none !important;\n}\n\n[data-standard-table2-selected=true] [data-standard-table2-td-selected=true] {\n background-color: rgba(199, 199, 199, 0.4) !important;\n}";
|
|
2261
2377
|
const styleText$b = ".easy-email-pro-table-operation-menu {\n position: fixed;\n z-index: 999999;\n background-color: #fff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n font-size: 14px;\n z-index: 100;\n overflow: hidden;\n border-radius: 4px;\n padding: 4px 0;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-dividing {\n height: 1px;\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item {\n display: flex;\n align-items: center;\n padding: 10px 16px;\n line-height: 18px;\n background-color: #fff;\n cursor: pointer;\n color: #595959;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item:hover {\n background-color: #efefef;\n}\n.easy-email-pro-table-operation-menu .easy-email-pro-table-operation-menu-item .easy-email-pro-table-operation-menu-icon {\n margin-right: 8px;\n height: 20px;\n width: 20px;\n font-size: 0;\n}";
|
|
2262
2378
|
const stylesText$1 = '.BlockSideBar .arco-tabs-header {\n display: flex;\n width: 100%;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title {\n flex: 1;\n margin: 0px !important;\n padding: 0 !important;\n height: 60px;\n line-height: 60px;\n position: relative;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title:hover::after {\n content: "";\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n top: initial;\n height: 2px;\n background-color: var(--color-border-3);\n transition: left 0.2s cubic-bezier(0.34, 0.69, 0.1, 1), width 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text {\n display: block;\n text-align: center;\n width: 100%;\n}\n.BlockSideBar .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text::before {\n display: none;\n}\n.BlockSideBar .arco-tabs-content {\n padding-top: 0;\n}\n\n.ConfigurationSideBar {\n height: 60px;\n line-height: 60px;\n position: relative;\n border-bottom: 1px solid #e5e7eb;\n display: flex;\n align-items: center;\n justify-content: center;\n color: rgb(var(--primary-6));\n font-weight: 500;\n}';
|
|
@@ -7969,7 +8085,14 @@ const EditorTabs = (props) => {
|
|
|
7969
8085
|
TabHeader,
|
|
7970
8086
|
{
|
|
7971
8087
|
className: "easy-email-pro-editor-tabs",
|
|
7972
|
-
|
|
8088
|
+
left: /* @__PURE__ */ React__default.createElement(Space, null, showBlockPaths && /* @__PURE__ */ React__default.createElement(
|
|
8089
|
+
BlockPaths,
|
|
8090
|
+
{
|
|
8091
|
+
standaloneElementPath,
|
|
8092
|
+
universalElementPath
|
|
8093
|
+
}
|
|
8094
|
+
), props.left),
|
|
8095
|
+
right: /* @__PURE__ */ React__default.createElement(Space, null, props.right, !universalElementEditing && !standaloneElementEditing && !readOnly && /* @__PURE__ */ React__default.createElement(Tooltip, { content: t("clear the entire canvas") }, /* @__PURE__ */ React__default.createElement(
|
|
7973
8096
|
Button$2,
|
|
7974
8097
|
{
|
|
7975
8098
|
className: "easy-email-pro-editor-tabs-clear-btn",
|
|
@@ -7990,14 +8113,7 @@ const EditorTabs = (props) => {
|
|
|
7990
8113
|
disabled: lock
|
|
7991
8114
|
},
|
|
7992
8115
|
/* @__PURE__ */ React__default.createElement(IconEye, null)
|
|
7993
|
-
)))), /* @__PURE__ */ React__default.createElement("div", null))
|
|
7994
|
-
left: /* @__PURE__ */ React__default.createElement("div", null, showBlockPaths && /* @__PURE__ */ React__default.createElement(
|
|
7995
|
-
BlockPaths,
|
|
7996
|
-
{
|
|
7997
|
-
standaloneElementPath,
|
|
7998
|
-
universalElementPath
|
|
7999
|
-
}
|
|
8000
|
-
))
|
|
8116
|
+
)))), /* @__PURE__ */ React__default.createElement("div", null))
|
|
8001
8117
|
}
|
|
8002
8118
|
), /* @__PURE__ */ React__default.createElement(
|
|
8003
8119
|
"div",
|
|
@@ -26834,7 +26950,7 @@ const SortableItem = (_c) => {
|
|
|
26834
26950
|
}
|
|
26835
26951
|
), /* @__PURE__ */ React__default.createElement("div", __spreadValues(__spreadValues({}, attributes), listeners), /* @__PURE__ */ React__default.createElement(Button$2, { style: { cursor: "grab" }, icon: /* @__PURE__ */ React__default.createElement(IconDragArrow, null) })))
|
|
26836
26952
|
},
|
|
26837
|
-
|
|
26953
|
+
props.renderItem(item2, index2)
|
|
26838
26954
|
)));
|
|
26839
26955
|
};
|
|
26840
26956
|
const DefaultEditPanelListField = enhancer(EditPanelList);
|
|
@@ -36364,6 +36480,23 @@ const StandaloneElementSaveButtonPortal = (props) => {
|
|
|
36364
36480
|
}, [cacheProps, setStandaloneElementSaveButton]);
|
|
36365
36481
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null);
|
|
36366
36482
|
};
|
|
36483
|
+
const DraggingPlaceholderWrapper = (props) => {
|
|
36484
|
+
const isDragover = get(props.attributes, "data-slate-dragover");
|
|
36485
|
+
const isDragging = get(props.attributes, "data-slate-dragging");
|
|
36486
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
36487
|
+
"div",
|
|
36488
|
+
{
|
|
36489
|
+
className: classnames$1(
|
|
36490
|
+
"render-with-block-container",
|
|
36491
|
+
isDragover && "render-with-block-container-is-dragover",
|
|
36492
|
+
isDragging && "render-with-block-container-is-dragging"
|
|
36493
|
+
)
|
|
36494
|
+
},
|
|
36495
|
+
props.children,
|
|
36496
|
+
props.placeholder
|
|
36497
|
+
);
|
|
36498
|
+
};
|
|
36499
|
+
ExternalComponents.ChildrenWithPlaceholderWrapper = DraggingPlaceholderWrapper;
|
|
36367
36500
|
const SharedComponents = {
|
|
36368
36501
|
PreviewEmailDrawer,
|
|
36369
36502
|
PreviewEmail,
|
|
@@ -37418,7 +37551,7 @@ const useCreateConfig$1 = (_k) => {
|
|
|
37418
37551
|
initialValues
|
|
37419
37552
|
});
|
|
37420
37553
|
};
|
|
37421
|
-
const Layout$1 = ({ children, footer, header }) => {
|
|
37554
|
+
const Layout$1 = ({ children, footer, header, tabLeft, tabRight }) => {
|
|
37422
37555
|
const { inited, values } = useEditorContext();
|
|
37423
37556
|
const {
|
|
37424
37557
|
showSidebar = true,
|
|
@@ -37507,7 +37640,15 @@ const Layout$1 = ({ children, footer, header }) => {
|
|
|
37507
37640
|
},
|
|
37508
37641
|
/* @__PURE__ */ React__default.createElement(SharedComponents.BlockSideBar, { height })
|
|
37509
37642
|
),
|
|
37510
|
-
/* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(
|
|
37643
|
+
/* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(
|
|
37644
|
+
SharedComponents.EditorTabs,
|
|
37645
|
+
{
|
|
37646
|
+
header,
|
|
37647
|
+
footer,
|
|
37648
|
+
left: tabLeft,
|
|
37649
|
+
right: tabRight
|
|
37650
|
+
},
|
|
37651
|
+
/* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Retro-CSS" }, styleText$h, RetroStyleText, `
|
|
37511
37652
|
body {
|
|
37512
37653
|
--page-width: ${pageDataWidth}px;
|
|
37513
37654
|
}
|
|
@@ -37518,7 +37659,8 @@ const Layout$1 = ({ children, footer, header }) => {
|
|
|
37518
37659
|
transition: transform 0.2s ease;
|
|
37519
37660
|
}
|
|
37520
37661
|
|
|
37521
|
-
`), children)
|
|
37662
|
+
`), children)
|
|
37663
|
+
)),
|
|
37522
37664
|
showSidebar && compact && /* @__PURE__ */ React__default.createElement(
|
|
37523
37665
|
Layout$2.Sider,
|
|
37524
37666
|
{
|
|
@@ -37541,6 +37683,8 @@ const Layout$1 = ({ children, footer, header }) => {
|
|
|
37541
37683
|
pageDataWidth,
|
|
37542
37684
|
showSidebar,
|
|
37543
37685
|
sidebarWidth,
|
|
37686
|
+
tabLeft,
|
|
37687
|
+
tabRight,
|
|
37544
37688
|
widgetMode,
|
|
37545
37689
|
zoom
|
|
37546
37690
|
]);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Element } from "easy-email-pro-core";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { RenderElementProps } from "slate-react";
|
|
4
|
+
export declare const DraggingPlaceholderWrapper: (props: {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
attributes: RenderElementProps["attributes"];
|
|
7
|
+
placeholder: React.ReactNode;
|
|
8
|
+
element: Element;
|
|
9
|
+
}) => React.JSX.Element;
|
|
@@ -58,6 +58,8 @@ export declare const SharedComponents: {
|
|
|
58
58
|
children: import("react").ReactNode;
|
|
59
59
|
header?: import("react").ReactNode;
|
|
60
60
|
footer?: import("react").ReactNode;
|
|
61
|
+
left?: import("react").ReactNode;
|
|
62
|
+
right?: import("react").ReactNode;
|
|
61
63
|
}>;
|
|
62
64
|
UniversalElementEditorDrawer: import("react").FC<{
|
|
63
65
|
children: import("react").ReactNode;
|
|
@@ -165,6 +165,12 @@ export interface PluginsCustomEditorTypes {
|
|
|
165
165
|
path: Path;
|
|
166
166
|
}>;
|
|
167
167
|
dragoverType?: "line" | "placeholder";
|
|
168
|
+
autoScroll?: {
|
|
169
|
+
scrollSpeed?: number;
|
|
170
|
+
bottomTriggerArea?: number;
|
|
171
|
+
topTriggerArea?: number;
|
|
172
|
+
scrollDelay?: number;
|
|
173
|
+
} | true;
|
|
168
174
|
};
|
|
169
175
|
EmailTemplate: BasicEmailTemplate;
|
|
170
176
|
}
|