@useinsider/guido 1.0.3-beta.57a0e76 → 1.0.3-beta.57a56eb
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 -3
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +48 -49
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -20
- package/dist/composables/useActionsApi.js +26 -43
- package/dist/composables/useBlocksConfig.js +2 -1
- package/dist/composables/useHtmlCompiler.js +13 -15
- package/dist/composables/useHtmlValidator.js +35 -36
- package/dist/composables/useStripo.js +44 -48
- package/dist/enums/extensions/recommendationBlock.js +2 -2
- package/dist/enums/onboarding.js +3 -7
- package/dist/extensions/Blocks/Checkbox/block.js +2 -5
- package/dist/extensions/Blocks/Checkbox/control.js +14 -15
- package/dist/extensions/Blocks/Checkbox/template.js +9 -14
- package/dist/extensions/Blocks/RadioButton/block.js +2 -5
- package/dist/extensions/Blocks/RadioButton/control.js +17 -18
- package/dist/extensions/Blocks/RadioButton/template.js +9 -18
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
- package/dist/extensions/Blocks/Unsubscribe/block.js +27 -27
- package/dist/extensions/Blocks/common-control.js +110 -174
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +168 -213
- package/dist/node_modules/lodash-es/_arrayLikeKeys.js +12 -13
- package/dist/node_modules/lodash-es/keysIn.js +3 -3
- package/dist/package.json.js +1 -1
- package/dist/services/recommendationApi.js +19 -13
- package/dist/src/composables/useActionsApi.d.ts +0 -2
- package/dist/src/enums/onboarding.d.ts +0 -4
- package/dist/src/extensions/Blocks/Checkbox/block.d.ts +0 -1
- package/dist/src/extensions/Blocks/Checkbox/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/RadioButton/block.d.ts +0 -1
- package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/common-control.d.ts +7 -44
- package/dist/src/stores/onboarding.d.ts +0 -334
- package/dist/static/styles/customEditorStyle.css.js +1 -1
- package/dist/stores/onboarding.js +12 -20
- package/dist/utils/genericUtil.js +17 -16
- package/package.json +4 -4
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +0 -21
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +0 -99
- package/dist/composables/useTimerClone.js +0 -53
- package/dist/config/compiler/itemsCompilerRules.js +0 -14
- package/dist/extensions/Blocks/Items/block.js +0 -67
- package/dist/extensions/Blocks/Items/controls/button/link.js +0 -68
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +0 -193
- package/dist/extensions/Blocks/Items/controls/image/link.js +0 -68
- package/dist/extensions/Blocks/Items/controls/index.js +0 -217
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +0 -70
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +0 -107
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +0 -123
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +0 -76
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -61
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +0 -312
- package/dist/extensions/Blocks/Items/enums/controlEnums.js +0 -5
- package/dist/extensions/Blocks/Items/enums/productEnums.js +0 -273
- package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -76
- package/dist/extensions/Blocks/Items/extension.js +0 -19
- package/dist/extensions/Blocks/Items/iconsRegistry.js +0 -32
- package/dist/extensions/Blocks/Items/items.css.js +0 -23
- package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +0 -62
- package/dist/extensions/Blocks/Items/layouts/vertical.html.js +0 -60
- package/dist/extensions/Blocks/Items/settingsPanel.js +0 -131
- package/dist/extensions/Blocks/Items/store/items-block.js +0 -71
- package/dist/extensions/Blocks/Items/template.js +0 -189
- package/dist/extensions/Blocks/Items/utils/configBlockUtils.js +0 -17
- package/dist/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.js +0 -28
- package/dist/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.js +0 -67
- package/dist/extensions/Blocks/Items/utils/updateAttributes.js +0 -44
- package/dist/extensions/Blocks/controlFactories.js +0 -223
- package/dist/node_modules/lodash-es/_DataView.js +0 -6
- package/dist/node_modules/lodash-es/_Promise.js +0 -6
- package/dist/node_modules/lodash-es/_Set.js +0 -6
- package/dist/node_modules/lodash-es/_SetCache.js +0 -13
- package/dist/node_modules/lodash-es/_WeakMap.js +0 -6
- package/dist/node_modules/lodash-es/_arrayFilter.js +0 -10
- package/dist/node_modules/lodash-es/_arrayMap.js +0 -8
- package/dist/node_modules/lodash-es/_arrayPush.js +0 -8
- package/dist/node_modules/lodash-es/_arraySome.js +0 -9
- package/dist/node_modules/lodash-es/_baseEach.js +0 -6
- package/dist/node_modules/lodash-es/_baseFlatten.js +0 -13
- package/dist/node_modules/lodash-es/_baseForOwn.js +0 -8
- package/dist/node_modules/lodash-es/_baseGet.js +0 -11
- package/dist/node_modules/lodash-es/_baseGetAllKeys.js +0 -9
- package/dist/node_modules/lodash-es/_baseHasIn.js +0 -6
- package/dist/node_modules/lodash-es/_baseIsEqual.js +0 -8
- package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +0 -32
- package/dist/node_modules/lodash-es/_baseIsMatch.js +0 -29
- package/dist/node_modules/lodash-es/_baseIteratee.js +0 -11
- package/dist/node_modules/lodash-es/_baseKeys.js +0 -14
- package/dist/node_modules/lodash-es/_baseMap.js +0 -11
- package/dist/node_modules/lodash-es/_baseMatches.js +0 -12
- package/dist/node_modules/lodash-es/_baseMatchesProperty.js +0 -17
- package/dist/node_modules/lodash-es/_baseProperty.js +0 -8
- package/dist/node_modules/lodash-es/_basePropertyDeep.js +0 -9
- package/dist/node_modules/lodash-es/_baseRange.js +0 -9
- package/dist/node_modules/lodash-es/_baseToString.js +0 -18
- package/dist/node_modules/lodash-es/_baseTrim.js +0 -8
- package/dist/node_modules/lodash-es/_cacheHas.js +0 -6
- package/dist/node_modules/lodash-es/_castPath.js +0 -10
- package/dist/node_modules/lodash-es/_createBaseEach.js +0 -15
- package/dist/node_modules/lodash-es/_createRange.js +0 -11
- package/dist/node_modules/lodash-es/_equalArrays.js +0 -40
- package/dist/node_modules/lodash-es/_equalByTag.js +0 -45
- package/dist/node_modules/lodash-es/_equalObjects.js +0 -36
- package/dist/node_modules/lodash-es/_getAllKeys.js +0 -9
- package/dist/node_modules/lodash-es/_getMatchData.js +0 -12
- package/dist/node_modules/lodash-es/_getSymbols.js +0 -10
- package/dist/node_modules/lodash-es/_getTag.js +0 -28
- package/dist/node_modules/lodash-es/_hasPath.js +0 -19
- package/dist/node_modules/lodash-es/_isFlattenable.js +0 -10
- package/dist/node_modules/lodash-es/_isKey.js +0 -12
- package/dist/node_modules/lodash-es/_isStrictComparable.js +0 -7
- package/dist/node_modules/lodash-es/_mapToArray.js +0 -9
- package/dist/node_modules/lodash-es/_matchesStrictComparable.js +0 -8
- package/dist/node_modules/lodash-es/_memoizeCapped.js +0 -11
- package/dist/node_modules/lodash-es/_nativeKeys.js +0 -5
- package/dist/node_modules/lodash-es/_setCacheAdd.js +0 -7
- package/dist/node_modules/lodash-es/_setCacheHas.js +0 -6
- package/dist/node_modules/lodash-es/_setToArray.js +0 -9
- package/dist/node_modules/lodash-es/_stringToPath.js +0 -10
- package/dist/node_modules/lodash-es/_toKey.js +0 -10
- package/dist/node_modules/lodash-es/_trimmedEndIndex.js +0 -9
- package/dist/node_modules/lodash-es/flatMap.js +0 -8
- package/dist/node_modules/lodash-es/get.js +0 -8
- package/dist/node_modules/lodash-es/hasIn.js +0 -8
- package/dist/node_modules/lodash-es/isSymbol.js +0 -9
- package/dist/node_modules/lodash-es/keys.js +0 -9
- package/dist/node_modules/lodash-es/map.js +0 -11
- package/dist/node_modules/lodash-es/property.js +0 -10
- package/dist/node_modules/lodash-es/range.js +0 -5
- package/dist/node_modules/lodash-es/stubArray.js +0 -6
- package/dist/node_modules/lodash-es/toFinite.js +0 -14
- package/dist/node_modules/lodash-es/toNumber.js +0 -22
- package/dist/node_modules/lodash-es/toString.js +0 -7
- package/dist/src/components/organisms/onboarding/ItemsOnboarding.vue.d.ts +0 -2
- package/dist/src/composables/useTimerClone.d.ts +0 -6
- package/dist/src/config/compiler/itemsCompilerRules.d.ts +0 -2
- package/dist/src/extensions/Blocks/Items/block.d.ts +0 -27
- package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -33
- package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/index.d.ts +0 -501
- package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -19
- package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -21
- package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -13
- package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -48
- package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +0 -61
- package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +0 -162
- package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -49
- package/dist/src/extensions/Blocks/Items/extension.d.ts +0 -2
- package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +0 -4
- package/dist/src/extensions/Blocks/Items/settingsPanel.d.ts +0 -4
- package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -41
- package/dist/src/extensions/Blocks/Items/template.d.ts +0 -24
- package/dist/src/extensions/Blocks/Items/utils/configBlockUtils.d.ts +0 -23
- package/dist/src/extensions/Blocks/Items/utils/syncAttributeFromConfigBlock.d.ts +0 -32
- package/dist/src/extensions/Blocks/Items/utils/syncAttributesFromConfigBlock.d.ts +0 -44
- package/dist/src/extensions/Blocks/Items/utils/updateAttributes.d.ts +0 -8
- package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -312
- package/dist/src/utils/pairProductVariables.d.ts +0 -7
- package/dist/utils/pairProductVariables.js +0 -136
package/README.md
CHANGED
|
@@ -600,9 +600,6 @@ Create a `.env` file with the following variables: (You can get env variables fr
|
|
|
600
600
|
VITE_STRIPO_PLUGIN_ID=your_plugin_id
|
|
601
601
|
VITE_STRIPO_SECRET_KEY=your_secret_key
|
|
602
602
|
VITE_STRIPO_ROLE=your_role
|
|
603
|
-
|
|
604
|
-
# Playwright Test Configuration (Optional - for local debugging only)
|
|
605
|
-
HEADED=false # Set to 'true' to run tests with visible browser
|
|
606
603
|
```
|
|
607
604
|
|
|
608
605
|
### Project Structure
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { provideGuidoActions as
|
|
3
|
-
import { usePartner as
|
|
4
|
-
import { useStripo as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
const Ae = /* @__PURE__ */ z({
|
|
1
|
+
import { defineComponent as O, defineAsyncComponent as I, ref as z, computed as U, watch as B, onMounted as K, onUnmounted as j } from "vue";
|
|
2
|
+
import { provideGuidoActions as q } from "../composables/useGuidoActions.js";
|
|
3
|
+
import { usePartner as J } from "../composables/usePartner.js";
|
|
4
|
+
import { useStripo as Q } from "../composables/useStripo.js";
|
|
5
|
+
import { migrate as L } from "../config/migrator/index.js";
|
|
6
|
+
import { DefaultUsername as V, DefaultMessageType as X, DefaultGuidoConfig as Y } from "../enums/defaults.js";
|
|
7
|
+
import Z from "./organisms/base/Toaster.vue.js";
|
|
8
|
+
import $ from "./organisms/extensions/recommendation/FilterSelectionDrawer.vue.js";
|
|
9
|
+
import ee from "./organisms/header/HeaderWrapper.vue.js";
|
|
10
|
+
import oe from "./organisms/LoadingWrapper.vue.js";
|
|
11
|
+
import te from "./organisms/save-as-template/SaveAsTemplateDrawer.vue.js";
|
|
12
|
+
import ne from "./organisms/unsubscribe/UnsubscribeWrapper.vue.js";
|
|
13
|
+
import { useStripoApi as re } from "../services/stripoApi.js";
|
|
14
|
+
import { useConfigStore as ie } from "../stores/config.js";
|
|
15
|
+
import { useDynamicContentStore as se } from "../stores/dynamic-content.js";
|
|
16
|
+
import { useEditorStore as ae } from "../stores/editor.js";
|
|
17
|
+
import { usePreviewStore as ce } from "../stores/preview.js";
|
|
18
|
+
import { useUnsubscribeStore as me } from "../stores/unsubscribe.js";
|
|
19
|
+
import de from "../node_modules/lodash-es/merge.js";
|
|
20
|
+
const Ue = /* @__PURE__ */ O({
|
|
22
21
|
__name: "Guido",
|
|
23
22
|
props: {
|
|
24
23
|
templateId: null,
|
|
@@ -33,34 +32,34 @@ const Ae = /* @__PURE__ */ z({
|
|
|
33
32
|
templateConfig: null
|
|
34
33
|
},
|
|
35
34
|
emits: ["dynamic-content:open", "back", "save:start", "save:complete", "on-change", "ready", "onboarding:finished", "test-email:click"],
|
|
36
|
-
setup(
|
|
37
|
-
const u =
|
|
35
|
+
setup(W, { expose: _, emit: o }) {
|
|
36
|
+
const u = W, A = I(
|
|
38
37
|
() => import("./organisms/email-preview/PreviewContainer.vue.js")
|
|
39
|
-
),
|
|
38
|
+
), N = I(
|
|
40
39
|
() => import("./organisms/onboarding/OnboardingWrapper.vue.js")
|
|
41
|
-
), p =
|
|
40
|
+
), p = z(), i = se(), g = me(), f = ie(), s = ae(), F = ce(), n = U(() => s.hasChanges), { getPartnerName: y, getProductType: v, isTestPartner: H } = J(), b = () => {
|
|
42
41
|
var e;
|
|
43
42
|
return (e = p.value) == null ? void 0 : e.handleSave(!0);
|
|
44
43
|
}, {
|
|
45
44
|
templateId: a,
|
|
46
|
-
userId:
|
|
47
|
-
guidoConfig:
|
|
45
|
+
userId: C,
|
|
46
|
+
guidoConfig: h,
|
|
48
47
|
templateConfig: t,
|
|
49
48
|
html: r = "",
|
|
50
49
|
css: S = "",
|
|
51
50
|
partnerName: c = y(),
|
|
52
51
|
productType: m = v(),
|
|
53
|
-
messageType: w =
|
|
54
|
-
username: D =
|
|
52
|
+
messageType: w = X,
|
|
53
|
+
username: D = V
|
|
55
54
|
} = u, d = (t == null ? void 0 : t.preselectedDynamicContentList) || [];
|
|
56
|
-
s.templateId = a, window.GuidoConfig =
|
|
55
|
+
s.templateId = a, window.GuidoConfig = de(Y, h), window.GuidoConfig.partner = {
|
|
57
56
|
partnerName: c,
|
|
58
57
|
productType: m,
|
|
59
58
|
messageType: w
|
|
60
59
|
}, f.templateConfig = t;
|
|
61
|
-
const { initPlugin:
|
|
60
|
+
const { initPlugin: E } = Q({
|
|
62
61
|
emailId: a,
|
|
63
|
-
userId:
|
|
62
|
+
userId: C,
|
|
64
63
|
username: D,
|
|
65
64
|
partnerName: c,
|
|
66
65
|
productType: m,
|
|
@@ -68,11 +67,11 @@ const Ae = /* @__PURE__ */ z({
|
|
|
68
67
|
onReady: () => {
|
|
69
68
|
console.debug("guido:ready"), o("ready");
|
|
70
69
|
}
|
|
71
|
-
}), { getDefaultTemplate:
|
|
70
|
+
}), { getDefaultTemplate: T } = re(), R = U(() => {
|
|
72
71
|
var e;
|
|
73
72
|
return !((e = window.GuidoConfig) != null && e.useHeader);
|
|
74
73
|
});
|
|
75
|
-
|
|
74
|
+
q({
|
|
76
75
|
onBack: () => {
|
|
77
76
|
console.debug("guido:back"), o("back");
|
|
78
77
|
},
|
|
@@ -86,50 +85,50 @@ const Ae = /* @__PURE__ */ z({
|
|
|
86
85
|
console.debug("guido:test-email:click"), o("test-email:click");
|
|
87
86
|
}
|
|
88
87
|
});
|
|
89
|
-
const
|
|
88
|
+
const P = (e) => {
|
|
90
89
|
console.debug("dynamic-content:close", e), i.setSelectedDynamicContent(e), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: e }));
|
|
91
|
-
},
|
|
90
|
+
}, k = () => {
|
|
92
91
|
console.debug("dynamic-content:close", "Without Data"), document.dispatchEvent(new CustomEvent("dynamic-content:close", { detail: { text: "", value: "" } }));
|
|
93
92
|
};
|
|
94
|
-
|
|
93
|
+
B(() => n.value, () => {
|
|
95
94
|
o("on-change", n.value);
|
|
96
95
|
});
|
|
97
96
|
const l = (e) => {
|
|
98
|
-
const
|
|
99
|
-
console.debug("dynamic-content:open",
|
|
97
|
+
const G = e, { attribute: x, position: M } = G.detail;
|
|
98
|
+
console.debug("dynamic-content:open", G.detail), o("dynamic-content:open", x, M);
|
|
100
99
|
};
|
|
101
|
-
return
|
|
100
|
+
return K(async () => {
|
|
102
101
|
console.debug("Guido says happy coding 🎉"), console.debug("🚗 Ka-Chow");
|
|
103
102
|
try {
|
|
104
103
|
g.selectedUnsubscribePages = (t == null ? void 0 : t.selectedUnsubscribePages) || [];
|
|
105
104
|
let e = {
|
|
106
|
-
html: r && await
|
|
105
|
+
html: r && await L(r),
|
|
107
106
|
css: S,
|
|
108
107
|
forceRecreate: !0
|
|
109
108
|
// TODO: It should be false for old templates. We will communicate with Stripo
|
|
110
109
|
};
|
|
111
|
-
e.html || (e = await
|
|
110
|
+
e.html || (e = await T(), e.html = await L(e.html)), await E(e), i.selectedDynamicContentList = d;
|
|
112
111
|
} catch (e) {
|
|
113
112
|
console.error("Failed to initialize Stripo editor:", e);
|
|
114
113
|
}
|
|
115
114
|
document.addEventListener("dynamic-content:open", l);
|
|
116
|
-
}),
|
|
115
|
+
}), j(() => {
|
|
117
116
|
document.removeEventListener("dynamic-content:open", l);
|
|
118
117
|
try {
|
|
119
118
|
window.UIEditor.removeEditor();
|
|
120
119
|
} catch {
|
|
121
120
|
console.debug("Failed to remove Stripo editor: No editor found");
|
|
122
121
|
}
|
|
123
|
-
}),
|
|
122
|
+
}), _({
|
|
124
123
|
dynamicContent: {
|
|
125
|
-
insert:
|
|
126
|
-
close:
|
|
124
|
+
insert: P,
|
|
125
|
+
close: k
|
|
127
126
|
},
|
|
128
127
|
hasChanges: n,
|
|
129
|
-
saveSilent:
|
|
130
|
-
}), { __sfc: !0, PreviewContainer:
|
|
128
|
+
saveSilent: b
|
|
129
|
+
}), { __sfc: !0, PreviewContainer: A, OnboardingWrapper: N, headerWrapperRef: p, dynamicContentStore: i, unsubscribeStore: g, props: u, configStore: f, editorStore: s, previewStore: F, hasChanges: n, getPartnerName: y, getProductType: v, isTestPartner: H, saveSilent: b, templateId: a, userId: C, guidoConfig: h, templateConfig: t, html: r, css: S, partnerName: c, productType: m, messageType: w, username: D, preselectedDynamicContentList: d, emit: o, initPlugin: E, getDefaultTemplate: T, noHeader: R, insertDynamicContent: P, closeDynamicContent: k, handleDynamicContentOpen: l, Toaster: Z, FilterSelectionDrawer: $, HeaderWrapper: ee, LoadingWrapper: oe, SaveAsTemplateDrawer: te, UnsubscribeWrapper: ne };
|
|
131
130
|
}
|
|
132
131
|
});
|
|
133
132
|
export {
|
|
134
|
-
|
|
133
|
+
Ue as default
|
|
135
134
|
};
|
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
import { defineComponent as b, computed as e, onMounted as O, watch as t } from "vue";
|
|
2
|
-
import u from "
|
|
3
|
-
import v from "
|
|
4
|
-
import l from "
|
|
5
|
-
import y from "
|
|
6
|
-
import S from "./
|
|
7
|
-
import h from "./
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
const G = /* @__PURE__ */ b({
|
|
2
|
+
import { usePartner as u } from "../../../composables/usePartner.js";
|
|
3
|
+
import { useEditorStore as v } from "../../../stores/editor.js";
|
|
4
|
+
import { useOnboardingStore as l } from "../../../stores/onboarding.js";
|
|
5
|
+
import { usePreviewStore as y } from "../../../stores/preview.js";
|
|
6
|
+
import S from "./AMPOnboarding.vue.js";
|
|
7
|
+
import h from "./GenericOnboarding.vue.js";
|
|
8
|
+
import w from "./NewVersionPopup.vue.js";
|
|
9
|
+
import P from "./TextBlockOnboarding.vue.js";
|
|
10
|
+
import _ from "./VersionHistoryOnboarding.vue.js";
|
|
11
|
+
const F = /* @__PURE__ */ b({
|
|
13
12
|
__name: "OnboardingWrapper",
|
|
14
13
|
emits: ["onboarding-finished"],
|
|
15
|
-
setup(
|
|
16
|
-
const o =
|
|
17
|
-
{ type: "newVersionPopup", component:
|
|
18
|
-
{ type: "genericOnboarding", component:
|
|
19
|
-
{ type: "textBlockOnboarding", component:
|
|
20
|
-
{ type: "versionHistoryOnboarding", component:
|
|
21
|
-
{ type: "ampOnboarding", component:
|
|
22
|
-
{ type: "itemsOnboarding", component: l }
|
|
14
|
+
setup(A, { emit: f }) {
|
|
15
|
+
const o = l(), r = v(), s = y(), { isTestPartner: a } = u(), p = e(() => r.isStripoInitialized), d = e(() => a()), m = [
|
|
16
|
+
{ type: "newVersionPopup", component: w },
|
|
17
|
+
{ type: "genericOnboarding", component: h },
|
|
18
|
+
{ type: "textBlockOnboarding", component: P },
|
|
19
|
+
{ type: "versionHistoryOnboarding", component: _ },
|
|
20
|
+
{ type: "ampOnboarding", component: S }
|
|
23
21
|
], c = (n) => d.value || !p.value ? !1 : n === "newVersionPopup" ? o.shouldShowOnboarding(n) : o.isActive(n), g = e(() => m.filter((n) => c(n.type)));
|
|
24
22
|
return O(async () => {
|
|
25
23
|
await o.fetchUserModalState();
|
|
@@ -42,5 +40,5 @@ const G = /* @__PURE__ */ b({
|
|
|
42
40
|
}
|
|
43
41
|
});
|
|
44
42
|
export {
|
|
45
|
-
|
|
43
|
+
F as default
|
|
46
44
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useToaster as
|
|
2
|
-
const
|
|
3
|
-
const { handleError: l } =
|
|
4
|
-
const
|
|
1
|
+
import { useToaster as g } from "./useToaster.js";
|
|
2
|
+
const A = () => {
|
|
3
|
+
const { handleError: l } = g(), n = (t = {}) => new Promise((e, a) => {
|
|
4
|
+
const i = { ...{
|
|
5
5
|
minimize: !0,
|
|
6
6
|
utmEntity: {
|
|
7
7
|
utmSource: "",
|
|
@@ -17,32 +17,32 @@ const S = () => {
|
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
19
|
mergeTags: ["Tag1", "Tag2"],
|
|
20
|
-
|
|
20
|
+
forseAmp: !1,
|
|
21
21
|
resetDataSavedFlag: !1,
|
|
22
22
|
disableLineHeightsReplace: !0
|
|
23
23
|
}, ...t }, m = {
|
|
24
|
-
callback: (
|
|
25
|
-
|
|
26
|
-
html:
|
|
27
|
-
ampHtml:
|
|
28
|
-
ampErrors:
|
|
29
|
-
displayConditions:
|
|
24
|
+
callback: (s, c, p, u, d) => {
|
|
25
|
+
s ? a(s) : e({
|
|
26
|
+
html: c,
|
|
27
|
+
ampHtml: p,
|
|
28
|
+
ampErrors: u,
|
|
29
|
+
displayConditions: d
|
|
30
30
|
});
|
|
31
31
|
},
|
|
32
|
-
...
|
|
32
|
+
...i
|
|
33
33
|
};
|
|
34
34
|
window.StripoEditorApi.actionsApi.compileEmail(m);
|
|
35
35
|
});
|
|
36
36
|
return {
|
|
37
|
-
getCompiledEmail:
|
|
37
|
+
getCompiledEmail: n,
|
|
38
38
|
getTemplateData: () => new Promise((t) => {
|
|
39
|
-
const e = ({ html:
|
|
40
|
-
html:
|
|
41
|
-
css:
|
|
42
|
-
width:
|
|
39
|
+
const e = ({ html: a, css: o, width: i, height: r, utmParams: m, syncModulesIds: s }) => t({
|
|
40
|
+
html: a,
|
|
41
|
+
css: o,
|
|
42
|
+
width: i,
|
|
43
43
|
height: r,
|
|
44
44
|
utmParams: m,
|
|
45
|
-
syncModulesIds:
|
|
45
|
+
syncModulesIds: s
|
|
46
46
|
});
|
|
47
47
|
window.StripoEditorApi.actionsApi.getTemplateData(e);
|
|
48
48
|
}),
|
|
@@ -53,15 +53,15 @@ const S = () => {
|
|
|
53
53
|
try {
|
|
54
54
|
const {
|
|
55
55
|
html: e,
|
|
56
|
-
displayConditions:
|
|
57
|
-
ampHtml:
|
|
58
|
-
ampErrors:
|
|
59
|
-
} = await
|
|
56
|
+
displayConditions: a,
|
|
57
|
+
ampHtml: o = "",
|
|
58
|
+
ampErrors: i = []
|
|
59
|
+
} = await n({ minimize: !1, resetDataSavedFlag: !1, ...t });
|
|
60
60
|
return {
|
|
61
61
|
html: e,
|
|
62
|
-
ampHtml:
|
|
63
|
-
ampErrors:
|
|
64
|
-
displayConditions:
|
|
62
|
+
ampHtml: o,
|
|
63
|
+
ampErrors: i,
|
|
64
|
+
displayConditions: a
|
|
65
65
|
};
|
|
66
66
|
} catch (e) {
|
|
67
67
|
return l(e, "Error loading preview"), {
|
|
@@ -71,26 +71,9 @@ const S = () => {
|
|
|
71
71
|
displayConditions: []
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
-
},
|
|
75
|
-
updateTimerInClonedTemplate: () => new Promise((t) => {
|
|
76
|
-
var e, i;
|
|
77
|
-
if (typeof ((i = (e = window.StripoEditorApi) == null ? void 0 : e.actionsApi) == null ? void 0 : i.updateTimerInClonedTemplate) != "function") {
|
|
78
|
-
t(null);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
window.StripoEditorApi.actionsApi.updateTimerInClonedTemplate((a, n) => {
|
|
83
|
-
a ? (l(a, "Failed to update timer in cloned template"), t(null)) : t(n || null);
|
|
84
|
-
});
|
|
85
|
-
} catch (a) {
|
|
86
|
-
l(a, "Failed to call updateTimerInClonedTemplate"), t(null);
|
|
87
|
-
}
|
|
88
|
-
}),
|
|
89
|
-
updateHtmlAndCss: (t, e) => {
|
|
90
|
-
window.StripoEditorApi.actionsApi.updateHtmlAndCss(t, e);
|
|
91
74
|
}
|
|
92
75
|
};
|
|
93
76
|
};
|
|
94
77
|
export {
|
|
95
|
-
|
|
78
|
+
A as useActionsApi
|
|
96
79
|
};
|
|
@@ -19,7 +19,8 @@ const l = {
|
|
|
19
19
|
"recommendation-block": () => import("../extensions/Blocks/Recommendation/extension.js"),
|
|
20
20
|
"unsubscribe-block": () => import("../extensions/Blocks/Unsubscribe/extension.js"),
|
|
21
21
|
"coupon-block": () => import("../extensions/Blocks/CouponBlock/extension.js"),
|
|
22
|
-
"items-block":
|
|
22
|
+
"items-block": null
|
|
23
|
+
// TODO: Add ItemsBlock extension when available
|
|
23
24
|
}, a = (n) => {
|
|
24
25
|
if (!n || !n.length)
|
|
25
26
|
return {};
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { defaultHtmlCompilerRules as t } from "../config/compiler/htmlCompilerRules.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const { config: e } = R(), m = e.htmlCompilerRules || [], l = [
|
|
2
|
+
import { outlookCompilerRules as p } from "../config/compiler/outlookCompilerRules.js";
|
|
3
|
+
import { recommendationCompilerRules as s } from "../config/compiler/recommendationCompilerRules.js";
|
|
4
|
+
import { socialCompilerRules as u } from "../config/compiler/socialCompilerRules.js";
|
|
5
|
+
import { unsubscribeCompilerRules as n } from "../config/compiler/unsubscribeCompilerRules.js";
|
|
6
|
+
import { createHtmlCompiler as c } from "../utils/htmlCompiler.js";
|
|
7
|
+
import { useConfig as f } from "./useConfig.js";
|
|
8
|
+
const h = () => {
|
|
9
|
+
const { config: e } = f(), l = e.htmlCompilerRules || [], m = [
|
|
11
10
|
...!!e.ignoreDefaultHtmlCompilerRules ? [] : t,
|
|
12
|
-
...u,
|
|
13
|
-
...c,
|
|
14
|
-
...p,
|
|
15
11
|
...s,
|
|
16
12
|
...n,
|
|
17
|
-
...
|
|
13
|
+
...p,
|
|
14
|
+
...u,
|
|
15
|
+
...l.map((o, i) => ({
|
|
18
16
|
...o,
|
|
19
17
|
priority: o.priority + 1e3 + i
|
|
20
18
|
// Ensure additional rules run after default rules
|
|
21
19
|
}))
|
|
22
|
-
], r =
|
|
20
|
+
], r = c(m);
|
|
23
21
|
return { compileHtml: (o) => r.compile(o) };
|
|
24
22
|
};
|
|
25
23
|
export {
|
|
26
|
-
|
|
24
|
+
h as useHtmlCompiler
|
|
27
25
|
};
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import { useConfig as
|
|
2
|
-
import { TemplateTypes as
|
|
3
|
-
import { DISPLAY_CONDITIONS_REGEX as
|
|
1
|
+
import { useConfig as H } from "./useConfig.js";
|
|
2
|
+
import { TemplateTypes as V } from "../enums/defaults.js";
|
|
3
|
+
import { DISPLAY_CONDITIONS_REGEX as D, DISPLAY_CONDITIONS_EXCEPTIONS_REGEX as P, CampaignCouldNotBeSavedKey as R, CanNotMakeAnyChangesForRunningKey as _ } from "../enums/html-validator.js";
|
|
4
4
|
import { ToasterTypeOptions as l } from "../enums/toaster.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
const ie = () => {
|
|
5
|
+
import { useRecommendationStore as G } from "../stores/recommendation.js";
|
|
6
|
+
import { base64EncodeWithSpecialChars as $ } from "../utils/base64.js";
|
|
7
|
+
import { useHttp as j } from "./useHttp.js";
|
|
8
|
+
import { useToaster as q } from "./useToaster.js";
|
|
9
|
+
import { useTranslations as M } from "./useTranslations.js";
|
|
10
|
+
const se = () => {
|
|
12
11
|
var d;
|
|
13
|
-
const { showToaster: c } =
|
|
12
|
+
const { showToaster: c } = q(), { post: y } = j(), { config: h } = H(), a = M(), m = G(), u = ((d = h.partner) == null ? void 0 : d.messageType) === V.transactional, v = async (e) => {
|
|
14
13
|
const t = await y(
|
|
15
14
|
"/newsletter/template-library/check-template-html-body",
|
|
16
|
-
{ html:
|
|
15
|
+
{ html: $(e) }
|
|
17
16
|
), { status: n, message: r } = t.data;
|
|
18
17
|
return n || c({
|
|
19
18
|
type: l.Alert,
|
|
@@ -26,10 +25,10 @@ const ie = () => {
|
|
|
26
25
|
const t = e.match(/({%(.*?)%})/g);
|
|
27
26
|
let n = !0;
|
|
28
27
|
return t !== null && !u && t.forEach((r) => {
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
const [
|
|
32
|
-
C(
|
|
28
|
+
const o = r.slice(2, -2).trim().match(/(".*?"|[^"\s]+)(?=\s*|\s*$)/g);
|
|
29
|
+
if (o && o.length > 0) {
|
|
30
|
+
const [i] = o;
|
|
31
|
+
C(i) && !s.includes(i) && (c({
|
|
33
32
|
type: l.Warning,
|
|
34
33
|
message: a("custom-fields.invalid-custom-fields")
|
|
35
34
|
}), n = !1);
|
|
@@ -59,19 +58,19 @@ const ie = () => {
|
|
|
59
58
|
}, k = (e, s) => {
|
|
60
59
|
const t = e.match(/{{([a-zA-Z0-9_\s]*)}}/gm);
|
|
61
60
|
if (t && !u) {
|
|
62
|
-
const n = new Set(s.map((
|
|
63
|
-
if (t.forEach((
|
|
64
|
-
const
|
|
65
|
-
(!n.has(
|
|
61
|
+
const n = new Set(s.map((o) => o.toLowerCase())), r = [];
|
|
62
|
+
if (t.forEach((o) => {
|
|
63
|
+
const i = o.slice(2, -2).trim().toLowerCase();
|
|
64
|
+
(!n.has(i) || i === "") && r.push(i);
|
|
66
65
|
}), r.length > 0) {
|
|
67
|
-
const
|
|
66
|
+
const o = `
|
|
68
67
|
<ul>
|
|
69
|
-
${r.map((
|
|
68
|
+
${r.map((i) => `<li>${i}</li>`).join("")}
|
|
70
69
|
</ul>
|
|
71
70
|
`;
|
|
72
71
|
return c({
|
|
73
72
|
type: l.Alert,
|
|
74
|
-
message: a("custom-fields.invalid-custom-fields") +
|
|
73
|
+
message: a("custom-fields.invalid-custom-fields") + o
|
|
75
74
|
}), !1;
|
|
76
75
|
}
|
|
77
76
|
}
|
|
@@ -80,11 +79,11 @@ const ie = () => {
|
|
|
80
79
|
const s = e.match(/{%(.*?)%}/g), t = [];
|
|
81
80
|
let n = !0;
|
|
82
81
|
if (s && s.forEach((r) => {
|
|
83
|
-
const
|
|
84
|
-
(!
|
|
82
|
+
const o = r.match(D), i = r.match(P), B = (o == null ? void 0 : o.join("")) || "";
|
|
83
|
+
(!o || r !== B) && !i && (c({
|
|
85
84
|
type: l.Alert,
|
|
86
85
|
message: a("newsletter.display-conditions-invalid-syntax")
|
|
87
|
-
}), n = !1),
|
|
86
|
+
}), n = !1), o && o.forEach((f) => {
|
|
88
87
|
f.trim() === "=" && (c({
|
|
89
88
|
type: l.Alert,
|
|
90
89
|
message: a("custom-conditions.wrong-equality-operators")
|
|
@@ -95,8 +94,8 @@ const ie = () => {
|
|
|
95
94
|
});
|
|
96
95
|
});
|
|
97
96
|
}), t.length) {
|
|
98
|
-
const r = t.filter((
|
|
99
|
-
r.length !==
|
|
97
|
+
const r = t.filter((i) => i === "if"), o = t.filter((i) => i === "endif");
|
|
98
|
+
r.length !== o.length && (c({
|
|
100
99
|
type: l.Alert,
|
|
101
100
|
message: a("custom-conditions.missing-if-endif-tag")
|
|
102
101
|
}), n = !1);
|
|
@@ -122,28 +121,28 @@ const ie = () => {
|
|
|
122
121
|
}), !1);
|
|
123
122
|
}, N = (e) => {
|
|
124
123
|
const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".checkbox-block-v2");
|
|
125
|
-
return Array.from(n).find((
|
|
126
|
-
var
|
|
127
|
-
return !((
|
|
124
|
+
return Array.from(n).find((o) => {
|
|
125
|
+
var i;
|
|
126
|
+
return !((i = o.id) != null && i.trim());
|
|
128
127
|
}) ? (c({
|
|
129
128
|
type: l.Alert,
|
|
130
129
|
message: a("unsubscribe-templates.select-checkbox-groups")
|
|
131
130
|
}), !1) : !0;
|
|
132
131
|
}, O = (e) => {
|
|
133
132
|
const n = new DOMParser().parseFromString(e, "text/html").querySelectorAll(".radio-button-v2");
|
|
134
|
-
return Array.from(n).find((
|
|
135
|
-
var
|
|
136
|
-
return !((
|
|
133
|
+
return Array.from(n).find((o) => {
|
|
134
|
+
var i;
|
|
135
|
+
return !((i = o.id) != null && i.trim());
|
|
137
136
|
}) ? (c({
|
|
138
137
|
type: l.Alert,
|
|
139
138
|
message: a("unsubscribe-templates.select-radio-button-groups")
|
|
140
139
|
}), !1) : !0;
|
|
141
140
|
};
|
|
142
141
|
return { validateHtml: async (e, s, t = !1) => {
|
|
143
|
-
const n =
|
|
142
|
+
const n = s.map((o) => o.value);
|
|
144
143
|
return await b(e, n, t) && E(e) && A(e) && x(e) && k(e, n) && T(e) && F(e) && I(e) && W() && L(e) && N(e) && O(e);
|
|
145
144
|
} };
|
|
146
145
|
};
|
|
147
146
|
export {
|
|
148
|
-
|
|
147
|
+
se as useHtmlValidator
|
|
149
148
|
};
|