@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 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, handleProductPage, _a;
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*/, handleProductPage()];
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
- var product = productDetail.product;
11651
- var selectedVariantValues = [];
11652
- if (usePageData && isBrowser) {
11653
- var urlParams_1 = new URLSearchParams(window.location.search);
11654
- var vid_1 = urlParams_1.get("vid");
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 && typeof window !== "undefined") {
13613
- var queryParams_1 = {};
13614
- this.selectedVariantValues.forEach(function (vv) {
13615
- var vt = _this.product.variantTypes.find(function (vt) { return vt.variantType.id === vv.variantTypeId; });
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
- this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
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
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
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 urlParams_1 = new URLSearchParams(window.location.search);
22673
- var vid_1 = urlParams_1.get("vid");
22674
- var hasVid = false;
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, filteredMetaData;
23425
- return __generator(this, function (_a) {
23426
- switch (_a.label) {
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 = _a.sent();
23431
+ metaData = _b.sent();
23430
23432
  targetTypes = [
23431
23433
  IkasHTMLMetaDataTargetType.BRAND,
23432
23434
  IkasHTMLMetaDataTargetType.CATEGORY,
23433
- IkasHTMLMetaDataTargetType.PRODUCT,
23434
23435
  ];
23435
- filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
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: filteredMetaData.map(function (m) { return ({
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, handleProductPage, _a;
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*/, handleProductPage()];
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
- var product = productDetail.product;
11664
- var selectedVariantValues = [];
11665
- if (usePageData && isBrowser) {
11666
- var urlParams_1 = new URLSearchParams(window.location.search);
11667
- var vid_1 = urlParams_1.get("vid");
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 && typeof window !== "undefined") {
13599
- var queryParams_1 = {};
13600
- this.selectedVariantValues.forEach(function (vv) {
13601
- var vt = _this.product.variantTypes.find(function (vt) { return vt.variantType.id === vv.variantTypeId; });
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
- this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
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
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
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 urlParams_1 = new URLSearchParams(window.location.search);
22657
- var vid_1 = urlParams_1.get("vid");
22658
- var hasVid = false;
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, filteredMetaData;
23409
- return __generator(this, function (_a) {
23410
- switch (_a.label) {
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 = _a.sent();
23415
+ metaData = _b.sent();
23414
23416
  targetTypes = [
23415
23417
  exports.IkasHTMLMetaDataTargetType.BRAND,
23416
23418
  exports.IkasHTMLMetaDataTargetType.CATEGORY,
23417
- exports.IkasHTMLMetaDataTargetType.PRODUCT,
23418
23419
  ];
23419
- filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
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: filteredMetaData.map(function (m) { return ({
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",