easy-email-pro-theme 1.51.0 → 1.51.2

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
@@ -677,7 +677,7 @@ const withTheme$1 = (editor) => {
677
677
  };
678
678
  return editor;
679
679
  };
680
- const styleText$g = "[data-slate-hide-cursor=true][data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true][data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] .element-tools-container {\n opacity: 0;\n}\n\n.element-tools-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px solid transparent;\n outline-offset: -2px;\n pointer-events: none;\n}\n\n.element-tools {\n pointer-events: auto;\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(0, -100%);\n display: flex;\n align-items: center;\n font-size: 14px !important;\n height: 22px;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-tools .element-tools-item {\n font-size: 12px !important;\n line-height: 20px;\n width: 25px;\n display: flex;\n pointer-events: auto;\n cursor: pointer;\n justify-content: center;\n}\n\n.element-tools-move-handle {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(50%, -50%);\n width: 35px;\n height: 35px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: grab;\n}\n\n.element-tools-bottom {\n top: 100%;\n transform: translate(0, 0);\n}\n\n.element-drag-button {\n pointer-events: auto;\n position: absolute;\n z-index: 4;\n top: 50%;\n right: 0%;\n color: #fff;\n color: rgb(255, 255, 255);\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(50%, -50%);\n border-radius: 50%;\n cursor: grab;\n}\n.element-drag-button .iconfont {\n cursor: grab !important;\n}";
680
+ const styleText$g = "[data-slate-hide-cursor=true][data-slate-hover=true] {\n cursor: none;\n}\n[data-slate-hide-cursor=true][data-slate-hover=true]:hover {\n outline: none !important;\n}\n\n[data-slate-hide-cursor=true] [data-slate-hover=true] .element-tools-container {\n opacity: 0;\n}\n\n.element-tools-container {\n position: absolute;\n font-size: 14px;\n left: 0px;\n top: 0px;\n width: 100%;\n height: 100%;\n outline-offset: -2px;\n outline: 2px solid transparent;\n outline-offset: -2px;\n pointer-events: none;\n}\n\n.element-tools {\n pointer-events: auto;\n position: absolute;\n top: 0;\n left: 0;\n transform: translate(0, -100%);\n display: flex;\n flex-wrap: nowrap;\n white-space: nowrap;\n align-items: center;\n font-size: 14px !important;\n height: 22px;\n padding: 1px 5px;\n line-height: 22px;\n font-weight: normal !important;\n font-style: normal !important;\n}\n.element-tools .element-tools-item {\n font-size: 12px !important;\n line-height: 20px;\n width: 25px;\n display: flex;\n pointer-events: auto;\n cursor: pointer;\n justify-content: center;\n}\n\n.element-tools-move-handle {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translate(50%, -50%);\n width: 35px;\n height: 35px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: grab;\n}\n\n.element-tools-bottom {\n top: 100%;\n transform: translate(0, 0);\n}\n\n.element-drag-button {\n pointer-events: auto;\n position: absolute;\n z-index: 4;\n top: 50%;\n right: 0%;\n color: #fff;\n color: rgb(255, 255, 255);\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(50%, -50%);\n border-radius: 50%;\n cursor: grab;\n}\n.element-drag-button .iconfont {\n cursor: grab !important;\n}";
681
681
  function IconFont(props) {
682
682
  var _a;
683
683
  return /* @__PURE__ */ React__default.createElement(
@@ -2487,7 +2487,7 @@ function BlockItem({
2487
2487
  ));
2488
2488
  }
2489
2489
  const index$d = "";
2490
- const LayoutItem = ({
2490
+ const SectionLayout = ({
2491
2491
  columns,
2492
2492
  title
2493
2493
  }) => {
@@ -2543,6 +2543,99 @@ const ColumnElement = ({ column: column2 }) => {
2543
2543
  );
2544
2544
  }))));
2545
2545
  };
2546
+ const WrapperLayout = ({
2547
+ variants,
2548
+ title
2549
+ }) => {
2550
+ return /* @__PURE__ */ React__default.createElement(Collapse.Item, { contentStyle: { padding: 10 }, header: title, name: title }, /* @__PURE__ */ React__default.createElement("div", { className: "LayoutWrapperItemList" }, variants.map((block, index2) => {
2551
+ return /* @__PURE__ */ React__default.createElement("div", { key: index2 }, /* @__PURE__ */ React__default.createElement(
2552
+ "div",
2553
+ {
2554
+ key: index2,
2555
+ style: {
2556
+ marginBottom: index2 === variants.length - 1 ? 0 : 10
2557
+ }
2558
+ },
2559
+ /* @__PURE__ */ React__default.createElement(SectionElement, { sections: block.sections })
2560
+ ));
2561
+ })));
2562
+ };
2563
+ const SectionElement = ({
2564
+ sections
2565
+ }) => {
2566
+ const isMultipleSections = sections.length > 1;
2567
+ const element = useMemo(() => {
2568
+ if (isMultipleSections) {
2569
+ const wrapperBlock = BlockManager.getBlockByType(
2570
+ ElementType.STANDARD_WRAPPER
2571
+ );
2572
+ return wrapperBlock.create({
2573
+ attributes: {
2574
+ "background-repeat": "no-repeat"
2575
+ },
2576
+ children: sections.map((section) => ({
2577
+ type: StandardType.STANDARD_SECTION,
2578
+ attributes: {},
2579
+ data: {},
2580
+ children: section.columns.map((column2) => ({
2581
+ type: StandardType.STANDARD_COLUMN,
2582
+ attributes: {
2583
+ width: column2
2584
+ },
2585
+ data: {},
2586
+ children: []
2587
+ }))
2588
+ }))
2589
+ });
2590
+ } else {
2591
+ const sectionBlock = BlockManager.getBlockByType(
2592
+ ElementType.STANDARD_SECTION
2593
+ );
2594
+ return sectionBlock.create({
2595
+ attributes: {},
2596
+ data: {},
2597
+ children: sections[0].columns.map((column2) => ({
2598
+ type: StandardType.STANDARD_COLUMN,
2599
+ attributes: {
2600
+ width: column2
2601
+ },
2602
+ data: {},
2603
+ children: []
2604
+ }))
2605
+ });
2606
+ }
2607
+ }, [isMultipleSections, sections]);
2608
+ const { dragHandle } = useDragging({
2609
+ element,
2610
+ nodeElement: null,
2611
+ action: "copy",
2612
+ cloneGhost: false
2613
+ });
2614
+ return /* @__PURE__ */ React__default.createElement("div", __spreadValues({ className: classnames$1("LayoutWrapperItem") }, dragHandle), sections.map((section, index2) => {
2615
+ return /* @__PURE__ */ React__default.createElement(
2616
+ "div",
2617
+ {
2618
+ key: index2,
2619
+ style: { paddingTop: isMultipleSections && index2 === 0 ? 10 : 0 }
2620
+ },
2621
+ isMultipleSections && /* @__PURE__ */ React__default.createElement("div", { className: "LayoutWrapperItemRowTitle" }, "Row ", index2 + 1),
2622
+ /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement("div", { className: "LayoutItemOuter" }, /* @__PURE__ */ React__default.createElement("div", { className: "LayoutItemInner" }, section.columns.map((width, index22) => {
2623
+ return /* @__PURE__ */ React__default.createElement(
2624
+ "div",
2625
+ {
2626
+ className: classnames$1("LayoutItemInnerPart"),
2627
+ key: index22,
2628
+ style: {
2629
+ width,
2630
+ borderRight: index22 === section.columns.length - 1 ? "none" : void 0
2631
+ }
2632
+ },
2633
+ width
2634
+ );
2635
+ }))))
2636
+ );
2637
+ }));
2638
+ };
2546
2639
  const index$c = "";
