@useinsider/guido 3.19.0-beta.acb00a2 → 3.19.0-beta.b05a465
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 +104 -91
- package/dist/components/Guido.vue.js +8 -8
- package/dist/components/Guido.vue2.js +85 -86
- package/dist/components/organisms/base/AuthErrorModal.vue.js +18 -0
- package/dist/components/organisms/base/AuthErrorModal.vue2.js +42 -0
- package/dist/components/organisms/header/EditorActions.vue.js +4 -4
- package/dist/components/organisms/header/EditorActions.vue2.js +23 -25
- package/dist/components/wrappers/WpModal.vue.js +1 -1
- package/dist/components/wrappers/WpModal.vue2.js +4 -3
- package/dist/composables/useActionsApi.js +44 -43
- package/dist/composables/useAuthError.js +52 -0
- package/dist/composables/useAutoSave.js +11 -11
- package/dist/composables/useCodeEditorApi.js +23 -9
- package/dist/composables/useCortexBlueprintBridge.js +54 -122
- package/dist/composables/useEmailTemplateApplier.js +52 -108
- package/dist/composables/useHttp.js +64 -54
- package/dist/composables/useLegacyStrategyConversion.js +23 -19
- package/dist/composables/useStripo.js +24 -20
- package/dist/composables/useToaster.js +17 -15
- package/dist/composables/useTranslations.js +3 -2
- package/dist/composables/useVersionHistoryApi.js +33 -24
- package/dist/composables/validators/useLiquidValidator.js +15 -15
- package/dist/config/migrator/index.js +14 -13
- package/dist/config/migrator/recommendationMigrator.js +28 -21
- package/dist/config/migrator/recommendationPartnerMigrator.js +56 -0
- package/dist/enums/extensions/recommendationBlock.js +30 -29
- package/dist/extensions/Blocks/Recommendation/block.js +15 -14
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +103 -91
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +45 -38
- package/dist/extensions/Blocks/Recommendation/controls/main/strategy.js +72 -49
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +30 -29
- package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +72 -70
- package/dist/extensions/Blocks/Recommendation/utils/compositionKeys.js +69 -60
- package/dist/extensions/Blocks/Recommendation/utils/partnerScope.js +25 -0
- package/dist/guido.css +1 -1
- package/dist/src/@types/config/schemas.d.ts +16 -0
- package/dist/src/components/organisms/base/AuthErrorModal.vue.d.ts +2 -0
- package/dist/src/components/wrappers/WpModal.vue.d.ts +5 -1
- package/dist/src/composables/useAuthError.d.ts +12 -0
- package/dist/src/composables/useConfig.d.ts +2 -0
- package/dist/src/composables/useCortexBlueprintBridge.d.ts +3 -2
- package/dist/src/composables/useEmailTemplateApplier.d.ts +5 -18
- package/dist/src/composables/useGuidoActions.d.ts +2 -0
- package/dist/src/composables/useHttp.d.ts +2 -0
- package/dist/src/config/migrator/index.d.ts +2 -1
- package/dist/src/config/migrator/recommendationPartnerMigrator.d.ts +19 -0
- package/dist/src/enums/extensions/recommendationBlock.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +3 -0
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/compositionKeys.d.ts +4 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/partnerScope.d.ts +33 -0
- package/dist/src/mock/cortexChatStore.d.ts +12 -0
- package/dist/src/stores/config.d.ts +20 -0
- package/dist/src/stores/guido-email-editor.d.ts +10 -20
- package/dist/src/stores/onboarding.d.ts +4 -0
- package/dist/src/stores/recommendation.d.ts +5 -0
- package/dist/src/utils/dateUtil.d.ts +10 -0
- package/dist/src/utils/genericUtil.d.ts +3 -0
- package/dist/src/utils/stripoEditorApi.d.ts +4 -0
- package/dist/static/styles/components/recommendation-strategy.css.js +9 -0
- package/dist/static/styles/components/version-history.css.js +2 -6
- package/dist/stores/guido-email-editor.js +1 -3
- package/dist/stores/onboarding.js +4 -0
- package/dist/stores/unsubscribe.js +3 -3
- package/dist/utils/stripoEditorApi.js +11 -0
- package/package.json +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BlockId as f } from "../../enums/block.js";
|
|
2
|
-
import { DEFAULT_NODE_CONFIG as
|
|
3
|
-
import { ATTR_RECOMMENDATION_TITLE as
|
|
2
|
+
import { DEFAULT_NODE_CONFIG as y } from "../../extensions/Blocks/Recommendation/constants/defaultConfig.js";
|
|
3
|
+
import { ATTR_RECOMMENDATION_TITLE as b } from "../../extensions/Blocks/Recommendation/constants/selectors.js";
|
|
4
4
|
import { useTemplateStore as T } from "../../stores/template.js";
|
|
5
5
|
import { mapComposition as v } from "./recommendation/compositionMapper.js";
|
|
6
6
|
import { extractCurrencyFromBlock as C, extractTitleText as M, hasVisibleTitle as R, extractCardBgColor as S, isPartnerManagedBlock as h } from "./recommendation/extractors.js";
|
|
@@ -8,28 +8,28 @@ import { buildBlockHtml as w } from "./recommendation/htmlBuilder.js";
|
|
|
8
8
|
import { parseRecommendationId as x, parseLegacyConfig as E } from "./recommendation/parseLegacyConfig.js";
|
|
9
9
|
import { mapSettings as A } from "./recommendation/settingsMapper.js";
|
|
10
10
|
const H = 'td[esd-dev-product-config][class*="ins-recommendation-v3-block-"]:not(.recommendation-block-v2), td.product-block[esd-handler-name*="EmailRecommendationV3"][esd-dev-product-config]:not(.recommendation-block-v2)';
|
|
11
|
-
function B(n, t,
|
|
11
|
+
function B(n, t, c) {
|
|
12
12
|
var l;
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
13
|
+
const r = x(t);
|
|
14
|
+
if (r === null)
|
|
15
15
|
return console.warn(
|
|
16
16
|
"[RecommendationMigrator] Skipping block — missing/invalid `ins-recommendation-v3-campaign-id`"
|
|
17
17
|
), !1;
|
|
18
|
-
const
|
|
19
|
-
if (!
|
|
18
|
+
const o = E(t);
|
|
19
|
+
if (!o)
|
|
20
20
|
return console.warn(
|
|
21
|
-
`[RecommendationMigrator] Aborting block id=${
|
|
21
|
+
`[RecommendationMigrator] Aborting block id=${r} — \`esd-dev-product-config\` missing or unable to be parsed`
|
|
22
22
|
), !1;
|
|
23
|
-
const
|
|
23
|
+
const a = c[String(r)] ?? {
|
|
24
24
|
currencySettings: C(t)
|
|
25
|
-
},
|
|
26
|
-
e.titleVariable || (e.visibility[
|
|
25
|
+
}, i = A(a, o, r), e = v((l = o.composition) == null ? void 0 : l.variables), d = M(t);
|
|
26
|
+
e.titleVariable || (e.visibility[b] = R(t));
|
|
27
27
|
const p = S(t), g = {
|
|
28
|
-
...
|
|
28
|
+
...i,
|
|
29
29
|
strategyId: "",
|
|
30
30
|
composition: e.composition,
|
|
31
31
|
visibility: e.visibility,
|
|
32
|
-
previousTitleHtml:
|
|
32
|
+
previousTitleHtml: y.previousTitleHtml,
|
|
33
33
|
textTrimming: e.anyTextTrimming
|
|
34
34
|
}, m = h(t), u = `
|
|
35
35
|
<table>
|
|
@@ -56,30 +56,37 @@ function B(n, t, a) {
|
|
|
56
56
|
</table>
|
|
57
57
|
`, s = n.parseFromString(u, "text/html").querySelector("td.esd-structure");
|
|
58
58
|
return !s || !t.parentNode ? (console.warn(
|
|
59
|
-
`[RecommendationMigrator] Aborting block id=${
|
|
59
|
+
`[RecommendationMigrator] Aborting block id=${r} — failed to construct new HTML element`
|
|
60
60
|
), !1) : (t.parentNode.replaceChild(s, t), !0);
|
|
61
61
|
}
|
|
62
62
|
function G(n, t = {}) {
|
|
63
|
-
const
|
|
63
|
+
const c = new DOMParser();
|
|
64
|
+
let r;
|
|
65
|
+
try {
|
|
66
|
+
r = c.parseFromString(n, "text/html");
|
|
67
|
+
} catch (i) {
|
|
68
|
+
return console.error("[RecommendationMigrator] Failed to parse template:", i), n;
|
|
69
|
+
}
|
|
70
|
+
const o = Array.from(r.querySelectorAll(H));
|
|
64
71
|
try {
|
|
65
72
|
T().$patch((e) => {
|
|
66
73
|
e.migrations = {
|
|
67
74
|
...e.migrations,
|
|
68
|
-
[f.Recommendation]:
|
|
75
|
+
[f.Recommendation]: o.length
|
|
69
76
|
};
|
|
70
77
|
});
|
|
71
78
|
} catch {
|
|
72
79
|
}
|
|
73
|
-
if (
|
|
80
|
+
if (o.length === 0)
|
|
74
81
|
return n;
|
|
75
|
-
let
|
|
76
|
-
return
|
|
82
|
+
let a = 0;
|
|
83
|
+
return o.forEach((i) => {
|
|
77
84
|
try {
|
|
78
|
-
B(
|
|
85
|
+
B(c, i, t) && (a += 1);
|
|
79
86
|
} catch (e) {
|
|
80
87
|
console.error("[RecommendationMigrator] Unexpected error migrating block:", e);
|
|
81
88
|
}
|
|
82
|
-
}),
|
|
89
|
+
}), a > 0 && console.info(`[RecommendationMigrator] Migrated ${a} legacy Recommendation block(s)`), r.documentElement.outerHTML;
|
|
83
90
|
}
|
|
84
91
|
export {
|
|
85
92
|
G as migrateRecommendation
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { RECOMMENDATION_ID_ATTR as a, SELECTOR_ATTRIBUTE_ROW as f, ATTR_DATA_ATTRIBUTE_TYPE as _, ATTR_CUSTOM_PREFIX as g, ATTR_DATA_CARD_COMPOSITION as m, ATTR_DATA_CUSTOM_ATTRIBUTES as R } from "../../extensions/Blocks/Recommendation/constants/selectors.js";
|
|
2
|
+
import { carriesForeignPartnerConfig as O, canJudgeUnstampedBlock as d, withoutCustomAttributes as l } from "../../extensions/Blocks/Recommendation/utils/partnerScope.js";
|
|
3
|
+
const E = ".recommendation-block-v2[esd-ext-config]", T = "esd-ext-config";
|
|
4
|
+
function S(t) {
|
|
5
|
+
const r = t.getAttribute(T);
|
|
6
|
+
if (!r)
|
|
7
|
+
return null;
|
|
8
|
+
try {
|
|
9
|
+
const e = JSON.parse(r);
|
|
10
|
+
return e && typeof e == "object" && !Array.isArray(e) ? e : null;
|
|
11
|
+
} catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function p(t, r, e) {
|
|
16
|
+
const s = l(r.composition ?? []);
|
|
17
|
+
t.querySelectorAll(f).forEach((o) => {
|
|
18
|
+
var u;
|
|
19
|
+
(u = o.getAttribute(_)) != null && u.startsWith(g) && o.remove();
|
|
20
|
+
}), t.setAttribute(m, s.join(",")), t.setAttribute(R, "[]"), t.setAttribute(T, JSON.stringify({
|
|
21
|
+
...r,
|
|
22
|
+
strategyId: "",
|
|
23
|
+
strategy: "",
|
|
24
|
+
filters: [],
|
|
25
|
+
productIds: [],
|
|
26
|
+
composition: s,
|
|
27
|
+
partnerName: e
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
function I(t, { partnerName: r, campaignUrls: e, rrsEnabled: s }) {
|
|
31
|
+
if (!r)
|
|
32
|
+
return t;
|
|
33
|
+
let o;
|
|
34
|
+
try {
|
|
35
|
+
o = new DOMParser().parseFromString(t, "text/html");
|
|
36
|
+
} catch (n) {
|
|
37
|
+
return console.error("[RecommendationPartnerMigrator] Failed to parse template:", n), t;
|
|
38
|
+
}
|
|
39
|
+
const u = Array.from(o.querySelectorAll(E));
|
|
40
|
+
if (u.length === 0)
|
|
41
|
+
return t;
|
|
42
|
+
let c = 0;
|
|
43
|
+
return u.forEach((n) => {
|
|
44
|
+
const i = S(n), A = Number(n.getAttribute(a));
|
|
45
|
+
if (!(!i || !Number.isFinite(A))) {
|
|
46
|
+
if (O({ config: i, blockId: A, partnerName: r, campaignUrls: e, rrsEnabled: s })) {
|
|
47
|
+
p(n, i, r), c += 1;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
i.partnerName || !d({ config: i, campaignUrls: e, rrsEnabled: s }) || (n.setAttribute(T, JSON.stringify({ ...i, partnerName: r })), c += 1);
|
|
51
|
+
}
|
|
52
|
+
}), c > 0 ? o.documentElement.outerHTML : t;
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
I as migrateRecommendationPartnerScope
|
|
56
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useTranslations as s } from "../../composables/useTranslations.js";
|
|
2
|
-
const
|
|
2
|
+
const t = {
|
|
3
3
|
RECOMMENDATION_API_URL: "https://recommendationv2.api.useinsider.com",
|
|
4
4
|
// Relative path → same-origin as the embedding inone dashboard.
|
|
5
5
|
PRODUCT_ATTRIBUTES_PATH: "/product-attributes/get-attributes",
|
|
@@ -9,17 +9,17 @@ const a = {
|
|
|
9
9
|
MIGRATE_STRATEGIES_PATH: "/newsletter/recommendations/migrate-strategies",
|
|
10
10
|
// The template route narrows the recommendations resource before the action: the id
|
|
11
11
|
// travels in the body, not the path.
|
|
12
|
-
TEMPLATE_MIGRATE_STRATEGIES_PATH: "/newsletter/recommendations/template/migrate-strategies"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
const { RECOMMENDATION_STRATEGIES_PANEL_PATH: n } =
|
|
18
|
-
return `${n}/${e}/edit
|
|
19
|
-
}, m = {
|
|
20
|
-
campaign: a.MIGRATE_STRATEGIES_PATH,
|
|
21
|
-
template: a.TEMPLATE_MIGRATE_STRATEGIES_PATH
|
|
12
|
+
TEMPLATE_MIGRATE_STRATEGIES_PATH: "/newsletter/recommendations/template/migrate-strategies"
|
|
13
|
+
}, d = () => {
|
|
14
|
+
const { RECOMMENDATION_STRATEGIES_PANEL_PATH: e } = t;
|
|
15
|
+
return `${e}/create`;
|
|
16
|
+
}, m = (e) => {
|
|
17
|
+
const { RECOMMENDATION_STRATEGIES_PANEL_PATH: n } = t;
|
|
18
|
+
return `${n}/${e}/edit`;
|
|
22
19
|
}, T = {
|
|
20
|
+
campaign: t.MIGRATE_STRATEGIES_PATH,
|
|
21
|
+
template: t.TEMPLATE_MIGRATE_STRATEGIES_PATH
|
|
22
|
+
}, p = {
|
|
23
23
|
CLIENT_ID: "clientId"
|
|
24
24
|
}, E = () => {
|
|
25
25
|
const e = s();
|
|
@@ -85,21 +85,21 @@ const a = {
|
|
|
85
85
|
path: "top-sellers"
|
|
86
86
|
}
|
|
87
87
|
];
|
|
88
|
-
},
|
|
88
|
+
}, A = ["discount", "omnibus_price", "omnibus_discount", "price", "original_price"], v = [
|
|
89
89
|
{ text: "before the amount", value: "0" },
|
|
90
90
|
{ text: "after the amount", value: "1" }
|
|
91
|
-
],
|
|
91
|
+
], _ = [
|
|
92
92
|
{ text: "dot(.)", value: "." },
|
|
93
93
|
{ text: "comma(,)", value: "," },
|
|
94
94
|
{ text: "space( )", value: " " }
|
|
95
|
-
],
|
|
95
|
+
], h = [
|
|
96
96
|
{ text: "0", value: "0" },
|
|
97
97
|
{ text: "1", value: "1" },
|
|
98
98
|
{ text: "2", value: "2" },
|
|
99
99
|
{ text: "3", value: "3" },
|
|
100
100
|
{ text: "4", value: "4" },
|
|
101
101
|
{ text: "5", value: "5" }
|
|
102
|
-
], r = "||",
|
|
102
|
+
], r = "||", a = [
|
|
103
103
|
{ text: "is exactly", value: "=" },
|
|
104
104
|
{ text: "contains", value: "~" },
|
|
105
105
|
{ text: "does not contain", value: "!~" },
|
|
@@ -121,9 +121,9 @@ const a = {
|
|
|
121
121
|
], c = [
|
|
122
122
|
{ text: "true", value: "==" },
|
|
123
123
|
{ text: "false", value: "!=" }
|
|
124
|
-
],
|
|
124
|
+
], x = (e) => {
|
|
125
125
|
if (!e)
|
|
126
|
-
return
|
|
126
|
+
return a;
|
|
127
127
|
switch (e) {
|
|
128
128
|
case "Boolean":
|
|
129
129
|
return c;
|
|
@@ -132,28 +132,29 @@ const a = {
|
|
|
132
132
|
case "Number":
|
|
133
133
|
return i;
|
|
134
134
|
case "String":
|
|
135
|
-
return
|
|
135
|
+
return a;
|
|
136
136
|
case "Strings":
|
|
137
137
|
return o;
|
|
138
138
|
default:
|
|
139
|
-
return
|
|
139
|
+
return a;
|
|
140
140
|
}
|
|
141
141
|
};
|
|
142
142
|
export {
|
|
143
|
-
|
|
143
|
+
T as MIGRATION_PATHS,
|
|
144
144
|
r as OP_ANY_OF,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
A as PriceAttributes,
|
|
146
|
+
p as QUERY_PARAMS,
|
|
147
|
+
t as URLS,
|
|
148
|
+
h as currencyDecimalCounts,
|
|
149
|
+
v as currencyLocationMaps,
|
|
150
|
+
_ as currencyOperators,
|
|
151
|
+
x as getOperatorOptions,
|
|
152
152
|
E as getRecommendationFeedSourceMaps,
|
|
153
153
|
o as operatorOptionsForArrayOfStrings,
|
|
154
154
|
c as operatorOptionsForBooleans,
|
|
155
155
|
u as operatorOptionsForDates,
|
|
156
156
|
i as operatorOptionsForNumbers,
|
|
157
|
-
|
|
158
|
-
d as
|
|
157
|
+
a as operatorOptionsForStrings,
|
|
158
|
+
d as strategyCreatePath,
|
|
159
|
+
m as strategyEditPath
|
|
159
160
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var y = Object.defineProperty;
|
|
2
2
|
var A = (l, c, t) => c in l ? y(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
|
|
3
|
-
var
|
|
4
|
-
import { useConfig as
|
|
3
|
+
var h = (l, c, t) => A(l, typeof c != "symbol" ? c + "" : c, t);
|
|
4
|
+
import { useConfig as d } from "../../../composables/useConfig.js";
|
|
5
5
|
import { BlockId as D } from "../../../enums/block.js";
|
|
6
6
|
import { getMigrationBannerHtml as C } from "../../../utils/migrationBannerHtml.js";
|
|
7
7
|
import { Block as E, BlockCompositionType as S, ModificationDescription as p } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
@@ -10,9 +10,9 @@ import { RECOMMENDATION_ID_ATTR as m } from "./constants/selectors.js";
|
|
|
10
10
|
import { regenerateMobileProductRows as M } from "./controls/main/utils.js";
|
|
11
11
|
import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as w } from "./controls/mobileLayout/cssRules.js";
|
|
12
12
|
import { RecommendationConfigService as s } from "./services/configService.js";
|
|
13
|
-
import { useRecommendationExtensionStore as
|
|
13
|
+
import { useRecommendationExtensionStore as g } from "./store/recommendation.js";
|
|
14
14
|
import { getDefaultTemplate as T } from "./templates/grid/template.js";
|
|
15
|
-
import { useRecommendationBlockWarning as
|
|
15
|
+
import { useRecommendationBlockWarning as v } from "./useRecommendationBlockWarning.js";
|
|
16
16
|
const k = D.Recommendation, u = "recommendation-block-v2", B = "hide-price";
|
|
17
17
|
let b = !1;
|
|
18
18
|
class j extends E {
|
|
@@ -22,9 +22,9 @@ class j extends E {
|
|
|
22
22
|
* Stores the ID generated in getTemplate() so onCreated() can reuse it.
|
|
23
23
|
* This avoids generating a new (different) ID in onCreated().
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
h(this, "_pendingBlockId", null);
|
|
26
26
|
/** Ids already reset under their new name, so the deferred pass skips their stale snapshot. */
|
|
27
|
-
|
|
27
|
+
h(this, "_resetSourceIds", /* @__PURE__ */ new Set());
|
|
28
28
|
}
|
|
29
29
|
getId() {
|
|
30
30
|
return k;
|
|
@@ -91,18 +91,19 @@ class j extends E {
|
|
|
91
91
|
}
|
|
92
92
|
const i = this._pendingBlockId ?? this._generateNextId();
|
|
93
93
|
this._pendingBlockId = null, this._assignRecommendationId(t, i);
|
|
94
|
-
const n =
|
|
94
|
+
const n = d().isFeatureEnabled("reusableRecommendationStrategy"), o = n && !s.hasConfig(t), { config: r, wasFreshDrop: a } = s.initializeConfig(
|
|
95
95
|
this.api,
|
|
96
96
|
t,
|
|
97
97
|
{
|
|
98
98
|
recommendationId: i,
|
|
99
99
|
configVersion: n ? N : O,
|
|
100
|
+
...o ? { partnerName: d().partnerName.value } : {},
|
|
100
101
|
// An RRS block picks a strategy, not an algorithm, and its algorithm control is
|
|
101
102
|
// hidden. Keeping the `mostPopular` default would bake a most-popular feed URL
|
|
102
103
|
// at save for a block the user never configured.
|
|
103
104
|
...o ? { strategy: "" } : {}
|
|
104
105
|
}
|
|
105
|
-
), f =
|
|
106
|
+
), f = g();
|
|
106
107
|
if (f.setCurrentBlock(i), this._stampHidePrice(t, r.priceHideIfSameAsDiscounted), a) {
|
|
107
108
|
I(this.api);
|
|
108
109
|
const _ = this._getBlockElement(t);
|
|
@@ -151,7 +152,7 @@ class j extends E {
|
|
|
151
152
|
*/
|
|
152
153
|
onDelete(t) {
|
|
153
154
|
const e = this._getRecommendationId(t);
|
|
154
|
-
e &&
|
|
155
|
+
e && g().removeBlockState(e);
|
|
155
156
|
}
|
|
156
157
|
/**
|
|
157
158
|
* Warns (dark advisory toaster) when the design holds more than one live
|
|
@@ -167,7 +168,7 @@ class j extends E {
|
|
|
167
168
|
*/
|
|
168
169
|
_warnIfMultipleBlocks() {
|
|
169
170
|
try {
|
|
170
|
-
|
|
171
|
+
v().warnIfMultipleBlocks(this.api.getDocumentRootHtmlNode());
|
|
171
172
|
} catch {
|
|
172
173
|
}
|
|
173
174
|
}
|
|
@@ -197,9 +198,9 @@ class j extends E {
|
|
|
197
198
|
* the renamed one depending on where the module was dropped (SD-149916).
|
|
198
199
|
*/
|
|
199
200
|
_scheduleArrivalReset(t) {
|
|
200
|
-
|
|
201
|
+
d().isFeatureEnabled("reusableRecommendationStrategy") && setTimeout(() => {
|
|
201
202
|
const e = this._getRecommendationId(t);
|
|
202
|
-
e !== null && e > 0 && !this._resetSourceIds.delete(e) &&
|
|
203
|
+
e !== null && e > 0 && !this._resetSourceIds.delete(e) && g().resetArrivedBlock(e);
|
|
203
204
|
}, 0);
|
|
204
205
|
}
|
|
205
206
|
/**
|
|
@@ -255,8 +256,8 @@ class j extends E {
|
|
|
255
256
|
}
|
|
256
257
|
/** Assigns a fresh id to a duplicated block and syncs DOM, node config and store. */
|
|
257
258
|
_handleDuplicate(t, e) {
|
|
258
|
-
const i = this._reassignDuplicateId(t, e), n =
|
|
259
|
-
n.cloneBlockState(e, i), n.setCurrentBlock(i),
|
|
259
|
+
const i = this._reassignDuplicateId(t, e), n = g();
|
|
260
|
+
n.cloneBlockState(e, i), n.setCurrentBlock(i), d().isFeatureEnabled("reusableRecommendationStrategy") && (this._resetSourceIds.add(e), n.resetArrivedBlock(i)), this._warnIfMultipleBlocks();
|
|
260
261
|
}
|
|
261
262
|
/**
|
|
262
263
|
* Core id-reassignment for a duplicated block: rewrites the DOM
|