@useinsider/guido 3.21.2-beta.4c14c74 → 3.21.2-beta.5a809f7
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/config/compiler/utils/recommendationCompilerUtils.js +22 -22
- package/dist/config/migrator/recommendation/compositionMapper.js +56 -49
- package/dist/config/migrator/recommendation/extractors.js +74 -26
- package/dist/config/migrator/recommendation/htmlBuilder.js +279 -202
- package/dist/config/migrator/recommendation/settingsMapper.js +37 -36
- package/dist/config/migrator/recommendationMigrator.js +65 -59
- package/dist/extensions/Blocks/Items/controls/button/link.js +17 -14
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +17 -14
- package/dist/extensions/Blocks/Items/controls/image/link.js +17 -14
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +10 -9
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +25 -24
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +13 -12
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +30 -29
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +16 -15
- package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +26 -25
- package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +28 -27
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +80 -75
- package/dist/extensions/Blocks/Recommendation/block.js +33 -24
- package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +3 -3
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +27 -26
- package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +13 -13
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +216 -236
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +8 -8
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +15 -15
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +12 -12
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +23 -22
- package/dist/extensions/Blocks/Recommendation/templates/list/template.js +19 -18
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +82 -91
- package/dist/extensions/Blocks/Recommendation/utils/inlinePriceOrder.js +12 -0
- package/dist/extensions/Blocks/Recommendation/utils/legacyStrategyMap.js +3 -2
- package/dist/extensions/Blocks/common-control.js +55 -62
- package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +3 -1
- package/dist/src/config/migrator/recommendation/extractors.d.ts +26 -0
- package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +1 -0
- package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +4 -11
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -13
- package/dist/src/extensions/Blocks/Recommendation/utils/inlinePriceOrder.d.ts +9 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/legacyStrategyMap.d.ts +2 -19
- package/dist/src/extensions/Blocks/common-control.d.ts +0 -2
- package/package.json +1 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { ModificationDescription as N, UEAttr as L } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
-
import { CommonControl as
|
|
3
|
-
import { reorientBlockCellPadding as D, nameMaxWidthFor as
|
|
4
|
-
import { ItemsBlockId as
|
|
5
|
-
import { productPairs as
|
|
6
|
-
import { SETTINGS_ENUMS as
|
|
2
|
+
import { CommonControl as $ } from "../../common-control.js";
|
|
3
|
+
import { reorientBlockCellPadding as D, nameMaxWidthFor as f } from "../constants/cardLayout.js";
|
|
4
|
+
import { ItemsBlockId as I } from "../enums/controlEnums.js";
|
|
5
|
+
import { productPairs as y, templateFirstLine as x } from "../enums/productEnums.js";
|
|
6
|
+
import { SETTINGS_ENUMS as T, ItemTypeOptions as H, OrientationOptions as w, ItemInCartOptions as g, DefaultConfigValues as U } from "../enums/settingsEnums.js";
|
|
7
7
|
import q from "../layouts/horizontal.html.js";
|
|
8
|
-
import
|
|
9
|
-
import { getDefaultTemplate as
|
|
8
|
+
import V from "../layouts/vertical.html.js";
|
|
9
|
+
import { getDefaultTemplate as B, wrapInTableRow as C, applyPriceOrientationStyles as G } from "../template.js";
|
|
10
10
|
import { findNameTextNode as Y } from "../utils/nameNode.js";
|
|
11
|
-
import { getItemsBlockConfig as _, setItemsBlockConfig as
|
|
11
|
+
import { getItemsBlockConfig as _, setItemsBlockConfig as M, escapeReplacement as A, deriveItemNumber as v } from "../utils/nodeConfigUtils.js";
|
|
12
12
|
const Q = "ui-elements-items-block", p = {
|
|
13
13
|
ITEMS_TYPE: "itemsType",
|
|
14
14
|
ORIENTATION: "orientation",
|
|
15
15
|
ITEM_IDS: "itemIds"
|
|
16
16
|
};
|
|
17
|
-
class
|
|
17
|
+
class se extends $ {
|
|
18
18
|
getId() {
|
|
19
19
|
return Q;
|
|
20
20
|
}
|
|
@@ -28,14 +28,19 @@ class oe extends F {
|
|
|
28
28
|
`;
|
|
29
29
|
}
|
|
30
30
|
onRender() {
|
|
31
|
-
|
|
31
|
+
const e = _(this.currentNode);
|
|
32
|
+
this.api.updateValues({
|
|
33
|
+
[p.ORIENTATION]: (e == null ? void 0 : e.orientation) ?? T.ORIENTATION.VERTICAL,
|
|
34
|
+
[p.ITEMS_TYPE]: (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS,
|
|
35
|
+
[p.ITEM_IDS]: (e == null ? void 0 : e.itemsSelectValue) ?? ""
|
|
36
|
+
}), this._listenToFormUpdates();
|
|
32
37
|
}
|
|
33
38
|
onTemplateNodeUpdated(e) {
|
|
34
39
|
super.onTemplateNodeUpdated(e), console.debug("Items Block Config", e.getNodeConfig()), this.handleBlockInstanceChange(() => {
|
|
35
40
|
const r = _(this.currentNode);
|
|
36
41
|
this.api.updateValues({
|
|
37
|
-
[p.ORIENTATION]: (r == null ? void 0 : r.orientation) ??
|
|
38
|
-
[p.ITEMS_TYPE]: (r == null ? void 0 : r.type) ??
|
|
42
|
+
[p.ORIENTATION]: (r == null ? void 0 : r.orientation) ?? T.ORIENTATION.VERTICAL,
|
|
43
|
+
[p.ITEMS_TYPE]: (r == null ? void 0 : r.type) ?? T.ITEMS_TYPE.CART_ITEMS,
|
|
39
44
|
[p.ITEM_IDS]: (r == null ? void 0 : r.itemsSelectValue) ?? ""
|
|
40
45
|
}), this._initializeSelectItems();
|
|
41
46
|
});
|
|
@@ -80,7 +85,7 @@ class oe extends F {
|
|
|
80
85
|
_onOrientationChange(e) {
|
|
81
86
|
this.api.updateValues({ [p.ORIENTATION]: e });
|
|
82
87
|
const r = this.api.getDocumentModifier();
|
|
83
|
-
|
|
88
|
+
M(this.currentNode, this.api, {
|
|
84
89
|
orientation: e,
|
|
85
90
|
priceOrientation: "horizontal"
|
|
86
91
|
}, r), r.apply(new N("Changed orientation")), this._reOrderTemplate(), setTimeout(() => {
|
|
@@ -88,15 +93,15 @@ class oe extends F {
|
|
|
88
93
|
}, 50);
|
|
89
94
|
}
|
|
90
95
|
_onItemsTypeChange(e) {
|
|
91
|
-
const r =
|
|
96
|
+
const r = T.ITEMS_TYPE[e], t = g[e], i = t == null ? void 0 : t[0];
|
|
92
97
|
if (!r || !i)
|
|
93
98
|
return;
|
|
94
|
-
const n = i.value,
|
|
95
|
-
|
|
99
|
+
const n = i.value, s = i.value.replace("Url}}", "Image}}"), a = this.api.getDocumentModifier();
|
|
100
|
+
M(this.currentNode, this.api, {
|
|
96
101
|
source: r,
|
|
97
102
|
type: r,
|
|
98
103
|
itemsSelectValue: i.value,
|
|
99
|
-
imageLink:
|
|
104
|
+
imageLink: s,
|
|
100
105
|
buttonLink: n
|
|
101
106
|
}, a), this._updateDataTypeAttributes(r, a), this._initializeSelectItems();
|
|
102
107
|
const l = this._getTemplateData(r, i.value);
|
|
@@ -105,7 +110,7 @@ class oe extends F {
|
|
|
105
110
|
_onItemIdsChange(e) {
|
|
106
111
|
this.api.updateValues({ [p.ITEM_IDS]: e });
|
|
107
112
|
const r = e, t = e.replace("Url}}", "Image}}"), i = this.api.getDocumentModifier();
|
|
108
|
-
|
|
113
|
+
M(this.currentNode, this.api, {
|
|
109
114
|
itemsSelectValue: e,
|
|
110
115
|
imageLink: t,
|
|
111
116
|
buttonLink: r
|
|
@@ -119,11 +124,11 @@ class oe extends F {
|
|
|
119
124
|
L.SELECTPICKER.items,
|
|
120
125
|
H
|
|
121
126
|
);
|
|
122
|
-
const e = _(this.currentNode), r = (e == null ? void 0 : e.type) ??
|
|
127
|
+
const e = _(this.currentNode), r = (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS, t = (e == null ? void 0 : e.itemsSelectValue) ?? "";
|
|
123
128
|
this.api.updateValues({
|
|
124
129
|
[p.ITEMS_TYPE]: r
|
|
125
130
|
});
|
|
126
|
-
const i =
|
|
131
|
+
const i = g[r];
|
|
127
132
|
this.api.setUIEAttribute(
|
|
128
133
|
p.ITEM_IDS,
|
|
129
134
|
L.SELECTPICKER.items,
|
|
@@ -145,113 +150,113 @@ class oe extends F {
|
|
|
145
150
|
);
|
|
146
151
|
}
|
|
147
152
|
_renderTemplate() {
|
|
148
|
-
const e = _(this.currentNode), r = (e == null ? void 0 : e.orientation) ??
|
|
149
|
-
this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(
|
|
153
|
+
const e = _(this.currentNode), r = (e == null ? void 0 : e.orientation) ?? T.ORIENTATION.VERTICAL, t = (e == null ? void 0 : e.type) ?? T.ITEMS_TYPE.CART_ITEMS, i = (e == null ? void 0 : e.itemsSelectValue) ?? "", n = (e == null ? void 0 : e.priceCurrencySymbol) ?? "", s = (e == null ? void 0 : e.priceCurrencyLocation) ?? "0", a = (e == null ? void 0 : e.priceFormatted) ?? !1;
|
|
154
|
+
this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(B({
|
|
150
155
|
orientation: r,
|
|
151
156
|
itemsType: t,
|
|
152
157
|
itemId: i,
|
|
153
158
|
currencySymbol: n,
|
|
154
|
-
currencyLocation:
|
|
159
|
+
currencyLocation: s,
|
|
155
160
|
formattedPrice: a
|
|
156
161
|
})).apply(new N("Updated template"));
|
|
157
162
|
}
|
|
158
163
|
_getTemplateData(e, r) {
|
|
159
|
-
const t = _(this.currentNode), i = e ?? (t == null ? void 0 : t.type) ??
|
|
164
|
+
const t = _(this.currentNode), i = e ?? (t == null ? void 0 : t.type) ?? T.ITEMS_TYPE.CART_ITEMS, n = r ?? (t == null ? void 0 : t.itemsSelectValue) ?? "", s = (t == null ? void 0 : t.priceFormatted) ?? !1, a = (t == null ? void 0 : t.priceSinglePrice) ?? !1, l = g[i].findIndex((h) => h.value === n), c = l > -1 ? l : 0, o = y.PAIRS_FOR_EXTENSION.price[i], d = y.PAIRS_FOR_EXTENSION.originalPrice[i];
|
|
160
165
|
let m, u;
|
|
161
|
-
return a ? (m =
|
|
162
|
-
imageSrc:
|
|
163
|
-
name:
|
|
166
|
+
return a ? (m = s ? o.DEFAULT_SINGLE_PRICE_FORMATTED : o.DEFAULT_SINGLE_PRICE, u = s ? d.DEFAULT_SINGLE_PRICE_FORMATTED : d.DEFAULT_SINGLE_PRICE) : (m = s ? o.DEFAULT_PRICE_FORMATTED : o.DEFAULT_PRICE, u = s ? d.DEFAULT_PRICE_FORMATTED : d.DEFAULT_PRICE), {
|
|
167
|
+
imageSrc: y.PAIRS_FOR_EXTENSION.imageSrc[i].DEFAULT[c],
|
|
168
|
+
name: y.PAIRS_FOR_EXTENSION.name[i].DEFAULT[c],
|
|
164
169
|
price: m,
|
|
165
170
|
originalPrice: u,
|
|
166
|
-
quantity:
|
|
167
|
-
button:
|
|
171
|
+
quantity: y.PAIRS_FOR_EXTENSION.quantity[i].DEFAULT,
|
|
172
|
+
button: y.PAIRS_FOR_EXTENSION.button[i].DEFAULT_LABEL
|
|
168
173
|
};
|
|
169
174
|
}
|
|
170
175
|
_updateImageSrc(e, r) {
|
|
171
176
|
var i;
|
|
172
|
-
const t = (i = this.currentNode) == null ? void 0 : i.querySelector(`[esd-extension-block-id="${
|
|
177
|
+
const t = (i = this.currentNode) == null ? void 0 : i.querySelector(`[esd-extension-block-id="${I.IMAGE}"] img`);
|
|
173
178
|
t && r.modifyHtml(t).setAttribute("src", e);
|
|
174
179
|
}
|
|
175
180
|
_updateName(e, r) {
|
|
176
|
-
var
|
|
177
|
-
const t = (
|
|
181
|
+
var s;
|
|
182
|
+
const t = (s = this.currentNode) == null ? void 0 : s.querySelector(`[esd-extension-block-id="${I.NAME}"]`);
|
|
178
183
|
if (!t)
|
|
179
184
|
return;
|
|
180
185
|
const i = t.getInnerText().trim();
|
|
181
186
|
let n = t.getInnerHTML().trim();
|
|
182
|
-
n = n.replace(i,
|
|
187
|
+
n = n.replace(i, A(e)), r.modifyHtml(t).setInnerHtml(n);
|
|
183
188
|
}
|
|
184
189
|
_updatePrice(e, r) {
|
|
185
190
|
var a;
|
|
186
191
|
const t = ((a = this.currentNode) == null ? void 0 : a.querySelectorAll(
|
|
187
|
-
`[esd-extension-block-id="${
|
|
188
|
-
)) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "",
|
|
192
|
+
`[esd-extension-block-id="${I.PRICE}"]`
|
|
193
|
+
)) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", s = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
|
|
189
194
|
t.forEach((l) => {
|
|
190
195
|
const c = this._getParagraphFromBlock(l);
|
|
191
196
|
if (!c)
|
|
192
197
|
return;
|
|
193
|
-
const
|
|
194
|
-
r.modifyHtml(c).setInnerHtml(
|
|
198
|
+
const o = c.getInnerHTML().trim() || "", d = c.getInnerText().trim() || "", m = (n == null ? void 0 : n.trim()) || "", u = this._removeCurrencySymbol(d, m), h = this._replacePriceNumber(u, e), E = this._buildPriceContent(h, m, s), S = o.replace(d, A(E));
|
|
199
|
+
r.modifyHtml(c).setInnerHtml(S);
|
|
195
200
|
});
|
|
196
201
|
}
|
|
197
202
|
_updateOriginalPrice(e, r) {
|
|
198
203
|
var a;
|
|
199
204
|
const t = ((a = this.currentNode) == null ? void 0 : a.querySelectorAll(
|
|
200
|
-
`[esd-extension-block-id="${
|
|
201
|
-
)) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "",
|
|
205
|
+
`[esd-extension-block-id="${I.ORIGINAL_PRICE}"]`
|
|
206
|
+
)) || [], i = _(this.currentNode), n = (i == null ? void 0 : i.priceCurrencySymbol) ?? "", s = (i == null ? void 0 : i.priceCurrencyLocation) ?? "0";
|
|
202
207
|
t.forEach((l) => {
|
|
203
208
|
const c = this._getParagraphFromBlock(l);
|
|
204
209
|
if (!c)
|
|
205
210
|
return;
|
|
206
|
-
const
|
|
207
|
-
if (!
|
|
211
|
+
const o = c.querySelector("s");
|
|
212
|
+
if (!o)
|
|
208
213
|
return;
|
|
209
|
-
const d =
|
|
210
|
-
r.modifyHtml(c).setInnerHtml(
|
|
214
|
+
const d = o.getInnerHTML().trim() || "", m = o.getInnerText().trim() || "", u = (n == null ? void 0 : n.trim()) || "", h = this._removeCurrencySymbol(m, u), E = this._replacePriceNumber(h, e), S = this._buildPriceContent(E, u, s), R = `<s>${d.replace(m, A(S))}</s>`;
|
|
215
|
+
r.modifyHtml(c).setInnerHtml(R);
|
|
211
216
|
});
|
|
212
217
|
}
|
|
213
218
|
_updateQuantity(e, r, t) {
|
|
214
219
|
var h;
|
|
215
|
-
const i = _(this.currentNode),
|
|
220
|
+
const i = _(this.currentNode), s = (r ?? (i == null ? void 0 : i.type) ?? T.ITEMS_TYPE.CART_ITEMS) !== T.ITEMS_TYPE.BROWSED_ITEMS, a = (i == null ? void 0 : i.quantityControlEnabled) !== !1, l = s && a, c = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${I.QUANTITY}"]`);
|
|
216
221
|
if (!c)
|
|
217
222
|
return;
|
|
218
|
-
const
|
|
219
|
-
if (!
|
|
223
|
+
const o = this._getParagraphFromBlock(c);
|
|
224
|
+
if (!o)
|
|
220
225
|
return;
|
|
221
|
-
const d =
|
|
222
|
-
let m =
|
|
223
|
-
function u(E,
|
|
226
|
+
const d = o.getInnerText().trim();
|
|
227
|
+
let m = o.getInnerHTML().trim();
|
|
228
|
+
function u(E, S, P) {
|
|
224
229
|
return E.replace(
|
|
225
|
-
new RegExp(`(>\\s*)?${
|
|
230
|
+
new RegExp(`(>\\s*)?${S}(\\s*<)?`, "g"),
|
|
226
231
|
`$1${P}$2`
|
|
227
232
|
);
|
|
228
233
|
}
|
|
229
|
-
m = u(m, d, e), t.modifyHtml(
|
|
234
|
+
m = u(m, d, e), t.modifyHtml(o).setInnerHtml(m), t.modifyHtml(c).setStyle("display", l ? "table-cell" : "none");
|
|
230
235
|
}
|
|
231
236
|
_reOrderTemplate(e) {
|
|
232
|
-
var h, E,
|
|
233
|
-
const r = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${
|
|
234
|
-
`[esd-extension-block-id="${
|
|
237
|
+
var h, E, S, P, R, b;
|
|
238
|
+
const r = (h = this.currentNode) == null ? void 0 : h.querySelector(`[esd-extension-block-id="${I.IMAGE}"]`), t = (E = this.currentNode) == null ? void 0 : E.querySelector(`[esd-extension-block-id="${I.NAME}"]`), i = ((S = this.currentNode) == null ? void 0 : S.querySelectorAll(
|
|
239
|
+
`[esd-extension-block-id="${I.PRICE}"]`
|
|
235
240
|
)) || [], n = ((P = this.currentNode) == null ? void 0 : P.querySelectorAll(
|
|
236
|
-
`[esd-extension-block-id="${
|
|
237
|
-
)) || [], [
|
|
238
|
-
if (!r || !t || !
|
|
241
|
+
`[esd-extension-block-id="${I.ORIGINAL_PRICE}"]`
|
|
242
|
+
)) || [], [s] = i, [a] = n, l = (R = this.currentNode) == null ? void 0 : R.querySelector(`[esd-extension-block-id="${I.QUANTITY}"]`), c = (b = this.currentNode) == null ? void 0 : b.querySelector(`[esd-extension-block-id="${I.BUTTON}"]`);
|
|
243
|
+
if (!r || !t || !s || !a || !l || !c)
|
|
239
244
|
return;
|
|
240
|
-
const
|
|
241
|
-
let u = m ?
|
|
245
|
+
const o = _(this.currentNode), d = (o == null ? void 0 : o.orientation) ?? T.ORIENTATION.VERTICAL, m = d === T.ORIENTATION.VERTICAL;
|
|
246
|
+
let u = m ? V : q;
|
|
242
247
|
setTimeout(() => {
|
|
243
|
-
const
|
|
248
|
+
const k = A(D(s.getOuterHTML(), m)), F = A(
|
|
244
249
|
D(a.getOuterHTML(), m)
|
|
245
250
|
);
|
|
246
|
-
u = u.replace("{-{-TEMPLATE_FIRST_LINE-}-}", m ? x : "").replace("{-{-PRODUCT_IMAGE-}-}", C(r.getOuterHTML())).replace("{-{-PRODUCT_NAME-}-}", C(t.getOuterHTML())).replaceAll("{-{-PRODUCT_PRICE-}-}", C(
|
|
251
|
+
u = u.replace("{-{-TEMPLATE_FIRST_LINE-}-}", m ? x : "").replace("{-{-PRODUCT_IMAGE-}-}", C(r.getOuterHTML())).replace("{-{-PRODUCT_NAME-}-}", C(t.getOuterHTML())).replaceAll("{-{-PRODUCT_PRICE-}-}", C(k)).replaceAll("{-{-PRODUCT_ORIGINAL_PRICE-}-}", C(F)).replace("{-{-PRODUCT_QUANTITY-}-}", C(l.getOuterHTML())).replace("{-{-PRODUCT_BUTTON-}-}", C(c.getOuterHTML())), u = G(
|
|
247
252
|
u,
|
|
248
253
|
d,
|
|
249
|
-
(
|
|
250
|
-
(
|
|
251
|
-
(
|
|
254
|
+
(o == null ? void 0 : o.priceOrientation) ?? "horizontal",
|
|
255
|
+
(o == null ? void 0 : o.priceVisible) ?? !0,
|
|
256
|
+
(o == null ? void 0 : o.originalPriceVisible) ?? !0
|
|
252
257
|
), u = u.trim().replace(x, "").slice(0, -5);
|
|
253
|
-
const
|
|
254
|
-
|
|
258
|
+
const O = e ?? this.api.getDocumentModifier();
|
|
259
|
+
O.modifyHtml(r.querySelector("img")).setAttribute("width", U.productImageWidth).setAttribute("height", U.productImageWidth), O.modifyHtml(this.currentNode).setInnerHtml(u), e || O.apply(new N("Reordered template"));
|
|
255
260
|
}, 50);
|
|
256
261
|
}
|
|
257
262
|
_updateDataTypeAttributes(e, r) {
|
|
@@ -259,15 +264,15 @@ class oe extends F {
|
|
|
259
264
|
return;
|
|
260
265
|
const t = this.currentNode.closest(".ins-product-td");
|
|
261
266
|
t && r.modifyHtml(t).setAttribute("data-type", e), this.currentNode.querySelectorAll("[data-type]").forEach((n) => {
|
|
262
|
-
const
|
|
263
|
-
r.modifyHtml(
|
|
267
|
+
const s = n;
|
|
268
|
+
r.modifyHtml(s).setAttribute("data-type", e);
|
|
264
269
|
});
|
|
265
270
|
}
|
|
266
271
|
_updateDataNumberAttributes(e, r) {
|
|
267
272
|
if (!this.currentNode)
|
|
268
273
|
return;
|
|
269
|
-
const t = _(this.currentNode), i = (t == null ? void 0 : t.type) ??
|
|
270
|
-
|
|
274
|
+
const t = _(this.currentNode), i = (t == null ? void 0 : t.type) ?? T.ITEMS_TYPE.CART_ITEMS, n = v(e, i), s = this.currentNode.closest(".ins-product-td");
|
|
275
|
+
s && r.modifyHtml(s).setAttribute("data-number", n), this.currentNode.querySelectorAll("[data-number]").forEach((l) => {
|
|
271
276
|
const c = l;
|
|
272
277
|
r.modifyHtml(c).setAttribute("data-number", n);
|
|
273
278
|
});
|
|
@@ -277,16 +282,16 @@ class oe extends F {
|
|
|
277
282
|
this._updateImageSrc(r.imageSrc, t), this._updateName(r.name, t), this._updatePrice(r.price, t), this._updateOriginalPrice(r.originalPrice, t), this._updateQuantity(r.quantity, e, t), t.apply(new N("Refilled template"));
|
|
278
283
|
}
|
|
279
284
|
_recalculateTrimming() {
|
|
280
|
-
var
|
|
285
|
+
var s;
|
|
281
286
|
if (!this.currentNode)
|
|
282
287
|
return;
|
|
283
|
-
const e = (
|
|
288
|
+
const e = (s = this.currentNode) == null ? void 0 : s.querySelector(`[esd-extension-block-id="${I.NAME}"]`);
|
|
284
289
|
if (!e)
|
|
285
290
|
return;
|
|
286
291
|
const r = Y(e);
|
|
287
292
|
if (!r)
|
|
288
293
|
return;
|
|
289
|
-
const t = _(this.currentNode), i = (t == null ? void 0 : t.nameTrimming) ?? !0, n =
|
|
294
|
+
const t = _(this.currentNode), i = (t == null ? void 0 : t.nameTrimming) ?? !0, n = f(t == null ? void 0 : t.orientation);
|
|
290
295
|
this.api.getDocumentModifier().modifyHtml(r).setStyle("overflow", "hidden").setStyle("white-space", i ? "nowrap" : "normal").setStyle("text-overflow", i ? "ellipsis" : "unset").setStyle("max-width", n).removeStyle("width").apply(new N("Recalculated trimming after orientation change"));
|
|
291
296
|
}
|
|
292
297
|
_getParagraphFromBlock(e) {
|
|
@@ -304,7 +309,7 @@ class oe extends F {
|
|
|
304
309
|
} else {
|
|
305
310
|
const n = t.match(/([^0-9.,\s]+)/);
|
|
306
311
|
if (n && n[1]) {
|
|
307
|
-
const
|
|
312
|
+
const s = n[1].trim(), a = new RegExp(`\\s*${this._escapeRegex(s)}\\s*`);
|
|
308
313
|
i = t.replace(a, "").trim();
|
|
309
314
|
}
|
|
310
315
|
}
|
|
@@ -320,5 +325,5 @@ class oe extends F {
|
|
|
320
325
|
}
|
|
321
326
|
export {
|
|
322
327
|
Q as CONTROL_BLOCK_ID,
|
|
323
|
-
|
|
328
|
+
se as ItemsBlockControl
|
|
324
329
|
};
|
|
@@ -2,23 +2,24 @@ var b = Object.defineProperty;
|
|
|
2
2
|
var A = (m, c, e) => c in m ? b(m, c, { enumerable: !0, configurable: !0, writable: !0, value: e }) : m[c] = e;
|
|
3
3
|
var u = (m, c, e) => A(m, typeof c != "symbol" ? c + "" : c, e);
|
|
4
4
|
import { useConfig as g } from "../../../composables/useConfig.js";
|
|
5
|
-
import { BlockId as
|
|
6
|
-
import { getMigrationBannerHtml as
|
|
5
|
+
import { BlockId as E } from "../../../enums/block.js";
|
|
6
|
+
import { getMigrationBannerHtml as D } from "../../../utils/migrationBannerHtml.js";
|
|
7
7
|
import { Block as S, BlockCompositionType as v, ModificationDescription as _ } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
8
|
-
import { CURRENT_CONFIG_VERSION as
|
|
8
|
+
import { CURRENT_CONFIG_VERSION as M, PRE_RRS_CONFIG_VERSION as N } from "./constants/defaultConfig.js";
|
|
9
9
|
import { RECOMMENDATION_ID_ATTR as f } from "./constants/selectors.js";
|
|
10
|
-
import { ensureMobileFitRule as
|
|
11
|
-
import { regenerateMobileProductRows as
|
|
12
|
-
import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as
|
|
10
|
+
import { ensureMobileFitRule as T, syncHeightBound as w } from "./controls/image/index.js";
|
|
11
|
+
import { regenerateMobileProductRows as O } from "./controls/main/utils.js";
|
|
12
|
+
import { ensureMobileCssRulesExist as I, setMobileLayoutOptOut as R, hasMobileLayoutOptOut as x } from "./controls/mobileLayout/cssRules.js";
|
|
13
|
+
import { CSS_CLASS_TEXT_TRIM as H, ensureTextTrimCssRulesExist as $ } from "./controls/shared/textTrimCssRules.js";
|
|
13
14
|
import { RecommendationConfigService as a } from "./services/configService.js";
|
|
14
15
|
import { useRecommendationExtensionStore as p } from "./store/recommendation.js";
|
|
15
|
-
import { getDefaultTemplate as
|
|
16
|
+
import { getDefaultTemplate as q } from "./templates/grid/template.js";
|
|
16
17
|
import { useRecommendationBlockWarning as F } from "./useRecommendationBlockWarning.js";
|
|
17
|
-
import { registerNodeConfigWriter as y, readBlockNodeConfigs as
|
|
18
|
-
import { refreshArrivedStrategyBlocks as
|
|
19
|
-
const k =
|
|
18
|
+
import { registerNodeConfigWriter as y, readBlockNodeConfigs as L } from "./utils/nodeConfigWriter.js";
|
|
19
|
+
import { refreshArrivedStrategyBlocks as P, resolveSourceConfig as V, refreshDuplicatedStrategyBlocks as W } from "./utils/strategyCommit.js";
|
|
20
|
+
const k = E.Recommendation, h = "recommendation-block-v2", C = "hide-price";
|
|
20
21
|
let B = !1;
|
|
21
|
-
class
|
|
22
|
+
class ae extends S {
|
|
22
23
|
constructor() {
|
|
23
24
|
super();
|
|
24
25
|
/**
|
|
@@ -52,7 +53,7 @@ class se extends S {
|
|
|
52
53
|
);
|
|
53
54
|
}
|
|
54
55
|
getSettingsPanelTitleHtml() {
|
|
55
|
-
return
|
|
56
|
+
return D(
|
|
56
57
|
k,
|
|
57
58
|
this.api.translate("Recommendation Block"),
|
|
58
59
|
this.api.translate("This block is switched from the Old Version to the New Version. We recommend you check the Recommendation block and test your message to ensure it works properly.")
|
|
@@ -76,7 +77,7 @@ class se extends S {
|
|
|
76
77
|
*/
|
|
77
78
|
getTemplate() {
|
|
78
79
|
const e = this._generateNextId();
|
|
79
|
-
return this._pendingBlockId = e,
|
|
80
|
+
return this._pendingBlockId = e, q(e);
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
83
|
* Called when a new block is dropped into the template
|
|
@@ -110,7 +111,7 @@ class se extends S {
|
|
|
110
111
|
e,
|
|
111
112
|
{
|
|
112
113
|
recommendationId: i,
|
|
113
|
-
configVersion: r ?
|
|
114
|
+
configVersion: r ? M : N,
|
|
114
115
|
...s ? { partnerName: g().partnerName.value } : {},
|
|
115
116
|
// An RRS block picks a strategy, not an algorithm, and its algorithm control is
|
|
116
117
|
// hidden. Keeping the `mostPopular` default would bake a most-popular feed URL
|
|
@@ -121,7 +122,7 @@ class se extends S {
|
|
|
121
122
|
if (l.setCurrentBlock(i), this._stampHidePrice(e, n.priceHideIfSameAsDiscounted), o) {
|
|
122
123
|
I(this.api);
|
|
123
124
|
const d = this._getBlockElement(e);
|
|
124
|
-
d && (R(this.api, d, !0),
|
|
125
|
+
d && (R(this.api, d, !0), O({
|
|
125
126
|
currentNode: e,
|
|
126
127
|
documentModifier: this.api.getDocumentModifier()
|
|
127
128
|
}));
|
|
@@ -155,13 +156,13 @@ class se extends S {
|
|
|
155
156
|
"Assign recommendation ID to legacy block"
|
|
156
157
|
);
|
|
157
158
|
}
|
|
158
|
-
this._healLingeringDuplicate(e), a.needsMigration(e) && this._migrateFromLegacy(e), this._healHidePriceAttr(e), this._ensureMobileFitRule(e), this._syncHeightBound(e);
|
|
159
|
+
this._healLingeringDuplicate(e), a.needsMigration(e) && this._migrateFromLegacy(e), this._healHidePriceAttr(e), this._ensureMobileFitRule(e), this._syncHeightBound(e), this._ensureTextTrimCss(e);
|
|
159
160
|
try {
|
|
160
161
|
B || (I(this.api), B = !0);
|
|
161
162
|
const t = a.getConfig(e), i = this._getBlockElement(e);
|
|
162
163
|
if (i) {
|
|
163
164
|
const r = !t.mobileLayoutEnabled;
|
|
164
|
-
|
|
165
|
+
x(i) !== r && R(this.api, i, r);
|
|
165
166
|
}
|
|
166
167
|
} catch {
|
|
167
168
|
}
|
|
@@ -179,7 +180,15 @@ class se extends S {
|
|
|
179
180
|
}
|
|
180
181
|
_ensureMobileFitRule(e) {
|
|
181
182
|
try {
|
|
182
|
-
|
|
183
|
+
T(this.api, e);
|
|
184
|
+
} catch {
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// A migrated block arrives with trimmed cells but without the stylesheet rules the toggle would have added.
|
|
188
|
+
_ensureTextTrimCss(e) {
|
|
189
|
+
var t;
|
|
190
|
+
try {
|
|
191
|
+
(t = this._getBlockElement(e)) != null && t.querySelector(`.${H}`) && $(this.api);
|
|
183
192
|
} catch {
|
|
184
193
|
}
|
|
185
194
|
}
|
|
@@ -187,7 +196,7 @@ class se extends S {
|
|
|
187
196
|
const t = this._getBlockElement(e);
|
|
188
197
|
if (t)
|
|
189
198
|
try {
|
|
190
|
-
|
|
199
|
+
w(this.api, t);
|
|
191
200
|
} catch {
|
|
192
201
|
}
|
|
193
202
|
}
|
|
@@ -270,7 +279,7 @@ class se extends S {
|
|
|
270
279
|
const d = { strategyId: l.strategyId };
|
|
271
280
|
return t.add(n), this._refreshClaims.set(n, d), [{ id: n, config: l, claim: d }];
|
|
272
281
|
});
|
|
273
|
-
i.length &&
|
|
282
|
+
i.length && P(i.map(({ id: r, config: s }) => ({ id: r, config: s }))).catch((r) => console.error("[recommendation] refreshing an arrived strategy failed", r)).finally(() => i.forEach(({ id: r, claim: s }) => this._releaseRefreshClaim(r, s)));
|
|
274
283
|
}
|
|
275
284
|
/**
|
|
276
285
|
* A new document reports each block to onCreated and onDocumentInit, not always in one batch, so a
|
|
@@ -282,7 +291,7 @@ class se extends S {
|
|
|
282
291
|
return !0;
|
|
283
292
|
if (i.strategyId === t)
|
|
284
293
|
return !1;
|
|
285
|
-
const r =
|
|
294
|
+
const r = L(e);
|
|
286
295
|
return r.length > 0 && r.every((s) => s.strategyId === t);
|
|
287
296
|
}
|
|
288
297
|
_releaseRefreshClaim(e, t) {
|
|
@@ -344,10 +353,10 @@ class se extends S {
|
|
|
344
353
|
if (r.cloneBlockState(t, i), r.setCurrentBlock(i), g().isFeatureEnabled("reusableRecommendationStrategy")) {
|
|
345
354
|
this._resetSourceIds.add(t), y(this.api);
|
|
346
355
|
const s = a.getConfig(e), n = [
|
|
347
|
-
{ id: t, claim: { strategyId:
|
|
356
|
+
{ id: t, claim: { strategyId: V(t, s).strategyId } },
|
|
348
357
|
{ id: i, claim: { strategyId: s.strategyId } }
|
|
349
358
|
].filter(({ id: o }) => !this._refreshClaims.has(o));
|
|
350
|
-
n.forEach(({ id: o, claim: l }) => this._refreshClaims.set(o, l)),
|
|
359
|
+
n.forEach(({ id: o, claim: l }) => this._refreshClaims.set(o, l)), W(t, i, s).catch((o) => console.error("[recommendation] refreshing a duplicated strategy failed", o)).finally(() => n.forEach(({ id: o, claim: l }) => this._releaseRefreshClaim(o, l)));
|
|
351
360
|
}
|
|
352
361
|
this._warnIfMultipleBlocks();
|
|
353
362
|
}
|
|
@@ -451,5 +460,5 @@ class se extends S {
|
|
|
451
460
|
}
|
|
452
461
|
export {
|
|
453
462
|
k as BLOCK_ID,
|
|
454
|
-
|
|
463
|
+
ae as RecommendationBlock
|
|
455
464
|
};
|
|
@@ -7,7 +7,7 @@ const u = "recommendation-card-background-color-control", e = {
|
|
|
7
7
|
GRID: ".product-card-segment",
|
|
8
8
|
LIST: ".product-card-wrapper"
|
|
9
9
|
};
|
|
10
|
-
class
|
|
10
|
+
class _ extends s {
|
|
11
11
|
getId() {
|
|
12
12
|
return u;
|
|
13
13
|
}
|
|
@@ -18,7 +18,7 @@ class h extends s {
|
|
|
18
18
|
]);
|
|
19
19
|
}
|
|
20
20
|
onRender() {
|
|
21
|
-
this.
|
|
21
|
+
this._setFormValues(), this._listenToFormUpdates();
|
|
22
22
|
}
|
|
23
23
|
onTemplateNodeUpdated(r) {
|
|
24
24
|
super.onTemplateNodeUpdated(r), this._setFormValues();
|
|
@@ -72,5 +72,5 @@ class h extends s {
|
|
|
72
72
|
}
|
|
73
73
|
export {
|
|
74
74
|
u as CARD_BACKGROUND_COLOR_CONTROL_ID,
|
|
75
|
-
|
|
75
|
+
_ as CardBackgroundColorControl
|
|
76
76
|
};
|