@ikas/storefront 0.0.165-alpha.2 → 0.0.165-alpha.4

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
@@ -3,6 +3,7 @@ import fs from 'fs';
3
3
  import path$1 from 'path';
4
4
  import getConfig from 'next/config';
5
5
  import React, { createElement, Fragment as Fragment$1, useEffect, useState, useRef, useCallback, useMemo } from 'react';
6
+ import Script from 'next/script';
6
7
  import { observer } from 'mobx-react-lite';
7
8
  import Head from 'next/head';
8
9
  import { useRouter } from 'next/router';
@@ -24236,19 +24237,23 @@ var AnalyticsHead = function (_a) {
24236
24237
  __html: "dataLayer = [{'gtm.blocklist': ['html']}];",
24237
24238
  } })),
24238
24239
  gtmId && (createElement("script", { dangerouslySetInnerHTML: {
24239
- __html: "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','" + gtmId + "');",
24240
+ __html: "(function(w,l){" +
24241
+ "w[l] = w[l] || [];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});" +
24242
+ "})(window,'dataLayer');",
24240
24243
  } })),
24241
24244
  fbpId && (createElement("script", { dangerouslySetInnerHTML: {
24242
- __html: "!function(f,b,e,v,n,t,s)\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];t=b.createElement(e);t.async=!0;\n t.src=v;s=b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t,s)}(window, document,'script',\n 'https://connect.facebook.net/en_US/fbevents.js');\n fbq('init', '" + fbpId + "');\n fbq('track', 'PageView');",
24245
+ __html: "!function(f,b,e,v,n,t,s)\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];}(window);\n fbq('init', '" + fbpId + "');\n fbq('track', 'PageView');",
24243
24246
  } }))));
24244
24247
  };
