@ikas/storefront 0.0.32 → 0.0.34
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/build/index.es.js +139 -101
- package/build/index.js +139 -101
- package/build/utils/providers/page-data.d.ts +1 -0
- package/package.json +1 -1
package/build/index.es.js
CHANGED
|
@@ -11387,7 +11387,7 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11387
11387
|
};
|
|
11388
11388
|
IkasPageDataProvider.prototype.getPageSpecificData = function () {
|
|
11389
11389
|
return __awaiter(this, void 0, void 0, function () {
|
|
11390
|
-
var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage,
|
|
11390
|
+
var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, _a;
|
|
11391
11391
|
var _this = this;
|
|
11392
11392
|
return __generator(this, function (_b) {
|
|
11393
11393
|
switch (_b.label) {
|
|
@@ -11400,11 +11400,14 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11400
11400
|
].includes(this.pageType))
|
|
11401
11401
|
return [2 /*return*/];
|
|
11402
11402
|
slug = this.pageParams.slug;
|
|
11403
|
+
if (!slug) {
|
|
11404
|
+
return [2 /*return*/];
|
|
11405
|
+
}
|
|
11403
11406
|
return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
|
|
11404
11407
|
case 1:
|
|
11405
11408
|
metaDataList = _b.sent();
|
|
11406
11409
|
if (!metaDataList || !metaDataList.length) {
|
|
11407
|
-
return [2 /*return
|
|
11410
|
+
return [2 /*return*/, this.getPageSpecificProduct()];
|
|
11408
11411
|
}
|
|
11409
11412
|
metaData = metaDataList[0];
|
|
11410
11413
|
handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -11445,25 +11448,6 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11445
11448
|
}
|
|
11446
11449
|
});
|
|
11447
11450
|
}); };
|
|
11448
|
-
handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
11449
|
-
var productsResponse, product;
|
|
11450
|
-
return __generator(this, function (_a) {
|
|
11451
|
-
switch (_a.label) {
|
|
11452
|
-
case 0: return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
11453
|
-
idList: [metaData.targetId],
|
|
11454
|
-
})];
|
|
11455
|
-
case 1:
|
|
11456
|
-
productsResponse = _a.sent();
|
|
11457
|
-
if (!productsResponse.products.length)
|
|
11458
|
-
return [2 /*return*/];
|
|
11459
|
-
product = productsResponse.products[0];
|
|
11460
|
-
this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues, true);
|
|
11461
|
-
this.pageType = IkasThemePageType.PRODUCT;
|
|
11462
|
-
this.setPageMetaData(metaData);
|
|
11463
|
-
return [2 /*return*/];
|
|
11464
|
-
}
|
|
11465
|
-
});
|
|
11466
|
-
}); };
|
|
11467
11451
|
_a = metaData.targetType;
|
|
11468
11452
|
switch (_a) {
|
|
11469
11453
|
case IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
|
|
@@ -11475,7 +11459,7 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11475
11459
|
case 3: return [2 /*return*/, _b.sent()];
|
|
11476
11460
|
case 4: return [4 /*yield*/, handleCategoryPage()];
|
|
11477
11461
|
case 5: return [2 /*return*/, _b.sent()];
|
|
11478
|
-
case 6: return [4 /*yield*/,
|
|
11462
|
+
case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
|
|
11479
11463
|
case 7: return [2 /*return*/, _b.sent()];
|
|
11480
11464
|
case 8: return [3 /*break*/, 9];
|
|
11481
11465
|
case 9: return [2 /*return*/];
|
|
@@ -11483,6 +11467,73 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11483
11467
|
});
|
|
11484
11468
|
});
|
|
11485
11469
|
};
|
|
11470
|
+
IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
|
|
11471
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
11472
|
+
var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, _i, _a, variant, values, slugPart;
|
|
11473
|
+
var _this = this;
|
|
11474
|
+
return __generator(this, function (_b) {
|
|
11475
|
+
switch (_b.label) {
|
|
11476
|
+
case 0:
|
|
11477
|
+
slug = this.pageParams.slug;
|
|
11478
|
+
if (!slug) {
|
|
11479
|
+
console.log("Slug not found for getPageSpecificProduct");
|
|
11480
|
+
}
|
|
11481
|
+
getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
|
|
11482
|
+
var metaDataList, splitParts, newSlug;
|
|
11483
|
+
return __generator(this, function (_a) {
|
|
11484
|
+
switch (_a.label) {
|
|
11485
|
+
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
|
|
11486
|
+
case 1:
|
|
11487
|
+
metaDataList = _a.sent();
|
|
11488
|
+
if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
|
|
11489
|
+
splitParts = slug.split("-");
|
|
11490
|
+
newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
|
|
11491
|
+
return [4 /*yield*/, getProductMetaData(newSlug)];
|
|
11492
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
11493
|
+
case 3: return [2 /*return*/, {
|
|
11494
|
+
metaData: metaDataList[0],
|
|
11495
|
+
slug: slug,
|
|
11496
|
+
}];
|
|
11497
|
+
}
|
|
11498
|
+
});
|
|
11499
|
+
}); };
|
|
11500
|
+
return [4 /*yield*/, getProductMetaData(slug)];
|
|
11501
|
+
case 1:
|
|
11502
|
+
metaDataResponse = _b.sent();
|
|
11503
|
+
if (!metaDataResponse)
|
|
11504
|
+
return [2 /*return*/];
|
|
11505
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
11506
|
+
idList: [metaDataResponse.metaData.targetId],
|
|
11507
|
+
})];
|
|
11508
|
+
case 2:
|
|
11509
|
+
productsResponse = _b.sent();
|
|
11510
|
+
if (!productsResponse.products.length)
|
|
11511
|
+
return [2 /*return*/];
|
|
11512
|
+
product = productsResponse.products[0];
|
|
11513
|
+
isMainProductSlug = slug.length === metaDataResponse.slug.length;
|
|
11514
|
+
selectedVariantValues = [];
|
|
11515
|
+
if (!isMainProductSlug) {
|
|
11516
|
+
variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
|
|
11517
|
+
for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
11518
|
+
variant = _a[_i];
|
|
11519
|
+
values = variant.variantValues;
|
|
11520
|
+
slugPart = values.map(function (vv) { return vv.slug; }).join("-");
|
|
11521
|
+
if (slugPart === variantSlugPart) {
|
|
11522
|
+
selectedVariantValues = values;
|
|
11523
|
+
break;
|
|
11524
|
+
}
|
|
11525
|
+
}
|
|
11526
|
+
}
|
|
11527
|
+
this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
|
|
11528
|
+
? selectedVariantValues
|
|
11529
|
+
: product.variants[0].variantValues, true);
|
|
11530
|
+
this.pageType = IkasThemePageType.PRODUCT;
|
|
11531
|
+
this.setPageMetaData(metaDataResponse.metaData);
|
|
11532
|
+
return [2 /*return*/];
|
|
11533
|
+
}
|
|
11534
|
+
});
|
|
11535
|
+
});
|
|
11536
|
+
};
|
|
11486
11537
|
IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
|
|
11487
11538
|
return __awaiter(this, void 0, void 0, function () {
|
|
11488
11539
|
var component, result, setPageComponentPropValue;
|
|
@@ -11647,44 +11698,17 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11647
11698
|
var usePageData = propValue.usePageData;
|
|
11648
11699
|
var _propValue = propValue;
|
|
11649
11700
|
var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
|
|
11650
|
-
|
|
11651
|
-
|
|
11652
|
-
|
|
11653
|
-
|
|
11654
|
-
|
|
11655
|
-
var hasVid = false;
|
|
11656
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
11657
|
-
var variant = product.variants.find(function (v) { return v.id === vid_1; });
|
|
11701
|
+
if (isBrowser) {
|
|
11702
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
11703
|
+
var vid_1 = urlParams.get("vid");
|
|
11704
|
+
if (vid_1) {
|
|
11705
|
+
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
11658
11706
|
if (variant) {
|
|
11659
|
-
selectedVariantValues = variant.variantValues;
|
|
11660
|
-
hasVid = true;
|
|
11707
|
+
productDetail.selectedVariantValues = variant.variantValues;
|
|
11661
11708
|
}
|
|
11662
11709
|
}
|
|
11663
|
-
if (!hasVid) {
|
|
11664
|
-
product.variantTypes.forEach(function (pvt) {
|
|
11665
|
-
var slug = pvt.variantType.slug;
|
|
11666
|
-
var variantValueParam = urlParams_1.get(slug);
|
|
11667
|
-
if (variantValueParam) {
|
|
11668
|
-
var variantValueSlug_1 = variantValueParam;
|
|
11669
|
-
if (Array.isArray(variantValueParam)) {
|
|
11670
|
-
variantValueSlug_1 = variantValueParam[0];
|
|
11671
|
-
}
|
|
11672
|
-
var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
|
|
11673
|
-
if (variantValue)
|
|
11674
|
-
selectedVariantValues.push(variantValue);
|
|
11675
|
-
else
|
|
11676
|
-
selectedVariantValues.push(pvt.variantType.values[0]);
|
|
11677
|
-
}
|
|
11678
|
-
else {
|
|
11679
|
-
selectedVariantValues.push(pvt.variantType.values[0]);
|
|
11680
|
-
}
|
|
11681
|
-
});
|
|
11682
|
-
}
|
|
11683
|
-
}
|
|
11684
|
-
else {
|
|
11685
|
-
selectedVariantValues = productDetail.selectedVariantValues;
|
|
11686
11710
|
}
|
|
11687
|
-
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
|
|
11711
|
+
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
|
|
11688
11712
|
};
|
|
11689
11713
|
IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
|
|
11690
11714
|
if (Array.isArray(propValue)) {
|
|
@@ -13605,17 +13629,13 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13605
13629
|
});
|
|
13606
13630
|
Object.defineProperty(IkasProductDetail.prototype, "href", {
|
|
13607
13631
|
get: function () {
|
|
13608
|
-
var _this = this;
|
|
13609
13632
|
var metaData = this.product.metaData;
|
|
13610
13633
|
if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
|
|
13611
13634
|
return "";
|
|
13612
|
-
if (this.product.hasVariant
|
|
13613
|
-
|
|
13614
|
-
|
|
13615
|
-
|
|
13616
|
-
queryParams_1[vt.variantType.slug] = vv.slug;
|
|
13617
|
-
});
|
|
13618
|
-
return "/" + metaData.slug + "?" + queryString.stringify(queryParams_1);
|
|
13635
|
+
if (this.product.hasVariant) {
|
|
13636
|
+
return "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13637
|
+
.map(function (vv) { return vv.slug; })
|
|
13638
|
+
.join("-");
|
|
13619
13639
|
}
|
|
13620
13640
|
return "/" + metaData.slug;
|
|
13621
13641
|
},
|
|
@@ -13624,12 +13644,18 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13624
13644
|
});
|
|
13625
13645
|
IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
|
|
13626
13646
|
var _a;
|
|
13627
|
-
|
|
13647
|
+
var metaData = this.product.metaData;
|
|
13648
|
+
var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
|
|
13628
13649
|
if (vv.variantTypeId === variantValue.variantTypeId)
|
|
13629
13650
|
return variantValue;
|
|
13630
13651
|
return vv;
|
|
13631
13652
|
});
|
|
13632
|
-
|
|
13653
|
+
this.selectedVariantValues = selectedVariantValues;
|
|
13654
|
+
var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13655
|
+
.map(function (vv) { return vv.slug; })
|
|
13656
|
+
.join("-");
|
|
13657
|
+
var isShallow = process.env.NODE_ENV !== "production";
|
|
13658
|
+
(_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
|
|
13633
13659
|
};
|
|
13634
13660
|
return IkasProductDetail;
|
|
13635
13661
|
}());
|
|
@@ -22669,38 +22695,14 @@ function createProductSchema(pageSpecificDataStr) {
|
|
|
22669
22695
|
var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
|
|
22670
22696
|
var isBrowser = typeof window !== "undefined";
|
|
22671
22697
|
if (isBrowser) {
|
|
22672
|
-
var
|
|
22673
|
-
var vid_1 =
|
|
22674
|
-
|
|
22675
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
22698
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
22699
|
+
var vid_1 = urlParams.get("vid");
|
|
22700
|
+
if (vid_1) {
|
|
22676
22701
|
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
22677
22702
|
if (variant) {
|
|
22678
22703
|
productDetail.selectedVariantValues = variant.variantValues;
|
|
22679
|
-
hasVid = true;
|
|
22680
22704
|
}
|
|
22681
22705
|
}
|
|
22682
|
-
if (!hasVid) {
|
|
22683
|
-
var selectedVariantValues_1 = [];
|
|
22684
|
-
productDetail.product.variantTypes.forEach(function (pvt) {
|
|
22685
|
-
var slug = pvt.variantType.slug;
|
|
22686
|
-
var variantValueParam = urlParams_1.get(slug);
|
|
22687
|
-
if (variantValueParam) {
|
|
22688
|
-
var variantValueSlug_1 = variantValueParam;
|
|
22689
|
-
if (Array.isArray(variantValueParam)) {
|
|
22690
|
-
variantValueSlug_1 = variantValueParam[0];
|
|
22691
|
-
}
|
|
22692
|
-
var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
|
|
22693
|
-
if (variantValue)
|
|
22694
|
-
selectedVariantValues_1.push(variantValue);
|
|
22695
|
-
else
|
|
22696
|
-
selectedVariantValues_1.push(pvt.variantType.values[0]);
|
|
22697
|
-
}
|
|
22698
|
-
else {
|
|
22699
|
-
selectedVariantValues_1.push(pvt.variantType.values[0]);
|
|
22700
|
-
}
|
|
22701
|
-
});
|
|
22702
|
-
productDetail.selectedVariantValues = selectedVariantValues_1;
|
|
22703
|
-
}
|
|
22704
22706
|
}
|
|
22705
22707
|
return {
|
|
22706
22708
|
"@context": "https://schema.org/",
|
|
@@ -23421,24 +23423,60 @@ var Page$1 = function (_a) {
|
|
|
23421
23423
|
};
|
|
23422
23424
|
var index$1 = observer(Page$1);
|
|
23423
23425
|
var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
23424
|
-
var metaData, targetTypes,
|
|
23425
|
-
return __generator(this, function (
|
|
23426
|
-
switch (
|
|
23426
|
+
var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
|
|
23427
|
+
return __generator(this, function (_b) {
|
|
23428
|
+
switch (_b.label) {
|
|
23427
23429
|
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
|
|
23428
23430
|
case 1:
|
|
23429
|
-
metaData =
|
|
23431
|
+
metaData = _b.sent();
|
|
23430
23432
|
targetTypes = [
|
|
23431
23433
|
IkasHTMLMetaDataTargetType.BRAND,
|
|
23432
23434
|
IkasHTMLMetaDataTargetType.CATEGORY,
|
|
23433
|
-
IkasHTMLMetaDataTargetType.PRODUCT,
|
|
23434
23435
|
];
|
|
23435
|
-
|
|
23436
|
+
brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
|
|
23437
|
+
productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === IkasHTMLMetaDataTargetType.PRODUCT; });
|
|
23438
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
23439
|
+
idList: productMetaData.map(function (p) { return p.targetId; }),
|
|
23440
|
+
})];
|
|
23441
|
+
case 2:
|
|
23442
|
+
productsResponse = _b.sent();
|
|
23443
|
+
productParams = [];
|
|
23444
|
+
_loop_1 = function (product) {
|
|
23445
|
+
var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
|
|
23446
|
+
if (meta) {
|
|
23447
|
+
for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
23448
|
+
var variant = _a[_i];
|
|
23449
|
+
if (product.hasVariant) {
|
|
23450
|
+
var variantSlug = variant.variantValues
|
|
23451
|
+
.map(function (vv) { return vv.slug; })
|
|
23452
|
+
.join("-");
|
|
23453
|
+
productParams.push({
|
|
23454
|
+
slug: meta.slug + "-" + variantSlug,
|
|
23455
|
+
});
|
|
23456
|
+
}
|
|
23457
|
+
else {
|
|
23458
|
+
productParams.push({
|
|
23459
|
+
slug: meta.slug,
|
|
23460
|
+
});
|
|
23461
|
+
}
|
|
23462
|
+
}
|
|
23463
|
+
}
|
|
23464
|
+
};
|
|
23465
|
+
for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
|
|
23466
|
+
product = _a[_i];
|
|
23467
|
+
_loop_1(product);
|
|
23468
|
+
}
|
|
23436
23469
|
return [2 /*return*/, {
|
|
23437
|
-
paths:
|
|
23470
|
+
paths: brandCategoryMetaData
|
|
23471
|
+
.map(function (m) { return ({
|
|
23438
23472
|
params: {
|
|
23439
23473
|
slug: m.slug,
|
|
23474
|
+
originalSlug: m.slug,
|
|
23440
23475
|
},
|
|
23441
|
-
}); })
|
|
23476
|
+
}); })
|
|
23477
|
+
.concat(productParams.map(function (pp) { return ({
|
|
23478
|
+
params: pp,
|
|
23479
|
+
}); })),
|
|
23442
23480
|
fallback: "blocking",
|
|
23443
23481
|
}];
|
|
23444
23482
|
}
|
package/build/index.js
CHANGED
|
@@ -11400,7 +11400,7 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11400
11400
|
};
|
|
11401
11401
|
IkasPageDataProvider.prototype.getPageSpecificData = function () {
|
|
11402
11402
|
return __awaiter(this, void 0, void 0, function () {
|
|
11403
|
-
var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage,
|
|
11403
|
+
var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, _a;
|
|
11404
11404
|
var _this = this;
|
|
11405
11405
|
return __generator(this, function (_b) {
|
|
11406
11406
|
switch (_b.label) {
|
|
@@ -11413,11 +11413,14 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11413
11413
|
].includes(this.pageType))
|
|
11414
11414
|
return [2 /*return*/];
|
|
11415
11415
|
slug = this.pageParams.slug;
|
|
11416
|
+
if (!slug) {
|
|
11417
|
+
return [2 /*return*/];
|
|
11418
|
+
}
|
|
11416
11419
|
return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
|
|
11417
11420
|
case 1:
|
|
11418
11421
|
metaDataList = _b.sent();
|
|
11419
11422
|
if (!metaDataList || !metaDataList.length) {
|
|
11420
|
-
return [2 /*return
|
|
11423
|
+
return [2 /*return*/, this.getPageSpecificProduct()];
|
|
11421
11424
|
}
|
|
11422
11425
|
metaData = metaDataList[0];
|
|
11423
11426
|
handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -11458,25 +11461,6 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11458
11461
|
}
|
|
11459
11462
|
});
|
|
11460
11463
|
}); };
|
|
11461
|
-
handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
11462
|
-
var productsResponse, product;
|
|
11463
|
-
return __generator(this, function (_a) {
|
|
11464
|
-
switch (_a.label) {
|
|
11465
|
-
case 0: return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
11466
|
-
idList: [metaData.targetId],
|
|
11467
|
-
})];
|
|
11468
|
-
case 1:
|
|
11469
|
-
productsResponse = _a.sent();
|
|
11470
|
-
if (!productsResponse.products.length)
|
|
11471
|
-
return [2 /*return*/];
|
|
11472
|
-
product = productsResponse.products[0];
|
|
11473
|
-
this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues, true);
|
|
11474
|
-
this.pageType = exports.IkasThemePageType.PRODUCT;
|
|
11475
|
-
this.setPageMetaData(metaData);
|
|
11476
|
-
return [2 /*return*/];
|
|
11477
|
-
}
|
|
11478
|
-
});
|
|
11479
|
-
}); };
|
|
11480
11464
|
_a = metaData.targetType;
|
|
11481
11465
|
switch (_a) {
|
|
11482
11466
|
case exports.IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
|
|
@@ -11488,7 +11472,7 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11488
11472
|
case 3: return [2 /*return*/, _b.sent()];
|
|
11489
11473
|
case 4: return [4 /*yield*/, handleCategoryPage()];
|
|
11490
11474
|
case 5: return [2 /*return*/, _b.sent()];
|
|
11491
|
-
case 6: return [4 /*yield*/,
|
|
11475
|
+
case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
|
|
11492
11476
|
case 7: return [2 /*return*/, _b.sent()];
|
|
11493
11477
|
case 8: return [3 /*break*/, 9];
|
|
11494
11478
|
case 9: return [2 /*return*/];
|
|
@@ -11496,6 +11480,73 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11496
11480
|
});
|
|
11497
11481
|
});
|
|
11498
11482
|
};
|
|
11483
|
+
IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
|
|
11484
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
11485
|
+
var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, _i, _a, variant, values, slugPart;
|
|
11486
|
+
var _this = this;
|
|
11487
|
+
return __generator(this, function (_b) {
|
|
11488
|
+
switch (_b.label) {
|
|
11489
|
+
case 0:
|
|
11490
|
+
slug = this.pageParams.slug;
|
|
11491
|
+
if (!slug) {
|
|
11492
|
+
console.log("Slug not found for getPageSpecificProduct");
|
|
11493
|
+
}
|
|
11494
|
+
getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
|
|
11495
|
+
var metaDataList, splitParts, newSlug;
|
|
11496
|
+
return __generator(this, function (_a) {
|
|
11497
|
+
switch (_a.label) {
|
|
11498
|
+
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
|
|
11499
|
+
case 1:
|
|
11500
|
+
metaDataList = _a.sent();
|
|
11501
|
+
if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
|
|
11502
|
+
splitParts = slug.split("-");
|
|
11503
|
+
newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
|
|
11504
|
+
return [4 /*yield*/, getProductMetaData(newSlug)];
|
|
11505
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
11506
|
+
case 3: return [2 /*return*/, {
|
|
11507
|
+
metaData: metaDataList[0],
|
|
11508
|
+
slug: slug,
|
|
11509
|
+
}];
|
|
11510
|
+
}
|
|
11511
|
+
});
|
|
11512
|
+
}); };
|
|
11513
|
+
return [4 /*yield*/, getProductMetaData(slug)];
|
|
11514
|
+
case 1:
|
|
11515
|
+
metaDataResponse = _b.sent();
|
|
11516
|
+
if (!metaDataResponse)
|
|
11517
|
+
return [2 /*return*/];
|
|
11518
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
11519
|
+
idList: [metaDataResponse.metaData.targetId],
|
|
11520
|
+
})];
|
|
11521
|
+
case 2:
|
|
11522
|
+
productsResponse = _b.sent();
|
|
11523
|
+
if (!productsResponse.products.length)
|
|
11524
|
+
return [2 /*return*/];
|
|
11525
|
+
product = productsResponse.products[0];
|
|
11526
|
+
isMainProductSlug = slug.length === metaDataResponse.slug.length;
|
|
11527
|
+
selectedVariantValues = [];
|
|
11528
|
+
if (!isMainProductSlug) {
|
|
11529
|
+
variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
|
|
11530
|
+
for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
11531
|
+
variant = _a[_i];
|
|
11532
|
+
values = variant.variantValues;
|
|
11533
|
+
slugPart = values.map(function (vv) { return vv.slug; }).join("-");
|
|
11534
|
+
if (slugPart === variantSlugPart) {
|
|
11535
|
+
selectedVariantValues = values;
|
|
11536
|
+
break;
|
|
11537
|
+
}
|
|
11538
|
+
}
|
|
11539
|
+
}
|
|
11540
|
+
this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
|
|
11541
|
+
? selectedVariantValues
|
|
11542
|
+
: product.variants[0].variantValues, true);
|
|
11543
|
+
this.pageType = exports.IkasThemePageType.PRODUCT;
|
|
11544
|
+
this.setPageMetaData(metaDataResponse.metaData);
|
|
11545
|
+
return [2 /*return*/];
|
|
11546
|
+
}
|
|
11547
|
+
});
|
|
11548
|
+
});
|
|
11549
|
+
};
|
|
11499
11550
|
IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
|
|
11500
11551
|
return __awaiter(this, void 0, void 0, function () {
|
|
11501
11552
|
var component, result, setPageComponentPropValue;
|
|
@@ -11660,44 +11711,17 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11660
11711
|
var usePageData = propValue.usePageData;
|
|
11661
11712
|
var _propValue = propValue;
|
|
11662
11713
|
var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
|
|
11663
|
-
|
|
11664
|
-
|
|
11665
|
-
|
|
11666
|
-
|
|
11667
|
-
|
|
11668
|
-
var hasVid = false;
|
|
11669
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
11670
|
-
var variant = product.variants.find(function (v) { return v.id === vid_1; });
|
|
11714
|
+
if (isBrowser) {
|
|
11715
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
11716
|
+
var vid_1 = urlParams.get("vid");
|
|
11717
|
+
if (vid_1) {
|
|
11718
|
+
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
11671
11719
|
if (variant) {
|
|
11672
|
-
selectedVariantValues = variant.variantValues;
|
|
11673
|
-
hasVid = true;
|
|
11720
|
+
productDetail.selectedVariantValues = variant.variantValues;
|
|
11674
11721
|
}
|
|
11675
11722
|
}
|
|
11676
|
-
if (!hasVid) {
|
|
11677
|
-
product.variantTypes.forEach(function (pvt) {
|
|
11678
|
-
var slug = pvt.variantType.slug;
|
|
11679
|
-
var variantValueParam = urlParams_1.get(slug);
|
|
11680
|
-
if (variantValueParam) {
|
|
11681
|
-
var variantValueSlug_1 = variantValueParam;
|
|
11682
|
-
if (Array.isArray(variantValueParam)) {
|
|
11683
|
-
variantValueSlug_1 = variantValueParam[0];
|
|
11684
|
-
}
|
|
11685
|
-
var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
|
|
11686
|
-
if (variantValue)
|
|
11687
|
-
selectedVariantValues.push(variantValue);
|
|
11688
|
-
else
|
|
11689
|
-
selectedVariantValues.push(pvt.variantType.values[0]);
|
|
11690
|
-
}
|
|
11691
|
-
else {
|
|
11692
|
-
selectedVariantValues.push(pvt.variantType.values[0]);
|
|
11693
|
-
}
|
|
11694
|
-
});
|
|
11695
|
-
}
|
|
11696
|
-
}
|
|
11697
|
-
else {
|
|
11698
|
-
selectedVariantValues = productDetail.selectedVariantValues;
|
|
11699
11723
|
}
|
|
11700
|
-
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
|
|
11724
|
+
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
|
|
11701
11725
|
};
|
|
11702
11726
|
IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
|
|
11703
11727
|
if (Array.isArray(propValue)) {
|
|
@@ -13591,17 +13615,13 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13591
13615
|
});
|
|
13592
13616
|
Object.defineProperty(IkasProductDetail.prototype, "href", {
|
|
13593
13617
|
get: function () {
|
|
13594
|
-
var _this = this;
|
|
13595
13618
|
var metaData = this.product.metaData;
|
|
13596
13619
|
if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
|
|
13597
13620
|
return "";
|
|
13598
|
-
if (this.product.hasVariant
|
|
13599
|
-
|
|
13600
|
-
|
|
13601
|
-
|
|
13602
|
-
queryParams_1[vt.variantType.slug] = vv.slug;
|
|
13603
|
-
});
|
|
13604
|
-
return "/" + metaData.slug + "?" + queryString__default['default'].stringify(queryParams_1);
|
|
13621
|
+
if (this.product.hasVariant) {
|
|
13622
|
+
return "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13623
|
+
.map(function (vv) { return vv.slug; })
|
|
13624
|
+
.join("-");
|
|
13605
13625
|
}
|
|
13606
13626
|
return "/" + metaData.slug;
|
|
13607
13627
|
},
|
|
@@ -13610,12 +13630,18 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13610
13630
|
});
|
|
13611
13631
|
IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
|
|
13612
13632
|
var _a;
|
|
13613
|
-
|
|
13633
|
+
var metaData = this.product.metaData;
|
|
13634
|
+
var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
|
|
13614
13635
|
if (vv.variantTypeId === variantValue.variantTypeId)
|
|
13615
13636
|
return variantValue;
|
|
13616
13637
|
return vv;
|
|
13617
13638
|
});
|
|
13618
|
-
|
|
13639
|
+
this.selectedVariantValues = selectedVariantValues;
|
|
13640
|
+
var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13641
|
+
.map(function (vv) { return vv.slug; })
|
|
13642
|
+
.join("-");
|
|
13643
|
+
var isShallow = process.env.NODE_ENV !== "production";
|
|
13644
|
+
(_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
|
|
13619
13645
|
};
|
|
13620
13646
|
return IkasProductDetail;
|
|
13621
13647
|
}());
|
|
@@ -22653,38 +22679,14 @@ function createProductSchema(pageSpecificDataStr) {
|
|
|
22653
22679
|
var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
|
|
22654
22680
|
var isBrowser = typeof window !== "undefined";
|
|
22655
22681
|
if (isBrowser) {
|
|
22656
|
-
var
|
|
22657
|
-
var vid_1 =
|
|
22658
|
-
|
|
22659
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
22682
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
22683
|
+
var vid_1 = urlParams.get("vid");
|
|
22684
|
+
if (vid_1) {
|
|
22660
22685
|
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
22661
22686
|
if (variant) {
|
|
22662
22687
|
productDetail.selectedVariantValues = variant.variantValues;
|
|
22663
|
-
hasVid = true;
|
|
22664
22688
|
}
|
|
22665
22689
|
}
|
|
22666
|
-
if (!hasVid) {
|
|
22667
|
-
var selectedVariantValues_1 = [];
|
|
22668
|
-
productDetail.product.variantTypes.forEach(function (pvt) {
|
|
22669
|
-
var slug = pvt.variantType.slug;
|
|
22670
|
-
var variantValueParam = urlParams_1.get(slug);
|
|
22671
|
-
if (variantValueParam) {
|
|
22672
|
-
var variantValueSlug_1 = variantValueParam;
|
|
22673
|
-
if (Array.isArray(variantValueParam)) {
|
|
22674
|
-
variantValueSlug_1 = variantValueParam[0];
|
|
22675
|
-
}
|
|
22676
|
-
var variantValue = pvt.variantType.values.find(function (vv) { return vv.slug === variantValueSlug_1; });
|
|
22677
|
-
if (variantValue)
|
|
22678
|
-
selectedVariantValues_1.push(variantValue);
|
|
22679
|
-
else
|
|
22680
|
-
selectedVariantValues_1.push(pvt.variantType.values[0]);
|
|
22681
|
-
}
|
|
22682
|
-
else {
|
|
22683
|
-
selectedVariantValues_1.push(pvt.variantType.values[0]);
|
|
22684
|
-
}
|
|
22685
|
-
});
|
|
22686
|
-
productDetail.selectedVariantValues = selectedVariantValues_1;
|
|
22687
|
-
}
|
|
22688
22690
|
}
|
|
22689
22691
|
return {
|
|
22690
22692
|
"@context": "https://schema.org/",
|
|
@@ -23405,24 +23407,60 @@ var Page$1 = function (_a) {
|
|
|
23405
23407
|
};
|
|
23406
23408
|
var index$1 = mobxReactLite.observer(Page$1);
|
|
23407
23409
|
var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
23408
|
-
var metaData, targetTypes,
|
|
23409
|
-
return __generator(this, function (
|
|
23410
|
-
switch (
|
|
23410
|
+
var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
|
|
23411
|
+
return __generator(this, function (_b) {
|
|
23412
|
+
switch (_b.label) {
|
|
23411
23413
|
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
|
|
23412
23414
|
case 1:
|
|
23413
|
-
metaData =
|
|
23415
|
+
metaData = _b.sent();
|
|
23414
23416
|
targetTypes = [
|
|
23415
23417
|
exports.IkasHTMLMetaDataTargetType.BRAND,
|
|
23416
23418
|
exports.IkasHTMLMetaDataTargetType.CATEGORY,
|
|
23417
|
-
exports.IkasHTMLMetaDataTargetType.PRODUCT,
|
|
23418
23419
|
];
|
|
23419
|
-
|
|
23420
|
+
brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
|
|
23421
|
+
productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === exports.IkasHTMLMetaDataTargetType.PRODUCT; });
|
|
23422
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
23423
|
+
idList: productMetaData.map(function (p) { return p.targetId; }),
|
|
23424
|
+
})];
|
|
23425
|
+
case 2:
|
|
23426
|
+
productsResponse = _b.sent();
|
|
23427
|
+
productParams = [];
|
|
23428
|
+
_loop_1 = function (product) {
|
|
23429
|
+
var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
|
|
23430
|
+
if (meta) {
|
|
23431
|
+
for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
23432
|
+
var variant = _a[_i];
|
|
23433
|
+
if (product.hasVariant) {
|
|
23434
|
+
var variantSlug = variant.variantValues
|
|
23435
|
+
.map(function (vv) { return vv.slug; })
|
|
23436
|
+
.join("-");
|
|
23437
|
+
productParams.push({
|
|
23438
|
+
slug: meta.slug + "-" + variantSlug,
|
|
23439
|
+
});
|
|
23440
|
+
}
|
|
23441
|
+
else {
|
|
23442
|
+
productParams.push({
|
|
23443
|
+
slug: meta.slug,
|
|
23444
|
+
});
|
|
23445
|
+
}
|
|
23446
|
+
}
|
|
23447
|
+
}
|
|
23448
|
+
};
|
|
23449
|
+
for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
|
|
23450
|
+
product = _a[_i];
|
|
23451
|
+
_loop_1(product);
|
|
23452
|
+
}
|
|
23420
23453
|
return [2 /*return*/, {
|
|
23421
|
-
paths:
|
|
23454
|
+
paths: brandCategoryMetaData
|
|
23455
|
+
.map(function (m) { return ({
|
|
23422
23456
|
params: {
|
|
23423
23457
|
slug: m.slug,
|
|
23458
|
+
originalSlug: m.slug,
|
|
23424
23459
|
},
|
|
23425
|
-
}); })
|
|
23460
|
+
}); })
|
|
23461
|
+
.concat(productParams.map(function (pp) { return ({
|
|
23462
|
+
params: pp,
|
|
23463
|
+
}); })),
|
|
23426
23464
|
fallback: "blocking",
|
|
23427
23465
|
}];
|
|
23428
23466
|
}
|
|
@@ -17,6 +17,7 @@ export declare class IkasPageDataProvider {
|
|
|
17
17
|
get isStaticPage(): boolean | null | undefined;
|
|
18
18
|
getPageData(): Promise<void>;
|
|
19
19
|
getPageSpecificData(): Promise<void>;
|
|
20
|
+
getPageSpecificProduct(): Promise<void>;
|
|
20
21
|
getPageComponentPropValues(pageComponent: IkasThemePageComponent): Promise<IkasPageComponentPropValue>;
|
|
21
22
|
getPageComponentPropValue(pageComponent: IkasThemePageComponent, prop: IkasThemeComponentProp): Promise<any>;
|
|
22
23
|
private setPageMetaData;
|