@blaze-cms/react-page-builder 0.120.0-alpha.2 → 0.120.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/lib/components/Banner/Banner.js +5 -3
- package/lib/components/Banner/Banner.js.map +1 -1
- package/lib/components/Banner/helpers.js +27 -32
- package/lib/components/Banner/helpers.js.map +1 -1
- package/lib-es/components/Banner/Banner.js +5 -3
- package/lib-es/components/Banner/Banner.js.map +1 -1
- package/lib-es/components/Banner/helpers.js +10 -20
- package/lib-es/components/Banner/helpers.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Banner/Banner.js +3 -3
- package/src/components/Banner/helpers.js +16 -15
- package/tests/unit/src/components/Banner/helpers.test.js +2 -26
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.120.0-alpha.3](https://github.com/thebyte9/blaze/compare/v0.120.0-alpha.2...v0.120.0-alpha.3) (2022-02-16)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* added array handling for banner props ([#3339](https://github.com/thebyte9/blaze/issues/3339)) ([b6e7b84](https://github.com/thebyte9/blaze/commit/b6e7b84b95d63ff978de1ac5921cdbf8e3be5f8a))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [0.120.0-alpha.2](https://github.com/thebyte9/blaze/compare/v0.120.0-alpha.1...v0.120.0-alpha.2) (2022-02-15)
|
|
7
18
|
|
|
8
19
|
|
|
@@ -102,9 +102,11 @@ var Banner = function Banner(_ref) {
|
|
|
102
102
|
},
|
|
103
103
|
skip: !userPropsToDisplay.length || !userId
|
|
104
104
|
}),
|
|
105
|
-
|
|
106
|
-
userLoading = _useQuery2.loading;
|
|
105
|
+
_useQuery2$data = _useQuery2.data;
|
|
107
106
|
|
|
107
|
+
_useQuery2$data = _useQuery2$data === void 0 ? {} : _useQuery2$data;
|
|
108
|
+
var userData = _useQuery2$data.getUser,
|
|
109
|
+
userLoading = _useQuery2.loading;
|
|
108
110
|
if (loading || userLoading) return '';
|
|
109
111
|
if (error) return error.message;
|
|
110
112
|
if (!data) return null;
|
|
@@ -114,7 +116,7 @@ var Banner = function Banner(_ref) {
|
|
|
114
116
|
var propertiesToDisplay = _ref2.propertiesToDisplay;
|
|
115
117
|
return propertiesToDisplay;
|
|
116
118
|
})) : []);
|
|
117
|
-
var userPropsData = (0, _helpers.
|
|
119
|
+
var userPropsData = (0, _helpers.buildPropsData)(userData, userPropsToDisplay);
|
|
118
120
|
|
|
119
121
|
var _getEntityRenderProps = (0, _getEntityRenderProps2["default"])(queryProps, data, isPreview),
|
|
120
122
|
actionKey = _getEntityRenderProps.actionKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["Banner","type","otherProps","router","MainContext","isPreview","userId","id","asPath","parent","entity","sizeId","propsToDisplay","userPropsToDisplay","userQuery","itemEntity","getSingleEntitySchema","variables","data","error","loading","skip","length","userData","userLoading","message","modifiers","queryProps","map","propertiesToDisplay","userPropsData","actionKey","action","bannerKey","propTypes","PropTypes","string","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS,OAA6B;AAAA,MAA1BC,IAA0B,QAA1BA,IAA0B;AAAA,MAAjBC,UAAiB;AAC1C,MAAMC,MAAM,GAAG,wBAAf;;AACA,oBAAsB,uBAAWC,6BAAX,CAAtB;AAAA,MAAQC,SAAR,eAAQA,SAAR;;AACA,yBAAuB,kCAAvB;AAAA,MAAYC,MAAZ,oBAAQC,EAAR;;AACA,MAAQC,MAAR,GAAmBL,MAAnB,CAAQK,MAAR;AACA,MAAQC,MAAR,GAAiFP,UAAjF,CAAQO,MAAR;AAAA,MAAgBC,MAAhB,GAAiFR,UAAjF,CAAgBQ,MAAhB;AAAA,MAAwBC,MAAxB,GAAiFT,UAAjF,CAAwBS,MAAxB;AAAA,8BAAiFT,UAAjF,CAAgCU,cAAhC;AAAA,MAAgCA,cAAhC,sCAAiD,EAAjD;AAAA,8BAAiFV,UAAjF,CAAqDW,kBAArD;AAAA,MAAqDA,kBAArD,sCAA0E,EAA1E;AACA,MAAMC,SAAS,GAAG,6BAAeD,kBAAf,CAAlB;AACA,MAAQE,UAAR,GAAuBN,MAAvB,CAAQM,UAAR;;AACA,kBAAiC,sBAASC,4BAAT,EAAgC;AAC/DC,IAAAA,SAAS,EAAE;AAAEV,MAAAA,EAAE,EAAEG,MAAM,IAAIK;AAAhB;AADoD,GAAhC,CAAjC;AAAA,MAAQG,IAAR,aAAQA,IAAR;AAAA,MAAcC,KAAd,aAAcA,KAAd;AAAA,MAAqBC,OAArB,aAAqBA,OAArB;;AAGA,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["Banner","type","otherProps","router","MainContext","isPreview","userId","id","asPath","parent","entity","sizeId","propsToDisplay","userPropsToDisplay","userQuery","itemEntity","getSingleEntitySchema","variables","data","error","loading","skip","length","userData","getUser","userLoading","message","modifiers","queryProps","map","propertiesToDisplay","userPropsData","actionKey","action","bannerKey","propTypes","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, buildPropsData } 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: { getUser: 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 = buildPropsData(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"}
|
|
@@ -15,7 +15,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", {
|
|
16
16
|
value: true
|
|
17
17
|
});
|
|
18
|
-
exports.setCustomTargetings = exports.getParsedSizes = exports.getMinBannerHeight = exports.getMaxBannerHeight = exports.buildUserQuery = exports.
|
|
18
|
+
exports.setCustomTargetings = exports.getParsedSizes = exports.getMinBannerHeight = exports.getMaxBannerHeight = exports.buildUserQuery = exports.buildSizeMapping = exports.buildPropsData = exports.buildParsedAdunit = exports.buildContextualTargeting = exports.buildBannerSizes = void 0;
|
|
19
19
|
|
|
20
20
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
21
21
|
|
|
@@ -63,10 +63,6 @@ require("core-js/modules/es.array.index-of.js");
|
|
|
63
63
|
|
|
64
64
|
var _queryString = require("query-string");
|
|
65
65
|
|
|
66
|
-
var _lodash = _interopRequireDefault(require("lodash.flatten"));
|
|
67
|
-
|
|
68
|
-
var _getPropValues = _interopRequireDefault(require("../../helpers/get-prop-values"));
|
|
69
|
-
|
|
70
66
|
var _constants = require("../../constants");
|
|
71
67
|
|
|
72
68
|
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; }
|
|
@@ -163,14 +159,8 @@ var buildContextualTargeting = function buildContextualTargeting(actionKey) {
|
|
|
163
159
|
var propsToDisplay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
164
160
|
|
|
165
161
|
if (actionKey && props[actionKey] && props[actionKey][0]) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
propertiesToDisplay = _ref2.propertiesToDisplay;
|
|
169
|
-
var propValue = (0, _getPropValues["default"])(propertiesToDisplay, props[actionKey][0]);
|
|
170
|
-
var parsedValue = Array.isArray(propValue) ? (0, _lodash["default"])(propValue) : propValue;
|
|
171
|
-
acc[label] = parsedValue;
|
|
172
|
-
return acc;
|
|
173
|
-
}, {});
|
|
162
|
+
var data = props[actionKey][0];
|
|
163
|
+
return buildPropsData(data, propsToDisplay);
|
|
174
164
|
}
|
|
175
165
|
|
|
176
166
|
return {};
|
|
@@ -182,17 +172,17 @@ var buildSizeMapping = function buildSizeMapping(sizeId, bannerSizes) {
|
|
|
182
172
|
var sizeMapping = [];
|
|
183
173
|
|
|
184
174
|
if (sizeId && bannerSizes && bannerSizes.length) {
|
|
185
|
-
var groupedViewports = bannerSizes.reduce(function (acc,
|
|
186
|
-
var width =
|
|
187
|
-
height =
|
|
188
|
-
|
|
189
|
-
viewports =
|
|
175
|
+
var groupedViewports = bannerSizes.reduce(function (acc, _ref2) {
|
|
176
|
+
var width = _ref2.width,
|
|
177
|
+
height = _ref2.height,
|
|
178
|
+
_ref2$viewports = _ref2.viewports,
|
|
179
|
+
viewports = _ref2$viewports === void 0 ? [] : _ref2$viewports;
|
|
190
180
|
var size = width && height ? [width, height] : null; // if one dimension is falsey then it shouldn't display
|
|
191
181
|
|
|
192
182
|
if (viewports) {
|
|
193
|
-
viewports.forEach(function (
|
|
194
|
-
var viewportWidth =
|
|
195
|
-
viewportHeight =
|
|
183
|
+
viewports.forEach(function (_ref3) {
|
|
184
|
+
var viewportWidth = _ref3.width,
|
|
185
|
+
viewportHeight = _ref3.height;
|
|
196
186
|
var key = "".concat(viewportWidth || 0, "x").concat(viewportHeight || 0);
|
|
197
187
|
acc[key] = acc[key] || [];
|
|
198
188
|
if (size) acc[key].push(size);
|
|
@@ -247,8 +237,8 @@ var buildUserQuery = function buildUserQuery(userProps) {
|
|
|
247
237
|
if (!userProps || !userProps.length) return '';
|
|
248
238
|
var basicProps = [];
|
|
249
239
|
var nestedProps = {};
|
|
250
|
-
userProps.forEach(function (
|
|
251
|
-
var propertiesToDisplay =
|
|
240
|
+
userProps.forEach(function (_ref4) {
|
|
241
|
+
var propertiesToDisplay = _ref4.propertiesToDisplay;
|
|
252
242
|
|
|
253
243
|
var _propertiesToDisplay = (0, _slicedToArray2["default"])(propertiesToDisplay, 1),
|
|
254
244
|
propKey = _propertiesToDisplay[0];
|
|
@@ -278,30 +268,35 @@ var buildUserQuery = function buildUserQuery(userProps) {
|
|
|
278
268
|
|
|
279
269
|
exports.buildUserQuery = buildUserQuery;
|
|
280
270
|
|
|
281
|
-
var
|
|
282
|
-
if (!
|
|
283
|
-
var user = userData.getUser;
|
|
271
|
+
var buildPropsData = function buildPropsData(data, props) {
|
|
272
|
+
if (!data || !props.length) return {};
|
|
284
273
|
var propsWithData = {};
|
|
285
|
-
|
|
286
|
-
var propertiesToDisplay =
|
|
287
|
-
label =
|
|
274
|
+
props.forEach(function (_ref5) {
|
|
275
|
+
var propertiesToDisplay = _ref5.propertiesToDisplay,
|
|
276
|
+
label = _ref5.label;
|
|
288
277
|
|
|
289
278
|
var _propertiesToDisplay2 = (0, _slicedToArray2["default"])(propertiesToDisplay, 1),
|
|
290
279
|
key = _propertiesToDisplay2[0];
|
|
291
280
|
|
|
292
281
|
var parsedKey = key.split('.');
|
|
293
|
-
var value = getNestedValue(parsedKey,
|
|
282
|
+
var value = getNestedValue(parsedKey, data);
|
|
294
283
|
var labelToUse = label || key;
|
|
295
284
|
if (value) propsWithData[labelToUse] = value;
|
|
296
285
|
});
|
|
297
286
|
return propsWithData;
|
|
298
287
|
};
|
|
299
288
|
|
|
300
|
-
exports.
|
|
289
|
+
exports.buildPropsData = buildPropsData;
|
|
290
|
+
|
|
291
|
+
var parseArrayValues = function parseArrayValues(arr, key) {
|
|
292
|
+
return arr.map(function (obj) {
|
|
293
|
+
return obj[key];
|
|
294
|
+
}).filter(Boolean).join(', ');
|
|
295
|
+
};
|
|
301
296
|
|
|
302
297
|
var getNestedValue = function getNestedValue(keys, object) {
|
|
303
298
|
var key = keys.shift();
|
|
304
|
-
var nestedValue = object[key];
|
|
299
|
+
var nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];
|
|
305
300
|
if (!nestedValue) return null;
|
|
306
301
|
return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;
|
|
307
302
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Banner/helpers.js"],"names":["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","END_ADUNIT","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","MAX_BANNER_HEIGHT","getMinBannerHeight","min","MIN_BANNER_HEIGHT","buildUserQuery","userProps","basicProps","nestedProps","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","buildUserPropsData","userData","user","getUser","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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/helpers.js"],"names":["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","END_ADUNIT","getBannerSizes","sizeId","bannerSizes","width","height","buildBannerSizes","parsedSizes","buildContextualTargeting","actionKey","props","propsToDisplay","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","MAX_BANNER_HEIGHT","getMinBannerHeight","min","MIN_BANNER_HEIGHT","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEA,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,GAAgB;AAAA,MAAfC,KAAe,uEAAP,EAAO;AACrC,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAO,EAAP;AAE/B,MAAMC,cAAc,GAAGD,KAAK,CAACE,OAAN,CAAc,KAAd,EAAqB,EAArB,EAAyBC,WAAzB,EAAvB;AACA,MAAMC,UAAU,GAAGH,cAAc,CAACI,KAAf,CAAqB,GAArB,CAAnB;AAEA,SAAOD,UAAU,CAACE,GAAX,CAAe,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACF,KAAN,CAAY,GAAZ,EAAiBC,GAAjB,CAAqBE,MAArB,CAAJ;AAAA,GAApB,CAAP;AACD,CAPD;;;;AASA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,UAAD,EAAaC,KAAb,EAAuB;AACjD,MAAMC,IAAI,kBAAWD,KAAX,CAAV;AACA,SAAOD,UAAU,aAAMA,UAAN,cAAoBE,IAApB,IAA6BA,IAA9C;AACD,CAHD;;AAKA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAAC,cAAc;AAAA,SACxCA,cAAc,CAACC,QAAf,CAAwB,GAAxB,KAAgCD,cAAc,CAACC,QAAf,CAAwB,GAAxB,CAAhC,GACID,cAAc,CAACZ,OAAf,CAAuB,YAAvB,EAAqC,UAAAc,KAAI;AAAA,WAAKA,KAAI,KAAK,GAAT,GAAe,GAAf,GAAqB,EAA1B;AAAA,GAAzC,EAAwEX,KAAxE,CAA8E,GAA9E,CADJ,GAEIS,cAHoC;AAAA,CAA1C;;AAKA,IAAMG,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACP,UAAD,EAAaQ,eAAb,EAAiC;AAC3D,MAAIC,gBAAgB,GAAG,EAAvB;AAEA,MAAMC,iBAAiB,GAAGF,eAAe,GACrCT,mBAAmB,CAACC,UAAD,EAAaQ,eAAb,CADkB,GAErCR,UAFJ;AAIA,MAAMW,gBAAgB,GAAGD,iBAAiB,IAAI,OAAOA,iBAAP,KAA6B,QAA3E;;AAEA,MAAIC,gBAAJ,EAAsB;AACpB,QAAMC,eAAe,GAAG,EAAxB;AAEA,QAAIC,cAAc,GAAGH,iBAAiB,CAACf,KAAlB,CAAwB,GAAxB,CAArB;AACAkB,IAAAA,cAAc,qBAAQA,cAAR,CAAd;AAEAC,IAAAA,MAAM,CAACC,IAAP,CAAYF,cAAZ,EAA4BG,OAA5B,CAAoC,UAAAC,GAAG,EAAI;AACzC,kCAAuCJ,cAAc,CAACI,GAAD,CAAd,CAAoBtB,KAApB,CAA0B,GAA1B,CAAvC;AAAA;AAAA,UAAOuB,YAAP;AAAA,UAAqBd,cAArB;;AAEA,UAAIc,YAAY,IAAId,cAApB,EAAoC;AAClCQ,QAAAA,eAAe,CAACM,YAAD,CAAf,GAAgCf,mBAAmB,CAACC,cAAD,CAAnD;AACD;AACF,KAND;AAOAK,IAAAA,gBAAgB,mCAAQA,gBAAR,GAA6BG,eAA7B,CAAhB;AACD;;AAED,SAAOH,gBAAP;AACD,CA1BD;;;;AA4BA,IAAMU,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,IAAD,EAAOC,uBAAP,EAAgCC,UAAhC,EAA4CC,MAA5C,EAAuD;AAC/E,MAAI,CAACzB,MAAM,CAAC0B,SAAP,CAAiBH,uBAAjB,CAAL,EAAgD,OAAO,EAAP;AAEhD,MAAMI,IAAI,GAAGH,UAAU,IAAII,OAAO,CAACC,GAAR,CAAYC,eAAvC;AACA,MAAMC,WAAW,GAAGR,uBAAuB,KAAK,CAAhD;;AACA,kBAAgB,2BAASD,IAAT,CAAhB;AAAA,MAAQU,GAAR,aAAQA,GAAR;;AACA,MAAIC,QAAQ,GAAGD,GAAG,CACfnC,KADY,CACN,GADM,EAEZqC,MAFY,CAELC,OAFK,EAGZrC,GAHY,CAGR,UAAAsC,OAAO;AAAA,WAAIA,OAAO,CAAC1C,OAAR,CAAgB,IAAhB,EAAsB,EAAtB,CAAJ;AAAA,GAHC,CAAf;AAIAuC,EAAAA,QAAQ,GAAGA,QAAQ,CAACI,KAAT,CAAe,CAAf,EAAkBN,WAAW,GAAGE,QAAQ,CAACK,MAAZ,GAAqBL,QAAQ,CAACK,MAAT,GAAkB,CAApE,EAAuEC,IAAvE,CAA4E,GAA5E,CAAX;AACAN,EAAAA,QAAQ,GAAGA,QAAQ,aAAMA,QAAN,SAAoBA,QAAvC;AACA,MAAMO,SAAS,GAAGf,MAAM,IAAIgB,qBAA5B;AAEA,mBAAUd,IAAV,cAAkBM,QAAlB,SAA6BO,SAA7B;AACD,CAfD;;;;AAiBA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACC,MAAD,EAASC,WAAT;AAAA,SACrBD,MAAM,IAAIC,WAAV,IAAyBA,WAAW,CAACN,MAArC,GACIM,WAAW,CAAC9C,GAAZ,CAAgB;AAAA,QAAG+C,KAAH,QAAGA,KAAH;AAAA,QAAUC,MAAV,QAAUA,MAAV;AAAA,WAAuB,CAACD,KAAD,EAAQC,MAAR,CAAvB;AAAA,GAAhB,CADJ,GAEI,IAHiB;AAAA,CAAvB;;AAKA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACJ,MAAD,EAASC,WAAT,EAAsBpD,KAAtB,EAAgC;AACvD,MAAIwD,WAAW,GAAGN,cAAc,CAACC,MAAD,EAASC,WAAT,CAAhC;AAEA,MAAI,CAACI,WAAD,IAAgBxD,KAApB,EAA2BwD,WAAW,GAAGzD,cAAc,CAACC,KAAD,CAA5B;AAE3B,SAAOwD,WAAP;AACD,CAND;;;;AAQA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,SAAD,EAAgD;AAAA,MAApCC,KAAoC,uEAA5B,EAA4B;AAAA,MAAxBC,cAAwB,uEAAP,EAAO;;AAC/E,MAAIF,SAAS,IAAIC,KAAK,CAACD,SAAD,CAAlB,IAAiCC,KAAK,CAACD,SAAD,CAAL,CAAiB,CAAjB,CAArC,EAA0D;AACxD,QAAMG,IAAI,GAAGF,KAAK,CAACD,SAAD,CAAL,CAAiB,CAAjB,CAAb;AACA,WAAOI,cAAc,CAACD,IAAD,EAAOD,cAAP,CAArB;AACD;;AACD,SAAO,EAAP;AACD,CAND;;;;AAQA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACZ,MAAD,EAASC,WAAT,EAAyB;AAChD,MAAIY,WAAW,GAAG,EAAlB;;AAEA,MAAIb,MAAM,IAAIC,WAAV,IAAyBA,WAAW,CAACN,MAAzC,EAAiD;AAC/C,QAAMmB,gBAAgB,GAAGb,WAAW,CAACc,MAAZ,CAAmB,UAACC,GAAD,SAA4C;AAAA,UAApCd,KAAoC,SAApCA,KAAoC;AAAA,UAA7BC,MAA6B,SAA7BA,MAA6B;AAAA,kCAArBc,SAAqB;AAAA,UAArBA,SAAqB,gCAAT,EAAS;AACtF,UAAMC,IAAI,GAAGhB,KAAK,IAAIC,MAAT,GAAkB,CAACD,KAAD,EAAQC,MAAR,CAAlB,GAAoC,IAAjD,CADsF,CAC/B;;AAEvD,UAAIc,SAAJ,EAAe;AACbA,QAAAA,SAAS,CAAC1C,OAAV,CAAkB,iBAAsD;AAAA,cAA5C4C,aAA4C,SAAnDjB,KAAmD;AAAA,cAArBkB,cAAqB,SAA7BjB,MAA6B;AACtE,cAAM3B,GAAG,aAAM2C,aAAa,IAAI,CAAvB,cAA4BC,cAAc,IAAI,CAA9C,CAAT;AACAJ,UAAAA,GAAG,CAACxC,GAAD,CAAH,GAAWwC,GAAG,CAACxC,GAAD,CAAH,IAAY,EAAvB;AACA,cAAI0C,IAAJ,EAAUF,GAAG,CAACxC,GAAD,CAAH,CAAS6C,IAAT,CAAcH,IAAd;AACX,SAJD;AAKD;;AACD,aAAOF,GAAP;AACD,KAXwB,EAWtB,EAXsB,CAAzB;AAaAH,IAAAA,WAAW,GAAGxC,MAAM,CAACC,IAAP,CAAYwC,gBAAZ,EAA8B3D,GAA9B,CAAkC,UAAAmE,kBAAkB,EAAI;AACpE,kCAAwCA,kBAAkB,CAACpE,KAAnB,CAAyB,GAAzB,CAAxC;AAAA;AAAA,UAAOiE,aAAP;AAAA,UAAsBC,cAAtB;;AACA,aAAO;AACLG,QAAAA,QAAQ,EAAE,CAAClE,MAAM,CAAC8D,aAAD,CAAP,EAAwB9D,MAAM,CAAC+D,cAAD,CAA9B,CADL;AAELvE,QAAAA,KAAK,EAAEiE,gBAAgB,CAACQ,kBAAD;AAFlB,OAAP;AAID,KANa,CAAd;AAOD;;AAED,SAAOT,WAAP;AACD,CA3BD;;;;AA6BA,IAAMW,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAvB,WAAW,EAAI;AACxC,MAAIwB,KAAK,CAACC,OAAN,CAAczB,WAAd,KAA8BA,WAAW,CAACN,MAAZ,GAAqB,CAAvD,EAA0D;AACxD,WAAOgC,IAAI,CAACC,GAAL,OAAAD,IAAI,sCAAQ1B,WAAW,CAAC9C,GAAZ,CAAgB,UAAA0E,CAAC;AAAA,aAAIA,CAAC,CAAC1B,MAAN;AAAA,KAAjB,CAAR,EAAX;AACD;;AACD,SAAO2B,4BAAP;AACD,CALD;;;;AAOA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAAA9B,WAAW,EAAI;AACxC,MAAIwB,KAAK,CAACC,OAAN,CAAczB,WAAd,KAA8BA,WAAW,CAACN,MAAZ,GAAqB,CAAvD,EAA0D;AACxD,WAAOgC,IAAI,CAACK,GAAL,OAAAL,IAAI,sCAAQ1B,WAAW,CAAC9C,GAAZ,CAAgB,UAAA0E,CAAC;AAAA,aAAIA,CAAC,CAAC1B,MAAN;AAAA,KAAjB,CAAR,EAAX;AACD;;AACD,SAAO8B,4BAAP;AACD,CALD;;;;AAOA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,SAAS,EAAI;AAClC,MAAI,CAACA,SAAD,IAAc,CAACA,SAAS,CAACxC,MAA7B,EAAqC,OAAO,EAAP;AACrC,MAAMyC,UAAU,GAAG,EAAnB;AACA,MAAMC,WAAW,GAAG,EAApB;AACAF,EAAAA,SAAS,CAAC5D,OAAV,CAAkB,iBAA6B;AAAA,QAA1B+D,mBAA0B,SAA1BA,mBAA0B;;AAC7C,+DAAkBA,mBAAlB;AAAA,QAAOC,OAAP;;AACA,QAAI,CAACA,OAAD,IAAYA,OAAO,KAAK,IAA5B,EAAkC;;AAClC,QAAIA,OAAO,CAACC,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;AAC/B,2BAA+BD,OAAO,CAACrF,KAAR,CAAc,GAAd,CAA/B;AAAA;AAAA,UAAOuF,QAAP;AAAA,UAAiBC,UAAjB;;AACA,UAAIL,WAAW,CAACI,QAAD,CAAf,EAA2BJ,WAAW,CAACI,QAAD,CAAX,CAAsBpB,IAAtB,CAA2BqB,UAA3B,EAA3B,KACKL,WAAW,CAACI,QAAD,CAAX,GAAwB,CAACC,UAAD,CAAxB;AACN,KAJD,MAION,UAAU,CAACf,IAAX,CAAgBkB,OAAhB;AACR,GARD;AAUAlE,EAAAA,MAAM,CAACC,IAAP,CAAY+D,WAAZ,EAAyB9D,OAAzB,CAAiC,UAAAoE,SAAS,EAAI;AAC5C,QAAMC,MAAM,GAAGP,WAAW,CAACM,SAAD,CAA1B;AACAP,IAAAA,UAAU,CAACf,IAAX,CAAgBsB,SAAhB;AACAP,IAAAA,UAAU,CAACf,IAAX,CAAgB,GAAhB;AACAuB,IAAAA,MAAM,CAACrE,OAAP,CAAe,UAAAsE,IAAI;AAAA,aAAIT,UAAU,CAACf,IAAX,CAAgBwB,IAAhB,CAAJ;AAAA,KAAnB;AACAT,IAAAA,UAAU,CAACf,IAAX,CAAgB,GAAhB;AACD,GAND;AAQA,SAAOe,UAAU,CAACxC,IAAX,CAAgB,GAAhB,CAAP;AACD,CAvBD;;;;AAyBA,IAAMe,cAAc,GAAG,SAAjBA,cAAiB,CAACD,IAAD,EAAOF,KAAP,EAAiB;AACtC,MAAI,CAACE,IAAD,IAAS,CAACF,KAAK,CAACb,MAApB,EAA4B,OAAO,EAAP;AAC5B,MAAMmD,aAAa,GAAG,EAAtB;AAEAtC,EAAAA,KAAK,CAACjC,OAAN,CAAc,iBAAoC;AAAA,QAAjC+D,mBAAiC,SAAjCA,mBAAiC;AAAA,QAAZS,KAAY,SAAZA,KAAY;;AAChD,gEAAcT,mBAAd;AAAA,QAAO9D,GAAP;;AACA,QAAMwE,SAAS,GAAGxE,GAAG,CAACtB,KAAJ,CAAU,GAAV,CAAlB;AACA,QAAM+F,KAAK,GAAGC,cAAc,CAACF,SAAD,EAAYtC,IAAZ,CAA5B;AACA,QAAMyC,UAAU,GAAGJ,KAAK,IAAIvE,GAA5B;AAEA,QAAIyE,KAAJ,EAAWH,aAAa,CAACK,UAAD,CAAb,GAA4BF,KAA5B;AACZ,GAPD;AAQA,SAAOH,aAAP;AACD,CAbD;;;;AAeA,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,GAAD,EAAM7E,GAAN;AAAA,SACvB6E,GAAG,CACAlG,GADH,CACO,UAAAmG,GAAG;AAAA,WAAIA,GAAG,CAAC9E,GAAD,CAAP;AAAA,GADV,EAEGe,MAFH,CAEUC,OAFV,EAGGI,IAHH,CAGQ,IAHR,CADuB;AAAA,CAAzB;;AAMA,IAAMsD,cAAc,GAAG,SAAjBA,cAAiB,CAAC5E,IAAD,EAAOiF,MAAP,EAAkB;AACvC,MAAM/E,GAAG,GAAGF,IAAI,CAACkF,KAAL,EAAZ;AACA,MAAMC,WAAW,GAAGhC,KAAK,CAACC,OAAN,CAAc6B,MAAd,IAAwBH,gBAAgB,CAACG,MAAD,EAAS/E,GAAT,CAAxC,GAAwD+E,MAAM,CAAC/E,GAAD,CAAlF;AACA,MAAI,CAACiF,WAAL,EAAkB,OAAO,IAAP;AAClB,SAAOnF,IAAI,CAACqB,MAAL,GAAcuD,cAAc,CAAC5E,IAAD,EAAOmF,WAAP,CAA5B,GAAkDA,WAAzD;AACD,CALD","sourcesContent":["import { parseUrl } from 'query-string';\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 const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\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 buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n if (value) propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) =>\n arr\n .map(obj => obj[key])\n .filter(Boolean)\n .join(', ');\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : 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 buildPropsData,\n buildUserQuery\n};\n"],"file":"helpers.js"}
|
|
@@ -8,7 +8,7 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
import flatten from 'lodash.flatten';
|
|
9
9
|
import { useQuery } from '@apollo/client';
|
|
10
10
|
import { useRouter } from 'next/router';
|
|
11
|
-
import { buildUserQuery,
|
|
11
|
+
import { buildUserQuery, buildPropsData } from './helpers';
|
|
12
12
|
import { getSingleEntitySchema, getUser } from '../../application/query';
|
|
13
13
|
import Wrapper from '../Wrapper';
|
|
14
14
|
import BannerRender from './BannerRender';
|
|
@@ -53,7 +53,9 @@ const Banner = _ref => {
|
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
const {
|
|
56
|
-
data:
|
|
56
|
+
data: {
|
|
57
|
+
getUser: userData
|
|
58
|
+
} = {},
|
|
57
59
|
loading: userLoading
|
|
58
60
|
} = useQuery(getUser(userQuery), {
|
|
59
61
|
variables: {
|
|
@@ -69,7 +71,7 @@ const Banner = _ref => {
|
|
|
69
71
|
const queryProps = buildPropsQuery(data, propsToDisplay.length ? flatten(propsToDisplay.map(({
|
|
70
72
|
propertiesToDisplay
|
|
71
73
|
}) => propertiesToDisplay)) : []);
|
|
72
|
-
const userPropsData =
|
|
74
|
+
const userPropsData = buildPropsData(userData, userPropsToDisplay);
|
|
73
75
|
const {
|
|
74
76
|
actionKey,
|
|
75
77
|
action
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["React","useContext","MainContext","checkIfLoggedIn","PropTypes","flatten","useQuery","useRouter","buildUserQuery","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/Banner.js"],"names":["React","useContext","MainContext","checkIfLoggedIn","PropTypes","flatten","useQuery","useRouter","buildUserQuery","buildPropsData","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, buildPropsData } 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: { getUser: 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 = buildPropsData(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"}
|
|
@@ -5,8 +5,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
7
7
|
import { parseUrl } from 'query-string';
|
|
8
|
-
import flatten from 'lodash.flatten';
|
|
9
|
-
import getPropValues from '../../helpers/get-prop-values';
|
|
10
8
|
import { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';
|
|
11
9
|
|
|
12
10
|
const getParsedSizes = (sizes = '') => {
|
|
@@ -72,15 +70,8 @@ const buildBannerSizes = (sizeId, bannerSizes, sizes) => {
|
|
|
72
70
|
|
|
73
71
|
const buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {
|
|
74
72
|
if (actionKey && props[actionKey] && props[actionKey][0]) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
propertiesToDisplay
|
|
78
|
-
}) => {
|
|
79
|
-
const propValue = getPropValues(propertiesToDisplay, props[actionKey][0]);
|
|
80
|
-
const parsedValue = Array.isArray(propValue) ? flatten(propValue) : propValue;
|
|
81
|
-
acc[label] = parsedValue;
|
|
82
|
-
return acc;
|
|
83
|
-
}, {});
|
|
73
|
+
const data = props[actionKey][0];
|
|
74
|
+
return buildPropsData(data, propsToDisplay);
|
|
84
75
|
}
|
|
85
76
|
|
|
86
77
|
return {};
|
|
@@ -163,31 +154,30 @@ const buildUserQuery = userProps => {
|
|
|
163
154
|
return basicProps.join(' ');
|
|
164
155
|
};
|
|
165
156
|
|
|
166
|
-
const
|
|
167
|
-
if (!
|
|
168
|
-
const {
|
|
169
|
-
getUser: user
|
|
170
|
-
} = userData;
|
|
157
|
+
const buildPropsData = (data, props) => {
|
|
158
|
+
if (!data || !props.length) return {};
|
|
171
159
|
const propsWithData = {};
|
|
172
|
-
|
|
160
|
+
props.forEach(({
|
|
173
161
|
propertiesToDisplay,
|
|
174
162
|
label
|
|
175
163
|
}) => {
|
|
176
164
|
const [key] = propertiesToDisplay;
|
|
177
165
|
const parsedKey = key.split('.');
|
|
178
|
-
const value = getNestedValue(parsedKey,
|
|
166
|
+
const value = getNestedValue(parsedKey, data);
|
|
179
167
|
const labelToUse = label || key;
|
|
180
168
|
if (value) propsWithData[labelToUse] = value;
|
|
181
169
|
});
|
|
182
170
|
return propsWithData;
|
|
183
171
|
};
|
|
184
172
|
|
|
173
|
+
const parseArrayValues = (arr, key) => arr.map(obj => obj[key]).filter(Boolean).join(', ');
|
|
174
|
+
|
|
185
175
|
const getNestedValue = (keys, object) => {
|
|
186
176
|
const key = keys.shift();
|
|
187
|
-
const nestedValue = object[key];
|
|
177
|
+
const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];
|
|
188
178
|
if (!nestedValue) return null;
|
|
189
179
|
return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;
|
|
190
180
|
};
|
|
191
181
|
|
|
192
|
-
export { getParsedSizes, setCustomTargetings, buildParsedAdunit, buildBannerSizes, buildContextualTargeting, buildSizeMapping, getMaxBannerHeight, getMinBannerHeight,
|
|
182
|
+
export { getParsedSizes, setCustomTargetings, buildParsedAdunit, buildBannerSizes, buildContextualTargeting, buildSizeMapping, getMaxBannerHeight, getMinBannerHeight, buildPropsData, buildUserQuery };
|
|
193
183
|
//# 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","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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/helpers.js"],"names":["parseUrl","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","data","buildPropsData","buildSizeMapping","sizeMapping","groupedViewports","reduce","acc","viewports","size","viewportWidth","viewportHeight","push","keyGroupedViewport","viewport","getMaxBannerHeight","Array","isArray","Math","max","o","getMinBannerHeight","min","buildUserQuery","userProps","basicProps","nestedProps","propertiesToDisplay","propKey","indexOf","baseProp","nestedProp","nestedKey","nested","prop","propsWithData","label","parsedKey","value","getNestedValue","labelToUse","parseArrayValues","arr","obj","object","shift","nestedValue"],"mappings":"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","sourcesContent":["import { parseUrl } from 'query-string';\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 const data = props[actionKey][0];\n return buildPropsData(data, propsToDisplay);\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 buildPropsData = (data, props) => {\n if (!data || !props.length) return {};\n const propsWithData = {};\n\n props.forEach(({ propertiesToDisplay, label }) => {\n const [key] = propertiesToDisplay;\n const parsedKey = key.split('.');\n const value = getNestedValue(parsedKey, data);\n const labelToUse = label || key;\n\n if (value) propsWithData[labelToUse] = value;\n });\n return propsWithData;\n};\n\nconst parseArrayValues = (arr, key) =>\n arr\n .map(obj => obj[key])\n .filter(Boolean)\n .join(', ');\n\nconst getNestedValue = (keys, object) => {\n const key = keys.shift();\n const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : 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 buildPropsData,\n buildUserQuery\n};\n"],"file":"helpers.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/react-page-builder",
|
|
3
|
-
"version": "0.120.0-alpha.
|
|
3
|
+
"version": "0.120.0-alpha.3",
|
|
4
4
|
"description": "Blaze react page builder",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"lib/*",
|
|
84
84
|
"lib-es/*"
|
|
85
85
|
],
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "ef893373053103c6f45f93eac262043ce0cae50f"
|
|
87
87
|
}
|
|
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
|
|
|
5
5
|
import flatten from 'lodash.flatten';
|
|
6
6
|
import { useQuery } from '@apollo/client';
|
|
7
7
|
import { useRouter } from 'next/router';
|
|
8
|
-
import { buildUserQuery,
|
|
8
|
+
import { buildUserQuery, buildPropsData } from './helpers';
|
|
9
9
|
import { getSingleEntitySchema, getUser } from '../../application/query';
|
|
10
10
|
import Wrapper from '../Wrapper';
|
|
11
11
|
import BannerRender from './BannerRender';
|
|
@@ -24,7 +24,7 @@ const Banner = ({ type, ...otherProps }) => {
|
|
|
24
24
|
const { data, error, loading } = useQuery(getSingleEntitySchema, {
|
|
25
25
|
variables: { id: entity || itemEntity }
|
|
26
26
|
});
|
|
27
|
-
const { data: userData, loading: userLoading } = useQuery(getUser(userQuery), {
|
|
27
|
+
const { data: { getUser: userData } = {}, loading: userLoading } = useQuery(getUser(userQuery), {
|
|
28
28
|
variables: { id: userId },
|
|
29
29
|
skip: !userPropsToDisplay.length || !userId
|
|
30
30
|
});
|
|
@@ -42,7 +42,7 @@ const Banner = ({ type, ...otherProps }) => {
|
|
|
42
42
|
: []
|
|
43
43
|
);
|
|
44
44
|
|
|
45
|
-
const userPropsData =
|
|
45
|
+
const userPropsData = buildPropsData(userData, userPropsToDisplay);
|
|
46
46
|
const { actionKey, action } = getEntityRenderProps(queryProps, data, isPreview);
|
|
47
47
|
const bannerKey = `${sizeId}${asPath}`;
|
|
48
48
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { parseUrl } from 'query-string';
|
|
2
|
-
import flatten from 'lodash.flatten';
|
|
3
|
-
import getPropValues from '../../helpers/get-prop-values';
|
|
4
2
|
import { END_ADUNIT, MAX_BANNER_HEIGHT, MIN_BANNER_HEIGHT } from '../../constants';
|
|
5
3
|
|
|
6
4
|
const getParsedSizes = (sizes = '') => {
|
|
@@ -82,12 +80,8 @@ const buildBannerSizes = (sizeId, bannerSizes, sizes) => {
|
|
|
82
80
|
|
|
83
81
|
const buildContextualTargeting = (actionKey, props = {}, propsToDisplay = []) => {
|
|
84
82
|
if (actionKey && props[actionKey] && props[actionKey][0]) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const parsedValue = Array.isArray(propValue) ? flatten(propValue) : propValue;
|
|
88
|
-
acc[label] = parsedValue;
|
|
89
|
-
return acc;
|
|
90
|
-
}, {});
|
|
83
|
+
const data = props[actionKey][0];
|
|
84
|
+
return buildPropsData(data, propsToDisplay);
|
|
91
85
|
}
|
|
92
86
|
return {};
|
|
93
87
|
};
|
|
@@ -160,23 +154,30 @@ const buildUserQuery = userProps => {
|
|
|
160
154
|
return basicProps.join(' ');
|
|
161
155
|
};
|
|
162
156
|
|
|
163
|
-
const
|
|
164
|
-
if (!
|
|
165
|
-
const { getUser: user } = userData;
|
|
157
|
+
const buildPropsData = (data, props) => {
|
|
158
|
+
if (!data || !props.length) return {};
|
|
166
159
|
const propsWithData = {};
|
|
167
|
-
|
|
160
|
+
|
|
161
|
+
props.forEach(({ propertiesToDisplay, label }) => {
|
|
168
162
|
const [key] = propertiesToDisplay;
|
|
169
163
|
const parsedKey = key.split('.');
|
|
170
|
-
const value = getNestedValue(parsedKey,
|
|
164
|
+
const value = getNestedValue(parsedKey, data);
|
|
171
165
|
const labelToUse = label || key;
|
|
166
|
+
|
|
172
167
|
if (value) propsWithData[labelToUse] = value;
|
|
173
168
|
});
|
|
174
169
|
return propsWithData;
|
|
175
170
|
};
|
|
176
171
|
|
|
172
|
+
const parseArrayValues = (arr, key) =>
|
|
173
|
+
arr
|
|
174
|
+
.map(obj => obj[key])
|
|
175
|
+
.filter(Boolean)
|
|
176
|
+
.join(', ');
|
|
177
|
+
|
|
177
178
|
const getNestedValue = (keys, object) => {
|
|
178
179
|
const key = keys.shift();
|
|
179
|
-
const nestedValue = object[key];
|
|
180
|
+
const nestedValue = Array.isArray(object) ? parseArrayValues(object, key) : object[key];
|
|
180
181
|
if (!nestedValue) return null;
|
|
181
182
|
return keys.length ? getNestedValue(keys, nestedValue) : nestedValue;
|
|
182
183
|
};
|
|
@@ -190,6 +191,6 @@ export {
|
|
|
190
191
|
buildSizeMapping,
|
|
191
192
|
getMaxBannerHeight,
|
|
192
193
|
getMinBannerHeight,
|
|
193
|
-
|
|
194
|
+
buildPropsData,
|
|
194
195
|
buildUserQuery
|
|
195
196
|
};
|
|
@@ -17,10 +17,6 @@ const tagsTargetingResult = { tags: ['destinations', 'models'] };
|
|
|
17
17
|
|
|
18
18
|
describe('getParsedSizes helper', () => {
|
|
19
19
|
const sizes = getParsedSizes(mockedSizes);
|
|
20
|
-
it('should be a function', () => {
|
|
21
|
-
expect(typeof getParsedSizes).toEqual('function');
|
|
22
|
-
});
|
|
23
|
-
|
|
24
20
|
it('should match snapshot', () => {
|
|
25
21
|
expect(getParsedSizes).toMatchSnapshot();
|
|
26
22
|
});
|
|
@@ -46,10 +42,6 @@ describe('getParsedSizes helper', () => {
|
|
|
46
42
|
describe('setCustomTargetings helper', () => {
|
|
47
43
|
const targetingsEmpty = setCustomTargetings('');
|
|
48
44
|
|
|
49
|
-
it('should be a function', () => {
|
|
50
|
-
expect(typeof setCustomTargetings).toEqual('function');
|
|
51
|
-
});
|
|
52
|
-
|
|
53
45
|
it('should always return an object', () => {
|
|
54
46
|
expect(typeof targetingsEmpty).toBe('object');
|
|
55
47
|
});
|
|
@@ -85,10 +77,6 @@ describe('buildParsedAdunit helper', () => {
|
|
|
85
77
|
const parsedAdunit = buildParsedAdunit('/test-path/article', 0, '', '');
|
|
86
78
|
const parsedAdunitEmpty = buildParsedAdunit('/test-path/article', undefined, '', '');
|
|
87
79
|
|
|
88
|
-
it('should be a function', () => {
|
|
89
|
-
expect(typeof buildParsedAdunit).toEqual('function');
|
|
90
|
-
});
|
|
91
|
-
|
|
92
80
|
it('should always return a string', () => {
|
|
93
81
|
expect(typeof parsedAdunit).toBe('string');
|
|
94
82
|
expect(typeof parsedAdunitEmpty).toBe('string');
|
|
@@ -125,10 +113,6 @@ describe('buildParsedAdunit helper', () => {
|
|
|
125
113
|
});
|
|
126
114
|
|
|
127
115
|
describe('buildBannerSizes helper', () => {
|
|
128
|
-
it('should be a function', () => {
|
|
129
|
-
expect(typeof buildBannerSizes).toEqual('function');
|
|
130
|
-
});
|
|
131
|
-
|
|
132
116
|
it('should return an array of sizes based on given sizeId', () => {
|
|
133
117
|
const parsedSizes = buildBannerSizes(
|
|
134
118
|
'sizeId',
|
|
@@ -145,10 +129,6 @@ describe('buildBannerSizes helper', () => {
|
|
|
145
129
|
});
|
|
146
130
|
|
|
147
131
|
describe('buildContextualTargeting helper', () => {
|
|
148
|
-
it('should be a function', () => {
|
|
149
|
-
expect(typeof buildContextualTargeting).toEqual('function');
|
|
150
|
-
});
|
|
151
|
-
|
|
152
132
|
it('should return an empty object if no data received', () => {
|
|
153
133
|
const contextualTargeting = buildContextualTargeting('getPages', {}, []);
|
|
154
134
|
expect(contextualTargeting).toEqual({});
|
|
@@ -174,7 +154,7 @@ describe('buildContextualTargeting helper', () => {
|
|
|
174
154
|
{ getPages: [{ metaTitle: 'test' }] },
|
|
175
155
|
[{ label: 'definedKey', propertiesToDisplay: ['metaTitle'] }]
|
|
176
156
|
);
|
|
177
|
-
expect(contextualTargeting).toEqual({ definedKey:
|
|
157
|
+
expect(contextualTargeting).toEqual({ definedKey: 'test' });
|
|
178
158
|
});
|
|
179
159
|
|
|
180
160
|
it('should return an object with correct targeting when the selected prop value is array', () => {
|
|
@@ -183,15 +163,11 @@ describe('buildContextualTargeting helper', () => {
|
|
|
183
163
|
{ getPages: [{ tags: [{ name: 'tag1' }, { name: 'tag2' }] }] },
|
|
184
164
|
[{ label: 'tagKey', propertiesToDisplay: ['tags.name'] }]
|
|
185
165
|
);
|
|
186
|
-
expect(contextualTargeting).toEqual({ tagKey:
|
|
166
|
+
expect(contextualTargeting).toEqual({ tagKey: 'tag1, tag2' });
|
|
187
167
|
});
|
|
188
168
|
});
|
|
189
169
|
|
|
190
170
|
describe('buildSizeMapping helper', () => {
|
|
191
|
-
it('should be a function', () => {
|
|
192
|
-
expect(typeof buildSizeMapping).toEqual('function');
|
|
193
|
-
});
|
|
194
|
-
|
|
195
171
|
it('should always return an array', () => {
|
|
196
172
|
const sizeMapping = buildSizeMapping('id', [
|
|
197
173
|
{ width: 1, height: 1, viewport: [{ width: 1024, height: 0 }] }
|