2547
2640
  const defaultCategories = [
2548
2641
  {
@@ -2739,7 +2832,7 @@ const DefaultBlockList = () => {
2739
2832
  id: "BlockSideBar-BlockList"
2740
2833
  },
2741
2834
  /* @__PURE__ */ React__default.createElement(Collapse, { defaultActiveKey }, categories.map((category2, index2) => {
2742
- var _a;
2835
+ var _a, _b;
2743
2836
  if (category2.displayType === "grid") {
2744
2837
  return /* @__PURE__ */ React__default.createElement(
2745
2838
  Collapse.Item,
@@ -2784,7 +2877,7 @@ const DefaultBlockList = () => {
2784
2877
  defaultActiveKey: [((_a = category2.blocks[0]) == null ? void 0 : _a.title) || ""]
2785
2878
  },
2786
2879
  category2.blocks.map((item2) => /* @__PURE__ */ React__default.createElement(
2787
- LayoutItem,
2880
+ SectionLayout,
2788
2881
  {
2789
2882
  key: item2.title,
2790
2883
  title: item2.title || "",
@@ -2795,6 +2888,39 @@ const DefaultBlockList = () => {
2795
2888
  /* @__PURE__ */ React__default.createElement(Space, { direction: "vertical" }, /* @__PURE__ */ React__default.createElement("div", null))
2796
2889
  );
2797
2890
  }
2891
+ if (category2.displayType === "section" && !universalElementEditing) {
2892
+ if (standaloneElementEditing && initialStandaloneElement && !NodeUtils.isParentCategoryType(
2893
+ ElementType.SECTION,
2894
+ initialStandaloneElement.type
2895
+ )) {
2896
+ return null;
2897
+ }
2898
+ return /* @__PURE__ */ React__default.createElement(
2899
+ Collapse.Item,
2900
+ {
2901
+ key: index2,
2902
+ contentStyle: { padding: "0px 20px" },
2903
+ name: index2.toString(),
2904
+ header: category2.label
2905
+ },
2906
+ /* @__PURE__ */ React__default.createElement(Space, { direction: "vertical" }, /* @__PURE__ */ React__default.createElement("div", null)),
2907
+ /* @__PURE__ */ React__default.createElement(
2908
+ Collapse,
2909
+ {
2910
+ defaultActiveKey: [((_b = category2.blocks[0]) == null ? void 0 : _b.title) || ""]
2911
+ },
2912
+ category2.blocks.map((item2, index22) => /* @__PURE__ */ React__default.createElement(
2913
+ WrapperLayout,
2914
+ {
2915
+ key: index22,
2916
+ title: item2.title || "",
2917
+ variants: item2.variants
2918
+ }
2919
+ ))
2920
+ ),
2921
+ /* @__PURE__ */ React__default.createElement(Space, { direction: "vertical" }, /* @__PURE__ */ React__default.createElement("div", null))
2922
+ );
2923
+ }
2798
2924
  if (category2.displayType === "custom" && !universalElementEditing && !standaloneElementEditing) {
2799
2925
  return /* @__PURE__ */ React__default.createElement(
2800
2926
  Collapse.Item,
@@ -2829,16 +2955,26 @@ const BlocksPanel = () => {
2829
2955
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, !universalElementEditing && universalElementSetting && /* @__PURE__ */ React__default.createElement("div", { style: { padding: 24 } }, /* @__PURE__ */ React__default.createElement(Button$2.Group, { style: { width: "100%" } }, /* @__PURE__ */ React__default.createElement(
2830
2956
  Button$2,
2831
2957
  {
2832
- type: tab === "Default" ? "outline" : void 0,
2833
- style: { width: "50%" },
2958
+ type: "outline",
2959
+ style: {
2960
+ width: "50%",
2961
+ borderColor: tab === "Default" ? void 0 : "#000",
2962
+ color: tab === "Default" ? void 0 : "#000",
2963
+ borderRightColor: tab === "Default" ? void 0 : "transparent"
2964
+ },
2834
2965
  onClick: () => setTab("Default")
2835
2966
  },
2836
2967
  /* @__PURE__ */ React__default.createElement(Space, null, t("Default"))
2837
2968
  ), /* @__PURE__ */ React__default.createElement(
2838
2969
  Button$2,
2839
2970
  {
2840
- type: tab === "Universal" ? "outline" : void 0,
2841
- style: { width: "50%" },
2971
+ type: "outline",
2972
+ style: {
2973
+ width: "50%",
2974
+ borderColor: tab !== "Default" ? void 0 : "#000",
2975
+ color: tab !== "Default" ? void 0 : "#000",
2976
+ borderLeftColor: tab !== "Default" ? void 0 : "transparent"
2977
+ },
2842
2978
  onClick: () => setTab("Universal")
2843
2979
  },
2844
2980
  /* @__PURE__ */ React__default.createElement(Space, null, t("Universal"))
@@ -7919,16 +8055,28 @@ const TabHeader = (props) => {
7919
8055
  /* @__PURE__ */ React__default.createElement("div", { style: { textAlign: "center" } }, /* @__PURE__ */ React__default.createElement(Button$2.Group, null, /* @__PURE__ */ React__default.createElement(
7920
8056
  Button$2,
7921
8057
  {
7922
- style: { paddingLeft: grid, paddingRight: grid },
7923
- type: !isMobileActive ? "outline" : "secondary",
8058
+ style: {
8059
+ paddingLeft: grid,
8060
+ paddingRight: grid,
8061
+ borderColor: !isMobileActive ? void 0 : "#000",
8062
+ color: !isMobileActive ? void 0 : "#000",
8063
+ borderRightColor: !isMobileActive ? void 0 : "transparent"
8064
+ },
8065
+ type: "outline",
7924
8066
  onClick: () => onChangeTab(ActiveTabKeys.DESKTOP)
7925
8067
  },
7926
8068
  /* @__PURE__ */ React__default.createElement(Space, null, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-desktop" }), " ", t("desktop"))
7927
8069
  ), /* @__PURE__ */ React__default.createElement(
7928
8070
  Button$2,
7929
8071
  {
7930
- style: { paddingLeft: grid, paddingRight: grid },
7931
- type: isMobileActive ? "outline" : "secondary",
8072
+ style: {
8073
+ paddingLeft: grid,
8074
+ paddingRight: grid,
8075
+ borderColor: isMobileActive ? void 0 : "#000",
8076
+ color: isMobileActive ? void 0 : "#000",
8077
+ borderLeftColor: isMobileActive ? void 0 : "transparent"
8078
+ },
8079
+ type: "outline",
7932
8080
  onClick: () => onChangeTab(ActiveTabKeys.MOBILE)
7933
8081
  },
7934
8082
  /* @__PURE__ */ React__default.createElement(Space, null, /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-mobile" }), " ", t("mobile"))
@@ -15623,7 +15771,7 @@ const paragraphIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAY
15623
15771
  const heading1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAYAAAB1h9JkAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMASURBVHgB7dwtU9xQAEDR/kM8Ho/H4/F4PB6PwOFBYxn8dl5nakp2ext2m81yzswzfLwym7vJ2zTJjw0EPzYQCIVEKCRCIREKiVBIhEIiFBKhkAiFRCgkQiERColQSIRCIhQSoZAIhUQoJEIhEQqJUEiEQiIUEqGQCIVEKCRCIREKiVBIhEIiFJLFQ3l5edk8PDzMGh8fH1vnfX5+nj0vny0eyt3d3ebs7GzWeHt72zrvzc3N7Hn5bPFQxjt/bNSLi4u0EcfPjZ8fge3aozw+Ps6el8+Oao0yDkPbNuz5+fmvqOYYv7dt3vH1ufN+J0e3mB2Hk6kNOt7tXzFimJr39vZ2w98d5aeeqXf/Pg4JY6/057wWr823CmVqXqE0QhFKIpQ9hjLWV+Pv/NsnsjUSyp5C+fMT265zPGsklC+GMgKZOrlnj/IfHGMoY8P/PsV/f3//62P15eXltzm7K5QYyrbzO0JZ0LGGcnV1NTmEspC1LWaFspC1hzL+nVOzmlDGLv73OYq541Cn8IWykHppwD6GUJrVhDK+tm0xWYc9ynzWKEJJhCKURChCSYQilEQoQkmEIpREKEJJhCKURChCSYQilEQoQkmEIpTEnYIuXEpWc+/x+N/fNc17aje+H1Uo40W/vr6efOHHGN+bswHGLRW7rpgft1v867zjbx2P1tj19IVxpf6pBLN4KGPXP17sqcPCrjE2/K6brMahau6824zvzb2oavzemp+c4IlLE2ObufPt6zC3JA/7IxEKiVBIhEIiFBKhkAiFRCgkQiERColQSIRCIhQSoZAIhWSxUJ6enowDjUMQygmOQxDKCY5DsEYhEQqJUEiEQiIUEqGQCIVEKCRCIXFm9ojH6+vr5lgIRSiJUISSWKOQCIVEKCRCIREKiVBIhEIiFBKhkDgz+8Xx/v6++Q6EIpREKEJJrFFIhEIiFBKhkAiFRCgkQiERColQSIRCIhQSoZAIhUQoJEIhEQqJUEiEQiIUEqGQCIVEKCRCIREKiVBIhEIiFJKffNuO46yGVJYAAAAASUVORK5CYII=";
15624
15772
  const heading2 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAYAAAB1h9JkAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPJSURBVHgB7dwxT+NKGIZR/iE9PT09PT09PT09PQUdPdS0iD6rbyVLlrHDGzsmmeQcaYqLcmfZ9YM9HidcbCBwsYGAUIgIhYhQiAiFiFCICIWIUIgIhYhQiAiFiFCICIWIUIgIhYhQiAiFiFCICIWIUIgIhYhQiAiFiFCICIWIUIgIhYhQiAiFiFCICIWIUIgcPJT39/fN8/PzrPH9/T0579vb2+x5+engoTw+Pm4uLy9njc/Pz8l57+/vZ8/LTwcPpX7y66BeX19HB7FeV6+vwLadUV5eXmbPy09HtUapy9DUgb26uvof1Rz1/03NW1+fO+85ObrFbF1Oxg5o/bQvUTGMzfvw8LDhd0d51zP207+PS0KdlYbzWrxmziqUsXmFkhGKUCJC2UModffV7dvU99mN+u/6+ra7s1YIZUEoFcHt7e3o2mc46nUtn72EMuPg1Z1ZHfjh7Xu3D1N3Und3d6MB1fewbaPwWAllx1DqIPfn2bYPU5ecsZ3nCqj2jFoilB1CGYskOTs8PT2NxtLSmUUoO4QyfH5Ul5/U8FK1j03EvySUMJSxHeM6K6Smziqt3BEJJQylHjKO3c2ka42pRwitPGdqJpQ6dff3KOaMJVv49bqxA10BJaZCaeWWuZlQ1hrpgaozx5IzglBWMBZKfa3OKkvG0oeCw8XsLk+eXXpWcMz7KN1W/a77IGOL2RoWswuc4kNBt8crOLVQpu6YbLgtdEqhDHdz9/n3+UtCWTGUsfcA14K6xafIQlnhoE09DKx1SotPjotQ9hxKzTf8cyqQ1t/pL5Q9hdK9iak/d70n5VQ+CiKUhaEM38RUa5DfPpzWIqEsCKX//OhUA+kIZeZbIW9ubjb9rfxTDaQjlB1Dqdd3Z5GK5Vw+juqTgjuE0r/lre+xnt/M/dUa/dFCbM189niXtx2uMe/UQ719jBae+RxVKHUw65Zy6h907u1m7ZD21xRjB+q3eZf8vhWh7EG3QZV8iKo/6sBv2+Wsy8TceccI5cBa+Y1LQoGAUIgIhYhQiAiFiFCICIWIUIgIhYhQiAiFiFCICIWIUIgIhcjBQnl9fTVWGmsQygmONQjlBMcarFGICIWIUIgIhYhQiAiFiFCICIWIUIjYmT3i8fHxsTkWQhFKRChCiVijEBEKEaEQEQoRoRARChGhEBEKEaEQsTO7cHx9fW3OgVCEEhGKUCLWKESEQkQoRIRCRChEhEJEKESEQkQoRIRCRChEhEJEKESEQkQoRIRCRChEhEJEKESEQkQoRIRCRChEhEJEKESEQkQoRP4Bc7zC5nyOk6IAAAAASUVORK5CYII=";
15625
15773
  const heading3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAYAAAB1h9JkAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUpSURBVHgB7dwtTCNBGMbxucs5giJBg0HhEHg8Hk+CxJMgSZAkSBIkCR6PR+DweDz67p4mkyzDbPvstGVn2v8vaS4c7ZKwD/Px7rv76+9/AZjhdwAMBAUWggILQYGFoMBCUGAhKLAQFFgICiwEBRaCAgtBgYWgwEJQYCEosBAUWAgKLAQFFoICC0GBhaDAQlBgISiwEBRYCAosBAUWggILQYGFoMBCUGAhKLAQFFj+hJG9v79PXiUODw/DxsZG9ntvb2/h4+MjlDg6Ogr4avSgvLy8hMfHx1Di7u6uNyjPz8+TVwmC8t3oQdnf35+cGHcE2N7ennxG//aFRDTaSMlx8d2vmp7hpino+vo6e2IViouLi8nJHEphub29zR5XwTg/Py867jqpajG7u7sbrq6ust/TCFF6MvU5hWHRx10n1e169BeeG/7nnRIUhtxUpXBitrXaHk9b02A66iiwjL7rWQWfn5+ThbgWy90Fs0YwTW2rsAYiKHPQbko1IIVEYZlGJYCTk5Nmt98EpYBGDW23FZQo1mD0iiNM9/uxAKiw6NUagjJQWuvR1HJ6epqdXvSey8vLL9ORRiB93bddrxWL2QF0gtOQ3Nzc9K5BNLqoLpTutjSyPD09hZYQlAHu7++/jA7OIlVhyU01GllmrWtqQlBMmnJ0AbOruwaZJneRUSFJj1czgmLKhcJtY9DUk9vtlLZXjKGZxWzcis5jnqE+91n9n8JSuuUt7ZcZQ1NBcYf6ZegLwzyXBVq6pNBMUPouFg7hFMb66Cqzfn53FNAi1T3ZuZ/bUvGtmaDEyuY8zs7OioOiQKijTgtQHWNIk5Pen/u5LZX2KbgNFDvnhshNmbGjrhXsen5ArrjW16BVK0aUJVNIuiOKpjCV/Fu7OEhQlkRrEoWku6VXONT322JXHUFZAC1wu1XW2JsSF7DxToOWbwMhKAugYPTdQ3R8fDxZALfem0tQlkzTT1zMtjyyEJQF0IlPt7qaemI1ORbp4tdat2jXQ8FtzfRVjePIoWB0F7WxoamlsFBH+QGqKGut0hWboFpBUH5I7rrQtEVwbdYqKGN2lMVbN1IEpVB6b0w0b4tBt67R9ZMnKheUMVsnhqgqKDqZ6kvN0S9Uc3rJLzZ2zvcdN731Yln6aiktNDCNvuvRX3RsNJ41NXQroPqlqxzet2vQMXVs57jdh+7EzvpU7GaL71k3owelb6qZZVa/6SKPm96fE2/DGLq17QtsC51uVT1Ip1aamtK1jLa7ugo8hKbVtOVAIXl4eAi1Y3tsyI1MJR30uc+UNEKNgaAYclPG0OkilvRTrVz3ISiGXMvi0DbG3K0muWtEtSIohrT8LkN2PlqXpGucvltNa0VQDDqp6cI1duPPooCktaHSXdOY2PUMkF4F1onW9JE2JsX7ihWSdF2i9+qRF609T46gDJR7iI5DaxFNNa0+pougFFJgtPaIz/JPpyGNNhpl4jPcWn+OG0FZoG7ldtUQFFjY9cBCUGAhKLAQFFhG60d5fX0NWI6Dg4OwaIwosBAUWKijwMKIAgtBgYWgwEJQYCEosBAUWAgKLAQFFq71VGxrayvs7OyEGjCiwEJQYOFaDyyMKLAQFFgICiwEBRaCAgtBgYWgwEJQYOFaz5z29vbC5uZmWHWMKLAQFFi41gMLIwosBAUWggILQYGFoMBCUGAhKLAQFFgICiwEBRaCAgtBgYWgwEJQYCEosBAUWAgKLAQFFoICC0GBhaDAQlBgISiwEBRYCAosBAWWf5H+W8ILZAmzAAAAAElFTkSuQmCC";
15626
- const options$8 = [
15774
+ const options$9 = [
15627
15775
  {
15628
15776
  icon: paragraphIcon,
15629
15777
  get content() {
@@ -15696,7 +15844,7 @@ const TurnInto = () => {
15696
15844
  style: { minWidth: 95 },
15697
15845
  onChange,
15698
15846
  renderFormat: (option) => {
15699
- const matchItem = options$8.find((o) => o.value === (option == null ? void 0 : option.value));
15847
+ const matchItem = options$9.find((o) => o.value === (option == null ? void 0 : option.value));
15700
15848
  return /* @__PURE__ */ React__default.createElement("span", { className: "TurnInto-content" }, matchItem ? matchItem.content : "");
15701
15849
  },
15702
15850
  triggerProps: {
@@ -15704,7 +15852,7 @@ const TurnInto = () => {
15704
15852
  autoAlignPopupMinWidth: true
15705
15853
  }
15706
15854
  },
15707
- options$8.map((option, index2) => {
15855
+ options$9.map((option, index2) => {
15708
15856
  return /* @__PURE__ */ React__default.createElement(Select$1.Option, { key: index2, value: option.value }, /* @__PURE__ */ React__default.createElement("div", { className: "TurnInto-item" }, /* @__PURE__ */ React__default.createElement("img", { src: option.icon, alt: "", className: "TurnInto-icon" }), /* @__PURE__ */ React__default.createElement("span", { className: "TurnInto-content" }, option.content)));
15709
15857
  })
15710
15858
  ), /* @__PURE__ */ React__default.createElement("style", null, `.easy-email-pro-turnInto .arco-select-view { border-width: 0px !important; }`));
@@ -15880,7 +16028,7 @@ const TextAlign$1 = () => {
15880
16028
  }
15881
16029
  ));
15882
16030
  };
15883
- const options$7 = ["12px", "14px", "16px", "18px", "24px", "32px", "48px"];
16031
+ const options$8 = ["12px", "14px", "16px", "18px", "24px", "32px", "48px"];
15884
16032
  const FontSize$2 = () => {
15885
16033
  const [selectRef, setSelectRef] = useState(null);
15886
16034
  const { fontSizeList } = useEditorProps();
@@ -15906,7 +16054,7 @@ const FontSize$2 = () => {
15906
16054
  setFontSizeValue(fontSizeValue2);
15907
16055
  }, [editor, textNode, textNode == null ? void 0 : textNode.fontSize]);
15908
16056
  const optionsList = useMemo(() => {
15909
- const list = [...fontSizeList || options$7];
16057
+ const list = [...fontSizeList || options$8];
15910
16058
  if (fontSizeValue) {
15911
16059
  list.push(fontSizeValue);
15912
16060
  }
@@ -25019,15 +25167,25 @@ const DefaultButton = (props) => {
25019
25167
  const ButtonField = enhancer(DefaultButton);
25020
25168
  const DefaultButtonGroup = (props) => {
25021
25169
  const _a = props, { options: options2, value, onChange } = _a, rest = __objRest(_a, ["options", "value", "onChange"]);
25022
- return /* @__PURE__ */ React__default.createElement(Space, { direction: "vertical" }, /* @__PURE__ */ React__default.createElement(Grid.Row, { justify: "center" }, /* @__PURE__ */ React__default.createElement(
25170
+ return /* @__PURE__ */ React__default.createElement(Grid.Row, { justify: "center" }, /* @__PURE__ */ React__default.createElement(
25023
25171
  Radio.Group,
25024
- __spreadProps(__spreadValues({}, rest), {
25172
+ __spreadProps(__spreadValues({
25173
+ style: { width: "100%", display: "flex" }
25174
+ }, rest), {
25025
25175
  value,
25026
25176
  type: "button",
25027
- options: options2,
25028
25177
  onChange
25029
- })
25030
- )));
25178
+ }),
25179
+ options2.map((option) => /* @__PURE__ */ React__default.createElement(
25180
+ Radio,
25181
+ {
25182
+ style: { width: `${(100 / options2.length).toFixed(2)}%` },
25183
+ key: option.value,
25184
+ value: option.value
25185
+ },
25186
+ /* @__PURE__ */ React__default.createElement("div", { style: { width: "100%", textAlign: "center" } }, option.label)
25187
+ ))
25188
+ ));
25031
25189
  };
25032
25190
  const ButtonGroupField = enhancer(DefaultButtonGroup);
25033
25191
  var colorString$1 = { exports: {} };
@@ -26719,7 +26877,7 @@ const ColorPickerContainer = (props) => {
26719
26877
  title: "",
26720
26878
  trigger: "click"
26721
26879
  }, props), {
26722
- className: "color-picker-popup",
26880
+ className: "easy-email-pro-theme-color-picker-popup",
26723
26881
  content: /* @__PURE__ */ React__default.createElement(
26724
26882
  ColorPickerContent,
26725
26883
  {
@@ -26732,6 +26890,7 @@ const ColorPickerContainer = (props) => {
26732
26890
  children || /* @__PURE__ */ React__default.createElement(
26733
26891
  "div",
26734
26892
  {
26893
+ className: "easy-email-pro-theme-color-picker-trigger",
26735
26894
  style: {
26736
26895
  display: "inline-block",
26737
26896
  height: 32,
@@ -26784,6 +26943,7 @@ const ColorPickerContainer = (props) => {
26784
26943
  ), showInput && /* @__PURE__ */ React__default.createElement(
26785
26944
  Input,
26786
26945
  {
26946
+ className: "easy-email-pro-theme-color-picker-input",
26787
26947
  prefix: !isPageVarMatch && !isTemplateVarMatch && !value.includes("rgb") ? "#" : "",
26788
26948
  value: inputColor,
26789
26949
  style: { outline: "none", flex: 1 },
@@ -26850,7 +27010,7 @@ function EditPanelList(props) {
26850
27010
  const [activeId, setActiveId] = useState(null);
26851
27011
  const [activeItem, setActiveItem] = useState(null);
26852
27012
  const getItemId = useCallback((item2) => {
26853
- let id = idMap.get(item2);
27013
+ let id = get(item2, "id") || idMap.get(item2);
26854
27014
  if (!id) {
26855
27015
  id = +(/* @__PURE__ */ new Date()).getTime().toString() + "-" + uniqueId();
26856
27016
  idMap.set(item2, id);
@@ -27419,7 +27579,11 @@ function ImageUploader(props) {
27419
27579
  position: "relative",
27420
27580
  minHeight: 100,
27421
27581
  height: props.size === "small" ? 100 : void 0,
27422
- boxSizing: "border-box"
27582
+ boxSizing: "border-box",
27583
+ backgroundColor: "#fafafa",
27584
+ backgroundImage: image2 ? "linear-gradient(45deg, #f0f0f0 25%, transparent 25%, transparent 75%, #f0f0f0 75%, #f0f0f0), linear-gradient(45deg, #f0f0f0 25%, transparent 25%, transparent 75%, #f0f0f0 75%, #f0f0f0)" : void 0,
27585
+ backgroundSize: "20px 20px",
27586
+ backgroundPosition: "0 0, 10px 10px"
27423
27587
  }
27424
27588
  },
27425
27589
  content
@@ -28729,7 +28893,7 @@ function TextAndHeadingStyle(props) {
28729
28893
  [props.name, props.path]
28730
28894
  );
28731
28895
  }
28732
- const options$6 = [
28896
+ const options$7 = [
28733
28897
  {
28734
28898
  value: "normal",
28735
28899
  get label() {
@@ -28785,7 +28949,7 @@ function FontWeight(props) {
28785
28949
  SelectField,
28786
28950
  __spreadProps(__spreadValues({
28787
28951
  label: t("Font weight"),
28788
- options: options$6
28952
+ options: options$7
28789
28953
  }, props), {
28790
28954
  formItem: __spreadValues(__spreadValues({}, fontWeightAdapter), props.formItem)
28791
28955
  })
@@ -29063,7 +29227,7 @@ function LineHeight(props) {
29063
29227
  )));
29064
29228
  }, [label, onChangeUnit, props, unit]);
29065
29229
  }
29066
- const options$5 = [
29230
+ const options$6 = [
29067
29231
  {
29068
29232
  value: "left",
29069
29233
  label: /* @__PURE__ */ React__default.createElement(IconFont, { iconName: "icon-align-left" })
@@ -29083,7 +29247,7 @@ function TextAlign(props) {
29083
29247
  return /* @__PURE__ */ React__default.createElement(
29084
29248
  AttributeField.ButtonGroupField,
29085
29249
  __spreadProps(__spreadValues({}, props), {
29086
- options: options$5,
29250
+ options: options$6,
29087
29251
  label
29088
29252
  })
29089
29253
  );
@@ -30047,7 +30211,7 @@ const ConditionModal = ({
30047
30211
  /* @__PURE__ */ React__default.createElement(Form.Item, { field: "condition.enabled", noStyle: true }, /* @__PURE__ */ React__default.createElement(Input, { hidden: true }))
30048
30212
  );
30049
30213
  };
30050
- const options$4 = [
30214
+ const options$5 = [
30051
30215
  {
30052
30216
  tootip: "Truthy",
30053
30217
  label: "Truthy",
@@ -30173,7 +30337,7 @@ function ConditionItem({
30173
30337
  layout: "vertical",
30174
30338
  style: {}
30175
30339
  },
30176
- /* @__PURE__ */ React__default.createElement(Select$1, { options: options$4 }, options$4.map((item2) => {
30340
+ /* @__PURE__ */ React__default.createElement(Select$1, { options: options$5 }, options$5.map((item2) => {
30177
30341
  return /* @__PURE__ */ React__default.createElement(Select$1.Option, { key: item2.value, value: item2.value }, /* @__PURE__ */ React__default.createElement("div", null, item2.label));
30178
30342
  }))
30179
30343
  )), !hideRight && /* @__PURE__ */ React__default.createElement(Grid.Col, { span: 8, style: { paddingLeft: 5 } }, /* @__PURE__ */ React__default.createElement(
@@ -30534,23 +30698,23 @@ function Heading(props) {
30534
30698
  return /* @__PURE__ */ React__default.createElement(Form.Item, __spreadValues({ label }, props.formItem), /* @__PURE__ */ React__default.createElement(Select$1, { options: options2, value: node.type, onChange }));
30535
30699
  }, [label, node.type, onChange, options2, props.formItem]);
30536
30700
  }
30537
- const options$3 = [
30701
+ const options$4 = [
30538
30702
  {
30539
30703
  value: "top",
30540
30704
  get label() {
30541
- return t("top");
30705
+ return t("Top");
30542
30706
  }
30543
30707
  },
30544
30708
  {
30545
30709
  value: "middle",
30546
30710
  get label() {
30547
- return t("middle");
30711
+ return t("Middle");
30548
30712
  }
30549
30713
  },
30550
30714
  {
30551
30715
  value: "bottom",
30552
30716
  get label() {
30553
- return t("bottom");
30717
+ return t("Bottom");
30554
30718
  }
30555
30719
  }
30556
30720
  ];
@@ -30560,7 +30724,7 @@ function VerticalAlign(props) {
30560
30724
  return /* @__PURE__ */ React__default.createElement(
30561
30725
  AttributeField.ButtonGroupField,
30562
30726
  __spreadProps(__spreadValues({
30563
- options: options$3
30727
+ options: options$4
30564
30728
  }, props), {
30565
30729
  label
30566
30730
  })
@@ -30655,41 +30819,56 @@ function PixelAndPercentField(props) {
30655
30819
  return val + unit;
30656
30820
  }
30657
30821
  };
30658
- return /* @__PURE__ */ React__default.createElement(Grid.Row, null, /* @__PURE__ */ React__default.createElement(Grid.Col, { span: 16, style: { textAlign: "right" } }, /* @__PURE__ */ React__default.createElement(
30659
- AttributeField.NumberField,
30660
- __spreadProps(__spreadValues({}, rest), {
30661
- label,
30662
- formItem: __spreadValues(__spreadProps(__spreadValues({}, adapter), {
30663
- disabled: props.disabled,
30664
- labelCol: {
30665
- span: 10,
30666
- offset: 2
30667
- },
30668
- wrapperCol: {
30669
- span: 12
30670
- }
30671
- }), props.formItem)
30672
- })
30673
- )), /* @__PURE__ */ React__default.createElement(Grid.Col, { span: 6 }, /* @__PURE__ */ React__default.createElement(
30674
- Form.Item,
30822
+ return /* @__PURE__ */ React__default.createElement(Grid.Row, { className: "easy-email-pro-theme-PixelAndPercentField" }, /* @__PURE__ */ React__default.createElement(
30823
+ Grid.Col,
30675
30824
  {
30676
- labelCol: {
30677
- span: 0,
30678
- style: { lineHeight: 1.15 }
30679
- },
30680
- wrapperCol: { span: 24 }
30825
+ className: "easy-email-pro-theme-PixelAndPercentField-number",
30826
+ span: 16,
30827
+ style: { textAlign: "right" }
30681
30828
  },
30682
30829
  /* @__PURE__ */ React__default.createElement(
30683
- Select$1,
30830
+ AttributeField.NumberField,
30831
+ __spreadProps(__spreadValues({}, rest), {
30832
+ label,
30833
+ formItem: __spreadValues(__spreadProps(__spreadValues({}, adapter), {
30834
+ disabled: props.disabled,
30835
+ labelCol: {
30836
+ span: 10,
30837
+ offset: 2
30838
+ },
30839
+ wrapperCol: {
30840
+ span: 12
30841
+ }
30842
+ }), props.formItem)
30843
+ })
30844
+ )
30845
+ ), /* @__PURE__ */ React__default.createElement(
30846
+ Grid.Col,
30847
+ {
30848
+ className: "easy-email-pro-theme-PixelAndPercentField-unit",
30849
+ span: 6
30850
+ },
30851
+ /* @__PURE__ */ React__default.createElement(
30852
+ Form.Item,
30684
30853
  {
30685
- disabled: props.disabled,
30686
- value: unit,
30687
- onChange: onChangeUnit
30854
+ labelCol: {
30855
+ span: 0,
30856
+ style: { lineHeight: 1.15 }
30857
+ },
30858
+ wrapperCol: { span: 24 }
30688
30859
  },
30689
- /* @__PURE__ */ React__default.createElement(Select$1.Option, { value: "px" }, t("px")),
30690
- /* @__PURE__ */ React__default.createElement(Select$1.Option, { value: "" }, t("%"))
30860
+ /* @__PURE__ */ React__default.createElement(
30861
+ Select$1,
30862
+ {
30863
+ disabled: props.disabled,
30864
+ value: unit,
30865
+ onChange: onChangeUnit
30866
+ },
30867
+ /* @__PURE__ */ React__default.createElement(Select$1.Option, { value: "px" }, t("px")),
30868
+ /* @__PURE__ */ React__default.createElement(Select$1.Option, { value: "" }, t("%"))
30869
+ )
30691
30870
  )
30692
- )));
30871
+ ));
30693
30872
  }, [label, onChangeUnit, props.disabled, props.formItem, rest, unit]);
30694
30873
  }
30695
30874
  function ImageWidth(props) {
@@ -30778,7 +30957,7 @@ function Direction(props) {
30778
30957
  }, rest), {
30779
30958
  formItem: __spreadProps(__spreadValues({}, rest.formItem), {
30780
30959
  wrapperCol: __spreadProps(__spreadValues({}, (_a2 = rest.formItem) == null ? void 0 : _a2.wrapperCol), {
30781
- span: 15
30960
+ span: 14
30782
30961
  })
30783
30962
  })
30784
30963
  })
@@ -30862,7 +31041,7 @@ function RTLDirection(props) {
30862
31041
  )));
30863
31042
  }, [name, path2, rest]);
30864
31043
  }
30865
- const options$2 = [
31044
+ const options$3 = [
30866
31045
  {
30867
31046
  value: "auto",
30868
31047
  get label() {
@@ -30882,7 +31061,7 @@ function TableLayout(props) {
30882
31061
  return /* @__PURE__ */ React__default.createElement(
30883
31062
  AttributeField.ButtonGroupField,
30884
31063
  __spreadProps(__spreadValues({}, props), {
30885
- options: options$2,
31064
+ options: options$3,
30886
31065
  label
30887
31066
  })
30888
31067
  );
@@ -31033,6 +31212,116 @@ function BackgroundGradient(props) {
31033
31212
  t("Create gradient")
31034
31213
  )));
31035
31214
  }
31215
+ const options$2 = [
31216
+ {
31217
+ value: "left",
31218
+ label: t("Left")
31219
+ },
31220
+ {
31221
+ value: "right",
31222
+ label: t("Right")
31223
+ }
31224
+ ];
31225
+ const verticalAlignOptions = [
31226
+ {
31227
+ value: "middle",
31228
+ get label() {
31229
+ return t("Middle");
31230
+ }
31231
+ },
31232
+ {
31233
+ value: "baseline",
31234
+ get label() {
31235
+ return t("Baseline");
31236
+ }
31237
+ }
31238
+ ];
31239
+ function ButtonIcon(props) {
31240
+ const { label = t("Icon"), path: path2, name } = props;
31241
+ const { getFieldValue, setFieldValue } = useEditorContext();
31242
+ const editor = useSlateStatic();
31243
+ const isEnabledBorder = getFieldValue(path2, `${name}.icon-enabled`);
31244
+ const handleChangeEnabled = useCallback(
31245
+ (value) => {
31246
+ console.log(value);
31247
+ if (isUndefined$1(isEnabledBorder)) {
31248
+ editor.withoutNormalizing(() => {
31249
+ setFieldValue(
31250
+ path2,
31251
+ `${name}.icon-src`,
31252
+ "https://cdn.shopify.com/s/files/1/0863/8971/9346/files/xmxnt4qg5xuogsoasxrfy_image.png"
31253
+ );
31254
+ setFieldValue(path2, `${name}.icon-position`, "right");
31255
+ setFieldValue(path2, `${name}.icon-vertical-align`, "middle");
31256
+ setFieldValue(path2, `${name}.icon-width`, "12px");
31257
+ setFieldValue(path2, `${name}.icon-height`, "12px");
31258
+ });
31259
+ }
31260
+ },
31261
+ [setFieldValue, path2, name, isEnabledBorder, editor]
31262
+ );
31263
+ return useMemo(() => {
31264
+ return /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement(
31265
+ AttributeField.SwitchField,
31266
+ {
31267
+ label,
31268
+ name: `${name}.icon-enabled`,
31269
+ path: path2,
31270
+ onChange: handleChangeEnabled
31271
+ }
31272
+ ), /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, isEnabledBorder && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
31273
+ AttributeField.ImageUrl,
31274
+ {
31275
+ path: path2,
31276
+ name: props.name + ".icon-src",
31277
+ formItem: { layout: "vertical" }
31278
+ }
31279
+ ), /* @__PURE__ */ React__default.createElement(
31280
+ AttributeField.Width,
31281
+ {
31282
+ label: t("Width"),
31283
+ path: path2,
31284
+ suffix: t("px"),
31285
+ name: `${name}.icon-width`,
31286
+ min: 1,
31287
+ required: true,
31288
+ fallbackValue: "12px"
31289
+ }
31290
+ ), /* @__PURE__ */ React__default.createElement(
31291
+ AttributeField.Height,
31292
+ {
31293
+ label: t("Height"),
31294
+ path: path2,
31295
+ suffix: t("px"),
31296
+ name: `${name}.icon-height`,
31297
+ min: 1,
31298
+ required: true,
31299
+ fallbackValue: "12px"
31300
+ }
31301
+ ), /* @__PURE__ */ React__default.createElement(
31302
+ AttributeField.ButtonGroupField,
31303
+ {
31304
+ path: path2,
31305
+ name: `${name}.icon-position`,
31306
+ options: options$2,
31307
+ label: t("Position")
31308
+ }
31309
+ ), /* @__PURE__ */ React__default.createElement(
31310
+ AttributeField.ButtonGroupField,
31311
+ {
31312
+ path: path2,
31313
+ name: `${name}.icon-vertical-align`,
31314
+ options: verticalAlignOptions,
31315
+ label: /* @__PURE__ */ React__default.createElement(Space, null, t("Vertical Align"), " "),
31316
+ formItem: {
31317
+ help: t(
31318
+ "This option is not available in classic Outlook and is always baseline."
31319
+ )
31320
+ }
31321
+ }
31322
+ ))));
31323
+ }, [handleChangeEnabled, isEnabledBorder, label, name, path2, props.name]);
31324
+ }
31036
31325
  const defaultAttributeFields = {
31037
31326
  // Basic Form Field
31038
31327
  WatchField,
@@ -31090,7 +31379,8 @@ const defaultAttributeFields = {
31090
31379
  WebFonts,
31091
31380
  RichTextField,
31092
31381
  FieldItem,
31093
- GradientGeneratorField
31382
+ GradientGeneratorField,
31383
+ ButtonIcon
31094
31384
  };
31095
31385
  const AttributeField = __spreadValues({}, defaultAttributeFields);
31096
31386
  const index$5 = "";
@@ -31506,12 +31796,13 @@ function AttributesContainer$d({
31506
31796
  mode
31507
31797
  }) {
31508
31798
  const { selectedNode } = useSelectedNode();
31799
+ const { enabledButtonIcon } = useEditorProps();
31509
31800
  const textPath = useMemo(() => {
31510
31801
  return [...nodePath, 0];
31511
31802
  }, [nodePath]);
31512
31803
  if (!selectedNode)
31513
31804
  return null;
31514
- return /* @__PURE__ */ React__default.createElement(CollapseWrapper$1, { defaultActiveKey: ["0", "1", "2", "3", "4"] }, /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "3", header: t("Content") }, /* @__PURE__ */ React__default.createElement(
31805
+ return /* @__PURE__ */ React__default.createElement(CollapseWrapper$1, { defaultActiveKey: ["0", "1", "2", "3", "4", "5"] }, /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "3", header: t("Content") }, /* @__PURE__ */ React__default.createElement(
31515
31806
  AttributeField.ButtonContent,
31516
31807
  {
31517
31808
  path: textPath,
@@ -31578,6 +31869,13 @@ function AttributesContainer$d({
31578
31869
  path: nodePath,
31579
31870
  name: "border-radius"
31580
31871
  }
31872
+ )), enabledButtonIcon && /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "5", header: t("Icon") }, /* @__PURE__ */ React__default.createElement(
31873
+ ResponsiveField,
31874
+ {
31875
+ component: AttributeField.ButtonIcon,
31876
+ path: nodePath,
31877
+ name: ""
31878
+ }
31581
31879
  )), /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "4", header: t("Block") }, /* @__PURE__ */ React__default.createElement(
31582
31880
  ResponsiveField,
31583
31881
  {
@@ -31917,6 +32215,13 @@ function AttributesContainer$9({
31917
32215
  type: selectedNode.type
31918
32216
  }
31919
32217
  )), /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "2", header: t("Block") }, /* @__PURE__ */ React__default.createElement(
32218
+ ResponsiveField,
32219
+ {
32220
+ component: AttributeField.BackgroundColor,
32221
+ path: nodePath,
32222
+ name: "container-background-color"
32223
+ }
32224
+ ), /* @__PURE__ */ React__default.createElement(
31920
32225
  ResponsiveField,
31921
32226
  {
31922
32227
  component: AttributeField.TextAlign,
@@ -32159,6 +32464,13 @@ function AttributesContainer$8({
32159
32464
  type: selectedNode.type
32160
32465
  }
32161
32466
  )), /* @__PURE__ */ React__default.createElement(Collapse.Item, { name: "2", header: t("Block") }, /* @__PURE__ */ React__default.createElement(
32467
+ ResponsiveField,
32468
+ {
32469
+ component: AttributeField.BackgroundColor,
32470
+ path: nodePath,
32471
+ name: "container-background-color"
32472
+ }
32473
+ ), /* @__PURE__ */ React__default.createElement(
32162
32474
  ResponsiveField,
32163
32475
  {
32164
32476
  component: AttributeField.ButtonGroupField,
package/lib/style.css CHANGED
@@ -30,6 +30,101 @@
30
30
  display: flex;
31
31
  align-items: center;
32
32
  justify-content: center;
33
+ }
34
+ .LayoutItemList * .LayoutWrapperItem {
35
+ position: relative;
36
+ cursor: grab;
37
+ color: rgb(85, 85, 85);
38
+ background-color: #fff;
39
+ }
40
+ .LayoutItemList * .LayoutWrapperItem .LayoutItemOuter {
41
+ position: relative;
42
+ width: 100%;
43
+ z-index: 1;
44
+ padding: 10px;
45
+ }
46
+ .LayoutItemList * .LayoutWrapperItem .LayoutItemInner {
47
+ height: 36px;
48
+ border: 1px solid rgb(85, 85, 85);
49
+ border-radius: 3px;
50
+ overflow: hidden;
51
+ display: flex;
52
+ }
53
+ .LayoutItemList * .LayoutWrapperItem .LayoutItemInnerPart {
54
+ border-right: 1px solid rgb(85, 85, 85);
55
+ height: 100%;
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ }
60
+
61
+ .LayoutWrapperItemList {
62
+ box-sizing: border-box;
63
+ }
64
+ .LayoutWrapperItemList .LayoutItem {
65
+ position: relative;
66
+ cursor: grab;
67
+ color: rgb(85, 85, 85);
68
+ background-color: #fff;
69
+ }
70
+ .LayoutWrapperItemList .LayoutItem .LayoutItemOuter {
71
+ position: relative;
72
+ width: 100%;
73
+ z-index: 1;
74
+ padding: 10px;
75
+ border: 1px solid rgb(229, 229, 229);
76
+ }
77
+ .LayoutWrapperItemList .LayoutItem .LayoutItemOuter:hover {
78
+ box-shadow: inset 0px 0px 2px #ccc;
79
+ }
80
+ .LayoutWrapperItemList .LayoutItem .LayoutItemInner {
81
+ height: 36px;
82
+ border: 1px solid rgb(85, 85, 85);
83
+ border-radius: 3px;
84
+ overflow: hidden;
85
+ display: flex;
86
+ }
87
+ .LayoutWrapperItemList .LayoutItem .LayoutItemInnerPart {
88
+ border-right: 1px solid rgb(85, 85, 85);
89
+ height: 100%;
90
+ display: flex;
91
+ align-items: center;
92
+ justify-content: center;
93
+ }
94
+ .LayoutWrapperItemList .LayoutWrapperItemRowTitle {
95
+ padding-left: 10px;
96
+ }
97
+ .LayoutWrapperItemList .LayoutWrapperItem {
98
+ position: relative;
99
+ cursor: grab;
100
+ color: rgb(85, 85, 85);
101
+ background-color: #fff;
102
+ border: 1px solid rgb(229, 229, 229);
103
+ border-radius: 3px;
104
+ margin-bottom: 16px;
105
+ }
106
+ .LayoutWrapperItemList .LayoutWrapperItem:hover {
107
+ box-shadow: 1px 1px 2px #ccc;
108
+ }
109
+ .LayoutWrapperItemList .LayoutWrapperItem .LayoutItemOuter {
110
+ position: relative;
111
+ width: 100%;
112
+ z-index: 1;
113
+ padding: 10px;
114
+ }
115
+ .LayoutWrapperItemList .LayoutWrapperItem .LayoutItemInner {
116
+ height: 36px;
117
+ border: 1px solid rgb(85, 85, 85);
118
+ border-radius: 3px;
119
+ overflow: hidden;
120
+ display: flex;
121
+ }
122
+ .LayoutWrapperItemList .LayoutWrapperItem .LayoutItemInnerPart {
123
+ border-right: 1px solid rgb(85, 85, 85);
124
+ height: 100%;
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: center;
33
128
  }.BlockSideBar-BlockList {
34
129
  --block-grid-item-size: 100px;
35
130
  }
@@ -241,6 +336,36 @@
241
336
  display: flex;
242
337
  align-items: center;
243
338
  justify-content: center;
339
+ }.easy-email-pro-theme-PixelAndPercentField .easy-email-pro-theme-PixelAndPercentField-number .arco-input-inner-wrapper {
340
+ border-top-right-radius: 0;
341
+ border-bottom-right-radius: 0;
342
+ }
343
+ .easy-email-pro-theme-PixelAndPercentField .easy-email-pro-theme-PixelAndPercentField-unit .arco-select-view {
344
+ border-top-left-radius: 0;
345
+ border-bottom-left-radius: 0;
346
+ border-left: 0;
347
+ }
348
+
349
+ .easy-email-pro-theme-color-picker-trigger {
350
+ border-top-left-radius: var(--border-radius-small) !important;
351
+ border-bottom-left-radius: var(--border-radius-small) !important;
352
+ }
353
+
354
+ .easy-email-pro-theme-color-picker-input .arco-input-inner-wrapper {
355
+ border-top-left-radius: 0 !important;
356
+ border-bottom-left-radius: 0 !important;
357
+ border-left: 0 !important;
358
+ }
359
+
360
+ .arco-radio-group-type-button .arco-radio-button::after {
361
+ content: " ";
362
+ display: block;
363
+ position: absolute;
364
+ top: -4px;
365
+ left: -4px;
366
+ right: -4px;
367
+ bottom: -4px;
368
+ background-color: var(--color-fill-2);
244
369
  }.easy-email-pro-editor-controller {
245
370
  font-size: 14px;
246
371
  background: #fff;
@@ -0,0 +1,6 @@
1
+ import { CategoryLayoutSectionItemPayload } from "../../../typings";
2
+ import React from "react";
3
+ export declare const SectionLayout: ({ columns, title, }: {
4
+ columns: CategoryLayoutSectionItemPayload[];
5
+ title: string;
6
+ }) => React.JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { CategoryLayoutWrapperItemPayload } from "../../../typings";
2
+ import React from "react";
3
+ export declare const WrapperLayout: ({ variants, title, }: {
4
+ variants: CategoryLayoutWrapperItemPayload["variants"];
5
+ title: string;
6
+ }) => React.JSX.Element;
@@ -1,6 +1,3 @@
1
- import React from "react";
2
1
  import "./index.scss";
3
- export declare const LayoutItem: ({ columns, title, }: {
4
- columns: string[][];
5
- title: string;
6
- }) => React.JSX.Element;
2
+ export * from "./SectionLayout";
3
+ export * from "./WrapperLayout";
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { Path } from "slate";
3
+ export declare function ButtonIcon(props: {
4
+ label?: React.ReactNode;
5
+ path: Path;
6
+ name: string;
7
+ }): React.JSX.Element;
@@ -37,6 +37,7 @@ import { ButtonContent } from "./ButtonContent";
37
37
  import { RTLDirection } from "./RTLDirection";
38
38
  import { TableLayout } from "./TableLayout";
39
39
  import { BackgroundGradient } from "./BackgroundGradient";
40
+ import { ButtonIcon } from "./ButtonIcon";
40
41
  export declare const defaultAttributeFields: {
41
42
  WatchField: (props: import("../../../Form/WatchField").WatchFieldProps) => import("react").JSX.Element;
42
43
  SyncChildrenField: (props: import("../../../Form/SyncChildrenField").SyncChildrenFieldProps) => import("react").JSX.Element;
@@ -127,5 +128,6 @@ export declare const defaultAttributeFields: {
127
128
  }, "onChange" | "value">) => import("react").JSX.Element;
128
129
  FieldItem: typeof FieldItem;
129
130
  GradientGeneratorField: (props: import("../../../Form/enhancer").EnhancerProps & Omit<import("../../../Form/GradientGenerator").GradientGeneratorProps, "onChange" | "value">) => import("react").JSX.Element;
131
+ ButtonIcon: typeof ButtonIcon;
130
132
  };
131
133
  export declare const AttributeField: AttributeFieldsMap;
@@ -57,14 +57,28 @@ export interface CategoryMenuItem<T extends keyof ElementMap = any> {
57
57
  }>;
58
58
  displayType?: "menu";
59
59
  }
60
+ export type CategoryLayoutSectionItemPayload = Array<string>;
61
+ export type CategoryLayoutWrapperItemPayload = {
62
+ title: string;
63
+ variants: Array<{
64
+ sections: Array<{
65
+ columns: string[];
66
+ }>;
67
+ }>;
68
+ };
60
69
  export type Categories = Array<CategoryGridItem | CategoryMenuItem | {
61
70
  label: string;
62
71
  active?: boolean;
63
72
  blocks: Array<{
64
- payload: string[][];
73
+ payload: Array<CategoryLayoutSectionItemPayload>;
65
74
  title: string | undefined;
66
75
  }>;
67
76
  displayType: "column";
77
+ } | {
78
+ label: string;
79
+ active?: boolean;
80
+ blocks: Array<CategoryLayoutWrapperItemPayload>;
81
+ displayType: "section";
68
82
  } | {
69
83
  label: string;
70
84
  active?: boolean;
@@ -140,6 +154,7 @@ export interface PluginsCustomEditorTypes {
140
154
  enabledHtmlBlockNodeAlign?: boolean;
141
155
  enabledPreviewEmailSubjectEdit?: boolean;
142
156
  enabledGradientImage?: boolean;
157
+ enabledButtonIcon?: boolean;
143
158
  hideSectionBackgroundImage?: boolean;
144
159
  layerConfig?: {
145
160
  scrollWhenSelect?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-email-pro-theme",
3
- "version": "1.51.0",
3
+ "version": "1.51.2",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib"