@useinsider/guido 1.0.2-beta.94d67e3 → 1.0.2-beta.9fa711f
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 +2 -2
- package/dist/components/Guido.vue2.js +25 -27
- package/dist/components/organisms/email-preview/amp/AmpToggle.vue2.js +14 -15
- package/dist/components/organisms/header/RightSlot.vue.js +1 -1
- package/dist/components/organisms/header/RightSlot.vue2.js +21 -27
- package/dist/components/organisms/header/ViewOptions.vue.js +11 -11
- package/dist/components/organisms/header/ViewOptions.vue2.js +14 -14
- package/dist/composables/useHtmlCompiler.js +17 -9
- package/dist/composables/useHtmlValidator.d.ts +3 -0
- package/dist/composables/useHtmlValidator.js +120 -0
- package/dist/composables/usePartner.d.ts +0 -1
- package/dist/composables/usePartner.js +9 -16
- package/dist/composables/usePreviewMode.js +14 -15
- package/dist/composables/useRecommendation.d.ts +19 -0
- package/dist/composables/useRecommendation.js +27 -0
- package/dist/composables/useSave.d.ts +3 -0
- package/dist/composables/useSave.js +14 -0
- package/dist/composables/useStripo.js +35 -37
- package/dist/config/compiler/outlookCompilerRules.d.ts +2 -0
- package/dist/config/compiler/outlookCompilerRules.js +36 -0
- package/dist/config/compiler/recommendationCompilerRules.d.ts +2 -0
- package/dist/config/compiler/recommendationCompilerRules.js +83 -0
- package/dist/config/compiler/socialCompilerRules.d.ts +2 -0
- package/dist/config/compiler/socialCompilerRules.js +21 -0
- package/dist/config/compiler/unsubscribeCompilerRules.d.ts +2 -0
- package/dist/config/compiler/unsubscribeCompilerRules.js +64 -0
- package/dist/enums/defaults.d.ts +5 -2
- package/dist/enums/defaults.js +9 -37
- package/dist/enums/html-validator.d.ts +6 -0
- package/dist/enums/html-validator.js +7 -0
- package/dist/enums/recommendation.d.ts +54 -0
- package/dist/enums/recommendation.js +56 -0
- package/dist/enums/unsubscribe.d.ts +15 -0
- package/dist/enums/unsubscribe.js +17 -0
- package/dist/guido.css +1 -1
- package/dist/stores/editor.d.ts +0 -21
- package/dist/stores/editor.js +1 -2
- package/dist/stores/preview.js +6 -14
- package/dist/stores/recommendation.d.ts +10 -0
- package/dist/stores/recommendation.js +9 -0
- package/dist/stores/unsubscribe.d.ts +8 -0
- package/dist/stores/unsubscribe.js +9 -0
- package/dist/utils/templatePreparation.js +21 -14
- package/package.json +4 -2
- package/dist/components/organisms/onboarding/AMPOnboarding.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/AMPOnboarding.vue.js +0 -20
- package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +0 -39
- package/dist/components/organisms/onboarding/GenericOnboarding.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +0 -21
- package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +0 -85
- package/dist/components/organisms/onboarding/NewVersionPopup.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +0 -17
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +0 -30
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +0 -19
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +0 -27
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +0 -21
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +0 -64
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts +0 -2
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue.js +0 -20
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +0 -39
- package/dist/composables/useStripoEventHandler.d.ts +0 -3
- package/dist/composables/useStripoEventHandler.js +0 -20
- package/dist/enums/onboarding.d.ts +0 -1
- package/dist/enums/onboarding.js +0 -8
- package/dist/services/onboardingApi.d.ts +0 -4
- package/dist/services/onboardingApi.js +0 -23
- package/dist/static/assets/onboarding-img.svg.js +0 -4
- package/dist/stores/onboarding.d.ts +0 -1527
- package/dist/stores/onboarding.js +0 -112
- /package/dist/mock/api/{user-modal-state.d.ts → validator.d.ts} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useSaveStart as r, useSaveComplete as i } from "./useGuidoActions.js";
|
|
2
|
+
import { useTemplatePreparation as m } from "../utils/templatePreparation.js";
|
|
3
|
+
import { useHtmlValidator as l } from "./useHtmlValidator.js";
|
|
4
|
+
const d = () => {
|
|
5
|
+
const e = r(), a = i(), { validateHtml: s } = l();
|
|
6
|
+
return { save: async () => {
|
|
7
|
+
e();
|
|
8
|
+
const { prepareTemplateDetails: o } = m(), t = await o();
|
|
9
|
+
await s(t.compiledHtml, [], !0) && a(t);
|
|
10
|
+
} };
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
d as useSave
|
|
14
|
+
};
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import { useActionsApi as
|
|
1
|
+
import { useActionsApi as g } from "./useActionsApi.js";
|
|
2
2
|
import { useCustomInterfaceAppearance as f } from "./useCustomInterfaceAppearance.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
const o = V(), { html: e, css: s, forceRecreate: g } = r;
|
|
3
|
+
import { useToaster as S } from "./useToaster.js";
|
|
4
|
+
import { displayConditions as C } from "../enums/displayConditions.js";
|
|
5
|
+
import y from "../extensions/DynamicContent/extension.js";
|
|
6
|
+
import { useStripoApi as E } from "../services/stripoApi.js";
|
|
7
|
+
import h from "../static/styles/customEditorStyle.css.js";
|
|
8
|
+
import { useEditorStore as w } from "../stores/editor.js";
|
|
9
|
+
import { dynamicContentToMergeTags as b } from "../utils/genericUtil.js";
|
|
10
|
+
const P = (d) => {
|
|
11
|
+
const { handleError: a } = S(), { getToken: c, getCustomFonts: u } = E(), l = (r, i = []) => {
|
|
12
|
+
const e = w(), { html: o, css: s, forceRecreate: p } = r;
|
|
14
13
|
window.UIEditor.initEditor(
|
|
15
14
|
document.querySelector("#guido-editor"),
|
|
16
15
|
{
|
|
17
|
-
metadata:
|
|
18
|
-
html:
|
|
16
|
+
metadata: d,
|
|
17
|
+
html: o,
|
|
19
18
|
css: s,
|
|
20
|
-
forceRecreate:
|
|
19
|
+
forceRecreate: p,
|
|
21
20
|
locale: "en",
|
|
22
21
|
undoButtonSelector: "#guido__undo-button",
|
|
23
22
|
redoButtonSelector: "#guido__redo-button",
|
|
@@ -27,10 +26,10 @@ const x = (a) => {
|
|
|
27
26
|
customAppearanceMergetags: !0,
|
|
28
27
|
customAppearanceMergetagsBorderColor: "#f1f3fe",
|
|
29
28
|
customAppearanceMergetagsBackgroundColor: "#f1f3fe",
|
|
30
|
-
customViewStyles:
|
|
29
|
+
customViewStyles: h,
|
|
31
30
|
conditionsEnabled: !0,
|
|
32
31
|
customConditionsEnabled: !0,
|
|
33
|
-
conditionCategories:
|
|
32
|
+
conditionCategories: C,
|
|
34
33
|
enableXSSSecurity: !0,
|
|
35
34
|
messageSettingsEnabled: !1,
|
|
36
35
|
selectBlockAfterDropFromSettingsPanel: !0,
|
|
@@ -41,7 +40,7 @@ const x = (a) => {
|
|
|
41
40
|
},
|
|
42
41
|
mergeTags: [
|
|
43
42
|
{
|
|
44
|
-
entries:
|
|
43
|
+
entries: b(d.preselectedDynamicContentList)
|
|
45
44
|
}
|
|
46
45
|
],
|
|
47
46
|
async onTokenRefreshRequest(t) {
|
|
@@ -49,54 +48,53 @@ const x = (a) => {
|
|
|
49
48
|
const n = await c();
|
|
50
49
|
t(n);
|
|
51
50
|
} catch (n) {
|
|
52
|
-
|
|
51
|
+
a(n, "Failed to refresh token");
|
|
53
52
|
}
|
|
54
53
|
},
|
|
55
54
|
onTemplateLoaded() {
|
|
56
55
|
try {
|
|
57
|
-
const { importCss: t } = f(), { activateCustomViewStyles: n } =
|
|
58
|
-
t(), n(),
|
|
56
|
+
const { importCss: t } = f(), { activateCustomViewStyles: n } = g();
|
|
57
|
+
t(), n(), e.loadingStatus = !1;
|
|
59
58
|
} catch (t) {
|
|
60
|
-
|
|
59
|
+
a(t, "Failed to load custom interface appearance");
|
|
61
60
|
}
|
|
62
61
|
},
|
|
63
62
|
onCodeEditorVisibilityChanged(t) {
|
|
64
|
-
|
|
63
|
+
e.isCodeEditorOpen = t;
|
|
65
64
|
},
|
|
66
65
|
onEditorVisualModeChanged(t) {
|
|
67
|
-
|
|
66
|
+
e.editorVisualMode = t.toLowerCase();
|
|
68
67
|
},
|
|
69
68
|
onVersionHistoryVisibilityChanged(t) {
|
|
70
|
-
|
|
69
|
+
e.isVersionHistoryOpen = t;
|
|
71
70
|
},
|
|
72
71
|
onDataChanged() {
|
|
73
|
-
|
|
72
|
+
e.hasChanges = !0;
|
|
74
73
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
extensions: [h]
|
|
74
|
+
ignoreClickOutsideSelectors: ["#guido-dynamic-content-modal"],
|
|
75
|
+
extensions: [y]
|
|
78
76
|
}
|
|
79
77
|
);
|
|
80
|
-
}, m = (r) => new Promise((i,
|
|
78
|
+
}, m = (r) => new Promise((i, e) => {
|
|
81
79
|
if (document.getElementById("UiEditorScript")) {
|
|
82
80
|
r(), i();
|
|
83
81
|
return;
|
|
84
82
|
}
|
|
85
|
-
const
|
|
86
|
-
|
|
83
|
+
const o = document.createElement("script");
|
|
84
|
+
o.id = "UiEditorScript", o.type = "module", o.src = "https://plugins.stripo.email/resources/uieditor/latest/UIEditor.js", o.onload = () => {
|
|
87
85
|
r(), i();
|
|
88
|
-
},
|
|
86
|
+
}, o.onerror = () => {
|
|
89
87
|
const s = new Error("Failed to load Stripo UIEditor script");
|
|
90
|
-
|
|
91
|
-
}, document.body.appendChild(
|
|
88
|
+
e(s);
|
|
89
|
+
}, document.body.appendChild(o);
|
|
92
90
|
});
|
|
93
91
|
return { initPlugin: async (r) => {
|
|
94
92
|
await m(async () => {
|
|
95
93
|
const i = await u();
|
|
96
|
-
|
|
94
|
+
l(r, i);
|
|
97
95
|
});
|
|
98
96
|
} };
|
|
99
97
|
};
|
|
100
98
|
export {
|
|
101
|
-
|
|
99
|
+
P as useStripo
|
|
102
100
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const c = `
|
|
2
|
+
<!--[if gte mso 9]>
|
|
3
|
+
<xml>
|
|
4
|
+
<o:OfficeDocumentSettings>
|
|
5
|
+
<o:AllowPNG></o:AllowPNG>
|
|
6
|
+
<o:PixelsPerInch>96</o:PixelsPerInch>
|
|
7
|
+
</o:OfficeDocumentSettings>
|
|
8
|
+
</xml>
|
|
9
|
+
<![endif]-->`, s = {
|
|
10
|
+
xmlns: "http://www.w3.org/1999/xhtml",
|
|
11
|
+
"xmlns:o": "urn:schemas-microsoft-com:office:office"
|
|
12
|
+
}, r = [
|
|
13
|
+
{
|
|
14
|
+
id: "append-office-xml",
|
|
15
|
+
description: "Appending office XML into the head if it does not exist.",
|
|
16
|
+
type: "custom",
|
|
17
|
+
processor: (e) => e.includes("<o:OfficeDocumentSettings>") ? e : e.replace("</head>", `${c}</head>`),
|
|
18
|
+
priority: 70
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "set-html-attributes",
|
|
22
|
+
description: "Appending office XML into the head if it does not exist.",
|
|
23
|
+
type: "custom",
|
|
24
|
+
processor: (e) => {
|
|
25
|
+
let t = e;
|
|
26
|
+
return Object.entries(s).forEach(([o, i]) => {
|
|
27
|
+
const n = new RegExp(`${o}="[^"]*"`);
|
|
28
|
+
t.search(n) === -1 && (t = t.replace("<html", `<html ${o}="${i}"`));
|
|
29
|
+
}), t;
|
|
30
|
+
},
|
|
31
|
+
priority: 71
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
export {
|
|
35
|
+
r as outlookCompilerRules
|
|
36
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { useRecommendation as u } from "../../composables/useRecommendation.js";
|
|
2
|
+
import { DUMMY_IMAGE_MAPPINGS as P, REGEX as i, CSS as e, CONDITIONS as E, ATTRIBUTES as r, HTML as h } from "../../enums/recommendation.js";
|
|
3
|
+
const H = [
|
|
4
|
+
{
|
|
5
|
+
id: "replace-images-with-variable-names",
|
|
6
|
+
description: "Replacing dummy images with variable names in recommendation module",
|
|
7
|
+
type: "custom",
|
|
8
|
+
processor: (a) => {
|
|
9
|
+
let t = a;
|
|
10
|
+
return Object.entries(P).forEach(([, n]) => {
|
|
11
|
+
Object.entries(n).forEach(([s, o]) => {
|
|
12
|
+
t = t.replaceAll(o, `{{${s}}}`);
|
|
13
|
+
});
|
|
14
|
+
}), t;
|
|
15
|
+
},
|
|
16
|
+
priority: 50
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "replace-recommendation-button-span-css",
|
|
20
|
+
description: "Replacing recommendation button span css",
|
|
21
|
+
type: "replace",
|
|
22
|
+
search: ".ext-product-button span,",
|
|
23
|
+
replacement: ".ext-product-button,",
|
|
24
|
+
replaceAll: !0,
|
|
25
|
+
priority: 51
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "add-recommendation-unresponsive-css",
|
|
29
|
+
description: "Adding recommendation unresponsive css",
|
|
30
|
+
type: "custom",
|
|
31
|
+
processor: (a) => {
|
|
32
|
+
const { getRecommendationCampaignData: t } = u();
|
|
33
|
+
let n = a;
|
|
34
|
+
const s = n.match(i.ID);
|
|
35
|
+
if (s) {
|
|
36
|
+
const o = [];
|
|
37
|
+
if (s.forEach((c) => {
|
|
38
|
+
const m = c.slice(35, c.length - 1).trim();
|
|
39
|
+
t(m);
|
|
40
|
+
}), o.length) {
|
|
41
|
+
const c = `width:${Math.min(...o)}px!important;`;
|
|
42
|
+
n = n.replace(e.REGULAR_NAME_HEIGHT, `${e.TRIMMED_NAME_HEIGHT} ${c} ${e.ELLIPSIS}`).replace(e.REGULAR_NAME_CONTAINER_HEIGHT, e.TRIMMED_NAME_CONTAINER_CSS).replace(e.RESPONSIVE_NAME_SIZE, `${e.RESPONSIVE_NAME_HEIGHT} ${c} ${e.ELLIPSIS}`).replace(e.RESPONSIVE_NAME_CONTAINER_HEIGHT, e.TRIMMED_RESPONSIVE_NAME_CONTAINER_CSS);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return n;
|
|
46
|
+
},
|
|
47
|
+
priority: 52
|
|
48
|
+
},
|
|
49
|
+
// TODO: prepareRecommendations
|
|
50
|
+
// TODO: addRecommendationCustomFields
|
|
51
|
+
{
|
|
52
|
+
id: "add-discount-conditions",
|
|
53
|
+
description: "Adding discount conditions to the recommendation block",
|
|
54
|
+
type: "custom",
|
|
55
|
+
processor: (a) => {
|
|
56
|
+
let t = a;
|
|
57
|
+
const n = t.match(i.ATTRIBUTE_PARAGRAPH), { getRecommendationCampaignData: s } = u();
|
|
58
|
+
return n !== null && n.forEach((o) => {
|
|
59
|
+
const c = o.match(i.CUSTOM_FIELD);
|
|
60
|
+
if (!c)
|
|
61
|
+
return;
|
|
62
|
+
const [m] = c, p = m.match(i.CUSTOM_FIELD_INDEXES_PART), A = m.match(i.CUSTOM_FIELD_NAME_PART), _ = o.match(i.ATTRIBUTE_PARAGRAPH_START_TAG);
|
|
63
|
+
if (!p || !A || !_)
|
|
64
|
+
return;
|
|
65
|
+
const [l] = p, [T] = A, [d] = _, N = T.substring(1, T.length - 2), R = d.match(i.COMPOSITION) !== null;
|
|
66
|
+
let O = m;
|
|
67
|
+
if (R) {
|
|
68
|
+
const M = l.substring(2, l.length - 3);
|
|
69
|
+
s(M);
|
|
70
|
+
}
|
|
71
|
+
const I = l.substring(2);
|
|
72
|
+
let S = "";
|
|
73
|
+
N in E.IF && (S = E.IF[N].replaceAll(`{${r.DISCOUNT}}`, `${I}${r.DISCOUNT}`).replaceAll(`{${r.OMNIBUS_DISCOUNT}}`, `${I}${r.OMNIBUS_DISCOUNT}`).replaceAll(`{${r.OMNIBUS_PRICE}}`, `${I}${r.OMNIBUS_PRICE}`));
|
|
74
|
+
const $ = `${d}${O}${h.PARAGRAPH_END_TAG}`, C = `${S}${R ? $ : o}${E.ELSE}${d}${h.PARAGRAPH_END_TAG}${E.END_IF}`;
|
|
75
|
+
t = t.replace(o, C);
|
|
76
|
+
}), t;
|
|
77
|
+
},
|
|
78
|
+
priority: 53
|
|
79
|
+
}
|
|
80
|
+
];
|
|
81
|
+
export {
|
|
82
|
+
H as recommendationCompilerRules
|
|
83
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const a = [
|
|
2
|
+
{
|
|
3
|
+
id: "fix-custom-social-block",
|
|
4
|
+
description: "Fixing custom social block.",
|
|
5
|
+
type: "custom",
|
|
6
|
+
processor: (e) => {
|
|
7
|
+
let c = e;
|
|
8
|
+
const s = c.match(/<table[^>]*?class="[^>]*?es-social[^>]*?"[\S\s]*?<\/table>/gm);
|
|
9
|
+
return s && s.forEach((o) => {
|
|
10
|
+
if (o.match(/<img[^>]*?height="[0-9]+?"/gm)) {
|
|
11
|
+
const i = o.replace(/<img[^>]*?height="[0-9]+?"/gm, (t) => t.replace("height", "width"));
|
|
12
|
+
c = c.replace(o, i);
|
|
13
|
+
}
|
|
14
|
+
}), c;
|
|
15
|
+
},
|
|
16
|
+
priority: 80
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
export {
|
|
20
|
+
a as socialCompilerRules
|
|
21
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { usePartner as m } from "../../composables/usePartner.js";
|
|
2
|
+
import { LINK_REGEXES as c, LINK_TYPES as p, URLS as E } from "../../enums/unsubscribe.js";
|
|
3
|
+
import { useUnsubscribeStore as b } from "../../stores/unsubscribe.js";
|
|
4
|
+
const S = [
|
|
5
|
+
{
|
|
6
|
+
id: "add-unsubscribe-link-values",
|
|
7
|
+
description: "Adding unsubscribe link values",
|
|
8
|
+
type: "custom",
|
|
9
|
+
processor: (n) => {
|
|
10
|
+
var a, u;
|
|
11
|
+
const { getPartnerName: i } = m(), t = b();
|
|
12
|
+
let e = n;
|
|
13
|
+
const o = `/${i()}/email/0?user={{iid}}`, r = (a = t.selectedUnsubscribePages) == null ? void 0 : a.find((l) => l.type === p.UNSUBSCRIBE_LINK_TYPE), s = (u = t.selectedUnsubscribePages) == null ? void 0 : u.find((l) => l.type === p.PREFERENCES_LINK_TYPE);
|
|
14
|
+
return r && (e = e.replace(
|
|
15
|
+
c.GLOBAL_UNSUBSCRIBE_LINK_REGEX,
|
|
16
|
+
E.UNSUBSCRIBE_URL + o
|
|
17
|
+
)), s && (e = e.replace(
|
|
18
|
+
c.PREFERENCES_UNSUBSCRIBE_LINK_REGEX,
|
|
19
|
+
E.PREFERENCES_URL + o
|
|
20
|
+
)), e.replace(c.UNSUBSCRIBE_LINK_REGEX, "");
|
|
21
|
+
},
|
|
22
|
+
priority: 60
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "remove-data-ogsb-button-styles",
|
|
26
|
+
description: "Removing styles like [data-ogsb] .es-button.es-button-123 { background: red; }",
|
|
27
|
+
type: "regex",
|
|
28
|
+
pattern: c.DATA_OGSB_BUTTON_CSS_REGEX,
|
|
29
|
+
replacement: "",
|
|
30
|
+
flags: "g",
|
|
31
|
+
priority: 61
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "format-comment-braces",
|
|
35
|
+
description: "Adding spaces around comment braces for proper formatting",
|
|
36
|
+
type: "custom",
|
|
37
|
+
processor: (n) => n.replace(/{#/g, "{ #").replace(/#}/g, "# }"),
|
|
38
|
+
priority: 62
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "add-universal-link-flags",
|
|
42
|
+
description: "Adding universal link flags",
|
|
43
|
+
type: "custom",
|
|
44
|
+
processor: (n) => {
|
|
45
|
+
let i = n;
|
|
46
|
+
const t = i.match(/<a[^>]+>(.*?)<\/a>/gm);
|
|
47
|
+
return t && t.forEach((e) => {
|
|
48
|
+
if (e.includes("insEmail=1"))
|
|
49
|
+
return;
|
|
50
|
+
if (e.match(/<a\s+(?:[^>]*?\s+)?href=(["'`”])(.*?)\1\s+(?:[^>]*?\s+)?universal=(["'`”])true\3/gm)) {
|
|
51
|
+
const o = e.replace(/href=(["'`”])(.*?)\1/gm, (r) => {
|
|
52
|
+
const s = r.slice(6, r.length - 1).trim();
|
|
53
|
+
return r.includes("?") || r.includes("#") ? s.slice(-1) === "&" ? r.replace(s, `${s}insEmail=1`) : r.replace(s, `${s}&insEmail=1`) : r.replace(s, `${s}?insEmail=1`);
|
|
54
|
+
});
|
|
55
|
+
i = i.replace(e, o);
|
|
56
|
+
}
|
|
57
|
+
}), i;
|
|
58
|
+
},
|
|
59
|
+
priority: 63
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
export {
|
|
63
|
+
S as unsubscribeCompilerRules
|
|
64
|
+
};
|
package/dist/enums/defaults.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { GuidoConfig } from '@@/Types/generic';
|
|
2
2
|
export declare const DefaultGuidoConfig: GuidoConfig;
|
|
3
|
+
export declare const TemplateTypes: {
|
|
4
|
+
promotional: number;
|
|
5
|
+
transactional: number;
|
|
6
|
+
};
|
|
3
7
|
export declare const DefaultProductType = "email";
|
|
4
8
|
export declare const DefaultUsername = "Guido User";
|
|
5
|
-
export declare const DefaultMessageType
|
|
9
|
+
export declare const DefaultMessageType: number;
|
|
6
10
|
export declare const EditorType: number;
|
|
7
11
|
export declare const ProductIds: Record<string, number>;
|
|
8
|
-
export declare const TEST_PARTNER_LIST: string[];
|
package/dist/enums/defaults.js
CHANGED
|
@@ -10,47 +10,19 @@ const t = {
|
|
|
10
10
|
versionHistory: !0
|
|
11
11
|
},
|
|
12
12
|
useHeader: !0
|
|
13
|
-
},
|
|
13
|
+
}, e = {
|
|
14
|
+
promotional: 1,
|
|
15
|
+
transactional: 2
|
|
16
|
+
}, a = "email", o = "Guido User", s = e.promotional, n = 2, r = {
|
|
14
17
|
email: 60,
|
|
15
18
|
architect: 49
|
|
16
|
-
}
|
|
17
|
-
"alfredtesting",
|
|
18
|
-
"electio",
|
|
19
|
-
"eurekatest",
|
|
20
|
-
"gachapontestpart",
|
|
21
|
-
"gluautomation1",
|
|
22
|
-
"gluautomation2",
|
|
23
|
-
"gluautomation3",
|
|
24
|
-
"gluautomation4",
|
|
25
|
-
"inone",
|
|
26
|
-
"inshoppingcart",
|
|
27
|
-
"krakentest",
|
|
28
|
-
"leeroy",
|
|
29
|
-
"newsletteruat",
|
|
30
|
-
"ozaspava",
|
|
31
|
-
"piratesquad",
|
|
32
|
-
"qaautomation1",
|
|
33
|
-
"qaautomation2",
|
|
34
|
-
"qaautomation3",
|
|
35
|
-
"qaautomation4",
|
|
36
|
-
"roiautomation",
|
|
37
|
-
"seleniumautomation",
|
|
38
|
-
"seleniumautomation1",
|
|
39
|
-
"seleniumautomation2",
|
|
40
|
-
"seleniumautomation3",
|
|
41
|
-
"shopbagg",
|
|
42
|
-
"shopifytest",
|
|
43
|
-
"singlepageqa",
|
|
44
|
-
"testqa",
|
|
45
|
-
"vikingsankara",
|
|
46
|
-
"stripoeditorlivetest"
|
|
47
|
-
];
|
|
19
|
+
};
|
|
48
20
|
export {
|
|
49
21
|
t as DefaultGuidoConfig,
|
|
50
|
-
|
|
22
|
+
s as DefaultMessageType,
|
|
51
23
|
a as DefaultProductType,
|
|
52
|
-
|
|
24
|
+
o as DefaultUsername,
|
|
53
25
|
n as EditorType,
|
|
54
|
-
|
|
55
|
-
|
|
26
|
+
r as ProductIds,
|
|
27
|
+
e as TemplateTypes
|
|
56
28
|
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const CanNotMakeAnyChangesForRunningKey = "newsletter.already-in-progress";
|
|
2
|
+
export declare const CanNotMakeAnyChangesKey = "newsletter.can-not-make-any-changes";
|
|
3
|
+
export declare const CampaignCouldNotBeSavedKey = "newsletter.campaign-could-not-be-saved";
|
|
4
|
+
export declare const DISPLAY_CONDITIONS_REGEX: RegExp;
|
|
5
|
+
export declare const DISPLAY_CONDITIONS_EXCEPTIONS_REGEX: RegExp;
|
|
6
|
+
export declare const REMOVE_CONDITIONS_REGEX: RegExp;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const e = "newsletter.already-in-progress", n = "newsletter.campaign-could-not-be-saved", o = / (==|<=|>=|!=|>|<|in) | (if|elif|endif|else|and|or) |("[\S ]+")|('[\S ]+')|([^”\s\n]+)|(({%)|( %}))/gm, a = /{%( )*now( )(".*")( )*%}/gm;
|
|
2
|
+
export {
|
|
3
|
+
n as CampaignCouldNotBeSavedKey,
|
|
4
|
+
e as CanNotMakeAnyChangesForRunningKey,
|
|
5
|
+
a as DISPLAY_CONDITIONS_EXCEPTIONS_REGEX,
|
|
6
|
+
o as DISPLAY_CONDITIONS_REGEX
|
|
7
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare const DefaultPadding = 20;
|
|
2
|
+
export declare const MinDeviceViewport = 320;
|
|
3
|
+
export declare const VerticalOrientation = "vertical";
|
|
4
|
+
export declare const DUMMY_IMAGE_MAPPINGS: {
|
|
5
|
+
CART_ABANDONMENT: {
|
|
6
|
+
ins_apr_img_1: string;
|
|
7
|
+
ins_apr_img_2: string;
|
|
8
|
+
ins_apr_img_3: string;
|
|
9
|
+
ins_apr_img_4: string;
|
|
10
|
+
};
|
|
11
|
+
BROWSE_ABANDONMENT: {
|
|
12
|
+
browsed_item_img_1: string;
|
|
13
|
+
browsed_item_img_2: string;
|
|
14
|
+
browsed_item_img_3: string;
|
|
15
|
+
browsed_item_img_4: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const ATTRIBUTES: {
|
|
19
|
+
DISCOUNT: string;
|
|
20
|
+
OMNIBUS_DISCOUNT: string;
|
|
21
|
+
OMNIBUS_PRICE: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const CONDITIONS: {
|
|
24
|
+
IF: {
|
|
25
|
+
discount: string;
|
|
26
|
+
omnibus_discount: string;
|
|
27
|
+
omnibus_price: string;
|
|
28
|
+
};
|
|
29
|
+
ELSE: string;
|
|
30
|
+
END_IF: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const REGEX: {
|
|
33
|
+
ID: RegExp;
|
|
34
|
+
ATTRIBUTE_PARAGRAPH: RegExp;
|
|
35
|
+
ATTRIBUTE_PARAGRAPH_START_TAG: RegExp;
|
|
36
|
+
COMPOSITION: RegExp;
|
|
37
|
+
CUSTOM_FIELD: RegExp;
|
|
38
|
+
CUSTOM_FIELD_INDEXES_PART: RegExp;
|
|
39
|
+
CUSTOM_FIELD_NAME_PART: RegExp;
|
|
40
|
+
};
|
|
41
|
+
export declare const HTML: {
|
|
42
|
+
PARAGRAPH_END_TAG: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const CSS: {
|
|
45
|
+
REGULAR_NAME_HEIGHT: string;
|
|
46
|
+
TRIMMED_NAME_HEIGHT: string;
|
|
47
|
+
ELLIPSIS: string;
|
|
48
|
+
REGULAR_NAME_CONTAINER_HEIGHT: string;
|
|
49
|
+
TRIMMED_NAME_CONTAINER_CSS: string;
|
|
50
|
+
RESPONSIVE_NAME_SIZE: string;
|
|
51
|
+
RESPONSIVE_NAME_HEIGHT: string;
|
|
52
|
+
RESPONSIVE_NAME_CONTAINER_HEIGHT: string;
|
|
53
|
+
TRIMMED_RESPONSIVE_NAME_CONTAINER_CSS: string;
|
|
54
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const s = 20, e = 320, t = {
|
|
2
|
+
CART_ABANDONMENT: {
|
|
3
|
+
ins_apr_img_1: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_1.png",
|
|
4
|
+
ins_apr_img_2: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_2.png",
|
|
5
|
+
ins_apr_img_3: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_3.png",
|
|
6
|
+
ins_apr_img_4: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/ins_apr_img_4.png"
|
|
7
|
+
},
|
|
8
|
+
BROWSE_ABANDONMENT: {
|
|
9
|
+
browsed_item_img_1: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_1.jpg",
|
|
10
|
+
browsed_item_img_2: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_2.jpg",
|
|
11
|
+
browsed_item_img_3: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_3.jpg",
|
|
12
|
+
browsed_item_img_4: "https://s3-eu-west-1.amazonaws.com/web-image.useinsider.com/email-assets/dummyImages/browsed_item_img_4.jpg"
|
|
13
|
+
}
|
|
14
|
+
}, i = {
|
|
15
|
+
DISCOUNT: "discount",
|
|
16
|
+
OMNIBUS_DISCOUNT: "omnibus_discount",
|
|
17
|
+
OMNIBUS_PRICE: "omnibus_price"
|
|
18
|
+
}, m = {
|
|
19
|
+
IF: {
|
|
20
|
+
discount: `{% if {${i.DISCOUNT}} != "0%" and {${i.DISCOUNT}} != "" %}`,
|
|
21
|
+
omnibus_discount: `{% if {${i.DISCOUNT}} != "0%" and {${i.DISCOUNT}} != "" and {${i.OMNIBUS_DISCOUNT}} != "0%" and {${i.OMNIBUS_DISCOUNT}} != "" %}`,
|
|
22
|
+
omnibus_price: `{% if {${i.DISCOUNT}} != "0%" and {${i.DISCOUNT}} != "" and {${i.OMNIBUS_PRICE}} != "" %}`
|
|
23
|
+
},
|
|
24
|
+
ELSE: "{% else %}",
|
|
25
|
+
END_IF: "{% endif %}"
|
|
26
|
+
}, _ = {
|
|
27
|
+
ID: /ins-recommendation-v3-campaign-id="(.*?)"/gi,
|
|
28
|
+
ATTRIBUTE_PARAGRAPH: /<p[^>]*?product-attr="(discount|omnibus_discount|omnibus_price)">[\S\s]*?<\/p>/gm,
|
|
29
|
+
ATTRIBUTE_PARAGRAPH_START_TAG: /<p[^>]*?product-attr="(discount|omnibus_discount|omnibus_price)">/gm,
|
|
30
|
+
COMPOSITION: /composition="true"/gm,
|
|
31
|
+
CUSTOM_FIELD: /{{[0-9]+_[0-8]_(discount|omnibus_discount|omnibus_price)}}/gm,
|
|
32
|
+
CUSTOM_FIELD_INDEXES_PART: /{{[0-9]+_[0-8]_/gm,
|
|
33
|
+
CUSTOM_FIELD_NAME_PART: /_(discount|omnibus_discount|omnibus_price)}}/gm
|
|
34
|
+
}, a = {
|
|
35
|
+
PARAGRAPH_END_TAG: "</p>"
|
|
36
|
+
}, n = {
|
|
37
|
+
REGULAR_NAME_HEIGHT: ".ext-product-name.ins-vertical p { height:90px!important;",
|
|
38
|
+
TRIMMED_NAME_HEIGHT: ".ext-product-name.ins-vertical p { height:18px!important;",
|
|
39
|
+
ELLIPSIS: "text-overflow:ellipsis!important; white-space:nowrap!important;",
|
|
40
|
+
REGULAR_NAME_CONTAINER_HEIGHT: ".ext-product-name.ins-vertical { height:100px!important",
|
|
41
|
+
TRIMMED_NAME_CONTAINER_CSS: ".ext-product-name.ins-vertical { height:38px!important; padding:0px!important",
|
|
42
|
+
RESPONSIVE_NAME_SIZE: ".ext-product-name p { height:unset!important; width:100%!important;",
|
|
43
|
+
RESPONSIVE_NAME_HEIGHT: ".ext-product-name p { height:24px!important;",
|
|
44
|
+
RESPONSIVE_NAME_CONTAINER_HEIGHT: ".ext-product-name { height:unset!important",
|
|
45
|
+
TRIMMED_RESPONSIVE_NAME_CONTAINER_CSS: ".ext-product-name { height:44px!important; padding:0px!important"
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
i as ATTRIBUTES,
|
|
49
|
+
m as CONDITIONS,
|
|
50
|
+
n as CSS,
|
|
51
|
+
t as DUMMY_IMAGE_MAPPINGS,
|
|
52
|
+
s as DefaultPadding,
|
|
53
|
+
a as HTML,
|
|
54
|
+
e as MinDeviceViewport,
|
|
55
|
+
_ as REGEX
|
|
56
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const LINK_TYPES: {
|
|
2
|
+
UNSUBSCRIBE_LINK_TYPE: number;
|
|
3
|
+
PREFERENCES_LINK_TYPE: number;
|
|
4
|
+
};
|
|
5
|
+
export declare const LINK_REGEXES: {
|
|
6
|
+
UNSUBSCRIBE_LINK_REGEX: RegExp;
|
|
7
|
+
DATA_OGSB_BUTTON_CSS_REGEX: string;
|
|
8
|
+
GLOBAL_UNSUBSCRIBE_LINK_REGEX: RegExp;
|
|
9
|
+
PREFERENCES_UNSUBSCRIBE_LINK_REGEX: RegExp;
|
|
10
|
+
};
|
|
11
|
+
export declare const URLS: {
|
|
12
|
+
UNSUBSCRIBE_URL: string;
|
|
13
|
+
PREFERENCES_URL: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const INSIDER_ID = "iid";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const E = {
|
|
2
|
+
UNSUBSCRIBE_LINK_TYPE: 1,
|
|
3
|
+
PREFERENCES_LINK_TYPE: 3
|
|
4
|
+
}, s = {
|
|
5
|
+
UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
|
|
6
|
+
DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
|
|
7
|
+
GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
|
|
8
|
+
PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
|
|
9
|
+
}, _ = {
|
|
10
|
+
UNSUBSCRIBE_URL: "https://mail.useinsider.com/user/v1/unsub",
|
|
11
|
+
PREFERENCES_URL: "https://mail.useinsider.com/user/v1/prefs"
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
s as LINK_REGEXES,
|
|
15
|
+
E as LINK_TYPES,
|
|
16
|
+
_ as URLS
|
|
17
|
+
};
|
package/dist/guido.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[data-v-a18ac2d3] .in-button-v2__wrapper{line-height:0}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}[data-v-421ffc13] .guido__verion-history-view-option-selection-desktop svg,[data-v-421ffc13] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-421ffc13] .in-segments-wrapper__button_selected,[data-v-421ffc13] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-421ffc13] .in-tooltip-wrapper__icon{cursor:pointer}
|
|
1
|
+
[data-v-a18ac2d3] .in-button-v2__wrapper{line-height:0}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history-wrapper[data-v-52a77eec]{gap:8px}[data-v-421ffc13] .guido__verion-history-view-option-selection-desktop svg,[data-v-421ffc13] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-421ffc13] .in-segments-wrapper__button_selected,[data-v-421ffc13] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-421ffc13] .in-tooltip-wrapper__icon{cursor:pointer}[data-v-ad3cf7cc] .guido__view-option-selection-desktop svg,[data-v-ad3cf7cc] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-ad3cf7cc] .in-segments-wrapper__button_selected,[data-v-ad3cf7cc] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-ad3cf7cc] .in-tooltip-wrapper__icon{cursor:pointer}.guido-loading__wrapper[data-v-2d4cd446]{height:calc(100% - 75px);top:75px}.guido-editor__wrapper[data-v-aef3bfa0],.guido-editor__container[data-v-aef3bfa0]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-aef3bfa0]{height:calc(100vh - 75px)}.error-list[data-v-7a09985c]{gap:16px}[data-v-c2adc57d] .in-progress-wrapper__progress p span:last-child{display:none!important}.desktop-preview-container[data-v-2dd60b0c],[data-v-2dd60b0c] .desktop-preview-container .in-container{min-height:720px!important;height:100%}.cropped-text[data-v-f20b3a9b]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|