@ikas/storefront 0.0.48 → 0.0.50

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.js CHANGED
@@ -6,7 +6,7 @@ var mobx = require('mobx');
6
6
  var React = require('react');
7
7
  var mobxReactLite = require('mobx-react-lite');
8
8
  var router = require('next/router');
9
- var Image = require('next/image');
9
+ var Image$1 = require('next/image');
10
10
  var Link = require('next/link');
11
11
  var Head = require('next/head');
12
12
  var dynamic = require('next/dynamic');
@@ -14,7 +14,7 @@ var dynamic = require('next/dynamic');
14
14
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
15
 
16
16
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
- var Image__default = /*#__PURE__*/_interopDefaultLegacy(Image);
17
+ var Image__default = /*#__PURE__*/_interopDefaultLegacy(Image$1);
18
18
  var Link__default = /*#__PURE__*/_interopDefaultLegacy(Link);
19
19
  var Head__default = /*#__PURE__*/_interopDefaultLegacy(Head);
20
20
  var dynamic__default = /*#__PURE__*/_interopDefaultLegacy(dynamic);
@@ -10895,7 +10895,7 @@ var Apollo = /** @class */ (function () {
10895
10895
  this.createApolloClient = function (apiKey) {
10896
10896
  var authLink = setContext(function (_request, _a) {
10897
10897
  var headers = _a.headers;
10898
- var newHeaders = __assign(__assign({}, headers), { "x-api-key": apiKey || IkasStorefrontConfig.config.apiKey });
10898
+ var newHeaders = __assign(__assign({}, headers), { "x-api-key": apiKey || IkasStorefrontConfig.config.apiKey, "X-Operation-Name": _request.operationName });
10899
10899
  if (Apollo.customerToken) {
10900
10900
  newHeaders.Authorization = "Bearer " + Apollo.customerToken;
10901
10901
  }
@@ -10952,32 +10952,32 @@ var IkasProductListPropValueProvider = /** @class */ (function () {
10952
10952
  }
10953
10953
  IkasProductListPropValueProvider.prototype.getValue = function () {
10954
10954
  return __awaiter(this, void 0, void 0, function () {
10955
- var filters, category, brand, productList;
10955
+ var filterBrandId, filterCategoryId, category, brand, productList;
10956
10956
  return __generator(this, function (_a) {
10957
10957
  switch (_a.label) {
10958
10958
  case 0:
10959
- filters = new IkasProductListFilter();
10960
10959
  if (this.productListPropValue.productListType === exports.IkasProductListType.ALL) {
10961
10960
  // TODO use pageParams to insert filters
10962
10961
  if (this.productListPropValue.usePageFilter) {
10963
10962
  if (this.pageType === exports.IkasThemePageType.CATEGORY) {
10964
10963
  category = this.pageSpecificData;
10965
- filters.category = category.id;
10964
+ filterCategoryId = category.id;
10966
10965
  }
10967
10966
  else if (this.pageType === exports.IkasThemePageType.BRAND) {
10968
10967
  brand = this.pageSpecificData;
10969
- filters.brand = brand.id;
10968
+ filterBrandId = brand.id;
10970
10969
  }
10971
10970
  }
10972
10971
  }
10973
- if (this.productListPropValue.productListType === exports.IkasProductListType.CATEGORY) {
10974
- if (this.productListPropValue.category) {
10975
- filters.category = this.productListPropValue.category;
10976
- }
10972
+ if (this.productListPropValue.productListType ===
10973
+ exports.IkasProductListType.CATEGORY &&
10974
+ this.productListPropValue.category) {
10975
+ filterCategoryId = this.productListPropValue.category;
10977
10976
  }
10978
10977
  productList = new IkasProductList({
10979
10978
  productListPropValue: this.productListPropValue,
10980
- filters: filters,
10979
+ filterBrandId: filterBrandId,
10980
+ filterCategoryId: filterCategoryId,
10981
10981
  });
10982
10982
  if (!!this.skipInitialFetch) return [3 /*break*/, 2];
10983
10983
  return [4 /*yield*/, productList.getInitial()];
@@ -11000,7 +11000,7 @@ var IkasProductDetailPropValueProvider = /** @class */ (function () {
11000
11000
  IkasProductDetailPropValueProvider.prototype.getValue = function () {
11001
11001
  var _a;
11002
11002
  return __awaiter(this, void 0, void 0, function () {
11003
- var productListResponse, product, variant;
11003
+ var productSearchResponse, productList, product, variant;
11004
11004
  var _this = this;
11005
11005
  return __generator(this, function (_b) {
11006
11006
  switch (_b.label) {
@@ -11008,17 +11008,30 @@ var IkasProductDetailPropValueProvider = /** @class */ (function () {
11008
11008
  if ((_a = this.productDetailPropValue) === null || _a === void 0 ? void 0 : _a.usePageData) {
11009
11009
  return [2 /*return*/, this.pageSpecificData];
11010
11010
  }
11011
- return [4 /*yield*/, IkasProductAPI.listProducts({
11012
- idList: [this.productDetailPropValue.productId],
11011
+ if (!this.productDetailPropValue.productId)
11012
+ return [2 /*return*/, null];
11013
+ return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
11014
+ productIdList: [this.productDetailPropValue.productId],
11013
11015
  })];
11014
11016
  case 1:
11015
- productListResponse = _b.sent();
11016
- product = productListResponse.products[0];
11017
- if (product === null || product === void 0 ? void 0 : product.hasVariant) {
11018
- variant = product.variants.find(function (v) { return v.id === _this.productDetailPropValue.variantId; });
11019
- return [2 /*return*/, new IkasProductDetail(product, variant.variantValues)];
11017
+ productSearchResponse = _b.sent();
11018
+ if (productSearchResponse) {
11019
+ productList = productSearchResponse.data;
11020
+ if (productList.length) {
11021
+ product = productList[0];
11022
+ if (product === null || product === void 0 ? void 0 : product.hasVariant) {
11023
+ variant = product.variants.find(function (v) { return v.id === _this.productDetailPropValue.variantId; });
11024
+ if (variant)
11025
+ return [2 /*return*/, new IkasProductDetail(product, variant.variantValues)];
11026
+ else
11027
+ return [2 /*return*/, null];
11028
+ }
11029
+ else {
11030
+ return [2 /*return*/, new IkasProductDetail(product, product.variants[0].variantValues)];
11031
+ }
11032
+ }
11020
11033
  }
11021
- return [2 /*return*/, new IkasProductDetail(product, [])];
11034
+ return [2 /*return*/, null];
11022
11035
  }
11023
11036
  });
11024
11037
  });
@@ -11994,14 +12007,14 @@ var IkasPageDataProvider = /** @class */ (function () {
11994
12007
  metaDataResponse = _b.sent();
11995
12008
  if (!metaDataResponse)
11996
12009
  return [2 /*return*/];
11997
- return [4 /*yield*/, IkasProductAPI.listProducts({
11998
- idList: [metaDataResponse.metaData.targetId],
12010
+ return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
12011
+ productIdList: [metaDataResponse.metaData.targetId],
11999
12012
  })];
12000
12013
  case 2:
12001
12014
  productsResponse = _b.sent();
12002
- if (!productsResponse.products.length)
12015
+ if (!(productsResponse === null || productsResponse === void 0 ? void 0 : productsResponse.data.length))
12003
12016
  return [2 /*return*/];
12004
- product = productsResponse.products[0];
12017
+ product = productsResponse.data[0];
12005
12018
  isMainProductSlug = slug.length === metaDataResponse.slug.length;
12006
12019
  selectedVariantValues = [];
12007
12020
  if (!isMainProductSlug) {
@@ -12162,7 +12175,7 @@ var IkasPageDataProvider = /** @class */ (function () {
12162
12175
  IkasPageDataProvider.initCategoryListPropValue(prop, propValue, pageComponentPropValue);
12163
12176
  break;
12164
12177
  case exports.IkasThemeComponentPropType.PRODUCT_LIST:
12165
- IkasPageDataProvider.initProductListPropValue(prop, propValue, pageComponentPropValue);
12178
+ IkasPageDataProvider.initProductListPropValue(prop, propValue, pageComponentPropValue, router);
12166
12179
  break;
12167
12180
  case exports.IkasThemeComponentPropType.PRODUCT_DETAIL:
12168
12181
  IkasPageDataProvider.initProductDetailPropValue(prop, propValue, pageComponentPropValue, router, isBrowser);
@@ -12204,11 +12217,11 @@ var IkasPageDataProvider = /** @class */ (function () {
12204
12217
  IkasPageDataProvider._initCategoryListPropValue = function (propValue) {
12205
12218
  return new IkasCategoryList(propValue);
12206
12219
  };
12207
- IkasPageDataProvider.initProductListPropValue = function (prop, propValue, pageComponentPropValue) {
12208
- pageComponentPropValue.propValues[prop.name] = this._initProductListPropValue(propValue);
12220
+ IkasPageDataProvider.initProductListPropValue = function (prop, propValue, pageComponentPropValue, router) {
12221
+ pageComponentPropValue.propValues[prop.name] = this._initProductListPropValue(propValue, router);
12209
12222
  };
12210
- IkasPageDataProvider._initProductListPropValue = function (propValue) {
12211
- return new IkasProductList(propValue);
12223
+ IkasPageDataProvider._initProductListPropValue = function (propValue, router) {
12224
+ return new IkasProductList(propValue, router);
12212
12225
  };
12213
12226
  IkasPageDataProvider.initProductDetailPropValue = function (prop, propValue, pageComponentPropValue, router, isBrowser) {
12214
12227
  pageComponentPropValue.propValues[prop.name] = this._initProductDetailPropValue(propValue, router, isBrowser);
@@ -12286,7 +12299,7 @@ var IkasPageDataProvider = /** @class */ (function () {
12286
12299
  case exports.IkasThemeCustomDataType.PRODUCT_DETAIL:
12287
12300
  return this._initProductDetailPropValue(propValue, router, isBrowser);
12288
12301
  case exports.IkasThemeCustomDataType.PRODUCT_LIST:
12289
- return this._initProductListPropValue(propValue);
12302
+ return this._initProductListPropValue(propValue, router);
12290
12303
  case exports.IkasThemeCustomDataType.OBJECT:
12291
12304
  var objectValue = {};
12292
12305
  for (var _i = 0, _a = customData.nestedData || []; _i < _a.length; _i++) {
@@ -12436,6 +12449,7 @@ var IkasCategory = /** @class */ (function () {
12436
12449
  ? new IkasHTMLMetaData(data.metaData)
12437
12450
  : undefined;
12438
12451
  this.image = data.image ? new IkasImage(data.image.id) : null;
12452
+ this.path = data.path || [];
12439
12453
  mobx.makeAutoObservable(this);
12440
12454
  }
12441
12455
  Object.defineProperty(IkasCategory.prototype, "href", {
@@ -13090,7 +13104,7 @@ var IkasVariantValue = /** @class */ (function () {
13090
13104
  this.id = data.id || "";
13091
13105
  this.name = data.name || "";
13092
13106
  this.colorCode = data.colorCode || null;
13093
- this.thumbnilImageId = data.thumbnilImageId || null;
13107
+ this.thumbnailImageId = data.thumbnailImageId || null;
13094
13108
  this.variantTypeId = data.variantTypeId || "";
13095
13109
  mobx.makeAutoObservable(this);
13096
13110
  }
@@ -13103,8 +13117,8 @@ var IkasVariantValue = /** @class */ (function () {
13103
13117
  });
13104
13118
  Object.defineProperty(IkasVariantValue.prototype, "thumbnailImage", {
13105
13119
  get: function () {
13106
- if (this.thumbnilImageId)
13107
- return new IkasImage(this.thumbnilImageId);
13120
+ if (this.thumbnailImageId)
13121
+ return new IkasImage(this.thumbnailImageId);
13108
13122
  },
13109
13123
  enumerable: false,
13110
13124
  configurable: true
@@ -13112,11 +13126,48 @@ var IkasVariantValue = /** @class */ (function () {
13112
13126
  return IkasVariantValue;
13113
13127
  }());
13114
13128
 
13129
+ var IkasProductAttributeOption = /** @class */ (function () {
13130
+ function IkasProductAttributeOption(data) {
13131
+ if (data === void 0) { data = {}; }
13132
+ this.id = data.id || "";
13133
+ this.name = data.name || "";
13134
+ mobx.makeAutoObservable(this);
13135
+ }
13136
+ return IkasProductAttributeOption;
13137
+ }());
13138
+
13139
+ var IkasProductAttribute = /** @class */ (function () {
13140
+ function IkasProductAttribute(data) {
13141
+ this.id = data.id || "";
13142
+ this.name = data.name || "";
13143
+ this.type = data.type || IkasProductAttributeType.TEXT;
13144
+ this.options = data.options || null;
13145
+ mobx.makeAutoObservable(this);
13146
+ }
13147
+ return IkasProductAttribute;
13148
+ }());
13149
+ var IkasProductAttributeType;
13150
+ (function (IkasProductAttributeType) {
13151
+ IkasProductAttributeType["CHOICE"] = "CHOICE";
13152
+ IkasProductAttributeType["MULTIPLE_CHOICE"] = "MULTIPLE_CHOICE";
13153
+ IkasProductAttributeType["TEXT"] = "TEXT";
13154
+ IkasProductAttributeType["BOOLEAN"] = "BOOLEAN";
13155
+ IkasProductAttributeType["NUMERIC"] = "NUMERIC";
13156
+ IkasProductAttributeType["DATETIME"] = "DATETIME";
13157
+ IkasProductAttributeType["HTML"] = "HTML";
13158
+ })(IkasProductAttributeType || (IkasProductAttributeType = {}));
13159
+
13115
13160
  var IkasProductAttributeValue = /** @class */ (function () {
13116
13161
  function IkasProductAttributeValue(data) {
13117
13162
  this.value = data.value || null;
13118
13163
  this.productAttributeId = data.productAttributeId || "";
13119
13164
  this.productAttributeOptionId = data.productAttributeOptionId || null;
13165
+ this.productAttribute = data.productAttribute
13166
+ ? new IkasProductAttribute(data.productAttribute)
13167
+ : null;
13168
+ this.productAttributeOption = data.productAttributeOption
13169
+ ? new IkasProductAttributeOption(data.productAttributeOption)
13170
+ : null;
13120
13171
  mobx.makeAutoObservable(this);
13121
13172
  }
13122
13173
  return IkasProductAttributeValue;
@@ -13264,26 +13315,189 @@ var IkasProduct = /** @class */ (function () {
13264
13315
  IkasProductType["MEMBERSHIP"] = "MEMBERSHIP";
13265
13316
  })(exports.IkasProductType || (exports.IkasProductType = {}));
13266
13317
 
13267
- var IkasProductAttribute = /** @class */ (function () {
13268
- function IkasProductAttribute(data) {
13318
+ var IkasProductFilter = /** @class */ (function () {
13319
+ function IkasProductFilter(data) {
13320
+ if (data === void 0) { data = {}; }
13321
+ this.values = null;
13322
+ this.customValues = null;
13323
+ // Extra
13324
+ this.numberRange = null; // Selected range value for the number slider
13325
+ this.numberRangeLimit = null; // Limits for the number range slider
13326
+ this.numberRangeListOptions = null; // List options for the number range select
13269
13327
  this.id = data.id || "";
13328
+ this.key = data.key || "";
13270
13329
  this.name = data.name || "";
13271
- this.type = data.type || IkasProductAttributeType.TEXT;
13272
- this.options = data.options || null;
13330
+ this.order = data.order || 0;
13331
+ this.type = data.type || exports.IkasProductFilterType.BRAND;
13332
+ this.displayType = data.displayType || exports.IkasProductFilterDisplayType.BOX;
13333
+ this.isMultiSelect = data.isMultiSelect || false;
13334
+ this.values = data.values
13335
+ ? data.values.map(function (v) { return new IkasApplicableProductFilterValue(v); })
13336
+ : null;
13337
+ this.customValues = data.customValues || null;
13338
+ if (this.displayType === exports.IkasProductFilterDisplayType.NUMBER_RANGE_LIST &&
13339
+ this.customValues &&
13340
+ this.customValues.length) {
13341
+ this.numberRangeListOptions = this.customValues.map(function (cv) {
13342
+ return new NumberRangeListOption(__assign(__assign({ key: cv }, parseRangeStr(cv)), { isSelected: false }));
13343
+ });
13344
+ }
13345
+ if (this.displayType === exports.IkasProductFilterDisplayType.NUMBER_RANGE &&
13346
+ this.customValues &&
13347
+ this.customValues.length) {
13348
+ var value = this.customValues[0];
13349
+ this.numberRangeLimit = parseRangeStr(value);
13350
+ }
13273
13351
  mobx.makeAutoObservable(this);
13274
13352
  }
13275
- return IkasProductAttribute;
13353
+ Object.defineProperty(IkasProductFilter.prototype, "isCustomValueFilter", {
13354
+ get: function () {
13355
+ return [
13356
+ exports.IkasProductFilterDisplayType.NUMBER_RANGE_LIST,
13357
+ exports.IkasProductFilterDisplayType.NUMBER_RANGE,
13358
+ ].includes(this.displayType);
13359
+ },
13360
+ enumerable: false,
13361
+ configurable: true
13362
+ });
13363
+ Object.defineProperty(IkasProductFilter.prototype, "valueList", {
13364
+ get: function () {
13365
+ var _this = this;
13366
+ var _a;
13367
+ if (this.numberRange)
13368
+ return [this.rangeToId(this.numberRange)];
13369
+ if (this.numberRangeListOptions)
13370
+ return this.numberRangeListOptions
13371
+ .filter(function (o) { return o.isSelected; })
13372
+ .map(function (o) { return _this.rangeToId(o); });
13373
+ return ((_a = this.values) === null || _a === void 0 ? void 0 : _a.filter(function (v) { return v.isSelected; }).map(function (v) { return v.id; })) || [];
13374
+ },
13375
+ enumerable: false,
13376
+ configurable: true
13377
+ });
13378
+ Object.defineProperty(IkasProductFilter.prototype, "keyList", {
13379
+ get: function () {
13380
+ var _this = this;
13381
+ var _a;
13382
+ if (this.numberRange)
13383
+ return [this.rangeToId(this.numberRange)];
13384
+ if (this.numberRangeListOptions)
13385
+ return this.numberRangeListOptions
13386
+ .filter(function (o) { return o.isSelected; })
13387
+ .map(function (o) { return _this.rangeToId(o); });
13388
+ return ((_a = this.values) === null || _a === void 0 ? void 0 : _a.filter(function (v) { return v.isSelected; }).map(function (v) { return v.key; })) || [];
13389
+ },
13390
+ enumerable: false,
13391
+ configurable: true
13392
+ });
13393
+ IkasProductFilter.prototype.clear = function () {
13394
+ var _a, _b;
13395
+ this.numberRange = null;
13396
+ (_a = this.numberRangeListOptions) === null || _a === void 0 ? void 0 : _a.forEach(function (o) { return (o.isSelected = false); });
13397
+ (_b = this.values) === null || _b === void 0 ? void 0 : _b.forEach(function (v) { return (v.isSelected = false); });
13398
+ };
13399
+ IkasProductFilter.prototype.toInput = function () {
13400
+ return {
13401
+ id: this.key,
13402
+ type: this.type,
13403
+ valueList: this.valueList,
13404
+ };
13405
+ };
13406
+ IkasProductFilter.prototype.rangeToId = function (range) {
13407
+ return range.from + ":" + (range.to || "");
13408
+ };
13409
+ return IkasProductFilter;
13276
13410
  }());
13277
- var IkasProductAttributeType;
13278
- (function (IkasProductAttributeType) {
13279
- IkasProductAttributeType["CHOICE"] = "CHOICE";
13280
- IkasProductAttributeType["MULTIPLE_CHOICE"] = "MULTIPLE_CHOICE";
13281
- IkasProductAttributeType["TEXT"] = "TEXT";
13282
- IkasProductAttributeType["BOOLEAN"] = "BOOLEAN";
13283
- IkasProductAttributeType["NUMERIC"] = "NUMERIC";
13284
- IkasProductAttributeType["DATETIME"] = "DATETIME";
13285
- IkasProductAttributeType["HTML"] = "HTML";
13286
- })(IkasProductAttributeType || (IkasProductAttributeType = {}));
13411
+ var IkasApplicableProductFilterValue = /** @class */ (function () {
13412
+ function IkasApplicableProductFilterValue(data) {
13413
+ if (data === void 0) { data = {}; }
13414
+ this.colorCode = null;
13415
+ this.thumbnailImageId = null;
13416
+ this.thumbnailImage = null;
13417
+ // Extra
13418
+ this._isSelected = false;
13419
+ this.id = data.id || "";
13420
+ this.key = data.key || "";
13421
+ this.name = data.name || "";
13422
+ this.colorCode = data.colorCode || null;
13423
+ this.thumbnailImageId = data.thumbnailImageId || null;
13424
+ if (this.thumbnailImageId)
13425
+ this.thumbnailImage = new IkasImage(this.thumbnailImageId);
13426
+ this._isSelected = data.isSelected || false;
13427
+ mobx.makeAutoObservable(this);
13428
+ }
13429
+ Object.defineProperty(IkasApplicableProductFilterValue.prototype, "isSelected", {
13430
+ get: function () {
13431
+ return this._isSelected;
13432
+ },
13433
+ set: function (value) {
13434
+ this._isSelected = value;
13435
+ },
13436
+ enumerable: false,
13437
+ configurable: true
13438
+ });
13439
+ return IkasApplicableProductFilterValue;
13440
+ }());
13441
+ var IkasProductFilterValue = /** @class */ (function () {
13442
+ function IkasProductFilterValue(data) {
13443
+ this.id = data.id;
13444
+ this.type = data.type;
13445
+ this.valueList = data.valueList;
13446
+ mobx.makeAutoObservable(this);
13447
+ }
13448
+ return IkasProductFilterValue;
13449
+ }());
13450
+ (function (IkasProductFilterType) {
13451
+ IkasProductFilterType["ATTRIBUTE"] = "ATTRIBUTE";
13452
+ IkasProductFilterType["BRAND"] = "BRAND";
13453
+ IkasProductFilterType["DISCOUNT_RATIO"] = "DISCOUNT_RATIO";
13454
+ IkasProductFilterType["PRICE"] = "PRICE";
13455
+ IkasProductFilterType["STOCK_STATUS"] = "STOCK_STATUS";
13456
+ IkasProductFilterType["TAG"] = "TAG";
13457
+ IkasProductFilterType["VARIANT_TYPE"] = "VARIANT_TYPE";
13458
+ })(exports.IkasProductFilterType || (exports.IkasProductFilterType = {}));
13459
+ (function (IkasProductFilterDisplayType) {
13460
+ IkasProductFilterDisplayType["BOX"] = "BOX";
13461
+ IkasProductFilterDisplayType["DATE_RANGE"] = "DATE_RANGE";
13462
+ IkasProductFilterDisplayType["LIST"] = "LIST";
13463
+ IkasProductFilterDisplayType["NUMBER_RANGE_LIST"] = "NUMBER_RANGE_LIST";
13464
+ IkasProductFilterDisplayType["NUMBER_RANGE"] = "NUMBER_RANGE";
13465
+ IkasProductFilterDisplayType["SWATCH"] = "SWATCH";
13466
+ })(exports.IkasProductFilterDisplayType || (exports.IkasProductFilterDisplayType = {}));
13467
+ var RangeValue = /** @class */ (function () {
13468
+ function RangeValue(data) {
13469
+ this.from = data.from || 0;
13470
+ this.to = data.to || null;
13471
+ mobx.makeAutoObservable(this);
13472
+ }
13473
+ return RangeValue;
13474
+ }());
13475
+ var NumberRangeListOption = /** @class */ (function () {
13476
+ function NumberRangeListOption(data) {
13477
+ this.from = data.from || 0;
13478
+ this.to = data.to || null;
13479
+ this.key = data.key || "";
13480
+ this.isSelected = data.isSelected || false;
13481
+ mobx.makeAutoObservable(this);
13482
+ }
13483
+ return NumberRangeListOption;
13484
+ }());
13485
+ function parseRangeStr(rangeStr) {
13486
+ try {
13487
+ var parsedValues = rangeStr.split(":").map(function (i) { return parseInt(i); });
13488
+ return new RangeValue({
13489
+ from: isNaN(parsedValues[0]) ? 0 : parsedValues[0],
13490
+ to: isNaN(parsedValues[1]) ? undefined : parsedValues[1],
13491
+ });
13492
+ }
13493
+ catch (err) {
13494
+ console.log(err);
13495
+ return new RangeValue({
13496
+ from: 0,
13497
+ to: 0,
13498
+ });
13499
+ }
13500
+ }
13287
13501
 
13288
13502
  var IkasOrderTransaction = /** @class */ (function () {
13289
13503
  function IkasOrderTransaction(data) {
@@ -14272,111 +14486,611 @@ var IkasProductDetail = /** @class */ (function () {
14272
14486
  return IkasProductDetail;
14273
14487
  }());
14274
14488
 
14275
- var IkasProductListFilter = /** @class */ (function () {
14276
- function IkasProductListFilter(data) {
14277
- if (data === void 0) { data = {}; }
14278
- this.category = null;
14279
- this.brand = null;
14280
- this.category = data.category || null;
14281
- this.brand = data.brand || null;
14282
- this.categories = data.categories || [];
14283
- this.brands = data.brands || [];
14284
- this.variantValues = data.variantValues || [];
14285
- this.attributes = data.attributes || [];
14286
- mobx.makeAutoObservable(this);
14287
- }
14288
- return IkasProductListFilter;
14289
- }());
14489
+ var strictUriEncode = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);
14490
+
14491
+ var token = '%[a-f0-9]{2}';
14492
+ var singleMatcher = new RegExp(token, 'gi');
14493
+ var multiMatcher = new RegExp('(' + token + ')+', 'gi');
14494
+
14495
+ function decodeComponents(components, split) {
14496
+ try {
14497
+ // Try to decode the entire string first
14498
+ return decodeURIComponent(components.join(''));
14499
+ } catch (err) {
14500
+ // Do nothing
14501
+ }
14502
+
14503
+ if (components.length === 1) {
14504
+ return components;
14505
+ }
14506
+
14507
+ split = split || 1;
14508
+
14509
+ // Split the array in 2 parts
14510
+ var left = components.slice(0, split);
14511
+ var right = components.slice(split);
14512
+
14513
+ return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));
14514
+ }
14515
+
14516
+ function decode(input) {
14517
+ try {
14518
+ return decodeURIComponent(input);
14519
+ } catch (err) {
14520
+ var tokens = input.match(singleMatcher);
14521
+
14522
+ for (var i = 1; i < tokens.length; i++) {
14523
+ input = decodeComponents(tokens, i).join('');
14524
+
14525
+ tokens = input.match(singleMatcher);
14526
+ }
14527
+
14528
+ return input;
14529
+ }
14530
+ }
14531
+
14532
+ function customDecodeURIComponent(input) {
14533
+ // Keep track of all the replacements and prefill the map with the `BOM`
14534
+ var replaceMap = {
14535
+ '%FE%FF': '\uFFFD\uFFFD',
14536
+ '%FF%FE': '\uFFFD\uFFFD'
14537
+ };
14538
+
14539
+ var match = multiMatcher.exec(input);
14540
+ while (match) {
14541
+ try {
14542
+ // Decode as big chunks as possible
14543
+ replaceMap[match[0]] = decodeURIComponent(match[0]);
14544
+ } catch (err) {
14545
+ var result = decode(match[0]);
14546
+
14547
+ if (result !== match[0]) {
14548
+ replaceMap[match[0]] = result;
14549
+ }
14550
+ }
14551
+
14552
+ match = multiMatcher.exec(input);
14553
+ }
14554
+
14555
+ // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
14556
+ replaceMap['%C2'] = '\uFFFD';
14557
+
14558
+ var entries = Object.keys(replaceMap);
14559
+
14560
+ for (var i = 0; i < entries.length; i++) {
14561
+ // Replace all decoded components
14562
+ var key = entries[i];
14563
+ input = input.replace(new RegExp(key, 'g'), replaceMap[key]);
14564
+ }
14565
+
14566
+ return input;
14567
+ }
14568
+
14569
+ var decodeUriComponent = function (encodedURI) {
14570
+ if (typeof encodedURI !== 'string') {
14571
+ throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');
14572
+ }
14573
+
14574
+ try {
14575
+ encodedURI = encodedURI.replace(/\+/g, ' ');
14576
+
14577
+ // Try the built in decoder first
14578
+ return decodeURIComponent(encodedURI);
14579
+ } catch (err) {
14580
+ // Fallback to a more advanced decoder
14581
+ return customDecodeURIComponent(encodedURI);
14582
+ }
14583
+ };
14584
+
14585
+ var splitOnFirst = (string, separator) => {
14586
+ if (!(typeof string === 'string' && typeof separator === 'string')) {
14587
+ throw new TypeError('Expected the arguments to be of type `string`');
14588
+ }
14589
+
14590
+ if (separator === '') {
14591
+ return [string];
14592
+ }
14593
+
14594
+ const separatorIndex = string.indexOf(separator);
14595
+
14596
+ if (separatorIndex === -1) {
14597
+ return [string];
14598
+ }
14599
+
14600
+ return [
14601
+ string.slice(0, separatorIndex),
14602
+ string.slice(separatorIndex + separator.length)
14603
+ ];
14604
+ };
14605
+
14606
+ var queryString = createCommonjsModule(function (module, exports) {
14607
+
14608
+
14609
+
14610
+
14611
+ const isNullOrUndefined = value => value === null || value === undefined;
14612
+
14613
+ function encoderForArrayFormat(options) {
14614
+ switch (options.arrayFormat) {
14615
+ case 'index':
14616
+ return key => (result, value) => {
14617
+ const index = result.length;
14618
+
14619
+ if (
14620
+ value === undefined ||
14621
+ (options.skipNull && value === null) ||
14622
+ (options.skipEmptyString && value === '')
14623
+ ) {
14624
+ return result;
14625
+ }
14626
+
14627
+ if (value === null) {
14628
+ return [...result, [encode(key, options), '[', index, ']'].join('')];
14629
+ }
14630
+
14631
+ return [
14632
+ ...result,
14633
+ [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')
14634
+ ];
14635
+ };
14636
+
14637
+ case 'bracket':
14638
+ return key => (result, value) => {
14639
+ if (
14640
+ value === undefined ||
14641
+ (options.skipNull && value === null) ||
14642
+ (options.skipEmptyString && value === '')
14643
+ ) {
14644
+ return result;
14645
+ }
14646
+
14647
+ if (value === null) {
14648
+ return [...result, [encode(key, options), '[]'].join('')];
14649
+ }
14650
+
14651
+ return [...result, [encode(key, options), '[]=', encode(value, options)].join('')];
14652
+ };
14653
+
14654
+ case 'comma':
14655
+ case 'separator':
14656
+ return key => (result, value) => {
14657
+ if (value === null || value === undefined || value.length === 0) {
14658
+ return result;
14659
+ }
14660
+
14661
+ if (result.length === 0) {
14662
+ return [[encode(key, options), '=', encode(value, options)].join('')];
14663
+ }
14664
+
14665
+ return [[result, encode(value, options)].join(options.arrayFormatSeparator)];
14666
+ };
14667
+
14668
+ default:
14669
+ return key => (result, value) => {
14670
+ if (
14671
+ value === undefined ||
14672
+ (options.skipNull && value === null) ||
14673
+ (options.skipEmptyString && value === '')
14674
+ ) {
14675
+ return result;
14676
+ }
14677
+
14678
+ if (value === null) {
14679
+ return [...result, encode(key, options)];
14680
+ }
14681
+
14682
+ return [...result, [encode(key, options), '=', encode(value, options)].join('')];
14683
+ };
14684
+ }
14685
+ }
14686
+
14687
+ function parserForArrayFormat(options) {
14688
+ let result;
14689
+
14690
+ switch (options.arrayFormat) {
14691
+ case 'index':
14692
+ return (key, value, accumulator) => {
14693
+ result = /\[(\d*)\]$/.exec(key);
14694
+
14695
+ key = key.replace(/\[\d*\]$/, '');
14696
+
14697
+ if (!result) {
14698
+ accumulator[key] = value;
14699
+ return;
14700
+ }
14701
+
14702
+ if (accumulator[key] === undefined) {
14703
+ accumulator[key] = {};
14704
+ }
14705
+
14706
+ accumulator[key][result[1]] = value;
14707
+ };
14708
+
14709
+ case 'bracket':
14710
+ return (key, value, accumulator) => {
14711
+ result = /(\[\])$/.exec(key);
14712
+ key = key.replace(/\[\]$/, '');
14713
+
14714
+ if (!result) {
14715
+ accumulator[key] = value;
14716
+ return;
14717
+ }
14718
+
14719
+ if (accumulator[key] === undefined) {
14720
+ accumulator[key] = [value];
14721
+ return;
14722
+ }
14723
+
14724
+ accumulator[key] = [].concat(accumulator[key], value);
14725
+ };
14726
+
14727
+ case 'comma':
14728
+ case 'separator':
14729
+ return (key, value, accumulator) => {
14730
+ const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);
14731
+ const isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));
14732
+ value = isEncodedArray ? decode(value, options) : value;
14733
+ const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);
14734
+ accumulator[key] = newValue;
14735
+ };
14736
+
14737
+ default:
14738
+ return (key, value, accumulator) => {
14739
+ if (accumulator[key] === undefined) {
14740
+ accumulator[key] = value;
14741
+ return;
14742
+ }
14743
+
14744
+ accumulator[key] = [].concat(accumulator[key], value);
14745
+ };
14746
+ }
14747
+ }
14748
+
14749
+ function validateArrayFormatSeparator(value) {
14750
+ if (typeof value !== 'string' || value.length !== 1) {
14751
+ throw new TypeError('arrayFormatSeparator must be single character string');
14752
+ }
14753
+ }
14754
+
14755
+ function encode(value, options) {
14756
+ if (options.encode) {
14757
+ return options.strict ? strictUriEncode(value) : encodeURIComponent(value);
14758
+ }
14759
+
14760
+ return value;
14761
+ }
14762
+
14763
+ function decode(value, options) {
14764
+ if (options.decode) {
14765
+ return decodeUriComponent(value);
14766
+ }
14767
+
14768
+ return value;
14769
+ }
14770
+
14771
+ function keysSorter(input) {
14772
+ if (Array.isArray(input)) {
14773
+ return input.sort();
14774
+ }
14775
+
14776
+ if (typeof input === 'object') {
14777
+ return keysSorter(Object.keys(input))
14778
+ .sort((a, b) => Number(a) - Number(b))
14779
+ .map(key => input[key]);
14780
+ }
14781
+
14782
+ return input;
14783
+ }
14784
+
14785
+ function removeHash(input) {
14786
+ const hashStart = input.indexOf('#');
14787
+ if (hashStart !== -1) {
14788
+ input = input.slice(0, hashStart);
14789
+ }
14790
+
14791
+ return input;
14792
+ }
14793
+
14794
+ function getHash(url) {
14795
+ let hash = '';
14796
+ const hashStart = url.indexOf('#');
14797
+ if (hashStart !== -1) {
14798
+ hash = url.slice(hashStart);
14799
+ }
14800
+
14801
+ return hash;
14802
+ }
14803
+
14804
+ function extract(input) {
14805
+ input = removeHash(input);
14806
+ const queryStart = input.indexOf('?');
14807
+ if (queryStart === -1) {
14808
+ return '';
14809
+ }
14810
+
14811
+ return input.slice(queryStart + 1);
14812
+ }
14813
+
14814
+ function parseValue(value, options) {
14815
+ if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
14816
+ value = Number(value);
14817
+ } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
14818
+ value = value.toLowerCase() === 'true';
14819
+ }
14820
+
14821
+ return value;
14822
+ }
14823
+
14824
+ function parse(query, options) {
14825
+ options = Object.assign({
14826
+ decode: true,
14827
+ sort: true,
14828
+ arrayFormat: 'none',
14829
+ arrayFormatSeparator: ',',
14830
+ parseNumbers: false,
14831
+ parseBooleans: false
14832
+ }, options);
14833
+
14834
+ validateArrayFormatSeparator(options.arrayFormatSeparator);
14835
+
14836
+ const formatter = parserForArrayFormat(options);
14837
+
14838
+ // Create an object with no prototype
14839
+ const ret = Object.create(null);
14840
+
14841
+ if (typeof query !== 'string') {
14842
+ return ret;
14843
+ }
14844
+
14845
+ query = query.trim().replace(/^[?#&]/, '');
14846
+
14847
+ if (!query) {
14848
+ return ret;
14849
+ }
14850
+
14851
+ for (const param of query.split('&')) {
14852
+ let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '=');
14853
+
14854
+ // Missing `=` should be `null`:
14855
+ // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
14856
+ value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);
14857
+ formatter(decode(key, options), value, ret);
14858
+ }
14859
+
14860
+ for (const key of Object.keys(ret)) {
14861
+ const value = ret[key];
14862
+ if (typeof value === 'object' && value !== null) {
14863
+ for (const k of Object.keys(value)) {
14864
+ value[k] = parseValue(value[k], options);
14865
+ }
14866
+ } else {
14867
+ ret[key] = parseValue(value, options);
14868
+ }
14869
+ }
14870
+
14871
+ if (options.sort === false) {
14872
+ return ret;
14873
+ }
14874
+
14875
+ return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {
14876
+ const value = ret[key];
14877
+ if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {
14878
+ // Sort object keys, not values
14879
+ result[key] = keysSorter(value);
14880
+ } else {
14881
+ result[key] = value;
14882
+ }
14883
+
14884
+ return result;
14885
+ }, Object.create(null));
14886
+ }
14887
+
14888
+ exports.extract = extract;
14889
+ exports.parse = parse;
14890
+
14891
+ exports.stringify = (object, options) => {
14892
+ if (!object) {
14893
+ return '';
14894
+ }
14895
+
14896
+ options = Object.assign({
14897
+ encode: true,
14898
+ strict: true,
14899
+ arrayFormat: 'none',
14900
+ arrayFormatSeparator: ','
14901
+ }, options);
14902
+
14903
+ validateArrayFormatSeparator(options.arrayFormatSeparator);
14904
+
14905
+ const shouldFilter = key => (
14906
+ (options.skipNull && isNullOrUndefined(object[key])) ||
14907
+ (options.skipEmptyString && object[key] === '')
14908
+ );
14909
+
14910
+ const formatter = encoderForArrayFormat(options);
14911
+
14912
+ const objectCopy = {};
14913
+
14914
+ for (const key of Object.keys(object)) {
14915
+ if (!shouldFilter(key)) {
14916
+ objectCopy[key] = object[key];
14917
+ }
14918
+ }
14919
+
14920
+ const keys = Object.keys(objectCopy);
14921
+
14922
+ if (options.sort !== false) {
14923
+ keys.sort(options.sort);
14924
+ }
14925
+
14926
+ return keys.map(key => {
14927
+ const value = object[key];
14928
+
14929
+ if (value === undefined) {
14930
+ return '';
14931
+ }
14932
+
14933
+ if (value === null) {
14934
+ return encode(key, options);
14935
+ }
14936
+
14937
+ if (Array.isArray(value)) {
14938
+ return value
14939
+ .reduce(formatter(key), [])
14940
+ .join('&');
14941
+ }
14942
+
14943
+ return encode(key, options) + '=' + encode(value, options);
14944
+ }).filter(x => x.length > 0).join('&');
14945
+ };
14946
+
14947
+ exports.parseUrl = (url, options) => {
14948
+ options = Object.assign({
14949
+ decode: true
14950
+ }, options);
14951
+
14952
+ const [url_, hash] = splitOnFirst(url, '#');
14953
+
14954
+ return Object.assign(
14955
+ {
14956
+ url: url_.split('?')[0] || '',
14957
+ query: parse(extract(url), options)
14958
+ },
14959
+ options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}
14960
+ );
14961
+ };
14962
+
14963
+ exports.stringifyUrl = (object, options) => {
14964
+ options = Object.assign({
14965
+ encode: true,
14966
+ strict: true
14967
+ }, options);
14968
+
14969
+ const url = removeHash(object.url).split('?')[0] || '';
14970
+ const queryFromUrl = exports.extract(object.url);
14971
+ const parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});
14972
+
14973
+ const query = Object.assign(parsedQueryFromUrl, object.query);
14974
+ let queryString = exports.stringify(query, options);
14975
+ if (queryString) {
14976
+ queryString = `?${queryString}`;
14977
+ }
14978
+
14979
+ let hash = getHash(object.url);
14980
+ if (object.fragmentIdentifier) {
14981
+ hash = `#${encode(object.fragmentIdentifier, options)}`;
14982
+ }
14983
+
14984
+ return `${url}${queryString}${hash}`;
14985
+ };
14986
+ });
14290
14987
 
14291
14988
  var IkasProductList = /** @class */ (function () {
14292
- function IkasProductList(data) {
14989
+ function IkasProductList(data, router) {
14293
14990
  var _this = this;
14991
+ this.filters = null;
14294
14992
  this._initialized = false;
14295
14993
  this._minPage = null;
14296
- // Used for ProducListType.ALL
14297
- this._filters = null;
14298
- // Used for recommending products for a specific product
14994
+ this._filterBrandId = null;
14995
+ this._filterCategoryId = null;
14299
14996
  this._recommendFor = null; // productId
14300
14997
  this._isLoading = false;
14301
- this.getInitial = function () { return __awaiter(_this, void 0, void 0, function () {
14302
- var page, limit, response_1, data_1, err_1;
14303
- var _this = this;
14304
- var _a, _b, _c;
14305
- return __generator(this, function (_d) {
14306
- switch (_d.label) {
14998
+ this._fetchRequestTime = 0;
14999
+ this.router = null;
15000
+ this.applyFilters = function () { return __awaiter(_this, void 0, void 0, function () {
15001
+ var _a, _b;
15002
+ return __generator(this, function (_c) {
15003
+ switch (_c.label) {
15004
+ case 0: return [4 /*yield*/, this.getInitial()];
15005
+ case 1:
15006
+ _c.sent();
15007
+ // Change url params
15008
+ if (this.isBrowser()) {
15009
+ if (this.isFiltered) {
15010
+ (_a = this.router) === null || _a === void 0 ? void 0 : _a.replace(location.pathname + "?" + this.filterQueryParams, undefined, { shallow: true });
15011
+ }
15012
+ else {
15013
+ (_b = this.router) === null || _b === void 0 ? void 0 : _b.replace("" + location.pathname, undefined, {
15014
+ shallow: true,
15015
+ });
15016
+ }
15017
+ }
15018
+ return [2 /*return*/];
15019
+ }
15020
+ });
15021
+ }); };
15022
+ this.getInitial = function (queryParams) { return __awaiter(_this, void 0, void 0, function () {
15023
+ var fetchRequestTime, page, limit, response_1, data, err_1;
15024
+ return __generator(this, function (_a) {
15025
+ switch (_a.label) {
14307
15026
  case 0:
14308
- if (this._isLoading)
14309
- return [2 /*return*/];
14310
15027
  this._isLoading = true;
14311
- _d.label = 1;
15028
+ fetchRequestTime = Date.now();
15029
+ this._fetchRequestTime = fetchRequestTime;
15030
+ _a.label = 1;
14312
15031
  case 1:
14313
- _d.trys.push([1, 3, 4, 5]);
14314
- page = this._page;
15032
+ _a.trys.push([1, 5, 6, 7]);
15033
+ page = 1;
14315
15034
  limit = this._limit;
15035
+ if (!(this.isFilterable && !this.filters)) return [3 /*break*/, 3];
15036
+ return [4 /*yield*/, this.getFilters()];
15037
+ case 2:
15038
+ _a.sent();
15039
+ _a.label = 3;
15040
+ case 3:
15041
+ this.applyQueryParamFilters(queryParams);
14316
15042
  if (this.isStatic) {
14317
15043
  page = undefined;
14318
15044
  limit = undefined;
14319
15045
  }
14320
15046
  else if (this.isDiscounted) {
14321
- // TODO use filter
14322
15047
  page = 1;
14323
15048
  limit = 10;
14324
15049
  }
14325
15050
  else if (this.isRecommended) {
14326
- // TODO use filter
14327
15051
  page = 1;
14328
15052
  limit = 10;
14329
15053
  }
14330
- return [4 /*yield*/, IkasProductAPI.listProducts({
14331
- idList: this.isStatic
14332
- ? (_a = this._productListPropValue.productIds) === null || _a === void 0 ? void 0 : _a.map(function (p) { return p.productId; }) : undefined,
14333
- page: page,
14334
- limit: limit,
14335
- brandId: ((_b = this._filters) === null || _b === void 0 ? void 0 : _b.brand) ? this._filters.brand : undefined,
14336
- categoryIds: ((_c = this._filters) === null || _c === void 0 ? void 0 : _c.category) ? [this._filters.category]
14337
- : undefined,
14338
- })];
14339
- case 2:
14340
- response_1 = _d.sent();
14341
- data_1 = [];
15054
+ return [4 /*yield*/, this.searchProducts(page || 1, limit || 10)];
15055
+ case 4:
15056
+ response_1 = _a.sent();
15057
+ if (!response_1 || this._fetchRequestTime !== fetchRequestTime)
15058
+ return [2 /*return*/];
15059
+ data = [];
14342
15060
  if (this.isStatic) {
14343
- data_1 = this._productListPropValue.productIds.map(function (pID) {
14344
- var product = response_1.products.find(function (p) { return p.id === pID.productId; });
15061
+ data = this._productListPropValue.productIds.map(function (pID) {
15062
+ var product = response_1.data.find(function (p) { return p.id === pID.productId; });
14345
15063
  var variant = product === null || product === void 0 ? void 0 : product.variants.find(function (v) { return v.id === pID.variantId; });
14346
15064
  return new IkasProductDetail(product, variant.variantValues);
14347
15065
  });
14348
15066
  }
14349
15067
  else {
14350
- data_1 = response_1.products.map(function (product, index) {
15068
+ data = response_1.data.map(function (product) {
14351
15069
  return new IkasProductDetail(product, product.variants[0].variantValues);
14352
15070
  });
14353
15071
  }
14354
- mobx.runInAction(function () {
14355
- _this.data = data_1;
14356
- _this._count = response_1.count;
14357
- _this._initialized = true;
14358
- _this._minPage = _this.page;
14359
- });
14360
- return [3 /*break*/, 5];
14361
- case 3:
14362
- err_1 = _d.sent();
15072
+ this.data = data;
15073
+ this._count = response_1.count;
15074
+ this._initialized = true;
15075
+ this._page = page || 1;
15076
+ this._minPage = this.page;
15077
+ return [3 /*break*/, 7];
15078
+ case 5:
15079
+ err_1 = _a.sent();
14363
15080
  console.log(err_1);
14364
- return [3 /*break*/, 5];
14365
- case 4:
14366
- mobx.runInAction(function () {
14367
- _this._isLoading = false;
14368
- });
15081
+ return [3 /*break*/, 7];
15082
+ case 6:
15083
+ if (fetchRequestTime === this._fetchRequestTime)
15084
+ this._isLoading = false;
14369
15085
  return [7 /*endfinally*/];
14370
- case 5: return [2 /*return*/];
15086
+ case 7: return [2 /*return*/];
14371
15087
  }
14372
15088
  });
14373
15089
  }); };
14374
15090
  this.getPrev = function () { return __awaiter(_this, void 0, void 0, function () {
14375
- var minPage_1, response_2, data_2, err_2;
14376
- var _this = this;
14377
- var _a, _b, _c;
14378
- return __generator(this, function (_d) {
14379
- switch (_d.label) {
15091
+ var minPage, response, data, err_2;
15092
+ return __generator(this, function (_a) {
15093
+ switch (_a.label) {
14380
15094
  case 0:
14381
15095
  if (this.isStatic ||
14382
15096
  this.isDiscounted ||
@@ -14385,49 +15099,37 @@ var IkasProductList = /** @class */ (function () {
14385
15099
  !this.hasPrev)
14386
15100
  return [2 /*return*/];
14387
15101
  this._isLoading = true;
14388
- _d.label = 1;
15102
+ _a.label = 1;
14389
15103
  case 1:
14390
- _d.trys.push([1, 3, 4, 5]);
14391
- minPage_1 = this._minPage - 1;
14392
- return [4 /*yield*/, IkasProductAPI.listProducts({
14393
- idList: this.isStatic
14394
- ? (_a = this._productListPropValue.productIds) === null || _a === void 0 ? void 0 : _a.map(function (p) { return p.productId; }) : undefined,
14395
- page: minPage_1,
14396
- limit: this._limit,
14397
- brandId: ((_b = this._filters) === null || _b === void 0 ? void 0 : _b.brand) ? this._filters.brand : undefined,
14398
- categoryIds: ((_c = this._filters) === null || _c === void 0 ? void 0 : _c.category) ? [this._filters.category]
14399
- : undefined,
14400
- })];
15104
+ _a.trys.push([1, 3, 4, 5]);
15105
+ minPage = this._minPage - 1;
15106
+ return [4 /*yield*/, this.searchProducts(minPage, this.limit)];
14401
15107
  case 2:
14402
- response_2 = _d.sent();
14403
- data_2 = response_2.products.map(function (product) {
15108
+ response = _a.sent();
15109
+ if (!response)
15110
+ return [2 /*return*/];
15111
+ data = response.data.map(function (product) {
14404
15112
  return new IkasProductDetail(product, product.variants[0].variantValues);
14405
15113
  });
14406
- mobx.runInAction(function () {
14407
- _this.data = data_2.concat(_this.data);
14408
- _this._count = response_2.count;
14409
- _this._minPage = minPage_1;
14410
- });
15114
+ this.data = data.concat(this.data);
15115
+ this._count = response.count;
15116
+ this._minPage = minPage;
14411
15117
  return [3 /*break*/, 5];
14412
15118
  case 3:
14413
- err_2 = _d.sent();
15119
+ err_2 = _a.sent();
14414
15120
  console.log(err_2);
14415
15121
  return [3 /*break*/, 5];
14416
15122
  case 4:
14417
- mobx.runInAction(function () {
14418
- _this._isLoading = false;
14419
- });
15123
+ this._isLoading = false;
14420
15124
  return [7 /*endfinally*/];
14421
15125
  case 5: return [2 /*return*/];
14422
15126
  }
14423
15127
  });
14424
15128
  }); };
14425
15129
  this.getNext = function () { return __awaiter(_this, void 0, void 0, function () {
14426
- var response_3, data_3, err_3;
14427
- var _this = this;
14428
- var _a, _b;
14429
- return __generator(this, function (_c) {
14430
- switch (_c.label) {
15130
+ var response, data, err_3;
15131
+ return __generator(this, function (_a) {
15132
+ switch (_a.label) {
14431
15133
  case 0:
14432
15134
  if (this.isStatic ||
14433
15135
  this.isDiscounted ||
@@ -14436,46 +15138,36 @@ var IkasProductList = /** @class */ (function () {
14436
15138
  !this.hasNext)
14437
15139
  return [2 /*return*/];
14438
15140
  this._isLoading = true;
14439
- _c.label = 1;
15141
+ _a.label = 1;
14440
15142
  case 1:
14441
- _c.trys.push([1, 3, 4, 5]);
14442
- return [4 /*yield*/, IkasProductAPI.listProducts({
14443
- page: this.page + 1,
14444
- limit: this.limit,
14445
- brandId: ((_a = this._filters) === null || _a === void 0 ? void 0 : _a.brand) ? this._filters.brand : undefined,
14446
- categoryIds: ((_b = this._filters) === null || _b === void 0 ? void 0 : _b.category) ? [this._filters.category]
14447
- : undefined,
14448
- })];
15143
+ _a.trys.push([1, 3, 4, 5]);
15144
+ return [4 /*yield*/, this.searchProducts(this.page + 1, this.limit)];
14449
15145
  case 2:
14450
- response_3 = _c.sent();
14451
- data_3 = response_3.products.map(function (product) {
15146
+ response = _a.sent();
15147
+ if (!response)
15148
+ return [2 /*return*/];
15149
+ data = response.data.map(function (product) {
14452
15150
  return new IkasProductDetail(product, product.variants[0].variantValues);
14453
15151
  });
14454
- mobx.runInAction(function () {
14455
- _this.data = _this.data.concat(data_3);
14456
- _this._count = response_3.count;
14457
- _this._page = _this.page + 1;
14458
- });
15152
+ this.data = this.data.concat(data);
15153
+ this._count = response.count;
15154
+ this._page = this.page + 1;
14459
15155
  return [3 /*break*/, 5];
14460
15156
  case 3:
14461
- err_3 = _c.sent();
15157
+ err_3 = _a.sent();
14462
15158
  console.log(err_3);
14463
15159
  return [3 /*break*/, 5];
14464
15160
  case 4:
14465
- mobx.runInAction(function () {
14466
- _this._isLoading = false;
14467
- });
15161
+ this._isLoading = false;
14468
15162
  return [7 /*endfinally*/];
14469
15163
  case 5: return [2 /*return*/];
14470
15164
  }
14471
15165
  });
14472
15166
  }); };
14473
15167
  this.getPage = function (page) { return __awaiter(_this, void 0, void 0, function () {
14474
- var response_4, data_4, err_4;
14475
- var _this = this;
14476
- var _a, _b;
14477
- return __generator(this, function (_c) {
14478
- switch (_c.label) {
15168
+ var response, data, err_4;
15169
+ return __generator(this, function (_a) {
15170
+ switch (_a.label) {
14479
15171
  case 0:
14480
15172
  if (this._isLoading ||
14481
15173
  this.isStatic ||
@@ -14483,36 +15175,28 @@ var IkasProductList = /** @class */ (function () {
14483
15175
  this.isRecommended)
14484
15176
  return [2 /*return*/];
14485
15177
  this._isLoading = true;
14486
- _c.label = 1;
15178
+ _a.label = 1;
14487
15179
  case 1:
14488
- _c.trys.push([1, 3, 4, 5]);
14489
- return [4 /*yield*/, IkasProductAPI.listProducts({
14490
- page: this.page + 1,
14491
- limit: this.limit,
14492
- brandId: ((_a = this._filters) === null || _a === void 0 ? void 0 : _a.brand) ? this._filters.brand : undefined,
14493
- categoryIds: ((_b = this._filters) === null || _b === void 0 ? void 0 : _b.category) ? [this._filters.category]
14494
- : undefined,
14495
- })];
15180
+ _a.trys.push([1, 3, 4, 5]);
15181
+ return [4 /*yield*/, this.searchProducts(page, this.limit)];
14496
15182
  case 2:
14497
- response_4 = _c.sent();
14498
- data_4 = response_4.products.map(function (product) {
15183
+ response = _a.sent();
15184
+ if (!response)
15185
+ return [2 /*return*/];
15186
+ data = response.data.map(function (product) {
14499
15187
  return new IkasProductDetail(product, product.variants[0].variantValues);
14500
15188
  });
14501
- mobx.runInAction(function () {
14502
- _this.data = data_4;
14503
- _this._count = response_4.count;
14504
- _this._page = page;
14505
- _this._minPage = page;
14506
- });
15189
+ this.data = data;
15190
+ this._count = response.count;
15191
+ this._page = page;
15192
+ this._minPage = page;
14507
15193
  return [3 /*break*/, 5];
14508
15194
  case 3:
14509
- err_4 = _c.sent();
15195
+ err_4 = _a.sent();
14510
15196
  console.log(err_4);
14511
15197
  return [3 /*break*/, 5];
14512
15198
  case 4:
14513
- mobx.runInAction(function () {
14514
- _this._isLoading = false;
14515
- });
15199
+ this._isLoading = false;
14516
15200
  return [7 /*endfinally*/];
14517
15201
  case 5: return [2 /*return*/];
14518
15202
  }
@@ -14532,12 +15216,21 @@ var IkasProductList = /** @class */ (function () {
14532
15216
  this._limit = data.limit || data.productListPropValue.initialLimit || 20;
14533
15217
  this._page = data.page || 1;
14534
15218
  this._count = data.count || 0;
15219
+ this._searchKeyword = data.searchKeyword || "";
14535
15220
  this._productListPropValue = data.productListPropValue;
14536
- this._filters = data.filters
14537
- ? new IkasProductListFilter(data.filters)
14538
- : undefined;
15221
+ this._filterBrandId = data.filterBrandId || null;
15222
+ this._filterCategoryId = data.filterCategoryId || null;
14539
15223
  this._recommendFor = data.recommendFor;
15224
+ this.filters = data.filters
15225
+ ? data.filters.map(function (f) { return new IkasProductFilter(f); })
15226
+ : null;
15227
+ this.router = router;
14540
15228
  mobx.makeAutoObservable(this);
15229
+ console.log("constructor");
15230
+ if (this.isBrowser() && location.search) {
15231
+ var queryParams = this.getQueryParams();
15232
+ this.getInitial(queryParams);
15233
+ }
14541
15234
  }
14542
15235
  Object.defineProperty(IkasProductList.prototype, "sort", {
14543
15236
  get: function () {
@@ -14567,6 +15260,16 @@ var IkasProductList = /** @class */ (function () {
14567
15260
  enumerable: false,
14568
15261
  configurable: true
14569
15262
  });
15263
+ Object.defineProperty(IkasProductList.prototype, "searchKeyword", {
15264
+ get: function () {
15265
+ return this._searchKeyword;
15266
+ },
15267
+ set: function (value) {
15268
+ this._searchKeyword = value;
15269
+ },
15270
+ enumerable: false,
15271
+ configurable: true
15272
+ });
14570
15273
  Object.defineProperty(IkasProductList.prototype, "isInitialized", {
14571
15274
  get: function () {
14572
15275
  return this._initialized;
@@ -14574,6 +15277,22 @@ var IkasProductList = /** @class */ (function () {
14574
15277
  enumerable: false,
14575
15278
  configurable: true
14576
15279
  });
15280
+ Object.defineProperty(IkasProductList.prototype, "isFilterable", {
15281
+ get: function () {
15282
+ return (this._type === exports.IkasProductListType.ALL ||
15283
+ this._type === exports.IkasProductListType.CATEGORY);
15284
+ },
15285
+ enumerable: false,
15286
+ configurable: true
15287
+ });
15288
+ Object.defineProperty(IkasProductList.prototype, "isFiltered", {
15289
+ get: function () {
15290
+ var _a;
15291
+ return (_a = this.filters) === null || _a === void 0 ? void 0 : _a.some(function (f) { return !!f.valueList.length; });
15292
+ },
15293
+ enumerable: false,
15294
+ configurable: true
15295
+ });
14577
15296
  Object.defineProperty(IkasProductList.prototype, "isStatic", {
14578
15297
  get: function () {
14579
15298
  return this._type === exports.IkasProductListType.STATIC;
@@ -14623,8 +15342,111 @@ var IkasProductList = /** @class */ (function () {
14623
15342
  enumerable: false,
14624
15343
  configurable: true
14625
15344
  });
14626
- IkasProductList.prototype.applyFilters = function () {
14627
- return;
15345
+ Object.defineProperty(IkasProductList.prototype, "filterQueryParams", {
15346
+ get: function () {
15347
+ var _a;
15348
+ var queryParams = {};
15349
+ (_a = this.filters) === null || _a === void 0 ? void 0 : _a.forEach(function (f) {
15350
+ queryParams[f.key] = f.keyList;
15351
+ });
15352
+ return queryString.stringify(queryParams, { arrayFormat: "comma" });
15353
+ },
15354
+ enumerable: false,
15355
+ configurable: true
15356
+ });
15357
+ IkasProductList.prototype.searchProducts = function (page, limit) {
15358
+ var _a, _b;
15359
+ return __awaiter(this, void 0, void 0, function () {
15360
+ var filterList;
15361
+ return __generator(this, function (_c) {
15362
+ switch (_c.label) {
15363
+ case 0:
15364
+ filterList = [];
15365
+ if (this._filterBrandId) {
15366
+ filterList.push(new IkasProductFilterValue({
15367
+ id: this._filterBrandId,
15368
+ type: exports.IkasProductFilterType.BRAND,
15369
+ valueList: [this._filterBrandId],
15370
+ }));
15371
+ }
15372
+ (_a = this.filters) === null || _a === void 0 ? void 0 : _a.forEach(function (filter) {
15373
+ if (filter.valueList.length) {
15374
+ filterList.push(new IkasProductFilterValue({
15375
+ id: filter.id,
15376
+ type: filter.type,
15377
+ valueList: filter.valueList,
15378
+ }));
15379
+ }
15380
+ });
15381
+ return [4 /*yield*/, IkasProductSearchAPI.searchProducts({
15382
+ page: page,
15383
+ perPage: limit,
15384
+ productIdList: this.isStatic
15385
+ ? (_b = this._productListPropValue.productIds) === null || _b === void 0 ? void 0 : _b.map(function (p) { return p.productId; }) : undefined,
15386
+ filterList: filterList,
15387
+ categoryIdList: this._filterCategoryId
15388
+ ? [this._filterCategoryId]
15389
+ : undefined,
15390
+ query: this._searchKeyword,
15391
+ })];
15392
+ case 1: return [2 /*return*/, _c.sent()];
15393
+ }
15394
+ });
15395
+ });
15396
+ };
15397
+ IkasProductList.prototype.clear = function () {
15398
+ var _a;
15399
+ (_a = this.filters) === null || _a === void 0 ? void 0 : _a.forEach(function (filter) { return filter.clear(); });
15400
+ this._searchKeyword = "";
15401
+ };
15402
+ IkasProductList.prototype.getFilters = function () {
15403
+ return __awaiter(this, void 0, void 0, function () {
15404
+ var _a;
15405
+ return __generator(this, function (_b) {
15406
+ switch (_b.label) {
15407
+ case 0:
15408
+ _a = this;
15409
+ return [4 /*yield*/, IkasProductSearchAPI.getProductFilterData()];
15410
+ case 1:
15411
+ _a.filters = _b.sent();
15412
+ // this._filterCategoryId ? [this._filterCategoryId] : undefined
15413
+ if (this.filters)
15414
+ this.filters.sort(function (f1, f2) { return (f1.order > f2.order ? 1 : -1); });
15415
+ return [2 /*return*/];
15416
+ }
15417
+ });
15418
+ });
15419
+ };
15420
+ IkasProductList.prototype.applyQueryParamFilters = function (queryParams) {
15421
+ var _this = this;
15422
+ try {
15423
+ queryParams === null || queryParams === void 0 ? void 0 : queryParams.forEach(function (value, key) {
15424
+ var _a, _b, _c;
15425
+ var filter = (_a = _this.filters) === null || _a === void 0 ? void 0 : _a.find(function (f) { return f.key === key; });
15426
+ var valueKeys = value.split(",");
15427
+ if (filter) {
15428
+ if (filter.displayType === exports.IkasProductFilterDisplayType.NUMBER_RANGE) {
15429
+ filter.numberRange = new RangeValue(parseRangeStr(value));
15430
+ }
15431
+ else if (filter.displayType ===
15432
+ exports.IkasProductFilterDisplayType.NUMBER_RANGE_LIST) {
15433
+ (_b = filter.numberRangeListOptions) === null || _b === void 0 ? void 0 : _b.forEach(function (o) {
15434
+ if (valueKeys.includes(o.key))
15435
+ o.isSelected = true;
15436
+ });
15437
+ }
15438
+ else {
15439
+ (_c = filter.values) === null || _c === void 0 ? void 0 : _c.forEach(function (filterValue) {
15440
+ if (valueKeys.includes(filterValue.key))
15441
+ filterValue.isSelected = true;
15442
+ });
15443
+ }
15444
+ }
15445
+ });
15446
+ }
15447
+ catch (err) {
15448
+ console.log(err);
15449
+ }
14628
15450
  };
14629
15451
  IkasProductList.prototype.toJSON = function () {
14630
15452
  return {
@@ -14634,13 +15456,24 @@ var IkasProductList = /** @class */ (function () {
14634
15456
  limit: this._limit,
14635
15457
  page: this._page,
14636
15458
  count: this._count,
15459
+ searchKeyword: this._searchKeyword,
14637
15460
  initialized: this._initialized,
14638
15461
  minPage: this._minPage,
14639
- filters: this._filters,
15462
+ pageBrandId: this._filterBrandId,
15463
+ pageCategoryId: this._filterCategoryId,
15464
+ filters: this.filters,
14640
15465
  recommendFor: this._recommendFor,
14641
15466
  productListPropValue: this._productListPropValue,
14642
15467
  };
14643
15468
  };
15469
+ IkasProductList.prototype.getQueryParams = function () {
15470
+ if (!this.isBrowser())
15471
+ return;
15472
+ return new URLSearchParams(location.search);
15473
+ };
15474
+ IkasProductList.prototype.isBrowser = function () {
15475
+ return typeof window !== "undefined";
15476
+ };
14644
15477
  return IkasProductList;
14645
15478
  }());
14646
15479
  (function (IkasProductListType) {
@@ -19435,6 +20268,8 @@ var AddressForm = /** @class */ (function () {
19435
20268
  this.store = props.store;
19436
20269
  this.validator = new Validator(this.address, this.validatorRules());
19437
20270
  this.listCountries();
20271
+ if (this.address.state)
20272
+ this.listStates();
19438
20273
  if (this.address.country)
19439
20274
  this.listCities();
19440
20275
  if (this.address.city)
@@ -21889,7 +22724,7 @@ var IkasVariantTypeAPI = /** @class */ (function () {
21889
22724
  id: vv.id,
21890
22725
  name: vv.name,
21891
22726
  colorCode: vv.colorCode,
21892
- thumbnilImageId: vv.thumbnailImageId,
22727
+ thumbnailImageId: vv.thumbnailImageId,
21893
22728
  variantTypeId: vt.id,
21894
22729
  });
21895
22730
  }),
@@ -22147,6 +22982,220 @@ var IkasProductAPI = /** @class */ (function () {
22147
22982
  }());
22148
22983
  var templateObject_1$d;
22149
22984
 
22985
+ var IkasProductSearchAPI = /** @class */ (function () {
22986
+ function IkasProductSearchAPI() {
22987
+ }
22988
+ IkasProductSearchAPI.searchProducts = function (input) {
22989
+ return __awaiter(this, void 0, void 0, function () {
22990
+ var SEARCH_PRODUCTS, _a, data, errors, err_1;
22991
+ return __generator(this, function (_b) {
22992
+ switch (_b.label) {
22993
+ case 0:
22994
+ _b.trys.push([0, 2, , 3]);
22995
+ SEARCH_PRODUCTS = src(templateObject_1$e || (templateObject_1$e = __makeTemplateObject(["\n query searchProducts($input: SearchInput!) {\n searchProducts(input: $input) {\n count\n data\n facets {\n id\n values {\n count\n id\n }\n }\n limit\n page\n totalCount\n }\n }\n "], ["\n query searchProducts($input: SearchInput!) {\n searchProducts(input: $input) {\n count\n data\n facets {\n id\n values {\n count\n id\n }\n }\n limit\n page\n totalCount\n }\n }\n "])));
22996
+ return [4 /*yield*/, apollo
22997
+ .getClient()
22998
+ .query({
22999
+ query: SEARCH_PRODUCTS,
23000
+ variables: {
23001
+ input: input,
23002
+ },
23003
+ })];
23004
+ case 1:
23005
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
23006
+ if (errors && errors.length) {
23007
+ console.log(errors);
23008
+ return [2 /*return*/];
23009
+ }
23010
+ return [2 /*return*/, __assign(__assign({}, data.searchProducts), { data: data.searchProducts.data.map(function (d) {
23011
+ return simpleToProduct(d);
23012
+ }) })];
23013
+ case 2:
23014
+ err_1 = _b.sent();
23015
+ console.log(err_1);
23016
+ return [3 /*break*/, 3];
23017
+ case 3: return [2 /*return*/];
23018
+ }
23019
+ });
23020
+ });
23021
+ };
23022
+ IkasProductSearchAPI.getProductFilterData = function (categoryIds) {
23023
+ return __awaiter(this, void 0, void 0, function () {
23024
+ var QUERY, _a, data, errors, err_2;
23025
+ return __generator(this, function (_b) {
23026
+ switch (_b.label) {
23027
+ case 0:
23028
+ _b.trys.push([0, 2, , 3]);
23029
+ QUERY = src(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject(["\n query getProductFilterData($categoryIds: [String!]) {\n getProductFilterData(categoryIds: $categoryIds) {\n customValues\n displayType\n id\n isMultiSelect\n key\n name\n order\n type\n values {\n colorCode\n id\n key\n name\n thumbnailImageId\n }\n }\n }\n "], ["\n query getProductFilterData($categoryIds: [String!]) {\n getProductFilterData(categoryIds: $categoryIds) {\n customValues\n displayType\n id\n isMultiSelect\n key\n name\n order\n type\n values {\n colorCode\n id\n key\n name\n thumbnailImageId\n }\n }\n }\n "])));
23030
+ return [4 /*yield*/, apollo
23031
+ .getClient()
23032
+ .query({
23033
+ query: QUERY,
23034
+ variables: {
23035
+ categoryIds: categoryIds || null,
23036
+ },
23037
+ })];
23038
+ case 1:
23039
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
23040
+ if (errors && errors.length) {
23041
+ console.log(errors);
23042
+ return [2 /*return*/];
23043
+ }
23044
+ return [2 /*return*/, data.getProductFilterData.map(function (d) {
23045
+ var _a;
23046
+ return new IkasProductFilter(__assign(__assign({}, d), { displayType: d.displayType, type: d.type, values: (_a = d.values) === null || _a === void 0 ? void 0 : _a.map(function (v) { return new IkasApplicableProductFilterValue(v); }) }));
23047
+ })];
23048
+ case 2:
23049
+ err_2 = _b.sent();
23050
+ console.log(err_2);
23051
+ return [3 /*break*/, 3];
23052
+ case 3: return [2 /*return*/];
23053
+ }
23054
+ });
23055
+ });
23056
+ };
23057
+ return IkasProductSearchAPI;
23058
+ }());
23059
+ function simpleToProduct(simple) {
23060
+ var _a, _b, _c, _d, _e;
23061
+ return new IkasProduct({
23062
+ id: simple.id,
23063
+ attributes: (_a = simple.attributes) === null || _a === void 0 ? void 0 : _a.map(function (a) {
23064
+ var _a, _b, _c, _d, _e;
23065
+ return new IkasProductAttributeValue({
23066
+ value: a.value,
23067
+ productAttributeId: (_a = a.productAttribute) === null || _a === void 0 ? void 0 : _a.id,
23068
+ productAttributeOptionId: (_b = a.productAttributeOption) === null || _b === void 0 ? void 0 : _b.id,
23069
+ productAttribute: new IkasProductAttribute({
23070
+ id: (_c = a.productAttribute) === null || _c === void 0 ? void 0 : _c.id,
23071
+ name: (_d = a.productAttribute) === null || _d === void 0 ? void 0 : _d.name,
23072
+ type: (_e = a.productAttribute) === null || _e === void 0 ? void 0 : _e.type,
23073
+ }),
23074
+ productAttributeOption: a.productAttributeOption,
23075
+ });
23076
+ }),
23077
+ brand: new IkasBrand({
23078
+ id: (_b = simple.brand) === null || _b === void 0 ? void 0 : _b.id,
23079
+ name: (_c = simple.brand) === null || _c === void 0 ? void 0 : _c.name,
23080
+ metaData: new IkasHTMLMetaData({
23081
+ slug: ((_d = simple.brand) === null || _d === void 0 ? void 0 : _d.slug) || "",
23082
+ }),
23083
+ }),
23084
+ categories: (_e = simple.categories) === null || _e === void 0 ? void 0 : _e.map(function (c) {
23085
+ return new IkasCategory({
23086
+ id: c.id,
23087
+ name: c.name,
23088
+ path: c.path,
23089
+ metaData: new IkasHTMLMetaData({
23090
+ slug: c.slug || "",
23091
+ }),
23092
+ });
23093
+ }),
23094
+ description: simple.description || undefined,
23095
+ metaData: new IkasHTMLMetaData(simple.metaData || undefined),
23096
+ name: simple.name,
23097
+ shortDescription: simple.shortDescription || undefined,
23098
+ taxValue: simple.taxValue || undefined,
23099
+ type: simple.type || undefined,
23100
+ variantTypes: simple.productVariantTypes.map(function (pvt) {
23101
+ return new IkasProductVariantType({
23102
+ variantType: new IkasVariantType({
23103
+ id: pvt.variantType.id,
23104
+ name: pvt.variantType.name,
23105
+ selectionType: pvt.variantType.selectionType,
23106
+ values: pvt.variantType.values
23107
+ .map(function (v) {
23108
+ return new IkasVariantValue({
23109
+ id: v.id,
23110
+ colorCode: v.colorCode,
23111
+ name: v.name,
23112
+ thumbnailImageId: v.thumbnailImageId,
23113
+ variantTypeId: pvt.variantType.id,
23114
+ });
23115
+ })
23116
+ .filter(function (v) { return pvt.variantValueIds.includes(v.id); }),
23117
+ }),
23118
+ variantValueIds: pvt.variantValueIds,
23119
+ });
23120
+ }),
23121
+ variants: simple.variants.map(function (v) {
23122
+ var _a, _b, _c, _d;
23123
+ return new IkasProductVariant({
23124
+ id: v.id,
23125
+ attributes: (_a = v.attributes) === null || _a === void 0 ? void 0 : _a.map(function (a) {
23126
+ var _a, _b, _c, _d, _e;
23127
+ return new IkasProductAttributeValue({
23128
+ value: a.value,
23129
+ productAttributeId: (_a = a.productAttribute) === null || _a === void 0 ? void 0 : _a.id,
23130
+ productAttributeOptionId: (_b = a.productAttributeOption) === null || _b === void 0 ? void 0 : _b.id,
23131
+ productAttribute: new IkasProductAttribute({
23132
+ id: (_c = a.productAttribute) === null || _c === void 0 ? void 0 : _c.id,
23133
+ name: (_d = a.productAttribute) === null || _d === void 0 ? void 0 : _d.name,
23134
+ type: (_e = a.productAttribute) === null || _e === void 0 ? void 0 : _e.type,
23135
+ }),
23136
+ productAttributeOption: a.productAttributeOption,
23137
+ });
23138
+ }),
23139
+ sku: v.sku,
23140
+ barcodeList: v.barcodeList || undefined,
23141
+ images: (_b = v.images) === null || _b === void 0 ? void 0 : _b.map(function (i) { return new IkasImage(i.id); }),
23142
+ price: new IkasProductPrice((_c = v.prices) === null || _c === void 0 ? void 0 : _c.find(function (p) { return p.priceListId === null; })),
23143
+ stock: v.stocks.length ? v.stocks[0].stockCount : 0,
23144
+ variantValues: (_d = v.variantValues) === null || _d === void 0 ? void 0 : _d.map(function (vv) {
23145
+ var _a;
23146
+ var variantValue = (_a = simple.productVariantTypes
23147
+ .find(function (pvt) { return pvt.variantType.id === vv.variantTypeId; })) === null || _a === void 0 ? void 0 : _a.variantType.values.find(function (_vv) { return _vv.id === vv.variantValueId; });
23148
+ return new IkasVariantValue({
23149
+ id: vv.variantValueId,
23150
+ name: variantValue === null || variantValue === void 0 ? void 0 : variantValue.name,
23151
+ colorCode: variantValue === null || variantValue === void 0 ? void 0 : variantValue.colorCode,
23152
+ thumbnailImageId: variantValue === null || variantValue === void 0 ? void 0 : variantValue.thumbnailImageId,
23153
+ });
23154
+ }),
23155
+ });
23156
+ }),
23157
+ });
23158
+ }
23159
+ var templateObject_1$e, templateObject_2$4;
23160
+ // type SearchInput = {
23161
+ // categoryIdList: string[] | null;
23162
+ // filterList: SearchInputFilter[] | null;
23163
+ // order: SearchInputOrder[] | null;
23164
+ // page: number | null;
23165
+ // perPage: number | null;
23166
+ // priceListId: string | null;
23167
+ // productId: string | null;
23168
+ // query: string | null;
23169
+ // slug: string | null;
23170
+ // };
23171
+ // type SearchInputFilter = {
23172
+ // id: string;
23173
+ // type: ProductFilterType;
23174
+ // valueList: string[];
23175
+ // };
23176
+ // export type SearchInputOrder = {
23177
+ // direction: SortByDirection;
23178
+ // type: SortByType;
23179
+ // };
23180
+ // enum SortByDirection {
23181
+ // ASC = "ASC",
23182
+ // DESC = "DESC",
23183
+ // }
23184
+ // enum SortByType {
23185
+ // CREATED_AT = "CREATED_AT",
23186
+ // DISCOUNT_RATIO = "DISCOUNT_RATIO",
23187
+ // PRICE = "PRICE",
23188
+ // }
23189
+ // export enum ProductFilterType {
23190
+ // ATTRIBUTE = "ATTRIBUTE",
23191
+ // BRAND = "BRAND",
23192
+ // DISCOUNT_RATIO = "DISCOUNT_RATIO",
23193
+ // PRICE = "PRICE",
23194
+ // STOCK_STATUS = "STOCK_STATUS",
23195
+ // TAG = "TAG",
23196
+ // VARIANT_TYPE = "VARIANT_TYPE",
23197
+ // }
23198
+
22150
23199
  var IkasProductAttributeAPI = /** @class */ (function () {
22151
23200
  function IkasProductAttributeAPI() {
22152
23201
  }
@@ -22156,7 +23205,7 @@ var IkasProductAttributeAPI = /** @class */ (function () {
22156
23205
  return __generator(this, function (_b) {
22157
23206
  switch (_b.label) {
22158
23207
  case 0:
22159
- LIST_PRODUCT_ATTRIBUTES = src(templateObject_1$e || (templateObject_1$e = __makeTemplateObject(["\n query listProductAttribute($id: StringFilterInput!) {\n listProductAttribute(id: $id) {\n id\n createdAt\n updatedAt\n deleted\n name\n description\n type\n options {\n id\n createdAt\n updatedAt\n deleted\n name\n }\n }\n }\n "], ["\n query listProductAttribute($id: StringFilterInput!) {\n listProductAttribute(id: $id) {\n id\n createdAt\n updatedAt\n deleted\n name\n description\n type\n options {\n id\n createdAt\n updatedAt\n deleted\n name\n }\n }\n }\n "])));
23208
+ LIST_PRODUCT_ATTRIBUTES = src(templateObject_1$f || (templateObject_1$f = __makeTemplateObject(["\n query listProductAttribute($id: StringFilterInput!) {\n listProductAttribute(id: $id) {\n id\n createdAt\n updatedAt\n deleted\n name\n description\n type\n options {\n id\n createdAt\n updatedAt\n deleted\n name\n }\n }\n }\n "], ["\n query listProductAttribute($id: StringFilterInput!) {\n listProductAttribute(id: $id) {\n id\n createdAt\n updatedAt\n deleted\n name\n description\n type\n options {\n id\n createdAt\n updatedAt\n deleted\n name\n }\n }\n }\n "])));
22160
23209
  _b.label = 1;
22161
23210
  case 1:
22162
23211
  _b.trys.push([1, 3, , 4]);
@@ -22189,7 +23238,7 @@ var IkasProductAttributeAPI = /** @class */ (function () {
22189
23238
  };
22190
23239
  return IkasProductAttributeAPI;
22191
23240
  }());
22192
- var templateObject_1$e;
23241
+ var templateObject_1$f;
22193
23242
 
22194
23243
  var IkasStateAPI = /** @class */ (function () {
22195
23244
  function IkasStateAPI() {
@@ -22200,7 +23249,7 @@ var IkasStateAPI = /** @class */ (function () {
22200
23249
  return __generator(this, function (_b) {
22201
23250
  switch (_b.label) {
22202
23251
  case 0:
22203
- QUERY = src(templateObject_1$f || (templateObject_1$f = __makeTemplateObject(["\n query listState($countryId: StringFilterInput!) {\n listState(countryId: $countryId) {\n id\n name\n stateCode\n }\n }\n "], ["\n query listState($countryId: StringFilterInput!) {\n listState(countryId: $countryId) {\n id\n name\n stateCode\n }\n }\n "])));
23252
+ QUERY = src(templateObject_1$g || (templateObject_1$g = __makeTemplateObject(["\n query listState($countryId: StringFilterInput!) {\n listState(countryId: $countryId) {\n id\n name\n stateCode\n }\n }\n "], ["\n query listState($countryId: StringFilterInput!) {\n listState(countryId: $countryId) {\n id\n name\n stateCode\n }\n }\n "])));
22204
23253
  _b.label = 1;
22205
23254
  case 1:
22206
23255
  _b.trys.push([1, 3, , 4]);
@@ -22237,7 +23286,7 @@ var IkasStateAPI = /** @class */ (function () {
22237
23286
  };
22238
23287
  return IkasStateAPI;
22239
23288
  }());
22240
- var templateObject_1$f;
23289
+ var templateObject_1$g;
22241
23290
 
22242
23291
  var IkasStorefrontDomain = /** @class */ (function () {
22243
23292
  function IkasStorefrontDomain(data) {
@@ -22330,7 +23379,7 @@ var IkasStorefrontAPI = /** @class */ (function () {
22330
23379
  return __generator(this, function (_b) {
22331
23380
  switch (_b.label) {
22332
23381
  case 0:
22333
- QUERY = src(templateObject_1$g || (templateObject_1$g = __makeTemplateObject(["\n query getStorefront($storefrontId: String!) {\n getStorefront(id: $storefrontId) {\n id\n name\n themeId\n themeVersionId\n userId\n # domains {\n # id\n # merchantDomainId\n # name\n # redirectDomainName\n # }\n regions {\n id\n locale\n # themeJSON\n privacyPolicy\n returnPolicy\n termsOfService\n }\n }\n }\n "], ["\n query getStorefront($storefrontId: String!) {\n getStorefront(id: $storefrontId) {\n id\n name\n themeId\n themeVersionId\n userId\n # domains {\n # id\n # merchantDomainId\n # name\n # redirectDomainName\n # }\n regions {\n id\n locale\n # themeJSON\n privacyPolicy\n returnPolicy\n termsOfService\n }\n }\n }\n "])));
23382
+ QUERY = src(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(["\n query getStorefront($storefrontId: String!) {\n getStorefront(id: $storefrontId) {\n id\n name\n themeId\n themeVersionId\n userId\n # domains {\n # id\n # merchantDomainId\n # name\n # redirectDomainName\n # }\n regions {\n id\n locale\n # themeJSON\n privacyPolicy\n returnPolicy\n termsOfService\n }\n }\n }\n "], ["\n query getStorefront($storefrontId: String!) {\n getStorefront(id: $storefrontId) {\n id\n name\n themeId\n themeVersionId\n userId\n # domains {\n # id\n # merchantDomainId\n # name\n # redirectDomainName\n # }\n regions {\n id\n locale\n # themeJSON\n privacyPolicy\n returnPolicy\n termsOfService\n }\n }\n }\n "])));
22334
23383
  _b.label = 1;
22335
23384
  case 1:
22336
23385
  _b.trys.push([1, 3, , 4]);
@@ -22360,7 +23409,7 @@ var IkasStorefrontAPI = /** @class */ (function () {
22360
23409
  };
22361
23410
  return IkasStorefrontAPI;
22362
23411
  }());
22363
- var templateObject_1$g;
23412
+ var templateObject_1$h;
22364
23413
 
22365
23414
  var IkasThemeAPI = /** @class */ (function () {
22366
23415
  function IkasThemeAPI() {
@@ -22779,6 +23828,7 @@ var CheckoutViewModel = /** @class */ (function () {
22779
23828
  lines = this.cart.items.map(function (i) { return ({
22780
23829
  quantity: i.quantity,
22781
23830
  variantId: i.variant.id,
23831
+ productId: i.variant.productId,
22782
23832
  }); });
22783
23833
  return [4 /*yield*/, IkasCheckoutAPI.checkStocks(lines)];
22784
23834
  case 1:
@@ -24984,9 +26034,63 @@ var PolicyModal = mobxReactLite.observer(function (_a) {
24984
26034
  });
24985
26035
 
24986
26036
  var IkasPageHead = mobxReactLite.observer(function (_a) {
26037
+ var _b;
24987
26038
  var page = _a.page, pageTitle = _a.pageTitle, description = _a.description, pageSpecificDataStr = _a.pageSpecificDataStr, props = __rest(_a, ["page", "pageTitle", "description", "pageSpecificDataStr"]);
26039
+ var ogpMetas = [];
24988
26040
  var schemas = [];
26041
+ var isCanonicalLinkAdd = false;
26042
+ var canonicalHref = "";
26043
+ if (props.addOgpMetas) {
26044
+ ogpMetas.push({
26045
+ property: "og:type",
26046
+ content: "website",
26047
+ });
26048
+ if (typeof window !== "undefined") {
26049
+ ogpMetas.push({
26050
+ property: "og:site_name",
26051
+ content: "https://" + window.location.hostname,
26052
+ });
26053
+ }
26054
+ if (pageTitle) {
26055
+ ogpMetas.push({
26056
+ property: "og:title",
26057
+ content: pageTitle,
26058
+ });
26059
+ }
26060
+ if (description) {
26061
+ ogpMetas.push({
26062
+ property: "og:description",
26063
+ content: description,
26064
+ });
26065
+ }
26066
+ if (typeof window !== "undefined") {
26067
+ ogpMetas.push({
26068
+ property: "og:url",
26069
+ content: window.location.href,
26070
+ });
26071
+ }
26072
+ if (props.merchantSettings) {
26073
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
26074
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
26075
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
26076
+ if (productDetail.selectedVariant.mainImage) {
26077
+ ogpMetas.push({
26078
+ property: "og:image",
26079
+ content: (_b = productDetail.selectedVariant.mainImage) === null || _b === void 0 ? void 0 : _b.src,
26080
+ });
26081
+ }
26082
+ }
26083
+ else {
26084
+ var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
26085
+ ogpMetas.push({
26086
+ property: "og:image",
26087
+ content: merchantSettings.logo.src,
26088
+ });
26089
+ }
26090
+ }
26091
+ }
24989
26092
  if (props.merchantSettings) {
26093
+ // for schema.org
24990
26094
  var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
24991
26095
  var websiteSchema = createWebsiteSchema();
24992
26096
  var storeSchema = createStoreSchema(merchantSettings);
@@ -24994,7 +26098,15 @@ var IkasPageHead = mobxReactLite.observer(function (_a) {
24994
26098
  schemas.push(storeSchema);
24995
26099
  }
24996
26100
  if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
24997
- var schema = createProductSchema(pageSpecificDataStr);
26101
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
26102
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
26103
+ if (typeof window !== "undefined" && productDetail.product.hasVariant) {
26104
+ isCanonicalLinkAdd =
26105
+ window.location.pathname !== productDetail.product.href;
26106
+ canonicalHref =
26107
+ "https://" + window.location.hostname + productDetail.product.href;
26108
+ }
26109
+ var schema = createProductSchema(productDetail);
24998
26110
  if (schema)
24999
26111
  schemas.push(schema);
25000
26112
  }
@@ -25011,12 +26123,15 @@ var IkasPageHead = mobxReactLite.observer(function (_a) {
25011
26123
  return (React.createElement(Head__default['default'], null,
25012
26124
  React.createElement("title", null, pageTitle || ""),
25013
26125
  React.createElement("meta", { name: "description", content: description || "" }),
26126
+ isCanonicalLinkAdd && React.createElement("link", { rel: "canonical", href: canonicalHref }),
26127
+ !!props.addOgpMetas &&
26128
+ ogpMetas.map(function (ogpMeta, index) { return (React.createElement("meta", { key: ogpMeta.content + "-" + index, property: ogpMeta.property, content: ogpMeta.content })); }),
25014
26129
  !!schemas.length &&
25015
26130
  schemas.map(function (schema, index) { return (React.createElement("script", { key: index, type: "application/ld+json", dangerouslySetInnerHTML: {
25016
26131
  __html: JSON.stringify(schema),
25017
26132
  } })); })));
25018
26133
  });
25019
- function createWebsiteSchema(merchantSettings) {
26134
+ function createWebsiteSchema() {
25020
26135
  var _a;
25021
26136
  var hostname = "";
25022
26137
  if (typeof window !== "undefined") {
@@ -25042,11 +26157,9 @@ function createStoreSchema(merchantSettings) {
25042
26157
  url: "https://" + hostname,
25043
26158
  };
25044
26159
  }
25045
- function createProductSchema(pageSpecificDataStr) {
26160
+ function createProductSchema(productDetail) {
25046
26161
  var _a;
25047
26162
  try {
25048
- var productDetailParsed = JSON.parse(pageSpecificDataStr);
25049
- var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
25050
26163
  var isBrowser = typeof window !== "undefined";
25051
26164
  if (isBrowser) {
25052
26165
  var urlParams = new URLSearchParams(window.location.search);
@@ -25288,7 +26401,7 @@ var ThemeComponent = mobxReactLite.observer(function (_a) {
25288
26401
 
25289
26402
  var IkasPage = mobxReactLite.observer(function (_a) {
25290
26403
  var _b, _c;
25291
- var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
26404
+ var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, addOgpMetas = _a.addOgpMetas;
25292
26405
  var renderComponent = function (pageComponent, index) {
25293
26406
  var pageComponentPropValue = propValues.find(function (pv) { return pv.pageComponent.id === pageComponent.id; });
25294
26407
  return (React.createElement(ThemeComponent, { key: pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, pageComponent: pageComponent, settingsStr: settingsStr }));
@@ -25301,7 +26414,7 @@ var IkasPage = mobxReactLite.observer(function (_a) {
25301
26414
  if (!page)
25302
26415
  return null;
25303
26416
  return (React.createElement(React.Fragment, null,
25304
- React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings }),
26417
+ React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings, addOgpMetas: addOgpMetas }),
25305
26418
  React.createElement("div", { style: pageStyle },
25306
26419
  React.createElement("div", null,
25307
26420
  headerComponent && renderComponent(headerComponent, -1),
@@ -25563,7 +26676,7 @@ var PageViewModel = /** @class */ (function () {
25563
26676
  _this.theme.components[index] = new IkasThemeComponent(data.component);
25564
26677
  };
25565
26678
  this.handleAddNewPageComponent = function (data) { return __awaiter(_this, void 0, void 0, function () {
25566
- var pageComponent, pageComponentPropValue;
26679
+ var pageComponent, pageComponentPropValues;
25567
26680
  var _this = this;
25568
26681
  var _a;
25569
26682
  return __generator(this, function (_b) {
@@ -25574,10 +26687,14 @@ var PageViewModel = /** @class */ (function () {
25574
26687
  return [2 /*return*/];
25575
26688
  return [4 /*yield*/, this.pageDataProvider.getPageComponentPropValues(pageComponent)];
25576
26689
  case 1:
25577
- pageComponentPropValue = _b.sent();
26690
+ pageComponentPropValues = _b.sent();
25578
26691
  mobx.runInAction(function () {
25579
26692
  var _a;
25580
- _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValue);
26693
+ var customDataProps = pageComponentPropValues.component.props.filter(function (p) { return p.type === exports.IkasThemeComponentPropType.CUSTOM; });
26694
+ customDataProps.forEach(function (customDataProp) {
26695
+ IkasPageDataProvider.initCustomDataPropValue(customDataProp, pageComponentPropValues.propValues[customDataProp.name], pageComponentPropValues, _this.router, true);
26696
+ });
26697
+ _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValues);
25581
26698
  (_a = _this.page) === null || _a === void 0 ? void 0 : _a.components.push(pageComponent);
25582
26699
  });
25583
26700
  return [2 /*return*/];
@@ -25746,6 +26863,10 @@ var pageStyle$1 = {
25746
26863
  justifyContent: "space-between",
25747
26864
  };
25748
26865
 
26866
+ var Image = function (props) {
26867
+ return React.createElement(Image__default['default'], __assign({}, props, { unoptimized: true, quality: 100 }));
26868
+ };
26869
+
25749
26870
  var GTMHead = function (_a) {
25750
26871
  var blockHTML = _a.blockHTML;
25751
26872
  var gtmId = process.env.GTM_ID;
@@ -25774,6 +26895,7 @@ var index = /*#__PURE__*/Object.freeze({
25774
26895
  IkasPage: IkasPage,
25775
26896
  IkasPageHead: IkasPageHead,
25776
26897
  IkasPageEditor: IkasPageEditor,
26898
+ Image: Image,
25777
26899
  GTMHead: GTMHead,
25778
26900
  GTMBody: GTMBody,
25779
26901
  GTMPageView: GTMPageView,
@@ -25790,7 +26912,7 @@ var Page = function (_a) {
25790
26912
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25791
26913
  var router$1 = router.useRouter();
25792
26914
  var propValues = IkasPageDataProvider.initPropValues(propValuesStr, router$1);
25793
- return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
26915
+ return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues, addOgpMetas: true }));
25794
26916
  };
25795
26917
  var getStaticProps = function (context) { return __awaiter(void 0, void 0, void 0, function () {
25796
26918
  var theme, provider;
@@ -25818,7 +26940,8 @@ var Page$1 = function (_a) {
25818
26940
  var page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25819
26941
  var router$1 = router.useRouter();
25820
26942
  var _b = React.useState(false), isBrowser = _b[0], setIsBrowser = _b[1];
25821
- var _c = React.useState(IkasPageDataProvider.initPropValues(propValuesStr, router$1)), propValues = _c[0], setPropValues = _c[1];
26943
+ var initialPropValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
26944
+ var _c = React.useState(initialPropValues), propValues = _c[0], setPropValues = _c[1];
25822
26945
  React.useEffect(function () {
25823
26946
  setIsBrowser(typeof window !== "undefined");
25824
26947
  }, []);
@@ -25826,7 +26949,7 @@ var Page$1 = function (_a) {
25826
26949
  setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, isBrowser));
25827
26950
  }, [isBrowser, propValuesStr]);
25828
26951
  handleGTM(page, pageSpecificDataStr);
25829
- return (React.createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings }));
26952
+ return (React.createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings, addOgpMetas: true }));
25830
26953
  };
25831
26954
  var index$1 = mobxReactLite.observer(Page$1);
25832
26955
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -26325,6 +27448,7 @@ exports.GTMPageView = GTMPageView;
26325
27448
  exports.GTMProductView = GTMProductView;
26326
27449
  exports.GTMPurchase = GTMPurchase;
26327
27450
  exports.GTMRemoveFromCart = GTMRemoveFromCart;
27451
+ exports.IkasApplicableProductFilterValue = IkasApplicableProductFilterValue;
26328
27452
  exports.IkasBaseStore = IkasBaseStore;
26329
27453
  exports.IkasBrand = IkasBrand;
26330
27454
  exports.IkasBrandAPI = IkasBrandAPI;
@@ -26368,10 +27492,12 @@ exports.IkasProductAttributeAPI = IkasProductAttributeAPI;
26368
27492
  exports.IkasProductAttributeValue = IkasProductAttributeValue;
26369
27493
  exports.IkasProductDetail = IkasProductDetail;
26370
27494
  exports.IkasProductDetailPropValue = IkasProductDetailPropValue;
27495
+ exports.IkasProductFilter = IkasProductFilter;
27496
+ exports.IkasProductFilterValue = IkasProductFilterValue;
26371
27497
  exports.IkasProductList = IkasProductList;
26372
- exports.IkasProductListFilter = IkasProductListFilter;
26373
27498
  exports.IkasProductListPropValue = IkasProductListPropValue;
26374
27499
  exports.IkasProductPrice = IkasProductPrice;
27500
+ exports.IkasProductSearchAPI = IkasProductSearchAPI;
26375
27501
  exports.IkasProductVariant = IkasProductVariant;
26376
27502
  exports.IkasProductVariantType = IkasProductVariantType;
26377
27503
  exports.IkasStateAPI = IkasStateAPI;
@@ -26388,6 +27514,7 @@ exports.IkasThemeSettings = IkasThemeSettings;
26388
27514
  exports.IkasVariantType = IkasVariantType;
26389
27515
  exports.IkasVariantTypeAPI = IkasVariantTypeAPI;
26390
27516
  exports.IkasVariantValue = IkasVariantValue;
27517
+ exports.Image = Image;
26391
27518
  exports.IndexPage = home;
26392
27519
  exports.LessThanRule = LessThanRule;
26393
27520
  exports.LoginForm = LoginForm;
@@ -26397,6 +27524,7 @@ exports.MinRule = MinRule;
26397
27524
  exports.OrderDetailPage = _id_$2;
26398
27525
  exports.OrdersPage = index$4;
26399
27526
  exports.PhoneRule = PhoneRule;
27527
+ exports.RangeValue = RangeValue;
26400
27528
  exports.RecoverPasswordForm = RecoverPasswordForm;
26401
27529
  exports.RecoverPasswordPage = recoverPassword;
26402
27530
  exports.RegisterForm = RegisterForm;
@@ -26408,6 +27536,7 @@ exports.Validator = Validator;
26408
27536
  exports.apollo = apollo;
26409
27537
  exports.decodeBase64 = decodeBase64;
26410
27538
  exports.formatMoney = formatMoney;
27539
+ exports.parseRangeStr = parseRangeStr;
26411
27540
  exports.pascalCase = pascalCase;
26412
27541
  exports.stringToSlug = stringToSlug;
26413
27542
  exports.validatePhoneNumber = validatePhoneNumber;