@ivanholiak/easy-email-extensions 4.16.8 → 4.16.10
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/index2.js +47 -2
- package/lib/index2.js.map +1 -1
- package/package.json +1 -1
package/lib/index2.js
CHANGED
|
@@ -52,7 +52,7 @@ var __async = (__this, __arguments, generator) => {
|
|
|
52
52
|
};
|
|
53
53
|
import * as React$1 from "react";
|
|
54
54
|
import React__default, { createContext, useContext, isValidElement, Children, cloneElement, Component, useRef, useMemo, memo, forwardRef, createRef, useState, useImperativeHandle, useEffect, useLayoutEffect, useCallback, PureComponent, useReducer, Fragment, Suspense } from "react";
|
|
55
|
-
import { IconFont, useEditorProps, Stack as Stack$4, useRefState, getShadowRoot, DATA_CONTENT_EDITABLE_TYPE, ContentEditableType, TextStyle, useEditorContext, useBlock, useFocusIdx, DATA_CONTENT_EDITABLE_IDX, useFocusBlockLayout,
|
|
55
|
+
import { IconFont, useEditorProps, Stack as Stack$4, useRefState, getShadowRoot, DATA_CONTENT_EDITABLE_TYPE, ContentEditableType, MergeTagBadge, TextStyle, useEditorContext, useBlock, useFocusIdx, DATA_CONTENT_EDITABLE_IDX, useFocusBlockLayout, AvailableTools, FIXED_CONTAINER_ID, getPluginElement, RICH_TEXT_BAR_ID, CONTENT_EDITABLE_CLASS_NAME, getEditorRoot, scrollBlockEleIntoView, useHoverIdx, useDataTransfer, getBlockNodeByChildEle, getDirectionPosition, DATA_ATTRIBUTE_DROP_CONTAINER, BlockAvatarWrapper, isTextBlock, getBlockNodeByIdx, useLazyState, useActiveTab, ActiveTabKeys } from "@ivanholiak/easy-email-editor";
|
|
56
56
|
import { BasicType, ImageManager, EMAIL_BLOCK_CLASS_NAME, BlockManager, createBlockDataByType, AdvancedType, Operator, OperatorSymbol, isAdvancedBlock, getParentByIdx, getParentIdx, getIndexByIdx, getSiblingIdx, getNodeIdxFromClassName, getNodeIdxClassName, getPageIdx, getChildIdx, JsonToMjml, getNodeTypeFromClassName } from "@ivanholiak/easy-email-core";
|
|
57
57
|
import ReactDOM$1, { createPortal } from "react-dom";
|
|
58
58
|
import { Field, useForm as useForm$1, useField, Form as Form$3, version as version$2, useFormState as useFormState$2 } from "react-final-form";
|
|
@@ -35980,6 +35980,7 @@ function InlineText({ idx, onChange, children }) {
|
|
|
35980
35980
|
const {
|
|
35981
35981
|
mutators: { setFieldTouched }
|
|
35982
35982
|
} = useForm$1();
|
|
35983
|
+
const { enabledMergeTagsBadge, mergeTagGenerate } = useEditorProps();
|
|
35983
35984
|
useField(idx);
|
|
35984
35985
|
useEffect(() => {
|
|
35985
35986
|
const shadowRoot = getShadowRoot();
|
|
@@ -36008,13 +36009,57 @@ function InlineText({ idx, onChange, children }) {
|
|
|
36008
36009
|
}
|
|
36009
36010
|
}
|
|
36010
36011
|
};
|
|
36012
|
+
const onDrop = (e2) => {
|
|
36013
|
+
var _a2, _b2, _c;
|
|
36014
|
+
const target2 = e2.target;
|
|
36015
|
+
if (!target2 || !target2.getAttribute("contenteditable"))
|
|
36016
|
+
return;
|
|
36017
|
+
const mergeTagText = ((_a2 = e2.dataTransfer) == null ? void 0 : _a2.getData("text/merge-tag")) || ((_b2 = e2.dataTransfer) == null ? void 0 : _b2.getData("text/plain"));
|
|
36018
|
+
if (mergeTagText && (mergeTagText.startsWith("{{") || mergeTagText.includes("{{"))) {
|
|
36019
|
+
e2.preventDefault();
|
|
36020
|
+
e2.stopPropagation();
|
|
36021
|
+
const contentEditableType = target2.getAttribute(DATA_CONTENT_EDITABLE_TYPE);
|
|
36022
|
+
let insertText = mergeTagText;
|
|
36023
|
+
if (enabledMergeTagsBadge && mergeTagGenerate) {
|
|
36024
|
+
const match = mergeTagText.match(/{{([^}]+)}}/);
|
|
36025
|
+
if (match && match[1]) {
|
|
36026
|
+
const mergeTagKey = match[1].trim();
|
|
36027
|
+
const generatedTag = mergeTagGenerate(mergeTagKey);
|
|
36028
|
+
insertText = MergeTagBadge.transform(generatedTag);
|
|
36029
|
+
} else {
|
|
36030
|
+
insertText = MergeTagBadge.transform(mergeTagText);
|
|
36031
|
+
}
|
|
36032
|
+
}
|
|
36033
|
+
document.execCommand("insertHTML", false, insertText);
|
|
36034
|
+
if (contentEditableType === ContentEditableType.RichText) {
|
|
36035
|
+
onChange(target2.innerHTML || "");
|
|
36036
|
+
} else if (contentEditableType === ContentEditableType.Text) {
|
|
36037
|
+
onChange(((_c = target2.textContent) == null ? void 0 : _c.trim()) || "");
|
|
36038
|
+
}
|
|
36039
|
+
}
|
|
36040
|
+
};
|
|
36041
|
+
const onDragOver = (e2) => {
|
|
36042
|
+
var _a2, _b2;
|
|
36043
|
+
const target2 = e2.target;
|
|
36044
|
+
if (target2 && target2.getAttribute("contenteditable")) {
|
|
36045
|
+
const mergeTagText = ((_a2 = e2.dataTransfer) == null ? void 0 : _a2.getData("text/merge-tag")) || ((_b2 = e2.dataTransfer) == null ? void 0 : _b2.getData("text/plain"));
|
|
36046
|
+
if (mergeTagText && (mergeTagText.startsWith("{{") || mergeTagText.includes("{{"))) {
|
|
36047
|
+
e2.preventDefault();
|
|
36048
|
+
e2.dataTransfer.dropEffect = "copy";
|
|
36049
|
+
}
|
|
36050
|
+
}
|
|
36051
|
+
};
|
|
36011
36052
|
shadowRoot.addEventListener("paste", onPaste, true);
|
|
36012
36053
|
shadowRoot.addEventListener("input", onInput);
|
|
36054
|
+
shadowRoot.addEventListener("drop", onDrop, true);
|
|
36055
|
+
shadowRoot.addEventListener("dragover", onDragOver, true);
|
|
36013
36056
|
return () => {
|
|
36014
36057
|
shadowRoot.removeEventListener("paste", onPaste, true);
|
|
36015
36058
|
shadowRoot.removeEventListener("input", onInput);
|
|
36059
|
+
shadowRoot.removeEventListener("drop", onDrop, true);
|
|
36060
|
+
shadowRoot.removeEventListener("dragover", onDragOver, true);
|
|
36016
36061
|
};
|
|
36017
|
-
}, [onChange, setFieldTouched]);
|
|
36062
|
+
}, [onChange, setFieldTouched, enabledMergeTagsBadge, mergeTagGenerate]);
|
|
36018
36063
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children);
|
|
36019
36064
|
}
|
|
36020
36065
|
function AutoComplete(props) {
|