@ikas/storefront 0.0.122 → 0.0.123

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
@@ -5,10 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var mobx = require('mobx');
6
6
  var React = require('react');
7
7
  var mobxReactLite = require('mobx-react-lite');
8
+ var Head = require('next/head');
8
9
  var router = require('next/router');
9
10
  var Image$1 = require('next/image');
10
11
  var Link = require('next/link');
11
- var Head = require('next/head');
12
12
  var fs = require('fs');
13
13
  var getConfig = require('next/config');
14
14
  var dynamic = require('next/dynamic');
@@ -17,9 +17,9 @@ var Error$1 = require('next/error');
17
17
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
18
 
19
19
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+ var Head__default = /*#__PURE__*/_interopDefaultLegacy(Head);
20
21
  var Image__default = /*#__PURE__*/_interopDefaultLegacy(Image$1);
21
22
  var Link__default = /*#__PURE__*/_interopDefaultLegacy(Link);
22
- var Head__default = /*#__PURE__*/_interopDefaultLegacy(Head);
23
23
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
24
24
  var getConfig__default = /*#__PURE__*/_interopDefaultLegacy(getConfig);
25
25
  var dynamic__default = /*#__PURE__*/_interopDefaultLegacy(dynamic);
@@ -11401,12 +11401,27 @@ var IkasCategoryListPropValueProvider = /** @class */ (function () {
11401
11401
  return IkasCategoryListPropValueProvider;
11402
11402
  }());
11403
11403
 
11404
+ var IkasRichTextPropValueProvider = /** @class */ (function () {
11405
+ function IkasRichTextPropValueProvider(textPropValue) {
11406
+ this.text = textPropValue;
11407
+ }
11408
+ IkasRichTextPropValueProvider.prototype.getValue = function () {
11409
+ return __awaiter(this, void 0, void 0, function () {
11410
+ return __generator(this, function (_a) {
11411
+ return [2 /*return*/, this.text];
11412
+ });
11413
+ });
11414
+ };
11415
+ return IkasRichTextPropValueProvider;
11416
+ }());
11417
+
11404
11418
  var IkasCustomPropValueProvider = /** @class */ (function () {
11405
- function IkasCustomPropValueProvider(value, customData, theme, pageType, pageSpecificData, pageParams) {
11419
+ function IkasCustomPropValueProvider(value, customData, theme, pageType, pageDataProvider, pageSpecificData, pageParams) {
11406
11420
  this.value = value;
11407
11421
  this.customData = customData;
11408
11422
  this.theme = theme;
11409
11423
  this.pageType = pageType;
11424
+ this.pageDataProvider = pageDataProvider;
11410
11425
  this.pageSpecificData = pageSpecificData;
11411
11426
  this.pageParams = pageParams;
11412
11427
  }
@@ -11420,89 +11435,100 @@ var IkasCustomPropValueProvider = /** @class */ (function () {
11420
11435
  return [2 /*return*/];
11421
11436
  _b.label = 1;
11422
11437
  case 1:
11423
- _b.trys.push([1, 32, , 33]);
11438
+ _b.trys.push([1, 36, , 37]);
11424
11439
  _a = this.customData.type;
11425
11440
  switch (_a) {
11426
11441
  case exports.IkasThemeCustomDataType.TEXT: return [3 /*break*/, 2];
11427
- case exports.IkasThemeCustomDataType.BOOLEAN: return [3 /*break*/, 4];
11428
- case exports.IkasThemeCustomDataType.BRAND_LIST: return [3 /*break*/, 6];
11429
- case exports.IkasThemeCustomDataType.BRAND: return [3 /*break*/, 8];
11430
- case exports.IkasThemeCustomDataType.CATEGORY_LIST: return [3 /*break*/, 10];
11431
- case exports.IkasThemeCustomDataType.CATEGORY: return [3 /*break*/, 12];
11432
- case exports.IkasThemeCustomDataType.COLOR: return [3 /*break*/, 14];
11433
- case exports.IkasThemeCustomDataType.IMAGE_LIST: return [3 /*break*/, 16];
11434
- case exports.IkasThemeCustomDataType.IMAGE: return [3 /*break*/, 18];
11435
- case exports.IkasThemeCustomDataType.LINK: return [3 /*break*/, 20];
11436
- case exports.IkasThemeCustomDataType.LIST_OF_LINK: return [3 /*break*/, 20];
11437
- case exports.IkasThemeCustomDataType.PRODUCT_DETAIL: return [3 /*break*/, 22];
11438
- case exports.IkasThemeCustomDataType.PRODUCT_LIST: return [3 /*break*/, 24];
11439
- case exports.IkasThemeCustomDataType.OBJECT: return [3 /*break*/, 26];
11440
- case exports.IkasThemeCustomDataType.DYNAMIC_LIST: return [3 /*break*/, 28];
11441
- case exports.IkasThemeCustomDataType.STATIC_LIST: return [3 /*break*/, 28];
11442
+ case exports.IkasThemeCustomDataType.RICH_TEXT: return [3 /*break*/, 4];
11443
+ case exports.IkasThemeCustomDataType.BOOLEAN: return [3 /*break*/, 6];
11444
+ case exports.IkasThemeCustomDataType.BRAND_LIST: return [3 /*break*/, 8];
11445
+ case exports.IkasThemeCustomDataType.BRAND: return [3 /*break*/, 10];
11446
+ case exports.IkasThemeCustomDataType.CATEGORY_LIST: return [3 /*break*/, 12];
11447
+ case exports.IkasThemeCustomDataType.CATEGORY: return [3 /*break*/, 14];
11448
+ case exports.IkasThemeCustomDataType.COLOR: return [3 /*break*/, 16];
11449
+ case exports.IkasThemeCustomDataType.IMAGE_LIST: return [3 /*break*/, 18];
11450
+ case exports.IkasThemeCustomDataType.IMAGE: return [3 /*break*/, 20];
11451
+ case exports.IkasThemeCustomDataType.LINK: return [3 /*break*/, 22];
11452
+ case exports.IkasThemeCustomDataType.LIST_OF_LINK: return [3 /*break*/, 22];
11453
+ case exports.IkasThemeCustomDataType.PRODUCT_DETAIL: return [3 /*break*/, 24];
11454
+ case exports.IkasThemeCustomDataType.PRODUCT_LIST: return [3 /*break*/, 26];
11455
+ case exports.IkasThemeCustomDataType.OBJECT: return [3 /*break*/, 28];
11456
+ case exports.IkasThemeCustomDataType.DYNAMIC_LIST: return [3 /*break*/, 30];
11457
+ case exports.IkasThemeCustomDataType.STATIC_LIST: return [3 /*break*/, 30];
11458
+ case exports.IkasThemeCustomDataType.COMPONENT: return [3 /*break*/, 32];
11459
+ case exports.IkasThemeCustomDataType.COMPONENT_LIST: return [3 /*break*/, 32];
11442
11460
  }
11443
- return [3 /*break*/, 30];
11461
+ return [3 /*break*/, 34];
11444
11462
  case 2: return [4 /*yield*/, this.getTextValue()];
11445
11463
  case 3:
11446
11464
  customDataValue = _b.sent();
11447
- return [3 /*break*/, 31];
11448
- case 4: return [4 /*yield*/, this.getBooleanValue()];
11465
+ return [3 /*break*/, 35];
11466
+ case 4: return [4 /*yield*/, this.getRichTextPropValue()];
11449
11467
  case 5:
11450
11468
  customDataValue = _b.sent();
11451
- return [3 /*break*/, 31];
11452
- case 6: return [4 /*yield*/, this.getBrandListPropValue()];
11469
+ return [3 /*break*/, 35];
11470
+ case 6: return [4 /*yield*/, this.getBooleanValue()];
11453
11471
  case 7:
11454
11472
  customDataValue = _b.sent();
11455
- return [3 /*break*/, 31];
11456
- case 8: return [4 /*yield*/, this.getBrandPropValue()];
11473
+ return [3 /*break*/, 35];
11474
+ case 8: return [4 /*yield*/, this.getBrandListPropValue()];
11457
11475
  case 9:
11458
11476
  customDataValue = _b.sent();
11459
- return [3 /*break*/, 31];
11460
- case 10: return [4 /*yield*/, this.getCategoryListPropValue()];
11477
+ return [3 /*break*/, 35];
11478
+ case 10: return [4 /*yield*/, this.getBrandPropValue()];
11461
11479
  case 11:
11462
11480
  customDataValue = _b.sent();
11463
- return [3 /*break*/, 31];
11464
- case 12: return [4 /*yield*/, this.getCategoryPropValue()];
11481
+ return [3 /*break*/, 35];
11482
+ case 12: return [4 /*yield*/, this.getCategoryListPropValue()];
11465
11483
  case 13:
11466
11484
  customDataValue = _b.sent();
11467
- return [3 /*break*/, 31];
11468
- case 14: return [4 /*yield*/, this.getColorPropValue()];
11485
+ return [3 /*break*/, 35];
11486
+ case 14: return [4 /*yield*/, this.getCategoryPropValue()];
11469
11487
  case 15:
11470
11488
  customDataValue = _b.sent();
11471
- return [3 /*break*/, 31];
11472
- case 16: return [4 /*yield*/, this.getImageListPropValue()];
11489
+ return [3 /*break*/, 35];
11490
+ case 16: return [4 /*yield*/, this.getColorPropValue()];
11473
11491
  case 17:
11474
11492
  customDataValue = _b.sent();
11475
- return [3 /*break*/, 31];
11476
- case 18: return [4 /*yield*/, this.getImagePropValue()];
11493
+ return [3 /*break*/, 35];
11494
+ case 18: return [4 /*yield*/, this.getImageListPropValue()];
11477
11495
  case 19:
11478
11496
  customDataValue = _b.sent();
11479
- return [3 /*break*/, 31];
11480
- case 20: return [4 /*yield*/, this.getLinkPropValue()];
11497
+ return [3 /*break*/, 35];
11498
+ case 20: return [4 /*yield*/, this.getImagePropValue()];
11481
11499
  case 21:
11482
11500
  customDataValue = _b.sent();
11483
- return [3 /*break*/, 31];
11484
- case 22: return [4 /*yield*/, this.getProductDetailPropValue()];
11501
+ return [3 /*break*/, 35];
11502
+ case 22: return [4 /*yield*/, this.getLinkPropValue()];
11485
11503
  case 23:
11486
11504
  customDataValue = _b.sent();
11487
- return [3 /*break*/, 31];
11488
- case 24: return [4 /*yield*/, this.getProductListPropValue()];
11505
+ return [3 /*break*/, 35];
11506
+ case 24: return [4 /*yield*/, this.getProductDetailPropValue()];
11489
11507
  case 25:
11490
11508
  customDataValue = _b.sent();
11491
- return [3 /*break*/, 31];
11492
- case 26: return [4 /*yield*/, this.getObjectValue()];
11509
+ return [3 /*break*/, 35];
11510
+ case 26: return [4 /*yield*/, this.getProductListPropValue()];
11493
11511
  case 27:
11494
11512
  customDataValue = _b.sent();
11495
- return [3 /*break*/, 31];
11496
- case 28: return [4 /*yield*/, this.getArrayValue()];
11513
+ return [3 /*break*/, 35];
11514
+ case 28: return [4 /*yield*/, this.getObjectValue()];
11497
11515
  case 29:
11498
11516
  customDataValue = _b.sent();
11499
- return [3 /*break*/, 31];
11500
- case 30: return [3 /*break*/, 31];
11501
- case 31: return [3 /*break*/, 33];
11502
- case 32:
11517
+ return [3 /*break*/, 35];
11518
+ case 30: return [4 /*yield*/, this.getArrayValue()];
11519
+ case 31:
11520
+ customDataValue = _b.sent();
11521
+ return [3 /*break*/, 35];
11522
+ case 32: return [4 /*yield*/, this.getComponentListValue()];
11523
+ case 33:
11524
+ customDataValue = _b.sent();
11525
+ return [3 /*break*/, 35];
11526
+ case 34: return [3 /*break*/, 35];
11527
+ case 35: return [3 /*break*/, 37];
11528
+ case 36:
11503
11529
  _b.sent();
11504
11530
  return [2 /*return*/];
11505
- case 33: return [2 /*return*/, JSON.parse(JSON.stringify(customDataValue))];
11531
+ case 37: return [2 /*return*/, JSON.parse(JSON.stringify(customDataValue))];
11506
11532
  }
11507
11533
  });
11508
11534
  });
