@blaze-cms/react-page-builder 0.119.0 → 0.120.0-alpha.2

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.
Files changed (76) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/components/Banner/AdSlotRender.js +23 -9
  3. package/lib/components/Banner/AdSlotRender.js.map +1 -1
  4. package/lib/components/Banner/Banner.js +24 -3
  5. package/lib/components/Banner/Banner.js.map +1 -1
  6. package/lib/components/Banner/BannerRender.js +7 -4
  7. package/lib/components/Banner/BannerRender.js.map +1 -1
  8. package/lib/components/Banner/helpers.js +66 -1
  9. package/lib/components/Banner/helpers.js.map +1 -1
  10. package/lib/components/BlazeLink.js +1 -0
  11. package/lib/components/BlazeLink.js.map +1 -1
  12. package/lib/components/Card/Card.js +1 -1
  13. package/lib/components/Card/Card.js.map +1 -1
  14. package/lib/components/Card/CardContainer.js +6 -2
  15. package/lib/components/Card/CardContainer.js.map +1 -1
  16. package/lib/components/Card/CardRender.js +27 -12
  17. package/lib/components/Card/CardRender.js.map +1 -1
  18. package/lib/components/Card/helpers/filter-query-setup.js +7 -3
  19. package/lib/components/Card/helpers/filter-query-setup.js.map +1 -1
  20. package/lib/components/Card/helpers/filters-setup.js +5 -16
  21. package/lib/components/Card/helpers/filters-setup.js.map +1 -1
  22. package/lib/components/List/ListBuilder.js +3 -3
  23. package/lib/components/List/ListBuilder.js.map +1 -1
  24. package/lib/helpers/build-props-query.js +15 -7
  25. package/lib/helpers/build-props-query.js.map +1 -1
  26. package/lib/helpers/get-entity-data.js +27 -5
  27. package/lib/helpers/get-entity-data.js.map +1 -1
  28. package/lib/helpers/get-generic-render-variables.js +29 -7
  29. package/lib/helpers/get-generic-render-variables.js.map +1 -1
  30. package/lib-es/components/Banner/AdSlotRender.js +23 -11
  31. package/lib-es/components/Banner/AdSlotRender.js.map +1 -1
  32. package/lib-es/components/Banner/Banner.js +22 -4
  33. package/lib-es/components/Banner/Banner.js.map +1 -1
  34. package/lib-es/components/Banner/BannerRender.js +8 -5
  35. package/lib-es/components/Banner/BannerRender.js.map +1 -1
  36. package/lib-es/components/Banner/helpers.js +52 -1
  37. package/lib-es/components/Banner/helpers.js.map +1 -1
  38. package/lib-es/components/BlazeLink.js +1 -0
  39. package/lib-es/components/BlazeLink.js.map +1 -1
  40. package/lib-es/components/Card/Card.js +1 -1
  41. package/lib-es/components/Card/Card.js.map +1 -1
  42. package/lib-es/components/Card/CardContainer.js +6 -2
  43. package/lib-es/components/Card/CardContainer.js.map +1 -1
  44. package/lib-es/components/Card/CardRender.js +19 -10
  45. package/lib-es/components/Card/CardRender.js.map +1 -1
  46. package/lib-es/components/Card/helpers/filter-query-setup.js +7 -3
  47. package/lib-es/components/Card/helpers/filter-query-setup.js.map +1 -1
  48. package/lib-es/components/Card/helpers/filters-setup.js +2 -7
  49. package/lib-es/components/Card/helpers/filters-setup.js.map +1 -1
  50. package/lib-es/components/List/ListBuilder.js +3 -3
  51. package/lib-es/components/List/ListBuilder.js.map +1 -1
  52. package/lib-es/helpers/build-props-query.js +11 -8
  53. package/lib-es/helpers/build-props-query.js.map +1 -1
  54. package/lib-es/helpers/get-entity-data.js +23 -5
  55. package/lib-es/helpers/get-entity-data.js.map +1 -1
  56. package/lib-es/helpers/get-generic-render-variables.js +28 -7
  57. package/lib-es/helpers/get-generic-render-variables.js.map +1 -1
  58. package/package.json +2 -2
  59. package/src/components/Banner/AdSlotRender.js +11 -7
  60. package/src/components/Banner/Banner.js +13 -4
  61. package/src/components/Banner/BannerRender.js +6 -4
  62. package/src/components/Banner/helpers.js +49 -1
  63. package/src/components/BlazeLink.js +1 -0
  64. package/src/components/Card/Card.js +3 -5
  65. package/src/components/Card/CardContainer.js +6 -2
  66. package/src/components/Card/CardRender.js +15 -9
  67. package/src/components/Card/helpers/filter-query-setup.js +9 -3
  68. package/src/components/Card/helpers/filters-setup.js +2 -5
  69. package/src/components/List/ListBuilder.js +3 -3
  70. package/src/helpers/build-props-query.js +7 -10
  71. package/src/helpers/get-entity-data.js +12 -4
  72. package/src/helpers/get-generic-render-variables.js +30 -6
  73. package/tests/unit/src/components/Banner/AdSlotRender.test.js +4 -3
  74. package/tests/unit/src/components/Banner/__snapshots__/AdSlotRender.test.js.snap +10 -4
  75. package/tests/unit/src/components/List/components/Cards/__snapshots__/CardsRender.test.js.snap +18 -6
  76. package/tests/unit/src/helpers/build-props-query.test.js +28 -0
@@ -83,19 +83,41 @@ var getCorrectSort = function getCorrectSort(relations, filterProps, stringProps
83
83
  var getGenericRenderVariables = function getGenericRenderVariables(relations) {
84
84
  var filterProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
85
85
  var stringProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
86
- var rawQueryStringified = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
86
+ var rawQuery = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
87
87
  var isTextSearchFilterApplied = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
88
+ var useRandomSort = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
88
89
  var _filterProps$limit = filterProps.limit,
89
90
  limit = _filterProps$limit === void 0 ? _constants.DEFAULT_LIMIT : _filterProps$limit,
90
91
  offset = filterProps.offset;
92
+ var limitToUse = Number(limit || _constants.DEFAULT_LIMIT);
93
+ var offsetToUse = Number(offset || _constants.DEFAULT_OFFSET);
94
+
95
+ if (useRandomSort) {
96
+ var rawQueryStringified = JSON.stringify({
97
+ query: {
98
+ function_score: {
99
+ query: rawQuery,
100
+ random_score: {},
101
+ boost_mode: 'replace'
102
+ }
103
+ }
104
+ });
105
+ return {
106
+ limit: limitToUse,
107
+ offset: offsetToUse,
108
+ rawQueryStringified: rawQueryStringified
109
+ };
110
+ }
111
+
91
112
  var sort = getCorrectSort(relations, filterProps, stringProps, isTextSearchFilterApplied);
92
- var raw = rawQueryStringified ? {
93
- rawQueryStringified: rawQueryStringified
94
- } : {};
95
113
  return _objectSpread(_objectSpread({
96
- limit: Number(limit || _constants.DEFAULT_LIMIT),
97
- offset: Number(offset || _constants.DEFAULT_OFFSET)
98
- }, sort), raw);
114
+ limit: limitToUse,
115
+ offset: offsetToUse
116
+ }, sort), {}, {
117
+ rawQueryStringified: JSON.stringify({
118
+ query: rawQuery
119
+ })
120
+ });
99
121
  };
100
122
 
101
123
  var _default = getGenericRenderVariables;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/get-generic-render-variables.js"],"names":["buildSortValues","sortFilters","relations","stringProps","length","sort","sortValues","map","propsToDisplay","sortFieldName","toLowerCase","filter","Boolean","join","getCorrectSort","filterProps","isTextSearchApplied","sortby","sortProperties","getGenericRenderVariables","rawQueryStringified","isTextSearchFilterApplied","limit","DEFAULT_LIMIT","offset","raw","Number","DEFAULT_OFFSET"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,WAAD,EAAcC,SAAd,EAAyBC,WAAzB,EAAyC;AAC/D,MAAI,CAACF,WAAD,IAAgB,CAACA,WAAW,CAACG,MAAjC,EAAyC,OAAO;AAAEC,IAAAA,IAAI,EAAE;AAAR,GAAP;AACzC,MAAMC,UAAU,GAAGL,WAAW,CAC3BM,GADgB,CACZ,gBAA8B;AAAA,QAA3BF,IAA2B,QAA3BA,IAA2B;AAAA,QAArBG,cAAqB,QAArBA,cAAqB;AACjC,QAAI,CAACH,IAAL,EAAW,OAAO,IAAP;AAEX,QAAMI,aAAa,GAAG,oCAAmBP,SAAnB,EAA8BM,cAA9B,EAA8CL,WAA9C,CAAtB;AACA,WAAOM,aAAa,aAAMA,aAAN,cAAuBJ,IAAI,CAACK,WAAL,EAAvB,IAA8C,IAAlE;AACD,GANgB,EAOhBC,MAPgB,CAOTC,OAPS,EAQhBC,IARgB,CAQX,GARW,CAAnB;AAUA,SAAO;AAAER,IAAAA,IAAI,EAAEC;AAAR,GAAP;AACD,CAbD;;AAcA,IAAMQ,cAAc,GAAG,SAAjBA,cAAiB,CAACZ,SAAD,EAAYa,WAAZ,EAAyBZ,WAAzB,EAAsCa,mBAAtC,EAA8D;AACnF,MAAIA,mBAAJ,EAAyB;AACvB,WAAO,EAAP;AACD;;AACD,MAAQX,IAAR,GAA8CU,WAA9C,CAAQV,IAAR;AAAA,MAAcY,MAAd,GAA8CF,WAA9C,CAAcE,MAAd;AAAA,8BAA8CF,WAA9C,CAAsBG,cAAtB;AAAA,MAAsBA,cAAtB,sCAAuC,EAAvC;AAEA,SAAOlB,eAAe,EACnB;AAAEK,IAAAA,IAAI,EAAJA,IAAF;AAAQG,IAAAA,cAAc,EAAES;AAAxB,GADmB,6CACkBC,cADlB,IAEpBhB,SAFoB,EAGpBC,WAHoB,CAAtB;AAKD,CAXD;;AAaA,IAAMgB,yBAAyB,GAAG,SAA5BA,yBAA4B,CAChCjB,SADgC,EAM7B;AAAA,MAJHa,WAIG,uEAJW,EAIX;AAAA,MAHHZ,WAGG,uEAHW,EAGX;AAAA,MAFHiB,mBAEG,uEAFmB,EAEnB;AAAA,MADHC,yBACG,uEADyB,KACzB;AACH,2BAA0CN,WAA1C,CAAQO,KAAR;AAAA,MAAQA,KAAR,mCAAgBC,wBAAhB;AAAA,MAA+BC,MAA/B,GAA0CT,WAA1C,CAA+BS,MAA/B;AACA,MAAMnB,IAAI,GAAGS,cAAc,CAACZ,SAAD,EAAYa,WAAZ,EAAyBZ,WAAzB,EAAsCkB,yBAAtC,CAA3B;AACA,MAAMI,GAAG,GAAGL,mBAAmB,GAAG;AAAEA,IAAAA,mBAAmB,EAAnBA;AAAF,GAAH,GAA6B,EAA5D;AAEA;AACEE,IAAAA,KAAK,EAAEI,MAAM,CAACJ,KAAK,IAAIC,wBAAV,CADf;AAEEC,IAAAA,MAAM,EAAEE,MAAM,CAACF,MAAM,IAAIG,yBAAX;AAFhB,KAGKtB,IAHL,GAIKoB,GAJL;AAMD,CAjBD;;eAmBeN,yB","sourcesContent":["import getSortbyFieldName from './get-sort-by-field-name';\nimport { DEFAULT_LIMIT, DEFAULT_OFFSET } from '../constants';\n\nconst buildSortValues = (sortFilters, relations, stringProps) => {\n if (!sortFilters || !sortFilters.length) return { sort: [] };\n const sortValues = sortFilters\n .map(({ sort, propsToDisplay }) => {\n if (!sort) return null;\n\n const sortFieldName = getSortbyFieldName(relations, propsToDisplay, stringProps);\n return sortFieldName ? `${sortFieldName}:${sort.toLowerCase()}` : null;\n })\n .filter(Boolean)\n .join(',');\n\n return { sort: sortValues };\n};\nconst getCorrectSort = (relations, filterProps, stringProps, isTextSearchApplied) => {\n if (isTextSearchApplied) {\n return {};\n }\n const { sort, sortby, sortProperties = [] } = filterProps;\n\n return buildSortValues(\n [{ sort, propsToDisplay: sortby }, ...sortProperties],\n relations,\n stringProps\n );\n};\n\nconst getGenericRenderVariables = (\n relations,\n filterProps = {},\n stringProps = [],\n rawQueryStringified = '',\n isTextSearchFilterApplied = false\n) => {\n const { limit = DEFAULT_LIMIT, offset } = filterProps;\n const sort = getCorrectSort(relations, filterProps, stringProps, isTextSearchFilterApplied);\n const raw = rawQueryStringified ? { rawQueryStringified } : {};\n\n return {\n limit: Number(limit || DEFAULT_LIMIT),\n offset: Number(offset || DEFAULT_OFFSET),\n ...sort,\n ...raw\n };\n};\n\nexport default getGenericRenderVariables;\n"],"file":"get-generic-render-variables.js"}