24245
24248
  var AnalyticsBody = function () {
24246
24249
  var gtmId = IkasStorefrontConfig.gtmId;
24247
24250
  var fbpId = IkasStorefrontConfig.fbpId;
24248
24251
  return (createElement(Fragment$1, null,
24252
+ gtmId && (createElement(Script, { src: "https://www.googletagmanager.com/gtm.js?id=" + gtmId })),
24249
24253
  gtmId && (createElement("noscript", { dangerouslySetInnerHTML: {
24250
24254
  __html: "<iframe src=\"https://www.googletagmanager.com/ns.html?id=" + gtmId + "\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>",
24251
24255
  } })),
24256
+ fbpId && (createElement(Script, { src: "https://connect.facebook.net/en_US/fbevents.js" })),
24252
24257
  fbpId && (createElement("noscript", { dangerouslySetInnerHTML: {
24253
24258
  __html: "<img height=\"1\" width=\"1\" style=\"display:none\" \n src=\"https://www.facebook.com/tr?id=" + fbpId + "&ev=PageView&noscript=1\"/>",
24254
24259
  } }))));
@@ -27633,11 +27638,6 @@ var IkasProductDetail = /** @class */ (function () {
27633
27638
  var metaData = this.product.metaData;
27634
27639
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
27635
27640
  return "";
27636
- if (this.product.hasVariant) {
27637
- return "/" + metaData.slug + "-" + this.selectedVariantValues
27638
- .map(function (vv) { return vv.slug; })
27639
- .join("-");
27640
- }
27641
27641
  return "/" + metaData.slug;
27642
27642
  },
27643
27643
  enumerable: false,
@@ -27685,6 +27685,7 @@ var IkasProductDetail = /** @class */ (function () {
27685
27685
  configurable: true
27686
27686
  });
27687
27687
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
27688
+ var _this = this;
27688
27689
  var _a;
27689
27690
  var metaData = this.product.metaData;
27690
27691
  var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
@@ -27693,9 +27694,18 @@ var IkasProductDetail = /** @class */ (function () {
27693
27694
  return vv;
27694
27695
  });
27695
27696
  this.selectedVariantValues = selectedVariantValues;
27696
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
27697
- .map(function (vv) { return vv.slug; })
27698
- .join("-");
27697
+ var variantParams = this.product.variantTypes
27698
+ .map(function (pvt) {
27699
+ var vt = pvt.variantType;
27700
+ var selectedVariant = vt.values.find(function (vv) {
27701
+ return _this.selectedVariantValues.some(function (svv) { return svv.id === vv.id; });
27702
+ });
27703
+ if (selectedVariant)
27704
+ return vt.slug + "=" + selectedVariant.slug;
27705
+ })
27706
+ .filter(function (param) { return !!param; })
27707
+ .join("&");
27708
+ var newUrl = "/" + metaData.slug + "?" + variantParams;
27699
27709
  if (newUrl === window.location.pathname)
27700
27710
  return;
27701
27711
  var isShallow = process.env.NODE_ENV !== "production";
@@ -33275,16 +33285,6 @@ function createProductSchema(productDetail) {
33275
33285
  var _a, _b;
33276
33286
  try {
33277
33287
  var isBrowser = typeof window !== "undefined";
33278
- if (isBrowser) {
33279
- var urlParams = new URLSearchParams(window.location.search);
33280
- var vid_1 = urlParams.get("vid");
33281
- if (vid_1) {
33282
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
33283
- if (variant) {
33284
- productDetail.selectedVariantValues = variant.variantValues;
33285
- }
33286
- }
33287
- }
33288
33288
  var productUrl = isBrowser
33289
33289
  ? "https://" + window.location.hostname + productDetail.href
33290
33290
  : "";
@@ -33550,7 +33550,7 @@ var IkasPageDataProvider = /** @class */ (function () {
33550
33550
  IkasPageDataProvider.prototype.getPageSpecificData = function () {
33551
33551
  var _a, _b;
33552
33552
  return __awaiter(this, void 0, void 0, function () {
33553
- var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleBlogPage, handleBlogCategoryPage, _c;
33553
+ var slug, metaDataList, metaData, handleProductPage, handleBrandPage, handleCategoryPage, handleBlogPage, handleBlogCategoryPage, _c;
33554
33554
  var _this = this;
33555
33555
  return __generator(this, function (_d) {
33556
33556
  switch (_d.label) {
@@ -33579,12 +33579,47 @@ var IkasPageDataProvider = /** @class */ (function () {
33579
33579
  case 2: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
33580
33580
  case 3:
33581
33581
  metaDataList = _d.sent();
33582
- if (!metaDataList || !metaDataList.length) {
33583
- return [2 /*return*/, this.getPageSpecificProduct()];
33584
- }
33582
+ if (!metaDataList || !metaDataList.length)
33583
+ return [2 /*return*/];
33585
33584
  _d.label = 4;
33586
33585
  case 4:
33587
33586
  metaData = metaDataList[0];
33587
+ if (!metaData.targetId)
33588
+ return [2 /*return*/];
33589
+ handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
33590
+ var productsResponse, product, displayedVariantType, inStockVariant;
33591
+ return __generator(this, function (_a) {
33592
+ switch (_a.label) {
33593
+ case 0: return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
33594
+ productIdList: [metaData.targetId],
33595
+ priceListId: IkasStorefrontConfig.priceListId,
33596
+ salesChannelId: IkasStorefrontConfig.salesChannelId,
33597
+ })];
33598
+ case 1:
33599
+ productsResponse = _a.sent();
33600
+ if (!(productsResponse === null || productsResponse === void 0 ? void 0 : productsResponse.data.length)) {
33601
+ return [2 /*return*/];
33602
+ }
33603
+ product = productsResponse.data[0];
33604
+ this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues);
33605
+ // Select the first displayed in stock variant
33606
+ if (this.pageSpecificData.displayedVariantTypes.length) {
33607
+ displayedVariantType = this
33608
+ .pageSpecificData.displayedVariantTypes[0];
33609
+ if (displayedVariantType.displayedVariantValues.length) {
33610
+ inStockVariant = displayedVariantType.displayedVariantValues.find(function (dvv) { return dvv.hasStock; });
33611
+ if (inStockVariant) {
33612
+ this.pageSpecificData.selectedVariantValues =
33613
+ inStockVariant.variant.variantValues;
33614
+ }
33615
+ }
33616
+ }
33617
+ this.pageType = IkasThemePageType.PRODUCT;
33618
+ this.setPageMetaData(metaData);
33619
+ return [2 /*return*/];
33620
+ }
33621
+ });
33622
+ }); };
33588
33623
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
33589
33624
  var brandsResponse, brand;
33590
33625
  return __generator(this, function (_a) {
@@ -33676,7 +33711,7 @@ var IkasPageDataProvider = /** @class */ (function () {
33676
33711
  case 6: return [2 /*return*/, _d.sent()];
33677
33712
  case 7: return [4 /*yield*/, handleCategoryPage()];
33678
33713
  case 8: return [2 /*return*/, _d.sent()];
33679
- case 9: return [4 /*yield*/, this.getPageSpecificProduct()];
33714
+ case 9: return [4 /*yield*/, handleProductPage()];
33680
33715
  case 10: return [2 /*return*/, _d.sent()];
33681
33716
  case 11: return [4 /*yield*/, handleBlogPage()];
33682
33717
  case 12: return [2 /*return*/, _d.sent()];
@@ -33688,91 +33723,6 @@ var IkasPageDataProvider = /** @class */ (function () {
33688
33723
  });
33689
33724
  });
33690
33725
  };
33691
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
33692
- return __awaiter(this, void 0, void 0, function () {
33693
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, _i, _a, variant, values, slugPart, displayedVariantType, inStockVariant;
33694
- var _this = this;
33695
- return __generator(this, function (_b) {
33696
- switch (_b.label) {
33697
- case 0:
33698
- slug = this.pageParams.slug;
33699
- if (!slug) {
33700
- console.log("Slug not found for getPageSpecificProduct");
33701
- }
33702
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
33703
- var metaDataList, splitParts, newSlug;
33704
- return __generator(this, function (_a) {
33705
- switch (_a.label) {
33706
- case 0:
33707
- if (!slug)
33708
- return [2 /*return*/];
33709
- return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
33710
- case 1:
33711
- metaDataList = _a.sent();
33712
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
33713
- splitParts = slug.split("-");
33714
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
33715
- return [4 /*yield*/, getProductMetaData(newSlug)];
33716
- case 2: return [2 /*return*/, _a.sent()];
33717
- case 3: return [2 /*return*/, {
33718
- metaData: metaDataList[0],
33719
- slug: slug,
33720
- }];
33721
- }
33722
- });
33723
- }); };
33724
- return [4 /*yield*/, getProductMetaData(slug)];
33725
- case 1:
33726
- metaDataResponse = _b.sent();
33727
- if (!metaDataResponse)
33728
- return [2 /*return*/];
33729
- return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
33730
- productIdList: [metaDataResponse.metaData.targetId],
33731
- priceListId: IkasStorefrontConfig.priceListId,
33732
- salesChannelId: IkasStorefrontConfig.salesChannelId,
33733
- })];
33734
- case 2:
33735
- productsResponse = _b.sent();
33736
- if (!(productsResponse === null || productsResponse === void 0 ? void 0 : productsResponse.data.length))
33737
- return [2 /*return*/];
33738
- product = productsResponse.data[0];
33739
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
33740
- selectedVariantValues = [];
33741
- if (!isMainProductSlug) {
33742
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
33743
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
33744
- variant = _a[_i];
33745
- values = variant.variantValues;
33746
- slugPart = values.map(function (vv) { return vv.slug; }).join("-");
33747
- if (slugPart === variantSlugPart) {
33748
- selectedVariantValues = values;
33749
- break;
33750
- }
33751
- }
33752
- }
33753
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
33754
- ? selectedVariantValues
33755
- : product.variants[0].variantValues);
33756
- // Select the first displayed in stock variant
33757
- if (!selectedVariantValues.length &&
33758
- this.pageSpecificData.displayedVariantTypes.length) {
33759
- displayedVariantType = this.pageSpecificData
33760
- .displayedVariantTypes[0];
33761
- if (displayedVariantType.displayedVariantValues.length) {
33762
- inStockVariant = displayedVariantType.displayedVariantValues.find(function (dvv) { return dvv.hasStock; });
33763
- if (inStockVariant) {
33764
- this.pageSpecificData.selectedVariantValues =
33765
- inStockVariant.variant.variantValues;
33766
- }
33767
- }
33768
- }
33769
- this.pageType = IkasThemePageType.PRODUCT;
33770
- this.setPageMetaData(metaDataResponse.metaData);
33771
- return [2 /*return*/];
33772
- }
33773
- });
33774
- });
33775
- };
33776
33726
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
33777
33727
  return __awaiter(this, void 0, void 0, function () {
33778
33728
  var component, result, setPageComponentPropValue;
@@ -34040,14 +33990,31 @@ var IkasPageDataProvider = /** @class */ (function () {
34040
33990
  var _propValue = propValue;
34041
33991
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
34042
33992
  if (isBrowser) {
34043
- var urlParams = new URLSearchParams(window.location.search);
34044
- var vid_1 = urlParams.get("vid");
33993
+ var urlParams_1 = new URLSearchParams(window.location.search);
33994
+ var vid_1 = urlParams_1.get("vid");
34045
33995
  if (vid_1) {
34046
33996
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
34047
33997
  if (variant) {
34048
33998
  productDetail.selectedVariantValues = variant.variantValues;
34049
33999
  }
34050
34000
  }
34001
+ else {
34002
+ var productVariantTypeSlugs = productDetail.product.variantTypes.map(function (vt) { return vt.variantType.slug; });
34003
+ var selectedVariantValues_1 = [];
34004
+ productVariantTypeSlugs.forEach(function (slug, vtIndex) {
34005
+ var productVariantType = productDetail.product.variantTypes[vtIndex];
34006
+ var variantValueSlug = urlParams_1.get(slug);
34007
+ if (variantValueSlug) {
34008
+ var variantValue = productVariantType.variantType.values.find(function (v) { return v.slug === variantValueSlug; });
34009
+ if (variantValue)
34010
+ selectedVariantValues_1.push(variantValue);
34011
+ }
34012
+ });
34013
+ if (selectedVariantValues_1.length ===
34014
+ productDetail.selectedVariantValues.length) {
34015
+ productDetail.selectedVariantValues = selectedVariantValues_1;
34016
+ }
34017
+ }
34051
34018
  }
34052
34019
  return new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, router);
34053
34020
  };
@@ -62315,21 +62282,6 @@ var Page$1 = function (_a) {
62315
62282
  var index$1 = observer(Page$1);
62316
62283
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
62317
62284
  return __generator(this, function (_a) {
62318
- // const targetTypes = [
62319
- // IkasHTMLMetaDataTargetType.BRAND,
62320
- // IkasHTMLMetaDataTargetType.CATEGORY,
62321
- // ];
62322
- // const metaData = await IkasHTMLMetaDataAPI.listHTMLMetaData(
62323
- // undefined,
62324
- // undefined,
62325
- // targetTypes
62326
- // );
62327
- // metaData.map((m) => ({
62328
- // params: {
62329
- // slug: m.slug,
62330
- // originalSlug: m.slug,
62331
- // },
62332
- // }))
62333
62285
  return [2 /*return*/, {
62334
62286
  paths: [],
62335
62287
  fallback: "blocking",
package/build/index.js CHANGED
@@ -7,6 +7,7 @@ var fs = require('fs');
7
7
  var path$1 = require('path');
8
8
  var getConfig = require('next/config');
9
9
  var React = require('react');
10
+ var Script = require('next/script');
10
11
  var mobxReactLite = require('mobx-react-lite');
11
12
  var Head = require('next/head');
12
13
  var router = require('next/router');
@@ -22,6 +23,7 @@ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
22
23
  var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
23
24
  var getConfig__default = /*#__PURE__*/_interopDefaultLegacy(getConfig);
24
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
+ var Script__default = /*#__PURE__*/_interopDefaultLegacy(Script);
25
27
  var Head__default = /*#__PURE__*/_interopDefaultLegacy(Head);
26
28
  var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto$1);
27
29
  var NextImage__default = /*#__PURE__*/_interopDefaultLegacy(NextImage);
@@ -24244,19 +24246,23 @@ var AnalyticsHead = function (_a) {
24244
24246
  __html: "dataLayer = [{'gtm.blocklist': ['html']}];",
24245
24247
  } })),
24246
24248
  gtmId && (React.createElement("script", { dangerouslySetInnerHTML: {
24247
- __html: "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','" + gtmId + "');",
24249
+ __html: "(function(w,l){" +
24250
+ "w[l] = w[l] || [];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});" +
24251
+ "})(window,'dataLayer');",
24248
24252
  } })),
24249
24253
  fbpId && (React.createElement("script", { dangerouslySetInnerHTML: {
24250
- __html: "!function(f,b,e,v,n,t,s)\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];t=b.createElement(e);t.async=!0;\n t.src=v;s=b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t,s)}(window, document,'script',\n 'https://connect.facebook.net/en_US/fbevents.js');\n fbq('init', '" + fbpId + "');\n fbq('track', 'PageView');",
24254
+ __html: "!function(f,b,e,v,n,t,s)\n {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n n.queue=[];}(window);\n fbq('init', '" + fbpId + "');\n fbq('track', 'PageView');",
24251
24255
  } }))));
24252
24256
  };
