@useinsider/guido 1.0.3-beta.15520d1 → 1.0.3-beta.173d19c
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/README.md +0 -2
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +61 -64
- package/dist/composables/useStripo.js +38 -44
- package/dist/enums/defaults.js +1 -2
- package/dist/enums/environment.js +5 -0
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +68 -158
- package/dist/extensions/Blocks/Recommendation/constants.js +1 -10
- 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 +40 -16
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +71 -124
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +65 -89
- package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +19 -56
- package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +45 -74
- package/dist/extensions/DynamicContent/dynamic-content-modal.js +19 -25
- package/dist/extensions/DynamicContent/dynamic-content.js +33 -128
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +70 -75
- package/dist/src/@types/generic.d.ts +6 -27
- package/dist/src/components/Guido.vue.d.ts +2 -2
- package/dist/src/enums/environment.d.ts +5 -0
- package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +3 -54
- package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +1 -41
- 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/store/recommendation.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
- package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +7 -15
- package/dist/src/extensions/DynamicContent/dynamic-content-modal.d.ts +2 -9
- package/dist/src/extensions/DynamicContent/dynamic-content.d.ts +2 -52
- package/dist/src/stores/config.d.ts +2 -3
- package/dist/src/stores/dynamic-content.d.ts +3 -3
- package/dist/src/stores/editor.d.ts +1 -1
- package/dist/src/stores/onboarding.d.ts +1 -1
- package/dist/src/stores/preview.d.ts +1 -1
- package/dist/src/stores/recommendation.d.ts +1 -1
- package/dist/src/stores/save-as-template.d.ts +1 -1
- package/dist/src/stores/toaster.d.ts +1 -1
- package/dist/src/stores/unsubscribe.d.ts +1 -1
- package/dist/src/stores/version-history.d.ts +1 -1
- package/dist/src/utils/environmentUtil.d.ts +5 -2
- package/dist/src/utils/genericUtil.d.ts +0 -1
- package/dist/static/styles/components/wide-panel.css.js +4 -0
- package/dist/static/styles/customEditorStyle.css.js +0 -14
- package/dist/stores/config.js +5 -5
- package/dist/stores/dynamic-content.js +2 -2
- package/dist/stores/editor.js +1 -1
- package/dist/stores/onboarding.js +27 -27
- package/dist/stores/preview.js +1 -1
- package/dist/stores/recommendation.js +3 -3
- package/dist/stores/save-as-template.js +2 -2
- package/dist/stores/toaster.js +1 -1
- package/dist/stores/unsubscribe.js +1 -1
- package/dist/stores/version-history.js +4 -4
- package/dist/utils/environmentUtil.js +4 -2
- package/dist/utils/genericUtil.js +9 -20
- package/package.json +1 -1
- package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +0 -68
- package/dist/extensions/Blocks/Recommendation/controls/index.js +0 -272
- 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/priceHideControl.js +0 -60
- package/dist/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.js +0 -160
- package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +0 -188
- package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +0 -25
- package/dist/extensions/Blocks/controlFactories.js +0 -234
- package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +0 -25
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +0 -71
- 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/priceHideControl.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/controls/priceInlineLayoutControl.d.ts +0 -50
- package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +0 -60
- package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -19
- package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -95
package/README.md
CHANGED
|
@@ -198,7 +198,6 @@ interface GuidoConfig {
|
|
|
198
198
|
saveAsTemplate: boolean;
|
|
199
199
|
versionHistory: boolean;
|
|
200
200
|
testMessage: boolean;
|
|
201
|
-
displayConditions: boolean;
|
|
202
201
|
};
|
|
203
202
|
blocks?: {
|
|
204
203
|
excludeDefaults?: GuidoBlockType[];
|
|
@@ -217,7 +216,6 @@ interface GuidoConfig {
|
|
|
217
216
|
| `features.dynamicContent` | `boolean` | `true` | Enable dynamic content insertion feature |
|
|
218
217
|
| `features.saveAsTemplate` | `boolean` | `true` | Enable save as template feature |
|
|
219
218
|
| `features.versionHistory` | `boolean` | `true` | Enable version history feature |
|
|
220
|
-
| `features.displayConditions` | `boolean` | `true` | Enable display conditions |
|
|
221
219
|
| `blocks` | `BlocksConfig` | `{ excludeDefaults: [], includeCustoms: [] }` | Block configuration for excluding default blocks and including custom blocks. See [Blocks Configuration](#-blocks-configuration) section below |
|
|
222
220
|
| `blocks.excludeDefaults` | `GuidoBlockType[]` | `[]` | Array of default Stripo blocks to exclude from the editor |
|
|
223
221
|
| `blocks.includeCustoms` | `GuidoCustomBlockType[]` | `[]` | Array of custom blocks to include in the editor |
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import { migrate as
|
|
6
|
-
import { DefaultUsername 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 { useUnsubscribeStore as
|
|
19
|
-
import
|
|
20
|
-
const
|
|
1
|
+
import { defineComponent as R, defineAsyncComponent as G, ref as x, computed as I, watch as M, onMounted as z, onUnmounted as B } from "vue";
|
|
2
|
+
import { provideGuidoActions as K } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as O } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as j } from "../composables/useStripo.js";
|
|
5
|
+
import { migrate as U } from "../config/migrator/index.js";
|
|
6
|
+
import { DefaultUsername as q, DefaultMessageType as J, DefaultGuidoConfig as Q } from "../enums/defaults.js";
|
|
7
|
+
import V from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import X from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import Y from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import Z from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import $ from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import ee from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as oe } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as te } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as ne } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as re } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ie } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as se } from "../stores/unsubscribe.js";
|
|
19
|
+
import ae from "../node_modules/lodash-es/merge.js";
|
|
20
|
+
const ke = /* @__PURE__ */ R({
|
|
21
21
|
__name: "Guido",
|
|
22
22
|
props: {
|
|
23
23
|
templateId: null,
|
|
@@ -33,45 +33,45 @@ const Ue = /* @__PURE__ */ O({
|
|
|
33
33
|
},
|
|
34
34
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
35
35
|
setup(W, { expose: _, emit: o }) {
|
|
36
|
-
const
|
|
36
|
+
const l = W, L = G(
|
|
37
37
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
38
|
-
),
|
|
38
|
+
), A = G(
|
|
39
39
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
40
|
-
),
|
|
40
|
+
), u = x(), i = ne(), p = se(), g = te(), s = re(), N = ie(), n = I(() => s.hasChanges), { getPartnerName: f, getProductType: y, isTestPartner: F } = O(), v = () => {
|
|
41
41
|
var e;
|
|
42
|
-
return (e =
|
|
42
|
+
return (e = u.value) == null ? void 0 : e.handleSave(!0);
|
|
43
43
|
}, {
|
|
44
44
|
templateId: a,
|
|
45
|
-
userId:
|
|
46
|
-
guidoConfig:
|
|
45
|
+
userId: b,
|
|
46
|
+
guidoConfig: C,
|
|
47
47
|
templateConfig: t,
|
|
48
48
|
html: r = "",
|
|
49
|
-
css:
|
|
50
|
-
partnerName: c =
|
|
51
|
-
productType:
|
|
52
|
-
messageType:
|
|
53
|
-
username:
|
|
54
|
-
} =
|
|
55
|
-
s.templateId = a, window.GuidoConfig =
|
|
49
|
+
css: h = "",
|
|
50
|
+
partnerName: c = f(),
|
|
51
|
+
productType: d = y(),
|
|
52
|
+
messageType: S = J,
|
|
53
|
+
username: w = q
|
|
54
|
+
} = l, m = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
|
|
55
|
+
s.templateId = a, window.GuidoConfig = ae(Q, C), window.GuidoConfig.partner = {
|
|
56
56
|
partnerName: c,
|
|
57
|
-
productType:
|
|
58
|
-
messageType:
|
|
59
|
-
},
|
|
60
|
-
const { initPlugin:
|
|
57
|
+
productType: d,
|
|
58
|
+
messageType: S
|
|
59
|
+
}, g.templateConfig = t;
|
|
60
|
+
const { initPlugin: D } = j({
|
|
61
61
|
emailId: a,
|
|
62
|
-
userId:
|
|
63
|
-
username:
|
|
62
|
+
userId: b,
|
|
63
|
+
username: w,
|
|
64
64
|
partnerName: c,
|
|
65
|
-
productType:
|
|
66
|
-
preselectedDynamicContentList:
|
|
65
|
+
productType: d,
|
|
66
|
+
preselectedDynamicContentList: m,
|
|
67
67
|
onReady: () => {
|
|
68
68
|
console.debug("guido:ready"), o("ready");
|
|
69
69
|
}
|
|
70
|
-
}), { getDefaultTemplate: T } =
|
|
70
|
+
}), { getDefaultTemplate: T } = oe(), H = I(() => {
|
|
71
71
|
var e;
|
|
72
72
|
return !((e = window.GuidoConfig) != null && e.useHeader);
|
|
73
73
|
});
|
|
74
|
-
|
|
74
|
+
K({
|
|
75
75
|
onBack: () => {
|
|
76
76
|
console.debug("guido:back"), o("back");
|
|
77
77
|
},
|
|
@@ -85,35 +85,32 @@ const Ue = /* @__PURE__ */ O({
|
|
|
85
85
|
console.debug("guido:test-email:click"), o("test-email:click");
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
|
-
const
|
|
88
|
+
const E = (e) => {
|
|
89
89
|
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
90
|
-
},
|
|
90
|
+
}, P = () => {
|
|
91
91
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
92
92
|
};
|
|
93
|
-
|
|
93
|
+
return M(() => n.value, () => {
|
|
94
94
|
o("on-change", n.value);
|
|
95
|
-
})
|
|
96
|
-
const l = (e) => {
|
|
97
|
-
const G = e, { attribute: x, position: M } = G.detail;
|
|
98
|
-
console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
|
|
99
|
-
};
|
|
100
|
-
return K(async () => {
|
|
95
|
+
}), z(async () => {
|
|
101
96
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
102
97
|
try {
|
|
103
|
-
|
|
98
|
+
p.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
|
|
104
99
|
let e = {
|
|
105
|
-
html: r && await
|
|
106
|
-
css:
|
|
100
|
+
html: r && await U(r),
|
|
101
|
+
css: h,
|
|
107
102
|
forceRecreate: !0
|
|
108
103
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
109
104
|
};
|
|
110
|
-
e.html || (e = await T(), e.html = await
|
|
105
|
+
e.html || (e = await T(), e.html = await U(e.html)), await D(e), i.selectedDynamicContentList = m;
|
|
111
106
|
} catch (e) {
|
|
112
107
|
console.error("Failed to initialize Stripo editor:", e);
|
|
113
108
|
}
|
|
114
|
-
document.addEventListener("dynamic-content:open",
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
document.addEventListener("dynamic-content:open", (e) => {
|
|
110
|
+
const k = e;
|
|
111
|
+
console.debug("dynamic-content:open", k.detail), o("dynamic-content:open", k.detail);
|
|
112
|
+
});
|
|
113
|
+
}), B(() => {
|
|
117
114
|
try {
|
|
118
115
|
window.UIEditor.removeEditor();
|
|
119
116
|
} catch {
|
|
@@ -121,14 +118,14 @@ const Ue = /* @__PURE__ */ O({
|
|
|
121
118
|
}
|
|
122
119
|
}), _({
|
|
123
120
|
dynamicContent: {
|
|
124
|
-
insert:
|
|
125
|
-
close:
|
|
121
|
+
insert: E,
|
|
122
|
+
close: P
|
|
126
123
|
},
|
|
127
124
|
hasChanges: n,
|
|
128
|
-
saveSilent:
|
|
129
|
-
}), { __sfc: !0, PreviewContainer:
|
|
125
|
+
saveSilent: v
|
|
126
|
+
}), { __sfc: !0, PreviewContainer: L, OnboardingWrapper: A, headerWrapperRef: u, dynamicContentStore: i, unsubscribeStore: p, props: l, configStore: g, editorStore: s, previewStore: N, hasChanges: n, getPartnerName: f, getProductType: y, isTestPartner: F, saveSilent: v, templateId: a, userId: b, guidoConfig: C, templateConfig: t, html: r, css: h, partnerName: c, productType: d, messageType: S, username: w, preselectedDynamicContentList: m, emit: o, initPlugin: D, getDefaultTemplate: T, noHeader: H, insertDynamicContent: E, closeDynamicContent: P, Toaster: V, FilterSelectionDrawer: X, HeaderWrapper: Y, LoadingWrapper: Z, SaveAsTemplateDrawer: $, UnsubscribeWrapper: ee };
|
|
130
127
|
}
|
|
131
128
|
});
|
|
132
129
|
export {
|
|
133
|
-
|
|
130
|
+
ke as default
|
|
134
131
|
};
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
2
|
-
import { useBlocksConfig as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
var m, g;
|
|
16
|
-
const t = M(), { html: n, css: p, forceRecreate: a } = i, { baseBlocks: e, extensions: d } = await C();
|
|
1
|
+
import { useActionsApi as y } from "./useActionsApi.js";
|
|
2
|
+
import { useBlocksConfig as E } from "./useBlocksConfig.js";
|
|
3
|
+
import { useCustomInterfaceAppearance as w } from "./useCustomInterfaceAppearance.js";
|
|
4
|
+
import { useStripoEventHandler as h } from "./useStripoEventHandler.js";
|
|
5
|
+
import { useToaster as b } from "./useToaster.js";
|
|
6
|
+
import { displayConditions as k } from "../enums/displayConditions.js";
|
|
7
|
+
import { useStripoApi as B } from "../services/stripoApi.js";
|
|
8
|
+
import V from "../static/styles/customEditorStyle.css.js";
|
|
9
|
+
import { useEditorStore as _ } from "../stores/editor.js";
|
|
10
|
+
import { dynamicContentToMergeTags as F } from "../utils/genericUtil.js";
|
|
11
|
+
import A from "../package.json.js";
|
|
12
|
+
const L = (d) => {
|
|
13
|
+
const { handleError: u } = b(), { getToken: p, getCustomFonts: m } = B(), { handleEvent: g } = h(), { getStripoBlocksConfig: f } = E(), S = async (r, i = []) => {
|
|
14
|
+
const t = _(), { html: n, css: l, forceRecreate: a } = r, { baseBlocks: e, extensions: c } = await f();
|
|
17
15
|
window.UIEditor.initEditor(
|
|
18
16
|
document.querySelector("#guido-editor"),
|
|
19
17
|
{
|
|
20
|
-
metadata:
|
|
18
|
+
metadata: d,
|
|
21
19
|
html: n,
|
|
22
|
-
css:
|
|
20
|
+
css: l,
|
|
23
21
|
forceRecreate: a,
|
|
24
22
|
locale: "en",
|
|
25
23
|
undoButtonSelector: "#guido__undo-button",
|
|
@@ -30,31 +28,27 @@ const J = (c) => {
|
|
|
30
28
|
customAppearanceMergetags: !0,
|
|
31
29
|
customAppearanceMergetagsBorderColor: "#f1f3fe",
|
|
32
30
|
customAppearanceMergetagsBackgroundColor: "#f1f3fe",
|
|
33
|
-
customViewStyles:
|
|
34
|
-
conditionsEnabled:
|
|
35
|
-
customConditionsEnabled:
|
|
36
|
-
conditionCategories:
|
|
31
|
+
customViewStyles: V,
|
|
32
|
+
conditionsEnabled: !0,
|
|
33
|
+
customConditionsEnabled: !0,
|
|
34
|
+
conditionCategories: k,
|
|
37
35
|
enableXSSSecurity: !0,
|
|
38
|
-
messageSettingsEnabled: !
|
|
39
|
-
displayGmailAnnotations: !0,
|
|
40
|
-
displayHiddenPreheader: !1,
|
|
41
|
-
displayTitle: !1,
|
|
42
|
-
displayUTM: !1,
|
|
36
|
+
messageSettingsEnabled: !1,
|
|
43
37
|
selectBlockAfterDropFromSettingsPanel: !0,
|
|
44
38
|
...e ? { baseBlocks: e } : {},
|
|
45
39
|
editorFonts: {
|
|
46
40
|
showDefaultStandardFonts: !0,
|
|
47
41
|
showDefaultNotStandardFonts: !0,
|
|
48
|
-
customFonts:
|
|
42
|
+
customFonts: i
|
|
49
43
|
},
|
|
50
44
|
mergeTags: [
|
|
51
45
|
{
|
|
52
|
-
entries:
|
|
46
|
+
entries: F(d.preselectedDynamicContentList)
|
|
53
47
|
}
|
|
54
48
|
],
|
|
55
49
|
async onTokenRefreshRequest(o) {
|
|
56
50
|
try {
|
|
57
|
-
const s = await
|
|
51
|
+
const s = await p();
|
|
58
52
|
o(s);
|
|
59
53
|
} catch (s) {
|
|
60
54
|
u(s, "Failed to refresh token");
|
|
@@ -62,8 +56,8 @@ const J = (c) => {
|
|
|
62
56
|
},
|
|
63
57
|
onTemplateLoaded() {
|
|
64
58
|
try {
|
|
65
|
-
const { importCss: o } =
|
|
66
|
-
o(), s(),
|
|
59
|
+
const { importCss: o } = w(), { activateCustomViewStyles: s } = y();
|
|
60
|
+
o(), s(), d.onReady(), t.isStripoInitialized = !0, t.loadingStatus = !1, setTimeout(() => {
|
|
67
61
|
t.hasChanges = !1;
|
|
68
62
|
}, 1e3);
|
|
69
63
|
} catch (o) {
|
|
@@ -82,35 +76,35 @@ const J = (c) => {
|
|
|
82
76
|
onDataChanged() {
|
|
83
77
|
t.hasChanges = !0;
|
|
84
78
|
},
|
|
85
|
-
onEvent:
|
|
79
|
+
onEvent: g,
|
|
86
80
|
ignoreClickOutsideSelectors: [
|
|
87
81
|
"#guido-dynamic-content-modal",
|
|
88
82
|
".in-on-board-wrapper",
|
|
89
83
|
".in-drawer__container"
|
|
90
84
|
],
|
|
91
|
-
extensions:
|
|
85
|
+
extensions: c
|
|
92
86
|
}
|
|
93
87
|
);
|
|
94
|
-
},
|
|
95
|
-
var
|
|
88
|
+
}, C = (r) => new Promise((i, t) => {
|
|
89
|
+
var c;
|
|
96
90
|
if (document.getElementById("UiEditorScript")) {
|
|
97
|
-
|
|
91
|
+
r(), i();
|
|
98
92
|
return;
|
|
99
93
|
}
|
|
100
|
-
const n =
|
|
94
|
+
const n = A.guido, a = `https://email-static.useinsider.com/guido/${(c = n == null ? void 0 : n.stripo) == null ? void 0 : c.version}/UIEditor.js`, e = document.createElement("script");
|
|
101
95
|
e.id = "UiEditorScript", e.type = "module", e.src = a, e.onload = () => {
|
|
102
|
-
|
|
96
|
+
r(), i();
|
|
103
97
|
}, e.onerror = () => {
|
|
104
98
|
t(new Error(`Failed to load Stripo UIEditor script from S3: ${a}`));
|
|
105
99
|
}, document.body.appendChild(e);
|
|
106
100
|
});
|
|
107
|
-
return { initPlugin: async (
|
|
108
|
-
await
|
|
109
|
-
const
|
|
110
|
-
await
|
|
101
|
+
return { initPlugin: async (r) => {
|
|
102
|
+
await C(async () => {
|
|
103
|
+
const i = await m();
|
|
104
|
+
await S(r, i);
|
|
111
105
|
});
|
|
112
106
|
} };
|
|
113
107
|
};
|
|
114
108
|
export {
|
|
115
|
-
|
|
109
|
+
L as useStripo
|
|
116
110
|
};
|
package/dist/enums/defaults.js
CHANGED
|
@@ -1,193 +1,103 @@
|
|
|
1
|
-
|
|
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";
|
|
2
5
|
import { CommonControl as b } from "../common-control.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
{ key:
|
|
6
|
-
{ key:
|
|
7
|
-
{ key:
|
|
8
|
-
{ key:
|
|
9
|
-
{ key: C, label: "Omnibus Price", visible: !1 },
|
|
10
|
-
{ key: f, label: "Omnibus Discount", visible: !1 },
|
|
11
|
-
{ key: g, label: "Product Button", visible: !0 }
|
|
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 this._getDefaultComposition();
|
|
77
|
-
const t = this.currentNode.getAttribute(c);
|
|
78
|
-
return t ? t.split(",").filter(Boolean) : this._getDefaultComposition();
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Gets default composition order
|
|
82
|
-
*/
|
|
83
|
-
_getDefaultComposition() {
|
|
84
|
-
return s.map((t) => t.key);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Builds visibility values object from the visibility map
|
|
88
|
-
*/
|
|
89
|
-
_buildVisibilityValues(t) {
|
|
90
|
-
return s.reduce((i, e) => (i[`visibility_${e.key}`] = t[e.key] ?? !0, i), {});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Read visibility state from individual row elements' data-visibility attributes
|
|
94
|
-
* This ensures toggles reflect the actual DOM state
|
|
95
|
-
*/
|
|
96
|
-
_readVisibilityFromRows() {
|
|
97
|
-
if (!this.currentNode)
|
|
98
|
-
return this._getDefaultVisibilities();
|
|
99
|
-
const t = Array.from(this.currentNode.querySelectorAll(l));
|
|
100
|
-
console.debug("_readVisibilityFromRows - found attribute rows:", t.length);
|
|
101
|
-
const i = this._extractVisibilityFromRows(t);
|
|
102
|
-
return this._mergeWithDefaults(i);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Returns default visibility values for all items
|
|
106
|
-
*/
|
|
107
|
-
_getDefaultVisibilities() {
|
|
108
|
-
return s.reduce((t, i) => (t[i.key] = i.visible, t), {});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Extracts visibility values from DOM nodes
|
|
112
|
-
*/
|
|
113
|
-
_extractVisibilityFromRows(t) {
|
|
114
|
-
const i = {};
|
|
115
|
-
return t.forEach((e) => {
|
|
116
|
-
if (!("getAttribute" in e))
|
|
117
|
-
return;
|
|
118
|
-
const o = e.getAttribute(a), r = e.getAttribute(d);
|
|
119
|
-
o && r !== null && (i[o] = this._parseVisibilityValue(r), console.debug(
|
|
120
|
-
`_readVisibilityFromRows - ${o}: ${i[o]} (raw: ${r})`
|
|
121
|
-
));
|
|
122
|
-
}), i;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Parses visibility value from string to boolean
|
|
126
|
-
* Accepts "1", "true" as true, everything else as false
|
|
127
|
-
*/
|
|
128
|
-
_parseVisibilityValue(t) {
|
|
129
|
-
return t === "1" || t === "true";
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Merges extracted visibilities with default values for missing keys
|
|
133
|
-
*/
|
|
134
|
-
_mergeWithDefaults(t) {
|
|
135
|
-
return s.forEach((i) => {
|
|
136
|
-
i.key in t || (t[i.key] = i.visible, console.debug(`_readVisibilityFromRows - ${i.key}: using default ${i.visible}`));
|
|
137
|
-
}), t;
|
|
77
|
+
s.forEach((t) => {
|
|
78
|
+
d[`visibility_${t.key}`] = this.currentVisibility[t.key] ?? !0;
|
|
79
|
+
}), this.api.updateValues(d);
|
|
138
80
|
}
|
|
139
81
|
/**
|
|
140
82
|
* Apply the reordered composition to the block's HTML structure
|
|
141
|
-
* Updates the data-card-composition attribute and reorders product attributes
|
|
142
|
-
*/
|
|
143
|
-
_applyCompositionToBlock(t) {
|
|
144
|
-
if (console.debug("_applyCompositionToBlock - composition:", t), !this.currentNode) {
|
|
145
|
-
console.debug("_applyCompositionToBlock - no current node");
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(c, t.join(",")).apply(new n("Update card composition")), this._reorderProductAttributes(t);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Reorders attribute rows within each product row based on composition order
|
|
152
83
|
*/
|
|
153
|
-
|
|
84
|
+
_applyCompositionToBlock(i) {
|
|
154
85
|
if (!this.currentNode)
|
|
155
86
|
return;
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
return;
|
|
159
|
-
const e = this.api.getDocumentModifier();
|
|
160
|
-
i.forEach((o) => {
|
|
161
|
-
const r = this._buildCompositionHtml(o, t);
|
|
162
|
-
e.modifyHtml(o).setInnerHtml(r);
|
|
163
|
-
}), e.apply(new n("Reorder product attributes"));
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Builds HTML string with attributes ordered according to composition
|
|
167
|
-
*/
|
|
168
|
-
_buildCompositionHtml(t, i) {
|
|
169
|
-
return i.reduce((e, o) => {
|
|
170
|
-
const r = t.querySelector(`${l}[${a}="${o}"]`);
|
|
171
|
-
return r && "getOuterHTML" in r ? e + r.getOuterHTML() : e;
|
|
172
|
-
}, "");
|
|
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"));
|
|
173
89
|
}
|
|
174
90
|
/**
|
|
175
91
|
* Apply visibility changes to the block's HTML structure
|
|
176
|
-
* Updates display style and data-visibility attribute for all matching rows
|
|
177
92
|
*/
|
|
178
|
-
_applyVisibilityToBlock(
|
|
179
|
-
if (
|
|
180
|
-
return;
|
|
181
|
-
const e = this.currentNode.querySelectorAll(`${l}[${a}="${t}"]`);
|
|
182
|
-
if (!(e != null && e.length))
|
|
93
|
+
_applyVisibilityToBlock() {
|
|
94
|
+
if (!this.currentNode)
|
|
183
95
|
return;
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
u.modifyHtml(_).setStyle("display", o).setAttribute(d, r);
|
|
187
|
-
}), 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"));
|
|
188
98
|
}
|
|
189
99
|
}
|
|
190
100
|
export {
|
|
191
|
-
|
|
192
|
-
|
|
101
|
+
h as COMPOSITION_CONTROL_BLOCK_ID,
|
|
102
|
+
g as RecommendationCardCompositionControl
|
|
193
103
|
};
|