1
+ {"version":3,"sources":["../../src/helpers/get-generic-render-variables.js"],"names":["buildSortValues","sortFilters","relations","stringProps","length","sort","sortValues","map","propsToDisplay","sortFieldName","toLowerCase","filter","Boolean","join","getCorrectSort","filterProps","isTextSearchApplied","sortby","sortProperties","getGenericRenderVariables","rawQuery","isTextSearchFilterApplied","useRandomSort","limit","DEFAULT_LIMIT","offset","limitToUse","Number","offsetToUse","DEFAULT_OFFSET","rawQueryStringified","JSON","stringify","query","function_score","random_score","boost_mode"],"mappings":"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","sourcesContent":["import getSortbyFieldName from './get-sort-by-field-name';\nimport { DEFAULT_LIMIT, DEFAULT_OFFSET } from '../constants';\n\nconst buildSortValues = (sortFilters, relations, stringProps) => {\n if (!sortFilters || !sortFilters.length) return { sort: [] };\n\n const sortValues = sortFilters\n .map(({ sort, propsToDisplay }) => {\n if (!sort) return null;\n\n const sortFieldName = getSortbyFieldName(relations, propsToDisplay, stringProps);\n return sortFieldName ? `${sortFieldName}:${sort.toLowerCase()}` : null;\n })\n .filter(Boolean)\n .join(',');\n\n return { sort: sortValues };\n};\nconst getCorrectSort = (relations, filterProps, stringProps, isTextSearchApplied) => {\n if (isTextSearchApplied) {\n return {};\n }\n const { sort, sortby, sortProperties = [] } = filterProps;\n\n return buildSortValues(\n [{ sort, propsToDisplay: sortby }, ...sortProperties],\n relations,\n stringProps\n );\n};\n\nconst getGenericRenderVariables = (\n relations,\n filterProps = {},\n stringProps = [],\n rawQuery = {},\n isTextSearchFilterApplied = false,\n useRandomSort = false\n) => {\n const { limit = DEFAULT_LIMIT, offset } = filterProps;\n const limitToUse = Number(limit || DEFAULT_LIMIT);\n const offsetToUse = Number(offset || DEFAULT_OFFSET);\n\n if (useRandomSort) {\n const rawQueryStringified = JSON.stringify({\n query: {\n function_score: {\n query: rawQuery,\n random_score: {},\n boost_mode: 'replace'\n }\n }\n });\n\n return {\n limit: limitToUse,\n offset: offsetToUse,\n rawQueryStringified\n };\n }\n\n const sort = getCorrectSort(relations, filterProps, stringProps, isTextSearchFilterApplied);\n\n return {\n limit: limitToUse,\n offset: offsetToUse,\n ...sort,\n rawQueryStringified: JSON.stringify({\n query: rawQuery\n })\n };\n};\n\nexport default getGenericRenderVariables;\n"],"file":"get-generic-render-variables.js"}
@@ -11,30 +11,42 @@ const AdSlotRender = ({
11
11
  parsedSizes,
12
12
  targetingArguments
13
13
  }) => {
14
- const [loadingStatus, setLoadingStatus] = useState(BANNER_LOADING);
14
+ const [{
15
+ loadingStatus = BANNER_LOADING,
16
+ minHeight
17
+ }, setLoadingStatus] = useState({});
15
18
  const bannerClass = `banner-${sizeId}`;
16
19
  const styles = loadingStatus === BANNER_LOADING && sizeMapping.map(({
17
20
  sizes: styleSizes,
18
21
  viewport: [minWidth]
19
22
  }) => {
20
- const minHeight = Math.min(...styleSizes.map(([, height]) => height));
21
- return `@media(min-width:${minWidth}px){.${bannerClass}{min-height:${minHeight}px;}`;
23
+ const minimumHeight = Math.min(...styleSizes.map(([, height]) => height));
24
+ return `@media(min-width:${minWidth}px){.${bannerClass}{min-height:${minimumHeight}px;}`;
22
25
  }).sort();
23
26
  const className = `ad-slot ad-slot-${loadingStatus} ${bannerClass}`;
24
- return /*#__PURE__*/React.createElement(React.Fragment, null, styles && /*#__PURE__*/React.createElement("style", null, styles), /*#__PURE__*/React.createElement("div", {
25
- className: className
27
+ return /*#__PURE__*/React.createElement(React.Fragment, null, styles && /*#__PURE__*/React.createElement("style", null, styles.join('\n')), /*#__PURE__*/React.createElement("div", {
28
+ className: className,
29
+ style: {
30
+ minHeight
31
+ }
26
32
  }, shouldShowBanner && /*#__PURE__*/React.createElement(AdSlot, {
27
33
  adUnit: parsedAdunit,
28
34
  sizes: parsedSizes,
29
35
  targetingArguments: targetingArguments,
30
36
  sizeMapping: sizeMapping,
31
- onSlotRender: ({
32
- event: {
33
- isEmpty
34
- }
35
- }) => {
37
+ onSlotRender: slotData => {
38
+ const {
39
+ event: {
40
+ isEmpty,
41
+ size
42
+ }
43
+ } = slotData;
44
+ const slotHeight = size && size.length ? size[1] : undefined;
36
45
  const newLoadingStatus = isEmpty ? BANNER_EMPTY : BANNER_LOADED;
37
- setLoadingStatus(newLoadingStatus);
46
+ setLoadingStatus({
47
+ loadingStatus: newLoadingStatus,
48
+ minHeight: slotHeight
49
+ });
38
50
  }
39
51
  })));
40
52
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Banner/AdSlotRender.js"],"names":["React","useState","AdSlot","PropTypes","BANNER_LOADING","BANNER_EMPTY","BANNER_LOADED","AdSlotRender","shouldShowBanner","sizeMapping","sizeId","parsedAdunit","parsedSizes","targetingArguments","loadingStatus","setLoadingStatus","bannerClass","styles","map","sizes","styleSizes","viewport","minWidth","minHeight","Math","min","height","sort","className","event","isEmpty","newLoadingStatus","propTypes","bool","isRequired","array","string","object","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,cAAT,EAAyBC,YAAzB,EAAuCC,aAAvC,QAA4D,iBAA5D;;AAEA,MAAMC,YAAY,GAAG,CAAC;AACpBC,EAAAA,gBADoB;AAEpBC,EAAAA,WAFoB;AAGpBC,EAAAA,MAHoB;AAIpBC,EAAAA,YAJoB;AAKpBC,EAAAA,WALoB;AAMpBC,EAAAA;AANoB,CAAD,KAOf;AACJ,QAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCd,QAAQ,CAACG,cAAD,CAAlD;AAEA,QAAMY,WAAW,GAAI,UAASN,MAAO,EAArC;AAEA,QAAMO,MAAM,GACVH,aAAa,KAAKV,cAAlB,IACAK,WAAW,CACRS,GADH,CACO,CAAC;AAAEC,IAAAA,KAAK,EAAEC,UAAT;AAAqBC,IAAAA,QAAQ,EAAE,CAACC,QAAD;AAA/B,GAAD,KAAiD;AACpD,UAAMC,SAAS,GAAGC,IAAI,CAACC,GAAL,CAAS,GAAGL,UAAU,CAACF,GAAX,CAAe,CAAC,GAAGQ,MAAH,CAAD,KAAgBA,MAA/B,CAAZ,CAAlB;AACA,WAAQ,oBAAmBJ,QAAS,QAAON,WAAY,eAAcO,SAAU,MAA/E;AACD,GAJH,EAKGI,IALH,EAFF;AAQA,QAAMC,SAAS,GAAI,mBAAkBd,aAAc,IAAGE,WAAY,EAAlE;AAEA,sBACE,0CACGC,MAAM,iBAAI,mCAAQA,MAAR,CADb,eAEE;AAAK,IAAA,SAAS,EAAEW;AAAhB,KACGpB,gBAAgB,iBACf,oBAAC,MAAD;AACE,IAAA,MAAM,EAAEG,YADV;AAEE,IAAA,KAAK,EAAEC,WAFT;AAGE,IAAA,kBAAkB,EAAEC,kBAHtB;AAIE,IAAA,WAAW,EAAEJ,WAJf;AAKE,IAAA,YAAY,EAAE,CAAC;AAAEoB,MAAAA,KAAK,EAAE;AAAEC,QAAAA;AAAF;AAAT,KAAD,KAA4B;AACxC,YAAMC,gBAAgB,GAAGD,OAAO,GAAGzB,YAAH,GAAkBC,aAAlD;AACAS,MAAAA,gBAAgB,CAACgB,gBAAD,CAAhB;AACD;AARH,IAFJ,CAFF,CADF;AAmBD,CAzCD;;AA2CAxB,YAAY,CAACyB,SAAb,GAAyB;AACvBxB,EAAAA,gBAAgB,EAAEL,SAAS,CAAC8B,IAAV,CAAeC,UADV;AAEvBzB,EAAAA,WAAW,EAAEN,SAAS,CAACgC,KAAV,CAAgBD,UAFN;AAGvBxB,EAAAA,MAAM,EAAEP,SAAS,CAACiC,MAAV,CAAiBF,UAHF;AAIvBvB,EAAAA,YAAY,EAAER,SAAS,CAACiC,MAAV,CAAiBF,UAJR;AAKvBtB,EAAAA,WAAW,EAAET,SAAS,CAACgC,KALA;AAMvBtB,EAAAA,kBAAkB,EAAEV,SAAS,CAACkC,MAAV,CAAiBH;AANd,CAAzB;AASA3B,YAAY,CAAC+B,YAAb,GAA4B;AAC1B1B,EAAAA,WAAW,EAAE;AADa,CAA5B;AAIA,eAAeL,YAAf","sourcesContent":["import React, { useState } from 'react';\nimport { AdSlot } from 'react-dfp';\nimport PropTypes from 'prop-types';\nimport { BANNER_LOADING, BANNER_EMPTY, BANNER_LOADED } from '../../constants';\n\nconst AdSlotRender = ({\n shouldShowBanner,\n sizeMapping,\n sizeId,\n parsedAdunit,\n parsedSizes,\n targetingArguments\n}) => {\n const [loadingStatus, setLoadingStatus] = useState(BANNER_LOADING);\n\n const bannerClass = `banner-${sizeId}`;\n\n const styles =\n loadingStatus === BANNER_LOADING &&\n sizeMapping\n .map(({ sizes: styleSizes, viewport: [minWidth] }) => {\n const minHeight = Math.min(...styleSizes.map(([, height]) => height));\n return `@media(min-width:${minWidth}px){.${bannerClass}{min-height:${minHeight}px;}`;\n })\n .sort();\n const className = `ad-slot ad-slot-${loadingStatus} ${bannerClass}`;\n\n return (\n <>\n {styles && <style>{styles}</style>}\n <div className={className}>\n {shouldShowBanner && (\n <AdSlot\n adUnit={parsedAdunit}\n sizes={parsedSizes}\n targetingArguments={targetingArguments}\n sizeMapping={sizeMapping}\n onSlotRender={({ event: { isEmpty } }) => {\n const newLoadingStatus = isEmpty ? BANNER_EMPTY : BANNER_LOADED;\n setLoadingStatus(newLoadingStatus);\n }}\n />\n )}\n </div>\n </>\n );\n};\n\nAdSlotRender.propTypes = {\n shouldShowBanner: PropTypes.bool.isRequired,\n sizeMapping: PropTypes.array.isRequired,\n sizeId: PropTypes.string.isRequired,\n parsedAdunit: PropTypes.string.isRequired,\n parsedSizes: PropTypes.array,\n targetingArguments: PropTypes.object.isRequired\n};\n\nAdSlotRender.defaultProps = {\n parsedSizes: null\n};\n\nexport default AdSlotRender;\n"],"file":"AdSlotRender.js"}
1
+ {"version":3,"sources":["../../../src/components/Banner/AdSlotRender.js"],"names":["React","useState","AdSlot","PropTypes","BANNER_LOADING","BANNER_EMPTY","BANNER_LOADED","AdSlotRender","shouldShowBanner","sizeMapping","sizeId","parsedAdunit","parsedSizes","targetingArguments","loadingStatus","minHeight","setLoadingStatus","bannerClass","styles","map","sizes","styleSizes","viewport","minWidth","minimumHeight","Math","min","height","sort","className","join","slotData","event","isEmpty","size","slotHeight","length","undefined","newLoadingStatus","propTypes","bool","isRequired","array","string","object","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,cAAT,EAAyBC,YAAzB,EAAuCC,aAAvC,QAA4D,iBAA5D;;AAEA,MAAMC,YAAY,GAAG,CAAC;AACpBC,EAAAA,gBADoB;AAEpBC,EAAAA,WAFoB;AAGpBC,EAAAA,MAHoB;AAIpBC,EAAAA,YAJoB;AAKpBC,EAAAA,WALoB;AAMpBC,EAAAA;AANoB,CAAD,KAOf;AACJ,QAAM,CAAC;AAAEC,IAAAA,aAAa,GAAGV,cAAlB;AAAkCW,IAAAA;AAAlC,GAAD,EAAgDC,gBAAhD,IAAoEf,QAAQ,CAAC,EAAD,CAAlF;AAEA,QAAMgB,WAAW,GAAI,UAASP,MAAO,EAArC;AAEA,QAAMQ,MAAM,GACVJ,aAAa,KAAKV,cAAlB,IACAK,WAAW,CACRU,GADH,CACO,CAAC;AAAEC,IAAAA,KAAK,EAAEC,UAAT;AAAqBC,IAAAA,QAAQ,EAAE,CAACC,QAAD;AAA/B,GAAD,KAAiD;AACpD,UAAMC,aAAa,GAAGC,IAAI,CAACC,GAAL,CAAS,GAAGL,UAAU,CAACF,GAAX,CAAe,CAAC,GAAGQ,MAAH,CAAD,KAAgBA,MAA/B,CAAZ,CAAtB;AACA,WAAQ,oBAAmBJ,QAAS,QAAON,WAAY,eAAcO,aAAc,MAAnF;AACD,GAJH,EAKGI,IALH,EAFF;AAQA,QAAMC,SAAS,GAAI,mBAAkBf,aAAc,IAAGG,WAAY,EAAlE;AAEA,sBACE,0CACGC,MAAM,iBAAI,mCAAQA,MAAM,CAACY,IAAP,CAAY,IAAZ,CAAR,CADb,eAEE;AAAK,IAAA,SAAS,EAAED,SAAhB;AAA2B,IAAA,KAAK,EAAE;AAAEd,MAAAA;AAAF;AAAlC,KACGP,gBAAgB,iBACf,oBAAC,MAAD;AACE,IAAA,MAAM,EAAEG,YADV;AAEE,IAAA,KAAK,EAAEC,WAFT;AAGE,IAAA,kBAAkB,EAAEC,kBAHtB;AAIE,IAAA,WAAW,EAAEJ,WAJf;AAKE,IAAA,YAAY,EAAEsB,QAAQ,IAAI;AACxB,YAAM;AACJC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,OAAF;AAAWC,UAAAA;AAAX;AADH,UAEFH,QAFJ;AAGA,YAAMI,UAAU,GAAGD,IAAI,IAAIA,IAAI,CAACE,MAAb,GAAsBF,IAAI,CAAC,CAAD,CAA1B,GAAgCG,SAAnD;AACA,YAAMC,gBAAgB,GAAGL,OAAO,GAAG5B,YAAH,GAAkBC,aAAlD;AACAU,MAAAA,gBAAgB,CAAC;AAAEF,QAAAA,aAAa,EAAEwB,gBAAjB;AAAmCvB,QAAAA,SAAS,EAAEoB;AAA9C,OAAD,CAAhB;AACD;AAZH,IAFJ,CAFF,CADF;AAuBD,CA7CD;;AA+CA5B,YAAY,CAACgC,SAAb,GAAyB;AACvB/B,EAAAA,gBAAgB,EAAEL,SAAS,CAACqC,IAAV,CAAeC,UADV;AAEvBhC,EAAAA,WAAW,EAAEN,SAAS,CAACuC,KAAV,CAAgBD,UAFN;AAGvB/B,EAAAA,MAAM,EAAEP,SAAS,CAACwC,MAAV,CAAiBF,UAHF;AAIvB9B,EAAAA,YAAY,EAAER,SAAS,CAACwC,MAAV,CAAiBF,UAJR;AAKvB7B,EAAAA,WAAW,EAAET,SAAS,CAACuC,KALA;AAMvB7B,EAAAA,kBAAkB,EAAEV,SAAS,CAACyC,MAAV,CAAiBH;AANd,CAAzB;AASAlC,YAAY,CAACsC,YAAb,GAA4B;AAC1BjC,EAAAA,WAAW,EAAE;AADa,CAA5B;AAIA,eAAeL,YAAf","sourcesContent":["import React, { useState } from 'react';\nimport { AdSlot } from 'react-dfp';\nimport PropTypes from 'prop-types';\nimport { BANNER_LOADING, BANNER_EMPTY, BANNER_LOADED } from '../../constants';\n\nconst AdSlotRender = ({\n shouldShowBanner,\n sizeMapping,\n sizeId,\n parsedAdunit,\n parsedSizes,\n targetingArguments\n}) => {\n const [{ loadingStatus = BANNER_LOADING, minHeight }, setLoadingStatus] = useState({});\n\n const bannerClass = `banner-${sizeId}`;\n\n const styles =\n loadingStatus === BANNER_LOADING &&\n sizeMapping\n .map(({ sizes: styleSizes, viewport: [minWidth] }) => {\n const minimumHeight = Math.min(...styleSizes.map(([, height]) => height));\n return `@media(min-width:${minWidth}px){.${bannerClass}{min-height:${minimumHeight}px;}`;\n })\n .sort();\n const className = `ad-slot ad-slot-${loadingStatus} ${bannerClass}`;\n\n return (\n <>\n {styles && <style>{styles.join('\\n')}</style>}\n <div className={className} style={{ minHeight }}>\n {shouldShowBanner && (\n <AdSlot\n adUnit={parsedAdunit}\n sizes={parsedSizes}\n targetingArguments={targetingArguments}\n sizeMapping={sizeMapping}\n onSlotRender={slotData => {\n const {\n event: { isEmpty, size }\n } = slotData;\n const slotHeight = size && size.length ? size[1] : undefined;\n const newLoadingStatus = isEmpty ? BANNER_EMPTY : BANNER_LOADED;\n setLoadingStatus({ loadingStatus: newLoadingStatus, minHeight: slotHeight });\n }}\n />\n )}\n </div>\n </>\n );\n};\n\nAdSlotRender.propTypes = {\n shouldShowBanner: PropTypes.bool.isRequired,\n sizeMapping: PropTypes.array.isRequired,\n sizeId: PropTypes.string.isRequired,\n parsedAdunit: PropTypes.string.isRequired,\n parsedSizes: PropTypes.array,\n targetingArguments: PropTypes.object.isRequired\n};\n\nAdSlotRender.defaultProps = {\n parsedSizes: null\n};\n\nexport default AdSlotRender;\n"],"file":"AdSlotRender.js"}
@@ -3,11 +3,13 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  const _excluded = ["type"];
4
4
  import React, { useContext } from 'react';
5
5
  import { MainContext } from '@blaze-cms/nextjs-components';
6
+ import { checkIfLoggedIn } from '@blaze-cms/core-auth-ui';
6
7
  import PropTypes from 'prop-types';
7
8
  import flatten from 'lodash.flatten';
8
9
  import { useQuery } from '@apollo/client';
9
10
  import { useRouter } from 'next/router';
10
- import { getSingleEntitySchema } from '../../application/query';
11
+ import { buildUserQuery, buildUserPropsData } from './helpers';
12
+ import { getSingleEntitySchema, getUser } from '../../application/query';
11
13
  import Wrapper from '../Wrapper';
12
14
  import BannerRender from './BannerRender';
13
15
  import buildPropsQuery from '../../helpers/build-props-query';
@@ -24,6 +26,9 @@ const Banner = _ref => {
24
26
  const {
25
27
  isPreview
26
28
  } = useContext(MainContext);
29
+ const {
30
+ id: userId
31
+ } = checkIfLoggedIn();
27
32
  const {
28
33
  asPath
29
34
  } = router;
@@ -31,8 +36,10 @@ const Banner = _ref => {
31
36
  parent,
32
37
  entity,
33
38
  sizeId,
34
- propsToDisplay = []
39
+ propsToDisplay = [],
40
+ userPropsToDisplay = []
35
41
  } = otherProps;
42
+ const userQuery = buildUserQuery(userPropsToDisplay);
36
43
  const {
37
44
  itemEntity
38
45
  } = parent;
@@ -45,7 +52,16 @@ const Banner = _ref => {
45
52
  id: entity || itemEntity
46
53
  }
47
54
  });
48
- if (loading) return '';
55
+ const {
56
+ data: userData,
57
+ loading: userLoading
58
+ } = useQuery(getUser(userQuery), {
59
+ variables: {
60
+ id: userId
61
+ },
62
+ skip: !userPropsToDisplay.length || !userId
63
+ });
64
+ if (loading || userLoading) return '';
49
65
  if (error) return error.message;
50
66
  if (!data) return null;
51
67
  if (!sizeId) return null;
@@ -53,6 +69,7 @@ const Banner = _ref => {
53
69
  const queryProps = buildPropsQuery(data, propsToDisplay.length ? flatten(propsToDisplay.map(({
54
70
  propertiesToDisplay
55
71
  }) => propertiesToDisplay)) : []);
72
+ const userPropsData = buildUserPropsData(userData, userPropsToDisplay);
56
73
  const {
57
74
  actionKey,
58
75
  action
@@ -66,7 +83,8 @@ const Banner = _ref => {
66
83
  }, otherProps, {
67
84
  action: action,
68
85
  actionKey: actionKey,
69
- asPath: asPath
86
+ asPath: asPath,
87
+ userPropsData: userPropsData
70
88
  })));
71
89
  };
72
90
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["React","useContext","MainContext","PropTypes","flatten","useQuery","useRouter","getSingleEntitySchema","Wrapper","BannerRender","buildPropsQuery","getClassModifiers","getEntityRenderProps","Banner","type","otherProps","router","isPreview","asPath","parent","entity","sizeId","propsToDisplay","itemEntity","data","error","loading","variables","id","message","modifiers","queryProps","length","map","propertiesToDisplay","actionKey","action","bannerKey","propTypes","string","defaultProps"],"mappings":";;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,OAAP,MAAoB,gBAApB;AACA,SAASC,QAAT,QAAyB,gBAAzB;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,qBAAT,QAAsC,yBAAtC;AACA,OAAOC,OAAP,MAAoB,YAApB;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,OAAOC,eAAP,MAA4B,iCAA5B;AACA,SAASC,iBAAT,QAAkC,aAAlC;AACA,OAAOC,oBAAP,MAAiC,uCAAjC;;AAEA,MAAMC,MAAM,GAAG,QAA6B;AAAA,MAA5B;AAAEC,IAAAA;AAAF,GAA4B;AAAA,MAAjBC,UAAiB;;AAC1C,QAAMC,MAAM,GAAGV,SAAS,EAAxB;AACA,QAAM;AAAEW,IAAAA;AAAF,MAAgBhB,UAAU,CAACC,WAAD,CAAhC;AACA,QAAM;AAAEgB,IAAAA;AAAF,MAAaF,MAAnB;AACA,QAAM;AAAEG,IAAAA,MAAF;AAAUC,IAAAA,MAAV;AAAkBC,IAAAA,MAAlB;AAA0BC,IAAAA,cAAc,GAAG;AAA3C,MAAkDP,UAAxD;AAEA,QAAM;AAAEQ,IAAAA;AAAF,MAAiBJ,MAAvB;AACA,QAAM;AAAEK,IAAAA,IAAF;AAAQC,IAAAA,KAAR;AAAeC,IAAAA;AAAf,MAA2BrB,QAAQ,CAACE,qBAAD,EAAwB;AAC/DoB,IAAAA,SAAS,EAAE;AAAEC,MAAAA,EAAE,EAAER,MAAM,IAAIG;AAAhB;AADoD,GAAxB,CAAzC;AAIA,MAAIG,OAAJ,EAAa,OAAO,EAAP;AACb,MAAID,KAAJ,EAAW,OAAOA,KAAK,CAACI,OAAb;AACX,MAAI,CAACL,IAAL,EAAW,OAAO,IAAP;AACX,MAAI,CAACH,MAAL,EAAa,OAAO,IAAP;AAEb,QAAMS,SAAS,GAAGnB,iBAAiB,CAAC,QAAD,EAAWI,UAAX,CAAnC;AACA,QAAMgB,UAAU,GAAGrB,eAAe,CAChCc,IADgC,EAEhCF,cAAc,CAACU,MAAf,GACI5B,OAAO,CAACkB,cAAc,CAACW,GAAf,CAAmB,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAA6BA,mBAAhD,CAAD,CADX,GAEI,EAJ4B,CAAlC;AAOA,QAAM;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,MAAwBxB,oBAAoB,CAACmB,UAAD,EAAaP,IAAb,EAAmBP,SAAnB,CAAlD;AACA,QAAMoB,SAAS,GAAI,GAAEhB,MAAO,GAAEH,MAAO,EAArC;AAEA,sBACE,oBAAC,OAAD;AAAS,IAAA,SAAS,EAAEJ,IAApB;AAA0B,IAAA,SAAS,EAAEgB;AAArC,kBACE,oBAAC,YAAD;AACE,IAAA,GAAG,EAAEO;AADP,KAEMtB,UAFN;AAGE,IAAA,MAAM,EAAEqB,MAHV;AAIE,IAAA,SAAS,EAAED,SAJb;AAKE,IAAA,MAAM,EAAEjB;AALV,KADF,CADF;AAWD,CAtCD;;AAwCAL,MAAM,CAACyB,SAAP,GAAmB;AACjBxB,EAAAA,IAAI,EAAEX,SAAS,CAACoC;AADC,CAAnB;AAIA1B,MAAM,CAAC2B,YAAP,GAAsB;AACpB1B,EAAAA,IAAI,EAAE;AADc,CAAtB;AAIA,eAAeD,MAAf","sourcesContent":["import React, { useContext } from 'react';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport PropTypes from 'prop-types';\nimport flatten from 'lodash.flatten';\nimport { useQuery } from '@apollo/client';\nimport { useRouter } from 'next/router';\nimport { getSingleEntitySchema } from '../../application/query';\nimport Wrapper from '../Wrapper';\nimport BannerRender from './BannerRender';\nimport buildPropsQuery from '../../helpers/build-props-query';\nimport { getClassModifiers } from '../../utils';\nimport getEntityRenderProps from '../../helpers/get-entity-render-props';\n\nconst Banner = ({ type, ...otherProps }) => {\n const router = useRouter();\n const { isPreview } = useContext(MainContext);\n const { asPath } = router;\n const { parent, entity, sizeId, propsToDisplay = [] } = otherProps;\n\n const { itemEntity } = parent;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entity || itemEntity }\n });\n\n if (loading) return '';\n if (error) return error.message;\n if (!data) return null;\n if (!sizeId) return null;\n\n const modifiers = getClassModifiers('banner', otherProps);\n const queryProps = buildPropsQuery(\n data,\n propsToDisplay.length\n ? flatten(propsToDisplay.map(({ propertiesToDisplay }) => propertiesToDisplay))\n : []\n );\n\n const { actionKey, action } = getEntityRenderProps(queryProps, data, isPreview);\n const bannerKey = `${sizeId}${asPath}`;\n\n return (\n <Wrapper className={type} modifiers={modifiers}>\n <BannerRender\n key={bannerKey}\n {...otherProps}\n action={action}\n actionKey={actionKey}\n asPath={asPath}\n />\n </Wrapper>\n );\n};\n\nBanner.propTypes = {\n type: PropTypes.string\n};\n\nBanner.defaultProps = {\n type: 'banner'\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
1
+ {"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["React","useContext","MainContext","checkIfLoggedIn","PropTypes","flatten","useQuery","useRouter","buildUserQuery","buildUserPropsData","getSingleEntitySchema","getUser","Wrapper","BannerRender","buildPropsQuery","getClassModifiers","getEntityRenderProps","Banner","type","otherProps","router","isPreview","id","userId","asPath","parent","entity","sizeId","propsToDisplay","userPropsToDisplay","userQuery","itemEntity","data","error","loading","variables","userData","userLoading","skip","length","message","modifiers","queryProps","map","propertiesToDisplay","userPropsData","actionKey","action","bannerKey","propTypes","string","defaultProps"],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport { checkIfLoggedIn } from '@blaze-cms/core-auth-ui';\nimport PropTypes from 'prop-types';\nimport flatten from 'lodash.flatten';\nimport { useQuery } from '@apollo/client';\nimport { useRouter } from 'next/router';\nimport { buildUserQuery, buildUserPropsData } from './helpers';\nimport { getSingleEntitySchema, getUser } from '../../application/query';\nimport Wrapper from '../Wrapper';\nimport BannerRender from './BannerRender';\nimport buildPropsQuery from '../../helpers/build-props-query';\nimport { getClassModifiers } from '../../utils';\nimport getEntityRenderProps from '../../helpers/get-entity-render-props';\n\nconst Banner = ({ type, ...otherProps }) => {\n const router = useRouter();\n const { isPreview } = useContext(MainContext);\n const { id: userId } = checkIfLoggedIn();\n const { asPath } = router;\n const { parent, entity, sizeId, propsToDisplay = [], userPropsToDisplay = [] } = otherProps;\n const userQuery = buildUserQuery(userPropsToDisplay);\n const { itemEntity } = parent;\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: entity || itemEntity }\n });\n const { data: userData, loading: userLoading } = useQuery(getUser(userQuery), {\n variables: { id: userId },\n skip: !userPropsToDisplay.length || !userId\n });\n\n if (loading || userLoading) return '';\n if (error) return error.message;\n if (!data) return null;\n if (!sizeId) return null;\n\n const modifiers = getClassModifiers('banner', otherProps);\n const queryProps = buildPropsQuery(\n data,\n propsToDisplay.length\n ? flatten(propsToDisplay.map(({ propertiesToDisplay }) => propertiesToDisplay))\n : []\n );\n\n const userPropsData = buildUserPropsData(userData, userPropsToDisplay);\n const { actionKey, action } = getEntityRenderProps(queryProps, data, isPreview);\n const bannerKey = `${sizeId}${asPath}`;\n\n return (\n <Wrapper className={type} modifiers={modifiers}>\n <BannerRender\n key={bannerKey}\n {...otherProps}\n action={action}\n actionKey={actionKey}\n asPath={asPath}\n userPropsData={userPropsData}\n />\n </Wrapper>\n );\n};\n\nBanner.propTypes = {\n type: PropTypes.string\n};\n\nBanner.defaultProps = {\n type: 'banner'\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- const _excluded = ["baseAdunit", "adunit", "sizeId", "sizes", "propsToDisplay", "entity", "targetings", "parent", "asPath", "action", "actionKey", "cardBannerIndex"];
3
+ const _excluded = ["baseAdunit", "adunit", "sizeId", "sizes", "propsToDisplay", "entity", "targetings", "parent", "asPath", "action", "actionKey", "cardBannerIndex", "userPropsData"];
4
4
 
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
 
@@ -28,7 +28,8 @@ const BannerRender = _ref => {
28
28
  asPath,
29
29
  action,
30
30
  actionKey,
31
- cardBannerIndex
31
+ cardBannerIndex,
32
+ userPropsData
32
33
  } = _ref,
33
34
  otherProps = _objectWithoutProperties(_ref, _excluded);
34
35
 
@@ -86,7 +87,7 @@ const BannerRender = _ref => {
86
87
  const shouldShowBanner = parsedAdunit && parsedSizes && !!parsedSizes.length && isContextualTargetingReady;
87
88
  const customTargetings = setCustomTargetings(targetings, cardBannerIndex);
88
89
 
89
- const targetingArguments = _objectSpread(_objectSpread({}, parsedTargetings), customTargetings);
90
+ const targetingArguments = _objectSpread(_objectSpread(_objectSpread({}, parsedTargetings), customTargetings), userPropsData);
90
91
 
91
92
  return /*#__PURE__*/React.createElement(AdSlotRender, {
92
93
  shouldShowBanner: !!shouldShowBanner,
@@ -110,7 +111,8 @@ BannerRender.propTypes = {
110
111
  entity: PropTypes.string,
111
112
  targetings: PropTypes.string,
112
113
  sizes: PropTypes.string,
113
- cardBannerIndex: PropTypes.number
114
+ cardBannerIndex: PropTypes.number,
115
+ userPropsData: PropTypes.object
114
116
  };
115
117
  BannerRender.defaultProps = {
116
118
  adunit: '',
@@ -120,7 +122,8 @@ BannerRender.defaultProps = {
120
122
  entity: '',
121
123
  targetings: '',
122
124
  sizes: '',
123
- cardBannerIndex: null
125
+ cardBannerIndex: null,
126
+ userPropsData: {}
124
127
  };
125
128
  export default withTitle(BannerRender);
126
129
  //# sourceMappingURL=BannerRender.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Banner/BannerRender.js"],"names":["React","PropTypes","useQuery","generateSingleItemQuery","getCount","buildBannerSizes","buildContextualTargeting","buildParsedAdunit","buildSizeMapping","setCustomTargetings","BANNER_QUERY_PROPS","COUNT_CONTENT_HIERARCHIES","GET_BANNER","PUBLISHED","withTitle","AdSlotRender","BannerRender","baseAdunit","adunit","sizeId","sizes","propsToDisplay","entity","targetings","parent","asPath","action","actionKey","cardBannerIndex","otherProps","id","itemId","data","entityRecordData","variables","where","skip","bannerData","parentId","childEntity","_ilike","parsedTargetings","entityData","bannerSizes","sizeMapping","parsedSizes","countContentHierarchies","parsedAdunit","isContextualTargetingSet","length","Object","keys","isContextualTargetingReady","shouldShowBanner","customTargetings","targetingArguments","propTypes","object","isRequired","string","array","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useQuery } from '@apollo/client';\n\nimport { generateSingleItemQuery, getCount } from '../../application/query';\nimport {\n buildBannerSizes,\n buildContextualTargeting,\n buildParsedAdunit,\n buildSizeMapping,\n setCustomTargetings\n} from './helpers';\nimport {\n BANNER_QUERY_PROPS,\n COUNT_CONTENT_HIERARCHIES,\n GET_BANNER,\n PUBLISHED\n} from '../../constants';\nimport { withTitle } from '../../HOC';\nimport AdSlotRender from './AdSlotRender';\n\nconst BannerRender = ({\n baseAdunit,\n adunit,\n sizeId,\n sizes,\n propsToDisplay,\n entity,\n targetings,\n parent,\n asPath,\n action,\n actionKey,\n cardBannerIndex,\n ...otherProps\n}) => {\n const { id } = otherProps;\n const { itemId } = parent;\n\n const { data: entityRecordData = {} } = useQuery(action, {\n variables: { where: { id: id || itemId } },\n skip: id && id !== itemId\n });\n\n const { data: bannerData = {} } = useQuery(\n generateSingleItemQuery(GET_BANNER, BANNER_QUERY_PROPS),\n {\n variables: { id: sizeId },\n skip: !sizeId\n }\n );\n\n const { data = {} } = useQuery(getCount(COUNT_CONTENT_HIERARCHIES), {\n variables: {\n where: {\n parentId: id || itemId,\n childEntity: {\n _ilike: `${PUBLISHED}_%`\n }\n }\n }\n });\n\n const parsedTargetings = buildContextualTargeting(actionKey, entityRecordData, propsToDisplay);\n\n const { entityData } = bannerData;\n const { sizes: bannerSizes } = entityData || {};\n\n const sizeMapping = buildSizeMapping(sizeId, bannerSizes);\n const parsedSizes = buildBannerSizes(sizeId, bannerSizes, sizes);\n\n const { countContentHierarchies } = data;\n\n const parsedAdunit = buildParsedAdunit(asPath, countContentHierarchies, baseAdunit, adunit);\n const isContextualTargetingSet =\n propsToDisplay.length && parsedTargetings && Object.keys(parsedTargetings).length;\n const isContextualTargetingReady = isContextualTargetingSet || !propsToDisplay.length;\n const shouldShowBanner =\n parsedAdunit && parsedSizes && !!parsedSizes.length && isContextualTargetingReady;\n\n const customTargetings = setCustomTargetings(targetings, cardBannerIndex);\n\n const targetingArguments = { ...parsedTargetings, ...customTargetings };\n\n return (\n <AdSlotRender\n shouldShowBanner={!!shouldShowBanner}\n sizeMapping={sizeMapping}\n sizeId={sizeId}\n parsedAdunit={parsedAdunit}\n parsedSizes={parsedSizes}\n targetingArguments={targetingArguments}\n />\n );\n};\n\nBannerRender.propTypes = {\n parent: PropTypes.object.isRequired,\n asPath: PropTypes.string.isRequired,\n action: PropTypes.object.isRequired,\n actionKey: PropTypes.string.isRequired,\n adunit: PropTypes.string,\n baseAdunit: PropTypes.string,\n sizeId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n targetings: PropTypes.string,\n sizes: PropTypes.string,\n cardBannerIndex: PropTypes.number\n};\n\nBannerRender.defaultProps = {\n adunit: '',\n baseAdunit: '',\n sizeId: '',\n propsToDisplay: [],\n entity: '',\n targetings: '',\n sizes: '',\n cardBannerIndex: null\n};\n\nexport default withTitle(BannerRender);\n"],"file":"BannerRender.js"}
1
+ {"version":3,"sources":["../../../src/components/Banner/BannerRender.js"],"names":["React","PropTypes","useQuery","generateSingleItemQuery","getCount","buildBannerSizes","buildContextualTargeting","buildParsedAdunit","buildSizeMapping","setCustomTargetings","BANNER_QUERY_PROPS","COUNT_CONTENT_HIERARCHIES","GET_BANNER","PUBLISHED","withTitle","AdSlotRender","BannerRender","baseAdunit","adunit","sizeId","sizes","propsToDisplay","entity","targetings","parent","asPath","action","actionKey","cardBannerIndex","userPropsData","otherProps","id","itemId","data","entityRecordData","variables","where","skip","bannerData","parentId","childEntity","_ilike","parsedTargetings","entityData","bannerSizes","sizeMapping","parsedSizes","countContentHierarchies","parsedAdunit","isContextualTargetingSet","length","Object","keys","isContextualTargetingReady","shouldShowBanner","customTargetings","targetingArguments","propTypes","object","isRequired","string","array","number","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { useQuery } from '@apollo/client';\n\nimport { generateSingleItemQuery, getCount } from '../../application/query';\nimport {\n buildBannerSizes,\n buildContextualTargeting,\n buildParsedAdunit,\n buildSizeMapping,\n setCustomTargetings\n} from './helpers';\nimport {\n BANNER_QUERY_PROPS,\n COUNT_CONTENT_HIERARCHIES,\n GET_BANNER,\n PUBLISHED\n} from '../../constants';\nimport { withTitle } from '../../HOC';\nimport AdSlotRender from './AdSlotRender';\n\nconst BannerRender = ({\n baseAdunit,\n adunit,\n sizeId,\n sizes,\n propsToDisplay,\n entity,\n targetings,\n parent,\n asPath,\n action,\n actionKey,\n cardBannerIndex,\n userPropsData,\n ...otherProps\n}) => {\n const { id } = otherProps;\n const { itemId } = parent;\n\n const { data: entityRecordData = {} } = useQuery(action, {\n variables: { where: { id: id || itemId } },\n skip: id && id !== itemId\n });\n\n const { data: bannerData = {} } = useQuery(\n generateSingleItemQuery(GET_BANNER, BANNER_QUERY_PROPS),\n {\n variables: { id: sizeId },\n skip: !sizeId\n }\n );\n\n const { data = {} } = useQuery(getCount(COUNT_CONTENT_HIERARCHIES), {\n variables: {\n where: {\n parentId: id || itemId,\n childEntity: {\n _ilike: `${PUBLISHED}_%`\n }\n }\n }\n });\n\n const parsedTargetings = buildContextualTargeting(actionKey, entityRecordData, propsToDisplay);\n const { entityData } = bannerData;\n const { sizes: bannerSizes } = entityData || {};\n\n const sizeMapping = buildSizeMapping(sizeId, bannerSizes);\n const parsedSizes = buildBannerSizes(sizeId, bannerSizes, sizes);\n\n const { countContentHierarchies } = data;\n\n const parsedAdunit = buildParsedAdunit(asPath, countContentHierarchies, baseAdunit, adunit);\n const isContextualTargetingSet =\n propsToDisplay.length && parsedTargetings && Object.keys(parsedTargetings).length;\n const isContextualTargetingReady = isContextualTargetingSet || !propsToDisplay.length;\n const shouldShowBanner =\n parsedAdunit && parsedSizes && !!parsedSizes.length && isContextualTargetingReady;\n\n const customTargetings = setCustomTargetings(targetings, cardBannerIndex);\n\n const targetingArguments = { ...parsedTargetings, ...customTargetings, ...userPropsData };\n\n return (\n <AdSlotRender\n shouldShowBanner={!!shouldShowBanner}\n sizeMapping={sizeMapping}\n sizeId={sizeId}\n parsedAdunit={parsedAdunit}\n parsedSizes={parsedSizes}\n targetingArguments={targetingArguments}\n />\n );\n};\n\nBannerRender.propTypes = {\n parent: PropTypes.object.isRequired,\n asPath: PropTypes.string.isRequired,\n action: PropTypes.object.isRequired,\n actionKey: PropTypes.string.isRequired,\n adunit: PropTypes.string,\n baseAdunit: PropTypes.string,\n sizeId: PropTypes.string,\n propsToDisplay: PropTypes.array,\n entity: PropTypes.string,\n targetings: PropTypes.string,\n sizes: PropTypes.string,\n cardBannerIndex: PropTypes.number,\n userPropsData: PropTypes.object\n};\n\nBannerRender.defaultProps = {\n adunit: '',\n baseAdunit: '',\n sizeId: '',\n propsToDisplay: [],\n entity: '',\n targetings: '',\n sizes: '',\n cardBannerIndex: null,\n userPropsData: {}\n};\n\nexport default withTitle(BannerRender);\n"],"file":"BannerRender.js"}
@@ -138,5 +138,56 @@ const getMinBannerHeight = bannerSizes => {
138
138
  return MIN_BANNER_HEIGHT;
139
139
  };
140
140
 
141
- export { getParsedSizes, setCustomTargetings, buildParsedAdunit, buildBannerSizes, buildContextualTargeting, buildSizeMapping, getMaxBannerHeight, getMinBannerHeight };
141
+ const buildUserQuery = userProps => {
142
+ if (!userProps || !userProps.length) return '';
143
+ const basicProps = [];
144
+ const nestedProps = {};
145
+ userProps.forEach(({
146
+ propertiesToDisplay
147
+ }) => {
148
+ const [propKey] = propertiesToDisplay;
149
+ if (!propKey || propKey === 'id') return;
150
+
151
+ if (propKey.indexOf('.') !== -1) {
152
+ const [baseProp, nestedProp] = propKey.split('.');
153
+ if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);else nestedProps[baseProp] = [nestedProp];
154
+ } else basicProps.push(propKey);
155
+ });
156
+ Object.keys(nestedProps).forEach(nestedKey => {
157
+ const nested = nestedProps[nestedKey];
158
+ basicProps.push(nestedKey);
159
+ basicProps.push('{');
160
+ nested.forEach(prop => basicProps.push(prop));
161
+ basicProps.push('}');
162
+ });
163
+ return basicProps.join(' ');
164
+ };
165
+
166
+ const buildUserPropsData = (userData, userProps) => {
167
+ if (!userData || !userProps.length) return {};
168
+ const {
169
+ getUser: user
170
+ } = userData;
171
+ const propsWithData = {};
172
+ userProps.forEach(({
173
+ propertiesToDisplay,
174
+ label
175
+ }) => {
176
+ const [key] = propertiesToDisplay;
177
+ const parsedKey = key.split('.');
178
+ const value = getNestedValue(parsedKey, user);
179
+ const labelToUse = label || key;
180
+ if (value) propsWithData[labelToUse] = value;
181
+ });
182
+ return propsWithData;
183
+ };
184
+
185
+ const getNestedValue = (keys, object) => {
186
+ const key = keys.shift();
187
+ const nestedValue = object[key];
188
+ if (!nestedValue) return null;
189
+ return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;
190
+ };
191
+
192
+ export { getParsedSizes, setCustomTargetings, buildParsedAdunit, buildBannerSizes, buildContextualTargeting, buildSizeMapping, getMaxBannerHeight, getMinBannerHeight, buildUserPropsData, buildUserQuery };
142
193
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Banner/helpers.js"],"names":["parseUrl","flatten","getPropValues","END_ADUNIT","MAX_BANNER_HEIGHT","MIN_BANNER_HEIGHT","getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","reduce","acc","label","propertiesToDisplay","propValue","parsedValue","Array","isArray","buildSizeMapping","sizeMapping","groupedViewports","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Math","max","o","getMinBannerHeight","min"],"mappings":"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","sourcesContent":["import { parseUrl } from 'query-string';\nimport flatten from 'lodash.flatten';\nimport getPropValues from '../../helpers/get-prop-values';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n return propsToDisplay.reduce((acc, { label, propertiesToDisplay }) => {\n const propValue = getPropValues(propertiesToDisplay, props[actionKey][0]);\n const parsedValue = Array.isArray(propValue) ? flatten(propValue) : propValue;\n acc[label] = parsedValue;\n return acc;\n }, {});\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight\n};\n"],"file":"helpers.js"}
1
+ {"version":3,"sources":["../../../src/components/Banner/helpers.js"],"names":["parseUrl","flatten","getPropValues","END_ADUNIT","MAX_BANNER_HEIGHT","MIN_BANNER_HEIGHT","getParsedSizes","sizes","sanitizedSizes","replace","toLowerCase","sizeGroups","split","map","group","Number","addPosnToTargetings","targetings","index","posn","buildTargetingValue","valueTargeting","includes","char","setCustomTargetings","cardBannerIndex","bannerTargetings","updatedTargetings","isValidTargeting","customTargeting","splitTargeting","Object","keys","forEach","key","keyTargeting","buildParsedAdunit","path","countContentHierarchies","baseAdunit","adunit","isInteger","base","process","env","DFP_BASE_ADUNIT","hasChildren","url","urlParts","filter","Boolean","urlPart","slice","length","join","endAdunit","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","reduce","acc","label","propertiesToDisplay","propValue","parsedValue","Array","isArray","buildSizeMapping","sizeMapping","groupedViewports","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Math","max","o","getMinBannerHeight","min","buildUserQuery","userProps","basicProps","nestedProps","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","buildUserPropsData","userData","getUser","user","propsWithData","parsedKey","value","getNestedValue","labelToUse","object","shift","nestedValue"],"mappings":"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","sourcesContent":["import { parseUrl } from 'query-string';\nimport flatten from 'lodash.flatten';\nimport getPropValues from '../../helpers/get-prop-values';\nimport { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';\n\nconst getParsedSizes = (sizes = '') => {\n if (typeof sizes !== 'string') return [];\n\n const sanitizedSizes = sizes.replace(/\\s+/, '').toLowerCase();\n const sizeGroups = sanitizedSizes.split(',');\n\n return sizeGroups.map(group => group.split('x').map(Number));\n};\n\nconst addPosnToTargetings = (targetings, index) => {\n const posn = `posn=${index}`;\n return targetings ? `${targetings},${posn}` : posn;\n};\n\nconst buildTargetingValue = valueTargeting =>\n valueTargeting.includes('[') && valueTargeting.includes(']')\n ? valueTargeting.replace(/\\;|\\[|\\]/gm, char => (char === ';' ? ',' : '')).split(',')\n : valueTargeting;\n\nconst setCustomTargetings = (targetings, cardBannerIndex) => {\n let bannerTargetings = {};\n\n const updatedTargetings = cardBannerIndex\n ? addPosnToTargetings(targetings, cardBannerIndex)\n : targetings;\n\n const isValidTargeting = updatedTargetings && typeof updatedTargetings === 'string';\n\n if (isValidTargeting) {\n const customTargeting = {};\n\n let splitTargeting = updatedTargetings.split(',');\n splitTargeting = { ...splitTargeting };\n\n Object.keys(splitTargeting).forEach(key => {\n const [keyTargeting, valueTargeting] = splitTargeting[key].split('=');\n\n if (keyTargeting && valueTargeting) {\n customTargeting[keyTargeting] = buildTargetingValue(valueTargeting);\n }\n });\n bannerTargetings = { ...bannerTargetings, ...customTargeting };\n }\n\n return bannerTargetings;\n};\n\nconst buildParsedAdunit = (path, countContentHierarchies, baseAdunit, adunit) => {\n if (!Number.isInteger(countContentHierarchies)) return '';\n\n const base = baseAdunit || process.env.DFP_BASE_ADUNIT;\n const hasChildren = countContentHierarchies !== 0;\n const { url } = parseUrl(path);\n let urlParts = url\n .split('/')\n .filter(Boolean)\n .map(urlPart => urlPart.replace(/-/g, ''));\n urlParts = urlParts.slice(0, hasChildren ? urlParts.length : urlParts.length - 1).join('/');\n urlParts = urlParts ? `${urlParts}/` : urlParts;\n const endAdunit = adunit || END_ADUNIT;\n\n return `${base}/${urlParts}${endAdunit}`;\n};\n\nconst getBannerSizes = (sizeId, bannerSizes) =>\n sizeId && bannerSizes && bannerSizes.length\n ? bannerSizes.map(({ width, height }) => [width, height])\n : null;\n\nconst buildBannerSizes = (sizeId, bannerSizes, sizes) => {\n let parsedSizes = getBannerSizes(sizeId, bannerSizes);\n\n if (!parsedSizes && sizes) parsedSizes = getParsedSizes(sizes);\n\n return parsedSizes;\n};\n\nconst buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {\n if (actionKey && props[actionKey] && props[actionKey][0]) {\n return propsToDisplay.reduce((acc, { label, propertiesToDisplay }) => {\n const propValue = getPropValues(propertiesToDisplay, props[actionKey][0]);\n const parsedValue = Array.isArray(propValue) ? flatten(propValue) : propValue;\n acc[label] = parsedValue;\n return acc;\n }, {});\n }\n return {};\n};\n\nconst buildSizeMapping = (sizeId, bannerSizes) => {\n let sizeMapping = [];\n\n if (sizeId && bannerSizes && bannerSizes.length) {\n const groupedViewports = bannerSizes.reduce((acc, { width, height, viewports = [] }) => {\n const size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display\n\n if (viewports) {\n viewports.forEach(({ width: viewportWidth, height: viewportHeight }) => {\n const key = `${viewportWidth || 0}x${viewportHeight || 0}`;\n acc[key] = acc[key] || [];\n if (size) acc[key].push(size);\n });\n }\n return acc;\n }, {});\n\n sizeMapping = Object.keys(groupedViewports).map(keyGroupedViewport => {\n const [viewportWidth, viewportHeight] = keyGroupedViewport.split('x');\n return {\n viewport: [Number(viewportWidth), Number(viewportHeight)],\n sizes: groupedViewports[keyGroupedViewport]\n };\n });\n }\n\n return sizeMapping;\n};\n\nconst getMaxBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.max(...bannerSizes.map(o => o.height));\n }\n return MAX_BANNER_HEIGHT;\n};\n\nconst getMinBannerHeight = bannerSizes => {\n if (Array.isArray(bannerSizes) && bannerSizes.length > 0) {\n return Math.min(...bannerSizes.map(o => o.height));\n }\n return MIN_BANNER_HEIGHT;\n};\n\nconst buildUserQuery = userProps => {\n if (!userProps || !userProps.length) return '';\n const basicProps = [];\n const nestedProps = {};\n userProps.forEach(({ propertiesToDisplay }) => {\n const [propKey] = propertiesToDisplay;\n if (!propKey || propKey === 'id') return;\n if (propKey.indexOf('.') !== -1) {\n const [baseProp, nestedProp] = propKey.split('.');\n if (nestedProps[baseProp]) nestedProps[baseProp].push(nestedProp);\n else nestedProps[baseProp] = [nestedProp];\n } else basicProps.push(propKey);\n });\n\n Object.keys(nestedProps).forEach(nestedKey => {\n const nested = nestedProps[nestedKey];\n basicProps.push(nestedKey);\n basicProps.push('{');\n nested.forEach(prop => basicProps.push(prop));\n basicProps.push('}');\n });\n\n return basicProps.join(' ');\n};\n\nconst buildUserPropsData = (userData, userProps) => {\n if (!userData || !userProps.length) return {};\n const { getUser: user } = userData;\n const propsWithData = {};\n userProps.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, user);\n const labelToUse = label || key;\n if (value) propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = object[key];\n if (!nestedValue) return null;\n return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;\n};\n\nexport {\n getParsedSizes,\n setCustomTargetings,\n buildParsedAdunit,\n buildBannerSizes,\n buildContextualTargeting,\n buildSizeMapping,\n getMaxBannerHeight,\n getMinBannerHeight,\n buildUserPropsData,\n buildUserQuery\n};\n"],"file":"helpers.js"}
@@ -32,6 +32,7 @@ const BlazeLink = ({
32
32
  name,
33
33
  as
34
34
  }, gtmProps));
35
+ if (!href) return children;
35
36
  return /*#__PURE__*/React.createElement(Link, _extends({
36
37
  href: href,
37
38
  shallow: shallow,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/BlazeLink.js"],"names":["React","useContext","PropTypes","Link","MainContext","buildLinkExtraProps","BlazeLink","children","className","name","href","as","shallow","scroll","gtmId","onClick","hasGTM","gtmProps","linkExtraProps","propTypes","oneOfType","arrayOf","node","string","title","bool","func","defaultProps"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,IAAT,EAAeC,WAAf,QAAkC,8BAAlC;AACA,OAAOC,mBAAP,MAAgC,mCAAhC;;AAEA,MAAMC,SAAS,GAAG,CAAC;AAAEC,EAAAA,QAAF;AAAYC,EAAAA,SAAZ;AAAuBC,EAAAA,IAAvB;AAA6BC,EAAAA,IAA7B;AAAmCC,EAAAA,EAAnC;AAAuCC,EAAAA,OAAvC;AAAgDC,EAAAA,MAAhD;AAAwDC,EAAAA,KAAxD;AAA+DC,EAAAA;AAA/D,CAAD,KAA8E;AAC9F,QAAM;AAAEC,IAAAA;AAAF,MAAaf,UAAU,CAACG,WAAD,CAA7B;AACA,QAAMa,QAAQ,GAAGD,MAAM,IAAI,CAAC,CAACF,KAAZ,GAAoB;AAAEA,IAAAA;AAAF,GAApB,GAAgC,EAAjD;AACA,QAAMI,cAAc,GAAGb,mBAAmB;AAAGG,IAAAA,SAAH;AAAcC,IAAAA,IAAd;AAAoBE,IAAAA;AAApB,KAA2BM,QAA3B,EAA1C;AAEA,sBACE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAEP,IAAZ;AAAkB,IAAA,OAAO,EAAEE,OAA3B;AAAoC,IAAA,MAAM,EAAEC,MAA5C;AAAoD,IAAA,OAAO,EAAEE;AAA7D,KAA0EG,cAA1E,GACGX,QADH,CADF;AAKD,CAVD;;AAYAD,SAAS,CAACa,SAAV,GAAsB;AACpBZ,EAAAA,QAAQ,EAAEL,SAAS,CAACkB,SAAV,CAAoB,CAAClB,SAAS,CAACmB,OAAV,CAAkBnB,SAAS,CAACoB,IAA5B,CAAD,EAAoCpB,SAAS,CAACoB,IAA9C,CAApB,CADU;AAEpBZ,EAAAA,IAAI,EAAER,SAAS,CAACqB,MAFI;AAGpBZ,EAAAA,EAAE,EAAET,SAAS,CAACqB,MAHM;AAIpBd,EAAAA,IAAI,EAAEP,SAAS,CAACqB,MAJI;AAKpBC,EAAAA,KAAK,EAAEtB,SAAS,CAACqB,MALG;AAMpBf,EAAAA,SAAS,EAAEN,SAAS,CAACqB,MAND;AAOpBX,EAAAA,OAAO,EAAEV,SAAS,CAACuB,IAPC;AAQpBZ,EAAAA,MAAM,EAAEX,SAAS,CAACuB,IARE;AASpBX,EAAAA,KAAK,EAAEZ,SAAS,CAACqB,MATG;AAUpBR,EAAAA,OAAO,EAAEb,SAAS,CAACwB;AAVC,CAAtB;AAaApB,SAAS,CAACqB,YAAV,GAAyB;AACvBpB,EAAAA,QAAQ,EAAE,EADa;AAEvBI,EAAAA,EAAE,EAAE,EAFmB;AAGvBD,EAAAA,IAAI,EAAE,GAHiB;AAIvBD,EAAAA,IAAI,EAAE,EAJiB;AAKvBe,EAAAA,KAAK,EAAE,EALgB;AAMvBhB,EAAAA,SAAS,EAAE,EANY;AAOvBI,EAAAA,OAAO,EAAE,KAPc;AAQvBC,EAAAA,MAAM,EAAE,IARe;AASvBC,EAAAA,KAAK,EAAE,EATgB;AAUvBC,EAAAA,OAAO,EAAE;AAVc,CAAzB;AAaA,eAAeT,SAAf","sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, MainContext } from '@blaze-cms/nextjs-components';\nimport buildLinkExtraProps from '../helpers/build-link-extra-props';\n\nconst BlazeLink = ({ children, className, name, href, as, shallow, scroll, gtmId, onClick }) => {\n const { hasGTM } = useContext(MainContext);\n const gtmProps = hasGTM && !!gtmId ? { gtmId } : {};\n const linkExtraProps = buildLinkExtraProps({ className, name, as, ...gtmProps });\n\n return (\n <Link href={href} shallow={shallow} scroll={scroll} onClick={onClick} {...linkExtraProps}>\n {children}\n </Link>\n );\n};\n\nBlazeLink.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n href: PropTypes.string,\n as: PropTypes.string,\n name: PropTypes.string,\n title: PropTypes.string,\n className: PropTypes.string,\n shallow: PropTypes.bool,\n scroll: PropTypes.bool,\n gtmId: PropTypes.string,\n onClick: PropTypes.func\n};\n\nBlazeLink.defaultProps = {\n children: [],\n as: '',\n href: '/',\n name: '',\n title: '',\n className: '',\n shallow: false,\n scroll: null,\n gtmId: '',\n onClick: null\n};\n\nexport default BlazeLink;\n"],"file":"BlazeLink.js"}
1
+ {"version":3,"sources":["../../src/components/BlazeLink.js"],"names":["React","useContext","PropTypes","Link","MainContext","buildLinkExtraProps","BlazeLink","children","className","name","href","as","shallow","scroll","gtmId","onClick","hasGTM","gtmProps","linkExtraProps","propTypes","oneOfType","arrayOf","node","string","title","bool","func","defaultProps"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,IAAT,EAAeC,WAAf,QAAkC,8BAAlC;AACA,OAAOC,mBAAP,MAAgC,mCAAhC;;AAEA,MAAMC,SAAS,GAAG,CAAC;AAAEC,EAAAA,QAAF;AAAYC,EAAAA,SAAZ;AAAuBC,EAAAA,IAAvB;AAA6BC,EAAAA,IAA7B;AAAmCC,EAAAA,EAAnC;AAAuCC,EAAAA,OAAvC;AAAgDC,EAAAA,MAAhD;AAAwDC,EAAAA,KAAxD;AAA+DC,EAAAA;AAA/D,CAAD,KAA8E;AAC9F,QAAM;AAAEC,IAAAA;AAAF,MAAaf,UAAU,CAACG,WAAD,CAA7B;AACA,QAAMa,QAAQ,GAAGD,MAAM,IAAI,CAAC,CAACF,KAAZ,GAAoB;AAAEA,IAAAA;AAAF,GAApB,GAAgC,EAAjD;AACA,QAAMI,cAAc,GAAGb,mBAAmB;AAAGG,IAAAA,SAAH;AAAcC,IAAAA,IAAd;AAAoBE,IAAAA;AAApB,KAA2BM,QAA3B,EAA1C;AACA,MAAI,CAACP,IAAL,EAAW,OAAOH,QAAP;AAEX,sBACE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAEG,IAAZ;AAAkB,IAAA,OAAO,EAAEE,OAA3B;AAAoC,IAAA,MAAM,EAAEC,MAA5C;AAAoD,IAAA,OAAO,EAAEE;AAA7D,KAA0EG,cAA1E,GACGX,QADH,CADF;AAKD,CAXD;;AAaAD,SAAS,CAACa,SAAV,GAAsB;AACpBZ,EAAAA,QAAQ,EAAEL,SAAS,CAACkB,SAAV,CAAoB,CAAClB,SAAS,CAACmB,OAAV,CAAkBnB,SAAS,CAACoB,IAA5B,CAAD,EAAoCpB,SAAS,CAACoB,IAA9C,CAApB,CADU;AAEpBZ,EAAAA,IAAI,EAAER,SAAS,CAACqB,MAFI;AAGpBZ,EAAAA,EAAE,EAAET,SAAS,CAACqB,MAHM;AAIpBd,EAAAA,IAAI,EAAEP,SAAS,CAACqB,MAJI;AAKpBC,EAAAA,KAAK,EAAEtB,SAAS,CAACqB,MALG;AAMpBf,EAAAA,SAAS,EAAEN,SAAS,CAACqB,MAND;AAOpBX,EAAAA,OAAO,EAAEV,SAAS,CAACuB,IAPC;AAQpBZ,EAAAA,MAAM,EAAEX,SAAS,CAACuB,IARE;AASpBX,EAAAA,KAAK,EAAEZ,SAAS,CAACqB,MATG;AAUpBR,EAAAA,OAAO,EAAEb,SAAS,CAACwB;AAVC,CAAtB;AAaApB,SAAS,CAACqB,YAAV,GAAyB;AACvBpB,EAAAA,QAAQ,EAAE,EADa;AAEvBI,EAAAA,EAAE,EAAE,EAFmB;AAGvBD,EAAAA,IAAI,EAAE,GAHiB;AAIvBD,EAAAA,IAAI,EAAE,EAJiB;AAKvBe,EAAAA,KAAK,EAAE,EALgB;AAMvBhB,EAAAA,SAAS,EAAE,EANY;AAOvBI,EAAAA,OAAO,EAAE,KAPc;AAQvBC,EAAAA,MAAM,EAAE,IARe;AASvBC,EAAAA,KAAK,EAAE,EATgB;AAUvBC,EAAAA,OAAO,EAAE;AAVc,CAAzB;AAaA,eAAeT,SAAf","sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, MainContext } from '@blaze-cms/nextjs-components';\nimport buildLinkExtraProps from '../helpers/build-link-extra-props';\n\nconst BlazeLink = ({ children, className, name, href, as, shallow, scroll, gtmId, onClick }) => {\n const { hasGTM } = useContext(MainContext);\n const gtmProps = hasGTM && !!gtmId ? { gtmId } : {};\n const linkExtraProps = buildLinkExtraProps({ className, name, as, ...gtmProps });\n if (!href) return children;\n\n return (\n <Link href={href} shallow={shallow} scroll={scroll} onClick={onClick} {...linkExtraProps}>\n {children}\n </Link>\n );\n};\n\nBlazeLink.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n href: PropTypes.string,\n as: PropTypes.string,\n name: PropTypes.string,\n title: PropTypes.string,\n className: PropTypes.string,\n shallow: PropTypes.bool,\n scroll: PropTypes.bool,\n gtmId: PropTypes.string,\n onClick: PropTypes.func\n};\n\nBlazeLink.defaultProps = {\n children: [],\n as: '',\n href: '/',\n name: '',\n title: '',\n className: '',\n shallow: false,\n scroll: null,\n gtmId: '',\n onClick: null\n};\n\nexport default BlazeLink;\n"],"file":"BlazeLink.js"}
@@ -101,7 +101,7 @@ const Card = _ref => {
101
101
  className: "badge badge--label"
102
102
  }, label)), displayTitle && /*#__PURE__*/React.createElement("h2", {
103
103
  className: getModifiers('card__title', modifiers)
104
- }, url && /*#__PURE__*/React.createElement(BlazeLink, {
104
+ }, /*#__PURE__*/React.createElement(BlazeLink, {
105
105
  title: linkTitle,
106
106
  gtmId: gtmId,
107
107
  href: url,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Card/Card.js"],"names":["React","Fragment","PropTypes","BlazeLink","ClickWrapper","getModifiers","renderChildren","updateChildrensParent","getClickWrapperOptions","LazyImage","getPublishedListingUrl","useDynamicSizeKey","CARD_STRING","Card","id","image","name","url","entity","entityProps","alternativePreHeader","alternativeHeadline","category","modifier","propsToDisplay","propsToDisplayModifiers","gtmId","style","priority","cardChildren","gtmChildren","displayCategory","displayThumbnail","displayTitle","gridModifier","otherProps","imageSrc","shouldDisplayThumbnail","altText","getImageDefinedProps","modifiers","getInitialModifiers","publishedListingPage","preHeader","label","headline","getCategoryDefinedProps","linkTitle","dynamicSizeKey","shouldUseClickWrapper","wrapperProps","Wrapper","classNameWithModifiers","length","map","prop","i","dynamicKey","propModifier","propTypes","string","isRequired","shape","data","object","array","bool","oneOfType","arrayOf","node","defaultProps","hasAlternativePreHeader","sponsored","featured","push"],"mappings":"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","sourcesContent":["import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeLink from '../BlazeLink';\nimport ClickWrapper from '../ClickWrapper';\nimport {\n getModifiers,\n renderChildren,\n updateChildrensParent,\n getClickWrapperOptions\n} from '../../helpers';\nimport LazyImage from '../LazyImage';\nimport { getPublishedListingUrl, useDynamicSizeKey } from './helpers';\nimport { CARD_STRING } from './constants';\n\nconst Card = ({\n id,\n image,\n name,\n url,\n entity,\n entityProps,\n alternativePreHeader,\n alternativeHeadline,\n category,\n modifier,\n propsToDisplay,\n propsToDisplayModifiers,\n gtmId,\n style,\n priority,\n cardChildren,\n gtmChildren,\n displayCategory,\n displayThumbnail,\n displayTitle,\n gridModifier,\n ...otherProps\n}) => {\n updateChildrensParent(cardChildren, id, entity);\n const { imageSrc, shouldDisplayThumbnail, altText } = getImageDefinedProps({\n image,\n displayThumbnail\n });\n\n const modifiers = getInitialModifiers({ modifier, style, otherProps });\n\n const { publishedListingPage, preHeader, label, headline } = getCategoryDefinedProps({\n alternativePreHeader,\n category,\n entity,\n alternativeHeadline,\n displayCategory,\n name\n });\n const linkTitle = name;\n const dynamicSizeKey = useDynamicSizeKey(CARD_STRING, { style, gridModifier, modifier });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(\n gtmChildren,\n entityProps,\n id\n );\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n const classNameWithModifiers = getModifiers(CARD_STRING, modifiers);\n\n return (\n <Wrapper {...wrapperProps}>\n <div className={classNameWithModifiers}>\n {shouldDisplayThumbnail && (\n <div className={getModifiers('card__image', modifiers)}>\n <BlazeLink gtmId={gtmId} href={url} className=\"card__image-link\" scroll>\n <LazyImage\n src={imageSrc}\n alt={altText}\n sizeKey={dynamicSizeKey}\n priority={priority}\n />\n </BlazeLink>\n </div>\n )}\n <div className={getModifiers('card__content-wrapper', modifiers)}>\n <div className={getModifiers('card__content', modifiers)}>\n {displayCategory &&\n (publishedListingPage ? (\n <BlazeLink\n gtmId={gtmId}\n href={publishedListingPage}\n className=\"badge badge--label\"\n scroll>\n {preHeader.name}\n </BlazeLink>\n ) : (\n <div className=\"badge badge--label\">{label}</div>\n ))}\n {displayTitle && (\n <h2 className={getModifiers('card__title', modifiers)}>\n {url && (\n <BlazeLink title={linkTitle} gtmId={gtmId} href={url} scroll>\n {headline}\n </BlazeLink>\n )}\n </h2>\n )}\n {!!propsToDisplay.length && (\n <div className={getModifiers('card__details', modifiers)}>\n {propsToDisplay.map((prop, i) => {\n if (!prop) return null;\n const dynamicKey = `${id}${i}`;\n const propModifier = propsToDisplayModifiers[i] || '';\n\n return (\n <span key={dynamicKey} className={propModifier}>\n {prop}\n </span>\n );\n })}\n </div>\n )}\n </div>\n {!!cardChildren && (\n <div className=\"card__child-content\">{renderChildren(cardChildren)}</div>\n )}\n </div>\n </div>\n </Wrapper>\n );\n};\n\nCard.propTypes = {\n id: PropTypes.string.isRequired,\n image: PropTypes.shape({\n url: PropTypes.string,\n data: PropTypes.object\n }),\n style: PropTypes.string,\n propsToDisplay: PropTypes.array,\n propsToDisplayModifiers: PropTypes.array,\n url: PropTypes.string,\n name: PropTypes.string.isRequired,\n entity: PropTypes.string.isRequired,\n entityProps: PropTypes.object,\n gtmId: PropTypes.string,\n alternativePreHeader: PropTypes.shape({\n name: PropTypes.string\n }),\n alternativeHeadline: PropTypes.string,\n category: PropTypes.shape({\n name: PropTypes.string,\n publishedListingPage: PropTypes.shape({\n url: PropTypes.string\n })\n }),\n modifier: PropTypes.string,\n displayCategory: PropTypes.bool.isRequired,\n displayThumbnail: PropTypes.bool.isRequired,\n displayTitle: PropTypes.bool.isRequired,\n cardChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n gtmChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n gridModifier: PropTypes.string,\n priority: PropTypes.bool\n};\n\nCard.defaultProps = {\n entityProps: {},\n image: {\n url: null,\n data: {}\n },\n gtmId: '',\n style: 'portrait',\n propsToDisplay: [],\n propsToDisplayModifiers: [],\n url: '',\n alternativePreHeader: null,\n alternativeHeadline: '',\n category: null,\n modifier: '',\n cardChildren: [],\n gtmChildren: [],\n gridModifier: '',\n priority: false\n};\n\nconst getCategoryDefinedProps = ({\n alternativePreHeader,\n category,\n entity,\n alternativeHeadline,\n displayCategory,\n name\n}) => {\n const hasAlternativePreHeader = alternativePreHeader && alternativePreHeader.name;\n const preHeader =\n alternativeHeadline && hasAlternativePreHeader ? alternativePreHeader : category;\n const publishedListingPage = getPublishedListingUrl(preHeader);\n const label = preHeader ? preHeader.name : entity;\n const headline =\n !displayCategory || !hasAlternativePreHeader ? name : alternativeHeadline || name;\n return { publishedListingPage, preHeader, label, headline };\n};\n\nconst getImageDefinedProps = ({ image, displayThumbnail }) => {\n const { url: imageSrc, data } = image || {};\n const shouldDisplayThumbnail = displayThumbnail && imageSrc;\n const altText = (data && data.altText) || '';\n return { imageSrc, shouldDisplayThumbnail, altText };\n};\n\nconst getInitialModifiers = ({ modifier, style, otherProps }) => {\n const modifiers = [modifier, style];\n const { sponsored, featured } = otherProps;\n if (sponsored) modifiers.push('sponsored');\n if (featured) modifiers.push('featured');\n\n return modifiers;\n};\n\nexport default Card;\n"],"file":"Card.js"}
1
+ {"version":3,"sources":["../../../src/components/Card/Card.js"],"names":["React","Fragment","PropTypes","BlazeLink","ClickWrapper","getModifiers","renderChildren","updateChildrensParent","getClickWrapperOptions","LazyImage","getPublishedListingUrl","useDynamicSizeKey","CARD_STRING","Card","id","image","name","url","entity","entityProps","alternativePreHeader","alternativeHeadline","category","modifier","propsToDisplay","propsToDisplayModifiers","gtmId","style","priority","cardChildren","gtmChildren","displayCategory","displayThumbnail","displayTitle","gridModifier","otherProps","imageSrc","shouldDisplayThumbnail","altText","getImageDefinedProps","modifiers","getInitialModifiers","publishedListingPage","preHeader","label","headline","getCategoryDefinedProps","linkTitle","dynamicSizeKey","shouldUseClickWrapper","wrapperProps","Wrapper","classNameWithModifiers","length","map","prop","i","dynamicKey","propModifier","propTypes","string","isRequired","shape","data","object","array","bool","oneOfType","arrayOf","node","defaultProps","hasAlternativePreHeader","sponsored","featured","push"],"mappings":"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","sourcesContent":["import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport BlazeLink from '../BlazeLink';\nimport ClickWrapper from '../ClickWrapper';\nimport {\n getModifiers,\n renderChildren,\n updateChildrensParent,\n getClickWrapperOptions\n} from '../../helpers';\nimport LazyImage from '../LazyImage';\nimport { getPublishedListingUrl, useDynamicSizeKey } from './helpers';\nimport { CARD_STRING } from './constants';\n\nconst Card = ({\n id,\n image,\n name,\n url,\n entity,\n entityProps,\n alternativePreHeader,\n alternativeHeadline,\n category,\n modifier,\n propsToDisplay,\n propsToDisplayModifiers,\n gtmId,\n style,\n priority,\n cardChildren,\n gtmChildren,\n displayCategory,\n displayThumbnail,\n displayTitle,\n gridModifier,\n ...otherProps\n}) => {\n updateChildrensParent(cardChildren, id, entity);\n const { imageSrc, shouldDisplayThumbnail, altText } = getImageDefinedProps({\n image,\n displayThumbnail\n });\n\n const modifiers = getInitialModifiers({ modifier, style, otherProps });\n\n const { publishedListingPage, preHeader, label, headline } = getCategoryDefinedProps({\n alternativePreHeader,\n category,\n entity,\n alternativeHeadline,\n displayCategory,\n name\n });\n const linkTitle = name;\n const dynamicSizeKey = useDynamicSizeKey(CARD_STRING, { style, gridModifier, modifier });\n const { shouldUseClickWrapper, wrapperProps } = getClickWrapperOptions(\n gtmChildren,\n entityProps,\n id\n );\n const Wrapper = shouldUseClickWrapper ? ClickWrapper : Fragment;\n const classNameWithModifiers = getModifiers(CARD_STRING, modifiers);\n\n return (\n <Wrapper {...wrapperProps}>\n <div className={classNameWithModifiers}>\n {shouldDisplayThumbnail && (\n <div className={getModifiers('card__image', modifiers)}>\n <BlazeLink gtmId={gtmId} href={url} className=\"card__image-link\" scroll>\n <LazyImage\n src={imageSrc}\n alt={altText}\n sizeKey={dynamicSizeKey}\n priority={priority}\n />\n </BlazeLink>\n </div>\n )}\n <div className={getModifiers('card__content-wrapper', modifiers)}>\n <div className={getModifiers('card__content', modifiers)}>\n {displayCategory &&\n (publishedListingPage ? (\n <BlazeLink\n gtmId={gtmId}\n href={publishedListingPage}\n className=\"badge badge--label\"\n scroll>\n {preHeader.name}\n </BlazeLink>\n ) : (\n <div className=\"badge badge--label\">{label}</div>\n ))}\n {displayTitle && (\n <h2 className={getModifiers('card__title', modifiers)}>\n <BlazeLink title={linkTitle} gtmId={gtmId} href={url} scroll>\n {headline}\n </BlazeLink>\n </h2>\n )}\n {!!propsToDisplay.length && (\n <div className={getModifiers('card__details', modifiers)}>\n {propsToDisplay.map((prop, i) => {\n if (!prop) return null;\n const dynamicKey = `${id}${i}`;\n const propModifier = propsToDisplayModifiers[i] || '';\n\n return (\n <span key={dynamicKey} className={propModifier}>\n {prop}\n </span>\n );\n })}\n </div>\n )}\n </div>\n {!!cardChildren && (\n <div className=\"card__child-content\">{renderChildren(cardChildren)}</div>\n )}\n </div>\n </div>\n </Wrapper>\n );\n};\n\nCard.propTypes = {\n id: PropTypes.string.isRequired,\n image: PropTypes.shape({\n url: PropTypes.string,\n data: PropTypes.object\n }),\n style: PropTypes.string,\n propsToDisplay: PropTypes.array,\n propsToDisplayModifiers: PropTypes.array,\n url: PropTypes.string,\n name: PropTypes.string.isRequired,\n entity: PropTypes.string.isRequired,\n entityProps: PropTypes.object,\n gtmId: PropTypes.string,\n alternativePreHeader: PropTypes.shape({\n name: PropTypes.string\n }),\n alternativeHeadline: PropTypes.string,\n category: PropTypes.shape({\n name: PropTypes.string,\n publishedListingPage: PropTypes.shape({\n url: PropTypes.string\n })\n }),\n modifier: PropTypes.string,\n displayCategory: PropTypes.bool.isRequired,\n displayThumbnail: PropTypes.bool.isRequired,\n displayTitle: PropTypes.bool.isRequired,\n cardChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n gtmChildren: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n gridModifier: PropTypes.string,\n priority: PropTypes.bool\n};\n\nCard.defaultProps = {\n entityProps: {},\n image: {\n url: null,\n data: {}\n },\n gtmId: '',\n style: 'portrait',\n propsToDisplay: [],\n propsToDisplayModifiers: [],\n url: '',\n alternativePreHeader: null,\n alternativeHeadline: '',\n category: null,\n modifier: '',\n cardChildren: [],\n gtmChildren: [],\n gridModifier: '',\n priority: false\n};\n\nconst getCategoryDefinedProps = ({\n alternativePreHeader,\n category,\n entity,\n alternativeHeadline,\n displayCategory,\n name\n}) => {\n const hasAlternativePreHeader = alternativePreHeader && alternativePreHeader.name;\n const preHeader =\n alternativeHeadline && hasAlternativePreHeader ? alternativePreHeader : category;\n const publishedListingPage = getPublishedListingUrl(preHeader);\n const label = preHeader ? preHeader.name : entity;\n const headline =\n !displayCategory || !hasAlternativePreHeader ? name : alternativeHeadline || name;\n return { publishedListingPage, preHeader, label, headline };\n};\n\nconst getImageDefinedProps = ({ image, displayThumbnail }) => {\n const { url: imageSrc, data } = image || {};\n const shouldDisplayThumbnail = displayThumbnail && imageSrc;\n const altText = (data && data.altText) || '';\n return { imageSrc, shouldDisplayThumbnail, altText };\n};\n\nconst getInitialModifiers = ({ modifier, style, otherProps }) => {\n const modifiers = [modifier, style];\n const { sponsored, featured } = otherProps;\n if (sponsored) modifiers.push('sponsored');\n if (featured) modifiers.push('featured');\n\n return modifiers;\n};\n\nexport default Card;\n"],"file":"Card.js"}