24253
24257
  var AnalyticsBody = function () {
24254
24258
  var gtmId = IkasStorefrontConfig.gtmId;
24255
24259
  var fbpId = IkasStorefrontConfig.fbpId;
24256
24260
  return (React.createElement(React.Fragment, null,
24261
+ gtmId && (React.createElement(Script__default['default'], { src: "https://www.googletagmanager.com/gtm.js?id=" + gtmId })),
24257
24262
  gtmId && (React.createElement("noscript", { dangerouslySetInnerHTML: {
24258
24263
  __html: "<iframe src=\"https://www.googletagmanager.com/ns.html?id=" + gtmId + "\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe>",
24259
24264
  } })),
24265
+ fbpId && (React.createElement(Script__default['default'], { src: "https://connect.facebook.net/en_US/fbevents.js" })),
24260
24266
  fbpId && (React.createElement("noscript", { dangerouslySetInnerHTML: {
24261
24267
  __html: "<img height=\"1\" width=\"1\" style=\"display:none\" \n src=\"https://www.facebook.com/tr?id=" + fbpId + "&ev=PageView&noscript=1\"/>",
24262
24268
  } }))));
@@ -27616,11 +27622,6 @@ var IkasProductDetail = /** @class */ (function () {
27616
27622
  var metaData = this.product.metaData;
27617
27623
  if (!(metaData === null || metaData === void 0 ? void 0 : metaData.slug))
27618
27624
  return "";
27619
- if (this.product.hasVariant) {
27620
- return "/" + metaData.slug + "-" + this.selectedVariantValues
27621
- .map(function (vv) { return vv.slug; })
27622
- .join("-");
27623
- }
27624
27625
  return "/" + metaData.slug;
27625
27626
  },
27626
27627
  enumerable: false,
@@ -27668,6 +27669,7 @@ var IkasProductDetail = /** @class */ (function () {
27668
27669
  configurable: true
27669
27670
  });
27670
27671
  IkasProductDetail.prototype.selectVariantValue = function (variantValue) {
27672
+ var _this = this;
27671
27673
  var _a;
27672
27674
  var metaData = this.product.metaData;
27673
27675
  var selectedVariantValues = this.selectedVariantValues.map(function (vv) {
@@ -27676,9 +27678,18 @@ var IkasProductDetail = /** @class */ (function () {
27676
27678
  return vv;
27677
27679
  });
27678
27680
  this.selectedVariantValues = selectedVariantValues;
27679
- var newUrl = "/" + metaData.slug + "-" + this.selectedVariantValues
27680
- .map(function (vv) { return vv.slug; })
27681
- .join("-");
27681
+ var variantParams = this.product.variantTypes
27682
+ .map(function (pvt) {
27683
+ var vt = pvt.variantType;
27684
+ var selectedVariant = vt.values.find(function (vv) {
27685
+ return _this.selectedVariantValues.some(function (svv) { return svv.id === vv.id; });
27686
+ });
27687
+ if (selectedVariant)
27688
+ return vt.slug + "=" + selectedVariant.slug;
27689
+ })
27690
+ .filter(function (param) { return !!param; })
27691
+ .join("&");
27692
+ var newUrl = "/" + metaData.slug + "?" + variantParams;
27682
27693
  if (newUrl === window.location.pathname)
27683
27694
  return;
27684
27695
  var isShallow = process.env.NODE_ENV !== "production";
@@ -33255,16 +33266,6 @@ function createProductSchema(productDetail) {
33255
33266
  var _a, _b;
33256
33267
  try {
33257
33268
  var isBrowser = typeof window !== "undefined";
33258
- if (isBrowser) {
33259
- var urlParams = new URLSearchParams(window.location.search);
33260
- var vid_1 = urlParams.get("vid");
33261
- if (vid_1) {
33262
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
33263
- if (variant) {
33264
- productDetail.selectedVariantValues = variant.variantValues;
33265
- }
33266
- }
33267
- }
33268
33269
  var productUrl = isBrowser
33269
33270
  ? "https://" + window.location.hostname + productDetail.href
33270
33271
  : "";
@@ -33530,7 +33531,7 @@ var IkasPageDataProvider = /** @class */ (function () {
33530
33531
  IkasPageDataProvider.prototype.getPageSpecificData = function () {
33531
33532
  var _a, _b;
33532
33533
  return __awaiter(this, void 0, void 0, function () {
33533
- var slug, metaDataList, metaData, handleBrandPage, handleCategoryPage, handleBlogPage, handleBlogCategoryPage, _c;
33534
+ var slug, metaDataList, metaData, handleProductPage, handleBrandPage, handleCategoryPage, handleBlogPage, handleBlogCategoryPage, _c;
33534
33535
  var _this = this;
33535
33536
  return __generator(this, function (_d) {
33536
33537
  switch (_d.label) {
@@ -33559,12 +33560,47 @@ var IkasPageDataProvider = /** @class */ (function () {
33559
33560
  case 2: return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
33560
33561
  case 3:
33561
33562
  metaDataList = _d.sent();
33562
- if (!metaDataList || !metaDataList.length) {
33563
- return [2 /*return*/, this.getPageSpecificProduct()];
33564
- }
33563
+ if (!metaDataList || !metaDataList.length)
33564
+ return [2 /*return*/];
33565
33565
  _d.label = 4;
33566
33566
  case 4:
33567
33567
  metaData = metaDataList[0];
33568
+ if (!metaData.targetId)
33569
+ return [2 /*return*/];
33570
+ handleProductPage = function () { return __awaiter(_this, void 0, void 0, function () {
33571
+ var productsResponse, product, displayedVariantType, inStockVariant;
33572
+ return __generator(this, function (_a) {
33573
+ switch (_a.label) {
33574
+ case 0: return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
33575
+ productIdList: [metaData.targetId],
33576
+ priceListId: IkasStorefrontConfig.priceListId,
33577
+ salesChannelId: IkasStorefrontConfig.salesChannelId,
33578
+ })];
33579
+ case 1:
33580
+ productsResponse = _a.sent();
33581
+ if (!(productsResponse === null || productsResponse === void 0 ? void 0 : productsResponse.data.length)) {
33582
+ return [2 /*return*/];
33583
+ }
33584
+ product = productsResponse.data[0];
33585
+ this.pageSpecificData = new IkasProductDetail(product, product.variants[0].variantValues);
33586
+ // Select the first displayed in stock variant
33587
+ if (this.pageSpecificData.displayedVariantTypes.length) {
33588
+ displayedVariantType = this
33589
+ .pageSpecificData.displayedVariantTypes[0];
33590
+ if (displayedVariantType.displayedVariantValues.length) {
33591
+ inStockVariant = displayedVariantType.displayedVariantValues.find(function (dvv) { return dvv.hasStock; });
33592
+ if (inStockVariant) {
33593
+ this.pageSpecificData.selectedVariantValues =
33594
+ inStockVariant.variant.variantValues;
33595
+ }
33596
+ }
33597
+ }
33598
+ this.pageType = exports.IkasThemePageType.PRODUCT;
33599
+ this.setPageMetaData(metaData);
33600
+ return [2 /*return*/];
33601
+ }
33602
+ });
33603
+ }); };
33568
33604
  handleBrandPage = function () { return __awaiter(_this, void 0, void 0, function () {
33569
33605
  var brandsResponse, brand;
33570
33606
  return __generator(this, function (_a) {
@@ -33656,7 +33692,7 @@ var IkasPageDataProvider = /** @class */ (function () {
33656
33692
  case 6: return [2 /*return*/, _d.sent()];
33657
33693
  case 7: return [4 /*yield*/, handleCategoryPage()];
33658
33694
  case 8: return [2 /*return*/, _d.sent()];
33659
- case 9: return [4 /*yield*/, this.getPageSpecificProduct()];
33695
+ case 9: return [4 /*yield*/, handleProductPage()];
33660
33696
  case 10: return [2 /*return*/, _d.sent()];
33661
33697
  case 11: return [4 /*yield*/, handleBlogPage()];
33662
33698
  case 12: return [2 /*return*/, _d.sent()];
@@ -33668,91 +33704,6 @@ var IkasPageDataProvider = /** @class */ (function () {
33668
33704
  });
33669
33705
  });
33670
33706
  };
33671
- IkasPageDataProvider.prototype.getPageSpecificProduct = function () {
33672
- return __awaiter(this, void 0, void 0, function () {
33673
- var slug, getProductMetaData, metaDataResponse, productsResponse, product, isMainProductSlug, selectedVariantValues, variantSlugPart, _i, _a, variant, values, slugPart, displayedVariantType, inStockVariant;
33674
- var _this = this;
33675
- return __generator(this, function (_b) {
33676
- switch (_b.label) {
33677
- case 0:
33678
- slug = this.pageParams.slug;
33679
- if (!slug) {
33680
- console.log("Slug not found for getPageSpecificProduct");
33681
- }
33682
- getProductMetaData = function (slug) { return __awaiter(_this, void 0, void 0, function () {
33683
- var metaDataList, splitParts, newSlug;
33684
- return __generator(this, function (_a) {
33685
- switch (_a.label) {
33686
- case 0:
33687
- if (!slug)
33688
- return [2 /*return*/];
33689
- return [4 /*yield*/, IkasHTMLMetaDataAPI.listHTMLMetaData(slug)];
33690
- case 1:
33691
- metaDataList = _a.sent();
33692
- if (!(!metaDataList || !metaDataList.length)) return [3 /*break*/, 3];
33693
- splitParts = slug.split("-");
33694
- newSlug = splitParts.slice(0, splitParts.length - 1).join("-");
33695
- return [4 /*yield*/, getProductMetaData(newSlug)];
33696
- case 2: return [2 /*return*/, _a.sent()];
33697
- case 3: return [2 /*return*/, {
33698
- metaData: metaDataList[0],
33699
- slug: slug,
33700
- }];
33701
- }
33702
- });
33703
- }); };
33704
- return [4 /*yield*/, getProductMetaData(slug)];
33705
- case 1:
33706
- metaDataResponse = _b.sent();
33707
- if (!metaDataResponse)
33708
- return [2 /*return*/];
33709
- return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
33710
- productIdList: [metaDataResponse.metaData.targetId],
33711
- priceListId: IkasStorefrontConfig.priceListId,
33712
- salesChannelId: IkasStorefrontConfig.salesChannelId,
33713
- })];
33714
- case 2:
33715
- productsResponse = _b.sent();
33716
- if (!(productsResponse === null || productsResponse === void 0 ? void 0 : productsResponse.data.length))
33717
- return [2 /*return*/];
33718
- product = productsResponse.data[0];
33719
- isMainProductSlug = slug.length === metaDataResponse.slug.length;
33720
- selectedVariantValues = [];
33721
- if (!isMainProductSlug) {
33722
- variantSlugPart = slug.slice(metaDataResponse.slug.length + 1);
33723
- for (_i = 0, _a = product.variants; _i < _a.length; _i++) {
33724
- variant = _a[_i];
33725
- values = variant.variantValues;
33726
- slugPart = values.map(function (vv) { return vv.slug; }).join("-");
33727
- if (slugPart === variantSlugPart) {
33728
- selectedVariantValues = values;
33729
- break;
33730
- }
33731
- }
33732
- }
33733
- this.pageSpecificData = new IkasProductDetail(product, selectedVariantValues.length
33734
- ? selectedVariantValues
33735
- : product.variants[0].variantValues);
33736
- // Select the first displayed in stock variant
33737
- if (!selectedVariantValues.length &&
33738
- this.pageSpecificData.displayedVariantTypes.length) {
33739
- displayedVariantType = this.pageSpecificData
33740
- .displayedVariantTypes[0];
33741
- if (displayedVariantType.displayedVariantValues.length) {
33742
- inStockVariant = displayedVariantType.displayedVariantValues.find(function (dvv) { return dvv.hasStock; });
33743
- if (inStockVariant) {
33744
- this.pageSpecificData.selectedVariantValues =
33745
- inStockVariant.variant.variantValues;
33746
- }
33747
- }
33748
- }
33749
- this.pageType = exports.IkasThemePageType.PRODUCT;
33750
- this.setPageMetaData(metaDataResponse.metaData);
33751
- return [2 /*return*/];
33752
- }
33753
- });
33754
- });
33755
- };
33756
33707
  IkasPageDataProvider.prototype.getPageComponentPropValues = function (pageComponent) {
33757
33708
  return __awaiter(this, void 0, void 0, function () {
33758
33709
  var component, result, setPageComponentPropValue;
@@ -34020,14 +33971,31 @@ var IkasPageDataProvider = /** @class */ (function () {
34020
33971
  var _propValue = propValue;
34021
33972
  var productDetail = new IkasProductDetail(_propValue.product, _propValue.selectedVariantValues);
34022
33973
  if (isBrowser) {
34023
- var urlParams = new URLSearchParams(window.location.search);
34024
- var vid_1 = urlParams.get("vid");
33974
+ var urlParams_1 = new URLSearchParams(window.location.search);
33975
+ var vid_1 = urlParams_1.get("vid");
34025
33976
  if (vid_1) {
34026
33977
  var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
34027
33978
  if (variant) {
34028
33979
  productDetail.selectedVariantValues = variant.variantValues;
34029
33980
  }
34030
33981
  }
33982
+ else {
33983
+ var productVariantTypeSlugs = productDetail.product.variantTypes.map(function (vt) { return vt.variantType.slug; });
33984
+ var selectedVariantValues_1 = [];
33985
+ productVariantTypeSlugs.forEach(function (slug, vtIndex) {
33986
+ var productVariantType = productDetail.product.variantTypes[vtIndex];
33987
+ var variantValueSlug = urlParams_1.get(slug);
33988
+ if (variantValueSlug) {
33989
+ var variantValue = productVariantType.variantType.values.find(function (v) { return v.slug === variantValueSlug; });
33990
+ if (variantValue)
33991
+ selectedVariantValues_1.push(variantValue);
33992
+ }
33993
+ });
33994
+ if (selectedVariantValues_1.length ===
33995
+ productDetail.selectedVariantValues.length) {
33996
+ productDetail.selectedVariantValues = selectedVariantValues_1;
33997
+ }
33998
+ }
34031
33999
  }
34032
34000
  return new IkasProductDetail(productDetail.product, productDetail.selectedVariantValues, router);
34033
34001
  };
@@ -62294,21 +62262,6 @@ var Page$1 = function (_a) {
62294
62262
  var index$1 = mobxReactLite.observer(Page$1);
62295
62263
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
62296
62264
  return __generator(this, function (_a) {
62297
- // const targetTypes = [
62298
- // IkasHTMLMetaDataTargetType.BRAND,
62299
- // IkasHTMLMetaDataTargetType.CATEGORY,
62300
- // ];
62301
- // const metaData = await IkasHTMLMetaDataAPI.listHTMLMetaData(
62302
- // undefined,
62303
- // undefined,
62304
- // targetTypes
62305
- // );
62306
- // metaData.map((m) => ({
62307
- // params: {
62308
- // slug: m.slug,
62309
- // originalSlug: m.slug,
62310
- // },
62311
- // }))
62312
62265
  return [2 /*return*/, {
62313
62266
  paths: [],
62314
62267
  fallback: "blocking",
@@ -46,7 +46,6 @@ export declare class IkasPageDataProvider {
46
46
  getMerchantSettings(): Promise<void>;
47
47
  getPageData(): Promise<void>;
48
48
  getPageSpecificData(): Promise<void>;
49
- getPageSpecificProduct(): Promise<void>;
50
49
  getPageComponentPropValues(pageComponent: IkasThemePageComponent): Promise<IkasPageComponentPropValue>;
51
50
  getPageComponentPropValue(pageComponent: IkasThemePageComponent, prop: IkasThemeComponentProp): Promise<any>;
52
51
  private setPageMetaData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.165-alpha.2",
3
+ "version": "0.0.165-alpha.4",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",
@@ -18,9 +18,9 @@
18
18
  "peerDependencies": {
19
19
  "mobx": "^6.1.3",
20
20
  "mobx-react-lite": "^3.1.5",
21
- "next": "10.0.6",
22
- "react": "17.0.1",
23
- "react-dom": "17.0.1"
21
+ "next": "11.1.2",
22
+ "react": "17.0.2",
23
+ "react-dom": "17.0.2"
24
24
  },
25
25
  "dependencies": {
26
26
  "@apollo/client": "^3.2.0",
@@ -71,12 +71,12 @@
71
71
  "jest": "^26.4.2",
72
72
  "mobx": "^6.1.3",
73
73
  "mobx-react-lite": "^3.1.5",
74
- "next": "10.0.6",
74
+ "next": "11.1.2",
75
75
  "node-sass": "^5.0.0",
76
76
  "postcss": "^8.2.4",
77
77
  "prettier": "^2.2.1",
78
- "react": "17.0.1",
79
- "react-dom": "17.0.1",
78
+ "react": "17.0.2",
79
+ "react-dom": "17.0.2",
80
80
  "rollup": "^2.38.4",
81
81
  "rollup-plugin-copy-assets": "^2.0.3",
82
82
  "rollup-plugin-node-polyfills": "^0.2.1",