@useinsider/guido 2.2.0-beta.eeefcc3 → 3.0.0-beta.2b566e0
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 +41 -2
- package/dist/@types/config/schemas.js +1 -1
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +66 -66
- package/dist/components/organisms/base/Toaster.vue.js +4 -4
- package/dist/components/organisms/base/Toaster.vue2.js +12 -9
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue.js +11 -13
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +54 -23
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue.js +7 -5
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +34 -21
- package/dist/components/organisms/extensions/recommendation/Filters.vue.js +11 -11
- package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +48 -36
- package/dist/components/organisms/extensions/recommendation/LogicAdapter.vue2.js +11 -9
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
- package/dist/composables/useRecommendation.js +9 -9
- package/dist/composables/useSave.js +16 -12
- package/dist/composables/useStripo.js +66 -62
- package/dist/composables/useStripoEventHandler.js +27 -12
- package/dist/composables/useSyncModuleExtractor.js +45 -0
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +1 -1
- package/dist/config/migrator/recommendationMigrator.js +1 -1
- package/dist/enums/unsubscribe.js +25 -21
- package/dist/extensions/Blocks/Recommendation/block.js +1 -1
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +36 -33
- package/dist/extensions/Blocks/Recommendation/constants/layout.js +16 -14
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/image/index.js +1 -1
- package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +41 -29
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +16 -16
- package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +30 -32
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +194 -104
- package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +46 -38
- package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +16 -16
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +291 -217
- package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +14 -14
- package/dist/extensions/Blocks/Recommendation/controls/name/index.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +14 -14
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +3 -3
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +1 -1
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +3 -3
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +13 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/index.js +3 -3
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +223 -99
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +172 -85
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +2 -2
- package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +2 -2
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +32 -32
- package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +8 -8
- package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +29 -0
- package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
- package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
- package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
- package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
- package/dist/guido.css +1 -1
- package/dist/services/stripoApi.js +55 -19
- package/dist/src/@types/config/schemas.d.ts +1 -1
- package/dist/src/@types/events.d.ts +38 -2
- package/dist/src/App.vue.d.ts +0 -1
- package/dist/src/components/Guido.vue.d.ts +2 -2
- package/dist/src/components/organisms/extensions/recommendation/FilterItem.vue.d.ts +1 -0
- package/dist/src/components/organisms/extensions/recommendation/Filters.vue.d.ts +17 -1
- package/dist/src/components/organisms/header/EditorActions.vue.d.ts +1 -1
- package/dist/src/components/organisms/header/HeaderWrapper.vue.d.ts +1 -1
- package/dist/src/components/organisms/header/RightSlot.vue.d.ts +1 -1
- package/dist/src/composables/useGuidoActions.d.ts +1 -1
- package/dist/src/composables/useSave.d.ts +2 -2
- package/dist/src/composables/useStripo.d.ts +2 -2
- package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
- package/dist/src/enums/unsubscribe.d.ts +3 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +3 -3
- package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +8 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +38 -10
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +27 -14
- package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +50 -17
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +19 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/migration.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +4 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +8 -0
- package/dist/src/extensions/Blocks/Recommendation/validation/filterSchema.d.ts +15 -0
- package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
- package/dist/src/main.d.ts +3 -1
- package/dist/src/mock/api/settings.d.ts +2 -0
- package/dist/src/services/stripoApi.d.ts +5 -0
- package/dist/src/stores/editor.d.ts +23 -0
- package/dist/src/utils/templatePreparation.d.ts +1 -1
- package/dist/static/styles/customEditorStyle.css.js +50 -23
- package/dist/stores/editor.js +2 -1
- package/dist/stores/unsubscribe.js +37 -34
- package/dist/utils/templatePreparation.js +1 -1
- package/package.json +2 -2
|
@@ -17,7 +17,7 @@ class w {
|
|
|
17
17
|
const l = o.getAttribute("id"), r = this.extractBgColor(o), i = this.extractTitle(o), u = this.extractProductRows(o), c = P.replace("{-{-TITLE-}-}", i).replace("{-{-PRODUCT_ROWS-}-}", u), a = this.parser.parseFromString(
|
|
18
18
|
`<table id="tempDoc"><tbody><tr>${c}</tr></tbody></table>`,
|
|
19
19
|
"text/html"
|
|
20
|
-
).querySelector(".
|
|
20
|
+
).querySelector(".recommendation-block-v2");
|
|
21
21
|
a && o.parentNode && (l && a.setAttribute("id", l), r && a.setAttribute("bgcolor", r), o.parentNode.replaceChild(a, o));
|
|
22
22
|
}), t.documentElement.outerHTML);
|
|
23
23
|
} catch (t) {
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { useTranslations as e } from "../composables/useTranslations.js";
|
|
2
2
|
import { getEnvironmentPrefix as R } from "../utils/environmentUtil.js";
|
|
3
|
-
const
|
|
3
|
+
const _ = {
|
|
4
4
|
UNSUBSCRIBE_LINK_TYPE: 1,
|
|
5
5
|
PREFERENCES_LINK_TYPE: 3
|
|
6
|
-
},
|
|
6
|
+
}, I = {
|
|
7
7
|
UNSUBSCRIBE_LINK_REGEX: /{{ins-unsubscribe-link}}/g,
|
|
8
8
|
DATA_OGSB_BUTTON_CSS_REGEX: "\\[data-ogsb\\]\\s*\\.es-button\\.es-button-[0-9]+\\s*\\{(?:[^\\}]*)\\}",
|
|
9
9
|
GLOBAL_UNSUBSCRIBE_LINK_REGEX: /{{ins-global-unsubscribe-link}}/g,
|
|
10
10
|
PREFERENCES_UNSUBSCRIBE_LINK_REGEX: /{{ins-preferences-unsubscribe-link}}/g
|
|
11
|
-
},
|
|
12
|
-
UNSUBSCRIBE_URL: `https://mail.${
|
|
13
|
-
PREFERENCES_URL: `https://mail.${
|
|
14
|
-
},
|
|
11
|
+
}, n = R(), r = {
|
|
12
|
+
UNSUBSCRIBE_URL: `https://mail.${n}.com/user/v1/unsub`,
|
|
13
|
+
PREFERENCES_URL: `https://mail.${n}.com/user/v1/prefs`
|
|
14
|
+
}, B = "iid", i = {
|
|
15
15
|
name: "Global Unsubscribe",
|
|
16
16
|
sendGridId: "G"
|
|
17
17
|
}, C = "/email/unsubscribe-pages", E = {
|
|
@@ -20,6 +20,9 @@ const I = {
|
|
|
20
20
|
SUBSCRIPTION_PREFERENCE_CENTER: 3,
|
|
21
21
|
SUBSCRIPTION_PREFERENCE_CONFIRMATION: 4,
|
|
22
22
|
RESUBSCRIBE: 5
|
|
23
|
+
}, U = {
|
|
24
|
+
[E.GLOBAL_UNSUBSCRIBE]: "custom-unsubscribe",
|
|
25
|
+
[E.SUBSCRIPTION_PREFERENCE_CENTER]: "custom-preferences"
|
|
23
26
|
}, t = {
|
|
24
27
|
[E.GLOBAL_UNSUBSCRIBE]: [
|
|
25
28
|
E.GLOBAL_UNSUBSCRIBE,
|
|
@@ -30,29 +33,30 @@ const I = {
|
|
|
30
33
|
E.SUBSCRIPTION_PREFERENCE_CENTER,
|
|
31
34
|
E.SUBSCRIPTION_PREFERENCE_CONFIRMATION
|
|
32
35
|
]
|
|
33
|
-
},
|
|
34
|
-
const
|
|
36
|
+
}, c = () => {
|
|
37
|
+
const s = e();
|
|
35
38
|
return {
|
|
36
|
-
[E.GLOBAL_UNSUBSCRIBE]:
|
|
37
|
-
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]:
|
|
38
|
-
[E.RESUBSCRIBE]:
|
|
39
|
-
[E.SUBSCRIPTION_PREFERENCE_CENTER]:
|
|
40
|
-
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]:
|
|
39
|
+
[E.GLOBAL_UNSUBSCRIBE]: s("unsubscription-preference.type-global-unsubscribe"),
|
|
40
|
+
[E.GLOBAL_UNSUBSCRIBE_CONFIRMATION_PAGE]: s("unsubscription-preference.type-global-unsubscription-confirmation"),
|
|
41
|
+
[E.RESUBSCRIBE]: s("unsubscription-preference.type-resubscribe"),
|
|
42
|
+
[E.SUBSCRIPTION_PREFERENCE_CENTER]: s("unsubscription-preference.type-subscription-preferences-center"),
|
|
43
|
+
[E.SUBSCRIPTION_PREFERENCE_CONFIRMATION]: s("unsubscription-preference.type-subscription-preferences-confirmation")
|
|
41
44
|
};
|
|
42
|
-
},
|
|
45
|
+
}, o = {
|
|
43
46
|
default: "{{ins-unsubscribe-link}}",
|
|
44
47
|
[E.GLOBAL_UNSUBSCRIBE]: "{{ins-global-unsubscribe-link}}",
|
|
45
48
|
[E.SUBSCRIPTION_PREFERENCE_CENTER]: "{{ins-preferences-unsubscribe-link}}"
|
|
46
49
|
};
|
|
47
50
|
export {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
i as DEFAULT_UNSUBSCRIBE_GROUP,
|
|
52
|
+
B as INSIDER_ID,
|
|
53
|
+
I as LINK_REGEXES,
|
|
54
|
+
_ as LINK_TYPES,
|
|
55
|
+
o as MERGE_TAGS,
|
|
53
56
|
E as PAGE_TYPES,
|
|
54
57
|
t as TYPE_COLLECTIONS,
|
|
55
58
|
C as UNSUBSCRIBE_PAGES_LINK,
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
U as UNSUBSCRIBE_SYNC_MODULE_TYPES,
|
|
60
|
+
r as URLS,
|
|
61
|
+
c as getTypeTranslations
|
|
58
62
|
};
|
|
@@ -6,7 +6,7 @@ import { ensureMobileCssRulesExist as d } from "./controls/mobileLayout/cssRules
|
|
|
6
6
|
import { RecommendationConfigService as s } from "./services/configService.js";
|
|
7
7
|
import { useRecommendationExtensionStore as u } from "./store/recommendation.js";
|
|
8
8
|
import { getDefaultTemplate as k } from "./templates/grid/template.js";
|
|
9
|
-
const B = "recommendation-block", c = "
|
|
9
|
+
const B = "recommendation-block", c = "recommendation-block-v2", a = "recommendation-id";
|
|
10
10
|
class y extends h {
|
|
11
11
|
constructor() {
|
|
12
12
|
super();
|
|
@@ -1,66 +1,69 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ATTR_PRODUCT_IMAGE as
|
|
3
|
-
const
|
|
1
|
+
import { DEFAULT_MOBILE_ROW_SPACING as U, DEFAULT_MOBILE_COLUMN_SPACING as R, DEFAULT_ROW_SPACING as n, DEFAULT_COLUMN_SPACING as O, DEFAULT_MOBILE_CARDS_IN_ROW as C, DEFAULT_CARDS_IN_ROW as D } from "./layout.js";
|
|
2
|
+
import { ATTR_PRODUCT_IMAGE as _, ATTR_PRODUCT_NAME as o, ATTR_PRODUCT_OLD_PRICE as t, ATTR_PRODUCT_PRICE as e, ATTR_PRODUCT_OMNIBUS_PRICE as T, ATTR_PRODUCT_OMNIBUS_DISCOUNT as I, ATTR_PRODUCT_BUTTON as r } from "./selectors.js";
|
|
3
|
+
const i = {
|
|
4
4
|
code: "USD",
|
|
5
5
|
symbol: "USD",
|
|
6
6
|
alignment: "after",
|
|
7
7
|
decimalCount: 2,
|
|
8
8
|
decimalSeparator: ".",
|
|
9
9
|
thousandSeparator: ","
|
|
10
|
-
},
|
|
10
|
+
}, A = {
|
|
11
11
|
textBefore: "",
|
|
12
12
|
textAfter: ""
|
|
13
|
-
},
|
|
13
|
+
}, s = {
|
|
14
14
|
textBefore: "",
|
|
15
15
|
textAfter: ""
|
|
16
|
-
},
|
|
16
|
+
}, E = [
|
|
17
|
+
_,
|
|
18
|
+
o,
|
|
17
19
|
t,
|
|
18
20
|
e,
|
|
19
|
-
o,
|
|
20
|
-
_,
|
|
21
21
|
T,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
],
|
|
25
|
-
[t]: !0,
|
|
26
|
-
[e]: !0,
|
|
22
|
+
I,
|
|
23
|
+
r
|
|
24
|
+
], c = {
|
|
27
25
|
[_]: !0,
|
|
28
26
|
[o]: !0,
|
|
27
|
+
[e]: !0,
|
|
28
|
+
[t]: !0,
|
|
29
29
|
[T]: !1,
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
},
|
|
30
|
+
[I]: !1,
|
|
31
|
+
[r]: !0
|
|
32
|
+
}, N = {
|
|
33
33
|
// Settings
|
|
34
34
|
strategy: "mostPopular",
|
|
35
35
|
productIds: [],
|
|
36
36
|
size: "6",
|
|
37
37
|
shuffleProducts: !1,
|
|
38
38
|
language: "en_US",
|
|
39
|
-
currency:
|
|
39
|
+
currency: i,
|
|
40
40
|
filters: [],
|
|
41
41
|
// Layout
|
|
42
42
|
layout: "grid",
|
|
43
|
-
cardsInRow:
|
|
44
|
-
mobileCardsInRow:
|
|
45
|
-
columnSpacing:
|
|
46
|
-
rowSpacing:
|
|
43
|
+
cardsInRow: D,
|
|
44
|
+
mobileCardsInRow: C,
|
|
45
|
+
columnSpacing: O,
|
|
46
|
+
rowSpacing: n,
|
|
47
|
+
mobileColumnSpacing: R,
|
|
48
|
+
mobileRowSpacing: U,
|
|
47
49
|
// Composition
|
|
48
|
-
composition:
|
|
49
|
-
visibility:
|
|
50
|
+
composition: E,
|
|
51
|
+
visibility: c,
|
|
50
52
|
// Element settings
|
|
51
|
-
omnibusPrice:
|
|
52
|
-
omnibusDiscount:
|
|
53
|
+
omnibusPrice: A,
|
|
54
|
+
omnibusDiscount: s,
|
|
53
55
|
textTrimming: !1,
|
|
54
56
|
// Meta
|
|
55
57
|
configVersion: 1,
|
|
56
58
|
recommendationId: 0
|
|
57
|
-
},
|
|
59
|
+
}, m = [11, 12], L = 1;
|
|
58
60
|
export {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
L as CURRENT_CONFIG_VERSION,
|
|
62
|
+
E as DEFAULT_COMPOSITION,
|
|
63
|
+
i as DEFAULT_CURRENCY,
|
|
64
|
+
N as DEFAULT_NODE_CONFIG,
|
|
65
|
+
s as DEFAULT_OMNIBUS_DISCOUNT,
|
|
66
|
+
A as DEFAULT_OMNIBUS_PRICE,
|
|
67
|
+
c as DEFAULT_VISIBILITY,
|
|
68
|
+
m as EXCLUDED_ALGORITHM_IDS
|
|
66
69
|
};
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
const _ = {
|
|
2
2
|
GRID: "grid",
|
|
3
3
|
LIST: "list"
|
|
4
|
-
},
|
|
4
|
+
}, A = [
|
|
5
5
|
{ icon: "grid-orientation", value: _.GRID },
|
|
6
6
|
{ icon: "list-orientation", value: _.LIST }
|
|
7
|
-
],
|
|
7
|
+
], o = 3, t = 3, O = 9, n = 4, I = 1, L = 2, R = 10, T = 10, c = 10, s = 10, S = 0, U = 50, C = 5;
|
|
8
8
|
export {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
s as
|
|
14
|
-
o as
|
|
9
|
+
t as DEFAULT_CARDS_IN_ROW,
|
|
10
|
+
R as DEFAULT_COLUMN_SPACING,
|
|
11
|
+
I as DEFAULT_MOBILE_CARDS_IN_ROW,
|
|
12
|
+
c as DEFAULT_MOBILE_COLUMN_SPACING,
|
|
13
|
+
s as DEFAULT_MOBILE_ROW_SPACING,
|
|
14
|
+
o as DEFAULT_PRODUCTS_PER_ROW,
|
|
15
|
+
T as DEFAULT_ROW_SPACING,
|
|
16
|
+
A as LAYOUT_OPTIONS,
|
|
15
17
|
_ as LAYOUT_VALUES,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
L as MAX_MOBILE_PRODUCTS_PER_ROW,
|
|
19
|
+
n as MAX_PRODUCTS_PER_ROW,
|
|
20
|
+
O as MAX_PRODUCT_COUNT,
|
|
21
|
+
U as MAX_SPACING,
|
|
22
|
+
S as MIN_SPACING,
|
|
23
|
+
C as SPACING_STEP
|
|
22
24
|
};
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
const c = ".ins-recommendation-product-container",
|
|
1
|
+
const c = ".recommendation-block-v2", n = ".ins-recommendation-product-container", o = ".ins-recommendation-desktop-container", T = ".ins-recommendation-mobile-container", t = ".ins-recommendation-mobile-row", r = {
|
|
2
2
|
CURRENCY: "currency",
|
|
3
3
|
SYMBOL: "currency-symbol",
|
|
4
4
|
ALIGNMENT: "currency-alignment",
|
|
5
5
|
THOUSAND_SEPARATOR: "currency-thousand-separator",
|
|
6
6
|
DECIMAL_SEPARATOR: "currency-decimal-separator",
|
|
7
7
|
DECIMAL_COUNT: "currency-decimal-count"
|
|
8
|
-
},
|
|
8
|
+
}, R = "productImage", O = "productName", e = "productPrice", _ = "productOldPrice", E = "productOmnibusPrice", C = "productOmnibusDiscount", s = "productButton";
|
|
9
9
|
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
c as
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
o as
|
|
10
|
+
s as ATTR_PRODUCT_BUTTON,
|
|
11
|
+
R as ATTR_PRODUCT_IMAGE,
|
|
12
|
+
O as ATTR_PRODUCT_NAME,
|
|
13
|
+
_ as ATTR_PRODUCT_OLD_PRICE,
|
|
14
|
+
C as ATTR_PRODUCT_OMNIBUS_DISCOUNT,
|
|
15
|
+
E as ATTR_PRODUCT_OMNIBUS_PRICE,
|
|
16
|
+
e as ATTR_PRODUCT_PRICE,
|
|
17
|
+
c as BLOCK_ROOT_SELECTOR,
|
|
18
|
+
n as CONTAINER_SELECTOR,
|
|
19
|
+
r as CURRENCY_ATTR,
|
|
20
|
+
o as DESKTOP_CONTAINER_SELECTOR,
|
|
21
|
+
T as MOBILE_CONTAINER_SELECTOR,
|
|
22
|
+
t as MOBILE_ROW_SELECTOR
|
|
21
23
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createButtonFitToContainerControl as T, createButtonTextStyleAndFontColorControl as r, createButtonTextSizeControl as e, createButtonTextControl as B, createButtonPaddingsControl as l, createButtonMarginsControl as C, createButtonFontFamilyControl as O, createButtonColorControl as N, createButtonBorderRadiusControl as i, createButtonBorderControl as a, createButtonAlignControl as c } from "../../../controlFactories.js";
|
|
2
2
|
import { RecommendationBlockId as o } from "../../constants/blockIds.js";
|
|
3
3
|
import { RecommendationControlId as t } from "../../constants/controlIds.js";
|
|
4
|
-
import {
|
|
4
|
+
import { BLOCK_ROOT_SELECTOR as n } from "../../constants/selectors.js";
|
|
5
5
|
const U = c(
|
|
6
6
|
t.BUTTON_ALIGN,
|
|
7
7
|
o.BUTTON,
|
|
@@ -34,19 +34,19 @@ const U = c(
|
|
|
34
34
|
t.BUTTON_TEXT,
|
|
35
35
|
o.BUTTON,
|
|
36
36
|
n
|
|
37
|
-
),
|
|
37
|
+
), S = e(
|
|
38
38
|
t.BUTTON_TEXT_SIZE,
|
|
39
39
|
o.BUTTON,
|
|
40
40
|
n
|
|
41
|
-
),
|
|
41
|
+
), A = r(
|
|
42
42
|
t.BUTTON_TEXT_STYLE_AND_FONT_COLOR,
|
|
43
43
|
o.BUTTON,
|
|
44
44
|
n
|
|
45
|
-
),
|
|
45
|
+
), x = T(
|
|
46
46
|
t.BUTTON_FIT_TO_CONTENT,
|
|
47
47
|
o.BUTTON,
|
|
48
48
|
n
|
|
49
|
-
),
|
|
49
|
+
), f = {
|
|
50
50
|
align: U,
|
|
51
51
|
border: d,
|
|
52
52
|
borderRadius: s,
|
|
@@ -55,10 +55,10 @@ const U = c(
|
|
|
55
55
|
margins: u,
|
|
56
56
|
paddings: R,
|
|
57
57
|
text: F,
|
|
58
|
-
textSize:
|
|
59
|
-
textStyleAndFontColor:
|
|
60
|
-
fitToContent:
|
|
58
|
+
textSize: S,
|
|
59
|
+
textStyleAndFontColor: A,
|
|
60
|
+
fitToContent: x
|
|
61
61
|
};
|
|
62
62
|
export {
|
|
63
|
-
|
|
63
|
+
f as ButtonControls
|
|
64
64
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createImageMarginsControl as m, createImageSizeControl as n } from "../../../controlFactories.js";
|
|
2
2
|
import { RecommendationBlockId as o } from "../../constants/blockIds.js";
|
|
3
3
|
import { RecommendationControlId as r } from "../../constants/controlIds.js";
|
|
4
|
-
import {
|
|
4
|
+
import { BLOCK_ROOT_SELECTOR as t } from "../../constants/selectors.js";
|
|
5
5
|
const e = n(
|
|
6
6
|
r.IMAGE_SIZE,
|
|
7
7
|
o.IMAGE,
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { ModificationDescription as
|
|
1
|
+
var L = Object.defineProperty;
|
|
2
|
+
var _ = (o, e, t) => e in o ? L(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
|
|
3
|
+
var r = (o, e, t) => _(o, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
import { ModificationDescription as p } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
5
|
import { CommonControl as h } from "../../../common-control.js";
|
|
6
|
-
import { LAYOUT_OPTIONS as g } from "../../constants/layout.js";
|
|
7
|
-
import { RecommendationConfigService as
|
|
8
|
-
import { useRecommendationExtensionStore as
|
|
9
|
-
import { getCurrentLayout as
|
|
10
|
-
const
|
|
6
|
+
import { LAYOUT_OPTIONS as N, DEFAULT_MOBILE_ROW_SPACING as m, DEFAULT_MOBILE_COLUMN_SPACING as d, DEFAULT_ROW_SPACING as l, DEFAULT_COLUMN_SPACING as g } from "../../constants/layout.js";
|
|
7
|
+
import { RecommendationConfigService as s } from "../../services/configService.js";
|
|
8
|
+
import { useRecommendationExtensionStore as A } from "../../store/recommendation.js";
|
|
9
|
+
import { getCurrentLayout as C, getBlockElement as O, regenerateProductRowsWithStyles as f } from "../main/utils.js";
|
|
10
|
+
const S = "recommendation-layout-control", a = {
|
|
11
11
|
LAYOUT: "layout"
|
|
12
|
-
},
|
|
13
|
-
LAYOUT: "data-layout"
|
|
12
|
+
}, n = {
|
|
13
|
+
LAYOUT: "data-layout",
|
|
14
|
+
COLUMN_SPACING: "data-column-spacing",
|
|
15
|
+
ROW_SPACING: "data-row-spacing",
|
|
16
|
+
MOBILE_COLUMN_SPACING: "data-mobile-column-spacing",
|
|
17
|
+
MOBILE_ROW_SPACING: "data-mobile-row-spacing"
|
|
14
18
|
};
|
|
15
|
-
class
|
|
19
|
+
class G extends h {
|
|
16
20
|
constructor() {
|
|
17
21
|
super(...arguments);
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
r(this, "store", A());
|
|
23
|
+
r(this, "isChangingLayout", !1);
|
|
20
24
|
}
|
|
21
25
|
getId() {
|
|
22
|
-
return
|
|
26
|
+
return S;
|
|
23
27
|
}
|
|
24
28
|
getTemplate() {
|
|
25
29
|
return `
|
|
@@ -27,8 +31,8 @@ class Y extends h {
|
|
|
27
31
|
${this._GuTwoColumns([
|
|
28
32
|
this._GuLabel({ text: "Layout Orientation" }),
|
|
29
33
|
this._GuRadioButton({
|
|
30
|
-
name:
|
|
31
|
-
buttons:
|
|
34
|
+
name: a.LAYOUT,
|
|
35
|
+
buttons: N
|
|
32
36
|
})
|
|
33
37
|
])}
|
|
34
38
|
</div>
|
|
@@ -41,9 +45,9 @@ class Y extends h {
|
|
|
41
45
|
super.onTemplateNodeUpdated(t), this._setFormValues();
|
|
42
46
|
}
|
|
43
47
|
_setFormValues() {
|
|
44
|
-
const
|
|
48
|
+
const u = s.getConfig(this.currentNode).layout || C(this.currentNode);
|
|
45
49
|
this.api.updateValues({
|
|
46
|
-
[
|
|
50
|
+
[a.LAYOUT]: u
|
|
47
51
|
});
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
@@ -51,18 +55,26 @@ class Y extends h {
|
|
|
51
55
|
* Updates node config, data attribute and regenerates product rows
|
|
52
56
|
*/
|
|
53
57
|
_onLayoutChange(t) {
|
|
54
|
-
if (this.isChangingLayout || !this.currentNode || (
|
|
58
|
+
if (this.isChangingLayout || !this.currentNode || (s.getConfig(this.currentNode).layout || C(this.currentNode)) === t)
|
|
55
59
|
return;
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
60
|
+
const c = O(this.currentNode);
|
|
61
|
+
if (c) {
|
|
58
62
|
this.isChangingLayout = !0;
|
|
59
63
|
try {
|
|
60
|
-
|
|
64
|
+
s.updateConfig(
|
|
61
65
|
this.api,
|
|
62
66
|
this.currentNode,
|
|
63
|
-
{
|
|
67
|
+
{
|
|
68
|
+
layout: t,
|
|
69
|
+
columnSpacing: g,
|
|
70
|
+
rowSpacing: l,
|
|
71
|
+
mobileColumnSpacing: d,
|
|
72
|
+
mobileRowSpacing: m
|
|
73
|
+
},
|
|
64
74
|
`Changed layout to ${t}`
|
|
65
|
-
), this.store.patchCurrentBlockConfig({ orientation: t })
|
|
75
|
+
), this.store.patchCurrentBlockConfig({ orientation: t });
|
|
76
|
+
const i = this.api.getDocumentModifier().modifyHtml(c).setAttribute(n.LAYOUT, t).setAttribute(n.COLUMN_SPACING, g.toString()).setAttribute(n.ROW_SPACING, l.toString()).setAttribute(n.MOBILE_COLUMN_SPACING, d.toString()).setAttribute(n.MOBILE_ROW_SPACING, m.toString());
|
|
77
|
+
t === "list" ? (i.setClass("es-m-p0"), i.setClass("ins-recommendation-list-layout")) : (i.removeClass("es-m-p0"), i.removeClass("ins-recommendation-list-layout")), i.apply(new p(`Update layout to ${t}`)), this._regenerateProductRows(t);
|
|
66
78
|
} finally {
|
|
67
79
|
this.isChangingLayout = !1;
|
|
68
80
|
}
|
|
@@ -74,19 +86,19 @@ class Y extends h {
|
|
|
74
86
|
* @param layout - The layout to use for regeneration (passed explicitly to avoid stale DOM reads)
|
|
75
87
|
*/
|
|
76
88
|
_regenerateProductRows(t) {
|
|
77
|
-
this.currentNode &&
|
|
89
|
+
this.currentNode && f({
|
|
78
90
|
currentNode: this.currentNode,
|
|
79
91
|
documentModifier: this.api.getDocumentModifier(),
|
|
80
92
|
layout: t
|
|
81
93
|
});
|
|
82
94
|
}
|
|
83
95
|
_listenToFormUpdates() {
|
|
84
|
-
this.api.onValueChanged(
|
|
96
|
+
this.api.onValueChanged(a.LAYOUT, (t) => {
|
|
85
97
|
this._onLayoutChange(t);
|
|
86
98
|
});
|
|
87
99
|
}
|
|
88
100
|
}
|
|
89
101
|
export {
|
|
90
|
-
|
|
91
|
-
|
|
102
|
+
S as LAYOUT_CONTROL_ID,
|
|
103
|
+
G as LayoutControl
|
|
92
104
|
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var a = (
|
|
4
|
-
import { UEAttr as
|
|
5
|
-
import { CommonControl as
|
|
1
|
+
var c = Object.defineProperty;
|
|
2
|
+
var d = (r, i, t) => i in r ? c(r, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[i] = t;
|
|
3
|
+
var a = (r, i, t) => d(r, typeof i != "symbol" ? i + "" : i, t);
|
|
4
|
+
import { UEAttr as h } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
|
+
import { CommonControl as l } from "../../../common-control.js";
|
|
6
6
|
import { RecommendationConfigService as n } from "../../services/configService.js";
|
|
7
7
|
import { useRecommendationExtensionStore as m } from "../../store/recommendation.js";
|
|
8
|
-
const
|
|
8
|
+
const g = "recommendation-algorithm-control", e = {
|
|
9
9
|
ALGORITHM: "strategy",
|
|
10
10
|
PRODUCT_IDS: "productIds"
|
|
11
11
|
};
|
|
12
|
-
class T extends
|
|
12
|
+
class T extends l {
|
|
13
13
|
constructor() {
|
|
14
14
|
super(...arguments);
|
|
15
15
|
// Store is used ONLY for API-fetched data (algorithms list), not for config
|
|
16
16
|
a(this, "store", m());
|
|
17
17
|
}
|
|
18
18
|
getId() {
|
|
19
|
-
return
|
|
19
|
+
return g;
|
|
20
20
|
}
|
|
21
21
|
getTemplate() {
|
|
22
22
|
return `
|
|
@@ -52,13 +52,13 @@ class T extends h {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
_initializeSelectItems() {
|
|
55
|
-
var
|
|
56
|
-
const t = (
|
|
55
|
+
var o;
|
|
56
|
+
const t = (o = this.store) == null ? void 0 : o.getActivePredictiveAlgorithms;
|
|
57
57
|
if (t != null && t.length)
|
|
58
58
|
try {
|
|
59
59
|
this.api.setUIEAttribute(
|
|
60
60
|
e.ALGORITHM,
|
|
61
|
-
|
|
61
|
+
h.SELECTPICKER.items,
|
|
62
62
|
t
|
|
63
63
|
);
|
|
64
64
|
} catch (s) {
|
|
@@ -70,7 +70,7 @@ class T extends h {
|
|
|
70
70
|
this.api.setVisibility(e.PRODUCT_IDS, s), this.api.setVisibility(`${e.PRODUCT_IDS}_label`, s);
|
|
71
71
|
}
|
|
72
72
|
_onAlgorithmChange(t) {
|
|
73
|
-
this.currentNode
|
|
73
|
+
!this.currentNode || n.getConfig(this.currentNode).strategy === t || (n.updateConfig(
|
|
74
74
|
this.api,
|
|
75
75
|
this.currentNode,
|
|
76
76
|
{ strategy: t },
|
|
@@ -80,13 +80,13 @@ class T extends h {
|
|
|
80
80
|
_onProductIdsChange(t) {
|
|
81
81
|
if (!this.currentNode)
|
|
82
82
|
return;
|
|
83
|
-
const
|
|
83
|
+
const o = t.split(",").map((s) => s.trim()).filter(Boolean);
|
|
84
84
|
n.updateConfig(
|
|
85
85
|
this.api,
|
|
86
86
|
this.currentNode,
|
|
87
|
-
{ productIds:
|
|
87
|
+
{ productIds: o },
|
|
88
88
|
"Updated product IDs"
|
|
89
|
-
), this.store.patchCurrentBlockConfig({ productIds:
|
|
89
|
+
), this.store.patchCurrentBlockConfig({ productIds: o });
|
|
90
90
|
}
|
|
91
91
|
_listenToFormUpdates() {
|
|
92
92
|
this.api.onValueChanged(e.ALGORITHM, (t) => {
|
|
@@ -97,6 +97,6 @@ class T extends h {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
export {
|
|
100
|
-
|
|
100
|
+
g as ALGORITHM_CONTROL_ID,
|
|
101
101
|
T as AlgorithmControl
|
|
102
102
|
};
|