@ikas/storefront 0.0.31 → 0.0.32

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, _a;
11390
+ var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleProductPage, _a;
11391
11391
  var _this = this;
11392
11392
  return __generator(this, function (_b) {
11393
11393
  switch (_b.label) {
@@ -11404,7 +11404,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11404
11404
  case 1:
11405
11405
  metaDataList = _b.sent();
11406
11406
  if (!metaDataList || !metaDataList.length) {
11407
- return [2 /*return*/, this.getPageSpecificProduct()];
11407
+ return [2 /*return*/];
11408
11408
  }
11409
11409
  metaData = metaDataList[0];
11410
11410
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -11445,6 +11445,25 @@ var IkasPageDataProvider = /** @class */ (function () {
11445
11445
  }
11446
11446
  });
11447
11447
  }); };
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
+ }); };
11448
11467
  _a = metaData.targetType;
11449
11468
  switch (_a) {
11450
11469
  case IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
@@ -11456,7 +11475,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11456
11475
  case 3: return [2 /*return*/, _b.sent()];
11457
11476
  case 4: return [4 /*yield*/, handleCategoryPage()];
11458
11477
  case 5: return [2 /*return*/, _b.sent()];
11459
- case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
11478
+ case 6: return [4 /*yield*/, handleProductPage()];
11460
11479
  case 7: return [2 /*return*/, _b.sent()];
11461
11480
  case 8: return [3 /*break*/, 9];
11462
11481
  case 9: return [2 /*return*/];
@@ -11464,82 +11483,6 @@ var IkasPageDataProvider = /** @class */ (function () {
11464
11483
  });
11465
11484
  });
11466
11485
  };
11467
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
11468
- return __awaiter(this, void 0, void 0, function () {
11469
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
11470
- var _this = this;
11471
- return __generator(this, function (_c) {
11472
- switch (_c.label) {
11473
- case 0:
11474
- slug = this.pageParams.slug;
11475
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
11476
- var metaDataList, splitParts, newSlug;
11477
- return __generator(this, function (_a) {
11478
- switch (_a.label) {
11479
- case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
11480
- case 1:
11481
- metaDataList = _a.sent();
11482
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
11483
- splitParts = slug.split("-");
11484
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
11485
- return [4 /*yield*/, getProductMetaData(newSlug)];
11486
- case 2: return [2 /*return*/, _a.sent()];
11487
- case 3: return [2 /*return*/, {
11488
- metaData: metaDataList[0],
11489
- slug: slug,
11490
- }];
11491
- }
11492
- });
11493
- }); };
11494
- return [4 /*yield*/, getProductMetaData(slug)];
11495
- case 1:
11496
- metaDataResponse = _c.sent();
11497
- if (!metaDataResponse)
11498
- return [2 /*return*/];
11499
- return [4 /*yield*/, IkasProductAPI.listProducts({
11500
- idList: [metaDataResponse.metaData.targetId],
11501
- })];
11502
- case 2:
11503
- productsResponse = _c.sent();
11504
- if (!productsResponse.products.length)
11505
- return [2 /*return*/];
11506
- product = productsResponse.products[0];
11507
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
11508
- selectedVariantValues = [];
11509
- if (!isMainProductSlug) {
11510
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
11511
- variantSlugs = variantSlugPart.split("-");
11512
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
11513
- variant = _a[_i];
11514
- isSelectedVariant = true;
11515
- _loop_1 = function (variantSlug) {
11516
- if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
11517
- isSelectedVariant = false;
11518
- return "break";
11519
- }
11520
- };
11521
- for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
11522
- variantSlug = variantSlugs_1[_b];
11523
- state_1 = _loop_1(variantSlug);
11524
- if (state_1 === "break")
11525
- break;
11526
- }
11527
- if (isSelectedVariant) {
11528
- selectedVariantValues = variant.variantValues;
11529
- break;
11530
- }
11531
- }
11532
- }
11533
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
11534
- ? selectedVariantValues
11535
- : product.variants[0].variantValues, true);
11536
- this.pageType = IkasThemePageType.PRODUCT;
11537
- this.setPageMetaData(metaDataResponse.metaData);
11538
- return [2 /*return*/];
11539
- }
11540
- });
11541
- });
11542
- };
11543
11486
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
11544
11487
  return __awaiter(this, void 0, void 0, function () {
11545
11488
  var component, result, setPageComponentPropValue;
@@ -11704,17 +11647,44 @@ var IkasPageDataProvider = /** @class */ (function () {
11704
11647
  var usePageData = propValue.usePageData;
11705
11648
  var _propValue = propValue;
11706
11649
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
11707
- if (isBrowser) {
11708
- var urlParams = new URLSearchParams(window.location.search);
11709
- var vid_1 = urlParams.get("vid");
11710
- if (vid_1) {
11711
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
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; });
11712
11658
  if (variant) {
11713
- productDetail.selectedVariantValues = variant.variantValues;
11659
+ selectedVariantValues = variant.variantValues;
11660
+ hasVid = true;
11714
11661
  }
11715
11662
  }
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;
11716
11686
  }
11717
- pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
11687
+ pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
11718
11688
  };
11719
11689
  IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
11720
11690
  if (Array.isArray(propValue)) {
@@ -13635,13 +13605,17 @@ var IkasProductDetail = /** @class */ (function () {
13635
13605
  });
13636
13606
  Object.defineProperty(IkasProductDetail.prototype, "href", {
13637
13607
  get: function () {
13608
+ var _this = this;
13638
13609
  var metaData = this.product.metaData;
13639
13610
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
13640
13611
  return "";
13641
- if (this.product.hasVariant) {
13642
- return "/" + metaData.slug + "-" + this.selectedVariantValues
13643
- .map(function (vv) { return vv.slug; })
13644
- .join("-");
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);
13645
13619
  }
13646
13620
  return "/" + metaData.slug;
13647
13621
  },
@@ -13650,18 +13624,12 @@ var IkasProductDetail = /** @class */ (function () {
13650
13624
  });
13651
13625
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
13652
13626
  var _a;
13653
- var metaData = this.product.metaData;
13654
- var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13627
+ this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13655
13628
  if (vv.variantTypeId === variantValue.variantTypeId)
13656
13629
  return variantValue;
13657
13630
  return vv;
13658
13631
  });
13659
- this.selectedVariantValues = selectedVariantValues;
13660
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
13661
- .map(function (vv) { return vv.slug; })
13662
- .join("-");
13663
- var isShallow = process.env.NODE_ENV !== "production";
13664
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
13632
+ (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
13665
13633
  };
13666
13634
  return IkasProductDetail;
13667
13635
  }());
