@azzas/azzas-tracker-web 1.0.97 → 1.0.99-preview.0
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/mod.cjs +619 -93
- package/dist/mod.cjs.map +1 -1
- package/dist/mod.global.js +619 -93
- package/dist/mod.global.js.map +1 -1
- package/dist/mod.js +619 -93
- package/dist/mod.js.map +1 -1
- package/dist/mod.vtex.global.js +736 -116
- package/package.json +1 -1
package/dist/mod.cjs
CHANGED
|
@@ -322,7 +322,7 @@ var EVENTS = {
|
|
|
322
322
|
}
|
|
323
323
|
};
|
|
324
324
|
|
|
325
|
-
// src/
|
|
325
|
+
// src/pushToDatalayer.ts
|
|
326
326
|
function pushToDataLayer(event, context) {
|
|
327
327
|
const targetWindow = context.window || (typeof window !== "undefined" ? window : null);
|
|
328
328
|
if (!targetWindow) return;
|
|
@@ -333,74 +333,13 @@ function pushToDataLayer(event, context) {
|
|
|
333
333
|
targetWindow.dataLayer = targetWindow.dataLayer || [];
|
|
334
334
|
if (eventConfig == null ? void 0 : eventConfig.hasEcommerce) {
|
|
335
335
|
targetWindow.dataLayer.push({ ecommerce: null });
|
|
336
|
-
targetWindow.dataLayer.push({ event, ecommerce: payload });
|
|
336
|
+
targetWindow.dataLayer.push({ event: event.toLowerCase(), ecommerce: payload });
|
|
337
337
|
} else {
|
|
338
|
-
targetWindow.dataLayer.push(Object.assign({ event }, payload));
|
|
338
|
+
targetWindow.dataLayer.push(Object.assign({ event: event.toLowerCase() }, payload));
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
// src/
|
|
343
|
-
function dataTrackingLog(data, color) {
|
|
344
|
-
console.log(
|
|
345
|
-
`%c[DT] EVENTO DISPARADO:%c `,
|
|
346
|
-
`background: ${color}; color: white; font-weight: bold; padding: 2px 4px; border-radius: 3px;`,
|
|
347
|
-
"color: #fff;",
|
|
348
|
-
data || ""
|
|
349
|
-
);
|
|
350
|
-
}
|
|
351
|
-
var paymentTypeMap = [
|
|
352
|
-
["vale", "vale cr\xE9dito"],
|
|
353
|
-
["pagaleve", "pix"],
|
|
354
|
-
["pix parcel", "pix parcelado"],
|
|
355
|
-
["pix", "pix"],
|
|
356
|
-
["apple", "apple pay"],
|
|
357
|
-
["google", "google pay"],
|
|
358
|
-
["boleto", "boleto"],
|
|
359
|
-
["paypal", "paypal"],
|
|
360
|
-
["cred", "cart\xE3o"],
|
|
361
|
-
["visa", "cart\xE3o"],
|
|
362
|
-
["master", "cart\xE3o"],
|
|
363
|
-
["amex", "cart\xE3o"],
|
|
364
|
-
["elo", "cart\xE3o"],
|
|
365
|
-
["hiper", "cart\xE3o"],
|
|
366
|
-
["diner", "cart\xE3o"],
|
|
367
|
-
["deb", "cart\xE3o"]
|
|
368
|
-
];
|
|
369
|
-
var toNum = (val) => typeof val === "string" ? Number(val.replace(/[^\d,]/g, "").replace(",", ".")) : val;
|
|
370
|
-
var documentToHash = async (document2) => {
|
|
371
|
-
if (!document2) return null;
|
|
372
|
-
const encoder = new TextEncoder();
|
|
373
|
-
const data = encoder.encode(document2);
|
|
374
|
-
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
375
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
376
|
-
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
377
|
-
};
|
|
378
|
-
|
|
379
|
-
// src/adapters/dito.ts
|
|
380
|
-
function pushToDito(event, ecomm) {
|
|
381
|
-
dataTrackingLog({ id: event, custom_data: ecomm }, "#00c851");
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
// src/adapters/index.ts
|
|
385
|
-
var adapters = {
|
|
386
|
-
DataLayer: pushToDataLayer,
|
|
387
|
-
Dito: pushToDito
|
|
388
|
-
};
|
|
389
|
-
async function dispatchTrackEvent(eventName, data) {
|
|
390
|
-
const eventConfig = EVENTS[eventName];
|
|
391
|
-
if (!eventConfig) return;
|
|
392
|
-
await Promise.allSettled(
|
|
393
|
-
eventConfig.destinations.map(async (dest) => {
|
|
394
|
-
try {
|
|
395
|
-
await adapters[dest](eventName.toLowerCase(), data);
|
|
396
|
-
} catch (err) {
|
|
397
|
-
console.error(`[DT] Failed to send ${eventName} to ${dest}:`, err);
|
|
398
|
-
}
|
|
399
|
-
})
|
|
400
|
-
);
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// src/params/utils/index.ts
|
|
342
|
+
// src/params/legacy/utils/index.ts
|
|
404
343
|
async function getProductDataById(id) {
|
|
405
344
|
try {
|
|
406
345
|
const response = await fetch(
|
|
@@ -588,7 +527,7 @@ function normalizeBrand(input) {
|
|
|
588
527
|
return uniqueSortedCodes.length > 0 ? uniqueSortedCodes.join("_") : null;
|
|
589
528
|
}
|
|
590
529
|
|
|
591
|
-
// src/params/resolvers/brand/fromOrderForm.ts
|
|
530
|
+
// src/params/legacy/resolvers/brand/fromOrderForm.ts
|
|
592
531
|
function brandFromOrderForm(context) {
|
|
593
532
|
var _a;
|
|
594
533
|
if (!context.orderForm && !((_a = context.orderForm.items) == null ? void 0 : _a.length)) return null;
|
|
@@ -596,14 +535,14 @@ function brandFromOrderForm(context) {
|
|
|
596
535
|
return normalizeBrand(items);
|
|
597
536
|
}
|
|
598
537
|
|
|
599
|
-
// src/params/resolvers/brand/fromItem.ts
|
|
538
|
+
// src/params/legacy/resolvers/brand/fromItem.ts
|
|
600
539
|
function brandFromItem(context) {
|
|
601
540
|
var _a;
|
|
602
541
|
const { item } = context;
|
|
603
542
|
return normalizeBrand(((_a = item == null ? void 0 : item.additionalInfo) == null ? void 0 : _a.brandName) || item.brand || item.item_brand);
|
|
604
543
|
}
|
|
605
544
|
|
|
606
|
-
// src/params/brand.ts
|
|
545
|
+
// src/params/legacy/brand.ts
|
|
607
546
|
function getBrand(context, eventName) {
|
|
608
547
|
if (context == null ? void 0 : context.brand) return normalizeBrand(context.brand) || context.brand || null;
|
|
609
548
|
switch (eventName) {
|
|
@@ -627,7 +566,7 @@ function getBrand(context, eventName) {
|
|
|
627
566
|
}
|
|
628
567
|
}
|
|
629
568
|
|
|
630
|
-
// src/params/utils/itemListAttribution.ts
|
|
569
|
+
// src/params/legacy/utils/itemListAttribution.ts
|
|
631
570
|
var LAST_SELECTED_ITEM_KEY = "last_selected_item";
|
|
632
571
|
var STORAGE_VIEWED = "last_viewed_item";
|
|
633
572
|
var CART_LIST_HISTORY_KEY = "cart_list_history";
|
|
@@ -808,7 +747,7 @@ function persistSelectItemOriginFromResolvedItems(items, source) {
|
|
|
808
747
|
saveSelectedItem(productId, listName);
|
|
809
748
|
}
|
|
810
749
|
|
|
811
|
-
// src/params/resolvers/items/fromOrderForm.ts
|
|
750
|
+
// src/params/legacy/resolvers/items/fromOrderForm.ts
|
|
812
751
|
async function itemsFromOrderForm(context) {
|
|
813
752
|
var _a;
|
|
814
753
|
const items = ((_a = context.orderForm) == null ? void 0 : _a.items) || [];
|
|
@@ -840,7 +779,7 @@ async function itemsFromOrderForm(context) {
|
|
|
840
779
|
);
|
|
841
780
|
}
|
|
842
781
|
|
|
843
|
-
// src/params/resolvers/items/fromItem.ts
|
|
782
|
+
// src/params/legacy/resolvers/items/fromItem.ts
|
|
844
783
|
async function itemsFromItem(context, event) {
|
|
845
784
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
846
785
|
const { item, orderForm, itemListName } = context;
|
|
@@ -876,7 +815,7 @@ async function itemsFromItem(context, event) {
|
|
|
876
815
|
];
|
|
877
816
|
}
|
|
878
817
|
|
|
879
|
-
// src/params/resolvers/items/fromList.ts
|
|
818
|
+
// src/params/legacy/resolvers/items/fromList.ts
|
|
880
819
|
async function itemsFromList(context) {
|
|
881
820
|
return ((context == null ? void 0 : context.list) || []).map((item) => {
|
|
882
821
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
@@ -897,7 +836,7 @@ async function itemsFromList(context) {
|
|
|
897
836
|
});
|
|
898
837
|
}
|
|
899
838
|
|
|
900
|
-
// src/params/resolvers/items/fromPdp.ts
|
|
839
|
+
// src/params/legacy/resolvers/items/fromPdp.ts
|
|
901
840
|
async function itemsFromPDP(context, event) {
|
|
902
841
|
var _a, _b, _c, _d;
|
|
903
842
|
const { item, value, brand } = context;
|
|
@@ -928,7 +867,7 @@ async function itemsFromPDP(context, event) {
|
|
|
928
867
|
];
|
|
929
868
|
}
|
|
930
869
|
|
|
931
|
-
// src/params/resolvers/items/fromBanner.ts
|
|
870
|
+
// src/params/legacy/resolvers/items/fromBanner.ts
|
|
932
871
|
async function itemsFromBanner(context) {
|
|
933
872
|
var _a;
|
|
934
873
|
const isUrlFromPDP = isPDP(context == null ? void 0 : context.bannerUrl);
|
|
@@ -949,7 +888,7 @@ async function itemsFromBanner(context) {
|
|
|
949
888
|
};
|
|
950
889
|
}
|
|
951
890
|
|
|
952
|
-
// src/params/items.ts
|
|
891
|
+
// src/params/legacy/items.ts
|
|
953
892
|
function getItems(context, eventName) {
|
|
954
893
|
if (context == null ? void 0 : context.items) return context.items;
|
|
955
894
|
switch (eventName) {
|
|
@@ -983,9 +922,39 @@ function getItems(context, eventName) {
|
|
|
983
922
|
}
|
|
984
923
|
}
|
|
985
924
|
|
|
986
|
-
// src/
|
|
925
|
+
// src/core/utils.ts
|
|
926
|
+
var paymentTypeMap = [
|
|
927
|
+
["vale", "vale cr\xE9dito"],
|
|
928
|
+
["pagaleve", "pix"],
|
|
929
|
+
["pix parcel", "pix parcelado"],
|
|
930
|
+
["pix", "pix"],
|
|
931
|
+
["apple", "apple pay"],
|
|
932
|
+
["google", "google pay"],
|
|
933
|
+
["boleto", "boleto"],
|
|
934
|
+
["paypal", "paypal"],
|
|
935
|
+
["cred", "cart\xE3o"],
|
|
936
|
+
["visa", "cart\xE3o"],
|
|
937
|
+
["master", "cart\xE3o"],
|
|
938
|
+
["amex", "cart\xE3o"],
|
|
939
|
+
["elo", "cart\xE3o"],
|
|
940
|
+
["hiper", "cart\xE3o"],
|
|
941
|
+
["diner", "cart\xE3o"],
|
|
942
|
+
["deb", "cart\xE3o"]
|
|
943
|
+
];
|
|
944
|
+
var toNum = (val) => typeof val === "string" ? Number(val.replace(/[^\d,]/g, "").replace(",", ".")) : val;
|
|
945
|
+
var documentToHash = async (document2) => {
|
|
946
|
+
if (!document2) return null;
|
|
947
|
+
const encoder = new TextEncoder();
|
|
948
|
+
const data = encoder.encode(document2);
|
|
949
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
950
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
951
|
+
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
952
|
+
};
|
|
953
|
+
|
|
954
|
+
// src/params/legacy/resolvers/paymentType/fromOrderForm.ts
|
|
987
955
|
function paymentTypeFromOrderForm(context) {
|
|
988
956
|
var _a, _b, _c;
|
|
957
|
+
if (context.payment_type) return context.payment_type;
|
|
989
958
|
if (!context.orderForm) return null;
|
|
990
959
|
const payments = ((_a = context.orderForm.paymentData) == null ? void 0 : _a.payments) || [];
|
|
991
960
|
const systems = ((_b = context.orderForm.paymentData) == null ? void 0 : _b.paymentSystems) || [];
|
|
@@ -999,7 +968,7 @@ function paymentTypeFromOrderForm(context) {
|
|
|
999
968
|
return match ? match[1] : null;
|
|
1000
969
|
}
|
|
1001
970
|
|
|
1002
|
-
// src/params/resolvers/paymentType/fromOrderGroup.ts
|
|
971
|
+
// src/params/legacy/resolvers/paymentType/fromOrderGroup.ts
|
|
1003
972
|
function paymentTypeFromOrderGroup(context) {
|
|
1004
973
|
var _a, _b, _c, _d;
|
|
1005
974
|
if (!context.orderForm) return null;
|
|
@@ -1012,7 +981,7 @@ function paymentTypeFromOrderGroup(context) {
|
|
|
1012
981
|
return match ? match[1] : null;
|
|
1013
982
|
}
|
|
1014
983
|
|
|
1015
|
-
// src/params/paymentType.ts
|
|
984
|
+
// src/params/legacy/paymentType.ts
|
|
1016
985
|
function getPaymentType(context, eventName) {
|
|
1017
986
|
if (context == null ? void 0 : context.paymentType) return context.paymentType;
|
|
1018
987
|
switch (eventName) {
|
|
@@ -1109,12 +1078,13 @@ async function getUserInfo(context, eventName) {
|
|
|
1109
1078
|
}
|
|
1110
1079
|
}
|
|
1111
1080
|
|
|
1112
|
-
// src/params/index.ts
|
|
1081
|
+
// src/params/legacy/index.ts
|
|
1113
1082
|
var paramGetters = {
|
|
1114
1083
|
brand: getBrand,
|
|
1115
1084
|
items: getItems,
|
|
1116
1085
|
payment_type: getPaymentType,
|
|
1117
1086
|
user_info: getUserInfo,
|
|
1087
|
+
// global
|
|
1118
1088
|
content_type: (context, eventName) => {
|
|
1119
1089
|
if (context == null ? void 0 : context.content_type) return context.content_type;
|
|
1120
1090
|
return `regiao`.concat(":" + context.category).concat(context.subcategory ? ":" + context.subcategory : "").concat(":" + context.componentName) || null;
|
|
@@ -1310,30 +1280,586 @@ var paramGetters = {
|
|
|
1310
1280
|
}
|
|
1311
1281
|
};
|
|
1312
1282
|
|
|
1313
|
-
// src/
|
|
1283
|
+
// src/params/adapters/deco/index.ts
|
|
1284
|
+
var IN_STOCK_SCHEMA = "https://schema.org/InStock";
|
|
1285
|
+
var LIST_PRICE_SCHEMA = "https://schema.org/ListPrice";
|
|
1286
|
+
var decoAdapter = {
|
|
1287
|
+
brand: (context, eventName) => {
|
|
1288
|
+
var _a;
|
|
1289
|
+
if (context == null ? void 0 : context.brand) return context.brand;
|
|
1290
|
+
if (context == null ? void 0 : context.products) {
|
|
1291
|
+
return (_a = context.products[0].brand) == null ? void 0 : _a.name;
|
|
1292
|
+
}
|
|
1293
|
+
return null;
|
|
1294
|
+
},
|
|
1295
|
+
line_items: (context, eventName) => {
|
|
1296
|
+
if (context == null ? void 0 : context.line_items) return context.line_items;
|
|
1297
|
+
if (context == null ? void 0 : context.products) {
|
|
1298
|
+
return context.products.map((item) => item == null ? void 0 : item.inProductGroupWithID).filter((id) => Boolean(id));
|
|
1299
|
+
}
|
|
1300
|
+
return null;
|
|
1301
|
+
},
|
|
1302
|
+
currency: (context, eventName) => {
|
|
1303
|
+
var _a, _b;
|
|
1304
|
+
if (context == null ? void 0 : context.currency) return context.currency;
|
|
1305
|
+
if (context == null ? void 0 : context.products) {
|
|
1306
|
+
return ((_b = (_a = context.products) == null ? void 0 : _a[0].offers) == null ? void 0 : _b.priceCurrency) || null;
|
|
1307
|
+
}
|
|
1308
|
+
return null;
|
|
1309
|
+
},
|
|
1310
|
+
value: (context, eventName) => {
|
|
1311
|
+
if (context == null ? void 0 : context.value) return context.value;
|
|
1312
|
+
if (context == null ? void 0 : context.products) {
|
|
1313
|
+
return context.products.map((item) => {
|
|
1314
|
+
var _a;
|
|
1315
|
+
return (_a = item.offers) == null ? void 0 : _a.lowPrice;
|
|
1316
|
+
}).filter((price) => price !== void 0).reduce((sum, price) => sum + price, 0);
|
|
1317
|
+
}
|
|
1318
|
+
return null;
|
|
1319
|
+
},
|
|
1320
|
+
available_grid: (context, eventName) => {
|
|
1321
|
+
if (context == null ? void 0 : context.available_grid) return context.available_grid;
|
|
1322
|
+
if (context == null ? void 0 : context.products) {
|
|
1323
|
+
const result = context.products.flatMap(
|
|
1324
|
+
(product) => {
|
|
1325
|
+
var _a, _b, _c;
|
|
1326
|
+
return (_c = (_b = (_a = product.isVariantOf) == null ? void 0 : _a.hasVariant) == null ? void 0 : _b.filter(
|
|
1327
|
+
(variant) => {
|
|
1328
|
+
var _a2, _b2;
|
|
1329
|
+
return (_b2 = (_a2 = variant.offers) == null ? void 0 : _a2.offers) == null ? void 0 : _b2.some((o) => o.availability === IN_STOCK_SCHEMA);
|
|
1330
|
+
}
|
|
1331
|
+
).map((variant) => variant.name).filter((name) => Boolean(name))) != null ? _c : [];
|
|
1332
|
+
}
|
|
1333
|
+
).join(",").trim();
|
|
1334
|
+
return result || null;
|
|
1335
|
+
}
|
|
1336
|
+
return null;
|
|
1337
|
+
},
|
|
1338
|
+
items: (context, eventName) => {
|
|
1339
|
+
if (context == null ? void 0 : context.items) return context.items;
|
|
1340
|
+
if (context == null ? void 0 : context.products) {
|
|
1341
|
+
return context.products.map((item) => {
|
|
1342
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;
|
|
1343
|
+
const listPrice = (_c = (_b = (_a = item == null ? void 0 : item.offers) == null ? void 0 : _a.offers) == null ? void 0 : _b[0].priceSpecification.find(
|
|
1344
|
+
(s) => s.priceType === LIST_PRICE_SCHEMA
|
|
1345
|
+
)) == null ? void 0 : _c.price;
|
|
1346
|
+
return {
|
|
1347
|
+
quantity: 1,
|
|
1348
|
+
item_brand: (_e = (_d = item.brand) == null ? void 0 : _d.name) != null ? _e : null,
|
|
1349
|
+
item_name: (_f = item.alternateName) != null ? _f : null,
|
|
1350
|
+
price: (_h = (_g = item.offers) == null ? void 0 : _g.lowPrice) != null ? _h : null,
|
|
1351
|
+
discount: Number(listPrice) - Number((_i = item == null ? void 0 : item.offers) == null ? void 0 : _i.lowPrice),
|
|
1352
|
+
item_variant: (_l = (_k = (_j = item.additionalProperty) == null ? void 0 : _j.find((p) => p.name === "Cores")) == null ? void 0 : _k.value) != null ? _l : null,
|
|
1353
|
+
item_ref: (_o = (_n = (_m = item.additionalProperty) == null ? void 0 : _m.find(((i) => i.name === "RefId"))) == null ? void 0 : _n.value) != null ? _o : null,
|
|
1354
|
+
item_category: getItemCategory3(item),
|
|
1355
|
+
item_category2: (_r = (_q = (_p = item.category) == null ? void 0 : _p.split(">").pop()) == null ? void 0 : _q.toLowerCase().replace(/^./, (c) => c.toUpperCase())) != null ? _r : null,
|
|
1356
|
+
item_id: (_t = (_s = item == null ? void 0 : item.isVariantOf) == null ? void 0 : _s.productGroupID) != null ? _t : null,
|
|
1357
|
+
item_sku: (_u = item.sku) != null ? _u : null,
|
|
1358
|
+
item_url: (_v = item.url) != null ? _v : null,
|
|
1359
|
+
image_url: (_x = resizeVtexImage2((_w = item == null ? void 0 : item.image) == null ? void 0 : _w[0].url)) != null ? _x : null,
|
|
1360
|
+
seller_id: (_B = (_A = (_z = (_y = item.offers) == null ? void 0 : _y.offers) == null ? void 0 : _z[0]) == null ? void 0 : _A.seller) != null ? _B : null,
|
|
1361
|
+
item_list_name: ""
|
|
1362
|
+
};
|
|
1363
|
+
});
|
|
1364
|
+
}
|
|
1365
|
+
return null;
|
|
1366
|
+
},
|
|
1367
|
+
// legacy/global params TO BE DONE (move to a global file or other adapter)
|
|
1368
|
+
payment_type: getPaymentType,
|
|
1369
|
+
user_info: getUserInfo,
|
|
1370
|
+
// global
|
|
1371
|
+
content_type: (context, eventName) => {
|
|
1372
|
+
if (context == null ? void 0 : context.content_type) return context.content_type;
|
|
1373
|
+
return `regiao`.concat(":" + context.category).concat(context.subcategory ? ":" + context.subcategory : "").concat(":" + context.componentName) || null;
|
|
1374
|
+
},
|
|
1375
|
+
region: (context, eventName) => {
|
|
1376
|
+
return context.region || null;
|
|
1377
|
+
},
|
|
1378
|
+
total_discount: (context, eventName) => {
|
|
1379
|
+
var _a, _b;
|
|
1380
|
+
if (context == null ? void 0 : context.totalDiscount) return context.totalDiscount;
|
|
1381
|
+
const totalsList = ((_a = context.orderForm) == null ? void 0 : _a.totalizers) || ((_b = context.orderForm) == null ? void 0 : _b.totals) || [];
|
|
1382
|
+
const items = context.orderForm.items;
|
|
1383
|
+
const totalDiscount = items.reduce((acc, item) => {
|
|
1384
|
+
const unitDiscount = Math.max(0, item.listPrice - item.sellingPrice);
|
|
1385
|
+
return acc + unitDiscount * item.quantity;
|
|
1386
|
+
}, 0);
|
|
1387
|
+
const discounts = totalsList.find((t) => t.id === "Discounts");
|
|
1388
|
+
return Math.abs(((discounts == null ? void 0 : discounts.value) || 0) + totalDiscount) / 100 || null;
|
|
1389
|
+
},
|
|
1390
|
+
subtotal: (context, eventName) => {
|
|
1391
|
+
var _a, _b;
|
|
1392
|
+
const totalsList = ((_a = context.orderForm) == null ? void 0 : _a.totalizers) || ((_b = context.orderForm) == null ? void 0 : _b.totals) || [];
|
|
1393
|
+
const subtotal = totalsList.filter((t) => t.id === "Items").reduce((acc, t) => acc + (t.value || 0), 0) / 100 || 0;
|
|
1394
|
+
return subtotal;
|
|
1395
|
+
},
|
|
1396
|
+
coupon_message: (context, eventName) => {
|
|
1397
|
+
var _a;
|
|
1398
|
+
if (context.couponMessage) return context.couponMessage;
|
|
1399
|
+
const messages = ((_a = context.orderForm) == null ? void 0 : _a.messages) || [];
|
|
1400
|
+
if (messages.length === 0) return null;
|
|
1401
|
+
const couponMessages = messages.filter(
|
|
1402
|
+
(msg) => msg.text.toLowerCase().includes("cupom")
|
|
1403
|
+
);
|
|
1404
|
+
if (couponMessages.length === 0) return null;
|
|
1405
|
+
return couponMessages.map((msg) => msg.text).join(" | ");
|
|
1406
|
+
},
|
|
1407
|
+
seller_cod_name: (context, eventName) => {
|
|
1408
|
+
return context.appliedSellerCodName || (context == null ? void 0 : context.orderForm.marketingData.utmiCampaign) || null;
|
|
1409
|
+
},
|
|
1410
|
+
coupon: (context, eventName) => {
|
|
1411
|
+
var _a, _b;
|
|
1412
|
+
return context.appliedCoupon || ((_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.marketingData) == null ? void 0 : _b.coupon) || null;
|
|
1413
|
+
},
|
|
1414
|
+
pre_filled: (context, eventName) => {
|
|
1415
|
+
return !!context.preFilled;
|
|
1416
|
+
},
|
|
1417
|
+
search_term: (context, eventName) => {
|
|
1418
|
+
return context.searchTerm || null;
|
|
1419
|
+
},
|
|
1420
|
+
search_found: (context, eventName) => {
|
|
1421
|
+
return !!context.searchFound;
|
|
1422
|
+
},
|
|
1423
|
+
search_quantity: (context, eventName) => {
|
|
1424
|
+
return context.searchQuantity || 0;
|
|
1425
|
+
},
|
|
1426
|
+
promotion_name: (context, eventName) => {
|
|
1427
|
+
return context.promotionName || null;
|
|
1428
|
+
},
|
|
1429
|
+
creative_name: (context, eventName) => {
|
|
1430
|
+
return context.creativeName || null;
|
|
1431
|
+
},
|
|
1432
|
+
creative_slot: (context, eventName) => {
|
|
1433
|
+
return context.creativeSlot || null;
|
|
1434
|
+
},
|
|
1435
|
+
zipcode: (context, eventName) => {
|
|
1436
|
+
return context.zipCode || null;
|
|
1437
|
+
},
|
|
1438
|
+
size: (context, eventName) => {
|
|
1439
|
+
return context.size || null;
|
|
1440
|
+
},
|
|
1441
|
+
item_ref: (context, eventName) => {
|
|
1442
|
+
return context.itemRef || null;
|
|
1443
|
+
},
|
|
1444
|
+
flag_pickup: (context, eventName) => {
|
|
1445
|
+
var _a;
|
|
1446
|
+
const orderForm = context.orderForm;
|
|
1447
|
+
if (!orderForm) return null;
|
|
1448
|
+
const logisticsInfo = ((_a = orderForm.shippingData) == null ? void 0 : _a.logisticsInfo) || [];
|
|
1449
|
+
const hasPickup = logisticsInfo.some(
|
|
1450
|
+
(info) => {
|
|
1451
|
+
var _a2;
|
|
1452
|
+
return (_a2 = info.slas) == null ? void 0 : _a2.some((sla) => sla.deliveryChannel === "pickup-in-point");
|
|
1453
|
+
}
|
|
1454
|
+
);
|
|
1455
|
+
return hasPickup;
|
|
1456
|
+
},
|
|
1457
|
+
shippings: (context, eventName) => {
|
|
1458
|
+
const orderForm = context.orderForm;
|
|
1459
|
+
if (!orderForm) return null;
|
|
1460
|
+
const groupShipping = {};
|
|
1461
|
+
for (const info of orderForm.shippingData.logisticsInfo) {
|
|
1462
|
+
const item = orderForm.items[info.itemIndex];
|
|
1463
|
+
if (!item) continue;
|
|
1464
|
+
for (const sla of info.slas) {
|
|
1465
|
+
const key = sla.name;
|
|
1466
|
+
if (!groupShipping[key]) {
|
|
1467
|
+
groupShipping[key] = {
|
|
1468
|
+
shipping_tier: sla.name,
|
|
1469
|
+
delivery_time: parseInt(sla.shippingEstimate),
|
|
1470
|
+
shipping: parseFloat((sla.price / 100).toFixed(1)),
|
|
1471
|
+
line_items: []
|
|
1472
|
+
};
|
|
1473
|
+
}
|
|
1474
|
+
groupShipping[key].line_items.push(item.id);
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
const shippings = Object.values(groupShipping).map((s) => ({
|
|
1478
|
+
shipping: s.shipping,
|
|
1479
|
+
shipping_tier: s.shipping_tier,
|
|
1480
|
+
delivery_time: s.delivery_time,
|
|
1481
|
+
line_items: s.line_items.join(",")
|
|
1482
|
+
}));
|
|
1483
|
+
return shippings || null;
|
|
1484
|
+
},
|
|
1485
|
+
shipping: (context, eventName) => {
|
|
1486
|
+
var _a, _b, _c;
|
|
1487
|
+
const logistics = (_c = (_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.shippingData) == null ? void 0 : _b.logisticsInfo) != null ? _c : [];
|
|
1488
|
+
return logistics.reduce((total, item) => {
|
|
1489
|
+
var _a2, _b2;
|
|
1490
|
+
const selected = (_a2 = item.slas) == null ? void 0 : _a2.find((sla) => sla.id === item.selectedSla);
|
|
1491
|
+
return total + ((_b2 = selected == null ? void 0 : selected.price) != null ? _b2 : 0);
|
|
1492
|
+
}, 0);
|
|
1493
|
+
},
|
|
1494
|
+
shipping_tier: (context, eventName) => {
|
|
1495
|
+
var _a, _b, _c;
|
|
1496
|
+
const logistics = (_c = (_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.shippingData) == null ? void 0 : _b.logisticsInfo) != null ? _c : [];
|
|
1497
|
+
const selectedSlas = logistics.map((item) => {
|
|
1498
|
+
var _a2;
|
|
1499
|
+
if (!item.selectedSla) return null;
|
|
1500
|
+
return ((_a2 = item.slas) == null ? void 0 : _a2.find((sla) => sla.id === item.selectedSla)) || null;
|
|
1501
|
+
}).filter(Boolean);
|
|
1502
|
+
if (selectedSlas.length === 0) return null;
|
|
1503
|
+
const uniqueTiers = Array.from(
|
|
1504
|
+
new Map(
|
|
1505
|
+
selectedSlas.map((sla) => {
|
|
1506
|
+
var _a2;
|
|
1507
|
+
const key = sla.deliveryChannel === "pickup-in-point" ? `pickup:${((_a2 = sla.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) || sla.name || ""}` : `delivery:${sla.name || ""}`;
|
|
1508
|
+
return [key, sla];
|
|
1509
|
+
})
|
|
1510
|
+
).values()
|
|
1511
|
+
);
|
|
1512
|
+
const sortedTiers = uniqueTiers.sort((a, b) => {
|
|
1513
|
+
var _a2, _b2;
|
|
1514
|
+
const aOrder = a.deliveryChannel === "pickup-in-point" ? 0 : 1;
|
|
1515
|
+
const bOrder = b.deliveryChannel === "pickup-in-point" ? 0 : 1;
|
|
1516
|
+
if (aOrder !== bOrder) return aOrder - bOrder;
|
|
1517
|
+
const aLabel = a.deliveryChannel === "pickup-in-point" ? ((_a2 = a.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) || a.name || "" : a.name || "";
|
|
1518
|
+
const bLabel = b.deliveryChannel === "pickup-in-point" ? ((_b2 = b.pickupStoreInfo) == null ? void 0 : _b2.friendlyName) || b.name || "" : b.name || "";
|
|
1519
|
+
return aLabel.localeCompare(bLabel, "pt-BR");
|
|
1520
|
+
});
|
|
1521
|
+
const shippingTier = sortedTiers.map((sla) => {
|
|
1522
|
+
var _a2;
|
|
1523
|
+
return sla.deliveryChannel === "pickup-in-point" ? `retirada em loja${((_a2 = sla.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) ? `: ${sla.pickupStoreInfo.friendlyName}` : ""}` : sla.deliveryChannel === "delivery" ? `receba em casa${sla.name ? `: ${sla.name}` : ""}` : null;
|
|
1524
|
+
}).filter(Boolean).join(", ");
|
|
1525
|
+
return shippingTier || null;
|
|
1526
|
+
},
|
|
1527
|
+
transaction_id: (context, eventName) => {
|
|
1528
|
+
var _a, _b;
|
|
1529
|
+
return ((_b = (_a = context.orderForm) == null ? void 0 : _a.orderGroup) == null ? void 0 : _b.toString()) || null;
|
|
1530
|
+
},
|
|
1531
|
+
method: (context, eventName) => {
|
|
1532
|
+
return context.method || null;
|
|
1533
|
+
},
|
|
1534
|
+
type: (context, eventName) => {
|
|
1535
|
+
return context.type || null;
|
|
1536
|
+
}
|
|
1537
|
+
};
|
|
1538
|
+
var getItemCategory3 = (item) => {
|
|
1539
|
+
const keywords = ["outlet", "bazar", "sale"];
|
|
1540
|
+
const regex = new RegExp(keywords.join("|"), "i");
|
|
1541
|
+
const value = item == null ? void 0 : item.category;
|
|
1542
|
+
if (value) {
|
|
1543
|
+
const textToTest = Array.isArray(value) ? value.join(" ") : String(value);
|
|
1544
|
+
const match = textToTest.match(regex);
|
|
1545
|
+
if (match) {
|
|
1546
|
+
return match[0].toLowerCase();
|
|
1547
|
+
}
|
|
1548
|
+
}
|
|
1549
|
+
return "Cole\xE7\xE3o";
|
|
1550
|
+
};
|
|
1551
|
+
var resizeVtexImage2 = (url, width = 500, height = 500) => {
|
|
1552
|
+
return url == null ? void 0 : url.replace(
|
|
1553
|
+
/(\/arquivos\/ids\/\d+)-\d+-\d+\//,
|
|
1554
|
+
`$1-${width}-${height}/`
|
|
1555
|
+
);
|
|
1556
|
+
};
|
|
1557
|
+
|
|
1558
|
+
// src/params/adapters/IntelligentSearch/index.ts
|
|
1559
|
+
var intelligentSearchAdapter = {
|
|
1560
|
+
brand: (context, eventName) => {
|
|
1561
|
+
if (context == null ? void 0 : context.brand) return context.brand;
|
|
1562
|
+
if (context == null ? void 0 : context.products) {
|
|
1563
|
+
return context.products.map((p) => {
|
|
1564
|
+
const isPDP2 = "items" in p;
|
|
1565
|
+
return isPDP2 ? p.brand : p.brand.name;
|
|
1566
|
+
}).join().trim();
|
|
1567
|
+
}
|
|
1568
|
+
return null;
|
|
1569
|
+
},
|
|
1570
|
+
line_items: (context, eventName) => {
|
|
1571
|
+
if (context == null ? void 0 : context.line_items) return context.line_items;
|
|
1572
|
+
if (context == null ? void 0 : context.products) {
|
|
1573
|
+
return context.products.map((item) => "productId" in item ? item.productId : item.id).filter((id) => Boolean(id));
|
|
1574
|
+
}
|
|
1575
|
+
return null;
|
|
1576
|
+
},
|
|
1577
|
+
currency: (context, eventName) => {
|
|
1578
|
+
if (context == null ? void 0 : context.currency) return context.currency;
|
|
1579
|
+
return "BRL";
|
|
1580
|
+
},
|
|
1581
|
+
value: (context, eventName) => {
|
|
1582
|
+
if (context == null ? void 0 : context.value) return context.value;
|
|
1583
|
+
if (context == null ? void 0 : context.products) {
|
|
1584
|
+
return context.products.map((item) => {
|
|
1585
|
+
var _a;
|
|
1586
|
+
return "items" in item ? (_a = item == null ? void 0 : item.items[0].sellers) == null ? void 0 : _a[0].commertialOffer.Price : item.offers.lowPrice;
|
|
1587
|
+
}).filter((price) => price !== void 0).reduce((sum, price) => sum + price, 0);
|
|
1588
|
+
}
|
|
1589
|
+
return null;
|
|
1590
|
+
},
|
|
1591
|
+
available_grid: (context, eventName) => {
|
|
1592
|
+
var _a;
|
|
1593
|
+
if (context == null ? void 0 : context.available_grid) return context.available_grid;
|
|
1594
|
+
if (context == null ? void 0 : context.products) {
|
|
1595
|
+
const result = (_a = context == null ? void 0 : context.products) == null ? void 0 : _a.map((p) => {
|
|
1596
|
+
const isPDP2 = "items" in p;
|
|
1597
|
+
return isPDP2 ? p.items.map((i) => i.Tamanho[0]) : [];
|
|
1598
|
+
}).join(",").trim();
|
|
1599
|
+
return result || null;
|
|
1600
|
+
}
|
|
1601
|
+
return null;
|
|
1602
|
+
},
|
|
1603
|
+
items: (context, eventName) => {
|
|
1604
|
+
if (context == null ? void 0 : context.items) return context.items;
|
|
1605
|
+
if (context == null ? void 0 : context.products) {
|
|
1606
|
+
return context.products.map((item) => {
|
|
1607
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
|
|
1608
|
+
const isPDP2 = "items" in item;
|
|
1609
|
+
const listPrice = isPDP2 ? (_a = item == null ? void 0 : item.items[0].sellers) == null ? void 0 : _a[0].commertialOffer.ListPrice : item.offers.highPrice;
|
|
1610
|
+
const price = isPDP2 ? (_b = item == null ? void 0 : item.items[0].sellers) == null ? void 0 : _b[0].commertialOffer.Price : item.offers.lowPrice;
|
|
1611
|
+
return {
|
|
1612
|
+
quantity: 1,
|
|
1613
|
+
item_brand: isPDP2 ? item.brand : (_c = item.brand.name) != null ? _c : null,
|
|
1614
|
+
item_name: isPDP2 ? item.productName : (_d = item.name) != null ? _d : null,
|
|
1615
|
+
price: price != null ? price : null,
|
|
1616
|
+
discount: Number(listPrice) - Number(price),
|
|
1617
|
+
item_variant: isPDP2 ? (_f = (_e = item.items[0]) == null ? void 0 : _e.name) == null ? void 0 : _f.split(" - ")[0] : (_i = (_h = (_g = item.isVariantOf) == null ? void 0 : _g.hasVariant) == null ? void 0 : _h[0].name.split(" - ")[0]) != null ? _i : null,
|
|
1618
|
+
item_variant2: isPDP2 ? (_k = (_j = item.items[0]) == null ? void 0 : _j.name) == null ? void 0 : _k.split(" - ")[1] : (_m = (_l = item.additionalProperty.find((p) => p.name === "Tamanho")) == null ? void 0 : _l.value) != null ? _m : null,
|
|
1619
|
+
item_ref: isPDP2 ? item.productReference : null,
|
|
1620
|
+
// sem ref no retorno do IS na multi-lib produtos PDC
|
|
1621
|
+
item_category: getItemCategory5(item),
|
|
1622
|
+
item_category2: (_n = getItemCategory22(item)) != null ? _n : null,
|
|
1623
|
+
item_id: isPDP2 ? item == null ? void 0 : item.productId : (_o = item.isVariantOf.productGroupID) != null ? _o : null,
|
|
1624
|
+
item_sku: isPDP2 ? (_p = item.items) == null ? void 0 : _p[0].itemId : (_q = item.sku) != null ? _q : null,
|
|
1625
|
+
item_url: isPDP2 ? item.link : null,
|
|
1626
|
+
// sem link/url no retorno do IS na multi-lib produtos PDC
|
|
1627
|
+
image_url: isPDP2 ? resizeVtexImage3((_s = (_r = item == null ? void 0 : item.items) == null ? void 0 : _r[0].images) == null ? void 0 : _s[0].imageUrl) : (_u = resizeVtexImage3((_t = item == null ? void 0 : item.image) == null ? void 0 : _t[0].url)) != null ? _u : null,
|
|
1628
|
+
seller_id: isPDP2 ? (_x = (_w = (_v = item.items) == null ? void 0 : _v[0]) == null ? void 0 : _w.sellers) == null ? void 0 : _x[0].sellerId : (_C = (_B = (_A = (_z = (_y = item.offers) == null ? void 0 : _y.offers) == null ? void 0 : _z.find((o) => o.availability)) == null ? void 0 : _A.seller) == null ? void 0 : _B.identifier) != null ? _C : null,
|
|
1629
|
+
item_list_name: ""
|
|
1630
|
+
};
|
|
1631
|
+
});
|
|
1632
|
+
}
|
|
1633
|
+
return null;
|
|
1634
|
+
},
|
|
1635
|
+
// legacy/global params TO BE DONE (move to a global file or other adapter)
|
|
1636
|
+
payment_type: getPaymentType,
|
|
1637
|
+
user_info: getUserInfo,
|
|
1638
|
+
// global
|
|
1639
|
+
content_type: (context, eventName) => {
|
|
1640
|
+
if (context == null ? void 0 : context.content_type) return context.content_type;
|
|
1641
|
+
return `regiao`.concat(":" + context.category).concat(context.subcategory ? ":" + context.subcategory : "").concat(":" + context.componentName) || null;
|
|
1642
|
+
},
|
|
1643
|
+
region: (context, eventName) => {
|
|
1644
|
+
return context.region || null;
|
|
1645
|
+
},
|
|
1646
|
+
total_discount: (context, eventName) => {
|
|
1647
|
+
var _a, _b;
|
|
1648
|
+
if (context == null ? void 0 : context.totalDiscount) return context.totalDiscount;
|
|
1649
|
+
const totalsList = ((_a = context.orderForm) == null ? void 0 : _a.totalizers) || ((_b = context.orderForm) == null ? void 0 : _b.totals) || [];
|
|
1650
|
+
const items = context.orderForm.items;
|
|
1651
|
+
const totalDiscount = items.reduce((acc, item) => {
|
|
1652
|
+
const unitDiscount = Math.max(0, item.listPrice - item.sellingPrice);
|
|
1653
|
+
return acc + unitDiscount * item.quantity;
|
|
1654
|
+
}, 0);
|
|
1655
|
+
const discounts = totalsList.find((t) => t.id === "Discounts");
|
|
1656
|
+
return Math.abs(((discounts == null ? void 0 : discounts.value) || 0) + totalDiscount) / 100 || null;
|
|
1657
|
+
},
|
|
1658
|
+
subtotal: (context, eventName) => {
|
|
1659
|
+
var _a, _b;
|
|
1660
|
+
const totalsList = ((_a = context.orderForm) == null ? void 0 : _a.totalizers) || ((_b = context.orderForm) == null ? void 0 : _b.totals) || [];
|
|
1661
|
+
const subtotal = totalsList.filter((t) => t.id === "Items").reduce((acc, t) => acc + (t.value || 0), 0) / 100 || 0;
|
|
1662
|
+
return subtotal;
|
|
1663
|
+
},
|
|
1664
|
+
coupon_message: (context, eventName) => {
|
|
1665
|
+
var _a;
|
|
1666
|
+
if (context.couponMessage) return context.couponMessage;
|
|
1667
|
+
const messages = ((_a = context.orderForm) == null ? void 0 : _a.messages) || [];
|
|
1668
|
+
if (messages.length === 0) return null;
|
|
1669
|
+
const couponMessages = messages.filter(
|
|
1670
|
+
(msg) => msg.text.toLowerCase().includes("cupom")
|
|
1671
|
+
);
|
|
1672
|
+
if (couponMessages.length === 0) return null;
|
|
1673
|
+
return couponMessages.map((msg) => msg.text).join(" | ");
|
|
1674
|
+
},
|
|
1675
|
+
seller_cod_name: (context, eventName) => {
|
|
1676
|
+
return context.appliedSellerCodName || (context == null ? void 0 : context.orderForm.marketingData.utmiCampaign) || null;
|
|
1677
|
+
},
|
|
1678
|
+
coupon: (context, eventName) => {
|
|
1679
|
+
var _a, _b;
|
|
1680
|
+
return context.appliedCoupon || ((_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.marketingData) == null ? void 0 : _b.coupon) || null;
|
|
1681
|
+
},
|
|
1682
|
+
pre_filled: (context, eventName) => {
|
|
1683
|
+
return !!context.preFilled;
|
|
1684
|
+
},
|
|
1685
|
+
search_term: (context, eventName) => {
|
|
1686
|
+
return context.searchTerm || null;
|
|
1687
|
+
},
|
|
1688
|
+
search_found: (context, eventName) => {
|
|
1689
|
+
return !!context.searchFound;
|
|
1690
|
+
},
|
|
1691
|
+
search_quantity: (context, eventName) => {
|
|
1692
|
+
return context.searchQuantity || 0;
|
|
1693
|
+
},
|
|
1694
|
+
promotion_name: (context, eventName) => {
|
|
1695
|
+
return context.promotionName || null;
|
|
1696
|
+
},
|
|
1697
|
+
creative_name: (context, eventName) => {
|
|
1698
|
+
return context.creativeName || null;
|
|
1699
|
+
},
|
|
1700
|
+
creative_slot: (context, eventName) => {
|
|
1701
|
+
return context.creativeSlot || null;
|
|
1702
|
+
},
|
|
1703
|
+
zipcode: (context, eventName) => {
|
|
1704
|
+
return context.zipCode || null;
|
|
1705
|
+
},
|
|
1706
|
+
size: (context, eventName) => {
|
|
1707
|
+
return context.size || null;
|
|
1708
|
+
},
|
|
1709
|
+
item_ref: (context, eventName) => {
|
|
1710
|
+
return context.itemRef || null;
|
|
1711
|
+
},
|
|
1712
|
+
flag_pickup: (context, eventName) => {
|
|
1713
|
+
var _a;
|
|
1714
|
+
const orderForm = context.orderForm;
|
|
1715
|
+
if (!orderForm) return null;
|
|
1716
|
+
const logisticsInfo = ((_a = orderForm.shippingData) == null ? void 0 : _a.logisticsInfo) || [];
|
|
1717
|
+
const hasPickup = logisticsInfo.some(
|
|
1718
|
+
(info) => {
|
|
1719
|
+
var _a2;
|
|
1720
|
+
return (_a2 = info.slas) == null ? void 0 : _a2.some((sla) => sla.deliveryChannel === "pickup-in-point");
|
|
1721
|
+
}
|
|
1722
|
+
);
|
|
1723
|
+
return hasPickup;
|
|
1724
|
+
},
|
|
1725
|
+
shippings: (context, eventName) => {
|
|
1726
|
+
const orderForm = context.orderForm;
|
|
1727
|
+
if (!orderForm) return null;
|
|
1728
|
+
const groupShipping = {};
|
|
1729
|
+
for (const info of orderForm.shippingData.logisticsInfo) {
|
|
1730
|
+
const item = orderForm.items[info.itemIndex];
|
|
1731
|
+
if (!item) continue;
|
|
1732
|
+
for (const sla of info.slas) {
|
|
1733
|
+
const key = sla.name;
|
|
1734
|
+
if (!groupShipping[key]) {
|
|
1735
|
+
groupShipping[key] = {
|
|
1736
|
+
shipping_tier: sla.name,
|
|
1737
|
+
delivery_time: parseInt(sla.shippingEstimate),
|
|
1738
|
+
shipping: parseFloat((sla.price / 100).toFixed(1)),
|
|
1739
|
+
line_items: []
|
|
1740
|
+
};
|
|
1741
|
+
}
|
|
1742
|
+
groupShipping[key].line_items.push(item.id);
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
const shippings = Object.values(groupShipping).map((s) => ({
|
|
1746
|
+
shipping: s.shipping,
|
|
1747
|
+
shipping_tier: s.shipping_tier,
|
|
1748
|
+
delivery_time: s.delivery_time,
|
|
1749
|
+
line_items: s.line_items.join(",")
|
|
1750
|
+
}));
|
|
1751
|
+
return shippings || null;
|
|
1752
|
+
},
|
|
1753
|
+
shipping: (context, eventName) => {
|
|
1754
|
+
var _a, _b, _c;
|
|
1755
|
+
const logistics = (_c = (_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.shippingData) == null ? void 0 : _b.logisticsInfo) != null ? _c : [];
|
|
1756
|
+
return logistics.reduce((total, item) => {
|
|
1757
|
+
var _a2, _b2;
|
|
1758
|
+
const selected = (_a2 = item.slas) == null ? void 0 : _a2.find((sla) => sla.id === item.selectedSla);
|
|
1759
|
+
return total + ((_b2 = selected == null ? void 0 : selected.price) != null ? _b2 : 0);
|
|
1760
|
+
}, 0);
|
|
1761
|
+
},
|
|
1762
|
+
shipping_tier: (context, eventName) => {
|
|
1763
|
+
var _a, _b, _c;
|
|
1764
|
+
const logistics = (_c = (_b = (_a = context == null ? void 0 : context.orderForm) == null ? void 0 : _a.shippingData) == null ? void 0 : _b.logisticsInfo) != null ? _c : [];
|
|
1765
|
+
const selectedSlas = logistics.map((item) => {
|
|
1766
|
+
var _a2;
|
|
1767
|
+
if (!item.selectedSla) return null;
|
|
1768
|
+
return ((_a2 = item.slas) == null ? void 0 : _a2.find((sla) => sla.id === item.selectedSla)) || null;
|
|
1769
|
+
}).filter(Boolean);
|
|
1770
|
+
if (selectedSlas.length === 0) return null;
|
|
1771
|
+
const uniqueTiers = Array.from(
|
|
1772
|
+
new Map(
|
|
1773
|
+
selectedSlas.map((sla) => {
|
|
1774
|
+
var _a2;
|
|
1775
|
+
const key = sla.deliveryChannel === "pickup-in-point" ? `pickup:${((_a2 = sla.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) || sla.name || ""}` : `delivery:${sla.name || ""}`;
|
|
1776
|
+
return [key, sla];
|
|
1777
|
+
})
|
|
1778
|
+
).values()
|
|
1779
|
+
);
|
|
1780
|
+
const sortedTiers = uniqueTiers.sort((a, b) => {
|
|
1781
|
+
var _a2, _b2;
|
|
1782
|
+
const aOrder = a.deliveryChannel === "pickup-in-point" ? 0 : 1;
|
|
1783
|
+
const bOrder = b.deliveryChannel === "pickup-in-point" ? 0 : 1;
|
|
1784
|
+
if (aOrder !== bOrder) return aOrder - bOrder;
|
|
1785
|
+
const aLabel = a.deliveryChannel === "pickup-in-point" ? ((_a2 = a.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) || a.name || "" : a.name || "";
|
|
1786
|
+
const bLabel = b.deliveryChannel === "pickup-in-point" ? ((_b2 = b.pickupStoreInfo) == null ? void 0 : _b2.friendlyName) || b.name || "" : b.name || "";
|
|
1787
|
+
return aLabel.localeCompare(bLabel, "pt-BR");
|
|
1788
|
+
});
|
|
1789
|
+
const shippingTier = sortedTiers.map((sla) => {
|
|
1790
|
+
var _a2;
|
|
1791
|
+
return sla.deliveryChannel === "pickup-in-point" ? `retirada em loja${((_a2 = sla.pickupStoreInfo) == null ? void 0 : _a2.friendlyName) ? `: ${sla.pickupStoreInfo.friendlyName}` : ""}` : sla.deliveryChannel === "delivery" ? `receba em casa${sla.name ? `: ${sla.name}` : ""}` : null;
|
|
1792
|
+
}).filter(Boolean).join(", ");
|
|
1793
|
+
return shippingTier || null;
|
|
1794
|
+
},
|
|
1795
|
+
transaction_id: (context, eventName) => {
|
|
1796
|
+
var _a, _b;
|
|
1797
|
+
return ((_b = (_a = context.orderForm) == null ? void 0 : _a.orderGroup) == null ? void 0 : _b.toString()) || null;
|
|
1798
|
+
},
|
|
1799
|
+
method: (context, eventName) => {
|
|
1800
|
+
return context.method || null;
|
|
1801
|
+
},
|
|
1802
|
+
type: (context, eventName) => {
|
|
1803
|
+
return context.type || null;
|
|
1804
|
+
}
|
|
1805
|
+
};
|
|
1806
|
+
var getItemCategory5 = (item) => {
|
|
1807
|
+
const keywords = ["outlet", "bazar", "sale"];
|
|
1808
|
+
const regex = new RegExp(keywords.join("|"), "i");
|
|
1809
|
+
const value = item == null ? void 0 : item.categories;
|
|
1810
|
+
if (value) {
|
|
1811
|
+
const textToTest = Array.isArray(value) ? value.join(" ") : String(value);
|
|
1812
|
+
const match = textToTest.match(regex);
|
|
1813
|
+
if (match) {
|
|
1814
|
+
return match[0].toLowerCase();
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
return "Cole\xE7\xE3o";
|
|
1818
|
+
};
|
|
1819
|
+
var getItemCategory22 = (item) => {
|
|
1820
|
+
var _a, _b, _c;
|
|
1821
|
+
const avoidList = /outlet|bazar|sale/i;
|
|
1822
|
+
const lastCategory = (_b = (_a = item.categories) == null ? void 0 : _a[item.categories.length - 1]) != null ? _b : "";
|
|
1823
|
+
const categoryHierarchy = lastCategory.split("/").filter(Boolean);
|
|
1824
|
+
const deepestCategory = (_c = [...categoryHierarchy].reverse().find((c) => !avoidList.test(c))) != null ? _c : "";
|
|
1825
|
+
return deepestCategory && deepestCategory[0].toUpperCase() + deepestCategory.slice(1).toLowerCase();
|
|
1826
|
+
};
|
|
1827
|
+
function resizeVtexImage3(url, width = 500, height = 500) {
|
|
1828
|
+
return url == null ? void 0 : url.replace(
|
|
1829
|
+
/(\/arquivos\/ids\/\d+)-\d+-\d+\//,
|
|
1830
|
+
`$1-${width}-${height}/`
|
|
1831
|
+
);
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
// src/formatter.ts
|
|
1835
|
+
var adapters = {
|
|
1836
|
+
DECO: decoAdapter,
|
|
1837
|
+
IS: intelligentSearchAdapter
|
|
1838
|
+
};
|
|
1314
1839
|
async function getParameters(context = {}, eventName) {
|
|
1840
|
+
var _a;
|
|
1315
1841
|
const eventConfig = EVENTS[eventName];
|
|
1316
1842
|
if (!eventConfig) return;
|
|
1317
|
-
const
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
)
|
|
1843
|
+
const source = context.adapter;
|
|
1844
|
+
const sourceAdapters = (_a = adapters[source]) != null ? _a : paramGetters;
|
|
1845
|
+
const entries = await Promise.all(
|
|
1846
|
+
eventConfig.requiredParams.map(async (param) => {
|
|
1847
|
+
const adapter = sourceAdapters[param];
|
|
1848
|
+
if (typeof adapter !== "function") {
|
|
1849
|
+
console.error(`[DT] Missing adapter "${param}" for source "${source != null ? source : "default"}"`);
|
|
1850
|
+
return [param, null];
|
|
1851
|
+
}
|
|
1852
|
+
return [param, await adapter(context, eventName)];
|
|
1853
|
+
})
|
|
1328
1854
|
);
|
|
1329
|
-
return
|
|
1855
|
+
return Object.fromEntries(entries);
|
|
1330
1856
|
}
|
|
1331
1857
|
|
|
1332
1858
|
// src/index.ts
|
|
1333
1859
|
async function trackWebEvent(event, context = {}) {
|
|
1334
1860
|
try {
|
|
1335
1861
|
const parameters = await getParameters(context, event);
|
|
1336
|
-
return await
|
|
1862
|
+
return await pushToDataLayer(
|
|
1337
1863
|
event,
|
|
1338
1864
|
Object.assign({}, parameters, { window: context.window })
|
|
1339
1865
|
);
|