@useinsider/guido 3.18.1-beta.8d3bf29 → 3.18.1
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/@types/config/schemas.js +1 -3
- package/dist/components/Guido.vue.js +4 -4
- package/dist/components/Guido.vue2.js +53 -55
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue.js +7 -7
- package/dist/components/organisms/extensions/recommendation/AssignStrategyDrawer.vue2.js +57 -82
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +24 -28
- package/dist/composables/useCustomInterfaceAppearance.js +42 -46
- package/dist/enums/extensions/recommendationBlock.js +1 -2
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +69 -70
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +28 -67
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +56 -98
- package/dist/guido.css +1 -1
- package/dist/services/recommendationApi.js +52 -61
- package/dist/src/@types/config/schemas.d.ts +0 -4
- package/dist/src/composables/useConfig.d.ts +0 -2
- package/dist/src/enums/extensions/recommendationBlock.d.ts +0 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/strategy.d.ts +0 -2
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -54
- package/dist/src/services/recommendationApi.d.ts +1 -2
- package/dist/src/stores/config.d.ts +0 -160
- package/dist/src/stores/onboarding.d.ts +10 -808
- package/dist/static/styles/components/recommendation-strategy.css.js +5 -70
- package/dist/stores/config.js +59 -66
- package/dist/stores/onboarding.js +36 -46
- package/package.json +1 -1
- package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.js +0 -18
- package/dist/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue2.js +0 -25
- package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.js +0 -21
- package/dist/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue2.js +0 -46
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.js +0 -21
- package/dist/components/organisms/onboarding/RecommendationStrategyOnboarding.vue2.js +0 -46
- package/dist/composables/useLegacyStrategyConversion.js +0 -54
- package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.js +0 -58
- package/dist/src/components/organisms/extensions/recommendation/LegacyStrategyUpdatedModal.vue.d.ts +0 -2
- package/dist/src/components/organisms/onboarding/RecommendationLegacyStrategyOnboarding.vue.d.ts +0 -2
- package/dist/src/components/organisms/onboarding/RecommendationStrategyOnboarding.vue.d.ts +0 -2
- package/dist/src/composables/useLegacyStrategyConversion.d.ts +0 -3
- package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMigration.d.ts +0 -39
- package/dist/static/assets/icons/filled-arrow-rising.svg.js +0 -5
- package/dist/static/assets/icons/line-info.svg.js +0 -5
|
@@ -1,71 +1,67 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import p from "../static/
|
|
5
|
-
import s from "../static/
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import c from "../static/styles/components/
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import d from "../static/styles/components/
|
|
13
|
-
import I from "../static/styles/components/counter.css.js";
|
|
14
|
-
import g from "../static/styles/components/dropdown-menu.css.js";
|
|
1
|
+
import S from "../static/assets/icons/line-change.svg.js";
|
|
2
|
+
import i from "../static/assets/icons/line-delete.svg.js";
|
|
3
|
+
import n from "../static/assets/icons/line-plus.svg.js";
|
|
4
|
+
import p from "../static/styles/base.css.js";
|
|
5
|
+
import s from "../static/styles/components/alert-message.css.js";
|
|
6
|
+
import C from "../static/styles/components/amp-block.css.js";
|
|
7
|
+
import a from "../static/styles/components/base-input.css.js";
|
|
8
|
+
import f from "../static/styles/components/button-group.css.js";
|
|
9
|
+
import c from "../static/styles/components/button.css.js";
|
|
10
|
+
import u from "../static/styles/components/combobox.css.js";
|
|
11
|
+
import l from "../static/styles/components/counter.css.js";
|
|
12
|
+
import d from "../static/styles/components/dropdown-menu.css.js";
|
|
15
13
|
import h from "../static/styles/components/loader.css.js";
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
14
|
+
import g from "../static/styles/components/narrow-panel.css.js";
|
|
15
|
+
import I from "../static/styles/components/popup.css.js";
|
|
16
|
+
import w from "../static/styles/components/recommendation-strategy.css.js";
|
|
17
|
+
import y from "../static/styles/components/switcher.css.js";
|
|
18
|
+
import b from "../static/styles/components/tabs.css.js";
|
|
19
|
+
import B from "../static/styles/components/tools.css.js";
|
|
20
|
+
import $ from "../static/styles/components/version-history.css.js";
|
|
21
|
+
import P from "../static/styles/components/wide-panel.css.js";
|
|
24
22
|
import x from "../static/styles/variables.css.js";
|
|
25
|
-
function
|
|
26
|
-
return `--guido-icon-${t}: url("data:image/svg+xml,${encodeURIComponent(
|
|
23
|
+
function r(t, o) {
|
|
24
|
+
return `--guido-icon-${t}: url("data:image/svg+xml,${encodeURIComponent(o.trim())}");`;
|
|
27
25
|
}
|
|
28
|
-
const
|
|
29
|
-
${
|
|
30
|
-
${
|
|
31
|
-
${
|
|
32
|
-
|
|
33
|
-
${o("line-plus", s)}
|
|
34
|
-
}`, D = [
|
|
26
|
+
const A = `:host {
|
|
27
|
+
${r("line-change", S)}
|
|
28
|
+
${r("line-delete", i)}
|
|
29
|
+
${r("line-plus", n)}
|
|
30
|
+
}`, R = [
|
|
35
31
|
x,
|
|
36
32
|
// Must be on top
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
A,
|
|
34
|
+
p,
|
|
39
35
|
// Must be on top
|
|
36
|
+
s,
|
|
40
37
|
C,
|
|
41
38
|
a,
|
|
39
|
+
f,
|
|
42
40
|
c,
|
|
43
|
-
l,
|
|
44
41
|
u,
|
|
42
|
+
l,
|
|
45
43
|
d,
|
|
46
|
-
I,
|
|
47
|
-
g,
|
|
48
44
|
h,
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
g,
|
|
46
|
+
I,
|
|
47
|
+
y,
|
|
51
48
|
b,
|
|
52
49
|
B,
|
|
53
|
-
|
|
50
|
+
$,
|
|
54
51
|
P,
|
|
55
|
-
|
|
56
|
-
y
|
|
52
|
+
w
|
|
57
53
|
// Last: overrides button.css / wide-panel.css defaults
|
|
58
54
|
].join(`
|
|
59
55
|
|
|
60
|
-
`),
|
|
61
|
-
const
|
|
62
|
-
|
|
56
|
+
`), Y = () => ({ importCss: () => {
|
|
57
|
+
const o = new CSSStyleSheet();
|
|
58
|
+
o.replaceSync(R);
|
|
63
59
|
const e = document.querySelector("ui-editor");
|
|
64
60
|
if (!e)
|
|
65
61
|
return;
|
|
66
62
|
const m = e.shadowRoot;
|
|
67
|
-
m && (m.adoptedStyleSheets = [
|
|
63
|
+
m && (m.adoptedStyleSheets = [o]);
|
|
68
64
|
} });
|
|
69
65
|
export {
|
|
70
|
-
|
|
66
|
+
Y as useCustomInterfaceAppearance
|
|
71
67
|
};
|
|
@@ -4,8 +4,7 @@ const l = {
|
|
|
4
4
|
// Relative path → same-origin as the embedding inone dashboard.
|
|
5
5
|
PRODUCT_ATTRIBUTES_PATH: "/product-attributes/get-attributes",
|
|
6
6
|
RECOMMENDATION_STRATEGIES_PATH: "/api/recommendation-strategies",
|
|
7
|
-
RECOMMENDATION_STRATEGIES_PANEL_PATH: "/discovery/recommendation-strategies"
|
|
8
|
-
NEWSLETTER_RECOMMENDATIONS_PATH: "/newsletter/recommendations"
|
|
7
|
+
RECOMMENDATION_STRATEGIES_PANEL_PATH: "/discovery/recommendation-strategies"
|
|
9
8
|
}, c = {
|
|
10
9
|
CLIENT_ID: "clientId"
|
|
11
10
|
}, d = () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var m = Object.defineProperty;
|
|
2
|
-
var C = (
|
|
3
|
-
var
|
|
2
|
+
var C = (h, l, t) => l in h ? m(h, l, { enumerable: !0, configurable: !0, writable: !0, value: t }) : h[l] = t;
|
|
3
|
+
var n = (h, l, t) => C(h, typeof l != "symbol" ? l + "" : l, t);
|
|
4
4
|
import { useConfig as p } from "../../../../../composables/useConfig.js";
|
|
5
5
|
import { ModificationDescription as y } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
6
6
|
import { CommonControl as N } from "../../../common-control.js";
|
|
@@ -12,9 +12,9 @@ import { registerNodeConfigWriter as b } from "../../utils/nodeConfigWriter.js";
|
|
|
12
12
|
import { AlgorithmControl as T } from "./algorithm.js";
|
|
13
13
|
import { ALGORITHM_CONTROL_ID as ut } from "./algorithm.js";
|
|
14
14
|
import { CurrencyControl as P } from "./currency.js";
|
|
15
|
-
import { CURRENCY_CONTROL_ID as
|
|
15
|
+
import { CURRENCY_CONTROL_ID as ht } from "./currency.js";
|
|
16
16
|
import { FiltersControl as S } from "./filters.js";
|
|
17
|
-
import { FILTERS_CONTROL_ID as
|
|
17
|
+
import { FILTERS_CONTROL_ID as gt } from "./filters.js";
|
|
18
18
|
import { LayoutOrientationControl as O } from "./layoutOrientation.js";
|
|
19
19
|
import { LAYOUT_ORIENTATION_CONTROL_ID as Ct } from "./layoutOrientation.js";
|
|
20
20
|
import { LocaleControl as L } from "./locale.js";
|
|
@@ -29,38 +29,38 @@ import { ShuffleControl as F } from "./shuffle.js";
|
|
|
29
29
|
import { SHUFFLE_CONTROL_ID as St } from "./shuffle.js";
|
|
30
30
|
import { StrategyControl as w } from "./strategy.js";
|
|
31
31
|
import { STRATEGY_CONTROL_ID as Lt } from "./strategy.js";
|
|
32
|
-
import { setCurrencyAttributes as A, getBlockElement as
|
|
33
|
-
import { adjustProductsToSize as kt, formatProductPrice as Dt, getCardComposition as Ft, getCurrentLayout as wt, getMainContainerTbody as At, regenerateMobileProductRows as
|
|
32
|
+
import { setCurrencyAttributes as A, getBlockElement as v, isPartnerManagedBlock as x, updateProductContentInPlace as B, regenerateProductRowsWithStyles as U } from "./utils.js";
|
|
33
|
+
import { adjustProductsToSize as kt, formatProductPrice as Dt, getCardComposition as Ft, getCurrentLayout as wt, getMainContainerTbody as At, regenerateMobileProductRows as vt, updatePricesInPlace as xt, updateSingleProductContent as Bt } from "./utils.js";
|
|
34
34
|
import { useDebounceFn as f } from "../../../../../node_modules/@vueuse/shared/index.js";
|
|
35
35
|
const $ = "ui-elements-recommendation-block";
|
|
36
36
|
class at extends N {
|
|
37
37
|
constructor() {
|
|
38
38
|
super(...arguments);
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
n(this, "store", R());
|
|
40
|
+
n(this, "storeUnsubscription", () => {
|
|
41
41
|
});
|
|
42
42
|
// blockId -> fingerprint of the node config as it looked at the last sync.
|
|
43
|
-
|
|
43
|
+
n(this, "syncedConfigs", /* @__PURE__ */ new Map());
|
|
44
44
|
// A config change waiting to reach the node config. Deferred so it can ride the
|
|
45
45
|
// re-render's single apply() — one user action must cost one undo press.
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
n(this, "pendingNodeConfigWrite", null);
|
|
47
|
+
n(this, "pendingConfigFlushTimer", null);
|
|
48
48
|
// Sub-control instances for lifecycle management
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
n(this, "algorithmControl", null);
|
|
50
|
+
n(this, "localeControl", null);
|
|
51
|
+
n(this, "currencyControl", null);
|
|
52
|
+
n(this, "productCountControl", null);
|
|
53
|
+
n(this, "productLayoutControl", null);
|
|
54
|
+
n(this, "filtersControl", null);
|
|
55
|
+
n(this, "shuffleControl", null);
|
|
56
|
+
n(this, "pricePlacementControl", null);
|
|
57
|
+
n(this, "layoutOrientationControl", null);
|
|
58
|
+
n(this, "strategyControl", null);
|
|
59
|
+
n(this, "rrsEnabled", !1);
|
|
60
60
|
/**
|
|
61
61
|
* Debounced product fetch to prevent rapid API calls during config changes
|
|
62
62
|
*/
|
|
63
|
-
|
|
63
|
+
n(this, "_debouncedFetchProducts", f(async () => {
|
|
64
64
|
try {
|
|
65
65
|
await this.store.fetchRecommendationProducts();
|
|
66
66
|
} finally {
|
|
@@ -78,16 +78,16 @@ class at extends N {
|
|
|
78
78
|
* count. The store pads products to the configured size, so in-place only
|
|
79
79
|
* fails when the size actually changed.
|
|
80
80
|
*/
|
|
81
|
-
|
|
81
|
+
n(this, "_debouncedRegenerateWithProducts", f(() => {
|
|
82
82
|
const t = this.store.recommendationProducts;
|
|
83
83
|
if (!this.currentNode || !this.api)
|
|
84
84
|
return;
|
|
85
85
|
const e = this.api.getDocumentModifier(), o = this._stagePendingNodeConfig(e);
|
|
86
|
-
if (
|
|
86
|
+
if (x(this.currentNode)) {
|
|
87
87
|
o && (e.apply(new y("Update recommendation configuration")), this.pendingNodeConfigWrite = null, this._clearConfigFlush());
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
|
-
|
|
90
|
+
B({
|
|
91
91
|
currentNode: this.currentNode,
|
|
92
92
|
documentModifier: e,
|
|
93
93
|
products: t
|
|
@@ -142,8 +142,8 @@ class at extends N {
|
|
|
142
142
|
const e = (i = this.getContainer()) == null ? void 0 : i.querySelector(".recommendation-controls-container");
|
|
143
143
|
if (!e)
|
|
144
144
|
return;
|
|
145
|
-
const o = this._getRecommendationIdFromNode(t) === null ? null : c.getConfig(t),
|
|
146
|
-
e.classList.toggle("strategy-block",
|
|
145
|
+
const o = this._getRecommendationIdFromNode(t) === null ? null : c.getConfig(t), r = this.rrsEnabled && !!o && (!!(o != null && o.strategyId) || ((o == null ? void 0 : o.configVersion) ?? 0) >= _);
|
|
146
|
+
e.classList.toggle("strategy-block", r);
|
|
147
147
|
}
|
|
148
148
|
async onRender() {
|
|
149
149
|
var o;
|
|
@@ -161,9 +161,9 @@ class at extends N {
|
|
|
161
161
|
const e = this._getRecommendationIdFromNode(t);
|
|
162
162
|
e !== null && e !== this.store.currentRecommendationId && this.store.setCurrentBlock(e), e !== null && this._syncNodeConfigIfChanged(e), this._showControlsForBlock(t), e !== null && !((o = this.store.blockStates[e]) != null && o.isInitialized) && this._fetchBlockData(e).then(() => {
|
|
163
163
|
this._initializeSubControls();
|
|
164
|
-
}), this._subControls.forEach((
|
|
165
|
-
var
|
|
166
|
-
|
|
164
|
+
}), this._subControls.forEach((r) => {
|
|
165
|
+
var i;
|
|
166
|
+
r != null && r.api && (r.currentNode = t, (i = r.onTemplateNodeUpdated) == null || i.call(r, t));
|
|
167
167
|
});
|
|
168
168
|
}
|
|
169
169
|
onDestroy() {
|
|
@@ -210,11 +210,11 @@ class at extends N {
|
|
|
210
210
|
const t = this.store.currentRecommendationId;
|
|
211
211
|
if (!this.currentNode || !this.api || t === null)
|
|
212
212
|
return;
|
|
213
|
-
const { filters: e, strategyId: o, size:
|
|
213
|
+
const { filters: e, strategyId: o, size: r } = this.store.recommendationConfigs;
|
|
214
214
|
this.pendingNodeConfigWrite = {
|
|
215
215
|
blockId: t,
|
|
216
216
|
node: this.currentNode,
|
|
217
|
-
updates: { filters: e, strategyId: o, size:
|
|
217
|
+
updates: { filters: e, strategyId: o, size: r }
|
|
218
218
|
};
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
@@ -257,12 +257,11 @@ class at extends N {
|
|
|
257
257
|
JSON.stringify(o.filters) === JSON.stringify(t.updates.filters) && o.strategyId === t.updates.strategyId && o.size === t.updates.size || c.updateConfig(this.api, e, t.updates, "Update recommendation filters");
|
|
258
258
|
}
|
|
259
259
|
_syncNodeConfigToStore() {
|
|
260
|
-
var
|
|
261
|
-
const t = c.getConfig(this.currentNode), e = this.store.currentRecommendationId, o = e !== null && ((
|
|
260
|
+
var r;
|
|
261
|
+
const t = c.getConfig(this.currentNode), e = this.store.currentRecommendationId, o = e !== null && ((r = this.store.blockStates[e]) == null ? void 0 : r.isInitialized);
|
|
262
262
|
this.store.patchCurrentBlockConfig({
|
|
263
263
|
strategy: t.strategy,
|
|
264
264
|
strategyId: t.strategyId,
|
|
265
|
-
nodeConfigVersion: t.configVersion,
|
|
266
265
|
language: t.language,
|
|
267
266
|
size: t.size,
|
|
268
267
|
productIds: t.productIds,
|
|
@@ -301,8 +300,8 @@ class at extends N {
|
|
|
301
300
|
t !== null && this.store.markBlockInitialized(t), (await Promise.allSettled([
|
|
302
301
|
this.store.fetchRecommendationCreateData(),
|
|
303
302
|
this.store.fetchRecommendationFilters()
|
|
304
|
-
])).forEach((o,
|
|
305
|
-
o.status === "rejected" && console.warn(`Recommendation block: ${["fetchRecommendationCreateData", "fetchRecommendationFilters"][
|
|
303
|
+
])).forEach((o, r) => {
|
|
304
|
+
o.status === "rejected" && console.warn(`Recommendation block: ${["fetchRecommendationCreateData", "fetchRecommendationFilters"][r]} failed`, o.reason);
|
|
306
305
|
}), this._applySmartDefaults();
|
|
307
306
|
try {
|
|
308
307
|
await this.store.fetchRecommendationProducts();
|
|
@@ -324,30 +323,30 @@ class at extends N {
|
|
|
324
323
|
if (!this.currentNode || !this.api)
|
|
325
324
|
return;
|
|
326
325
|
const t = c.getConfig(this.currentNode), e = {};
|
|
327
|
-
let o = null,
|
|
326
|
+
let o = null, r = null, i = null;
|
|
328
327
|
if (t.currency.code === a.currency.code) {
|
|
329
|
-
const { currencyList:
|
|
330
|
-
|
|
328
|
+
const { currencyList: s } = this.store;
|
|
329
|
+
s.length > 0 && (s.some(
|
|
331
330
|
(d) => d.value === `price.${a.currency.code}`
|
|
332
|
-
) || (o =
|
|
331
|
+
) || (o = s[0].value.replace("price.", ""), e.currency = {
|
|
333
332
|
...a.currency,
|
|
334
333
|
code: o,
|
|
335
334
|
symbol: o
|
|
336
335
|
}));
|
|
337
336
|
}
|
|
338
337
|
if (t.strategy === a.strategy) {
|
|
339
|
-
const
|
|
340
|
-
|
|
338
|
+
const s = this.store.getActivePredictiveAlgorithms;
|
|
339
|
+
s.length > 0 && (s.some(
|
|
341
340
|
(d) => d.value === a.strategy
|
|
342
|
-
) || (
|
|
341
|
+
) || (r = s[0].value, e.strategy = r));
|
|
343
342
|
}
|
|
344
343
|
if (t.language === a.language) {
|
|
345
|
-
const
|
|
346
|
-
|
|
344
|
+
const s = this.store.getLanguages;
|
|
345
|
+
s.length > 0 && (s.some(
|
|
347
346
|
(d) => d.value === a.language
|
|
348
|
-
) || (
|
|
347
|
+
) || (i = s[0].value, e.language = i));
|
|
349
348
|
}
|
|
350
|
-
!o && !
|
|
349
|
+
!o && !r && !i || (c.updateConfig(
|
|
351
350
|
this.api,
|
|
352
351
|
this.currentNode,
|
|
353
352
|
e,
|
|
@@ -368,22 +367,22 @@ class at extends N {
|
|
|
368
367
|
thousandSeparator: a.currency.thousandSeparator
|
|
369
368
|
}
|
|
370
369
|
} : {},
|
|
371
|
-
...
|
|
372
|
-
...
|
|
370
|
+
...r ? { strategy: r } : {},
|
|
371
|
+
...i ? { language: i } : {}
|
|
373
372
|
}, { triggerRefetch: !1 }));
|
|
374
373
|
}
|
|
375
374
|
/**
|
|
376
375
|
* Reads the recommendation-id attribute from the block element within the node
|
|
377
376
|
*/
|
|
378
377
|
_getRecommendationIdFromNode(t) {
|
|
379
|
-
const e =
|
|
378
|
+
const e = v(t);
|
|
380
379
|
if (!e || !("getAttribute" in e))
|
|
381
380
|
return null;
|
|
382
381
|
const o = e.getAttribute(I);
|
|
383
382
|
if (!o)
|
|
384
383
|
return null;
|
|
385
|
-
const
|
|
386
|
-
return Number.isNaN(
|
|
384
|
+
const r = parseInt(o);
|
|
385
|
+
return Number.isNaN(r) ? null : r;
|
|
387
386
|
}
|
|
388
387
|
/**
|
|
389
388
|
* Listen to store changes that require product refresh or regeneration.
|
|
@@ -400,17 +399,17 @@ class at extends N {
|
|
|
400
399
|
*/
|
|
401
400
|
_listenStateUpdates() {
|
|
402
401
|
const { store: t } = this;
|
|
403
|
-
let e = t.recommendationProducts, o = t.$state.configVersion,
|
|
402
|
+
let e = t.recommendationProducts, o = t.$state.configVersion, r = t.currentRecommendationId;
|
|
404
403
|
this.storeUnsubscription = t.$subscribe(() => {
|
|
405
|
-
const
|
|
406
|
-
if (
|
|
407
|
-
|
|
404
|
+
const i = t.currentRecommendationId;
|
|
405
|
+
if (i !== r) {
|
|
406
|
+
r = i, e = t.recommendationProducts, o = t.$state.configVersion;
|
|
408
407
|
return;
|
|
409
408
|
}
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
const u = t.recommendationProducts, d = u !== e,
|
|
413
|
-
d &&
|
|
409
|
+
const s = t.$state.configVersion;
|
|
410
|
+
s !== o && (o = s, this._capturePendingNodeConfigWrite(), this._debouncedFetchProducts());
|
|
411
|
+
const u = t.recommendationProducts, d = u !== e, g = Array.isArray(u) && u.length > 0;
|
|
412
|
+
d && g && (e = u, this._debouncedRegenerateWithProducts());
|
|
414
413
|
});
|
|
415
414
|
}
|
|
416
415
|
}
|
|
@@ -418,9 +417,9 @@ export {
|
|
|
418
417
|
ut as ALGORITHM_CONTROL_ID,
|
|
419
418
|
T as AlgorithmControl,
|
|
420
419
|
$ as CONTROL_BLOCK_ID,
|
|
421
|
-
|
|
420
|
+
ht as CURRENCY_CONTROL_ID,
|
|
422
421
|
P as CurrencyControl,
|
|
423
|
-
|
|
422
|
+
gt as FILTERS_CONTROL_ID,
|
|
424
423
|
S as FiltersControl,
|
|
425
424
|
Ct as LAYOUT_ORIENTATION_CONTROL_ID,
|
|
426
425
|
yt as LOCALE_CONTROL_ID,
|
|
@@ -439,15 +438,15 @@ export {
|
|
|
439
438
|
w as StrategyControl,
|
|
440
439
|
kt as adjustProductsToSize,
|
|
441
440
|
Dt as formatProductPrice,
|
|
442
|
-
|
|
441
|
+
v as getBlockElement,
|
|
443
442
|
Ft as getCardComposition,
|
|
444
443
|
wt as getCurrentLayout,
|
|
445
444
|
At as getMainContainerTbody,
|
|
446
|
-
|
|
447
|
-
|
|
445
|
+
x as isPartnerManagedBlock,
|
|
446
|
+
vt as regenerateMobileProductRows,
|
|
448
447
|
U as regenerateProductRowsWithStyles,
|
|
449
448
|
A as setCurrencyAttributes,
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
449
|
+
xt as updatePricesInPlace,
|
|
450
|
+
B as updateProductContentInPlace,
|
|
451
|
+
Bt as updateSingleProductContent
|
|
453
452
|
};
|
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const $ = "recommendation-strategy-control";
|
|
10
|
-
class N extends f {
|
|
1
|
+
var d = Object.defineProperty;
|
|
2
|
+
var y = (r, s, t) => s in r ? d(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;
|
|
3
|
+
var o = (r, s, t) => y(r, typeof s != "symbol" ? s + "" : s, t);
|
|
4
|
+
import { ACADEMY_LINKS as m } from "../../../../../enums/academy.js";
|
|
5
|
+
import { CommonControl as h } from "../../../common-control.js";
|
|
6
|
+
import { useRecommendationExtensionStore as u } from "../../store/recommendation.js";
|
|
7
|
+
const p = "recommendation-strategy-control";
|
|
8
|
+
class f extends h {
|
|
11
9
|
constructor() {
|
|
12
10
|
super(...arguments);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
r(this, "legacyConversion", v());
|
|
16
|
-
r(this, "storeUnsubscription", () => {
|
|
11
|
+
o(this, "store", u());
|
|
12
|
+
o(this, "storeUnsubscription", () => {
|
|
17
13
|
});
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
o(this, "listeners", []);
|
|
15
|
+
o(this, "lastPaintedState", null);
|
|
20
16
|
}
|
|
21
17
|
getId() {
|
|
22
|
-
return
|
|
18
|
+
return p;
|
|
23
19
|
}
|
|
24
20
|
getTemplate() {
|
|
25
21
|
const t = this.api.translate(
|
|
26
22
|
"You can assign a recommendation strategy by selecting an existing one or creating a new one to show specific content."
|
|
27
|
-
), e = this.api.translate("For more information, you can"), a = this.api.translate("visit Academy")
|
|
28
|
-
"Note that this is an older version of the Recommendation Strategy. We recommend you update it to the new Recommendation Strategy for an improved experience."
|
|
29
|
-
);
|
|
23
|
+
), e = this.api.translate("For more information, you can"), a = this.api.translate("visit Academy");
|
|
30
24
|
return `
|
|
31
25
|
<div class="strategy-control-container">
|
|
32
26
|
<div class="strategy-control-header">
|
|
@@ -37,7 +31,7 @@ class N extends f {
|
|
|
37
31
|
${t}
|
|
38
32
|
${e}
|
|
39
33
|
<a
|
|
40
|
-
href="${
|
|
34
|
+
href="${m.EMAIL_RECOMMENDATION_BLOCK}"
|
|
41
35
|
target="_blank"
|
|
42
36
|
rel="noopener noreferrer">${a}</a>.
|
|
43
37
|
</p>
|
|
@@ -59,28 +53,6 @@ class N extends f {
|
|
|
59
53
|
})
|
|
60
54
|
], "strategy-control-cta-row")}
|
|
61
55
|
</div>
|
|
62
|
-
<div data-strategy-legacy-state style="display: none;">
|
|
63
|
-
<div class="strategy-control-notice-row">
|
|
64
|
-
<div class="strategy-control-notice">
|
|
65
|
-
<p class="strategy-control-notice-text">${n}</p>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
<div class="strategy-control-name-band">
|
|
69
|
-
<span class="strategy-control-name">${o}</span>
|
|
70
|
-
${this._strategyAction({
|
|
71
|
-
id: "guido__btn-update-legacy-strategy",
|
|
72
|
-
label: this.api.translate("Update"),
|
|
73
|
-
modifier: "update"
|
|
74
|
-
})}
|
|
75
|
-
</div>
|
|
76
|
-
<div class="strategy-control-actions">
|
|
77
|
-
${this._strategyAction({
|
|
78
|
-
id: "guido__btn-change-legacy-strategy",
|
|
79
|
-
label: this.api.translate("Change"),
|
|
80
|
-
modifier: "change"
|
|
81
|
-
})}
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
56
|
<div data-strategy-assigned-state style="display: none;">
|
|
85
57
|
<div class="strategy-control-name-band">
|
|
86
58
|
<span class="strategy-control-name" data-strategy-name></span>
|
|
@@ -116,8 +88,6 @@ class N extends f {
|
|
|
116
88
|
this._renderState();
|
|
117
89
|
}), this.store.recommendationConfigs.strategyId && !this.store.strategies.length && this.store.fetchStrategies().catch(() => {
|
|
118
90
|
});
|
|
119
|
-
const t = this.store.currentRecommendationId, e = t !== null && !!this.store.blockStates[t], a = this.store.isLegacyStrategyBlock;
|
|
120
|
-
e && !this.store.recommendationConfigs.strategyId && !a && this.onboardingStore.startOnboarding("recommendationStrategyOnboarding"), e && a && this.onboardingStore.startOnboarding("recommendationLegacyStrategyOnboarding");
|
|
121
91
|
}
|
|
122
92
|
onDestroy() {
|
|
123
93
|
this._teardown();
|
|
@@ -130,34 +100,25 @@ class N extends f {
|
|
|
130
100
|
const t = this.getContainer();
|
|
131
101
|
if (!t)
|
|
132
102
|
return;
|
|
133
|
-
const e = (a,
|
|
134
|
-
const
|
|
135
|
-
|
|
103
|
+
const e = (a, n) => {
|
|
104
|
+
const i = t.querySelector(a);
|
|
105
|
+
i && (i.addEventListener("click", n), this.listeners.push({ element: i, handler: n }));
|
|
136
106
|
};
|
|
137
|
-
e("#guido__btn-assign-strategy", () => this.store.openAssignStrategyDrawer()), e("#guido__btn-change-strategy", () => this.store.openAssignStrategyDrawer()), e("#guido__btn-
|
|
138
|
-
this.legacyConversion.convertLegacyStrategy();
|
|
139
|
-
});
|
|
107
|
+
e("#guido__btn-assign-strategy", () => this.store.openAssignStrategyDrawer()), e("#guido__btn-change-strategy", () => this.store.openAssignStrategyDrawer()), e("#guido__btn-remove-strategy", () => this.store.openRemoveStrategyModal());
|
|
140
108
|
}
|
|
141
109
|
_renderState() {
|
|
142
|
-
var
|
|
143
|
-
const { strategyId: t } = this.store.recommendationConfigs, e = t ? ((
|
|
144
|
-
if (
|
|
145
|
-
return;
|
|
146
|
-
const c = this.getContainer();
|
|
147
|
-
if (!c)
|
|
110
|
+
var l;
|
|
111
|
+
const { strategyId: t } = this.store.recommendationConfigs, e = t ? ((l = this.store.assignedStrategy) == null ? void 0 : l.name) ?? "" : "", a = `${t}\0${e}`;
|
|
112
|
+
if (a === this.lastPaintedState)
|
|
148
113
|
return;
|
|
149
|
-
const
|
|
150
|
-
if (!
|
|
114
|
+
const n = this.getContainer();
|
|
115
|
+
if (!n)
|
|
151
116
|
return;
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
l.style.display = l === u ? "" : "none";
|
|
155
|
-
}), g.querySelectorAll("button").forEach((l) => {
|
|
156
|
-
l.disabled = a;
|
|
157
|
-
}), g.classList.toggle("is-converting", a), h && t && (h.textContent = e || `#${t}`), this.lastPaintedState = n;
|
|
117
|
+
const i = n.querySelector("[data-strategy-empty-state]"), c = n.querySelector("[data-strategy-assigned-state]"), g = n.querySelector("[data-strategy-name]");
|
|
118
|
+
!i || !c || (i.style.display = t ? "none" : "", c.style.display = t ? "" : "none", g && t && (g.textContent = e || `#${t}`), this.lastPaintedState = a);
|
|
158
119
|
}
|
|
159
120
|
}
|
|
160
121
|
export {
|
|
161
|
-
|
|
162
|
-
|
|
122
|
+
p as STRATEGY_CONTROL_ID,
|
|
123
|
+
f as StrategyControl
|
|
163
124
|
};
|