@@ -22701,14 +22669,38 @@ function createProductSchema(pageSpecificDataStr) {
22701
22669
  var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
22702
22670
  var isBrowser = typeof window !== "undefined";
22703
22671
  if (isBrowser) {
22704
- var urlParams = new URLSearchParams(window.location.search);
22705
- var vid_1 = urlParams.get("vid");
22706
- if (vid_1) {
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") {
22707
22676
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
22708
22677
  if (variant) {
22709
22678
  productDetail.selectedVariantValues = variant.variantValues;
22679
+ hasVid = true;
22710
22680
  }
22711
22681
  }
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
+ }
22712
22704
  }
22713
22705
  return {
22714
22706
  "@context": "https://schema.org/",
@@ -23429,60 +23421,24 @@ var Page$1 = function (_a) {
23429
23421
  };
23430
23422
  var index$1 = observer(Page$1);
23431
23423
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
23432
- var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
23433
- return __generator(this, function (_b) {
23434
- switch (_b.label) {
23424
+ var metaData, targetTypes, filteredMetaData;
23425
+ return __generator(this, function (_a) {
23426
+ switch (_a.label) {
23435
23427
  case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
23436
23428
  case 1:
23437
- metaData = _b.sent();
23429
+ metaData = _a.sent();
23438
23430
  targetTypes = [
23439
23431
  IkasHTMLMetaDataTargetType.BRAND,
23440
23432
  IkasHTMLMetaDataTargetType.CATEGORY,
23433
+ IkasHTMLMetaDataTargetType.PRODUCT,
23441
23434
  ];
23442
- brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23443
- productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === IkasHTMLMetaDataTargetType.PRODUCT; });
23444
- return [4 /*yield*/, IkasProductAPI.listProducts({
23445
- idList: productMetaData.map(function (p) { return p.targetId; }),
23446
- })];
23447
- case 2:
23448
- productsResponse = _b.sent();
23449
- productParams = [];
23450
- _loop_1 = function (product) {
23451
- var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
23452
- if (meta) {
23453
- for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
23454
- var variant = _a[_i];
23455
- if (product.hasVariant) {
23456
- var variantSlug = variant.variantValues
23457
- .map(function (vv) { return vv.slug; })
23458
- .join("-");
23459
- productParams.push({
23460
- slug: meta.slug + "-" + variantSlug,
23461
- });
23462
- }
23463
- else {
23464
- productParams.push({
23465
- slug: meta.slug,
23466
- });
23467
- }
23468
- }
23469
- }
23470
- };
23471
- for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
23472
- product = _a[_i];
23473
- _loop_1(product);
23474
- }
23435
+ filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23475
23436
  return [2 /*return*/, {
23476
- paths: brandCategoryMetaData
23477
- .map(function (m) { return ({
23437
+ paths: filteredMetaData.map(function (m) { return ({
23478
23438
  params: {
23479
23439
  slug: m.slug,
23480
- originalSlug: m.slug,
23481
23440
  },
23482
- }); })
23483
- .concat(productParams.map(function (pp) { return ({
23484
- params: pp,
23485
- }); })),
23441
+ }); }),
23486
23442
  fallback: "blocking",
23487
23443
  }];
23488
23444
  }
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, _a;
11403
+ var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleProductPage, _a;
11404
11404
  var _this = this;
11405
11405
  return __generator(this, function (_b) {
11406
11406
  switch (_b.label) {
@@ -11417,7 +11417,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11417
11417
  case 1:
11418
11418
  metaDataList = _b.sent();
11419
11419
  if (!metaDataList || !metaDataList.length) {
11420
- return [2 /*return*/, this.getPageSpecificProduct()];
11420
+ return [2 /*return*/];
11421
11421
  }
11422
11422
  metaData = metaDataList[0];
11423
11423
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -11458,6 +11458,25 @@ var IkasPageDataProvider = /** @class */ (function () {
11458
11458
  }
11459
11459
  });
11460
11460
  }); };
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
+ }); };
11461
11480
  _a = metaData.targetType;