@@ -11615,6 +11641,24 @@ var IkasCustomPropValueProvider = /** @class */ (function () {
11615
11641
  });
11616
11642
  });
11617
11643
  };
11644
+ IkasCustomPropValueProvider.prototype.getRichTextPropValue = function () {
11645
+ return __awaiter(this, void 0, void 0, function () {
11646
+ var provider, value;
11647
+ return __generator(this, function (_a) {
11648
+ switch (_a.label) {
11649
+ case 0:
11650
+ provider = new IkasRichTextPropValueProvider(this.value);
11651
+ return [4 /*yield*/, provider.getValue()];
11652
+ case 1:
11653
+ value = _a.sent();
11654
+ return [2 /*return*/, {
11655
+ value: value,
11656
+ customData: this.customData,
11657
+ }];
11658
+ }
11659
+ });
11660
+ });
11661
+ };
11618
11662
  IkasCustomPropValueProvider.prototype.getImageListPropValue = function () {
11619
11663
  return __awaiter(this, void 0, void 0, function () {
11620
11664
  var provider, value;
@@ -11741,7 +11785,7 @@ var IkasCustomPropValueProvider = /** @class */ (function () {
11741
11785
  if (nestedData.isRequired &&
11742
11786
  (nestedValue === undefined || nestedValue === null))
11743
11787
  throw new Error("Required data is missing");
11744
- nestedProvider = new IkasCustomPropValueProvider(nestedValue, nestedData, this.theme, this.pageSpecificData);
11788
+ nestedProvider = new IkasCustomPropValueProvider(nestedValue, nestedData, this.theme, this.pageType, this.pageDataProvider, this.pageSpecificData);
11745
11789
  return [4 /*yield*/, nestedProvider.getValue()];
11746
11790
  case 2:
11747
11791
  _itemValue = _b.sent();
@@ -11779,7 +11823,7 @@ var IkasCustomPropValueProvider = /** @class */ (function () {
11779
11823
  if (nestedData.isRequired &&
11780
11824
  (itemValue === undefined || itemValue === null))
11781
11825
  throw new Error("Required data is missing");
11782
- provider = new IkasCustomPropValueProvider(itemValue, nestedData, this.theme, this.pageSpecificData);
11826
+ provider = new IkasCustomPropValueProvider(itemValue, nestedData, this.theme, this.pageType, this.pageDataProvider, this.pageSpecificData);
11783
11827
  return [4 /*yield*/, provider.getValue()];
11784
11828
  case 2:
11785
11829
  _itemValue = _b.sent();
@@ -11801,6 +11845,28 @@ var IkasCustomPropValueProvider = /** @class */ (function () {
11801
11845
  });
11802
11846
  });
11803
11847
  };
11848
+ IkasCustomPropValueProvider.prototype.getComponentListValue = function () {
11849
+ return __awaiter(this, void 0, void 0, function () {
11850
+ var pageComponents;
11851
+ var _a;
11852
+ var _this = this;
11853
+ return __generator(this, function (_b) {
11854
+ switch (_b.label) {
11855
+ case 0:
11856
+ pageComponents = this.value
11857
+ ? this.value.map(function (v) { return new IkasThemePageComponent(v); })
11858
+ : [];
11859
+ _a = {};
11860
+ return [4 /*yield*/, Promise.all(pageComponents.map(function (tp) {
11861
+ return _this.pageDataProvider.getPageComponentPropValues(tp);
11862
+ }))];
11863
+ case 1: return [2 /*return*/, (_a.value = _b.sent(),
11864
+ _a.customData = this.customData,
11865
+ _a)];
11866
+ }
11867
+ });
11868
+ });
11869
+ };
11804
11870
  return IkasCustomPropValueProvider;
11805
11871
  }());
11806
11872
 
@@ -11832,79 +11898,346 @@ var decodeBase64 = function (base64) {
11832
11898
  return buffer.toString("ascii");
11833
11899
  };
11834
11900
 
11835
- var IkasPageDataProvider = /** @class */ (function () {
11836
- function IkasPageDataProvider(theme, pageParams, pageType) {
11837
- this.pageType = null;
11838
- this.pageParams = {};
11839
- this.pageComponentPropValues = [];
11840
- this.pageSpecificData = null;
11841
- this.merchantSettings = null;
11842
- this.theme = new IkasTheme(theme);
11843
- this.pageParams = pageParams || {};
11844
- this.pageType = pageType;
11845
- mobx.makeAutoObservable(this);
11846
- }
11847
- Object.defineProperty(IkasPageDataProvider.prototype, "page", {
11848
- get: function () {
11849
- var _this = this;
11850
- if (this.pageType === exports.IkasThemePageType.CUSTOM) {
11851
- var slug_1 = this.pageParams.slug;
11852
- return this.theme.pages.find(function (page) { return page.type === exports.IkasThemePageType.CUSTOM && page.slug === slug_1; });
11853
- }
11854
- return this.theme.pages.find(function (page) { return page.type === _this.pageType; });
11855
- },
11856
- enumerable: false,
11857
- configurable: true
11858
- });
11859
- Object.defineProperty(IkasPageDataProvider.prototype, "nextPageData", {
11860
- get: function () {
11861
- return {
11862
- props: {
11863
- propValuesStr: JSON.stringify(this.pageComponentPropValues),
11864
- pageSpecificDataStr: this.pageSpecificData
11865
- ? JSON.stringify(this.pageSpecificData || {})
11866
- : "",
11867
- page: mobx.toJS(this.page) || null,
11868
- settingsStr: JSON.stringify(this.theme.settings || {}),
11869
- merchantSettings: this.merchantSettings
11870
- ? JSON.stringify(this.merchantSettings)
11871
- : null,
11872
- configJson: IkasStorefrontConfig.getJson(),
11873
- },
11874
- };
11875
- },
11876
- enumerable: false,
11877
- configurable: true
11901
+ var ThemeComponent = mobxReactLite.observer(function (_a) {
11902
+ var pageComponentPropValue = _a.pageComponentPropValue, index = _a.index, settings = _a.settings;
11903
+ var store = IkasStorefrontConfig.store, components = IkasStorefrontConfig.components;
11904
+ var pageComponent = pageComponentPropValue.pageComponent;
11905
+ var propValues = pageComponentPropValue.propValues;
11906
+ var hasNullValue = mobx.computed(function () {
11907
+ return Object.entries(propValues || {}).some(function (_a) {
11908
+ var _b;
11909
+ var propName = _a[0], propValue = _a[1];
11910
+ return (propValue === null || propValue === undefined) && ((_b = pageComponentPropValue.component.props.find(function (p) { return p.name === propName; })) === null || _b === void 0 ? void 0 : _b.isRequired);
11911
+ });
11878
11912
  });
11879
- Object.defineProperty(IkasPageDataProvider.prototype, "specification", {
11880
- get: function () {
11881
- var _this = this;
11882
- var _a, _b, _c;
11883
- var selectedPage = this.page;
11884
- var specification;
11885
- if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.PRODUCT) {
11886
- specification = (_a = selectedPage.specifications) === null || _a === void 0 ? void 0 : _a.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.product.id); });
11913
+ var Component = components[pageComponent.componentId];
11914
+ return (React.createElement("div", { id: index + "" }, hasNullValue.get() ? null : (React.createElement(Component, __assign({ key: pageComponent.id }, propValues, { settings: settings, store: store })))));
11915
+ });
11916
+
11917
+ var IkasPageHead = mobxReactLite.observer(function (_a) {
11918
+ var _b;
11919
+ var page = _a.page, pageTitle = _a.pageTitle, description = _a.description, pageSpecificDataStr = _a.pageSpecificDataStr, props = __rest(_a, ["page", "pageTitle", "description", "pageSpecificDataStr"]);
11920
+ var ogpMetas = [];
11921
+ var schemas = [];
11922
+ var isCanonicalLinkAdd = false;
11923
+ var canonicalHref = "";
11924
+ if (props.addOgpMetas) {
11925
+ ogpMetas.push({
11926
+ property: "og:type",
11927
+ content: "website",
11928
+ });
11929
+ if (typeof window !== "undefined") {
11930
+ ogpMetas.push({
11931
+ property: "og:site_name",
11932
+ content: "https://" + window.location.hostname,
11933
+ });
11934
+ }
11935
+ if (pageTitle) {
11936
+ ogpMetas.push({
11937
+ property: "og:title",
11938
+ content: pageTitle,
11939
+ });
11940
+ }
11941
+ if (description) {
11942
+ ogpMetas.push({
11943
+ property: "og:description",
11944
+ content: description,
11945
+ });
11946
+ }
11947
+ if (typeof window !== "undefined") {
11948
+ ogpMetas.push({
11949
+ property: "og:url",
11950
+ content: window.location.href,
11951
+ });
11952
+ }
11953
+ if (props.merchantSettings) {
11954
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
11955
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
11956
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
11957
+ if (productDetail.selectedVariant.mainImage) {
11958
+ ogpMetas.push({
11959
+ property: "og:image",
11960
+ content: (_b = productDetail.selectedVariant.mainImage) === null || _b === void 0 ? void 0 : _b.src,
11961
+ });
11962
+ }
11887
11963
  }
11888
- if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.CATEGORY) {
11889
- specification = (_b = selectedPage.specifications) === null || _b === void 0 ? void 0 : _b.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.id); });
11964
+ else {
11965
+ var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
11966
+ ogpMetas.push({
11967
+ property: "og:image",
11968
+ content: merchantSettings.logo.src,
11969
+ });
11890
11970
  }
11891
- if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.BRAND) {
11892
- specification = (_c = selectedPage.specifications) === null || _c === void 0 ? void 0 : _c.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.id); });
11971
+ }
11972
+ }
11973
+ if (props.merchantSettings) {
11974
+ // for schema.org
11975
+ var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
11976
+ var websiteSchema = createWebsiteSchema();
11977
+ var storeSchema = createStoreSchema(merchantSettings);
11978
+ schemas.push(websiteSchema);
11979
+ schemas.push(storeSchema);
11980
+ }
11981
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
11982
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
11983
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
11984
+ if (typeof window !== "undefined" && productDetail.product.hasVariant) {
11985
+ isCanonicalLinkAdd =
11986
+ window.location.pathname !== productDetail.product.href;
11987
+ canonicalHref =
11988
+ "https://" + window.location.hostname + productDetail.product.href;
11989
+ }
11990
+ var schema = createProductSchema(productDetail);
11991
+ if (schema)
11992
+ schemas.push(schema);
11993
+ }
11994
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.CATEGORY) {
11995
+ var categorySchema = createCategorySchema(pageSpecificDataStr);
11996
+ if (categorySchema)
11997
+ schemas.push(categorySchema);
11998
+ var categoryBreadcrumbSchema = createCategoryBreadcrumbSchema(pageSpecificDataStr);
11999
+ if (categoryBreadcrumbSchema)
12000
+ schemas.push(categoryBreadcrumbSchema);
12001
+ }
12002
+ return (React.createElement(Head__default['default'], null,
12003
+ React.createElement("title", null, pageTitle || ""),
12004
+ React.createElement("meta", { name: "description", content: description || "" }),
12005
+ isCanonicalLinkAdd && React.createElement("link", { rel: "canonical", href: canonicalHref }),
12006
+ !!props.addOgpMetas &&
12007
+ ogpMetas.map(function (ogpMeta, index) { return (React.createElement("meta", { key: ogpMeta.content + "-" + index, property: ogpMeta.property, content: ogpMeta.content })); }),
12008
+ !!schemas.length &&
12009
+ schemas.map(function (schema, index) { return (React.createElement("script", { key: index, type: "application/ld+json", dangerouslySetInnerHTML: {
12010
+ __html: JSON.stringify(schema),
12011
+ } })); })));
12012
+ });
12013
+ function createWebsiteSchema() {
12014
+ var _a;
12015
+ var hostname = "";
12016
+ if (typeof window !== "undefined") {
12017
+ hostname = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname;
12018
+ }
12019
+ return {
12020
+ "@context": "https://schema.org",
12021
+ "@type": "Website",
12022
+ url: "https://" + hostname,
12023
+ };
12024
+ }
12025
+ function createStoreSchema(merchantSettings) {
12026
+ var _a, _b;
12027
+ var hostname = "";
12028
+ if (typeof window !== "undefined") {
12029
+ hostname = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname;
12030
+ }
12031
+ return {
12032
+ "@context": "https://schema.org",
12033
+ "@type": "Store",
12034
+ name: merchantSettings === null || merchantSettings === void 0 ? void 0 : merchantSettings.merchantName,
12035
+ logo: (_b = merchantSettings === null || merchantSettings === void 0 ? void 0 : merchantSettings.logo) === null || _b === void 0 ? void 0 : _b.src,
12036
+ url: "https://" + hostname,
12037
+ };
12038
+ }
12039
+ function createProductSchema(productDetail) {
12040
+ var _a, _b;
12041
+ try {
12042
+ var isBrowser = typeof window !== "undefined";
12043
+ if (isBrowser) {
12044
+ var urlParams = new URLSearchParams(window.location.search);
12045
+ var vid_1 = urlParams.get("vid");
12046
+ if (vid_1) {
12047
+ var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
12048
+ if (variant) {
12049
+ productDetail.selectedVariantValues = variant.variantValues;
12050
+ }
11893
12051
  }
11894
- return specification;
11895
- },
11896
- enumerable: false,
11897
- configurable: true
11898
- });
11899
- Object.defineProperty(IkasPageDataProvider.prototype, "pageComponents", {
11900
- get: function () {
11901
- var _a;
11902
- if (this.specification)
11903
- return this.specification.components;
11904
- return ((_a = this.page) === null || _a === void 0 ? void 0 : _a.components) || [];
11905
- },
11906
- enumerable: false,
11907
- configurable: true
12052
+ }
12053
+ var productUrl = isBrowser
12054
+ ? "https://" + window.location.hostname + productDetail.href
12055
+ : "";
12056
+ return {
12057
+ "@context": "https://schema.org/",
12058
+ "@type": "Product",
12059
+ name: productDetail.product.name,
12060
+ description: (_a = productDetail.product.metaData) === null || _a === void 0 ? void 0 : _a.description,
12061
+ image: productDetail.selectedVariant.images.map(function (i) { return i.src; }),
12062
+ productId: productDetail.selectedVariant.id,
12063
+ sku: productDetail.selectedVariant.sku,
12064
+ mpn: productDetail.selectedVariant.barcodeList.length
12065
+ ? productDetail.selectedVariant.barcodeList[0]
12066
+ : "",
12067
+ brand: {
12068
+ "@type": "Brand",
12069
+ name: (_b = productDetail.product.brand) === null || _b === void 0 ? void 0 : _b.name,
12070
+ },
12071
+ offers: {
12072
+ "@type": "Offer",
12073
+ url: productUrl,
12074
+ priceCurrency: productDetail.selectedVariant.price.currency || "TRY",
12075
+ price: productDetail.selectedVariant.price.finalPrice,
12076
+ priceValidUntil: "",
12077
+ itemCondition: "https://schema.org/NewCondition",
12078
+ availability: productDetail.selectedVariant.stock > 0
12079
+ ? "https://schema.org/InStock"
12080
+ : "https://schema.org/OutOfStock",
12081
+ },
12082
+ };
12083
+ }
12084
+ catch (err) { }
12085
+ }
12086
+ function createCategorySchema(pageSpecificDataStr) {
12087
+ var _a, _b, _c;
12088
+ try {
12089
+ var categoryParsed = JSON.parse(pageSpecificDataStr);
12090
+ var category = new IkasCategory(categoryParsed);
12091
+ var categoryUrl = typeof window !== undefined
12092
+ ? "https://" + window.location.hostname + category.href
12093
+ : "";
12094
+ return {
12095
+ "@context": "http://schema.org",
12096
+ "@type": "CollectionPage",
12097
+ url: categoryUrl,
12098
+ name: (_a = category.metaData) === null || _a === void 0 ? void 0 : _a.pageTitle,
12099
+ description: (_b = category.metaData) === null || _b === void 0 ? void 0 : _b.description,
12100
+ image: (_c = category.image) === null || _c === void 0 ? void 0 : _c.src,
12101
+ };
12102
+ }
12103
+ catch (_d) { }
12104
+ }
12105
+ function createCategoryBreadcrumbSchema(pageSpecificDataStr) {
12106
+ try {
12107
+ var categoryParsed = JSON.parse(pageSpecificDataStr);
12108
+ var category = new IkasCategory(categoryParsed);
12109
+ return {
12110
+ "@context": "http://schema.org",
12111
+ "@type": "BreadcrumbList",
12112
+ itemListElement: category.path.map(function (categoryPath, index) { return ({
12113
+ "@type": "ListItem",
12114
+ position: index + 1,
12115
+ name: categoryPath.name,
12116
+ item: typeof window !== undefined
12117
+ ? "https://" + window.location.hostname + categoryPath.href
12118
+ : "",
12119
+ }); }),
12120
+ };
12121
+ }
12122
+ catch (_a) { }
12123
+ }
12124
+
12125
+ var IkasPage = mobxReactLite.observer(function (_a) {
12126
+ var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, addOgpMetas = _a.addOgpMetas;
12127
+ var store = IkasStorefrontConfig.store;
12128
+ var settings = React.useState(new IkasThemeSettings(JSON.parse(settingsStr)))[0];
12129
+ if (page) {
12130
+ store.currentPageType = page.type;
12131
+ }
12132
+ React.useEffect(function () {
12133
+ //@ts-ignore
12134
+ store.setSettings(settingsStr);
12135
+ //@ts-ignore
12136
+ store.cartStore.getCart();
12137
+ store.checkLocalization();
12138
+ }, []);
12139
+ var headerComponentPropValue = propValues.find(function (pv) { return pv.component.isHeader; });
12140
+ var footerComponentPropValue = propValues.find(function (pv) { return pv.component.isFooter; });
12141
+ var others = propValues.filter(function (pv) { return !pv.component.isHeader && !pv.component.isFooter; }) || [];
12142
+ if (!page)
12143
+ return null;
12144
+ return (React.createElement(React.Fragment, null,
12145
+ React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings, addOgpMetas: addOgpMetas }),
12146
+ React.createElement("div", { style: pageStyle },
12147
+ React.createElement("div", null,
12148
+ headerComponentPropValue &&
12149
+ renderComponent(headerComponentPropValue, settings, -1),
12150
+ others.map(function (pageComponentPropValue, index) {
12151
+ return renderComponent(pageComponentPropValue, settings, index);
12152
+ })),
12153
+ footerComponentPropValue &&
12154
+ renderComponent(footerComponentPropValue, settings, -1))));
12155
+ });
12156
+ var renderComponent = function (pageComponentPropValue, settings, index) {
12157
+ return (React.createElement(ThemeComponent, { key: pageComponentPropValue.pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, settings: settings }));
12158
+ };
12159
+ var pageStyle = {
12160
+ position: "relative",
12161
+ minHeight: "100vh",
12162
+ width: "100vw",
12163
+ display: "flex",
12164
+ flexDirection: "column",
12165
+ justifyContent: "space-between",
12166
+ };
12167
+
12168
+ var IkasPageDataProvider = /** @class */ (function () {
12169
+ function IkasPageDataProvider(theme, pageParams, pageType) {
12170
+ this.pageType = null;
12171
+ this.pageParams = {};
12172
+ this.pageComponentPropValues = [];
12173
+ this.pageSpecificData = null;
12174
+ this.merchantSettings = null;
12175
+ this.theme = new IkasTheme(theme);
12176
+ this.pageParams = pageParams || {};
12177
+ this.pageType = pageType;
12178
+ mobx.makeAutoObservable(this);
12179
+ }
12180
+ Object.defineProperty(IkasPageDataProvider.prototype, "page", {
12181
+ get: function () {
12182
+ var _this = this;
12183
+ if (this.pageType === exports.IkasThemePageType.CUSTOM) {
12184
+ var slug_1 = this.pageParams.slug;
12185
+ return this.theme.pages.find(function (page) { return page.type === exports.IkasThemePageType.CUSTOM && page.slug === slug_1; });
12186
+ }
12187
+ return this.theme.pages.find(function (page) { return page.type === _this.pageType; });
12188
+ },
12189
+ enumerable: false,
12190
+ configurable: true
12191
+ });
12192
+ Object.defineProperty(IkasPageDataProvider.prototype, "nextPageData", {
12193
+ get: function () {
12194
+ return {
12195
+ props: {
12196
+ propValuesStr: JSON.stringify(this.pageComponentPropValues),
12197
+ pageSpecificDataStr: this.pageSpecificData
12198
+ ? JSON.stringify(this.pageSpecificData || {})
12199
+ : "",
12200
+ page: mobx.toJS(this.page) || null,
12201
+ settingsStr: JSON.stringify(this.theme.settings || {}),
12202
+ merchantSettings: this.merchantSettings
12203
+ ? JSON.stringify(this.merchantSettings)
12204
+ : null,
12205
+ configJson: IkasStorefrontConfig.getJson(),
12206
+ },
12207
+ };
12208
+ },
12209
+ enumerable: false,
12210
+ configurable: true
12211
+ });
12212
+ Object.defineProperty(IkasPageDataProvider.prototype, "specification", {
12213
+ get: function () {
12214
+ var _this = this;
12215
+ var _a, _b, _c;
12216
+ var selectedPage = this.page;
12217
+ var specification;
12218
+ if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.PRODUCT) {
12219
+ specification = (_a = selectedPage.specifications) === null || _a === void 0 ? void 0 : _a.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.product.id); });
12220
+ }
12221
+ if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.CATEGORY) {
12222
+ specification = (_b = selectedPage.specifications) === null || _b === void 0 ? void 0 : _b.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.id); });
12223
+ }
12224
+ if ((selectedPage === null || selectedPage === void 0 ? void 0 : selectedPage.type) === exports.IkasThemePageType.BRAND) {
12225
+ specification = (_c = selectedPage.specifications) === null || _c === void 0 ? void 0 : _c.find(function (s) { var _a; return s.id === ((_a = _this.pageSpecificData) === null || _a === void 0 ? void 0 : _a.id); });
12226
+ }
12227
+ return specification;
12228
+ },
12229
+ enumerable: false,
12230
+ configurable: true
12231
+ });
12232
+ Object.defineProperty(IkasPageDataProvider.prototype, "pageComponents", {
12233
+ get: function () {
12234
+ var _a;
12235
+ if (this.specification)
12236
+ return this.specification.components;
12237
+ return ((_a = this.page) === null || _a === void 0 ? void 0 : _a.components) || [];
12238
+ },
12239
+ enumerable: false,
12240
+ configurable: true
11908
12241
  });
