easy-email-pro-theme 1.49.7 → 1.50.1

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 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
- node.id = node.id || nanoid();
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 = "[data-slate-block=page] {\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}";
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
- right: /* @__PURE__ */ React__default.createElement(Space, null, !universalElementEditing && !standaloneElementEditing && !readOnly && /* @__PURE__ */ React__default.createElement(Tooltip, { content: t("clear the entire canvas") }, /* @__PURE__ */ React__default.createElement(
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",
@@ -15382,7 +15498,12 @@ const TextLink = () => {
15382
15498
  type: "secondary",
15383
15499
  icon: /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-merge-tags" })
15384
15500
  }
15385
- )
15501
+ ),
15502
+ getPopupContainer: (node) => {
15503
+ return Array.from(
15504
+ document.querySelectorAll(".RichTextBar")
15505
+ ).find((item2) => item2.contains(node));
15506
+ }
15386
15507
  }
15387
15508
  ),
15388
15509
  /* @__PURE__ */ React__default.createElement(
@@ -36364,6 +36485,23 @@ const StandaloneElementSaveButtonPortal = (props) => {
36364
36485
  }, [cacheProps, setStandaloneElementSaveButton]);
36365
36486
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null);
36366
36487
  };
36488
+ const DraggingPlaceholderWrapper = (props) => {
36489
+ const isDragover = get(props.attributes, "data-slate-dragover");
36490
+ const isDragging = get(props.attributes, "data-slate-dragging");
36491
+ return /* @__PURE__ */ React__default.createElement(
36492
+ "div",
36493
+ {
36494
+ className: classnames$1(
36495
+ "render-with-block-container",
36496
+ isDragover && "render-with-block-container-is-dragover",
36497
+ isDragging && "render-with-block-container-is-dragging"
36498
+ )
36499
+ },
36500
+ props.children,
36501
+ props.placeholder
36502
+ );
36503
+ };
36504
+ ExternalComponents.ChildrenWithPlaceholderWrapper = DraggingPlaceholderWrapper;
36367
36505
  const SharedComponents = {
36368
36506
  PreviewEmailDrawer,
36369
36507
  PreviewEmail,
@@ -37418,7 +37556,7 @@ const useCreateConfig$1 = (_k) => {
37418
37556
  initialValues
37419
37557
  });
37420
37558
  };
37421
- const Layout$1 = ({ children, footer, header }) => {
37559
+ const Layout$1 = ({ children, footer, header, tabLeft, tabRight }) => {
37422
37560
  const { inited, values } = useEditorContext();
37423
37561
  const {
37424
37562
  showSidebar = true,
@@ -37507,7 +37645,15 @@ const Layout$1 = ({ children, footer, header }) => {
37507
37645
  },
37508
37646
  /* @__PURE__ */ React__default.createElement(SharedComponents.BlockSideBar, { height })
37509
37647
  ),
37510
- /* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(SharedComponents.EditorTabs, { header, footer }, /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Retro-CSS" }, styleText$h, RetroStyleText, `
37648
+ /* @__PURE__ */ React__default.createElement("div", { style: { height, minWidth: 800, flex: 1 } }, /* @__PURE__ */ React__default.createElement(
37649
+ SharedComponents.EditorTabs,
37650
+ {
37651
+ header,
37652
+ footer,
37653
+ left: tabLeft,
37654
+ right: tabRight
37655
+ },
37656
+ /* @__PURE__ */ React__default.createElement(EmailEditor, null, /* @__PURE__ */ React__default.createElement("style", { id: "Retro-CSS" }, styleText$h, RetroStyleText, `
37511
37657
  body {
37512
37658
  --page-width: ${pageDataWidth}px;
37513
37659
  }
@@ -37518,7 +37664,8 @@ const Layout$1 = ({ children, footer, header }) => {
37518
37664
  transition: transform 0.2s ease;
37519
37665
  }
37520
37666
 
37521
- `), children))),
37667
+ `), children)
37668
+ )),
37522
37669
  showSidebar && compact && /* @__PURE__ */ React__default.createElement(
37523
37670
  Layout$2.Sider,
37524
37671
  {
@@ -37541,6 +37688,8 @@ const Layout$1 = ({ children, footer, header }) => {
37541
37688
  pageDataWidth,
37542
37689
  showSidebar,
37543
37690
  sidebarWidth,
37691
+ tabLeft,
37692
+ tabRight,
37544
37693
  widgetMode,
37545
37694
  zoom
37546
37695
  ]);
@@ -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;
@@ -3,4 +3,6 @@ export declare const EditorTabs: React.FC<{
3
3
  children: React.ReactNode;
4
4
  header?: React.ReactNode;
5
5
  footer?: React.ReactNode;
6
+ left?: React.ReactNode;
7
+ right?: React.ReactNode;
6
8
  }>;
@@ -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;
@@ -7,5 +7,7 @@ export declare const Retro: {
7
7
  children?: React.ReactNode;
8
8
  header?: React.ReactNode;
9
9
  footer?: React.ReactNode;
10
+ tabLeft?: React.ReactNode;
11
+ tabRight?: React.ReactNode;
10
12
  }>;
11
13
  };
@@ -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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-email-pro-theme",
3
- "version": "1.49.7",
3
+ "version": "1.50.1",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib"