@useinsider/guido 2.0.0-beta.6b85cb2 → 2.0.0-beta.6da018c
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/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +59 -57
- package/dist/components/organisms/base/Toaster.vue.js +6 -6
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +6 -6
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +69 -153
- package/dist/extensions/Blocks/Recommendation/constants.js +1 -9
- package/dist/extensions/Blocks/Recommendation/control.js +59 -74
- package/dist/extensions/Blocks/Recommendation/controls/button/align.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/border.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/color.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/text.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/image/size.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/align.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/background.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/color.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/size.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/style.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/align.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/background.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/color.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/size.js +13 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/style.js +13 -0
- package/dist/extensions/Blocks/Recommendation/extension.js +42 -16
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +72 -117
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +64 -85
- package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +17 -54
- package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +45 -74
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +52 -47
- package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +3 -50
- package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +0 -32
- package/dist/src/extensions/Blocks/Recommendation/control.d.ts +2 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
- package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +7 -15
- package/dist/static/styles/components/wide-panel.css.js +4 -0
- package/dist/static/styles/customEditorStyle.css.js +0 -13
- package/package.json +1 -1
- package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
- package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -245
- package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +0 -74
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +0 -71
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +0 -71
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +0 -71
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +0 -71
- package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
- package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
- package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +0 -25
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -592
- package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +0 -15
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +0 -15
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +0 -15
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +0 -15
- package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +0 -60
- package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
|
@@ -1,54 +1,55 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { useTimerClone as
|
|
6
|
-
import { migrate as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { useStripoApi as
|
|
14
|
-
import { useConfigStore as
|
|
15
|
-
import { useDynamicContentStore as
|
|
16
|
-
import { useEditorStore as
|
|
17
|
-
import { usePreviewStore as
|
|
18
|
-
import {
|
|
19
|
-
|
|
1
|
+
import { defineComponent as q, defineAsyncComponent as U, ref as W, computed as I, watch as z, onMounted as K, onUnmounted as M } from "vue";
|
|
2
|
+
import { provideGuidoActions as j } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as J } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as Q } from "../composables/useStripo.js";
|
|
5
|
+
import { useTimerClone as V } from "../composables/useTimerClone.js";
|
|
6
|
+
import { migrate as L } from "../config/migrator/index.js";
|
|
7
|
+
import X from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import Y from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import Z from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import $ from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import ee from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import oe from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as te } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as ne } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as re } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as se } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ce } from "../stores/preview.js";
|
|
18
|
+
import { useToasterStore as ie } from "../stores/toaster.js";
|
|
19
|
+
import { useUnsubscribeStore as ae } from "../stores/unsubscribe.js";
|
|
20
|
+
const Pe = /* @__PURE__ */ q({
|
|
20
21
|
__name: "Guido",
|
|
21
22
|
props: {
|
|
22
23
|
config: null
|
|
23
24
|
},
|
|
24
25
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
25
|
-
setup(
|
|
26
|
-
const
|
|
26
|
+
setup(A, { expose: R, emit: t }) {
|
|
27
|
+
const u = A, F = U(
|
|
27
28
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
28
|
-
),
|
|
29
|
+
), G = U(
|
|
29
30
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
30
|
-
), p =
|
|
31
|
-
n.init(
|
|
32
|
-
const
|
|
31
|
+
), p = W(), i = re(), v = ae(), f = ie(), n = ne();
|
|
32
|
+
n.init(u.config);
|
|
33
|
+
const a = se(), H = ce(), r = I(() => a.hasChanges), { isTestPartner: O } = J(), y = () => {
|
|
33
34
|
var e;
|
|
34
35
|
return (e = p.value) == null ? void 0 : e.handleSave(!0);
|
|
35
|
-
}, { templateId:
|
|
36
|
-
|
|
37
|
-
const { initPlugin:
|
|
38
|
-
emailId:
|
|
39
|
-
userId:
|
|
40
|
-
username:
|
|
41
|
-
partnerName:
|
|
42
|
-
productType:
|
|
43
|
-
preselectedDynamicContentList:
|
|
36
|
+
}, { templateId: m, userId: h, partnerName: b, productType: g, username: S, template: o } = n, s = (o == null ? void 0 : o.html) || "", w = (o == null ? void 0 : o.css) || "", d = (o == null ? void 0 : o.preselectedDynamicContent) || [];
|
|
37
|
+
a.templateId = m;
|
|
38
|
+
const c = W(!1), { initPlugin: C } = Q({
|
|
39
|
+
emailId: m,
|
|
40
|
+
userId: h,
|
|
41
|
+
username: S,
|
|
42
|
+
partnerName: b,
|
|
43
|
+
productType: g,
|
|
44
|
+
preselectedDynamicContentList: d,
|
|
44
45
|
onReady: () => {
|
|
45
46
|
console.debug("guido:ready"), t("ready");
|
|
46
47
|
}
|
|
47
|
-
}), { getDefaultTemplate:
|
|
48
|
+
}), { getDefaultTemplate: D } = te(), { cloneTimersOnSave: E, hasTimerBlocks: T } = V(), x = I(() => {
|
|
48
49
|
var e;
|
|
49
50
|
return !((e = n.ui) != null && e.showHeader);
|
|
50
51
|
});
|
|
51
|
-
|
|
52
|
+
j({
|
|
52
53
|
onBack: () => {
|
|
53
54
|
console.debug("guido:back"), t("back");
|
|
54
55
|
},
|
|
@@ -62,51 +63,52 @@ const Ee = /* @__PURE__ */ x({
|
|
|
62
63
|
console.debug("guido:test-email:click"), t("test-email:click");
|
|
63
64
|
}
|
|
64
65
|
});
|
|
65
|
-
const
|
|
66
|
-
console.debug("dynamic-content:close", e),
|
|
67
|
-
},
|
|
66
|
+
const k = (e) => {
|
|
67
|
+
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
68
|
+
}, _ = () => {
|
|
68
69
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
69
70
|
};
|
|
70
|
-
|
|
71
|
+
z(() => r.value, () => {
|
|
71
72
|
t("on-change", r.value);
|
|
72
73
|
});
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
console.debug("dynamic-content:open",
|
|
74
|
+
const l = (e) => {
|
|
75
|
+
const P = e, { attribute: B, position: N } = P.detail;
|
|
76
|
+
console.debug("dynamic-content:open", P.detail), t("dynamic-content:open", B, N);
|
|
76
77
|
};
|
|
77
|
-
return
|
|
78
|
+
return K(async () => {
|
|
78
79
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
79
80
|
try {
|
|
80
|
-
|
|
81
|
+
v.selectedUnsubscribePages = (o == null ? void 0 : o.selectedUnsubscribePages) || [];
|
|
81
82
|
let e = {
|
|
82
|
-
html:
|
|
83
|
-
css:
|
|
83
|
+
html: s && await L(s),
|
|
84
|
+
css: w,
|
|
84
85
|
forceRecreate: !0
|
|
85
86
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
86
87
|
};
|
|
87
|
-
e.html || (e = await
|
|
88
|
+
e.html || (e = await D(), e.html = await L(e.html)), T(e.html) && (e.html = await E(e.html)), await C(e), i.selectedDynamicContentList = d;
|
|
88
89
|
} catch (e) {
|
|
89
90
|
console.error("Failed to initialize Stripo editor:", e);
|
|
90
91
|
}
|
|
91
|
-
document.addEventListener("dynamic-content:open",
|
|
92
|
-
}),
|
|
93
|
-
|
|
92
|
+
document.addEventListener("dynamic-content:open", l), c.value = !0;
|
|
93
|
+
}), M(() => {
|
|
94
|
+
var e;
|
|
95
|
+
c.value && (f.hideToaster(), (e = document.querySelector("#guido__toaster")) == null || e.remove()), c.value = !1, document.removeEventListener("dynamic-content:open", l);
|
|
94
96
|
try {
|
|
95
97
|
window.UIEditor.removeEditor();
|
|
96
98
|
} catch {
|
|
97
99
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
98
100
|
}
|
|
99
101
|
n.reset();
|
|
100
|
-
}),
|
|
102
|
+
}), R({
|
|
101
103
|
dynamicContent: {
|
|
102
|
-
insert:
|
|
103
|
-
close:
|
|
104
|
+
insert: k,
|
|
105
|
+
close: _
|
|
104
106
|
},
|
|
105
107
|
hasChanges: r,
|
|
106
|
-
saveSilent:
|
|
107
|
-
}), { __sfc: !0, PreviewContainer:
|
|
108
|
+
saveSilent: y
|
|
109
|
+
}), { __sfc: !0, PreviewContainer: F, OnboardingWrapper: G, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: v, toasterStore: f, props: u, configStore: n, editorStore: a, previewStore: H, hasChanges: r, isTestPartner: O, saveSilent: y, templateId: m, userId: h, partnerName: b, productType: g, username: S, templateConfig: o, html: s, css: w, preselectedDynamicContentList: d, editorReady: c, emit: t, initPlugin: C, getDefaultTemplate: D, cloneTimersOnSave: E, hasTimerBlocks: T, noHeader: x, insertDynamicContent: k, closeDynamicContent: _, handleDynamicContentOpen: l, Toaster: X, FilterSelectionDrawer: Y, HeaderWrapper: Z, LoadingWrapper: $, SaveAsTemplateDrawer: ee, UnsubscribeWrapper: oe };
|
|
108
110
|
}
|
|
109
111
|
});
|
|
110
112
|
export {
|
|
111
|
-
|
|
113
|
+
Pe as default
|
|
112
114
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n from "./Toaster.vue2.js";
|
|
2
2
|
import s from "../../../_virtual/_plugin-vue2_normalizer.js";
|
|
3
3
|
var r = function() {
|
|
4
|
-
var o = this,
|
|
5
|
-
return
|
|
4
|
+
var o = this, e = o._self._c, t = o._self._setupProxy;
|
|
5
|
+
return e(t.InToasts, { attrs: { id: "guido__toaster", "action-buttons-config": t.actionButtonsConfig, status: t.store.status, text: t.store.text, type: t.store.type }, on: { actionButtonClick0: t.handleActionClick } });
|
|
6
6
|
}, a = [], _ = /* @__PURE__ */ s(
|
|
7
|
-
|
|
7
|
+
n,
|
|
8
8
|
r,
|
|
9
9
|
a,
|
|
10
10
|
!1,
|
|
11
11
|
null,
|
|
12
12
|
null
|
|
13
13
|
);
|
|
14
|
-
const
|
|
14
|
+
const f = _.exports;
|
|
15
15
|
export {
|
|
16
|
-
|
|
16
|
+
f as default
|
|
17
17
|
};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import i from "./EmailSizeIndicator.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
var
|
|
3
|
+
import o from "../../../../_virtual/_plugin-vue2_normalizer.js";
|
|
4
|
+
var r = function() {
|
|
5
5
|
var s = this, e = s._self._c, t = s._self._setupProxy;
|
|
6
|
-
return e("div", { staticClass: "d-f a-i-c j-c-c" }, [e(t.InProgress, { staticClass: "min-w-15-s", attrs: { id: "email-size-progress", "description-status": "", "description-position": "left", description: t.htmlSize, "max-value": t.MAX_EMAIL_SIZE_IN_KB, type: t.progress.type, value: t.progress.value } }), e(t.
|
|
7
|
-
}, a = [], n = /* @__PURE__ */
|
|
6
|
+
return e("div", { staticClass: "d-f a-i-c j-c-c" }, [e(t.InProgress, { staticClass: "min-w-15-s", attrs: { id: "email-size-progress", "description-status": "", "description-position": "left", description: t.htmlSize, "max-value": t.MAX_EMAIL_SIZE_IN_KB, type: t.progress.type, value: t.progress.value } }), e(t.InTooltipV2, { attrs: { id: "email-size-tooltip", "icon-status": "", "static-position": "bottom center", "dynamic-position": !1, text: t.trans("email-editor.preview-design-size-tooltip") } })], 1);
|
|
7
|
+
}, a = [], n = /* @__PURE__ */ o(
|
|
8
8
|
i,
|
|
9
|
-
|
|
9
|
+
r,
|
|
10
10
|
a,
|
|
11
11
|
!1,
|
|
12
12
|
null,
|
|
13
|
-
"
|
|
13
|
+
"eb2f9f20"
|
|
14
14
|
);
|
|
15
15
|
const m = n.exports;
|
|
16
16
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as c, ref as n, computed as l, watch as u } from "vue";
|
|
2
2
|
import { useTranslations as p } from "../../../../composables/useTranslations.js";
|
|
3
3
|
import { usePreviewStore as _ } from "../../../../stores/preview.js";
|
|
4
|
-
import {
|
|
4
|
+
import { InTooltipV2 as v, InProgress as f } from "@useinsider/design-system-vue";
|
|
5
5
|
const S = /* @__PURE__ */ c({
|
|
6
6
|
__name: "EmailSizeIndicator",
|
|
7
7
|
setup(w) {
|
|
@@ -17,7 +17,7 @@ const S = /* @__PURE__ */ c({
|
|
|
17
17
|
}, i = p();
|
|
18
18
|
return u(() => t.previewHtml, () => {
|
|
19
19
|
r();
|
|
20
|
-
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f,
|
|
20
|
+
}, { immediate: !0 }), { __sfc: !0, previewStore: t, MAX_EMAIL_SIZE_IN_KB: o, htmlKB: e, progress: s, htmlSize: a, calculateProgress: r, trans: i, InProgress: f, InTooltipV2: v };
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
export {
|
|
@@ -1,187 +1,103 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
{ key:
|
|
8
|
-
{ key:
|
|
9
|
-
{ key:
|
|
10
|
-
{ key:
|
|
11
|
-
{ key:
|
|
1
|
+
var m = Object.defineProperty;
|
|
2
|
+
var y = (n, o, i) => o in n ? m(n, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : n[o] = i;
|
|
3
|
+
var a = (n, o, i) => y(n, typeof o != "symbol" ? o + "" : o, i);
|
|
4
|
+
import { ModificationDescription as u } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
|
+
import { CommonControl as b } from "../common-control.js";
|
|
6
|
+
const h = "ui-elements-recommendation-card-composition", s = [
|
|
7
|
+
{ key: "productImage", label: "Product Image", visible: !0 },
|
|
8
|
+
{ key: "productName", label: "Product Name", visible: !0 },
|
|
9
|
+
{ key: "productPrice", label: "Product Price", visible: !0 },
|
|
10
|
+
{ key: "productOriginalPrice", label: "Product Original Price", visible: !0 },
|
|
11
|
+
{ key: "productButton", label: "Product Button", visible: !0 }
|
|
12
12
|
];
|
|
13
|
-
class
|
|
13
|
+
class g extends b {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
a(this, "currentComposition", []);
|
|
17
|
+
a(this, "currentVisibility", {});
|
|
18
|
+
}
|
|
14
19
|
getId() {
|
|
15
|
-
return
|
|
20
|
+
return h;
|
|
16
21
|
}
|
|
17
22
|
getTemplate() {
|
|
18
|
-
const
|
|
19
|
-
key:
|
|
20
|
-
label:
|
|
21
|
-
content:
|
|
23
|
+
const i = s.map((e) => ({
|
|
24
|
+
key: e.key,
|
|
25
|
+
label: e.label,
|
|
26
|
+
content: `
|
|
27
|
+
<div style="display: flex; align-items: center; justify-content: space-between;
|
|
28
|
+
padding: 8px; gap: 8px;">
|
|
29
|
+
<span style="flex: 1;">${e.label}</span>
|
|
30
|
+
${this._GuToggle(`visibility_${e.key}`)}
|
|
31
|
+
</div>
|
|
32
|
+
`
|
|
22
33
|
}));
|
|
23
34
|
return `
|
|
24
35
|
<div class="container">
|
|
25
36
|
${this._GuLabel({ text: "Card Element Order & Visibility" })}
|
|
26
|
-
${this._GuOrderable("cardComposition",
|
|
37
|
+
${this._GuOrderable("cardComposition", i)}
|
|
27
38
|
</div>
|
|
28
39
|
`;
|
|
29
40
|
}
|
|
30
41
|
onRender() {
|
|
31
|
-
this._initializeComposition(), this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Creates the HTML content for an orderable item with label and toggle
|
|
38
|
-
*/
|
|
39
|
-
_createItemContent(t, i) {
|
|
40
|
-
return `
|
|
41
|
-
<div style="display: flex; align-items: center; justify-content: space-between;
|
|
42
|
-
padding: 8px; gap: 8px;">
|
|
43
|
-
<span style="flex: 1;">${t}</span>
|
|
44
|
-
${this._GuToggle(`visibility_${i}`)}
|
|
45
|
-
</div>
|
|
46
|
-
`;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Registers event listeners for composition and visibility changes
|
|
50
|
-
*/
|
|
51
|
-
_registerValueChangeListeners() {
|
|
52
|
-
this.api.onValueChanged("cardComposition", (t) => {
|
|
53
|
-
this._applyCompositionToBlock(t);
|
|
54
|
-
}), s.forEach((t) => {
|
|
55
|
-
this.api.onValueChanged(`visibility_${t.key}`, (i) => {
|
|
56
|
-
this._applyVisibilityToBlock(t.key, i);
|
|
42
|
+
this._initializeComposition(), this.api.onValueChanged("cardComposition", (i) => {
|
|
43
|
+
this.currentComposition = i, this._applyCompositionToBlock(i);
|
|
44
|
+
}), s.forEach((i) => {
|
|
45
|
+
this.api.onValueChanged(`visibility_${i.key}`, (e) => {
|
|
46
|
+
this.currentVisibility[i.key] = e, this._applyVisibilityToBlock();
|
|
57
47
|
});
|
|
58
48
|
});
|
|
59
49
|
}
|
|
50
|
+
onTemplateNodeUpdated(i) {
|
|
51
|
+
super.onTemplateNodeUpdated(i), this._initializeComposition();
|
|
52
|
+
}
|
|
60
53
|
/**
|
|
61
|
-
*
|
|
54
|
+
* Initialize the composition order and visibility from the block or use defaults
|
|
62
55
|
*/
|
|
63
56
|
_initializeComposition() {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
var p;
|
|
58
|
+
const i = (p = this.currentNode) == null ? void 0 : p.querySelector(".ins-recommendation-v3-block-v2");
|
|
59
|
+
let e = null, l = null;
|
|
60
|
+
if (i && "getAttribute" in i && (e = i.getAttribute("data-card-composition"), l = i.getAttribute("data-card-visibility")), e) {
|
|
61
|
+
const t = e.split(",").filter(Boolean), r = s.map((c) => c.key);
|
|
62
|
+
t.every((c) => r.includes(c)) && t.length > 0 ? this.currentComposition = t : this.currentComposition = r;
|
|
63
|
+
} else
|
|
64
|
+
this.currentComposition = s.map((t) => t.key);
|
|
65
|
+
if (l)
|
|
66
|
+
try {
|
|
67
|
+
const t = JSON.parse(l);
|
|
68
|
+
this.currentVisibility = t;
|
|
69
|
+
} catch {
|
|
70
|
+
this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
|
|
71
|
+
}
|
|
72
|
+
else
|
|
73
|
+
this.currentVisibility = s.reduce((t, r) => (t[r.key] = r.visible, t), {});
|
|
74
|
+
const d = {
|
|
75
|
+
cardComposition: this.currentComposition
|
|
67
76
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* Reads composition order from node's data-card-composition attribute
|
|
72
|
-
* Falls back to default order if attribute is not present
|
|
73
|
-
*/
|
|
74
|
-
_readCompositionFromNode() {
|
|
75
|
-
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
76
|
-
return s.map((i) => i.key);
|
|
77
|
-
const t = this.currentNode.getAttribute(c);
|
|
78
|
-
return t ? t.split(",").filter(Boolean) : s.map((i) => i.key);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Builds visibility values object from the visibility map
|
|
82
|
-
*/
|
|
83
|
-
_buildVisibilityValues(t) {
|
|
84
|
-
return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Read visibility state from individual row elements' data-visibility attributes
|
|
88
|
-
* This ensures toggles reflect the actual DOM state
|
|
89
|
-
*/
|
|
90
|
-
_readVisibilityFromRows() {
|
|
91
|
-
if (!this.currentNode)
|
|
92
|
-
return this._getDefaultVisibilities();
|
|
93
|
-
const t = Array.from(this.currentNode.querySelectorAll(l));
|
|
94
|
-
console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
|
|
95
|
-
const i = this._extractVisibilityFromRows(t);
|
|
96
|
-
return this._mergeWithDefaults(i);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Returns default visibility values for all items
|
|
100
|
-
*/
|
|
101
|
-
_getDefaultVisibilities() {
|
|
102
|
-
return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Extracts visibility values from DOM nodes
|
|
106
|
-
*/
|
|
107
|
-
_extractVisibilityFromRows(t) {
|
|
108
|
-
const i = {};
|
|
109
|
-
return t.forEach((e) => {
|
|
110
|
-
if (!("getAttribute" in e))
|
|
111
|
-
return;
|
|
112
|
-
const o = e.getAttribute(a), r = e.getAttribute(d);
|
|
113
|
-
o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
|
|
114
|
-
`_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
|
|
115
|
-
));
|
|
116
|
-
}), i;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Parses visibility value from string to boolean
|
|
120
|
-
* Accepts "1", "true" as true, everything else as false
|
|
121
|
-
*/
|
|
122
|
-
_parseVisibilityValue(t) {
|
|
123
|
-
return t === "1" || t === "true";
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Merges extracted visibilities with default values for missing keys
|
|
127
|
-
*/
|
|
128
|
-
_mergeWithDefaults(t) {
|
|
129
|
-
return s.forEach((i) => {
|
|
130
|
-
i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
|
|
131
|
-
}), t;
|
|
77
|
+
s.forEach((t) => {
|
|
78
|
+
d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
|
|
79
|
+
}), this.api.updateValues(d);
|
|
132
80
|
}
|
|
133
81
|
/**
|
|
134
82
|
* Apply the reordered composition to the block's HTML structure
|
|
135
|
-
* Updates the data-card-composition attribute and reorders product attributes
|
|
136
|
-
*/
|
|
137
|
-
_applyCompositionToBlock(t) {
|
|
138
|
-
if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
|
|
139
|
-
console.debug("_applyCompositionToBlock - no current node");
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Reorders attribute rows within each product row based on composition order
|
|
146
83
|
*/
|
|
147
|
-
|
|
84
|
+
_applyCompositionToBlock(i) {
|
|
148
85
|
if (!this.currentNode)
|
|
149
86
|
return;
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
return;
|
|
153
|
-
const e = this.api.getDocumentModifier();
|
|
154
|
-
i.forEach((o) => {
|
|
155
|
-
const r = this._buildCompositionHtml(o, t);
|
|
156
|
-
e.modifyHtml(o).setInnerHtml(r);
|
|
157
|
-
}), e.apply(new n("Reorder product attributes"));
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Builds HTML string with attributes ordered according to composition
|
|
161
|
-
*/
|
|
162
|
-
_buildCompositionHtml(t, i) {
|
|
163
|
-
return i.reduce((e, o) => {
|
|
164
|
-
const r = t.querySelector(`${l}[${a}="${o}"]`);
|
|
165
|
-
return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
|
|
166
|
-
}, "");
|
|
87
|
+
const e = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
|
|
88
|
+
e && this.api.getDocumentModifier().modifyHtml(e).setAttribute("data-card-composition", i.join(",")).apply(new u("Stored card composition order"));
|
|
167
89
|
}
|
|
168
90
|
/**
|
|
169
91
|
* Apply visibility changes to the block's HTML structure
|
|
170
|
-
* Updates display style and data-visibility attribute for all matching rows
|
|
171
92
|
*/
|
|
172
|
-
_applyVisibilityToBlock(
|
|
173
|
-
if (
|
|
174
|
-
return;
|
|
175
|
-
const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
|
|
176
|
-
if (!(e != null && e.length))
|
|
93
|
+
_applyVisibilityToBlock() {
|
|
94
|
+
if (!this.currentNode)
|
|
177
95
|
return;
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
u.modifyHtml(b).setStyle("display", o).setAttribute(d, r);
|
|
181
|
-
}), u.apply(new n(p));
|
|
96
|
+
const i = this.currentNode.querySelector(".ins-recommendation-v3-block-v2");
|
|
97
|
+
i && this.api.getDocumentModifier().modifyHtml(i).setAttribute("data-card-visibility", JSON.stringify(this.currentVisibility)).apply(new u("Stored card visibility settings"));
|
|
182
98
|
}
|
|
183
99
|
}
|
|
184
100
|
export {
|
|
185
|
-
|
|
186
|
-
|
|
101
|
+
h as COMPOSITION_CONTROL_BLOCK_ID,
|
|
102
|
+
g as RecommendationCardCompositionControl
|
|
187
103
|
};
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.OMNIBUS_PRICE = "recommendation-block-omnibus-price", c.OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control", c.OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control", c.OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control", c.OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control", c.OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control", c.OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control", c.OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control", c.OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control", c.OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control", c.OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control", c.OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control", c.OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control", c.OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control", c.OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control", c.OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control", c.OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control", c.OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control", c.OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
|
|
1
|
+
var o = /* @__PURE__ */ ((c) => (c.BUTTON = "recommendation-block-button", c.NAME = "recommendation-block-name", c.PRICE = "recommendation-block-price", c.OLD_PRICE = "recommendation-block-old-price", c.IMAGE = "recommendation-block-image", c))(o || {}), r = /* @__PURE__ */ ((c) => (c.BUTTON_ALIGN = "recommendation-block-button-align-control", c.BUTTON_BORDER = "recommendation-block-button-border-control", c.BUTTON_BORDER_RADIUS = "recommendation-block-button-border-radius-control", c.BUTTON_COLOR = "recommendation-block-button-color-control", c.BUTTON_FIT_TO_CONTENT = "recommendation-block-button-fit-to-content-control", c.BUTTON_FONT_FAMILY = "recommendation-block-button-font-family-control", c.BUTTON_MARGINS = "recommendation-block-button-margins-control", c.BUTTON_PADDINGS = "recommendation-block-button-paddings-control", c.BUTTON_TEXT = "recommendation-block-button-text-control", c.BUTTON_TEXT_SIZE = "recommendation-block-button-text-size-control", c.BUTTON_TEXT_STYLE_AND_FONT_COLOR = "recommendation-block-button-text-style-and-font-color-control", c.NAME_ALIGN = "recommendation-block-name-align-control", c.NAME_BACKGROUND = "recommendation-block-name-background-control", c.NAME_COLOR = "recommendation-block-name-color-control", c.NAME_FONT_FAMILY = "recommendation-block-name-font-family-control", c.NAME_PADDINGS = "recommendation-block-name-paddings-control", c.NAME_SIZE = "recommendation-block-name-size-control", c.NAME_STYLE = "recommendation-block-name-style-control", c.PRICE_ALIGN = "recommendation-block-price-align-control", c.PRICE_BACKGROUND = "recommendation-block-price-background-control", c.PRICE_COLOR = "recommendation-block-price-color-control", c.PRICE_FONT_FAMILY = "recommendation-block-price-font-family-control", c.PRICE_PADDINGS = "recommendation-block-price-paddings-control", c.PRICE_SIZE = "recommendation-block-price-size-control", c.PRICE_STYLE = "recommendation-block-price-style-control", c.OLD_PRICE_ALIGN = "recommendation-block-old-price-align-control", c.OLD_PRICE_BACKGROUND = "recommendation-block-old-price-background-control", c.OLD_PRICE_COLOR = "recommendation-block-old-price-color-control", c.OLD_PRICE_FONT_FAMILY = "recommendation-block-old-price-font-family-control", c.OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control", c.OLD_PRICE_SIZE = "recommendation-block-old-price-size-control", c.OLD_PRICE_STYLE = "recommendation-block-old-price-style-control", c.IMAGE_SIZE = "recommendation-block-image-size-control", c.IMAGE_MARGINS = "recommendation-block-image-margins-control", c))(r || {});
|
|
3
2
|
export {
|
|
4
|
-
t as ATTR_PRODUCT_BUTTON,
|
|
5
|
-
_ as ATTR_PRODUCT_IMAGE,
|
|
6
|
-
b as ATTR_PRODUCT_NAME,
|
|
7
|
-
i as ATTR_PRODUCT_OLD_PRICE,
|
|
8
|
-
T as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
|
|
9
|
-
O as ATTR_PRODUCT_OMNIBUS_PRICE,
|
|
10
|
-
n as ATTR_PRODUCT_PRICE,
|
|
11
3
|
o as RecommendationBlockId,
|
|
12
4
|
r as RecommendationControlId
|
|
13
5
|
};
|