11909
12242
  Object.defineProperty(IkasPageDataProvider.prototype, "isStaticPage", {
11910
12243
  get: function () {
@@ -12155,60 +12488,87 @@ var IkasPageDataProvider = /** @class */ (function () {
12155
12488
  };
12156
12489
  IkasPageDataProvider.prototype.getPageComponentPropValue = function (pageComponent, prop) {
12157
12490
  return __awaiter(this, void 0, void 0, function () {
12158
- var propValueProvider, propValue, customData;
12159
- return __generator(this, function (_a) {
12160
- switch (_a.label) {
12491
+ var propValueProvider, propValue, _a, customData, pageComponents;
12492
+ var _this = this;
12493
+ return __generator(this, function (_b) {
12494
+ switch (_b.label) {
12161
12495
  case 0:
12162
12496
  propValue = pageComponent.propValues[prop.name];
12163
12497
  if (propValue === null || propValue === undefined)
12164
12498
  return [2 /*return*/, null];
12165
- switch (prop.type) {
12166
- case exports.IkasThemeComponentPropType.TEXT:
12167
- propValueProvider = new IkasTextPropValueProvider(propValue);
12168
- break;
12169
- case exports.IkasThemeComponentPropType.BOOLEAN:
12170
- propValueProvider = new IkasBooleanPropValueProvider(propValue);
12171
- break;
12172
- case exports.IkasThemeComponentPropType.IMAGE:
12173
- propValueProvider = new IkasImagePropValueProvider(propValue);
12174
- break;
12175
- case exports.IkasThemeComponentPropType.IMAGE_LIST:
12176
- propValueProvider = new IkasImageListPropValueProvider(propValue);
12177
- break;
12178
- case exports.IkasThemeComponentPropType.BRAND:
12179
- propValueProvider = new IkasBrandPropValueProvider(propValue, this.pageSpecificData);
12180
- break;
12181
- case exports.IkasThemeComponentPropType.BRAND_LIST:
12182
- propValueProvider = new IkasBrandListPropValueProvider(propValue);
12183
- break;
12184
- case exports.IkasThemeComponentPropType.PRODUCT_LIST:
12185
- propValueProvider = new IkasProductListPropValueProvider(this.pageType, propValue, this.pageParams, this.pageSpecificData);
12186
- break;
12187
- case exports.IkasThemeComponentPropType.PRODUCT_DETAIL:
12188
- propValueProvider = new IkasProductDetailPropValueProvider(propValue, this.pageSpecificData);
12189
- break;
12190
- case exports.IkasThemeComponentPropType.CATEGORY:
12191
- propValueProvider = new IkasCategoryPropValueProvider(propValue, this.pageSpecificData);
12192
- break;
12193
- case exports.IkasThemeComponentPropType.CATEGORY_LIST:
12194
- propValueProvider = new IkasCategoryListPropValueProvider(propValue);
12195
- break;
12196
- case exports.IkasThemeComponentPropType.LINK:
12197
- case exports.IkasThemeComponentPropType.LIST_OF_LINK:
12198
- propValueProvider = new IkasLinkPropValueProvider(propValue, this.theme);
12199
- break;
12200
- case exports.IkasThemeComponentPropType.COLOR:
12201
- propValueProvider = new IkasColorPropValueProvider(propValue);
12202
- break;
12203
- case exports.IkasThemeComponentPropType.CUSTOM:
12204
- customData = this.theme.customData.find(function (cd) { return cd.id === prop.customDataId; });
12205
- if (!customData)
12206
- return [2 /*return*/];
12207
- propValueProvider = new IkasCustomPropValueProvider(propValue, customData, this.theme, this.pageType, this.pageSpecificData, this.pageParams);
12208
- break;
12499
+ _a = prop.type;
12500
+ switch (_a) {
12501
+ case exports.IkasThemeComponentPropType.TEXT: return [3 /*break*/, 1];
12502
+ case exports.IkasThemeComponentPropType.RICH_TEXT: return [3 /*break*/, 2];
12503
+ case exports.IkasThemeComponentPropType.BOOLEAN: return [3 /*break*/, 3];
12504
+ case exports.IkasThemeComponentPropType.IMAGE: return [3 /*break*/, 4];
12505
+ case exports.IkasThemeComponentPropType.IMAGE_LIST: return [3 /*break*/, 5];
12506
+ case exports.IkasThemeComponentPropType.BRAND: return [3 /*break*/, 6];
12507
+ case exports.IkasThemeComponentPropType.BRAND_LIST: return [3 /*break*/, 7];
12508
+ case exports.IkasThemeComponentPropType.PRODUCT_LIST: return [3 /*break*/, 8];
12509
+ case exports.IkasThemeComponentPropType.PRODUCT_DETAIL: return [3 /*break*/, 9];
12510
+ case exports.IkasThemeComponentPropType.CATEGORY: return [3 /*break*/, 10];
12511
+ case exports.IkasThemeComponentPropType.CATEGORY_LIST: return [3 /*break*/, 11];
12512
+ case exports.IkasThemeComponentPropType.LINK: return [3 /*break*/, 12];
12513
+ case exports.IkasThemeComponentPropType.LIST_OF_LINK: return [3 /*break*/, 12];
12514
+ case exports.IkasThemeComponentPropType.COLOR: return [3 /*break*/, 13];
12515
+ case exports.IkasThemeComponentPropType.CUSTOM: return [3 /*break*/, 14];
12516
+ case exports.IkasThemeComponentPropType.COMPONENT: return [3 /*break*/, 15];
12517
+ case exports.IkasThemeComponentPropType.COMPONENT_LIST: return [3 /*break*/, 15];
12209
12518
  }
12210
- return [4 /*yield*/, (propValueProvider === null || propValueProvider === void 0 ? void 0 : propValueProvider.getValue())];
12211
- case 1: return [2 /*return*/, _a.sent()];
12519
+ return [3 /*break*/, 17];
12520
+ case 1:
12521
+ propValueProvider = new IkasTextPropValueProvider(propValue);
12522
+ return [3 /*break*/, 18];
12523
+ case 2:
12524
+ propValueProvider = new IkasRichTextPropValueProvider(propValue);
12525
+ return [3 /*break*/, 18];
12526
+ case 3:
12527
+ propValueProvider = new IkasBooleanPropValueProvider(propValue);
12528
+ return [3 /*break*/, 18];
12529
+ case 4:
12530
+ propValueProvider = new IkasImagePropValueProvider(propValue);
12531
+ return [3 /*break*/, 18];
12532
+ case 5:
12533
+ propValueProvider = new IkasImageListPropValueProvider(propValue);
12534
+ return [3 /*break*/, 18];
12535
+ case 6:
12536
+ propValueProvider = new IkasBrandPropValueProvider(propValue, this.pageSpecificData);
12537
+ return [3 /*break*/, 18];
12538
+ case 7:
12539
+ propValueProvider = new IkasBrandListPropValueProvider(propValue);
12540
+ return [3 /*break*/, 18];
12541
+ case 8:
12542
+ propValueProvider = new IkasProductListPropValueProvider(this.pageType, propValue, this.pageParams, this.pageSpecificData);
12543
+ return [3 /*break*/, 18];
12544
+ case 9:
12545
+ propValueProvider = new IkasProductDetailPropValueProvider(propValue, this.pageSpecificData);
12546
+ return [3 /*break*/, 18];
12547
+ case 10:
12548
+ propValueProvider = new IkasCategoryPropValueProvider(propValue, this.pageSpecificData);
12549
+ return [3 /*break*/, 18];
12550
+ case 11:
12551
+ propValueProvider = new IkasCategoryListPropValueProvider(propValue);
12552
+ return [3 /*break*/, 18];
12553
+ case 12:
12554
+ propValueProvider = new IkasLinkPropValueProvider(propValue, this.theme);
12555
+ return [3 /*break*/, 18];
12556
+ case 13:
12557
+ propValueProvider = new IkasColorPropValueProvider(propValue);
12558
+ return [3 /*break*/, 18];
12559
+ case 14:
12560
+ customData = this.theme.customData.find(function (cd) { return cd.id === prop.customDataId; });
12561
+ if (!customData)
12562
+ return [2 /*return*/];
12563
+ propValueProvider = new IkasCustomPropValueProvider(propValue, customData, this.theme, this.pageType, this, this.pageSpecificData, this.pageParams);
12564
+ return [3 /*break*/, 18];
12565
+ case 15:
12566
+ pageComponents = propValue;
12567
+ return [4 /*yield*/, Promise.all(pageComponents.map(function (tp) { return _this.getPageComponentPropValues(tp); }))];
12568
+ case 16: return [2 /*return*/, _b.sent()];
12569
+ case 17: return [3 /*break*/, 18];
12570
+ case 18: return [4 /*yield*/, (propValueProvider === null || propValueProvider === void 0 ? void 0 : propValueProvider.getValue())];
12571
+ case 19: return [2 /*return*/, _b.sent()];
12212
12572
  }
12213
12573
  });
12214
12574
  });
@@ -12222,7 +12582,8 @@ var IkasPageDataProvider = /** @class */ (function () {
12222
12582
  IkasPageDataProvider.isServer = function () {
12223
12583
  return typeof window === "undefined";
12224
12584
  };
12225
- IkasPageDataProvider.initPropValues = function (propValuesStr, router, isBrowser) {
12585
+ IkasPageDataProvider.initPropValues = function (propValuesStr, router, settingsStr, isBrowser) {
12586
+ var settings = new IkasThemeSettings(JSON.parse(settingsStr));
12226
12587
  var pageComponentPropValues = JSON.parse(propValuesStr).map(function (v) { return ({
12227
12588
  pageComponent: new IkasThemePageComponent(v.pageComponent),
12228
12589
  component: new IkasThemeComponent(v.component),
@@ -12263,8 +12624,14 @@ var IkasPageDataProvider = /** @class */ (function () {
12263
12624
  case exports.IkasThemeComponentPropType.LIST_OF_LINK:
12264
12625
  IkasPageDataProvider.initLinkPropValue(prop, propValue, pageComponentPropValue);
12265
12626
  break;
12627
+ case exports.IkasThemeComponentPropType.COMPONENT:
12628
+ IkasPageDataProvider.initComponentPropValue(prop, propValue, pageComponentPropValue, router, settings, isBrowser);
12629
+ break;
12630
+ case exports.IkasThemeComponentPropType.COMPONENT_LIST:
12631
+ IkasPageDataProvider.initComponentListPropValue(prop, propValue, pageComponentPropValue, router, settings, isBrowser);
12632
+ break;
12266
12633
  case exports.IkasThemeComponentPropType.CUSTOM:
12267
- IkasPageDataProvider.initCustomDataPropValue(prop, propValue, pageComponentPropValue, router, isBrowser);
12634
+ IkasPageDataProvider.initCustomDataPropValue(prop, propValue, pageComponentPropValue, router, settings, isBrowser);
12268
12635
  break;
12269
12636
  }
12270
12637
  });
@@ -12346,14 +12713,14 @@ var IkasPageDataProvider = /** @class */ (function () {
12346
12713
  IkasPageDataProvider._initImageListPropValue = function (propValue) {
12347
12714
  return propValue.map(function (i) { return new IkasImage(i.id); });
12348
12715
  };
12349
- IkasPageDataProvider.initCustomDataPropValue = function (prop, customDataValue, pageComponentPropValue, router, isBrowser) {
12716
+ IkasPageDataProvider.initCustomDataPropValue = function (prop, customDataValue, pageComponentPropValue, router, settings, isBrowser) {
12350
12717
  if (!customDataValue ||
12351
12718
  !customDataValue.value ||
12352
12719
  !customDataValue.customData)
12353
12720
  return;
12354
- pageComponentPropValue.propValues[prop.name] = this._initCustomDataPropValue(customDataValue, customDataValue.customData, router, isBrowser);
12721
+ pageComponentPropValue.propValues[prop.name] = this._initCustomDataPropValue(customDataValue, customDataValue.customData, router, settings, isBrowser);
12355
12722
  };
12356
- IkasPageDataProvider._initCustomDataPropValue = function (customDataValue, customData, router, isBrowser) {
12723
+ IkasPageDataProvider._initCustomDataPropValue = function (customDataValue, customData, router, settings, isBrowser) {
12357
12724
  var _this = this;
12358
12725
  if (!customDataValue)
12359
12726
  return null;
@@ -12384,7 +12751,7 @@ var IkasPageDataProvider = /** @class */ (function () {
12384
12751
  for (var _i = 0, _a = customData.nestedData || []; _i < _a.length; _i++) {
12385
12752
  var nestedCustomData = _a[_i];
12386
12753
  var value = propValue[nestedCustomData.key];
12387
- objectValue[nestedCustomData.key] = this._initCustomDataPropValue(value, nestedCustomData, router, isBrowser);
12754
+ objectValue[nestedCustomData.key] = this._initCustomDataPropValue(value, nestedCustomData, router, settings, isBrowser);
12388
12755
  }
12389
12756
  return objectValue;
12390
12757
  case exports.IkasThemeCustomDataType.DYNAMIC_LIST:
@@ -12395,17 +12762,51 @@ var IkasPageDataProvider = /** @class */ (function () {
12395
12762
  var listValue_1 = [];
12396
12763
  var nestedCustomData_1 = customData.nestedData[0];
12397
12764
  propValue.forEach(function (itemValue) {
12398
- listValue_1.push(_this._initCustomDataPropValue(itemValue, nestedCustomData_1, router, isBrowser));
12765
+ listValue_1.push(_this._initCustomDataPropValue(itemValue, nestedCustomData_1, router, settings, isBrowser));
12399
12766
  });
12400
12767
  return listValue_1;
12401
12768
  }
12402
12769
  catch (err) {
12403
12770
  return [];
12404
12771
  }
12772
+ case exports.IkasThemeCustomDataType.COMPONENT:
12773
+ return this._initComponentPropValue(propValue, router, settings, isBrowser);
12774
+ case exports.IkasThemeCustomDataType.COMPONENT_LIST:
12775
+ return this._initComponentListPropValue(propValue, router, settings, isBrowser);
12405
12776
  default:
12406
12777
  return propValue;
12407
12778
  }
12408
12779
  };
12780
+ IkasPageDataProvider.initComponentPropValue = function (prop, propValue, pageComponentPropValue, router, settings, isBrowser) {
12781
+ pageComponentPropValue.propValues[prop.name] = this._initComponentPropValue(propValue, router, settings, isBrowser);
12782
+ };
12783
+ IkasPageDataProvider._initComponentPropValue = function (propValue, router, settings, isBrowser) {
12784
+ var pValue = propValue.length ? propValue[0] : undefined;
12785
+ if (!pValue)
12786
+ return;
12787
+ var pageComponentPropValue = new IkasPageComponentPropValue(pValue);
12788
+ var initializedPageComponentPropValues = this.initPropValues(JSON.stringify([pageComponentPropValue]), router, JSON.stringify(settings), isBrowser);
12789
+ if (!initializedPageComponentPropValues.length)
12790
+ return;
12791
+ return new IkasComponentRenderer(function () {
12792
+ return renderComponent(initializedPageComponentPropValues[0], settings, -10);
12793
+ });
12794
+ };
12795
+ IkasPageDataProvider.initComponentListPropValue = function (prop, propValue, pageComponentPropValue, router, settings, isBrowser) {
12796
+ pageComponentPropValue.propValues[prop.name] = this._initComponentListPropValue(propValue, router, settings, isBrowser);
12797
+ };
12798
+ IkasPageDataProvider._initComponentListPropValue = function (propValue, router, settings, isBrowser) {
12799
+ var _this = this;
12800
+ if (propValue && propValue.length)
12801
+ return propValue.map(function (p) {
12802
+ var pageComponentPropValue = new IkasPageComponentPropValue(p);
12803
+ var initializedPageComponentPropValues = _this.initPropValues(JSON.stringify([pageComponentPropValue]), router, JSON.stringify(settings), isBrowser);
12804
+ return new IkasComponentRenderer(function () {
12805
+ return renderComponent(initializedPageComponentPropValues[0], settings, -1);
12806
+ });
12807
+ });
12808
+ return [];
12809
+ };
12409
12810
  return IkasPageDataProvider;
12410
12811
  }());
12411
12812
  var IkasPageComponentPropValue = /** @class */ (function () {
@@ -18580,6 +18981,58 @@ var GoogleTagManager = /** @class */ (function () {
18580
18981
  console.error(err);
18581
18982
  }
18582
18983
  };
18984
+ GoogleTagManager.completeRegistration = function () {
18985
+ try {
18986
+ var event_8 = {
18987
+ event: "customer_register",
18988
+ };
18989
+ //@ts-ignore
18990
+ !isServer$2 && window.dataLayer && window.dataLayer.push(event_8);
18991
+ return event_8;
18992
+ }
18993
+ catch (err) {
18994
+ console.error(err);
18995
+ }
18996
+ };
18997
+ GoogleTagManager.search = function (searchKeyword) {
18998
+ try {
18999
+ var event_9 = {
19000
+ event: "search",
19001
+ search_string: searchKeyword,
19002
+ };
19003
+ //@ts-ignore
19004
+ !isServer$2 && window.dataLayer && window.dataLayer.push(event_9);
19005
+ return event_9;
19006
+ }
19007
+ catch (err) {
19008
+ console.error(err);
19009
+ }
19010
+ };
19011
+ GoogleTagManager.viewCategory = function (category, categoryPath) {
19012
+ try {
19013
+ var event_10 = {
19014
+ event: "view_category",
19015
+ ecommerce: {
19016
+ category: [
19017
+ {
19018
+ id: category.id,
19019
+ name: category.name,
19020
+ metaData: category.metaData,
19021
+ href: category.href,
19022
+ image: category.image,
19023
+ path: categoryPath,
19024
+ },
19025
+ ],
19026
+ },
19027
+ };
19028
+ //@ts-ignore
19029
+ !isServer$2 && window.dataLayer && window.dataLayer.push(event_10);
19030
+ return event_10;
19031
+ }
19032
+ catch (err) {
19033
+ console.error(err);
19034
+ }
19035
+ };
18583
19036
  return GoogleTagManager;
18584
19037
  }());
18585
19038
  function productToGTMItem(productDetail, quantity) {
@@ -18721,6 +19174,7 @@ var Analytics = /** @class */ (function () {
18721
19174
  Analytics.search = function (searchKeyword) {
18722
19175
  try {
18723
19176
  FacebookPixel.search(searchKeyword);
19177
+ GoogleTagManager.search(searchKeyword);
18724
19178
  }
18725
19179
  catch (err) {
18726
19180
  console.error(err);
@@ -18729,6 +19183,7 @@ var Analytics = /** @class */ (function () {
18729
19183
  Analytics.completeRegistration = function () {
18730
19184
  try {
18731
19185
  FacebookPixel.completeRegistration();
19186
+ GoogleTagManager.completeRegistration();
18732
19187
  }
18733
19188
  catch (err) {
18734
19189
  console.error(err);
@@ -18744,9 +19199,10 @@ var Analytics = /** @class */ (function () {
18744
19199
  console.error(err);
18745
19200
  }
18746
19201
  };
18747
- Analytics.viewCategory = function (categoryPath) {
19202
+ Analytics.viewCategory = function (categoryPath, category) {
18748
19203
  try {
18749
19204
  FacebookPixel.viewCategory(categoryPath);
19205
+ GoogleTagManager.viewCategory(category, categoryPath);
18750
19206
  }
18751
19207
  catch (err) {
18752
19208
  console.error(err);
@@ -20073,6 +20529,7 @@ var IkasThemeComponentProp = /** @class */ (function () {
20073
20529
  }());
20074
20530
  (function (IkasThemeComponentPropType) {
20075
20531
  IkasThemeComponentPropType["TEXT"] = "TEXT";
20532
+ IkasThemeComponentPropType["RICH_TEXT"] = "RICH_TEXT";
20076
20533
  IkasThemeComponentPropType["BOOLEAN"] = "BOOLEAN";
20077
20534
  IkasThemeComponentPropType["IMAGE"] = "IMAGE";
20078
20535
  IkasThemeComponentPropType["IMAGE_LIST"] = "IMAGE_LIST";
@@ -20086,8 +20543,8 @@ var IkasThemeComponentProp = /** @class */ (function () {
20086
20543
  IkasThemeComponentPropType["CATEGORY_LIST"] = "CATEGORY_LIST";
20087
20544
  IkasThemeComponentPropType["COLOR"] = "COLOR";
20088
20545
  IkasThemeComponentPropType["CUSTOM"] = "CUSTOM";
20089
- // TODO number
20090
- // TODO productAttribute
20546
+ IkasThemeComponentPropType["COMPONENT"] = "COMPONENT";
20547
+ IkasThemeComponentPropType["COMPONENT_LIST"] = "COMPONENT_LIST";
20091
20548
  })(exports.IkasThemeComponentPropType || (exports.IkasThemeComponentPropType = {}));
20092
20549
 
20093
20550
  var IkasThemeComponent = /** @class */ (function () {
@@ -20135,6 +20592,7 @@ var IkasThemeCustomData = /** @class */ (function () {
20135
20592
  }());
20136
20593
  (function (IkasThemeCustomDataType) {
20137
20594
  IkasThemeCustomDataType["TEXT"] = "TEXT";
20595
+ IkasThemeCustomDataType["RICH_TEXT"] = "RICH_TEXT";
20138
20596
  IkasThemeCustomDataType["NUMBER"] = "NUMBER";
20139
20597
  IkasThemeCustomDataType["BOOLEAN"] = "BOOLEAN";
20140
20598
  IkasThemeCustomDataType["IMAGE"] = "IMAGE";
@@ -20148,6 +20606,8 @@ var IkasThemeCustomData = /** @class */ (function () {
20148
20606
  IkasThemeCustomDataType["CATEGORY"] = "CATEGORY";
20149
20607
  IkasThemeCustomDataType["CATEGORY_LIST"] = "CATEGORY_LIST";
20150
20608
  IkasThemeCustomDataType["COLOR"] = "COLOR";
20609
+ IkasThemeCustomDataType["COMPONENT"] = "COMPONENT";
20610
+ IkasThemeCustomDataType["COMPONENT_LIST"] = "COMPONENT_LIST";
20151
20611
  IkasThemeCustomDataType["OBJECT"] = "OBJECT";
20152
20612
  IkasThemeCustomDataType["STATIC_LIST"] = "STATIC_LIST";
20153
20613
  IkasThemeCustomDataType["DYNAMIC_LIST"] = "DYNAMIC_LIST";
@@ -24232,6 +24692,13 @@ var AccountInfoForm = /** @class */ (function () {
24232
24692
  return AccountInfoForm;
24233
24693
  }());
24234
24694
 
24695
+ var IkasComponentRenderer = /** @class */ (function () {
24696
+ function IkasComponentRenderer(render) {
24697
+ this.render = render;
24698
+ }
24699
+ return IkasComponentRenderer;
24700
+ }());
24701
+
24235
24702
  var IkasProductListPropValue = /** @class */ (function () {
24236
24703
  function IkasProductListPropValue(data) {
24237
24704
  this.initialSort = null;
@@ -27585,214 +28052,6 @@ var PolicyModal = mobxReactLite.observer(function (_a) {
27585
28052
  React.createElement("div", { className: styles$k.ModalContent, dangerouslySetInnerHTML: { __html: modalContent } }))));
27586
28053
  });
27587
28054
 
27588
- var IkasPageHead = mobxReactLite.observer(function (_a) {
27589
- var _b;
27590
- var page = _a.page, pageTitle = _a.pageTitle, description = _a.description, pageSpecificDataStr = _a.pageSpecificDataStr, props = __rest(_a, ["page", "pageTitle", "description", "pageSpecificDataStr"]);
27591
- var ogpMetas = [];
27592
- var schemas = [];
27593
- var isCanonicalLinkAdd = false;
27594
- var canonicalHref = "";
27595
- if (props.addOgpMetas) {
27596
- ogpMetas.push({
27597
- property: "og:type",
27598
- content: "website",
27599
- });
27600
- if (typeof window !== "undefined") {
27601
- ogpMetas.push({
27602
- property: "og:site_name",
27603
- content: "https://" + window.location.hostname,
27604
- });
27605
- }
27606
- if (pageTitle) {
27607
- ogpMetas.push({
27608
- property: "og:title",
27609
- content: pageTitle,
27610
- });
27611
- }
27612
- if (description) {
27613
- ogpMetas.push({
27614
- property: "og:description",
27615
- content: description,
27616
- });
27617
- }
27618
- if (typeof window !== "undefined") {
27619
- ogpMetas.push({
27620
- property: "og:url",
27621
- content: window.location.href,
27622
- });
27623
- }
27624
- if (props.merchantSettings) {
27625
- if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
27626
- var productDetailParsed = JSON.parse(pageSpecificDataStr);
27627
- var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
27628
- if (productDetail.selectedVariant.mainImage) {
27629
- ogpMetas.push({
27630
- property: "og:image",
27631
- content: (_b = productDetail.selectedVariant.mainImage) === null || _b === void 0 ? void 0 : _b.src,
27632
- });
27633
- }
27634
- }
27635
- else {
27636
- var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
27637
- ogpMetas.push({
27638
- property: "og:image",
27639
- content: merchantSettings.logo.src,
27640
- });
27641
- }
27642
- }
27643
- }
27644
- if (props.merchantSettings) {
27645
- // for schema.org
27646
- var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
27647
- var websiteSchema = createWebsiteSchema();
27648
- var storeSchema = createStoreSchema(merchantSettings);
27649
- schemas.push(websiteSchema);
27650
- schemas.push(storeSchema);
27651
- }
27652
- if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
27653
- var productDetailParsed = JSON.parse(pageSpecificDataStr);
27654
- var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
27655
- if (typeof window !== "undefined" && productDetail.product.hasVariant) {
27656
- isCanonicalLinkAdd =
27657
- window.location.pathname !== productDetail.product.href;
27658
- canonicalHref =
27659
- "https://" + window.location.hostname + productDetail.product.href;
27660
- }
27661
- var schema = createProductSchema(productDetail);
27662
- if (schema)
27663
- schemas.push(schema);
27664
- }
27665
- if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.CATEGORY) {
27666
- var categorySchema = createCategorySchema(pageSpecificDataStr);
27667
- if (categorySchema)
27668
- schemas.push(categorySchema);
27669
- var categoryBreadcrumbSchema = createCategoryBreadcrumbSchema(pageSpecificDataStr);
27670
- if (categoryBreadcrumbSchema)
27671
- schemas.push(categoryBreadcrumbSchema);
27672
- }
27673
- return (React.createElement(Head__default['default'], null,
27674
- React.createElement("title", null, pageTitle || ""),
27675
- React.createElement("meta", { name: "description", content: description || "" }),
27676
- isCanonicalLinkAdd && React.createElement("link", { rel: "canonical", href: canonicalHref }),
27677
- !!props.addOgpMetas &&
27678
- ogpMetas.map(function (ogpMeta, index) { return (React.createElement("meta", { key: ogpMeta.content + "-" + index, property: ogpMeta.property, content: ogpMeta.content })); }),
27679
- !!schemas.length &&
27680
- schemas.map(function (schema, index) { return (React.createElement("script", { key: index, type: "application/ld+json", dangerouslySetInnerHTML: {
27681
- __html: JSON.stringify(schema),
27682
- } })); })));
27683
- });
27684
- function createWebsiteSchema() {
27685
- var _a;
27686
- var hostname = "";
27687
- if (typeof window !== "undefined") {
27688
- hostname = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname;
27689
- }
27690
- return {
27691
- "@context": "https://schema.org",
27692
- "@type": "Website",
27693
- url: "https://" + hostname,
27694
- };
27695
- }
27696
- function createStoreSchema(merchantSettings) {
27697
- var _a, _b;
27698
- var hostname = "";
27699
- if (typeof window !== "undefined") {
27700
- hostname = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.hostname;
27701
- }
27702
- return {
27703
- "@context": "https://schema.org",
27704
- "@type": "Store",
27705
- name: merchantSettings === null || merchantSettings === void 0 ? void 0 : merchantSettings.merchantName,
27706
- logo: (_b = merchantSettings === null || merchantSettings === void 0 ? void 0 : merchantSettings.logo) === null || _b === void 0 ? void 0 : _b.src,
27707
- url: "https://" + hostname,
27708
- };
27709
- }
27710
- function createProductSchema(productDetail) {
27711
- var _a, _b;
27712
- try {
27713
- var isBrowser = typeof window !== "undefined";
27714
- if (isBrowser) {
27715
- var urlParams = new URLSearchParams(window.location.search);
27716
- var vid_1 = urlParams.get("vid");
27717
- if (vid_1) {
27718
- var variant = productDetail.product.variants.find(function (v) { return v.id === vid_1; });
27719
- if (variant) {
27720
- productDetail.selectedVariantValues = variant.variantValues;
27721
- }
27722
- }
27723
- }
27724
- var productUrl = isBrowser
27725
- ? "https://" + window.location.hostname + productDetail.href
27726
- : "";
27727
- return {
27728
- "@context": "https://schema.org/",
27729
- "@type": "Product",
27730
- name: productDetail.product.name,
27731
- description: (_a = productDetail.product.metaData) === null || _a === void 0 ? void 0 : _a.description,
27732
- image: productDetail.selectedVariant.images.map(function (i) { return i.src; }),
27733
- productId: productDetail.selectedVariant.id,
27734
- sku: productDetail.selectedVariant.sku,
27735
- mpn: productDetail.selectedVariant.barcodeList.length
27736
- ? productDetail.selectedVariant.barcodeList[0]
27737
- : "",
27738
- brand: {
27739
- "@type": "Brand",
27740
- name: (_b = productDetail.product.brand) === null || _b === void 0 ? void 0 : _b.name,
27741
- },
27742
- offers: {
27743
- "@type": "Offer",
27744
- url: productUrl,
27745
- priceCurrency: productDetail.selectedVariant.price.currency || "TRY",
27746
- price: productDetail.selectedVariant.price.finalPrice,
27747
- priceValidUntil: "",
27748
- itemCondition: "https://schema.org/NewCondition",
27749
- availability: productDetail.selectedVariant.stock > 0
27750
- ? "https://schema.org/InStock"
27751
- : "https://schema.org/OutOfStock",
27752
- },
27753
- };
27754
- }
27755
- catch (err) { }
27756
- }
27757
- function createCategorySchema(pageSpecificDataStr) {
27758
- var _a, _b, _c;
27759
- try {
27760
- var categoryParsed = JSON.parse(pageSpecificDataStr);
27761
- var category = new IkasCategory(categoryParsed);
27762
- var categoryUrl = typeof window !== undefined
27763
- ? "https://" + window.location.hostname + category.href
27764
- : "";
27765
- return {
27766
- "@context": "http://schema.org",
27767
- "@type": "CollectionPage",
27768
- url: categoryUrl,
27769
- name: (_a = category.metaData) === null || _a === void 0 ? void 0 : _a.pageTitle,
27770
- description: (_b = category.metaData) === null || _b === void 0 ? void 0 : _b.description,
27771
- image: (_c = category.image) === null || _c === void 0 ? void 0 : _c.src,
27772
- };
27773
- }
27774
- catch (_d) { }
27775
- }
27776
- function createCategoryBreadcrumbSchema(pageSpecificDataStr) {
27777
- try {
27778
- var categoryParsed = JSON.parse(pageSpecificDataStr);
27779
- var category = new IkasCategory(categoryParsed);
27780
- return {
27781
- "@context": "http://schema.org",
27782
- "@type": "BreadcrumbList",
27783
- itemListElement: category.path.map(function (categoryPath, index) { return ({
27784
- "@type": "ListItem",
27785
- position: index + 1,
27786
- name: categoryPath.name,
27787
- item: typeof window !== undefined
27788
- ? "https://" + window.location.hostname + categoryPath.href
27789
- : "",
27790
- }); }),
27791
- };
27792
- }
27793
- catch (_a) { }
27794
- }
27795
-
27796
28055
  var CustomerLoginRequiredError = mobxReactLite.observer(function (_a) {
27797
28056
  var onClose = _a.onClose;
27798
28057
  return (React.createElement(ErrorContainer, { onClose: onClose },
@@ -27924,67 +28183,6 @@ var style = {
27924
28183
  backgroundColor: "rgba(255, 0, 0, 0.5)",
27925
28184
  };
27926
28185
 
27927
- var ThemeComponent = mobxReactLite.observer(function (_a) {
27928
- var pageComponentPropValue = _a.pageComponentPropValue, pageComponent = _a.pageComponent, index = _a.index, settingsStr = _a.settingsStr;
27929
- var store = IkasStorefrontConfig.store, components = IkasStorefrontConfig.components;
27930
- var settings = new IkasThemeSettings(JSON.parse(settingsStr));
27931
- React.useEffect(function () {
27932
- settings.colors.map(function (sc) {
27933
- return document.documentElement.style.setProperty(sc.key, sc.color);
27934
- });
27935
- }, [settings]);
27936
- var propValues = pageComponentPropValue.propValues;
27937
- var hasNullValue = mobx.computed(function () {
27938
- return Object.entries(propValues || {}).some(function (_a) {
27939
- var _b;
27940
- var propName = _a[0], propValue = _a[1];
27941
- return (propValue === null || propValue === undefined) && ((_b = pageComponentPropValue.component.props.find(function (p) { return p.name === propName; })) === null || _b === void 0 ? void 0 : _b.isRequired);
27942
- });
27943
- });
27944
- var Component = components[pageComponent.componentId];
27945
- return (React.createElement("div", { id: index + "" }, hasNullValue.get() ? (React.createElement(ErrorComponent, null)) : (React.createElement(Component, __assign({ key: pageComponent.id }, propValues, { settings: settings, store: store })))));
27946
- });
27947
-
27948
- var IkasPage = mobxReactLite.observer(function (_a) {
27949
- var _b, _c;
27950
- var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, addOgpMetas = _a.addOgpMetas;
27951
- var store = IkasStorefrontConfig.store;
27952
- if (page) {
27953
- store.currentPageType = page.type;
27954
- }
27955
- React.useEffect(function () {
27956
- store.checkLocalization();
27957
- //@ts-ignore
27958
- store.cartStore.getCart();
27959
- }, []);
27960
- var renderComponent = function (pageComponent, index) {
27961
- var pageComponentPropValue = propValues.find(function (pv) { return pv.pageComponent.id === pageComponent.id; });
27962
- return (React.createElement(ThemeComponent, { key: pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, pageComponent: pageComponent, settingsStr: settingsStr }));
27963
- };
27964
- var headerComponent = (_b = propValues.find(function (pv) { return pv.component.isHeader; })) === null || _b === void 0 ? void 0 : _b.pageComponent;
27965
- var footerComponent = (_c = propValues.find(function (pv) { return pv.component.isFooter; })) === null || _c === void 0 ? void 0 : _c.pageComponent;
27966
- var others = propValues
27967
- .filter(function (pv) { return !pv.component.isHeader && !pv.component.isFooter; })
27968
- .map(function (pv) { return pv.pageComponent; }) || [];
27969
- if (!page)
27970
- return null;
27971
- return (React.createElement(React.Fragment, null,
27972
- React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings, addOgpMetas: addOgpMetas }),
27973
- React.createElement("div", { style: pageStyle },
27974
- React.createElement("div", null,
27975
- headerComponent && renderComponent(headerComponent, -1),
27976
- others.map(renderComponent)),
27977
- footerComponent && renderComponent(footerComponent, -1))));
27978
- });
27979
- var pageStyle = {
27980
- position: "relative",
27981
- minHeight: "100vh",
27982
- width: "100vw",
27983
- display: "flex",
27984
- flexDirection: "column",
27985
- justifyContent: "space-between",
27986
- };
27987
-
27988
28186
  var PageViewModel = /** @class */ (function () {
27989
28187
  function PageViewModel(router) {
27990
28188
  var _this = this;
@@ -28096,18 +28294,6 @@ var PageViewModel = /** @class */ (function () {
28096
28294
  data: data,
28097
28295
  }, "*");
28098
28296
  };
28099
- this.getComponentPropValues = function (pageComponent) {
28100
- var _a;
28101
- var json = {};
28102
- var component = (_a = _this.theme) === null || _a === void 0 ? void 0 : _a.components.find(function (c) { return c.id === pageComponent.componentId; });
28103
- component === null || component === void 0 ? void 0 : component.props.forEach(function (prop) {
28104
- // TODO get prop values
28105
- if (prop.type === exports.IkasThemeComponentPropType.TEXT) {
28106
- json[prop.name] = pageComponent.propValues[prop.name];
28107
- }
28108
- });
28109
- return json;
28110
- };
28111
28297
  this.getPagePropValues = function () { return __awaiter(_this, void 0, void 0, function () {
28112
28298
  var pageDataProvider;
28113
28299
  var _this = this;
@@ -28120,7 +28306,7 @@ var PageViewModel = /** @class */ (function () {
28120
28306
  return [4 /*yield*/, pageDataProvider.getPageData()];
28121
28307
  case 1:
28122
28308
  _b.sent();
28123
- pageDataProvider.pageComponentPropValues = IkasPageDataProvider.initPropValues(JSON.stringify(pageDataProvider.pageComponentPropValues), this.router);
28309
+ pageDataProvider.pageComponentPropValues = IkasPageDataProvider.initPropValues(JSON.stringify(pageDataProvider.pageComponentPropValues), this.router, JSON.stringify(this.theme.settings));
28124
28310
  mobx.runInAction(function () {
28125
28311
  _this.pageDataProvider = pageDataProvider;
28126
28312
  _this.isLoading = false;
@@ -28184,7 +28370,13 @@ var PageViewModel = /** @class */ (function () {
28184
28370
  if (pageComponentPropValues) {
28185
28371
  pageComponentPropValues.propValues[propName] = propValue;
28186
28372
  if (prop.type === exports.IkasThemeComponentPropType.CUSTOM) {
28187
- IkasPageDataProvider.initCustomDataPropValue(prop, propValue, pageComponentPropValues, _this.router, true);
28373
+ IkasPageDataProvider.initCustomDataPropValue(prop, propValue, pageComponentPropValues, _this.router, _this.theme.settings, true);
28374
+ }
28375
+ else if (prop.type === exports.IkasThemeComponentPropType.COMPONENT) {
28376
+ IkasPageDataProvider.initComponentPropValue(prop, propValue, pageComponentPropValues, _this.router, _this.theme.settings, true);
28377
+ }
28378
+ else if (prop.type === exports.IkasThemeComponentPropType.COMPONENT_LIST) {
28379
+ IkasPageDataProvider.initComponentListPropValue(prop, propValue, pageComponentPropValues, _this.router, _this.theme.settings, true);
28188
28380
  }
28189
28381
  }
28190
28382
  });
@@ -28253,7 +28445,7 @@ var PageViewModel = /** @class */ (function () {
28253
28445
  mobx.runInAction(function () {
28254
28446
  var customDataProps = pageComponentPropValues.component.props.filter(function (p) { return p.type === exports.IkasThemeComponentPropType.CUSTOM; });
28255
28447
  customDataProps.forEach(function (customDataProp) {
28256
- IkasPageDataProvider.initCustomDataPropValue(customDataProp, pageComponentPropValues.propValues[customDataProp.name], pageComponentPropValues, _this.router, true);
28448
+ IkasPageDataProvider.initCustomDataPropValue(customDataProp, pageComponentPropValues.propValues[customDataProp.name], pageComponentPropValues, _this.router, _this.theme.settings, true);
28257
28449
  });
28258
28450
  _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValues);
28259
28451
  _this.pageComponents.push(pageComponent);
@@ -28838,7 +29030,9 @@ var Page = function (_a) {
28838
29030
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, configJson = _a.configJson;
28839
29031
  IkasStorefrontConfig.initWithJson(configJson);
28840
29032
  var router$1 = router.useRouter();
28841
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29033
+ var propValues = React.useMemo(function () {
29034
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29035
+ }, [propValuesStr]);
28842
29036
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues, addOgpMetas: true }));
28843
29037
  };
28844
29038
  var getStaticProps = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -28861,14 +29055,16 @@ var Page$1 = function (_a) {
28861
29055
  IkasStorefrontConfig.initWithJson(configJson);
28862
29056
  var router$1 = router.useRouter();
28863
29057
  var _b = React.useState(false), isBrowser = _b[0], setIsBrowser = _b[1];
28864
- var initialPropValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29058
+ var initialPropValues = React.useMemo(function () {
29059
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29060
+ }, [propValuesStr]);
28865
29061
  var _c = React.useState(initialPropValues), propValues = _c[0], setPropValues = _c[1];
28866
29062
  React.useEffect(function () {
28867
29063
  setIsBrowser(typeof window !== "undefined");
28868
29064
  handleAnalytics(page, pageSpecificDataStr);
28869
29065
  }, []);
28870
29066
  React.useEffect(function () {
28871
- setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, isBrowser));
29067
+ setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr, isBrowser));
28872
29068
  }, [isBrowser, propValuesStr]);
28873
29069
  return (React.createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings, addOgpMetas: true }));
28874
29070
  };
@@ -28961,7 +29157,7 @@ function handleAnalytics(page, pageSpecificDataStr) {
28961
29157
  else {
28962
29158
  categoryPath = category.name;
28963
29159
  }
28964
- Analytics.viewCategory(categoryPath);
29160
+ Analytics.viewCategory(categoryPath, category);
28965
29161
  }
28966
29162
  }
28967
29163
  catch (err) {
@@ -28981,7 +29177,9 @@ var Page$2 = function (_a) {
28981
29177
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
28982
29178
  IkasStorefrontConfig.initWithJson(configJson);
28983
29179
  var router$1 = router.useRouter();
28984
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29180
+ var propValues = React.useMemo(function () {
29181
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29182
+ }, [propValuesStr]);
28985
29183
  return (React.createElement(IkasPage, { page: page, settingsStr: settingsStr, propValues: propValues }));
28986
29184
  };
28987
29185
  var getStaticPaths$1 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29130,7 +29328,9 @@ var Page$3 = function (_a) {
29130
29328
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29131
29329
  IkasStorefrontConfig.initWithJson(configJson);
29132
29330
  var router$1 = router.useRouter();
29133
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29331
+ var propValues = React.useMemo(function () {
29332
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29333
+ }, [propValuesStr]);
29134
29334
  return (React.createElement(IkasPage, { settingsStr: settingsStr, page: page, propValues: propValues }));
29135
29335
  };
29136
29336
  var getStaticProps$3 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29152,7 +29352,9 @@ var Page$4 = function (_a) {
29152
29352
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29153
29353
  IkasStorefrontConfig.initWithJson(configJson);
29154
29354
  var router$1 = router.useRouter();
29155
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29355
+ var propValues = React.useMemo(function () {
29356
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29357
+ }, [propValuesStr]);
29156
29358
  return (React.createElement(IkasPage, { settingsStr: settingsStr, page: page, propValues: propValues }));
29157
29359
  };
29158
29360
  var getStaticProps$4 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29174,7 +29376,9 @@ var Page$5 = function (_a) {
29174
29376
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29175
29377
  IkasStorefrontConfig.initWithJson(configJson);
29176
29378
  var router$1 = router.useRouter();
29177
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29379
+ var propValues = React.useMemo(function () {
29380
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29381
+ }, [propValuesStr]);
29178
29382
  return (React.createElement(IkasPage, { settingsStr: settingsStr, page: page, propValues: propValues }));
29179
29383
  };
29180
29384
  var getStaticProps$5 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29196,7 +29400,9 @@ var Page$6 = function (_a) {
29196
29400
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29197
29401
  IkasStorefrontConfig.initWithJson(configJson);
29198
29402
  var router$1 = router.useRouter();
29199
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29403
+ var propValues = React.useMemo(function () {
29404
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29405
+ }, [propValuesStr]);
29200
29406
  return (React.createElement(IkasPage, { settingsStr: settingsStr, page: page, propValues: propValues }));
29201
29407
  };
29202
29408
  var getServerSideProps$1 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29218,7 +29424,9 @@ var Page$7 = function (_a) {
29218
29424
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, configJson = _a.configJson;
29219
29425
  IkasStorefrontConfig.initWithJson(configJson);
29220
29426
  var router$1 = router.useRouter();
29221
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29427
+ var propValues = React.useMemo(function () {
29428
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29429
+ }, [propValuesStr]);
29222
29430
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
29223
29431
  };
29224
29432
  var getStaticProps$6 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29240,7 +29448,9 @@ var Page$8 = function (_a) {
29240
29448
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, configJson = _a.configJson;
29241
29449
  IkasStorefrontConfig.initWithJson(configJson);
29242
29450
  var router$1 = router.useRouter();
29243
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29451
+ var propValues = React.useMemo(function () {
29452
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29453
+ }, [propValuesStr]);
29244
29454
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
29245
29455
  };
29246
29456
  var getStaticProps$7 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29262,7 +29472,9 @@ var Page$9 = function (_a) {
29262
29472
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, configJson = _a.configJson;
29263
29473
  IkasStorefrontConfig.initWithJson(configJson);
29264
29474
  var router$1 = router.useRouter();
29265
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29475
+ var propValues = React.useMemo(function () {
29476
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29477
+ }, [propValuesStr]);
29266
29478
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
29267
29479
  };
29268
29480
  var getStaticProps$8 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29284,7 +29496,9 @@ var Page$a = function (_a) {
29284
29496
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, configJson = _a.configJson;
29285
29497
  IkasStorefrontConfig.initWithJson(configJson);
29286
29498
  var router$1 = router.useRouter();
29287
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29499
+ var propValues = React.useMemo(function () {
29500
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29501
+ }, [propValuesStr]);
29288
29502
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
29289
29503
  };
29290
29504
  var getStaticProps$9 = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29306,7 +29520,9 @@ var Page$b = function (_a) {
29306
29520
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29307
29521
  IkasStorefrontConfig.initWithJson(configJson);
29308
29522
  var router$1 = router.useRouter();
29309
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29523
+ var propValues = React.useMemo(function () {
29524
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29525
+ }, [propValuesStr]);
29310
29526
  var store = IkasStorefrontConfig.store;
29311
29527
  React.useEffect(function () {
29312
29528
  Analytics.viewCart(store.cartStore.cart);
@@ -29343,7 +29559,9 @@ var Page$d = function (_a) {
29343
29559
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, configJson = _a.configJson;
29344
29560
  IkasStorefrontConfig.initWithJson(configJson);
29345
29561
  var router$1 = router.useRouter();
29346
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29562
+ var propValues = React.useMemo(function () {
29563
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29564
+ }, [propValuesStr]);
29347
29565
  return (React.createElement(IkasPage, { settingsStr: settingsStr, page: page, propValues: propValues }));
29348
29566
  };
29349
29567
  var getStaticProps$b = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29366,13 +29584,15 @@ var Page$e = function (_a) {
29366
29584
  IkasStorefrontConfig.initWithJson(configJson);
29367
29585
  var router$1 = router.useRouter();
29368
29586
  var _b = React.useState(false), isBrowser = _b[0], setIsBrowser = _b[1];
29369
- var initialPropValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29587
+ var initialPropValues = React.useMemo(function () {
29588
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29589
+ }, [propValuesStr]);
29370
29590
  var _c = React.useState(initialPropValues), propValues = _c[0], setPropValues = _c[1];
29371
29591
  React.useEffect(function () {
29372
29592
  setIsBrowser(typeof window !== "undefined");
29373
29593
  }, []);
29374
29594
  React.useEffect(function () {
29375
- setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, isBrowser));
29595
+ setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr, isBrowser));
29376
29596
  }, [isBrowser, propValuesStr]);
29377
29597
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues, addOgpMetas: true }));
29378
29598
  };
@@ -29397,7 +29617,9 @@ var Page$f = function (_a) {
29397
29617
  return React.createElement(Error__default['default'], { statusCode: 404 });
29398
29618
  IkasStorefrontConfig.initWithJson(configJson);
29399
29619
  var router$1 = router.useRouter();
29400
- var propValues = React.useMemo(function () { return IkasPageDataProvider.initPropValues(propValuesStr, router$1); }, [propValuesStr]);
29620
+ var propValues = React.useMemo(function () {
29621
+ return IkasPageDataProvider.initPropValues(propValuesStr, router$1, settingsStr);
29622
+ }, [propValuesStr]);
29401
29623
  return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
29402
29624
  };
29403
29625
  var getStaticProps$d = function (context) { return __awaiter(void 0, void 0, void 0, function () {
@@ -29455,6 +29677,7 @@ var IkasBaseStore = /** @class */ (function () {
29455
29677
  this.localeOptions = [];
29456
29678
  this.showLocaleOptions = false;
29457
29679
  this.localeChecked = false;
29680
+ this.settingsSet = false;
29458
29681
  this.customerStore = new IkasCustomerStore(this);
29459
29682
  this.cartStore = new IkasCartStore(this);
29460
29683
  mobx.makeObservable(this, {
@@ -29543,6 +29766,14 @@ var IkasBaseStore = /** @class */ (function () {
29543
29766
  (localeOption.routing.path ? "/" + localeOption.routing.path : ""));
29544
29767
  }
29545
29768
  };
29769
+ IkasBaseStore.prototype.setSettings = function (settingsStr) {
29770
+ if (this.settingsSet)
29771
+ return;
29772
+ var settings = new IkasThemeSettings(JSON.parse(settingsStr));
29773
+ settings.colors.map(function (sc) {
29774
+ return document.documentElement.style.setProperty(sc.key, sc.color);
29775
+ });
29776
+ };
29546
29777
  return IkasBaseStore;
29547
29778
  }());
29548
29779
 
@@ -29580,6 +29811,7 @@ exports.IkasCheckout = IkasCheckout;
29580
29811
  exports.IkasCheckoutAPI = IkasCheckoutAPI;
29581
29812
  exports.IkasCheckoutPage = IkasCheckoutPage;
29582
29813
  exports.IkasCityAPI = IkasCityAPI;
29814
+ exports.IkasComponentRenderer = IkasComponentRenderer;
29583
29815
  exports.IkasContactForm = IkasContactForm;
29584
29816
  exports.IkasContactFormAPI = IkasContactFormAPI;
29585
29817
  exports.IkasCountryAPI = IkasCountryAPI;