11462
11481
  switch (_a) {
11463
11482
  case exports.IkasHTMLMetaDataTargetType.BRAND: return [3 /*break*/, 2];
@@ -11469,7 +11488,7 @@ var IkasPageDataProvider = /** @class */ (function () {
11469
11488
  case 3: return [2 /*return*/, _b.sent()];
11470
11489
  case 4: return [4 /*yield*/, handleCategoryPage()];
11471
11490
  case 5: return [2 /*return*/, _b.sent()];
11472
- case 6: return [4 /*yield*/, this.getPageSpecificProduct()];
11491
+ case 6: return [4 /*yield*/, handleProductPage()];
11473
11492
  case 7: return [2 /*return*/, _b.sent()];
11474
11493
  case 8: return [3 /*break*/, 9];
11475
11494
  case 9: return [2 /*return*/];
@@ -11477,82 +11496,6 @@ var IkasPageDataProvider = /** @class */ (function () {
11477
11496
  });
11478
11497
  });
11479
11498
  };
11480
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
11481
- return __awaiter(this, void 0, void 0, function () {
11482
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, variantSlugs, _i, _a, variant, isSelectedVariant, _loop_1, _b, variantSlugs_1, variantSlug, state_1;
11483
- var _this = this;
11484
- return __generator(this, function (_c) {
11485
- switch (_c.label) {
11486
- case 0:
11487
- slug = this.pageParams.slug;
11488
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
11489
- var metaDataList, splitParts, newSlug;
11490
- return __generator(this, function (_a) {
11491
- switch (_a.label) {
11492
- case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
11493
- case 1:
11494
- metaDataList = _a.sent();
11495
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
11496
- splitParts = slug.split("-");
11497
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
11498
- return [4 /*yield*/, getProductMetaData(newSlug)];
11499
- case 2: return [2 /*return*/, _a.sent()];
11500
- case 3: return [2 /*return*/, {
11501
- metaData: metaDataList[0],
11502
- slug: slug,
11503
- }];
11504
- }
11505
- });
11506
- }); };
11507
- return [4 /*yield*/, getProductMetaData(slug)];
11508
- case 1:
11509
- metaDataResponse = _c.sent();
11510
- if (!metaDataResponse)
11511
- return [2 /*return*/];
11512
- return [4 /*yield*/, IkasProductAPI.listProducts({
11513
- idList: [metaDataResponse.metaData.targetId],
11514
- })];
11515
- case 2:
11516
- productsResponse = _c.sent();
11517
- if (!productsResponse.products.length)
11518
- return [2 /*return*/];
11519
- product = productsResponse.products[0];
11520
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
11521
- selectedVariantValues = [];
11522
- if (!isMainProductSlug) {
11523
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
11524
- variantSlugs = variantSlugPart.split("-");
11525
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
11526
- variant = _a[_i];
11527
- isSelectedVariant = true;
11528
- _loop_1 = function (variantSlug) {
11529
- if (!variant.variantValues.some(function (vv) { return vv.slug === variantSlug; })) {
11530
- isSelectedVariant = false;
11531
- return "break";
11532
- }
11533
- };
11534
- for (_b = 0, variantSlugs_1 = variantSlugs; _b < variantSlugs_1.length; _b++) {
11535
- variantSlug = variantSlugs_1[_b];
11536
- state_1 = _loop_1(variantSlug);
11537
- if (state_1 === "break")
11538
- break;
11539
- }
11540
- if (isSelectedVariant) {
11541
- selectedVariantValues = variant.variantValues;
11542
- break;
11543
- }
11544
- }
11545
- }
11546
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
11547
- ? selectedVariantValues
11548
- : product.variants[0].variantValues, true);
11549
- this.pageType = exports.IkasThemePageType.PRODUCT;
11550
- this.setPageMetaData(metaDataResponse.metaData);
11551
- return [2 /*return*/];
11552
- }
11553
- });
11554
- });
11555
- };
11556
11499
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
11557
11500
  return __awaiter(this, void 0, void 0, function () {
11558
11501
  var component, result, setPageComponentPropValue;
@@ -11717,17 +11660,44 @@ var IkasPageDataProvider = /** @class */ (function () {
11717
11660
  var usePageData = propValue.usePageData;
11718
11661
  var _propValue = propValue;
11719
11662
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
11720
- if (isBrowser) {
11721
- var urlParams = new URLSearchParams(window.location.search);
11722
- var vid_1 = urlParams.get("vid");
11723
- if (vid_1) {
11724
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
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; });
11725
11671
  if (variant) {
11726
- productDetail.selectedVariantValues = variant.variantValues;
11672
+ selectedVariantValues = variant.variantValues;
11673
+ hasVid = true;
11727
11674
  }
11728
11675
  }
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;
11729
11699
  }
11730
- pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, usePageData, router);
11700
+ pageComponentPropValue.propValues[prop.name] = new IkasProductDetail(productDetail.product, selectedVariantValues, usePageData, router);
11731
11701
  };
