@useinsider/guido 3.17.0-beta.6255bfc → 3.17.0-beta.6b5cdfc
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 +5 -6
- package/dist/@types/config/schemas.js +6 -12
- package/dist/components/Guido.vue.js +2 -2
- package/dist/components/Guido.vue2.js +30 -31
- package/dist/composables/useCustomInterfaceAppearance.js +38 -52
- package/dist/composables/useRecommendation.js +44 -52
- package/dist/config/migrator/recommendation/settingsMapper.js +17 -19
- package/dist/config/migrator/recommendationMigrator.js +4 -6
- package/dist/enums/academy.js +1 -2
- package/dist/enums/date.js +3 -4
- package/dist/enums/extensions/recommendationBlock.js +1 -4
- package/dist/extensions/Blocks/Recommendation/block.js +21 -26
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +34 -36
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +95 -96
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +166 -180
- package/dist/extensions/Blocks/Recommendation/services/configService.js +35 -35
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +110 -251
- package/dist/extensions/Blocks/common-control.js +19 -22
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +30 -75
- package/dist/src/@types/config/schemas.d.ts +0 -12
- package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
- package/dist/src/composables/useConfig.d.ts +0 -2
- package/dist/src/composables/useRecommendation.d.ts +0 -1
- package/dist/src/enums/academy.d.ts +0 -1
- package/dist/src/enums/extensions/recommendationBlock.d.ts +0 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -7
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +3 -15
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +10 -206
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +0 -6
- package/dist/src/extensions/Blocks/common-control.d.ts +1 -4
- package/dist/src/services/recommendationApi.d.ts +1 -4
- package/dist/src/stores/config.d.ts +0 -18
- package/dist/src/utils/liquidDynamicContent.d.ts +18 -0
- package/dist/utils/dateUtil.js +10 -29
- package/dist/utils/genericUtil.js +54 -54
- package/dist/utils/liquidDynamicContent.js +14 -0
- package/dist/utils/templatePreparation.js +34 -37
- package/package.json +2 -3
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +0 -18
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +0 -66
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +0 -142
- package/dist/src/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.d.ts +0 -3
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +0 -30
- package/dist/src/mock/api/recommendation-strategies.d.ts +0 -63
- package/dist/src/utils/strategyInfoBox.d.ts +0 -22
- package/dist/static/assets/icons/line-change.svg.js +0 -5
- package/dist/static/assets/icons/line-delete.svg.js +0 -5
- package/dist/static/assets/icons/line-plus.svg.js +0 -5
- package/dist/static/styles/components/recommendation-strategy.css.js +0 -188
- package/dist/utils/strategyInfoBox.js +0 -37
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var c = Object.defineProperty;
|
|
2
|
-
var i = (
|
|
3
|
-
var
|
|
2
|
+
var i = (s, r, e) => r in s ? c(s, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[r] = e;
|
|
3
|
+
var u = (s, r, e) => i(s, typeof r != "symbol" ? r + "" : r, e);
|
|
4
4
|
import { Control as I, UIElementType as n, UEAttr as $ } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
|
-
class
|
|
5
|
+
class d extends I {
|
|
6
6
|
constructor() {
|
|
7
7
|
super(...arguments);
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
u(this, "currentNode");
|
|
9
|
+
u(this, "lastBlockInstanceId", null);
|
|
10
10
|
}
|
|
11
11
|
getContainer() {
|
|
12
12
|
var e;
|
|
@@ -91,21 +91,21 @@ class _ extends I {
|
|
|
91
91
|
* and combines it with the text in Stripo's alert-message layout.
|
|
92
92
|
*/
|
|
93
93
|
_setInfoMessageValue(e, t) {
|
|
94
|
-
const E = this.getContainer(), o = E.querySelector(`[data-icon-key="${e}"]`),
|
|
94
|
+
const E = this.getContainer(), o = E.querySelector(`[data-icon-key="${e}"]`), a = o == null ? void 0 : o.querySelector("ue-icon-component"), l = (a == null ? void 0 : a.outerHTML) ?? "";
|
|
95
95
|
this.api.setUIEAttribute(
|
|
96
96
|
e,
|
|
97
97
|
"value",
|
|
98
98
|
`
|
|
99
99
|
<div class="service-element alert-message-main" style="align-items: start;">
|
|
100
|
-
${
|
|
100
|
+
${l}
|
|
101
101
|
<div class="service-element alert-message-text">
|
|
102
102
|
${t}
|
|
103
103
|
</div>
|
|
104
104
|
</div>
|
|
105
105
|
`
|
|
106
106
|
);
|
|
107
|
-
const
|
|
108
|
-
|
|
107
|
+
const T = E.querySelector(`[data-info-message="${e}"]`);
|
|
108
|
+
T && (T.style.display = "");
|
|
109
109
|
}
|
|
110
110
|
_GuToggle(e) {
|
|
111
111
|
return `
|
|
@@ -126,15 +126,15 @@ class _ extends I {
|
|
|
126
126
|
placeholder: t,
|
|
127
127
|
options: E,
|
|
128
128
|
className: o = "es-180w",
|
|
129
|
-
searchable:
|
|
129
|
+
searchable: a = !1
|
|
130
130
|
}) {
|
|
131
131
|
return `
|
|
132
132
|
<${n.SELECTPICKER}
|
|
133
133
|
class="${o}"
|
|
134
134
|
${$.SELECTPICKER.name}="${e}"
|
|
135
|
-
${
|
|
135
|
+
${a ? `${$.SELECTPICKER.searchable}="true"` : ""}
|
|
136
136
|
${$.SELECTPICKER.placeholder}="${t}">
|
|
137
|
-
${E.map((
|
|
137
|
+
${E.map((l) => this._GuSelectItem(l)).join("")}
|
|
138
138
|
</${n.SELECTPICKER}>
|
|
139
139
|
`;
|
|
140
140
|
}
|
|
@@ -176,15 +176,12 @@ class _ extends I {
|
|
|
176
176
|
</${n.RADIO_BUTTONS}>
|
|
177
177
|
`;
|
|
178
178
|
}
|
|
179
|
-
_GuButton({ name: e, label: t, id: E = ""
|
|
179
|
+
_GuButton({ name: e, label: t, id: E = "" }) {
|
|
180
180
|
return `
|
|
181
181
|
<${n.BUTTON}
|
|
182
182
|
${$.BUTTON.name}="${e}"
|
|
183
183
|
${E ? `id="${E}"` : ""}
|
|
184
|
-
${
|
|
185
|
-
${r ? `${$.BUTTON.icon}="${r}"` : ""}
|
|
186
|
-
${s ? `${$.BUTTON.disabled}="true"` : ""}
|
|
187
|
-
${$.BUTTON.caption}="${t}">
|
|
184
|
+
${$.BUTTON.caption}="${t}"}>
|
|
188
185
|
</${n.BUTTON}>
|
|
189
186
|
`;
|
|
190
187
|
}
|
|
@@ -233,11 +230,11 @@ class _ extends I {
|
|
|
233
230
|
*/
|
|
234
231
|
_GuOrderable(e, t) {
|
|
235
232
|
let E = "";
|
|
236
|
-
t.forEach((
|
|
237
|
-
const
|
|
233
|
+
t.forEach((a) => {
|
|
234
|
+
const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
|
|
238
235
|
E += `
|
|
239
|
-
<${n.ORDERABLE_ITEM} ${
|
|
240
|
-
${
|
|
236
|
+
<${n.ORDERABLE_ITEM} ${l}="${a.key}">
|
|
237
|
+
${a.content}
|
|
241
238
|
</${n.ORDERABLE_ITEM}>
|
|
242
239
|
`;
|
|
243
240
|
});
|
|
@@ -308,5 +305,5 @@ class _ extends I {
|
|
|
308
305
|
}
|
|
309
306
|
}
|
|
310
307
|
export {
|
|
311
|
-
|
|
308
|
+
d as CommonControl
|
|
312
309
|
};
|
package/dist/guido.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-73199fa4] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-6e711fd7]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-b0d3b445]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-b0d3b445]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-b0d3b445]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}
|
|
@@ -1,97 +1,52 @@
|
|
|
1
|
-
import { useHttp as
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
(
|
|
5
|
-
attributeName:
|
|
6
|
-
attributeJs:
|
|
7
|
-
attributeType:
|
|
8
|
-
type:
|
|
9
|
-
displayName:
|
|
10
|
-
isFilterable:
|
|
11
|
-
},
|
|
1
|
+
import { useHttp as d } from "../composables/useHttp.js";
|
|
2
|
+
import { QUERY_PARAMS as l, URLS as u } from "../enums/extensions/recommendationBlock.js";
|
|
3
|
+
const R = (o) => o.reduce(
|
|
4
|
+
(a, t, s) => (a[s] = {
|
|
5
|
+
attributeName: t.attributeName,
|
|
6
|
+
attributeJs: t.attributeJs,
|
|
7
|
+
attributeType: t.attributeType,
|
|
8
|
+
type: t.type,
|
|
9
|
+
displayName: t.displayName,
|
|
10
|
+
isFilterable: t.isFilterable
|
|
11
|
+
}, a),
|
|
12
12
|
{}
|
|
13
|
-
),
|
|
14
|
-
const { get:
|
|
13
|
+
), f = () => {
|
|
14
|
+
const { get: o } = d(), { get: a } = d({ headers: {} }), t = "6KcLM9TwheVB1mgK";
|
|
15
15
|
return {
|
|
16
16
|
fetchRecommendationCreateData: async () => {
|
|
17
17
|
try {
|
|
18
|
-
return (await
|
|
18
|
+
return (await o("/newsletter/recommendations/create-data")).data;
|
|
19
19
|
} catch (e) {
|
|
20
20
|
throw console.error("fetchUserModalState error:", e), e;
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
fetchRecommendationFilters: async () => {
|
|
24
24
|
try {
|
|
25
|
-
const { data: e } = await
|
|
26
|
-
|
|
27
|
-
),
|
|
28
|
-
return
|
|
25
|
+
const { data: e } = await o(
|
|
26
|
+
u.PRODUCT_ATTRIBUTES_PATH
|
|
27
|
+
), n = Array.isArray(e) ? e : (e == null ? void 0 : e.data) ?? [];
|
|
28
|
+
return R(n);
|
|
29
29
|
} catch (e) {
|
|
30
30
|
throw console.error("fetchRecommendationFilters error:", e), e;
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
fetchRecommendationProducts: async (e,
|
|
34
|
-
var
|
|
33
|
+
fetchRecommendationProducts: async (e, n) => {
|
|
34
|
+
var i;
|
|
35
35
|
try {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
console.debug("🏁 Recommendation API Query:",
|
|
40
|
-
const
|
|
41
|
-
`${
|
|
36
|
+
const r = new URLSearchParams(Object.entries(n));
|
|
37
|
+
r.set(l.CLIENT_ID, t);
|
|
38
|
+
const m = decodeURIComponent(r.toString());
|
|
39
|
+
console.debug("🏁 Recommendation API Query:", m);
|
|
40
|
+
const c = await a(
|
|
41
|
+
`${u.RECOMMENDATION_API_URL}/v2/${e}?${m}`
|
|
42
42
|
);
|
|
43
|
-
return ((
|
|
44
|
-
} catch (
|
|
45
|
-
throw console.error("fetchRecommendationProducts error:",
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
fetchRecommendationProductsByUrl: async (e) => {
|
|
49
|
-
var o;
|
|
50
|
-
try {
|
|
51
|
-
const t = new RegExp(`[?&]${h.CLIENT_ID}=`).test(e), n = e.includes("?") ? "&" : "?", d = t ? e : `${e}${n}${h.CLIENT_ID}=${i}`, a = await r(
|
|
52
|
-
d
|
|
53
|
-
);
|
|
54
|
-
return ((o = a == null ? void 0 : a.data) == null ? void 0 : o.data) ?? [];
|
|
55
|
-
} catch (t) {
|
|
56
|
-
throw console.error("fetchRecommendationProductsByUrl error:", t), t;
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
fetchRecommendationStrategies: async () => {
|
|
60
|
-
try {
|
|
61
|
-
const { data: e } = await c(
|
|
62
|
-
`${m.RECOMMENDATION_STRATEGIES_PATH}?filters=${encodeURIComponent(y)}`
|
|
63
|
-
);
|
|
64
|
-
return Array.isArray(e) ? e : (e == null ? void 0 : e.data) ?? [];
|
|
65
|
-
} catch (e) {
|
|
66
|
-
throw console.error("fetchRecommendationStrategies error:", e), e;
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
generateStrategyEndpoint: async (e, o) => {
|
|
70
|
-
try {
|
|
71
|
-
const { data: t } = await s(
|
|
72
|
-
`${m.RECOMMENDATION_STRATEGIES_PATH}/endpoint-generate`,
|
|
73
|
-
{
|
|
74
|
-
// Email designs have no campaign yet; backend only needs it
|
|
75
|
-
// for previewer flows.
|
|
76
|
-
campaignId: 0,
|
|
77
|
-
// Deliberately empty: page types are a web-surface concept
|
|
78
|
-
// and an email has no page context to send.
|
|
79
|
-
pageTypes: [],
|
|
80
|
-
isPreviewer: !1,
|
|
81
|
-
strategy: e,
|
|
82
|
-
userId: "",
|
|
83
|
-
currency: o
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
|
-
if (!t || typeof t != "object" || !("full_path" in t || "data" in t))
|
|
87
|
-
throw new Error("Unexpected endpoint-generate response shape");
|
|
88
|
-
return "full_path" in t ? t : t.data;
|
|
89
|
-
} catch (t) {
|
|
90
|
-
throw console.error("generateStrategyEndpoint error:", t), t;
|
|
43
|
+
return ((i = c == null ? void 0 : c.data) == null ? void 0 : i.data) ?? [];
|
|
44
|
+
} catch (r) {
|
|
45
|
+
throw console.error("fetchRecommendationProducts error:", r), r;
|
|
91
46
|
}
|
|
92
47
|
}
|
|
93
48
|
};
|
|
94
49
|
};
|
|
95
50
|
export {
|
|
96
|
-
|
|
51
|
+
f as useRecommendationApi
|
|
97
52
|
};
|
|
@@ -395,12 +395,6 @@ export declare const FeaturesSchema: v.ObjectSchema<{
|
|
|
395
395
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
396
396
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
397
397
|
readonly linkTrackingIds: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
398
|
-
/**
|
|
399
|
-
* Assign a Reusable Recommendation Strategy (RRS) to recommendation blocks instead of
|
|
400
|
-
* per-block algorithm settings. Hides Algorithm, Filters, Shuffle and Number of Products
|
|
401
|
-
* (they live on the strategy) and adds the Assign Strategy flow.
|
|
402
|
-
*/
|
|
403
|
-
readonly reusableRecommendationStrategy: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
404
398
|
}, undefined>;
|
|
405
399
|
/**
|
|
406
400
|
* Default block types available in Stripo
|
|
@@ -800,12 +794,6 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
|
|
|
800
794
|
readonly allowlistEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
801
795
|
/** Enable persistent link tracking-id assignment for the click heatmap (opt-in) */
|
|
802
796
|
readonly linkTrackingIds: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
803
|
-
/**
|
|
804
|
-
* Assign a Reusable Recommendation Strategy (RRS) to recommendation blocks instead of
|
|
805
|
-
* per-block algorithm settings. Hides Algorithm, Filters, Shuffle and Number of Products
|
|
806
|
-
* (they live on the strategy) and adds the Assign Strategy flow.
|
|
807
|
-
*/
|
|
808
|
-
readonly reusableRecommendationStrategy: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
809
797
|
}, undefined>, {}>;
|
|
810
798
|
/** Block configuration */
|
|
811
799
|
readonly blocks: v.OptionalSchema<v.ObjectSchema<{
|
|
@@ -35,9 +35,9 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_WithDefaults<
|
|
|
35
35
|
size: "X-small" | "small" | "medium" | "large";
|
|
36
36
|
description: string;
|
|
37
37
|
closeOnOutsideClick: boolean;
|
|
38
|
-
footerStatus: boolean;
|
|
39
38
|
footerButtonOptions: FooterButtonGroup;
|
|
40
39
|
closeButtonStatus: boolean;
|
|
40
|
+
footerStatus: boolean;
|
|
41
41
|
}>;
|
|
42
42
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
43
43
|
export default _default;
|
|
@@ -99,7 +99,6 @@ export declare const useConfig: () => {
|
|
|
99
99
|
autosave: boolean;
|
|
100
100
|
allowlistEnabled: boolean;
|
|
101
101
|
linkTrackingIds: boolean;
|
|
102
|
-
reusableRecommendationStrategy: boolean;
|
|
103
102
|
};
|
|
104
103
|
blocks: {
|
|
105
104
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -234,7 +233,6 @@ export declare const useConfig: () => {
|
|
|
234
233
|
autosave: boolean;
|
|
235
234
|
allowlistEnabled: boolean;
|
|
236
235
|
linkTrackingIds: boolean;
|
|
237
|
-
reusableRecommendationStrategy: boolean;
|
|
238
236
|
} | null>;
|
|
239
237
|
blocks: import("vue").ComputedRef<{
|
|
240
238
|
excludeDefaults: ("amp-accordion" | "amp-carousel" | "amp-form-controls" | "banner-block" | "button-block" | "html-block" | "image-block" | "menu-block" | "social-block" | "spacer-block" | "text-block" | "timer-block" | "video-block")[];
|
|
@@ -18,7 +18,6 @@ export declare const useRecommendation: () => {
|
|
|
18
18
|
getRecommendationCampaignData: (id: string) => CampaignData;
|
|
19
19
|
buildCampaignUrl: (campaignId: string, overrides?: {
|
|
20
20
|
strategy: string;
|
|
21
|
-
strategyId: string;
|
|
22
21
|
language: string;
|
|
23
22
|
currencyCode: string;
|
|
24
23
|
size: string;
|
|
@@ -8,6 +8,5 @@ export declare const ACADEMY_LINKS: {
|
|
|
8
8
|
readonly EMAIL_EDITOR: "https://academy.insiderone.com/docs/email-drag-and-drop-editor";
|
|
9
9
|
readonly GLOBAL_UNSUBSCRIBE: "https://academy.insiderone.com/docs/global-unsubscribe-preference-center";
|
|
10
10
|
readonly AMP_FOR_EMAILS: "https://academy.insiderone.com/docs/amp-for-emails";
|
|
11
|
-
readonly EMAIL_RECOMMENDATION_BLOCK: "https://academy.insiderone.com/docs/new-editor-email-recommendation-block";
|
|
12
11
|
};
|
|
13
12
|
export type AcademyLinkKey = keyof typeof ACADEMY_LINKS;
|
|
@@ -3,8 +3,6 @@ import type { RecommendationFeedItem } from '@@/Types/recommendation';
|
|
|
3
3
|
export declare const URLS: {
|
|
4
4
|
RECOMMENDATION_API_URL: string;
|
|
5
5
|
PRODUCT_ATTRIBUTES_PATH: string;
|
|
6
|
-
RECOMMENDATION_STRATEGIES_PATH: string;
|
|
7
|
-
RECOMMENDATION_STRATEGIES_PANEL_PATH: string;
|
|
8
6
|
};
|
|
9
7
|
export declare const QUERY_PARAMS: {
|
|
10
8
|
CLIENT_ID: string;
|
|
@@ -8,13 +8,6 @@
|
|
|
8
8
|
* - Merging partial updates with existing config
|
|
9
9
|
*/
|
|
10
10
|
import type { RecommendationNodeConfig, CurrencyConfig, OmnibusTextConfig } from '../types/nodeConfig';
|
|
11
|
-
/**
|
|
12
|
-
* Config version, doubling as an era marker: v1 blocks predate the reusable
|
|
13
|
-
* recommendation strategy, v2 blocks can carry one. A v1 block is a valid
|
|
14
|
-
* terminal state — it is preserved, never migrated up (SD-149105).
|
|
15
|
-
*/
|
|
16
|
-
export declare const PRE_RRS_CONFIG_VERSION = 1;
|
|
17
|
-
export declare const CURRENT_CONFIG_VERSION = 2;
|
|
18
11
|
/**
|
|
19
12
|
* Default currency configuration
|
|
20
13
|
* Uses USD as the base currency with standard formatting
|
|
@@ -54,3 +47,9 @@ export declare const DEFAULT_NODE_CONFIG: RecommendationNodeConfig;
|
|
|
54
47
|
* View Together and Purchase Together algorithms are disabled because these require product id.
|
|
55
48
|
*/
|
|
56
49
|
export declare const EXCLUDED_ALGORITHM_IDS: number[];
|
|
50
|
+
/**
|
|
51
|
+
* Current configuration version
|
|
52
|
+
* Increment this when making breaking changes to the schema
|
|
53
|
+
* Used for migration detection
|
|
54
|
+
*/
|
|
55
|
+
export declare const CURRENT_CONFIG_VERSION = 1;
|
|
@@ -10,4 +10,4 @@ export { RecommendationBlockId } from './blockIds';
|
|
|
10
10
|
export { RecommendationControlId } from './controlIds';
|
|
11
11
|
export { BLOCK_ROOT_SELECTOR, CONTAINER_SELECTOR, DESKTOP_CONTAINER_SELECTOR, MOBILE_CONTAINER_SELECTOR, MOBILE_ROW_SELECTOR, CSS_CLASS_RECO_BUTTON, CSS_CLASS_SKIP_COMPILE, RECOMMENDATION_VARIABLE_BUILTIN_ATTRIBUTES, CURRENCY_ATTR, ATTR_PRODUCT_IMAGE, ATTR_PRODUCT_NAME, ATTR_PRODUCT_PRICE, ATTR_PRODUCT_OLD_PRICE, ATTR_PRODUCT_OMNIBUS_PRICE, ATTR_PRODUCT_OMNIBUS_DISCOUNT, ATTR_PRODUCT_BUTTON, ATTR_CUSTOM_PREFIX, ATTR_DATA_CARD_COMPOSITION, ATTR_DATA_CUSTOM_ATTRIBUTES, ATTR_PRODUCT_ATTR, SELECTOR_ATTRIBUTE_ROW, ATTR_DATA_ATTRIBUTE_TYPE, PRODUCT_ATTRIBUTE_PREFIX, BUILT_IN_DEFAULT_ATTRIBUTES, } from './selectors';
|
|
12
12
|
export { LAYOUT_VALUES, LAYOUT_OPTIONS, DEFAULT_PRODUCTS_PER_ROW, DEFAULT_CARDS_IN_ROW, DEFAULT_MOBILE_CARDS_IN_ROW, MAX_PRODUCT_COUNT, MIN_PRODUCT_COUNT, MAX_PRODUCTS_PER_ROW, MIN_PRODUCTS_PER_ROW, MAX_MOBILE_PRODUCTS_PER_ROW, MIN_MOBILE_PRODUCTS_PER_ROW, DEFAULT_COLUMN_SPACING, DEFAULT_ROW_SPACING, DEFAULT_MOBILE_COLUMN_SPACING, DEFAULT_MOBILE_ROW_SPACING, MIN_SPACING, MAX_SPACING, SPACING_STEP, } from './layout';
|
|
13
|
-
export { DEFAULT_NODE_CONFIG, DEFAULT_CURRENCY, DEFAULT_COMPOSITION, DEFAULT_VISIBILITY, CURRENT_CONFIG_VERSION,
|
|
13
|
+
export { DEFAULT_NODE_CONFIG, DEFAULT_CURRENCY, DEFAULT_COMPOSITION, DEFAULT_VISIBILITY, CURRENT_CONFIG_VERSION, EXCLUDED_ALGORITHM_IDS, } from './defaultConfig';
|
|
@@ -9,9 +9,8 @@ import { PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID } from './pricePlacem
|
|
|
9
9
|
import { ProductCountControl, PRODUCT_COUNT_CONTROL_ID } from './productCount';
|
|
10
10
|
import { ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID } from './productLayout';
|
|
11
11
|
import { ShuffleControl, SHUFFLE_CONTROL_ID } from './shuffle';
|
|
12
|
-
import { StrategyControl, STRATEGY_CONTROL_ID } from './strategy';
|
|
13
12
|
export declare const CONTROL_BLOCK_ID = "ui-elements-recommendation-block";
|
|
14
|
-
export { AlgorithmControl, ALGORITHM_CONTROL_ID, LocaleControl, LOCALE_CONTROL_ID, CurrencyControl, CURRENCY_CONTROL_ID, ProductCountControl, PRODUCT_COUNT_CONTROL_ID, ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID, FiltersControl, FILTERS_CONTROL_ID, ShuffleControl, SHUFFLE_CONTROL_ID, LayoutOrientationControl, LAYOUT_ORIENTATION_CONTROL_ID, PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID,
|
|
13
|
+
export { AlgorithmControl, ALGORITHM_CONTROL_ID, LocaleControl, LOCALE_CONTROL_ID, CurrencyControl, CURRENCY_CONTROL_ID, ProductCountControl, PRODUCT_COUNT_CONTROL_ID, ProductLayoutControl, PRODUCT_LAYOUT_CONTROL_ID, FiltersControl, FILTERS_CONTROL_ID, ShuffleControl, SHUFFLE_CONTROL_ID, LayoutOrientationControl, LAYOUT_ORIENTATION_CONTROL_ID, PricePlacementControl, PRICE_PLACEMENT_CONTROL_ID, };
|
|
15
14
|
export * from './utils';
|
|
16
15
|
/**
|
|
17
16
|
* Main recommendation block control that composes all sub-controls
|
|
@@ -30,17 +29,8 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
30
29
|
private shuffleControl;
|
|
31
30
|
private pricePlacementControl;
|
|
32
31
|
private layoutOrientationControl;
|
|
33
|
-
private strategyControl;
|
|
34
32
|
getId(): string;
|
|
35
|
-
/** Every sub-control the coordinator owns, in panel order. */
|
|
36
|
-
private get _subControls();
|
|
37
33
|
getTemplate(): string;
|
|
38
|
-
/**
|
|
39
|
-
* Shows the selected block's own set of controls. A block is strategy-backed
|
|
40
|
-
* when a flag-on session stamped its config version, or when it already
|
|
41
|
-
* carries a strategy — an assignment must stay editable however it arrived.
|
|
42
|
-
*/
|
|
43
|
-
private _showControlsForBlock;
|
|
44
34
|
onRender(): Promise<void>;
|
|
45
35
|
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
46
36
|
onDestroy(): void;
|
|
@@ -117,10 +107,8 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
117
107
|
*/
|
|
118
108
|
private _listenStateUpdates;
|
|
119
109
|
/**
|
|
120
|
-
* Persists
|
|
121
|
-
*
|
|
122
|
-
* `size` rides along: assigning a strategy writes it to the store only, and a
|
|
123
|
-
* stale node config would rebuild the block against the old slot count.
|
|
110
|
+
* Persists the current filter state from Pinia store to the Stripo node config.
|
|
111
|
+
* This ensures filters survive template save/reload cycles.
|
|
124
112
|
*/
|
|
125
113
|
private _persistFiltersToNodeConfig;
|
|
126
114
|
}
|