@useinsider/guido 2.0.0-beta.e68b206 → 2.0.0-beta.ecd6540
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/migrator/itemsBlockMigrator.js +64 -72
- package/dist/extensions/Blocks/Items/block.js +20 -23
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +29 -35
- package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
- package/dist/extensions/Blocks/Items/extension.js +9 -8
- package/dist/extensions/Blocks/Items/template.js +219 -209
- package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +51 -61
- package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -2
- package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +0 -2
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var L = Object.defineProperty;
|
|
2
|
-
var K = (
|
|
3
|
-
var
|
|
2
|
+
var K = (o, t, r) => t in o ? L(o, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : o[t] = r;
|
|
3
|
+
var R = (o, t, r) => K(o, typeof t != "symbol" ? t + "" : t, r);
|
|
4
4
|
import { productPairs as B } from "../../extensions/Blocks/Items/enums/productEnums.js";
|
|
5
5
|
import { ItemInCartOptions as E, DefaultConfigValues as g, SETTINGS_ENUMS as _ } from "../../extensions/Blocks/Items/enums/settingsEnums.js";
|
|
6
6
|
import { getDefaultTemplate as U } from "../../extensions/Blocks/Items/template.js";
|
|
7
|
-
const
|
|
7
|
+
const w = {
|
|
8
8
|
img: {
|
|
9
9
|
pairsKey: "imageSrc",
|
|
10
10
|
defaultKey: "DEFAULT",
|
|
@@ -71,59 +71,57 @@ const q = {
|
|
|
71
71
|
isArray: !1
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
|
-
function
|
|
74
|
+
function F() {
|
|
75
75
|
return String(Date.now() + Math.floor(Math.random() * 1e3));
|
|
76
76
|
}
|
|
77
|
-
function
|
|
78
|
-
return
|
|
77
|
+
function q(o) {
|
|
78
|
+
return o ? {
|
|
79
79
|
CartItems: _.ITEMS_TYPE.CART_ITEMS,
|
|
80
80
|
BrowsedItems: _.ITEMS_TYPE.BROWSED_ITEMS,
|
|
81
81
|
PurchasedItems: _.ITEMS_TYPE.PURCHASED_ITEMS,
|
|
82
82
|
CART_ITEMS: _.ITEMS_TYPE.CART_ITEMS,
|
|
83
83
|
BROWSED_ITEMS: _.ITEMS_TYPE.BROWSED_ITEMS,
|
|
84
84
|
PURCHASED_ITEMS: _.ITEMS_TYPE.PURCHASED_ITEMS
|
|
85
|
-
}[
|
|
85
|
+
}[o] || _.ITEMS_TYPE.CART_ITEMS : _.ITEMS_TYPE.CART_ITEMS;
|
|
86
86
|
}
|
|
87
|
-
function
|
|
88
|
-
const t = (e, a) => e == null ? a : e === "1" || e === "true",
|
|
89
|
-
let i =
|
|
87
|
+
function M(o) {
|
|
88
|
+
const t = (e, a) => e == null ? a : e === "1" || e === "true", r = (e, a) => e || a, c = o["data-type"] || o["data-source"], n = q(c);
|
|
89
|
+
let i = o["data-cart_items_select_control_value"] || g.cartItemsSelectControlValue;
|
|
90
90
|
if (i && !i.includes("{{") && /^\d+$/.test(i)) {
|
|
91
91
|
const e = parseInt(i) - 1, a = E[n];
|
|
92
92
|
a && a[e] && (i = a[e].value);
|
|
93
93
|
}
|
|
94
94
|
return {
|
|
95
95
|
initialized: !0,
|
|
96
|
-
blockInstanceId: o
|
|
96
|
+
blockInstanceId: r(o["data-block-instance-id"], F()),
|
|
97
97
|
source: n,
|
|
98
98
|
type: n,
|
|
99
99
|
itemsSelectValue: i,
|
|
100
|
-
orientation:
|
|
101
|
-
nameTrimming: t(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
r["data-product_price_currency_symbol"],
|
|
100
|
+
orientation: o["data-card_orientation_control_value"] || _.ORIENTATION.VERTICAL,
|
|
101
|
+
nameTrimming: t(o["data-product_name_control_trim"], !0),
|
|
102
|
+
priceHideDiscount: t(o["data-product_price_control_nodup"], !0),
|
|
103
|
+
priceFormatted: t(o["data-product_price_control_formated"], !0),
|
|
104
|
+
priceSinglePrice: t(o["data-product_price_control_single_price"], !1),
|
|
105
|
+
priceCurrencySymbol: r(
|
|
106
|
+
o["data-product_price_currency_symbol"],
|
|
108
107
|
g.productPriceCurrencySymbolControlValue
|
|
109
108
|
),
|
|
110
|
-
priceCurrencyLocation:
|
|
111
|
-
|
|
109
|
+
priceCurrencyLocation: r(
|
|
110
|
+
o["data-product_price_currency_location"],
|
|
112
111
|
g.productPriceCurrencyLocationControlValue
|
|
113
112
|
),
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
buttonVisible: t(r["data-product_button_visible"], !0)
|
|
113
|
+
priceOrientation: o["data-product_original_price_control_orientation"] || "horizontal",
|
|
114
|
+
quantityControlEnabled: t(o["data-product_quantity_control_enabled"], !0),
|
|
115
|
+
buttonLink: r(o["data-product_button_link"], g.productButtonLinkControlValue),
|
|
116
|
+
imageLink: r(o["data-product_image_link"], g.productImageLinkControlValue),
|
|
117
|
+
buttonLabel: r(o["data-product_button_control_label"], "Buy"),
|
|
118
|
+
buttonFullWidth: t(o["data-product_button_control_atw"], !0),
|
|
119
|
+
imageVisible: t(o["data-product_image_control_enabled"], !0),
|
|
120
|
+
nameVisible: t(o["data-product_name_control_enabled"], !0),
|
|
121
|
+
quantityVisible: t(o["data-product_quantity_control_enabled"], !0),
|
|
122
|
+
priceVisible: t(o["data-product_price_control_enabled"], !0),
|
|
123
|
+
originalPriceVisible: t(o["data-product_original_price_control_enabled"], !0),
|
|
124
|
+
buttonVisible: t(o["data-product_button_control_enabled"], !0)
|
|
127
125
|
};
|
|
128
126
|
}
|
|
129
127
|
const x = {
|
|
@@ -133,17 +131,17 @@ const x = {
|
|
|
133
131
|
};
|
|
134
132
|
class N {
|
|
135
133
|
constructor() {
|
|
136
|
-
|
|
134
|
+
R(this, "parser");
|
|
137
135
|
this.parser = new DOMParser();
|
|
138
136
|
}
|
|
139
137
|
migrate(t) {
|
|
140
138
|
try {
|
|
141
|
-
let
|
|
142
|
-
|
|
143
|
-
const c = this.parser.parseFromString(
|
|
139
|
+
let r = this.removeJinjaConditionals(t);
|
|
140
|
+
r = this.replaceTemplateVariables(r);
|
|
141
|
+
const c = this.parser.parseFromString(r, "text/html"), n = c.querySelectorAll(
|
|
144
142
|
"td.esd-cart-items-block, td.esd-browsed-items-block, td.esd-purchased-items-block"
|
|
145
143
|
);
|
|
146
|
-
return n.length === 0 ? (console.warn("ItemsBlockMigrator: No blocks found with items block selectors"),
|
|
144
|
+
return n.length === 0 ? (console.warn("ItemsBlockMigrator: No blocks found with items block selectors"), r) : (n.forEach((i) => {
|
|
147
145
|
const e = this.extractConfiguration(i), a = U({
|
|
148
146
|
orientation: e.orientation,
|
|
149
147
|
itemsType: e.itemsType,
|
|
@@ -158,20 +156,20 @@ class N {
|
|
|
158
156
|
priceStyles: e.priceStyles,
|
|
159
157
|
originalPriceStyles: e.originalPriceStyles,
|
|
160
158
|
quantityStyles: e.quantityStyles,
|
|
161
|
-
nodeConfig:
|
|
159
|
+
nodeConfig: M(e.configBlockAttributes)
|
|
162
160
|
}), l = this.parser.parseFromString(
|
|
163
161
|
`<table><tbody><tr>${a}</tr></tbody></table>`,
|
|
164
162
|
"text/html"
|
|
165
163
|
).querySelector("td");
|
|
166
164
|
if (l && i.parentNode) {
|
|
167
|
-
const f =
|
|
165
|
+
const f = M(e.configBlockAttributes);
|
|
168
166
|
l.setAttribute("esd-ext-config", JSON.stringify(f));
|
|
169
167
|
const u = l.querySelector("esd-config-block");
|
|
170
168
|
u && u.remove(), i.parentNode.replaceChild(l, i);
|
|
171
169
|
}
|
|
172
170
|
}), c.documentElement.outerHTML);
|
|
173
|
-
} catch (
|
|
174
|
-
return console.error("ItemsBlockMigrator failed:",
|
|
171
|
+
} catch (r) {
|
|
172
|
+
return console.error("ItemsBlockMigrator failed:", r), t;
|
|
175
173
|
}
|
|
176
174
|
}
|
|
177
175
|
/**
|
|
@@ -182,13 +180,13 @@ class N {
|
|
|
182
180
|
*/
|
|
183
181
|
extractConfiguration(t) {
|
|
184
182
|
var C, D, P;
|
|
185
|
-
const
|
|
183
|
+
const r = ((C = t.querySelector("[data-type]")) == null ? void 0 : C.getAttribute("data-type")) || "CART_ITEMS", c = ((D = t.querySelector("[data-number]")) == null ? void 0 : D.getAttribute("data-number")) || "1", n = parseInt(c) - 1, i = E[r], e = ((P = i == null ? void 0 : i[n]) == null ? void 0 : P.value) || i[0].value, a = t.querySelector('[product-attr="price"]'), d = (a == null ? void 0 : a.getAttribute("data-currency_symbol")) || "USD", f = ((a == null ? void 0 : a.getAttribute("data-curency")) || "before") === "after" ? "1" : "0", u = (a == null ? void 0 : a.getAttribute("data-formated")) !== "false", s = this.extractConfigBlockAttributes(t, r), b = s["data-card_orientation_control_value"];
|
|
186
184
|
let S;
|
|
187
185
|
b ? S = b === "horizontal" ? "horizontal" : "vertical" : S = t.querySelector('[colspan="2"]') !== null ? "vertical" : "horizontal";
|
|
188
|
-
const p = t.querySelector('a[product-attr="name"]'), T = (p == null ? void 0 : p.getAttribute("style")) || void 0, y = t.querySelector('a[product-attr="button"]'), m = (y == null ? void 0 : y.getAttribute("style")) || void 0,
|
|
186
|
+
const p = t.querySelector('a[product-attr="name"]'), T = (p == null ? void 0 : p.getAttribute("style")) || void 0, y = t.querySelector('a[product-attr="button"]'), m = (y == null ? void 0 : y.getAttribute("style")) || void 0, h = (a == null ? void 0 : a.getAttribute("style")) || void 0, A = t.querySelector("p.original-price"), k = (A == null ? void 0 : A.getAttribute("style")) || void 0, I = t.querySelector('[product-attr="quantity"]'), v = (I == null ? void 0 : I.getAttribute("style")) || void 0;
|
|
189
187
|
return {
|
|
190
188
|
orientation: S,
|
|
191
|
-
itemsType:
|
|
189
|
+
itemsType: r,
|
|
192
190
|
itemId: e,
|
|
193
191
|
currencySymbol: d,
|
|
194
192
|
currencyLocation: f,
|
|
@@ -196,9 +194,9 @@ class N {
|
|
|
196
194
|
configBlockAttributes: s,
|
|
197
195
|
nameStyles: T,
|
|
198
196
|
buttonStyles: m,
|
|
199
|
-
priceStyles:
|
|
200
|
-
originalPriceStyles:
|
|
201
|
-
quantityStyles:
|
|
197
|
+
priceStyles: h,
|
|
198
|
+
originalPriceStyles: k,
|
|
199
|
+
quantityStyles: v
|
|
202
200
|
};
|
|
203
201
|
}
|
|
204
202
|
/**
|
|
@@ -207,7 +205,7 @@ class N {
|
|
|
207
205
|
* @param block - The block element containing the esd-config-block
|
|
208
206
|
* @param itemsType - The type of items (CART_ITEMS, BROWSED_ITEMS, PURCHASED_ITEMS)
|
|
209
207
|
*/
|
|
210
|
-
extractConfigBlockAttributes(t,
|
|
208
|
+
extractConfigBlockAttributes(t, r) {
|
|
211
209
|
const c = t.querySelector("esd-config-block"), n = {};
|
|
212
210
|
if (!c)
|
|
213
211
|
return this.getDefaultConfigBlockAttributes();
|
|
@@ -216,7 +214,7 @@ class N {
|
|
|
216
214
|
}), n["data-cart_items_select_control_value"]) {
|
|
217
215
|
const e = n["data-cart_items_select_control_value"];
|
|
218
216
|
if (/^\d+$/.test(e)) {
|
|
219
|
-
const a = parseInt(e) - 1, d = E[
|
|
217
|
+
const a = parseInt(e) - 1, d = E[r];
|
|
220
218
|
d && d[a] && (n["data-cart_items_select_control_value"] = d[a].value);
|
|
221
219
|
}
|
|
222
220
|
}
|
|
@@ -227,7 +225,7 @@ class N {
|
|
|
227
225
|
}
|
|
228
226
|
(!n["data-product_price_currency_symbol"] || n["data-product_price_currency_symbol"].trim() === "") && (n["data-product_price_currency_symbol"] = "USD");
|
|
229
227
|
const i = { ...this.getDefaultConfigBlockAttributes(), ...n };
|
|
230
|
-
return i["data-type"] =
|
|
228
|
+
return i["data-type"] = r, i["data-source"] = r, i;
|
|
231
229
|
}
|
|
232
230
|
/**
|
|
233
231
|
* Returns default esd-config-block attributes based on the old template structure
|
|
@@ -239,24 +237,19 @@ class N {
|
|
|
239
237
|
"data-type": "CART_ITEMS",
|
|
240
238
|
"data-card_orientation_control_value": "vertical",
|
|
241
239
|
// Image settings
|
|
242
|
-
"data-product_image_control_opened": "false",
|
|
243
240
|
"data-product_image_control_image-width": "70",
|
|
244
241
|
"data-product_image_control_image-height": "70",
|
|
245
242
|
"data-product_image_control_align_button": "true",
|
|
246
243
|
"data-product_image_control_padding_mobile": "true",
|
|
247
244
|
"data-product_image_link": "{{Abandoned Cart Item (1) Image}}",
|
|
248
|
-
"data-product_image_control_enabled": "
|
|
245
|
+
"data-product_image_control_enabled": "true",
|
|
249
246
|
// Name settings
|
|
250
|
-
"data-
|
|
251
|
-
"data-product_name_control_enabled": "1",
|
|
247
|
+
"data-product_name_control_enabled": "true",
|
|
252
248
|
"data-product_name_control_font_font_size": "20",
|
|
253
249
|
"data-product_name_control_trim": "1",
|
|
254
250
|
// Quantity settings
|
|
255
|
-
"data-product_quantity_control_opened": "true",
|
|
256
251
|
"data-product_quantity_control_enabled": "true",
|
|
257
|
-
"data-product_quantity_visible": "1",
|
|
258
252
|
// Price settings
|
|
259
|
-
"data-product_price_control_opened": "false",
|
|
260
253
|
"data-product_price_control_font_font_size": "20",
|
|
261
254
|
"data-product_price_control_color": "#060606",
|
|
262
255
|
"data-product_price_control_curency": "0",
|
|
@@ -265,21 +258,20 @@ class N {
|
|
|
265
258
|
"data-product_price_control_formated": "1",
|
|
266
259
|
"data-product_price_control_nodup": "1",
|
|
267
260
|
"data-product_price_control_single_price": "false",
|
|
268
|
-
"data-
|
|
261
|
+
"data-product_price_control_enabled": "true",
|
|
269
262
|
// Original price settings
|
|
270
263
|
"data-product_original_price_control_font_font_size": "19",
|
|
271
264
|
"data-product_original_price_control_align_align_desktop": "center",
|
|
272
265
|
"data-product_original_price_control_orientation": "horizontal",
|
|
273
266
|
"data-product_original_price_control_enabled": "true",
|
|
274
267
|
// Button settings
|
|
275
|
-
"data-
|
|
268
|
+
"data-product_button_control_enabled": "true",
|
|
276
269
|
"data-product_button_control_label": "Buy",
|
|
277
270
|
"data-product_button_control_font_font_size": "17",
|
|
278
271
|
"data-product_button_control_color": "#ffffff",
|
|
279
272
|
"data-product_button_control_background": "#010101",
|
|
280
273
|
"data-product_button_control_atw": "true",
|
|
281
|
-
"data-product_button_link": "{{Abandoned Cart Item (1) Url}}"
|
|
282
|
-
"data-product_button_visible": "1"
|
|
274
|
+
"data-product_button_link": "{{Abandoned Cart Item (1) Url}}"
|
|
283
275
|
};
|
|
284
276
|
}
|
|
285
277
|
/**
|
|
@@ -290,16 +282,16 @@ class N {
|
|
|
290
282
|
* - Purchased Items: purchased_item_total_product_kind, purchased_item_price_N, purchased_item_originalprice_N
|
|
291
283
|
*/
|
|
292
284
|
removeJinjaConditionals(t) {
|
|
293
|
-
let
|
|
285
|
+
let r = t.replace(
|
|
294
286
|
/\{%\s*if\s+(ins_apr|browsed_item|purchased_item)_total_product_kind\s*(>|>)\s*\d+\s*%\}/g,
|
|
295
287
|
""
|
|
296
288
|
);
|
|
297
|
-
return
|
|
289
|
+
return r = r.replace(
|
|
298
290
|
/\{%\s*if\s+(ins_apr|browsed_item|purchased_item)_price_\d+\s*(!=|!=)\s*\1_originalprice_\d+\s*%\}/g,
|
|
299
291
|
""
|
|
300
|
-
),
|
|
292
|
+
), r = r.replace(/\{%\s*endif\s*%\}/g, ""), r = r.replace(/\n\s*\n\s*\n/g, `
|
|
301
293
|
|
|
302
|
-
`),
|
|
294
|
+
`), r;
|
|
303
295
|
}
|
|
304
296
|
/**
|
|
305
297
|
* Replaces template variables with default values from productPairs
|
|
@@ -311,7 +303,7 @@ class N {
|
|
|
311
303
|
* - {{purchased_item_formattedprice_5}} → '1,490.49' (PURCHASED_ITEMS)
|
|
312
304
|
*/
|
|
313
305
|
replaceTemplateVariables(t) {
|
|
314
|
-
const { PAIRS_FOR_EXTENSION:
|
|
306
|
+
const { PAIRS_FOR_EXTENSION: r } = B;
|
|
315
307
|
return t.replace(/{{([^}]+)}}/g, (c, n) => {
|
|
316
308
|
const i = n.match(/^(ins_apr|browsed_item|purchased_item)_([a-z_]+)_(\d+)$/);
|
|
317
309
|
if (!i)
|
|
@@ -319,10 +311,10 @@ class N {
|
|
|
319
311
|
const [, e, a, d] = i, l = x[e];
|
|
320
312
|
if (!l)
|
|
321
313
|
return console.warn(`Unknown variable prefix: ${e}`), c;
|
|
322
|
-
const f =
|
|
314
|
+
const f = w[a];
|
|
323
315
|
if (!f)
|
|
324
316
|
return console.warn(`Unknown variable suffix mapping for: ${a}`), c;
|
|
325
|
-
const { pairsKey: u, defaultKey: s, isArray: b } = f, p =
|
|
317
|
+
const { pairsKey: u, defaultKey: s, isArray: b } = f, p = r[u][l];
|
|
326
318
|
if (!p)
|
|
327
319
|
return console.warn(`No data found for: ${u}.${l}`), c;
|
|
328
320
|
if (b) {
|
|
@@ -334,8 +326,8 @@ class N {
|
|
|
334
326
|
});
|
|
335
327
|
}
|
|
336
328
|
}
|
|
337
|
-
function Y(
|
|
338
|
-
return new N().migrate(
|
|
329
|
+
function Y(o) {
|
|
330
|
+
return new N().migrate(o);
|
|
339
331
|
}
|
|
340
332
|
export {
|
|
341
333
|
Y as migrateItemsBlock
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { useOnboardingStore as
|
|
2
|
-
import { Block as u, BlockCompositionType as
|
|
3
|
-
import { ItemsBlockId as f } from "./enums/controlEnums.js";
|
|
1
|
+
import { useOnboardingStore as m } from "../../../stores/onboarding.js";
|
|
2
|
+
import { Block as u, BlockCompositionType as d, ModificationDescription as i } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
4
3
|
import { SETTINGS_ENUMS as c, DefaultConfigValues as o } from "./enums/settingsEnums.js";
|
|
5
|
-
import { useItemsBlockStore as
|
|
6
|
-
import { getDefaultTemplate as
|
|
7
|
-
import { getItemsBlockContainer as
|
|
8
|
-
const
|
|
9
|
-
class
|
|
4
|
+
import { useItemsBlockStore as p } from "./store/items-block.js";
|
|
5
|
+
import { getDefaultTemplate as f } from "./template.js";
|
|
6
|
+
import { getItemsBlockContainer as g, getItemsBlockConfig as a, getDefaultItemsBlockConfig as C } from "./utils/nodeConfigUtils.js";
|
|
7
|
+
const y = "items-block";
|
|
8
|
+
class B extends u {
|
|
10
9
|
getId() {
|
|
11
|
-
return
|
|
10
|
+
return y;
|
|
12
11
|
}
|
|
13
12
|
getIcon() {
|
|
14
13
|
return "items-icon";
|
|
15
14
|
}
|
|
16
15
|
getBlockCompositionType() {
|
|
17
|
-
return
|
|
16
|
+
return d.CONTAINER;
|
|
18
17
|
}
|
|
19
18
|
getName() {
|
|
20
19
|
return this.api.translate("Items");
|
|
@@ -23,7 +22,7 @@ class O extends u {
|
|
|
23
22
|
return this.api.translate("Items lets you display personalized products based on user behavior.");
|
|
24
23
|
}
|
|
25
24
|
getTemplate() {
|
|
26
|
-
return
|
|
25
|
+
return f({
|
|
27
26
|
orientation: c.ORIENTATION.VERTICAL,
|
|
28
27
|
itemsType: c.ITEMS_TYPE.CART_ITEMS,
|
|
29
28
|
itemId: "{{Abandoned Cart Item (1) Url}}",
|
|
@@ -35,22 +34,20 @@ class O extends u {
|
|
|
35
34
|
allowInnerBlocksDND() {
|
|
36
35
|
return !1;
|
|
37
36
|
}
|
|
38
|
-
onCreated(
|
|
39
|
-
const e =
|
|
37
|
+
onCreated(n) {
|
|
38
|
+
const e = g(n);
|
|
40
39
|
if (!e)
|
|
41
40
|
return;
|
|
42
|
-
const t = e.getNodeConfig(), l = t && Object.keys(t).length > 0, r = a(
|
|
41
|
+
const t = e.getNodeConfig(), l = t && Object.keys(t).length > 0, r = a(n);
|
|
43
42
|
if (r != null && r.initialized)
|
|
44
|
-
l ? r.blockInstanceId || this.api.getDocumentModifier().modifyHtml(e).setNodeConfig({ ...r, blockInstanceId: String(Date.now()) }).apply(new
|
|
43
|
+
l ? r.blockInstanceId || this.api.getDocumentModifier().modifyHtml(e).setNodeConfig({ ...r, blockInstanceId: String(Date.now()) }).apply(new i("Assign block instance ID to block")) : this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(r).apply(new i("Migrate legacy config to nodeConfig"));
|
|
45
44
|
else {
|
|
46
|
-
const
|
|
47
|
-
this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(
|
|
45
|
+
const s = C();
|
|
46
|
+
this.api.getDocumentModifier().modifyHtml(e).setNodeConfig(s).apply(new i("Initialize Items block with default configuration")), m().startOnboarding("itemsOnboarding");
|
|
48
47
|
}
|
|
49
|
-
const s = `[esd-extension-block-id="${f.IMAGE}"] img`;
|
|
50
|
-
this.api.getDocumentModifier().modifyHtml(i.querySelector(s)).setStyle("object-fit", "contain").apply(new n("Updated image object-fit"));
|
|
51
48
|
}
|
|
52
|
-
onSelect(
|
|
53
|
-
const e =
|
|
49
|
+
onSelect(n) {
|
|
50
|
+
const e = p(), t = a(n);
|
|
54
51
|
t && (e.setItemsType(t.type || o.itemsType), e.setItemIds(t.itemsSelectValue || o.cartItemsSelectControlValue), e.setOrientation(t.orientation || o.cardOrientationControlValue), e.setCurrencySymbol(
|
|
55
52
|
t.priceCurrencySymbol || o.productPriceCurrencySymbolControlValue
|
|
56
53
|
), e.setCurrencyLocation(
|
|
@@ -61,6 +58,6 @@ class O extends u {
|
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
export {
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
y as BLOCK_ID,
|
|
62
|
+
B as ItemsBlock
|
|
66
63
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
var L = Object.defineProperty;
|
|
2
|
-
var M = (
|
|
3
|
-
var
|
|
4
|
-
import { UEAttr as
|
|
2
|
+
var M = (h, d, e) => d in h ? L(h, d, { enumerable: !0, configurable: !0, writable: !0, value: e }) : h[d] = e;
|
|
3
|
+
var O = (h, d, e) => M(h, typeof d != "symbol" ? d + "" : d, e);
|
|
4
|
+
import { UEAttr as C, ModificationDescription as u } from "../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
5
|
import { CommonControl as D } from "../../common-control.js";
|
|
6
6
|
import { ItemsBlockId as m } from "../enums/controlEnums.js";
|
|
7
|
-
import { productPairs as
|
|
7
|
+
import { productPairs as p, templateFirstLine as b } from "../enums/productEnums.js";
|
|
8
8
|
import { ItemTypeOptions as R, OrientationOptions as x, ItemInCartOptions as N, SETTINGS_ENUMS as S, DefaultConfigValues as A } from "../enums/settingsEnums.js";
|
|
9
9
|
import H from "../layouts/horizontal.html.js";
|
|
10
10
|
import k from "../layouts/vertical.html.js";
|
|
11
11
|
import { useItemsBlockStore as U } from "../store/items-block.js";
|
|
12
|
-
import { getDefaultTemplate as
|
|
12
|
+
import { getDefaultTemplate as F } from "../template.js";
|
|
13
13
|
import { getItemsBlockConfig as P, setItemsBlockConfig as f } from "../utils/nodeConfigUtils.js";
|
|
14
|
-
const
|
|
14
|
+
const $ = "ui-elements-items-block", a = {
|
|
15
15
|
ITEMS_TYPE: "itemsType",
|
|
16
16
|
ORIENTATION: "orientation",
|
|
17
17
|
ITEM_IDS: "itemIds"
|
|
@@ -19,10 +19,10 @@ const F = "ui-elements-items-block", a = {
|
|
|
19
19
|
class K extends D {
|
|
20
20
|
constructor() {
|
|
21
21
|
super(...arguments);
|
|
22
|
-
|
|
22
|
+
O(this, "store", U());
|
|
23
23
|
}
|
|
24
24
|
getId() {
|
|
25
|
-
return
|
|
25
|
+
return $;
|
|
26
26
|
}
|
|
27
27
|
getTemplate() {
|
|
28
28
|
return `
|
|
@@ -124,7 +124,7 @@ class K extends D {
|
|
|
124
124
|
_initializeSelectItems() {
|
|
125
125
|
this.api.setUIEAttribute(
|
|
126
126
|
a.ITEMS_TYPE,
|
|
127
|
-
|
|
127
|
+
C.SELECTPICKER.items,
|
|
128
128
|
R
|
|
129
129
|
);
|
|
130
130
|
const { itemsType: e, itemIds: t } = this.store;
|
|
@@ -134,7 +134,7 @@ class K extends D {
|
|
|
134
134
|
const i = N[e];
|
|
135
135
|
this.api.setUIEAttribute(
|
|
136
136
|
a.ITEM_IDS,
|
|
137
|
-
|
|
137
|
+
C.SELECTPICKER.items,
|
|
138
138
|
i
|
|
139
139
|
), this.api.updateValues({
|
|
140
140
|
[a.ITEM_IDS]: t
|
|
@@ -161,7 +161,7 @@ class K extends D {
|
|
|
161
161
|
currencyLocation: n,
|
|
162
162
|
formattedPrice: s
|
|
163
163
|
} = this.store;
|
|
164
|
-
this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(
|
|
164
|
+
this.api.getDocumentModifier().modifyHtml(this.currentNode).setInnerHtml(F({
|
|
165
165
|
orientation: e,
|
|
166
166
|
itemsType: t,
|
|
167
167
|
itemId: i,
|
|
@@ -173,12 +173,12 @@ class K extends D {
|
|
|
173
173
|
_getTemplateData() {
|
|
174
174
|
const { itemsType: e, itemIds: t, formattedPrice: i } = this.store, r = N[e].findIndex((s) => s.value === t), n = r > -1 ? r : 0;
|
|
175
175
|
return {
|
|
176
|
-
imageSrc:
|
|
177
|
-
name:
|
|
178
|
-
price: i ?
|
|
179
|
-
originalPrice: i ?
|
|
180
|
-
quantity:
|
|
181
|
-
button:
|
|
176
|
+
imageSrc: p.PAIRS_FOR_EXTENSION.imageSrc[e].DEFAULT[n],
|
|
177
|
+
name: p.PAIRS_FOR_EXTENSION.name[e].DEFAULT[n],
|
|
178
|
+
price: i ? p.PAIRS_FOR_EXTENSION.price[e].DEFAULT_PRICE_FORMATTED : p.PAIRS_FOR_EXTENSION.price[e].DEFAULT_PRICE,
|
|
179
|
+
originalPrice: i ? p.PAIRS_FOR_EXTENSION.originalPrice[e].DEFAULT_PRICE_FORMATTED : p.PAIRS_FOR_EXTENSION.originalPrice[e].DEFAULT_PRICE,
|
|
180
|
+
quantity: p.PAIRS_FOR_EXTENSION.quantity[e].DEFAULT,
|
|
181
|
+
button: p.PAIRS_FOR_EXTENSION.button[e].DEFAULT_LABEL
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
184
|
_updateImageSrc(e) {
|
|
@@ -196,15 +196,15 @@ class K extends D {
|
|
|
196
196
|
r = r.replace(i, e), this.api.getDocumentModifier().modifyHtml(t).setInnerHtml(r).apply(new u("Updated name"));
|
|
197
197
|
}
|
|
198
198
|
_updatePrice(e) {
|
|
199
|
-
var
|
|
200
|
-
const t = (
|
|
199
|
+
var g;
|
|
200
|
+
const t = (g = this.currentNode) == null ? void 0 : g.querySelector(`[esd-extension-block-id="${m.PRICE}"]`);
|
|
201
201
|
if (!t)
|
|
202
202
|
return;
|
|
203
203
|
const i = this._getParagraphFromBlock(t);
|
|
204
204
|
if (!i)
|
|
205
205
|
return;
|
|
206
|
-
const r = i.getInnerHTML() || "", n = i.getInnerText() || "", { currencySymbol: s, currencyLocation: l } = this.store, o = (s == null ? void 0 : s.trim()) || "", c = this._removeCurrencySymbol(n, o),
|
|
207
|
-
this.api.getDocumentModifier().modifyHtml(i).setInnerHtml(
|
|
206
|
+
const r = i.getInnerHTML() || "", n = i.getInnerText() || "", { currencySymbol: s, currencyLocation: l } = this.store, o = (s == null ? void 0 : s.trim()) || "", c = this._removeCurrencySymbol(n, o), T = this._replacePriceNumber(c, e), I = this._buildPriceContent(T, o, l), _ = r.replace(n, I);
|
|
207
|
+
this.api.getDocumentModifier().modifyHtml(i).setInnerHtml(_).apply(new u("Updated price"));
|
|
208
208
|
}
|
|
209
209
|
_updateOriginalPrice(e) {
|
|
210
210
|
var E;
|
|
@@ -219,27 +219,21 @@ class K extends D {
|
|
|
219
219
|
const r = i.querySelector("s");
|
|
220
220
|
if (!r)
|
|
221
221
|
return;
|
|
222
|
-
const n = r.getInnerHTML() || "", s = r.getInnerText() || "", { currencySymbol: l, currencyLocation: o } = this.store, c = (l == null ? void 0 : l.trim()) || "",
|
|
222
|
+
const n = r.getInnerHTML() || "", s = r.getInnerText() || "", { currencySymbol: l, currencyLocation: o } = this.store, c = (l == null ? void 0 : l.trim()) || "", T = this._removeCurrencySymbol(s, c), I = this._replacePriceNumber(T, e), _ = this._buildPriceContent(I, c, o), y = `<s>${n.replace(s, _)}</s>`;
|
|
223
223
|
this.api.getDocumentModifier().modifyHtml(i).setInnerHtml(y).apply(new u("Updated original price"));
|
|
224
224
|
}
|
|
225
225
|
_updateQuantity(e) {
|
|
226
|
-
var
|
|
227
|
-
const t = this.store.itemsType !== S.ITEMS_TYPE.BROWSED_ITEMS, i = P(this.currentNode), r = (i == null ? void 0 : i.quantityControlEnabled) !== !1, n = t && r, s = (
|
|
226
|
+
var c;
|
|
227
|
+
const t = this.store.itemsType !== S.ITEMS_TYPE.BROWSED_ITEMS, i = P(this.currentNode), r = (i == null ? void 0 : i.quantityControlEnabled) !== !1, n = t && r, s = (c = this.currentNode) == null ? void 0 : c.querySelector(`[esd-extension-block-id="${m.QUANTITY}"]`);
|
|
228
228
|
if (!s)
|
|
229
229
|
return;
|
|
230
230
|
const l = s.getInnerText().trim();
|
|
231
231
|
let o = s.getInnerHTML();
|
|
232
|
-
|
|
233
|
-
return h.replace(
|
|
234
|
-
new RegExp(`(>\\s*)${T}(\\s*<)`, "g"),
|
|
235
|
-
`$1${I}$2`
|
|
236
|
-
);
|
|
237
|
-
}
|
|
238
|
-
o = c(o, l, e), this.api.getDocumentModifier().modifyHtml(s).setInnerHtml(o).setStyle("display", n ? "table-cell" : "none").apply(new u("Updated quantity"));
|
|
232
|
+
o = o.replace(l, e), this.api.getDocumentModifier().modifyHtml(s).setInnerHtml(o).setStyle("display", n ? "table-cell" : "none").apply(new u("Updated quantity"));
|
|
239
233
|
}
|
|
240
234
|
_reOrderTemplate() {
|
|
241
|
-
var
|
|
242
|
-
const e = (
|
|
235
|
+
var T, I, _, g, y, E;
|
|
236
|
+
const e = (T = this.currentNode) == null ? void 0 : T.querySelector(`[esd-extension-block-id="${m.IMAGE}"]`), t = (I = this.currentNode) == null ? void 0 : I.querySelector(`[esd-extension-block-id="${m.NAME}"]`), i = (_ = this.currentNode) == null ? void 0 : _.querySelector(`[esd-extension-block-id="${m.PRICE}"]`), r = (g = this.currentNode) == null ? void 0 : g.querySelector(
|
|
243
237
|
`[esd-extension-block-id="${m.ORIGINAL_PRICE}"]`
|
|
244
238
|
), n = (y = this.currentNode) == null ? void 0 : y.querySelector(`[esd-extension-block-id="${m.QUANTITY}"]`), s = (E = this.currentNode) == null ? void 0 : E.querySelector(`[esd-extension-block-id="${m.BUTTON}"]`);
|
|
245
239
|
if (!e || !t || !i || !r || !n || !s)
|
|
@@ -322,10 +316,10 @@ class K extends D {
|
|
|
322
316
|
return e.replace(i, t).trim();
|
|
323
317
|
}
|
|
324
318
|
_buildPriceContent(e, t, i) {
|
|
325
|
-
return t ? i === "1" ? `${e} ${t}
|
|
319
|
+
return t ? i === "1" ? `${e} ${t}` : `${t} ${e}` : e;
|
|
326
320
|
}
|
|
327
321
|
}
|
|
328
322
|
export {
|
|
329
|
-
|
|
323
|
+
$ as CONTROL_BLOCK_ID,
|
|
330
324
|
K as ItemsBlockControl
|
|
331
325
|
};
|
|
@@ -26,9 +26,7 @@ const e = {
|
|
|
26
26
|
productPriceCurrencyLocationControlValue: "0",
|
|
27
27
|
productButtonLinkControlValue: "{{Abandoned Cart Item (1) Url}}",
|
|
28
28
|
productImageLinkControlValue: "{{Abandoned Cart Item (1) Image}}",
|
|
29
|
-
productNameControlEnabled: "1",
|
|
30
29
|
productQuantityControlEnabled: "1",
|
|
31
|
-
productPriceControlOpened: "1",
|
|
32
30
|
productImageVisible: "1",
|
|
33
31
|
productNameVisible: "1",
|
|
34
32
|
productQuantityVisible: "1",
|
|
@@ -3,19 +3,20 @@ import { ItemsBlock as i } from "./block.js";
|
|
|
3
3
|
import { ButtonLinkControl as C } from "./controls/button/link.js";
|
|
4
4
|
import { ItemsBlockCardCompositionControl as e } from "./controls/cardComposition.js";
|
|
5
5
|
import { ImageLinkControl as m } from "./controls/image/link.js";
|
|
6
|
-
import { NameControls as
|
|
6
|
+
import { NameControls as t, QuantityControls as n, OriginalPriceControls as r, PriceControls as d, ImageControls as l, ButtonControls as o } from "./controls/index.js";
|
|
7
7
|
import { NameTrimmingControl as s } from "./controls/name/trimming.js";
|
|
8
8
|
import { PriceCurrencyLocationControl as c } from "./controls/price/currencyLocation.js";
|
|
9
|
-
import { PriceCurrencySymbolControl as
|
|
10
|
-
import { PriceFormattedPriceControl as
|
|
9
|
+
import { PriceCurrencySymbolControl as f } from "./controls/price/currencySymbol.js";
|
|
10
|
+
import { PriceFormattedPriceControl as g } from "./controls/price/formattedPrice.js";
|
|
11
11
|
import { PriceHideDiscountControl as p } from "./controls/price/hideDiscount.js";
|
|
12
12
|
import { PriceOrientationControl as y } from "./controls/price/priceOrientation.js";
|
|
13
13
|
import { PriceSinglePriceControl as u } from "./controls/price/singlePrice.js";
|
|
14
14
|
import { ItemsBlockControl as P } from "./controls/settingsControl.js";
|
|
15
|
-
import {
|
|
16
|
-
import I from "./
|
|
17
|
-
import
|
|
18
|
-
|
|
15
|
+
import { ItemsBlockId as k } from "./enums/controlEnums.js";
|
|
16
|
+
import { ItemsIconsRegistry as I } from "./iconsRegistry.js";
|
|
17
|
+
import b from "./items.css.js";
|
|
18
|
+
import { SettingsPanel as B } from "./settingsPanel.js";
|
|
19
|
+
const M = new a().addBlock(i).withSettingsPanelRegistry(B).addControl(P).addControl(e).addControl(t.align).addControl(t.color).addControl(t.size).addControl(t.style).addControl(t.fontFamily).addControl(t.background).addControl(t.paddings).addControl(s).addControl(n.align).addControl(n.color).addControl(n.fontFamily).addControl(n.paddings).addControl(n.size).addControl(n.style).addControl(r.align).addControl(r.color).addControl(r.size).addControl(r.style).addControl(r.fontFamily).addControl(r.background).addControl(r.paddings).addControl(d.align).addControl(d.color).addControl(d.size).addControl(d.style).addControl(d.fontFamily).addControl(d.background).addControl(d.paddings).addControl(p).addControl(g).addControl(u).addControl(f).addControl(c).addControl(y).addControl(m).addControl(l.size).addControl(l.margins).addControl(C).addControl(o.align).addControl(o.border).addControl(o.borderRadius).addControl(o.color).addControl(o.fontFamily).addControl(o.margins).addControl(o.paddings).addControl(o.text).addControl(o.textSize).addControl(o.textStyleAndFontColor).addControl(o.fitToContent).addStyles(b).withPreviewStyles(`[esd-extension-block-id="${k.IMAGE}"] img {object-fit: contain;}`).withIconsRegistry(I).build();
|
|
19
20
|
export {
|
|
20
|
-
|
|
21
|
+
M as default
|
|
21
22
|
};
|