11732
11702
  IkasPageDataProvider.initLinkPropValue = function (prop, propValue, pageComponentPropValue) {
11733
11703
  if (Array.isArray(propValue)) {
@@ -13621,13 +13591,17 @@ var IkasProductDetail = /** @class */ (function () {
13621
13591
  });
13622
13592
  Object.defineProperty(IkasProductDetail.prototype, "href", {
13623
13593
  get: function () {
13594
+ var _this = this;
13624
13595
  var metaData = this.product.metaData;
13625
13596
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
13626
13597
  return "";
13627
- if (this.product.hasVariant) {
13628
- return "/" + metaData.slug + "-" + this.selectedVariantValues
13629
- .map(function (vv) { return vv.slug; })
13630
- .join("-");
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);
13631
13605
  }
13632
13606
  return "/" + metaData.slug;
13633
13607
  },
@@ -13636,18 +13610,12 @@ var IkasProductDetail = /** @class */ (function () {
13636
13610
  });
13637
13611
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
13638
13612
  var _a;
13639
- var metaData = this.product.metaData;
13640
- var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13613
+ this.selectedVariantValues = this.selectedVariantValues.map(function (vv) {
13641
13614
  if (vv.variantTypeId === variantValue.variantTypeId)
13642
13615
  return variantValue;
13643
13616
  return vv;
13644
13617
  });
13645
- this.selectedVariantValues = selectedVariantValues;
13646
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
13647
- .map(function (vv) { return vv.slug; })
13648
- .join("-");
13649
- var isShallow = process.env.NODE_ENV !== "production";
13650
- (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(newUrl, undefined, { shallow: isShallow });
13618
+ (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(this.href, undefined, { shallow: true });
13651
13619
  };
13652
13620
  return IkasProductDetail;
13653
13621
  }());
@@ -22685,14 +22653,38 @@ function createProductSchema(pageSpecificDataStr) {
22685
22653
  var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
22686
22654
  var isBrowser = typeof window !== "undefined";
22687
22655
  if (isBrowser) {
22688
- var urlParams = new URLSearchParams(window.location.search);
22689
- var vid_1 = urlParams.get("vid");
22690
- if (vid_1) {
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") {
22691
22660
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
22692
22661
  if (variant) {
22693
22662
  productDetail.selectedVariantValues = variant.variantValues;
22663
+ hasVid = true;
22694
22664
  }
22695
22665
  }
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
+ }
22696
22688
  }
22697
22689
  return {
22698
22690
  "@context": "https://schema.org/",
@@ -23413,60 +23405,24 @@ var Page$1 = function (_a) {
23413
23405
  };
23414
23406
  var index$1 = mobxReactLite.observer(Page$1);
23415
23407
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
23416
- var metaData, targetTypes, brandCategoryMetaData, productMetaData, productsResponse, productParams, _loop_1, _i, _a, product;
23417
- return __generator(this, function (_b) {
23418
- switch (_b.label) {
23408
+ var metaData, targetTypes, filteredMetaData;
23409
+ return __generator(this, function (_a) {
23410
+ switch (_a.label) {
23419
23411
  case 0: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData()];
23420
23412
  case 1:
23421
- metaData = _b.sent();
23413
+ metaData = _a.sent();
23422
23414
  targetTypes = [
23423
23415
  exports.IkasHTMLMetaDataTargetType.BRAND,
23424
23416
  exports.IkasHTMLMetaDataTargetType.CATEGORY,
23417
+ exports.IkasHTMLMetaDataTargetType.PRODUCT,
23425
23418
  ];
23426
- brandCategoryMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23427
- productMetaData = metaData.filter(function (m) { return m.targetType && m.targetType === exports.IkasHTMLMetaDataTargetType.PRODUCT; });
23428
- return [4 /*yield*/, IkasProductAPI.listProducts({
23429
- idList: productMetaData.map(function (p) { return p.targetId; }),
23430
- })];
23431
- case 2:
23432
- productsResponse = _b.sent();
23433
- productParams = [];
23434
- _loop_1 = function (product) {
23435
- var meta = productMetaData.find(function (pm) { return pm.targetId === product.id; });
23436
- if (meta) {
23437
- for (var _i = 0, _a = product.variants; _i < _a.length; _i++) {
23438
- var variant = _a[_i];
23439
- if (product.hasVariant) {
23440
- var variantSlug = variant.variantValues
23441
- .map(function (vv) { return vv.slug; })
23442
- .join("-");
23443
- productParams.push({
23444
- slug: meta.slug + "-" + variantSlug,
23445
- });
23446
- }
23447
- else {
23448
- productParams.push({
23449
- slug: meta.slug,
23450
- });
23451
- }
23452
- }
23453
- }
23454
- };
23455
- for (_i = 0, _a = productsResponse.products; _i < _a.length; _i++) {
23456
- product = _a[_i];
23457
- _loop_1(product);
23458
- }
23419
+ filteredMetaData = metaData.filter(function (m) { return m.targetType && targetTypes.includes(m.targetType); });
23459
23420
  return [2 /*return*/, {
23460
- paths: brandCategoryMetaData
23461
- .map(function (m) { return ({
23421
+ paths: filteredMetaData.map(function (m) { return ({
23462
23422
  params: {
23463
23423
  slug: m.slug,
23464
- originalSlug: m.slug,
23465
23424
  },
23466
- }); })
23467
- .concat(productParams.map(function (pp) { return ({
23468
- params: pp,
23469
- }); })),
23425
+ }); }),
23470
23426
  fallback: "blocking",
23471
23427
  }];
23472
23428
  }
@@ -17,7 +17,6 @@ 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>;
21
20
  getPageComponentPropValues(pageComponent: IkasThemePageComponent): Promise<IkasPageComponentPropValue>;
22
21
  getPageComponentPropValue(pageComponent: IkasThemePageComponent, prop: IkasThemeComponentProp): Promise<any>;
23
22
  private setPageMetaData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.31",
3
+ "version": "0.0.32",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",