easy-email-pro-theme 1.0.2 → 1.1.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 +97 -37
- package/lib/typings/components/BlockSideBar/BlockLayer/SortableTree.d.ts +1 -0
- package/lib/typings/components/BlockSideBar/BlockLayer/components/TreeItem/SortableTreeItem.d.ts +3 -2
- package/lib/typings/components/BlockSideBar/BlockLayer/components/TreeItem/TreeItem.d.ts +1 -0
- package/lib/typings/typings/custom-types.d.ts +4 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -57,7 +57,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
57
57
|
import { classnames, useEditorState, useEditorProps, useRefState, isDOMElement, useEventCallback, useSelectedNode, validation, CustomEvent, ActiveTabKeys, EmailEditorProvider, EmailEditor, useForceUpdate, toggleFormat, TextFormat, IframeComponent, HtmlStringToReactNodes, isFormatActive } from "easy-email-pro-editor";
|
|
58
58
|
import { useSlate, ReactEditor, useSlateStatic } from "slate-react";
|
|
59
59
|
import * as React$2 from "react";
|
|
60
|
-
import React__default, { useRef, useCallback as useCallback$1,
|
|
60
|
+
import React__default, { useRef, useState, useEffect, useCallback as useCallback$1, useMemo as useMemo$1, createContext, useContext, useLayoutEffect, useReducer, memo, cloneElement, forwardRef, Suspense, Component, PureComponent } from "react";
|
|
61
61
|
import { NodeUtils, BlockManager, ElementType, EditorCore, t, ElementCategory, classnames as classnames$1, StandardType, PluginManager, ConditionOperator, ConditionOperatorSymbol } from "easy-email-pro-core";
|
|
62
62
|
import { Editor, Transforms, Path, Node as Node$1, createEditor, Text as Text$2, Range, Element as Element$1, Point } from "slate";
|
|
63
63
|
import ReactDOM, { createPortal, unstable_batchedUpdates } from "react-dom";
|
|
@@ -402,7 +402,7 @@ const styleText$c = `@font-face {
|
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
`;
|
|
405
|
-
const RetroStyleText = '[data-slate-block="page"] {\r\n min-height: 300px;\r\n}\r\n\r\n\r\n[data-slate-hover="true"] {\r\n z-index: 4;\r\n}\r\n\r\n\r\n[data-slate-focus="true"] {\r\n z-index: 3;\r\n}\r\n\r\n\r\n[data-slate-selected="true"] {\r\n z-index: 3;\r\n}\r\n\r\n\r\n[data-slate-hover="true"] .element-tools-container {\r\n z-index: 4;\r\n}\r\n\r\n\r\n.text-mergetag {\r\n outline: 1px solid rgb(78, 89, 105);\r\n outline-offset: 1px;\r\n padding: 0 2px;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n transition: all 0.1s linear;\r\n border: none;\r\n font-weight: inherit;\r\n outline-color: #00a0ac;\r\n color: inherit;\r\n background-color: #ebf9fc;\r\n max-width: 10em;\r\n font-style: inherit;\r\n text-decoration-line: inherit;\r\n position: relative;\r\n}\r\n\r\n\r\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n z-index: 1;\n}\r\n\r\n\r\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\r\n\r\n\r\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\r\n\r\n\r\n[data-slate-dragover=true] {\n z-index: 2;\n}\r\n\r\n\r\n[data-slate-dragover=true]::after {\n content: "";\n position: absolute;\n pointer-events: none;\n inset: 0px;\n border-radius: 3px;\n background: var(--drag-color);\n z-index: 10;\n left: 0;\n height: 4px;\n opacity: 1;\n}\r\n\r\n\r\n[data-slate-dragging=true] .element-tools-container {\n opacity: 0;\n}\r\n\r\n\r\n[data-slate-dragover-direction=top][data-slate-dragover=true]::after {\n top: 0px;\n}\r\n\r\n\r\n[data-slate-dragover-direction=bottom][data-slate-dragover=true]::after {\n top: auto;\n bottom: 0px;\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true] {\n outline: 2px dashed var(--drag-color);\n z-index: 2;\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true]::after {\n content: "";\n position: absolute;\n pointer-events: none;\n inset: 0px;\n border-radius: 3px;\n background: var(--drag-color);\n z-index: 1;\n left: 0;\n height: 100%;\n width: 100%;\n filter: opacity(10%);\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true] [data-slate-type=placeholder] {\n outline: none;\n}\r\n\r\n\r\n[data-slate-type=placeholder] {\n min-height: 64px;\n position: relative;\n background-color: rgba(242, 244, 245, 0.64);\n outline: rgb(43, 152, 211) dashed 1px;\n outline-offset: -1px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n line-height: 1.3;\n color: rgb(48, 59, 67);\n margin: 0 20px;\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete {\n border-radius: 2px;\n padding: 0px;\n cursor: pointer;\n height: 28px;\n width: 28px;\n background-color: rgb(223, 227, 230);\n color: rgb(96, 106, 114);\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 10px;\n top: 10px;\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] {\n z-index: 2;\n}\r\n\r\n\r\n.universal-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-mask {\n display: none;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask {\n z-index: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0px;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask::before {\n content: " ";\n width: 10000px;\n height: 10000px;\n position: fixed;\n left: 0;\n top: 0;\n transform: translate(-50%, -50%);\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask::after {\n position: absolute;\n content: " ";\n width: 100%;\n height: 100%;\n inset: 0px;\n pointer-events: none;\n outline: 9999px solid rgba(255, 255, 255, 0.6);\n}';
|
|
405
|
+
const RetroStyleText = '[data-slate-block="page"] {\r\n min-height: 300px;\r\n}\r\n\r\n\r\n[data-slate-hover="true"] {\r\n z-index: 4;\r\n}\r\n\r\n\r\n[data-slate-focus="true"] {\r\n z-index: 3;\r\n}\r\n\r\n\r\n[data-slate-selected="true"] {\r\n z-index: 3;\r\n}\r\n\r\n\r\n[data-slate-hover="true"] .element-tools-container {\r\n z-index: 4;\r\n}\r\n\r\n\r\n.text-mergetag {\r\n outline: 1px solid rgb(78, 89, 105);\r\n outline-offset: 1px;\r\n padding: 0 2px;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n transition: all 0.1s linear;\r\n border: none;\r\n font-weight: inherit;\r\n outline-color: #00a0ac;\r\n color: inherit;\r\n background-color: #ebf9fc;\r\n max-width: 10em;\r\n font-style: inherit;\r\n text-decoration-line: inherit;\r\n position: relative;\r\n}\r\n\r\n\r\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n z-index: 1;\n}\r\n\r\n\r\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\r\n\r\n\r\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\r\n\r\n\r\n[data-slate-dragover=true] {\n z-index: 2;\n}\r\n\r\n\r\n[data-slate-dragover=true]::after {\n content: "";\n position: absolute;\n pointer-events: none;\n inset: 0px;\n border-radius: 3px;\n background: var(--drag-color);\n z-index: 10;\n left: 0;\n height: 4px;\n opacity: 1;\n}\r\n\r\n\r\n[data-slate-dragging=true] .element-tools-container {\n opacity: 0;\n}\r\n\r\n\r\n[data-slate-dragover-direction=top][data-slate-dragover=true]::after {\n top: 0px;\n}\r\n\r\n\r\n[data-slate-dragover-direction=bottom][data-slate-dragover=true]::after {\n top: auto;\n bottom: 0px;\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true] {\n outline: 2px dashed var(--drag-color);\n z-index: 2;\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true]::after {\n content: "";\n position: absolute;\n pointer-events: none;\n inset: 0px;\n border-radius: 3px;\n background: var(--drag-color);\n z-index: 1;\n left: 0;\n height: 100%;\n width: 100%;\n filter: opacity(10%);\n}\r\n\r\n\r\n[data-slate-dragover-direction=middle][data-slate-dragover=true] [data-slate-type=placeholder] {\n outline: none;\n}\r\n\r\n\r\n[data-slate-type=placeholder] {\n min-height: 64px;\n position: relative;\n background-color: rgba(242, 244, 245, 0.64);\n outline: rgb(43, 152, 211) dashed 1px;\n outline-offset: -1px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n line-height: 1.3;\n color: rgb(48, 59, 67);\n margin: 0 20px;\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete {\n border-radius: 2px;\n padding: 0px;\n cursor: pointer;\n height: 28px;\n width: 28px;\n background-color: rgb(223, 227, 230);\n color: rgb(96, 106, 114);\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 10px;\n top: 10px;\n opacity: 0.8;\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n opacity: 1;\n}\r\n\r\n\r\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] {\n z-index: 2;\n}\r\n\r\n\r\n.universal-element-mask {\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n top: 0;\n z-index: 10;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-mask {\n display: none;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask {\n z-index: 0;\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0px;\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask::before {\n content: " ";\n width: 10000px;\n height: 10000px;\n position: fixed;\n left: 0;\n top: 0;\n transform: translate(-50%, -50%);\n}\r\n\r\n\r\n[data-slate-universal-editing=true] .universal-element-editing-mask::after {\n position: absolute;\n content: " ";\n width: 100%;\n height: 100%;\n inset: 0px;\n pointer-events: none;\n outline: 9999px solid rgba(255, 255, 255, 0.6);\n}';
|
|
406
406
|
const withTheme$1 = (editor) => {
|
|
407
407
|
const { insertBreak, normalizeNode, deleteBackward } = editor;
|
|
408
408
|
editor.insertBreak = (...args) => {
|
|
@@ -479,11 +479,25 @@ const DraggingProvider = ({
|
|
|
479
479
|
const editorProps = useEditorProps();
|
|
480
480
|
const quantityLimitCheck = useRefState(editorProps.quantityLimitCheck);
|
|
481
481
|
const editor = useSlate();
|
|
482
|
+
const [inited, setInited] = useState(false);
|
|
482
483
|
let root2 = null;
|
|
483
484
|
try {
|
|
484
485
|
root2 = ReactEditor.getWindow(editor).document;
|
|
485
486
|
} catch (error2) {
|
|
486
487
|
}
|
|
488
|
+
useEffect(() => {
|
|
489
|
+
const timer = setInterval(() => {
|
|
490
|
+
try {
|
|
491
|
+
if (ReactEditor.getWindow(editor).document) {
|
|
492
|
+
setInited(true);
|
|
493
|
+
}
|
|
494
|
+
} catch (error2) {
|
|
495
|
+
}
|
|
496
|
+
}, 200);
|
|
497
|
+
return () => {
|
|
498
|
+
clearInterval(timer);
|
|
499
|
+
};
|
|
500
|
+
}, [editor]);
|
|
487
501
|
const isDragging = useRefState(dragNodePath);
|
|
488
502
|
const removePlaceholder3 = useCallback$1(() => {
|
|
489
503
|
var _a2;
|
|
@@ -499,7 +513,7 @@ const DraggingProvider = ({
|
|
|
499
513
|
setDragNodePath(null);
|
|
500
514
|
}, [root2, setDragNodePath]);
|
|
501
515
|
useEffect(() => {
|
|
502
|
-
if (!root2)
|
|
516
|
+
if (!root2 || !inited)
|
|
503
517
|
return;
|
|
504
518
|
if (editorProps.readOnly)
|
|
505
519
|
return;
|
|
@@ -755,6 +769,7 @@ const DraggingProvider = ({
|
|
|
755
769
|
}, [
|
|
756
770
|
editor,
|
|
757
771
|
editorProps.readOnly,
|
|
772
|
+
inited,
|
|
758
773
|
isDragging,
|
|
759
774
|
quantityLimitCheck,
|
|
760
775
|
removeDraggingStyle,
|
|
@@ -1706,7 +1721,7 @@ const ElementSelected$1 = ({ element, nodeElement, path: path2 }) => {
|
|
|
1706
1721
|
nodeElement
|
|
1707
1722
|
));
|
|
1708
1723
|
};
|
|
1709
|
-
const styleText$8 = "[data-slate-block=page] {\n --sectionElementOffset: 100px ;\n}\n\n@media screen and (max-width:
|
|
1724
|
+
const styleText$8 = "[data-slate-block=page] {\n --sectionElementOffset: 100px ;\n}\n\n@media screen and (max-width: 850px) {\n [data-slate-block=page] {\n --sectionElementOffset: 70px ;\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[data-is-full-width=true].section-category-hover {\n width: calc(100% - 4px);\n transform: none;\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);\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(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-full-width=true].wrapper-category-hover {\n width: calc(100% - 4px);\n transform: none;\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 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(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n}\n\n[data-is-wrapper-category=true].element-tools-container {\n width: calc(100% + 2 * var(--sectionElementOffset));\n transform: translate(calc(-1 * var(--sectionElementOffset)), 0);\n position: absolute;\n}";
|
|
1710
1725
|
const ElementPlaceholder$1 = ({ element, nodeElement, isSelected, isHover, path: path2 }) => {
|
|
1711
1726
|
const { deleteBlock } = useElementInteract();
|
|
1712
1727
|
const onPointerDown = (ev) => {
|
|
@@ -1736,7 +1751,7 @@ const ElementPlaceholder$1 = ({ element, nodeElement, isSelected, isHover, path:
|
|
|
1736
1751
|
}
|
|
1737
1752
|
)))) : /* @__PURE__ */ React__default.createElement("div", { className: "wrapper-category-hover" }));
|
|
1738
1753
|
} else if (element.type === ElementType.PLACEHOLDER) {
|
|
1739
|
-
renderContent = /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "element-delete" }, /* @__PURE__ */ React__default.createElement(IconDelete, { onPointerDown })), /* @__PURE__ */ React__default.createElement("div",
|
|
1754
|
+
renderContent = /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "element-delete" }, /* @__PURE__ */ React__default.createElement(IconDelete, { onPointerDown })), /* @__PURE__ */ React__default.createElement("div", { style: { textAlign: "center" } }, t("Drop content here")));
|
|
1740
1755
|
}
|
|
1741
1756
|
const isContentElement = NodeUtils.isContentElement(element);
|
|
1742
1757
|
const isUniversalElement = NodeUtils.isUniversalElement(element);
|
|
@@ -16742,21 +16757,21 @@ const RichtextBar = (props) => {
|
|
|
16742
16757
|
const lastTemplateRef = useRef(null);
|
|
16743
16758
|
const calculateData = useMemo$1(() => {
|
|
16744
16759
|
const pageElement = cloneDeep(omit$2(props.pageElement, "children"));
|
|
16745
|
-
const
|
|
16760
|
+
const template2 = {
|
|
16746
16761
|
subject: "Blank",
|
|
16747
16762
|
content: pageElement
|
|
16748
16763
|
};
|
|
16749
16764
|
let path2 = [];
|
|
16750
16765
|
if (NodeUtils.isPageElement(props.value)) {
|
|
16751
|
-
|
|
16766
|
+
template2.content = props.value;
|
|
16752
16767
|
path2 = [0];
|
|
16753
16768
|
} else if (NodeUtils.isWrapperElement(props.value) || NodeUtils.isSectionElement(props.value) || NodeUtils.isHeroElement(props.value)) {
|
|
16754
|
-
|
|
16769
|
+
template2.content = BlockManager.getBlockByType(ElementType.PAGE).create(__spreadProps(__spreadValues({}, pageElement), {
|
|
16755
16770
|
children: [props.value]
|
|
16756
16771
|
}));
|
|
16757
16772
|
path2 = [0, 0];
|
|
16758
16773
|
} else if (NodeUtils.isColumnElement(props.value) || NodeUtils.isGroupElement(props.value)) {
|
|
16759
|
-
|
|
16774
|
+
template2.content = BlockManager.getBlockByType(ElementType.PAGE).create(__spreadProps(__spreadValues({}, pageElement), {
|
|
16760
16775
|
children: [
|
|
16761
16776
|
BlockManager.getBlockByType(ElementType.STANDARD_SECTION).create({
|
|
16762
16777
|
children: [props.value],
|
|
@@ -16771,7 +16786,7 @@ const RichtextBar = (props) => {
|
|
|
16771
16786
|
}));
|
|
16772
16787
|
path2 = [0, 0, 0];
|
|
16773
16788
|
} else if (NodeUtils.isContentElement(props.value)) {
|
|
16774
|
-
|
|
16789
|
+
template2.content = BlockManager.getBlockByType(ElementType.PAGE).create(__spreadProps(__spreadValues({}, pageElement), {
|
|
16775
16790
|
children: [
|
|
16776
16791
|
BlockManager.getBlockByType(ElementType.STANDARD_SECTION).create({
|
|
16777
16792
|
children: [
|
|
@@ -16792,14 +16807,15 @@ const RichtextBar = (props) => {
|
|
|
16792
16807
|
}));
|
|
16793
16808
|
path2 = [0, 0, 0, 0];
|
|
16794
16809
|
}
|
|
16795
|
-
return [
|
|
16810
|
+
return [template2, path2];
|
|
16796
16811
|
}, [props.pageElement, props.value]);
|
|
16812
|
+
const template = calculateData[0];
|
|
16797
16813
|
const initialValue = useMemo$1(() => {
|
|
16798
|
-
if (!isEqual$3(lastTemplateRef.current,
|
|
16799
|
-
lastTemplateRef.current =
|
|
16814
|
+
if (!isEqual$3(lastTemplateRef.current, template)) {
|
|
16815
|
+
lastTemplateRef.current = template;
|
|
16800
16816
|
}
|
|
16801
16817
|
return lastTemplateRef.current;
|
|
16802
|
-
}, [
|
|
16818
|
+
}, [template]);
|
|
16803
16819
|
const onPageChange = useEventCallback(
|
|
16804
16820
|
(page, editor2) => {
|
|
16805
16821
|
const currentElement = Node$1.get(editor2, calculateData[1]);
|
|
@@ -16829,7 +16845,7 @@ const RichtextBar = (props) => {
|
|
|
16829
16845
|
/* @__PURE__ */ React__default.createElement(FormProvider, null, /* @__PURE__ */ React__default.createElement(ResetContent, { initialValue })),
|
|
16830
16846
|
/* @__PURE__ */ React__default.createElement("style", null, styleText$c)
|
|
16831
16847
|
);
|
|
16832
|
-
}, [props.height, clientId, initialValue]);
|
|
16848
|
+
}, [props.height, clientId, initialValue, editor, onPageChange]);
|
|
16833
16849
|
};
|
|
16834
16850
|
const ResetContent = ({ initialValue }) => {
|
|
16835
16851
|
const { reset } = useEditorContext();
|
|
@@ -24903,7 +24919,8 @@ const TreeItem = forwardRef(
|
|
|
24903
24919
|
moveable,
|
|
24904
24920
|
removable,
|
|
24905
24921
|
selected: selected2,
|
|
24906
|
-
onSelect
|
|
24922
|
+
onSelect,
|
|
24923
|
+
onHover
|
|
24907
24924
|
} = _f, props = __objRest(_f, [
|
|
24908
24925
|
"childCount",
|
|
24909
24926
|
"clone",
|
|
@@ -24924,7 +24941,8 @@ const TreeItem = forwardRef(
|
|
|
24924
24941
|
"moveable",
|
|
24925
24942
|
"removable",
|
|
24926
24943
|
"selected",
|
|
24927
|
-
"onSelect"
|
|
24944
|
+
"onSelect",
|
|
24945
|
+
"onHover"
|
|
24928
24946
|
]);
|
|
24929
24947
|
return /* @__PURE__ */ React__default.createElement(
|
|
24930
24948
|
"li",
|
|
@@ -24949,7 +24967,8 @@ const TreeItem = forwardRef(
|
|
|
24949
24967
|
className: styles$1.TreeItem,
|
|
24950
24968
|
ref: ref2,
|
|
24951
24969
|
style: style2,
|
|
24952
|
-
onClick: onSelect
|
|
24970
|
+
onClick: onSelect,
|
|
24971
|
+
onMouseEnter: onHover
|
|
24953
24972
|
},
|
|
24954
24973
|
onCollapse && /* @__PURE__ */ React__default.createElement(
|
|
24955
24974
|
Action,
|
|
@@ -25010,7 +25029,8 @@ function SortableTreeItem(_g) {
|
|
|
25010
25029
|
allowMove,
|
|
25011
25030
|
allowRemove,
|
|
25012
25031
|
isSelected,
|
|
25013
|
-
onSelect
|
|
25032
|
+
onSelect,
|
|
25033
|
+
onHover
|
|
25014
25034
|
} = _h, props = __objRest(_h, [
|
|
25015
25035
|
"id",
|
|
25016
25036
|
"depth",
|
|
@@ -25020,7 +25040,8 @@ function SortableTreeItem(_g) {
|
|
|
25020
25040
|
"allowMove",
|
|
25021
25041
|
"allowRemove",
|
|
25022
25042
|
"isSelected",
|
|
25023
|
-
"onSelect"
|
|
25043
|
+
"onSelect",
|
|
25044
|
+
"onHover"
|
|
25024
25045
|
]);
|
|
25025
25046
|
const {
|
|
25026
25047
|
attributes,
|
|
@@ -25039,7 +25060,7 @@ function SortableTreeItem(_g) {
|
|
|
25039
25060
|
if (!activeItem)
|
|
25040
25061
|
return false;
|
|
25041
25062
|
return !allowDrop(activeItem, item2);
|
|
25042
|
-
}, [activeItem, item2]);
|
|
25063
|
+
}, [activeItem, allowDrop, item2]);
|
|
25043
25064
|
const moveable = useMemo$1(() => {
|
|
25044
25065
|
return allowMove(item2);
|
|
25045
25066
|
}, [allowMove, item2]);
|
|
@@ -25057,19 +25078,26 @@ function SortableTreeItem(_g) {
|
|
|
25057
25078
|
transform: CSS.Translate.toString(transform),
|
|
25058
25079
|
transition
|
|
25059
25080
|
};
|
|
25060
|
-
const setRef = useCallback$1(
|
|
25061
|
-
|
|
25062
|
-
|
|
25063
|
-
|
|
25081
|
+
const setRef = useCallback$1(
|
|
25082
|
+
(node) => {
|
|
25083
|
+
setNodeRef(node);
|
|
25084
|
+
setDraggableNodeRef(node);
|
|
25085
|
+
},
|
|
25086
|
+
[setDraggableNodeRef, setNodeRef]
|
|
25087
|
+
);
|
|
25064
25088
|
const handleSelect = useCallback$1(() => {
|
|
25065
25089
|
onSelect(item2);
|
|
25066
|
-
}, [item2]);
|
|
25090
|
+
}, [item2, onSelect]);
|
|
25091
|
+
const handleHover = useCallback$1(() => {
|
|
25092
|
+
onHover(item2);
|
|
25093
|
+
}, [item2, onHover]);
|
|
25067
25094
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
|
|
25068
25095
|
TreeItem,
|
|
25069
25096
|
__spreadValues({
|
|
25070
25097
|
ref: setRef,
|
|
25071
25098
|
wrapperRef: setDroppableNodeRef,
|
|
25072
25099
|
onSelect: handleSelect,
|
|
25100
|
+
onHover: handleHover,
|
|
25073
25101
|
style: style2,
|
|
25074
25102
|
depth,
|
|
25075
25103
|
ghost: isDragging,
|
|
@@ -25194,6 +25222,7 @@ function SortableTree(_i) {
|
|
|
25194
25222
|
id,
|
|
25195
25223
|
item: props,
|
|
25196
25224
|
onSelect: rest.onSelect,
|
|
25225
|
+
onHover: rest.onHover,
|
|
25197
25226
|
renderTitle: rest.renderTitle,
|
|
25198
25227
|
depth: id === activeId && projected ? projected.depth : depth,
|
|
25199
25228
|
activeItem,
|
|
@@ -25219,6 +25248,7 @@ function SortableTree(_i) {
|
|
|
25219
25248
|
SortableTreeItem,
|
|
25220
25249
|
{
|
|
25221
25250
|
onSelect: rest.onSelect,
|
|
25251
|
+
onHover: rest.onHover,
|
|
25222
25252
|
isSelected: rest.isSelected,
|
|
25223
25253
|
allowMove: rest.allowMove,
|
|
25224
25254
|
allowRemove: rest.allowRemove,
|
|
@@ -25289,8 +25319,11 @@ const BlockLayer = () => {
|
|
|
25289
25319
|
const { values: values2, inited } = useEditorContext();
|
|
25290
25320
|
const editor = useSlate();
|
|
25291
25321
|
const pageElement = values2.content;
|
|
25292
|
-
const { selectedNodePath, setSelectedNodePath } = useEditorState();
|
|
25322
|
+
const { selectedNodePath, setSelectedNodePath, setHoverNodePath } = useEditorState();
|
|
25293
25323
|
const { deleteBlock } = useElementInteract();
|
|
25324
|
+
const { layerConfig } = useEditorProps();
|
|
25325
|
+
const scrollWhenSelect = layerConfig == null ? void 0 : layerConfig.scrollWhenSelect;
|
|
25326
|
+
const scrollWhenHover = layerConfig == null ? void 0 : layerConfig.scrollWhenHover;
|
|
25294
25327
|
const [items, setItems] = useState([]);
|
|
25295
25328
|
useEffect(() => {
|
|
25296
25329
|
const loop2 = (element, idx) => {
|
|
@@ -25345,13 +25378,10 @@ const BlockLayer = () => {
|
|
|
25345
25378
|
},
|
|
25346
25379
|
[editor]
|
|
25347
25380
|
);
|
|
25348
|
-
const allowRemove = useCallback$1(
|
|
25349
|
-
(item2)
|
|
25350
|
-
|
|
25351
|
-
|
|
25352
|
-
},
|
|
25353
|
-
[editor]
|
|
25354
|
-
);
|
|
25381
|
+
const allowRemove = useCallback$1((item2) => {
|
|
25382
|
+
const isUnsetElement = NodeUtils.isUnsetElement(item2.data);
|
|
25383
|
+
return !isUnsetElement;
|
|
25384
|
+
}, []);
|
|
25355
25385
|
const isSelected = useCallback$1(
|
|
25356
25386
|
(item2) => {
|
|
25357
25387
|
const currentPath = ReactEditor.findPath(editor, item2.data);
|
|
@@ -25366,8 +25396,37 @@ const BlockLayer = () => {
|
|
|
25366
25396
|
(item2) => {
|
|
25367
25397
|
const currentPath = ReactEditor.findPath(editor, item2.data);
|
|
25368
25398
|
setSelectedNodePath(currentPath);
|
|
25399
|
+
if (scrollWhenSelect) {
|
|
25400
|
+
setTimeout(() => {
|
|
25401
|
+
const node = ReactEditor.toDOMNode(editor, item2.data);
|
|
25402
|
+
if (node) {
|
|
25403
|
+
node.scrollIntoView({
|
|
25404
|
+
block: "center",
|
|
25405
|
+
behavior: "smooth",
|
|
25406
|
+
inline: "center"
|
|
25407
|
+
});
|
|
25408
|
+
}
|
|
25409
|
+
}, 200);
|
|
25410
|
+
}
|
|
25369
25411
|
},
|
|
25370
|
-
[editor,
|
|
25412
|
+
[editor, scrollWhenSelect, setSelectedNodePath]
|
|
25413
|
+
);
|
|
25414
|
+
const onHover = useMemo$1(
|
|
25415
|
+
() => debounce$2((item2) => {
|
|
25416
|
+
const currentPath = ReactEditor.findPath(editor, item2.data);
|
|
25417
|
+
setHoverNodePath(currentPath);
|
|
25418
|
+
if (scrollWhenHover) {
|
|
25419
|
+
const node = ReactEditor.toDOMNode(editor, item2.data);
|
|
25420
|
+
if (node) {
|
|
25421
|
+
node.scrollIntoView({
|
|
25422
|
+
block: "center",
|
|
25423
|
+
behavior: "smooth",
|
|
25424
|
+
inline: "center"
|
|
25425
|
+
});
|
|
25426
|
+
}
|
|
25427
|
+
}
|
|
25428
|
+
}, 500),
|
|
25429
|
+
[editor, scrollWhenHover, setHoverNodePath]
|
|
25371
25430
|
);
|
|
25372
25431
|
const handleRemove = useCallback$1(
|
|
25373
25432
|
(item2) => {
|
|
@@ -25389,7 +25448,7 @@ const BlockLayer = () => {
|
|
|
25389
25448
|
);
|
|
25390
25449
|
if (!inited)
|
|
25391
25450
|
return null;
|
|
25392
|
-
return /* @__PURE__ */ React__default.createElement("div",
|
|
25451
|
+
return /* @__PURE__ */ React__default.createElement("div", { onMouseOut: (e) => e.stopPropagation() }, /* @__PURE__ */ React__default.createElement(
|
|
25393
25452
|
SortableTree,
|
|
25394
25453
|
{
|
|
25395
25454
|
collapsible: true,
|
|
@@ -25404,6 +25463,7 @@ const BlockLayer = () => {
|
|
|
25404
25463
|
allowMove,
|
|
25405
25464
|
isSelected,
|
|
25406
25465
|
onSelect,
|
|
25466
|
+
onHover,
|
|
25407
25467
|
removable: true
|
|
25408
25468
|
}
|
|
25409
25469
|
));
|
|
@@ -45512,7 +45572,7 @@ const ElementPlaceholder = ({ element, nodeElement, isSelected, isHover, path: p
|
|
|
45512
45572
|
}
|
|
45513
45573
|
)))) : /* @__PURE__ */ React__default.createElement("div", { className: "wrapper-category-hover" }));
|
|
45514
45574
|
} else if (element.type === ElementType.PLACEHOLDER) {
|
|
45515
|
-
renderContent = /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "element-delete" }, /* @__PURE__ */ React__default.createElement(IconDelete, { onPointerDown })), /* @__PURE__ */ React__default.createElement("div",
|
|
45575
|
+
renderContent = /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "element-delete" }, /* @__PURE__ */ React__default.createElement(IconDelete, { onPointerDown })), /* @__PURE__ */ React__default.createElement("div", { style: { textAlign: "center" } }, t("Drop content here")));
|
|
45516
45576
|
}
|
|
45517
45577
|
const isContentElement = NodeUtils.isContentElement(element);
|
|
45518
45578
|
const isUniversalElement = NodeUtils.isUniversalElement(element);
|
package/lib/typings/components/BlockSideBar/BlockLayer/components/TreeItem/SortableTreeItem.d.ts
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import type { UniqueIdentifier } from "@dnd-kit/core";
|
|
3
3
|
import { Props as TreeItemProps } from "./TreeItem";
|
|
4
4
|
import { TreeItem as ITreeItem } from "../../types";
|
|
5
|
-
interface Props extends Omit<TreeItemProps, "onSelect"> {
|
|
5
|
+
interface Props extends Omit<TreeItemProps, "onSelect" | "onHover"> {
|
|
6
6
|
id: UniqueIdentifier;
|
|
7
7
|
allowDrop: (dragItem: ITreeItem, dropItem: ITreeItem) => boolean;
|
|
8
8
|
allowMove: (item: ITreeItem) => boolean;
|
|
9
9
|
allowRemove: (item: ITreeItem) => boolean;
|
|
10
10
|
isSelected: (item: ITreeItem) => boolean;
|
|
11
11
|
onSelect: (item: ITreeItem) => void;
|
|
12
|
+
onHover: (item: ITreeItem) => void;
|
|
12
13
|
}
|
|
13
|
-
export declare function SortableTreeItem({ id, depth, allowDrop, activeItem, item, allowMove, allowRemove, isSelected, onSelect, ...props }: Props): JSX.Element;
|
|
14
|
+
export declare function SortableTreeItem({ id, depth, allowDrop, activeItem, item, allowMove, allowRemove, isSelected, onSelect, onHover, ...props }: Props): JSX.Element;
|
|
14
15
|
export {};
|
|
@@ -21,5 +21,6 @@ export interface Props extends Omit<HTMLAttributes<HTMLLIElement>, "id"> {
|
|
|
21
21
|
item: ITreeItem;
|
|
22
22
|
renderTitle(item: ITreeItem): React.ReactNode;
|
|
23
23
|
onSelect(): void;
|
|
24
|
+
onHover(): void;
|
|
24
25
|
}
|
|
25
26
|
export declare const TreeItem: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -81,6 +81,10 @@ export interface PluginsCustomEditorTypes {
|
|
|
81
81
|
showSidebar?: boolean;
|
|
82
82
|
showLogic?: boolean;
|
|
83
83
|
showLayer?: boolean;
|
|
84
|
+
layerConfig?: {
|
|
85
|
+
scrollWhenSelect?: boolean;
|
|
86
|
+
scrollWhenHover?: boolean;
|
|
87
|
+
};
|
|
84
88
|
compact?: boolean;
|
|
85
89
|
height: string;
|
|
86
90
|
unsplash?: {
|