easy-email-pro-theme 0.3.2 → 0.5.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 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, useEditorState, useEditorProps, useRefState, isDOMElement, useEditorContext, useEventCallback, validation, CustomEvent, ActiveTabKeys, EmailEditorProvider, EmailEditor, useSelectedNode, useForceUpdate, toggleFormat, TextFormat, IframeComponent, HtmlStringToReactNodes, isFormatActive } from "easy-email-pro-editor";
57
+ import { classnames, useEditorState, useEditorProps, useRefState, isDOMElement, useEditorContext, 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
60
  import React__default, { useRef, useCallback as useCallback$1, useEffect, useMemo as useMemo$1, useState, forwardRef, memo, Component, PureComponent, useContext, useLayoutEffect, useReducer, Suspense } from "react";
@@ -62,7 +62,7 @@ import { NodeUtils, BlockManager, ElementType, t, EditorCore, ElementCategory, c
62
62
  import { Editor, Transforms, Path, Node as Node$1, createEditor, Text as Text$1, Range, Element as Element$1, Point } from "slate";
63
63
  import ReactDOM, { unstable_batchedUpdates, createPortal } from "react-dom";
64
64
  import { cloneDeep, debounce as debounce$2, get, isEqual as isEqual$3, set, omit as omit$2, merge as merge$1, isUndefined as isUndefined$1, isString as isString$1, isNumber as isNumber$1, uniqueId, upperFirst, flatMap, sum, camelCase } from "lodash";
65
- import { Form, Modal, Input, Collapse, Space, Grid, Empty, Card, Button as Button$1, Radio, Popover, Message, Spin, Select as Select$1, Drawer, Divider as Divider$1, Switch, Tabs, InputNumber, Tooltip, Tag, Link as Link$1, List, Alert, PageHeader, Popconfirm, Typography as Typography$1, Skeleton, Layout as Layout$2 } from "@arco-design/web-react";
65
+ import { Form, Modal, Input, Collapse, Space, Grid, Empty, Card, Button as Button$1, Radio, Popover, Message, Spin, Select as Select$1, Drawer, Divider as Divider$1, Switch, Tabs, Slider, Typography as Typography$1, InputNumber, Tooltip, Tag, Link as Link$1, List, Alert, Popconfirm, PageHeader, Skeleton, Layout as Layout$2 } from "@arco-design/web-react";
66
66
  import { IconDelete, IconClose, IconPlus, IconCopy, IconDragArrow, IconLock, IconUnlock, IconQuestionCircle, IconLink, IconEdit, IconLeft, IconUndo, IconRedo, IconMinus, IconEye, IconSubscribeAdd, IconCheckCircleFill } from "@arco-design/web-react/icon";
67
67
  import mjml from "mjml-browser";
68
68
  import { HistoryEditor } from "slate-history";
@@ -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[data-slate-hover="true"] {\r\n z-index: 2;\r\n}\r\n\r\n[data-slate-focus="true"] {\r\n z-index: 3;\r\n}\r\n\r\n[data-slate-selected="true"] {\r\n z-index: 3;\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\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n}\r\n\r\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\r\n\r\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\r\n\r\n[data-slate-dragover=true] {\n z-index: 2;\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[data-slate-dragging=true] .element-tools-container {\n opacity: 0;\n}\r\n\r\n[data-slate-dragover-direction=top][data-slate-dragover=true]::after {\n top: 0px;\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[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[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[data-slate-dragover-direction=middle][data-slate-dragover=true] [data-slate-type=placeholder] {\n outline: none;\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[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[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n}\r\n\r\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\r\n\r\n[data-slate-universal-editing=true] {\n z-index: 2;\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[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[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[data-slate-hover="true"] {\r\n z-index: 2;\r\n}\r\n\r\n[data-slate-focus="true"] {\r\n z-index: 3;\r\n}\r\n\r\n[data-slate-selected="true"] {\r\n z-index: 3;\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\nbody .element-tools-container {\n outline: 2px solid var(--hover-color);\n z-index: 3;\n}\r\n\r\nbody .element-tools-container .element-tools {\n color: #fff;\n background-color: var(--hover-color);\n}\r\n\r\nbody .element-tools-container .element-drag-button {\n background-color: var(--hover-color);\n}\r\n\r\n[data-slate-dragover=true] {\n z-index: 2;\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[data-slate-dragging=true] .element-tools-container {\n opacity: 0;\n}\r\n\r\n[data-slate-dragover-direction=top][data-slate-dragover=true]::after {\n top: 0px;\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[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[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[data-slate-dragover-direction=middle][data-slate-dragover=true] [data-slate-type=placeholder] {\n outline: none;\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[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[data-slate-type=placeholder] .element-delete:hover {\n background-color: rgb(180, 187, 195);\n}\r\n\r\n[data-slate-type=placeholder] .element-delete svg {\n width: 20px;\n height: 20px;\n}\r\n\r\n[data-slate-universal-editing=true] {\n z-index: 2;\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[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[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) => {
@@ -6223,7 +6223,17 @@ const useElementDefault = ({
6223
6223
  };
6224
6224
  const useElementInteract = () => {
6225
6225
  const editor = useSlate();
6226
- const { setSelectedNodePath, setHoverNodePath } = useEditorState();
6226
+ const { setSelectedNodePath, setHoverNodePath, selectedNodePath } = useEditorState();
6227
+ const { selectedNode } = useSelectedNode();
6228
+ const lastSelectedNode = useRef(null);
6229
+ const lastSelectedNodePath = useRef(null);
6230
+ if (!isEqual$3(lastSelectedNodePath.current, selectedNodePath)) {
6231
+ lastSelectedNode.current = null;
6232
+ }
6233
+ lastSelectedNodePath.current = selectedNodePath;
6234
+ if (!lastSelectedNode.current && selectedNode) {
6235
+ lastSelectedNode.current = cloneDeep(selectedNode);
6236
+ }
6227
6237
  const copyBlock = useCallback$1(
6228
6238
  (path2) => {
6229
6239
  const block = Node$1.get(editor, path2);
@@ -6288,10 +6298,20 @@ const useElementInteract = () => {
6288
6298
  setSelectedNodePath(null);
6289
6299
  Transforms.deselect(editor);
6290
6300
  }, [editor, setSelectedNodePath]);
6301
+ const resetSelectedNode = useEventCallback(() => {
6302
+ if (!selectedNodePath || !lastSelectedNode.current)
6303
+ return;
6304
+ editor.replaceNode({
6305
+ path: selectedNodePath,
6306
+ node: lastSelectedNode.current
6307
+ });
6308
+ });
6291
6309
  return {
6292
6310
  copyBlock,
6293
6311
  deleteBlock,
6294
- clearCanvas
6312
+ clearCanvas,
6313
+ isChanged: !isEqual$3(lastSelectedNode.current, selectedNode),
6314
+ resetSelectedNode
6295
6315
  };
6296
6316
  };
6297
6317
  const defaultFontList = [
@@ -6565,7 +6585,7 @@ function BlockItem({
6565
6585
  });
6566
6586
  if (universalElementEditing && !NodeUtils.isContentElement(element))
6567
6587
  return null;
6568
- return /* @__PURE__ */ React__default.createElement("div", __spreadValues({ className: "block-list-grid-item" }, dragHandle2), /* @__PURE__ */ React__default.createElement("div", { className: "blockItemContainer" }, /* @__PURE__ */ React__default.createElement("div", null, icon), /* @__PURE__ */ React__default.createElement("div", { style: { width: "100%" } }, title || (block == null ? void 0 : block.name))));
6588
+ return /* @__PURE__ */ React__default.createElement("div", __spreadValues({ className: "block-list-grid-item" }, dragHandle2), /* @__PURE__ */ React__default.createElement("div", { className: "blockItemContainer" }, /* @__PURE__ */ React__default.createElement("div", null, icon), /* @__PURE__ */ React__default.createElement("div", { style: { width: "100%" } }, !isUndefined$1(title) ? title : block == null ? void 0 : block.name)));
6569
6589
  }
6570
6590
  const index$9 = "";
6571
6591
  const LayoutItem = ({
@@ -21592,6 +21612,14 @@ const DefaultRichTextField = enhancer(RichtextBar);
21592
21612
  const RichTextField = (props) => {
21593
21613
  return /* @__PURE__ */ React__default.createElement(DefaultRichTextField, __spreadProps(__spreadValues({}, props), { formItem: { noStyle: true } }));
21594
21614
  };
21615
+ const DefaultSlider = (props) => {
21616
+ const _a2 = props, { showLimit } = _a2, rest = __objRest(_a2, ["showLimit"]);
21617
+ if (!showLimit) {
21618
+ return /* @__PURE__ */ React__default.createElement(Slider, __spreadValues({}, rest));
21619
+ }
21620
+ return /* @__PURE__ */ React__default.createElement("div", { style: { display: "flex", flex: "1", alignItems: "center" } }, showLimit && rest.min && /* @__PURE__ */ React__default.createElement(Typography$1.Text, null, rest.min), /* @__PURE__ */ React__default.createElement("div", { style: { flex: "1", marginLeft: 10, marginRight: 10 } }, /* @__PURE__ */ React__default.createElement(Slider, __spreadValues({}, rest))), showLimit && rest.max && /* @__PURE__ */ React__default.createElement(Typography$1.Text, null, rest.max));
21621
+ };
21622
+ const SliderField = enhancer(DefaultSlider);
21595
21623
  const TextField = enhancer(Input);
21596
21624
  enhancer(Input.Search);
21597
21625
  const TextAreaField = enhancer(Input.TextArea);
@@ -23554,6 +23582,7 @@ const defaultAttributeFields = {
23554
23582
  PixelField,
23555
23583
  SelectField,
23556
23584
  ColorPickerField,
23585
+ SliderField,
23557
23586
  SwitchField,
23558
23587
  ButtonGroupField,
23559
23588
  ImageUploaderField,
@@ -25573,7 +25602,7 @@ const ConfigurationPanel = ({
25573
25602
  lock
25574
25603
  } = useEditorState();
25575
25604
  const { quantityLimitCheck } = useEditorProps();
25576
- const { copyBlock, deleteBlock } = useElementInteract();
25605
+ const { copyBlock, deleteBlock, isChanged, resetSelectedNode } = useElementInteract();
25577
25606
  const onCopy = useEventCallback((path2) => {
25578
25607
  if (quantityLimitCheck && !quantityLimitCheck({
25579
25608
  element: Node$1.get(editor, path2),
@@ -25647,25 +25676,53 @@ const ConfigurationPanel = ({
25647
25676
  {
25648
25677
  height: `calc(${height} - 60px)`
25649
25678
  },
25650
- lock && /* @__PURE__ */ React__default.createElement(
25679
+ isChanged && lock && /* @__PURE__ */ React__default.createElement(
25651
25680
  Alert,
25652
25681
  {
25653
25682
  type: "warning",
25654
- content: /* @__PURE__ */ React__default.createElement("div", null, t(`Content has been modified. Please save before leaving.`))
25683
+ content: /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("span", null, t(
25684
+ `Content has been modified. Please save before leaving.`
25685
+ )), " ", /* @__PURE__ */ React__default.createElement(
25686
+ Popconfirm,
25687
+ {
25688
+ focusLock: true,
25689
+ title: t("Do you want to discard?"),
25690
+ okText: t("Discard"),
25691
+ cancelText: t("Cancel"),
25692
+ style: { zIndex: 9999 },
25693
+ getPopupContainer: () => document.body,
25694
+ okButtonProps: {
25695
+ status: "danger"
25696
+ },
25697
+ onOk: resetSelectedNode
25698
+ },
25699
+ /* @__PURE__ */ React__default.createElement(
25700
+ "span",
25701
+ {
25702
+ style: {
25703
+ color: "rgb(var(--danger-6))",
25704
+ cursor: "pointer"
25705
+ }
25706
+ },
25707
+ t("Discard")
25708
+ )
25709
+ ))
25655
25710
  }
25656
25711
  ),
25657
25712
  NodeUtils.isUniversalElement(element) && !universalElementEditing ? /* @__PURE__ */ React__default.createElement(UniversalElementPanel, null) : /* @__PURE__ */ React__default.createElement(AttributePanel, null)
25658
25713
  ));
25659
25714
  }, [
25660
- deleteBlock,
25661
25715
  element,
25662
- height,
25663
- onClose,
25664
- onCopy,
25665
25716
  selectedNodePath,
25666
- universalElementEditing,
25667
25717
  universalElementPath,
25668
- lock
25718
+ lock,
25719
+ onClose,
25720
+ height,
25721
+ isChanged,
25722
+ resetSelectedNode,
25723
+ universalElementEditing,
25724
+ onCopy,
25725
+ deleteBlock
25669
25726
  ]);
25670
25727
  };
25671
25728
  const index$3 = "";
@@ -4,6 +4,6 @@ import "./index.scss";
4
4
  export declare function BlockItem({ type, payload, title, icon, }: {
5
5
  type: Element["type"];
6
6
  payload?: Partial<Element>;
7
- title?: string;
7
+ title?: string | null;
8
8
  icon?: React.ReactNode;
9
9
  }): JSX.Element | null;
@@ -39,6 +39,11 @@ export declare const defaultAttributeFields: {
39
39
  PixelField: typeof PixelField;
40
40
  SelectField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<import("../../../Form/Select").SelectProps, "onChange" | "value">) => JSX.Element;
41
41
  ColorPickerField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<import("../../../Form/ColorPicker").ColorPickerProps, "onChange" | "value">) => JSX.Element;
42
+ SliderField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<import("@arco-design/web-react").SliderProps & import("react").RefAttributes<unknown> & {
43
+ value: boolean;
44
+ onChange: (val: boolean) => void;
45
+ showLimit?: boolean | undefined;
46
+ }, "onChange" | "value">) => JSX.Element;
42
47
  SwitchField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<import("@arco-design/web-react").SwitchProps & import("react").RefAttributes<unknown>, "onChange" | "value">) => JSX.Element;
43
48
  ButtonGroupField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<Partial<{
44
49
  htmlType?: "button" | "reset" | "submit" | undefined;
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export declare const SliderField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").SliderProps & React.RefAttributes<unknown> & {
3
+ value: boolean;
4
+ onChange: (val: boolean) => void;
5
+ showLimit?: boolean | undefined;
6
+ }, "onChange" | "value">) => JSX.Element;
@@ -10,6 +10,7 @@ import { WatchField } from "./WatchField";
10
10
  import { EditPanelTabsField } from "./EditPanelTabsField";
11
11
  import { SyncChildrenField } from "./SyncChildrenField";
12
12
  import { RichTextField } from "./RichTextField";
13
+ import { SliderField } from "./SliderField";
13
14
  export declare const TextField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").InputProps & import("react").RefAttributes<import("@arco-design/web-react/es/Input/interface").RefInputType> & import("@arco-design/web-react/es/_util/hooks/useMergeProps").MergePropsOptions, "onChange" | "value">) => JSX.Element;
14
15
  export declare const InputTagField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").InputTagProps<any> & import("react").RefAttributes<{
15
16
  focus: () => void;
@@ -18,9 +19,8 @@ export declare const InputTagField: (props: import("./enhancer").EnhancerProps &
18
19
  export declare const SearchField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react/es/Input").InputSearchProps & import("react").RefAttributes<import("@arco-design/web-react/es/Input/interface").RefInputType>, "onChange" | "value">) => JSX.Element;
19
20
  export declare const TextAreaField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").TextAreaProps & import("react").RefAttributes<import("@arco-design/web-react/es/Input/textarea").RefTextAreaType>, "onChange" | "value">) => JSX.Element;
20
21
  export declare const NumberField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").InputNumberProps & import("react").RefAttributes<import("@arco-design/web-react/es/Input/interface").RefInputType>, "onChange" | "value">) => JSX.Element;
21
- export declare const SliderField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").SliderProps & import("react").RefAttributes<unknown>, "onChange" | "value">) => JSX.Element;
22
22
  export declare const SelectField: (props: import("./enhancer").EnhancerProps & Omit<import("./Select").SelectProps, "onChange" | "value">) => JSX.Element;
23
23
  export declare const TreeSelectField: (props: import("./enhancer").EnhancerProps & Omit<import("@arco-design/web-react").TreeSelectProps & {
24
24
  children?: import("react").ReactNode;
25
25
  } & import("react").RefAttributes<import("@arco-design/web-react/es/TreeSelect").RefTreeSelectType>, "onChange" | "value">) => JSX.Element;
26
- export { enhancer, SwitchField, ButtonField, ButtonGroupField, WatchField, SyncChildrenField, ColorPickerField, ImageUploaderField, EditPanelListField, EditPanelTabsField, RichTextField, };
26
+ export { enhancer, SwitchField, ButtonField, ButtonGroupField, WatchField, SyncChildrenField, ColorPickerField, ImageUploaderField, EditPanelListField, EditPanelTabsField, RichTextField, SliderField, };
@@ -3,4 +3,6 @@ export declare const useElementInteract: () => {
3
3
  copyBlock: (path: Path) => void;
4
4
  deleteBlock: (path: Path) => void;
5
5
  clearCanvas: () => void;
6
+ isChanged: boolean;
7
+ resetSelectedNode: () => void;
6
8
  };
@@ -20,7 +20,7 @@ export interface CategoryGridItem<T extends keyof ElementMap = any> {
20
20
  blocks: Array<{
21
21
  type: Element["type"];
22
22
  payload?: Partial<ElementMap[T]>;
23
- title?: string | undefined;
23
+ title?: string | undefined | null;
24
24
  icon?: React.ReactNode;
25
25
  }>;
26
26
  displayType?: "grid";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-email-pro-theme",
3
- "version": "0.3.2",
3
+ "version": "0.5.0",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib"