@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 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,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
- 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; });
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 && 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);
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
- this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
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
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
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 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") {
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, filteredMetaData;
23425
- return __generator(this, function (_a) {
23426
- switch (_a.label) {
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 = _a.sent();
23443
+ metaData = _b.sent();
23430
23444
  targetTypes = [
23431
23445
  IkasHTMLMetaDataTargetType.BRAND,
23432
23446
  IkasHTMLMetaDataTargetType.CATEGORY,
23433
- IkasHTMLMetaDataTargetType.PRODUCT,
23434
23447
  ];
23435
- filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
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: filteredMetaData.map(function (m) { return ({
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, 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,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
- 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; });
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 && 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);
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
- this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
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
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
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 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") {
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, filteredMetaData;
23409
- return __generator(this, function (_a) {
23410
- switch (_a.label) {
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 = _a.sent();
23427
+ metaData = _b.sent();
23414
23428
  targetTypes = [
23415
23429
  exports.IkasHTMLMetaDataTargetType.BRAND,
23416
23430
  exports.IkasHTMLMetaDataTargetType.CATEGORY,
23417
- exports.IkasHTMLMetaDataTargetType.PRODUCT,
23418
23431
  ];
23419
- filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
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: filteredMetaData.map(function (m) { return ({
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.32",
3
+ "version": "0.0.33",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",