@ikas/storefront 0.0.48 → 0.0.49

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.
@@ -6,6 +6,7 @@ declare type Props = {
6
6
  description?: string | null;
7
7
  pageSpecificDataStr?: string;
8
8
  merchantSettings?: string;
9
+ addOgpMetas?: boolean;
9
10
  };
10
11
  export declare const IkasPageHead: React.FC<Props>;
11
12
  export {};
@@ -7,6 +7,7 @@ declare type Props = {
7
7
  pageSpecificDataStr?: string;
8
8
  settingsStr: string;
9
9
  merchantSettings?: string;
10
+ addOgpMetas?: boolean;
10
11
  };
11
12
  export declare const IkasPage: React.FC<Props>;
12
13
  export {};
package/build/index.es.js CHANGED
@@ -25003,9 +25003,61 @@ var PolicyModal = observer(function (_a) {
25003
25003
  });
25004
25004
 
25005
25005
  var IkasPageHead = observer(function (_a) {
25006
+ var _b;
25006
25007
  var page = _a.page, pageTitle = _a.pageTitle, description = _a.description, pageSpecificDataStr = _a.pageSpecificDataStr, props = __rest(_a, ["page", "pageTitle", "description", "pageSpecificDataStr"]);
25008
+ var ogpMetas = [];
25007
25009
  var schemas = [];
25010
+ if (props.addOgpMetas) {
25011
+ ogpMetas.push({
25012
+ property: "og:type",
25013
+ content: "website",
25014
+ });
25015
+ if (typeof window !== "undefined") {
25016
+ ogpMetas.push({
25017
+ property: "og:site_name",
25018
+ content: "https://" + window.location.hostname,
25019
+ });
25020
+ }
25021
+ if (pageTitle) {
25022
+ ogpMetas.push({
25023
+ property: "og:title",
25024
+ content: pageTitle,
25025
+ });
25026
+ }
25027
+ if (description) {
25028
+ ogpMetas.push({
25029
+ property: "og:description",
25030
+ content: description,
25031
+ });
25032
+ }
25033
+ if (typeof window !== "undefined") {
25034
+ ogpMetas.push({
25035
+ property: "og:url",
25036
+ content: window.location.href,
25037
+ });
25038
+ }
25039
+ if (props.merchantSettings) {
25040
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === IkasThemePageType.PRODUCT) {
25041
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
25042
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
25043
+ if (productDetail.selectedVariant.mainImage) {
25044
+ ogpMetas.push({
25045
+ property: "og:image",
25046
+ content: (_b = productDetail.selectedVariant.mainImage) === null || _b === void 0 ? void 0 : _b.src,
25047
+ });
25048
+ }
25049
+ }
25050
+ else {
25051
+ var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
25052
+ ogpMetas.push({
25053
+ property: "og:image",
25054
+ content: merchantSettings.logo.src,
25055
+ });
25056
+ }
25057
+ }
25058
+ }
25008
25059
  if (props.merchantSettings) {
25060
+ // for schema.org
25009
25061
  var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
25010
25062
  var websiteSchema = createWebsiteSchema();
25011
25063
  var storeSchema = createStoreSchema(merchantSettings);
@@ -25030,12 +25082,14 @@ var IkasPageHead = observer(function (_a) {
25030
25082
  return (createElement(Head, null,
25031
25083
  createElement("title", null, pageTitle || ""),
25032
25084
  createElement("meta", { name: "description", content: description || "" }),
25085
+ !!props.addOgpMetas &&
25086
+ ogpMetas.map(function (ogpMeta, index) { return (createElement("meta", { key: ogpMeta.content + "-" + index, property: ogpMeta.property, content: ogpMeta.content })); }),
25033
25087
  !!schemas.length &&
25034
25088
  schemas.map(function (schema, index) { return (createElement("script", { key: index, type: "application/ld+json", dangerouslySetInnerHTML: {
25035
25089
  __html: JSON.stringify(schema),
25036
25090
  } })); })));
25037
25091
  });
25038
- function createWebsiteSchema(merchantSettings) {
25092
+ function createWebsiteSchema() {
25039
25093
  var _a;
25040
25094
  var hostname = "";
25041
25095
  if (typeof window !== "undefined") {
@@ -25307,7 +25361,7 @@ var ThemeComponent = observer(function (_a) {
25307
25361
 
25308
25362
  var IkasPage = observer(function (_a) {
25309
25363
  var _b, _c;
25310
- var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25364
+ var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, addOgpMetas = _a.addOgpMetas;
25311
25365
  var renderComponent = function (pageComponent, index) {
25312
25366
  var pageComponentPropValue = propValues.find(function (pv) { return pv.pageComponent.id === pageComponent.id; });
25313
25367
  return (createElement(ThemeComponent, { key: pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, pageComponent: pageComponent, settingsStr: settingsStr }));
@@ -25320,7 +25374,7 @@ var IkasPage = observer(function (_a) {
25320
25374
  if (!page)
25321
25375
  return null;
25322
25376
  return (createElement(Fragment, null,
25323
- createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings }),
25377
+ createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings, addOgpMetas: addOgpMetas }),
25324
25378
  createElement("div", { style: pageStyle },
25325
25379
  createElement("div", null,
25326
25380
  headerComponent && renderComponent(headerComponent, -1),
@@ -25582,7 +25636,7 @@ var PageViewModel = /** @class */ (function () {
25582
25636
  _this.theme.components[index] = new IkasThemeComponent(data.component);
25583
25637
  };
25584
25638
  this.handleAddNewPageComponent = function (data) { return __awaiter(_this, void 0, void 0, function () {
25585
- var pageComponent, pageComponentPropValue;
25639
+ var pageComponent, pageComponentPropValues;
25586
25640
  var _this = this;
25587
25641
  var _a;
25588
25642
  return __generator(this, function (_b) {
@@ -25593,10 +25647,14 @@ var PageViewModel = /** @class */ (function () {
25593
25647
  return [2 /*return*/];
25594
25648
  return [4 /*yield*/, this.pageDataProvider.getPageComponentPropValues(pageComponent)];
25595
25649
  case 1:
25596
- pageComponentPropValue = _b.sent();
25650
+ pageComponentPropValues = _b.sent();
25597
25651
  runInAction(function () {
25598
25652
  var _a;
25599
- _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValue);
25653
+ var customDataProps = pageComponentPropValues.component.props.filter(function (p) { return p.type === IkasThemeComponentPropType.CUSTOM; });
25654
+ customDataProps.forEach(function (customDataProp) {
25655
+ IkasPageDataProvider.initCustomDataPropValue(customDataProp, pageComponentPropValues.propValues[customDataProp.name], pageComponentPropValues, _this.router, true);
25656
+ });
25657
+ _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValues);
25600
25658
  (_a = _this.page) === null || _a === void 0 ? void 0 : _a.components.push(pageComponent);
25601
25659
  });
25602
25660
  return [2 /*return*/];
@@ -25809,7 +25867,7 @@ var Page = function (_a) {
25809
25867
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25810
25868
  var router = useRouter();
25811
25869
  var propValues = IkasPageDataProvider.initPropValues(propValuesStr, router);
25812
- return (createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
25870
+ return (createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues, addOgpMetas: true }));
25813
25871
  };
25814
25872
  var getStaticProps = function (context) { return __awaiter(void 0, void 0, void 0, function () {
25815
25873
  var theme, provider;
@@ -25845,7 +25903,7 @@ var Page$1 = function (_a) {
25845
25903
  setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router, isBrowser));
25846
25904
  }, [isBrowser, propValuesStr]);
25847
25905
  handleGTM(page, pageSpecificDataStr);
25848
- return (createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings }));
25906
+ return (createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings, addOgpMetas: true }));
25849
25907
  };
25850
25908
  var index$1 = observer(Page$1);
25851
25909
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
package/build/index.js CHANGED
@@ -24984,9 +24984,61 @@ var PolicyModal = mobxReactLite.observer(function (_a) {
24984
24984
  });
24985
24985
 
24986
24986
  var IkasPageHead = mobxReactLite.observer(function (_a) {
24987
+ var _b;
24987
24988
  var page = _a.page, pageTitle = _a.pageTitle, description = _a.description, pageSpecificDataStr = _a.pageSpecificDataStr, props = __rest(_a, ["page", "pageTitle", "description", "pageSpecificDataStr"]);
24989
+ var ogpMetas = [];
24988
24990
  var schemas = [];
24991
+ if (props.addOgpMetas) {
24992
+ ogpMetas.push({
24993
+ property: "og:type",
24994
+ content: "website",
24995
+ });
24996
+ if (typeof window !== "undefined") {
24997
+ ogpMetas.push({
24998
+ property: "og:site_name",
24999
+ content: "https://" + window.location.hostname,
25000
+ });
25001
+ }
25002
+ if (pageTitle) {
25003
+ ogpMetas.push({
25004
+ property: "og:title",
25005
+ content: pageTitle,
25006
+ });
25007
+ }
25008
+ if (description) {
25009
+ ogpMetas.push({
25010
+ property: "og:description",
25011
+ content: description,
25012
+ });
25013
+ }
25014
+ if (typeof window !== "undefined") {
25015
+ ogpMetas.push({
25016
+ property: "og:url",
25017
+ content: window.location.href,
25018
+ });
25019
+ }
25020
+ if (props.merchantSettings) {
25021
+ if (pageSpecificDataStr && (page === null || page === void 0 ? void 0 : page.type) === exports.IkasThemePageType.PRODUCT) {
25022
+ var productDetailParsed = JSON.parse(pageSpecificDataStr);
25023
+ var productDetail = new IkasProductDetail(productDetailParsed.product, productDetailParsed.selectedVariantValues);
25024
+ if (productDetail.selectedVariant.mainImage) {
25025
+ ogpMetas.push({
25026
+ property: "og:image",
25027
+ content: (_b = productDetail.selectedVariant.mainImage) === null || _b === void 0 ? void 0 : _b.src,
25028
+ });
25029
+ }
25030
+ }
25031
+ else {
25032
+ var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
25033
+ ogpMetas.push({
25034
+ property: "og:image",
25035
+ content: merchantSettings.logo.src,
25036
+ });
25037
+ }
25038
+ }
25039
+ }
24989
25040
  if (props.merchantSettings) {
25041
+ // for schema.org
24990
25042
  var merchantSettings = new IkasMerchantSettings(JSON.parse(props.merchantSettings));
24991
25043
  var websiteSchema = createWebsiteSchema();
24992
25044
  var storeSchema = createStoreSchema(merchantSettings);
@@ -25011,12 +25063,14 @@ var IkasPageHead = mobxReactLite.observer(function (_a) {
25011
25063
  return (React.createElement(Head__default['default'], null,
25012
25064
  React.createElement("title", null, pageTitle || ""),
25013
25065
  React.createElement("meta", { name: "description", content: description || "" }),
25066
+ !!props.addOgpMetas &&
25067
+ ogpMetas.map(function (ogpMeta, index) { return (React.createElement("meta", { key: ogpMeta.content + "-" + index, property: ogpMeta.property, content: ogpMeta.content })); }),
25014
25068
  !!schemas.length &&
25015
25069
  schemas.map(function (schema, index) { return (React.createElement("script", { key: index, type: "application/ld+json", dangerouslySetInnerHTML: {
25016
25070
  __html: JSON.stringify(schema),
25017
25071
  } })); })));
25018
25072
  });
25019
- function createWebsiteSchema(merchantSettings) {
25073
+ function createWebsiteSchema() {
25020
25074
  var _a;
25021
25075
  var hostname = "";
25022
25076
  if (typeof window !== "undefined") {
@@ -25288,7 +25342,7 @@ var ThemeComponent = mobxReactLite.observer(function (_a) {
25288
25342
 
25289
25343
  var IkasPage = mobxReactLite.observer(function (_a) {
25290
25344
  var _b, _c;
25291
- var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25345
+ var propValues = _a.propValues, page = _a.page, pageSpecificDataStr = _a.pageSpecificDataStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings, addOgpMetas = _a.addOgpMetas;
25292
25346
  var renderComponent = function (pageComponent, index) {
25293
25347
  var pageComponentPropValue = propValues.find(function (pv) { return pv.pageComponent.id === pageComponent.id; });
25294
25348
  return (React.createElement(ThemeComponent, { key: pageComponent.id, index: index, pageComponentPropValue: pageComponentPropValue, pageComponent: pageComponent, settingsStr: settingsStr }));
@@ -25301,7 +25355,7 @@ var IkasPage = mobxReactLite.observer(function (_a) {
25301
25355
  if (!page)
25302
25356
  return null;
25303
25357
  return (React.createElement(React.Fragment, null,
25304
- React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings }),
25358
+ React.createElement(IkasPageHead, { page: page, pageTitle: page.pageTitle, description: page.description, pageSpecificDataStr: pageSpecificDataStr, merchantSettings: merchantSettings, addOgpMetas: addOgpMetas }),
25305
25359
  React.createElement("div", { style: pageStyle },
25306
25360
  React.createElement("div", null,
25307
25361
  headerComponent && renderComponent(headerComponent, -1),
@@ -25563,7 +25617,7 @@ var PageViewModel = /** @class */ (function () {
25563
25617
  _this.theme.components[index] = new IkasThemeComponent(data.component);
25564
25618
  };
25565
25619
  this.handleAddNewPageComponent = function (data) { return __awaiter(_this, void 0, void 0, function () {
25566
- var pageComponent, pageComponentPropValue;
25620
+ var pageComponent, pageComponentPropValues;
25567
25621
  var _this = this;
25568
25622
  var _a;
25569
25623
  return __generator(this, function (_b) {
@@ -25574,10 +25628,14 @@ var PageViewModel = /** @class */ (function () {
25574
25628
  return [2 /*return*/];
25575
25629
  return [4 /*yield*/, this.pageDataProvider.getPageComponentPropValues(pageComponent)];
25576
25630
  case 1:
25577
- pageComponentPropValue = _b.sent();
25631
+ pageComponentPropValues = _b.sent();
25578
25632
  mobx.runInAction(function () {
25579
25633
  var _a;
25580
- _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValue);
25634
+ var customDataProps = pageComponentPropValues.component.props.filter(function (p) { return p.type === exports.IkasThemeComponentPropType.CUSTOM; });
25635
+ customDataProps.forEach(function (customDataProp) {
25636
+ IkasPageDataProvider.initCustomDataPropValue(customDataProp, pageComponentPropValues.propValues[customDataProp.name], pageComponentPropValues, _this.router, true);
25637
+ });
25638
+ _this.pageDataProvider.pageComponentPropValues.push(pageComponentPropValues);
25581
25639
  (_a = _this.page) === null || _a === void 0 ? void 0 : _a.components.push(pageComponent);
25582
25640
  });
25583
25641
  return [2 /*return*/];
@@ -25790,7 +25848,7 @@ var Page = function (_a) {
25790
25848
  var page = _a.page, propValuesStr = _a.propValuesStr, settingsStr = _a.settingsStr, merchantSettings = _a.merchantSettings;
25791
25849
  var router$1 = router.useRouter();
25792
25850
  var propValues = IkasPageDataProvider.initPropValues(propValuesStr, router$1);
25793
- return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues }));
25851
+ return (React.createElement(IkasPage, { merchantSettings: merchantSettings, settingsStr: settingsStr, page: page, propValues: propValues, addOgpMetas: true }));
25794
25852
  };
25795
25853
  var getStaticProps = function (context) { return __awaiter(void 0, void 0, void 0, function () {
25796
25854
  var theme, provider;
@@ -25826,7 +25884,7 @@ var Page$1 = function (_a) {
25826
25884
  setPropValues(IkasPageDataProvider.initPropValues(propValuesStr, router$1, isBrowser));
25827
25885
  }, [isBrowser, propValuesStr]);
25828
25886
  handleGTM(page, pageSpecificDataStr);
25829
- return (React.createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings }));
25887
+ return (React.createElement(IkasPage, { page: page, propValues: propValues, pageSpecificDataStr: pageSpecificDataStr, settingsStr: settingsStr, merchantSettings: merchantSettings, addOgpMetas: true }));
25830
25888
  };
25831
25889
  var index$1 = mobxReactLite.observer(Page$1);
25832
25890
  var getStaticPaths = function (context) { return __awaiter(void 0, void 0, void 0, function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/storefront",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "main": "./build/index.js",
5
5
  "module": "./build/index.es.js",
6
6
  "author": "Umut Ozan Yıldırım",