@ikas/storefront 0.0.32 → 0.0.33
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 +151 -101
- package/build/index.js +151 -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,85 @@ 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, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
|
|
11473
|
+
var _this = this;
|
|
11474
|
+
return __generator(this, function (_c) {
|
|
11475
|
+
switch (_c.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 = _c.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 = _c.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
|
+
variantSlugs = variantSlugPart.split("-");
|
|
11518
|
+
for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
11519
|
+
variant = _a[_i];
|
|
11520
|
+
isSelectedVariant = true;
|
|
11521
|
+
_loop_1 = function (variantSlug) {
|
|
11522
|
+
if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
|
|
11523
|
+
isSelectedVariant = false;
|
|
11524
|
+
return "break";
|
|
11525
|
+
}
|
|
11526
|
+
};
|
|
11527
|
+
for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
|
|
11528
|
+
variantSlug = variantSlugs_1[_b];
|
|
11529
|
+
state_1 = _loop_1(variantSlug);
|
|
11530
|
+
if (state_1 === "break")
|
|
11531
|
+
break;
|
|
11532
|
+
}
|
|
11533
|
+
if (isSelectedVariant) {
|
|
11534
|
+
selectedVariantValues = variant.variantValues;
|
|
11535
|
+
break;
|
|
11536
|
+
}
|
|
11537
|
+
}
|
|
11538
|
+
}
|
|
11539
|
+
this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
|
|
11540
|
+
? selectedVariantValues
|
|
11541
|
+
: product.variants[0].variantValues, true);
|
|
11542
|
+
this.pageType = IkasThemePageType.PRODUCT;
|
|
11543
|
+
this.setPageMetaData(metaDataResponse.metaData);
|
|
11544
|
+
return [2 /*return*/];
|
|
11545
|
+
}
|
|
11546
|
+
});
|
|
11547
|
+
});
|
|
11548
|
+
};
|
|
11486
11549
|
IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
|
|
11487
11550
|
return __awaiter(this, void 0, void 0, function () {
|
|
11488
11551
|
var component, result, setPageComponentPropValue;
|
|
@@ -11647,44 +11710,17 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11647
11710
|
var usePageData = propValue.usePageData;
|
|
11648
11711
|
var _propValue = propValue;
|
|
11649
11712
|
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; });
|
|
11713
|
+
if (isBrowser) {
|
|
11714
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
11715
|
+
var vid_1 = urlParams.get("vid");
|
|
11716
|
+
if (vid_1) {
|
|
11717
|
+
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
11658
11718
|
if (variant) {
|
|
11659
|
-
selectedVariantValues = variant.variantValues;
|
|
11660
|
-
hasVid = true;
|
|
11719
|
+
productDetail.selectedVariantValues = variant.variantValues;
|
|
11661
11720
|
}
|
|
11662
11721
|
}
|
|
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
11722
|
}
|
|
11687
|
-
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
|
|
11723
|
+
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
|
|
11688
11724
|
};
|
|
11689
11725
|
IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
|
|
11690
11726
|
if (Array.isArray(propValue)) {
|
|
@@ -13605,17 +13641,13 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13605
13641
|
});
|
|
13606
13642
|
Object.defineProperty(IkasProductDetail.prototype, "href", {
|
|
13607
13643
|
get: function () {
|
|
13608
|
-
var _this = this;
|
|
13609
13644
|
var metaData = this.product.metaData;
|
|
13610
13645
|
if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
|
|
13611
13646
|
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);
|
|
13647
|
+
if (this.product.hasVariant) {
|
|
13648
|
+
return "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13649
|
+
.map(function (vv) { return vv.slug; })
|
|
13650
|
+
.join("-");
|
|
13619
13651
|
}
|
|
13620
13652
|
return "/" + metaData.slug;
|
|
13621
13653
|
},
|
|
@@ -13624,12 +13656,18 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13624
13656
|
});
|
|
13625
13657
|
IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
|
|
13626
13658
|
var _a;
|
|
13627
|
-
|
|
13659
|
+
var metaData = this.product.metaData;
|
|
13660
|
+
var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
|
|
13628
13661
|
if (vv.variantTypeId === variantValue.variantTypeId)
|
|
13629
13662
|
return variantValue;
|
|
13630
13663
|
return vv;
|
|
13631
13664
|
});
|
|
13632
|
-
|
|
13665
|
+
this.selectedVariantValues = selectedVariantValues;
|
|
13666
|
+
var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13667
|
+
.map(function (vv) { return vv.slug; })
|
|
13668
|
+
.join("-");
|
|
13669
|
+
var isShallow = process.env.NODE_ENV !== "production";
|
|
13670
|
+
(_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
|
|
13633
13671
|
};
|
|
13634
13672
|
return IkasProductDetail;
|
|
13635
13673
|
}());
|
|
@@ -22669,38 +22707,14 @@ function createProductSchema(pageSpecificDataStr) {
|
|
|
22669
22707
|
var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
|
|
22670
22708
|
var isBrowser = typeof window !== "undefined";
|
|
22671
22709
|
if (isBrowser) {
|
|
22672
|
-
var
|
|
22673
|
-
var vid_1 =
|
|
22674
|
-
|
|
22675
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
22710
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
22711
|
+
var vid_1 = urlParams.get("vid");
|
|
22712
|
+
if (vid_1) {
|
|
22676
22713
|
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
22677
22714
|
if (variant) {
|
|
22678
22715
|
productDetail.selectedVariantValues = variant.variantValues;
|
|
22679
|
-
hasVid = true;
|
|
22680
22716
|
}
|
|
22681
22717
|
}
|
|
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
22718
|
}
|
|
22705
22719
|
return {
|
|
22706
22720
|
"@context": "https://schema.org/",
|
|
@@ -23421,24 +23435,60 @@ var Page$1 = function (_a) {
|
|
|
23421
23435
|
};
|
|
23422
23436
|
var index$1 = observer(Page$1);
|
|
23423
23437
|
var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
23424
|
-
var metaData, targetTypes,
|
|
23425
|
-
return __generator(this, function (
|
|
23426
|
-
switch (
|
|
23438
|
+
var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
|
|
23439
|
+
return __generator(this, function (_b) {
|
|
23440
|
+
switch (_b.label) {
|
|
23427
23441
|
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
|
|
23428
23442
|
case 1:
|
|
23429
|
-
metaData =
|
|
23443
|
+
metaData = _b.sent();
|
|
23430
23444
|
targetTypes = [
|
|
23431
23445
|
IkasHTMLMetaDataTargetType.BRAND,
|
|
23432
23446
|
IkasHTMLMetaDataTargetType.CATEGORY,
|
|
23433
|
-
IkasHTMLMetaDataTargetType.PRODUCT,
|
|
23434
23447
|
];
|
|
23435
|
-
|
|
23448
|
+
brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
|
|
23449
|
+
productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === IkasHTMLMetaDataTargetType.PRODUCT; });
|
|
23450
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
23451
|
+
idList: productMetaData.map(function (p) { return p.targetId; }),
|
|
23452
|
+
})];
|
|
23453
|
+
case 2:
|
|
23454
|
+
productsResponse = _b.sent();
|
|
23455
|
+
productParams = [];
|
|
23456
|
+
_loop_1 = function (product) {
|
|
23457
|
+
var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
|
|
23458
|
+
if (meta) {
|
|
23459
|
+
for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
23460
|
+
var variant = _a[_i];
|
|
23461
|
+
if (product.hasVariant) {
|
|
23462
|
+
var variantSlug = variant.variantValues
|
|
23463
|
+
.map(function (vv) { return vv.slug; })
|
|
23464
|
+
.join("-");
|
|
23465
|
+
productParams.push({
|
|
23466
|
+
slug: meta.slug + "-" + variantSlug,
|
|
23467
|
+
});
|
|
23468
|
+
}
|
|
23469
|
+
else {
|
|
23470
|
+
productParams.push({
|
|
23471
|
+
slug: meta.slug,
|
|
23472
|
+
});
|
|
23473
|
+
}
|
|
23474
|
+
}
|
|
23475
|
+
}
|
|
23476
|
+
};
|
|
23477
|
+
for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
|
|
23478
|
+
product = _a[_i];
|
|
23479
|
+
_loop_1(product);
|
|
23480
|
+
}
|
|
23436
23481
|
return [2 /*return*/, {
|
|
23437
|
-
paths:
|
|
23482
|
+
paths: brandCategoryMetaData
|
|
23483
|
+
.map(function (m) { return ({
|
|
23438
23484
|
params: {
|
|
23439
23485
|
slug: m.slug,
|
|
23486
|
+
originalSlug: m.slug,
|
|
23440
23487
|
},
|
|
23441
|
-
}); })
|
|
23488
|
+
}); })
|
|
23489
|
+
.concat(productParams.map(function (pp) { return ({
|
|
23490
|
+
params: pp,
|
|
23491
|
+
}); })),
|
|
23442
23492
|
fallback: "blocking",
|
|
23443
23493
|
}];
|
|
23444
23494
|
}
|
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,85 @@ 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, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
|
|
11486
|
+
var _this = this;
|
|
11487
|
+
return __generator(this, function (_c) {
|
|
11488
|
+
switch (_c.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 = _c.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 = _c.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
|
+
variantSlugs = variantSlugPart.split("-");
|
|
11531
|
+
for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
11532
|
+
variant = _a[_i];
|
|
11533
|
+
isSelectedVariant = true;
|
|
11534
|
+
_loop_1 = function (variantSlug) {
|
|
11535
|
+
if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
|
|
11536
|
+
isSelectedVariant = false;
|
|
11537
|
+
return "break";
|
|
11538
|
+
}
|
|
11539
|
+
};
|
|
11540
|
+
for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
|
|
11541
|
+
variantSlug = variantSlugs_1[_b];
|
|
11542
|
+
state_1 = _loop_1(variantSlug);
|
|
11543
|
+
if (state_1 === "break")
|
|
11544
|
+
break;
|
|
11545
|
+
}
|
|
11546
|
+
if (isSelectedVariant) {
|
|
11547
|
+
selectedVariantValues = variant.variantValues;
|
|
11548
|
+
break;
|
|
11549
|
+
}
|
|
11550
|
+
}
|
|
11551
|
+
}
|
|
11552
|
+
this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
|
|
11553
|
+
? selectedVariantValues
|
|
11554
|
+
: product.variants[0].variantValues, true);
|
|
11555
|
+
this.pageType = exports.IkasThemePageType.PRODUCT;
|
|
11556
|
+
this.setPageMetaData(metaDataResponse.metaData);
|
|
11557
|
+
return [2 /*return*/];
|
|
11558
|
+
}
|
|
11559
|
+
});
|
|
11560
|
+
});
|
|
11561
|
+
};
|
|
11499
11562
|
IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
|
|
11500
11563
|
return __awaiter(this, void 0, void 0, function () {
|
|
11501
11564
|
var component, result, setPageComponentPropValue;
|
|
@@ -11660,44 +11723,17 @@ var IkasPageDataProvider = /** @class */ (function () {
|
|
|
11660
11723
|
var usePageData = propValue.usePageData;
|
|
11661
11724
|
var _propValue = propValue;
|
|
11662
11725
|
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; });
|
|
11726
|
+
if (isBrowser) {
|
|
11727
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
11728
|
+
var vid_1 = urlParams.get("vid");
|
|
11729
|
+
if (vid_1) {
|
|
11730
|
+
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
11671
11731
|
if (variant) {
|
|
11672
|
-
selectedVariantValues = variant.variantValues;
|
|
11673
|
-
hasVid = true;
|
|
11732
|
+
productDetail.selectedVariantValues = variant.variantValues;
|
|
11674
11733
|
}
|
|
11675
11734
|
}
|
|
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
11735
|
}
|
|
11700
|
-
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
|
|
11736
|
+
pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
|
|
11701
11737
|
};
|
|
11702
11738
|
IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
|
|
11703
11739
|
if (Array.isArray(propValue)) {
|
|
@@ -13591,17 +13627,13 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13591
13627
|
});
|
|
13592
13628
|
Object.defineProperty(IkasProductDetail.prototype, "href", {
|
|
13593
13629
|
get: function () {
|
|
13594
|
-
var _this = this;
|
|
13595
13630
|
var metaData = this.product.metaData;
|
|
13596
13631
|
if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
|
|
13597
13632
|
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);
|
|
13633
|
+
if (this.product.hasVariant) {
|
|
13634
|
+
return "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13635
|
+
.map(function (vv) { return vv.slug; })
|
|
13636
|
+
.join("-");
|
|
13605
13637
|
}
|
|
13606
13638
|
return "/" + metaData.slug;
|
|
13607
13639
|
},
|
|
@@ -13610,12 +13642,18 @@ var IkasProductDetail = /** @class */ (function () {
|
|
|
13610
13642
|
});
|
|
13611
13643
|
IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
|
|
13612
13644
|
var _a;
|
|
13613
|
-
|
|
13645
|
+
var metaData = this.product.metaData;
|
|
13646
|
+
var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
|
|
13614
13647
|
if (vv.variantTypeId === variantValue.variantTypeId)
|
|
13615
13648
|
return variantValue;
|
|
13616
13649
|
return vv;
|
|
13617
13650
|
});
|
|
13618
|
-
|
|
13651
|
+
this.selectedVariantValues = selectedVariantValues;
|
|
13652
|
+
var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
|
|
13653
|
+
.map(function (vv) { return vv.slug; })
|
|
13654
|
+
.join("-");
|
|
13655
|
+
var isShallow = process.env.NODE_ENV !== "production";
|
|
13656
|
+
(_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
|
|
13619
13657
|
};
|
|
13620
13658
|
return IkasProductDetail;
|
|
13621
13659
|
}());
|
|
@@ -22653,38 +22691,14 @@ function createProductSchema(pageSpecificDataStr) {
|
|
|
22653
22691
|
var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
|
|
22654
22692
|
var isBrowser = typeof window !== "undefined";
|
|
22655
22693
|
if (isBrowser) {
|
|
22656
|
-
var
|
|
22657
|
-
var vid_1 =
|
|
22658
|
-
|
|
22659
|
-
if (vid_1 && typeof vid_1 === "string") {
|
|
22694
|
+
var urlParams = new URLSearchParams(window.location.search);
|
|
22695
|
+
var vid_1 = urlParams.get("vid");
|
|
22696
|
+
if (vid_1) {
|
|
22660
22697
|
var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
|
|
22661
22698
|
if (variant) {
|
|
22662
22699
|
productDetail.selectedVariantValues = variant.variantValues;
|
|
22663
|
-
hasVid = true;
|
|
22664
22700
|
}
|
|
22665
22701
|
}
|
|
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
22702
|
}
|
|
22689
22703
|
return {
|
|
22690
22704
|
"@context": "https://schema.org/",
|
|
@@ -23405,24 +23419,60 @@ var Page$1 = function (_a) {
|
|
|
23405
23419
|
};
|
|
23406
23420
|
var index$1 = mobxReactLite.observer(Page$1);
|
|
23407
23421
|
var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
23408
|
-
var metaData, targetTypes,
|
|
23409
|
-
return __generator(this, function (
|
|
23410
|
-
switch (
|
|
23422
|
+
var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
|
|
23423
|
+
return __generator(this, function (_b) {
|
|
23424
|
+
switch (_b.label) {
|
|
23411
23425
|
case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
|
|
23412
23426
|
case 1:
|
|
23413
|
-
metaData =
|
|
23427
|
+
metaData = _b.sent();
|
|
23414
23428
|
targetTypes = [
|
|
23415
23429
|
exports.IkasHTMLMetaDataTargetType.BRAND,
|
|
23416
23430
|
exports.IkasHTMLMetaDataTargetType.CATEGORY,
|
|
23417
|
-
exports.IkasHTMLMetaDataTargetType.PRODUCT,
|
|
23418
23431
|
];
|
|
23419
|
-
|
|
23432
|
+
brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
|
|
23433
|
+
productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === exports.IkasHTMLMetaDataTargetType.PRODUCT; });
|
|
23434
|
+
return [4 /*yield*/, IkasProductAPI.listProducts({
|
|
23435
|
+
idList: productMetaData.map(function (p) { return p.targetId; }),
|
|
23436
|
+
})];
|
|
23437
|
+
case 2:
|
|
23438
|
+
productsResponse = _b.sent();
|
|
23439
|
+
productParams = [];
|
|
23440
|
+
_loop_1 = function (product) {
|
|
23441
|
+
var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
|
|
23442
|
+
if (meta) {
|
|
23443
|
+
for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
|
|
23444
|
+
var variant = _a[_i];
|
|
23445
|
+
if (product.hasVariant) {
|
|
23446
|
+
var variantSlug = variant.variantValues
|
|
23447
|
+
.map(function (vv) { return vv.slug; })
|
|
23448
|
+
.join("-");
|
|
23449
|
+
productParams.push({
|
|
23450
|
+
slug: meta.slug + "-" + variantSlug,
|
|
23451
|
+
});
|
|
23452
|
+
}
|
|
23453
|
+
else {
|
|
23454
|
+
productParams.push({
|
|
23455
|
+
slug: meta.slug,
|
|
23456
|
+
});
|
|
23457
|
+
}
|
|
23458
|
+
}
|
|
23459
|
+
}
|
|
23460
|
+
};
|
|
23461
|
+
for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
|
|
23462
|
+
product = _a[_i];
|
|
23463
|
+
_loop_1(product);
|
|
23464
|
+
}
|
|
23420
23465
|
return [2 /*return*/, {
|
|
23421
|
-
paths:
|
|
23466
|
+
paths: brandCategoryMetaData
|
|
23467
|
+
.map(function (m) { return ({
|
|
23422
23468
|
params: {
|
|
23423
23469
|
slug: m.slug,
|
|
23470
|
+
originalSlug: m.slug,
|
|
23424
23471
|
},
|
|
23425
|
-
}); })
|
|
23472
|
+
}); })
|
|
23473
|
+
.concat(productParams.map(function (pp) { return ({
|
|
23474
|
+
params: pp,
|
|
23475
|
+
}); })),
|
|
23426
23476
|
fallback: "blocking",
|
|
23427
23477
|
}];
|
|
23428
23478
|
}
|
|
@@ -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;
|