@blaze-cms/react-page-builder 0.141.0 → 0.142.0-alpha.0

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 (52) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/components/DateTime/DateTime.js +37 -0
  3. package/lib/components/DateTime/DateTime.js.map +1 -0
  4. package/lib/components/DateTime/index.js +11 -0
  5. package/lib/components/DateTime/index.js.map +1 -0
  6. package/lib/components/index.js +5 -0
  7. package/lib/components/index.js.map +1 -1
  8. package/lib/hooks/helpers/buildPBComponents.js +12 -12
  9. package/lib/hooks/helpers/buildPBComponents.js.map +1 -1
  10. package/lib/hooks/helpers/get-components-to-insert-by-type.js +35 -0
  11. package/lib/hooks/helpers/get-components-to-insert-by-type.js.map +1 -0
  12. package/lib/hooks/helpers/inject-element-components.js +70 -0
  13. package/lib/hooks/helpers/inject-element-components.js.map +1 -0
  14. package/lib/hooks/helpers/inject-textblock-banners.js +4 -2
  15. package/lib/hooks/helpers/inject-textblock-banners.js.map +1 -1
  16. package/lib-es/components/DateTime/DateTime.js +30 -0
  17. package/lib-es/components/DateTime/DateTime.js.map +1 -0
  18. package/lib-es/components/DateTime/index.js +3 -0
  19. package/lib-es/components/DateTime/index.js.map +1 -0
  20. package/lib-es/components/index.js +1 -0
  21. package/lib-es/components/index.js.map +1 -1
  22. package/lib-es/hooks/helpers/buildPBComponents.js +6 -6
  23. package/lib-es/hooks/helpers/buildPBComponents.js.map +1 -1
  24. package/lib-es/hooks/helpers/get-components-to-insert-by-type.js +27 -0
  25. package/lib-es/hooks/helpers/get-components-to-insert-by-type.js.map +1 -0
  26. package/lib-es/hooks/helpers/inject-element-components.js +59 -0
  27. package/lib-es/hooks/helpers/inject-element-components.js.map +1 -0
  28. package/lib-es/hooks/helpers/inject-textblock-banners.js +4 -2
  29. package/lib-es/hooks/helpers/inject-textblock-banners.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/components/DateTime/DateTime.js +34 -0
  32. package/src/components/DateTime/index.js +3 -0
  33. package/src/components/index.js +1 -0
  34. package/src/hooks/helpers/buildPBComponents.js +13 -6
  35. package/src/hooks/helpers/get-components-to-insert-by-type.js +34 -0
  36. package/src/hooks/helpers/inject-element-components.js +56 -0
  37. package/src/hooks/helpers/inject-textblock-banners.js +3 -2
  38. package/tests/unit/src/components/DateTime/DateTime.test.js +105 -0
  39. package/tests/unit/src/components/__snapshots__/index.test.js.snap +4 -0
  40. package/tests/unit/src/hooks/helpers/{get-banners-by-type.test.js → get-components-to-insert-by-type.test.js} +5 -5
  41. package/tests/unit/src/hooks/helpers/{inject-element-banners.test.js → inject-element-components.test.js} +34 -17
  42. package/tests/unit/src/hooks/helpers/inject-textblock-banners.test.js +2 -1
  43. package/lib/hooks/helpers/get-banners-by-type.js +0 -38
  44. package/lib/hooks/helpers/get-banners-by-type.js.map +0 -1
  45. package/lib/hooks/helpers/inject-element-banners.js +0 -65
  46. package/lib/hooks/helpers/inject-element-banners.js.map +0 -1
  47. package/lib-es/hooks/helpers/get-banners-by-type.js +0 -27
  48. package/lib-es/hooks/helpers/get-banners-by-type.js.map +0 -1
  49. package/lib-es/hooks/helpers/inject-element-banners.js +0 -55
  50. package/lib-es/hooks/helpers/inject-element-banners.js.map +0 -1
  51. package/src/hooks/helpers/get-banners-by-type.js +0 -27
  52. package/src/hooks/helpers/inject-element-banners.js +0 -47
@@ -1,5 +1,5 @@
1
1
  import '@testing-library/jest-dom/extend-expect';
2
- import injectElementBanners from '../../../../../src/hooks/helpers/inject-element-banners';
2
+ import injectElementComponents from '../../../../../src/hooks/helpers/inject-element-components';
3
3
 
4
4
  const mockedChildren = [
5
5
  { type: 'banner', name: 'bannerComp' },
@@ -13,10 +13,12 @@ const mockedChildren = [
13
13
 
14
14
  const mockedResults = [
15
15
  [
16
+ { type: 'banner', name: 'bannerComp' },
16
17
  { type: 'image', name: 'imageComp' },
17
18
  { type: 'button', name: 'testCollider' },
18
19
  {
19
20
  name: 'testBanner',
21
+ type: 'banner',
20
22
  settings: {
21
23
  repeatEvery: 1,
22
24
  startingPoint: 0,
@@ -30,10 +32,12 @@ const mockedResults = [
30
32
  { type: 'image', name: 'imageComp3' }
31
33
  ],
32
34
  [
35
+ { type: 'banner', name: 'bannerComp' },
33
36
  { type: 'image', name: 'imageComp' },
34
37
  { type: 'button', name: 'testCollider' },
35
38
  {
36
39
  name: 'testBanner',
40
+ type: 'banner',
37
41
  settings: {
38
42
  repeatEvery: 1,
39
43
  startingPoint: 0,
@@ -50,34 +54,47 @@ const mockedResults = [
50
54
 
51
55
  const mockedBanner = {
52
56
  name: 'testBanner',
57
+ type: 'banner',
53
58
  settings: { repeatEvery: 4, startingPoint: 4, maxRepetitions: 1, targetings: 'pos=999' }
54
59
  };
55
60
 
56
- describe('injectElementBanners function', () => {
61
+ describe('injectElementComponents function', () => {
57
62
  it('should return the same children without banners if no banners can be injected', () => {
58
- const noBannersInjected = injectElementBanners(mockedBanner, mockedChildren);
59
- const childrenWithoutBanners = mockedChildren.filter(({ type }) => type !== 'banner');
60
- expect(noBannersInjected).toEqual(childrenWithoutBanners);
63
+ const noBannersInjected = injectElementComponents([mockedBanner], mockedChildren);
64
+ expect(noBannersInjected).toEqual(mockedChildren);
61
65
  });
62
66
 
63
67
  it('should return a modified array with injected banners', () => {
64
- const withInjectedBanners = injectElementBanners(
65
- {
66
- ...mockedBanner,
67
- settings: { ...mockedBanner.settings, startingPoint: 0, repeatEvery: 1, maxRepetitions: 4 }
68
- },
68
+ const withInjectedBanners = injectElementComponents(
69
+ [
70
+ {
71
+ ...mockedBanner,
72
+ settings: {
73
+ ...mockedBanner.settings,
74
+ startingPoint: 0,
75
+ repeatEvery: 1,
76
+ maxRepetitions: 4
77
+ }
78
+ }
79
+ ],
69
80
  mockedChildren
70
81
  );
71
-
72
82
  expect(withInjectedBanners).toEqual(mockedResults[0]);
73
83
  });
74
84
 
75
- it('should not inject more banner than its max repetitions', () => {
76
- const withSingleBanner = injectElementBanners(
77
- {
78
- ...mockedBanner,
79
- settings: { ...mockedBanner.settings, startingPoint: 0, repeatEvery: 1, maxRepetitions: 1 }
80
- },
85
+ it('should not inject more banners than its max repetitions', () => {
86
+ const withSingleBanner = injectElementComponents(
87
+ [
88
+ {
89
+ ...mockedBanner,
90
+ settings: {
91
+ ...mockedBanner.settings,
92
+ startingPoint: 0,
93
+ repeatEvery: 1,
94
+ maxRepetitions: 1
95
+ }
96
+ }
97
+ ],
81
98
  mockedChildren
82
99
  );
83
100
 
@@ -4,6 +4,7 @@ import setInitialBannerCounters from '../../../../../src/BannerContext/helpers/s
4
4
 
5
5
  const mockedBanner = {
6
6
  name: 'testBanner',
7
+ type: 'banner',
7
8
  settings: { repeatEvery: 2, startingPoint: 1, maxRepetitions: 6 }
8
9
  };
9
10
 
@@ -42,7 +43,7 @@ const getBannerContent = (banners = defaultBanners) => ({
42
43
  blockTracker: { lastBlockType: null }
43
44
  });
44
45
 
45
- describe('injectElementBanners function', () => {
46
+ describe('injectTextblockBanners function', () => {
46
47
  describe('Injection with core settings', () => {
47
48
  const bannerContext = getBannerContent();
48
49
  let updatedBlocks;
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.object.define-property.js");
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- require("core-js/modules/es.array.filter.js");
10
- require("core-js/modules/es.object.to-string.js");
11
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _constants = require("./constants");
13
- var _constants2 = require("../../constants");
14
- var getBannersByType = function getBannersByType(items, bannerType) {
15
- if (items) {
16
- if (bannerType === _constants2.ELEMENT) {
17
- var _items$filter = items.filter(function (_ref) {
18
- var type = _ref.type,
19
- insertionType = _ref.settings.insertionType;
20
- return type === _constants.PB_TYPE_BANNER && insertionType === bannerType;
21
- }),
22
- _items$filter2 = (0, _slicedToArray2["default"])(_items$filter, 1),
23
- bannerToInject = _items$filter2[0];
24
- if (bannerToInject) return [true, bannerToInject];
25
- } else {
26
- var textBlockBanners = items.filter(function (_ref2) {
27
- var type = _ref2.type,
28
- insertionType = _ref2.settings.insertionType;
29
- return type === _constants.PB_TYPE_BANNER && insertionType === _constants.PB_TYPE_TEXTBLOCK;
30
- });
31
- var hasTextBlockBanners = !!textBlockBanners && !!textBlockBanners.length;
32
- return [hasTextBlockBanners, textBlockBanners];
33
- }
34
- }
35
- return [false, []];
36
- };
37
- var _default = exports["default"] = getBannersByType;
38
- //# sourceMappingURL=get-banners-by-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-banners-by-type.js","names":["_constants","require","_constants2","getBannersByType","items","bannerType","ELEMENT","_items$filter","filter","_ref","type","insertionType","settings","PB_TYPE_BANNER","_items$filter2","_slicedToArray2","bannerToInject","textBlockBanners","_ref2","PB_TYPE_TEXTBLOCK","hasTextBlockBanners","length","_default","exports"],"sources":["../../../src/hooks/helpers/get-banners-by-type.js"],"sourcesContent":["import { PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK } from './constants';\nimport { ELEMENT } from '../../constants';\n\nconst getBannersByType = (items, bannerType) => {\n if (items) {\n if (bannerType === ELEMENT) {\n const [bannerToInject] = items.filter(\n ({ type, settings: { insertionType } }) =>\n type === PB_TYPE_BANNER && insertionType === bannerType\n );\n if (bannerToInject) return [true, bannerToInject];\n } else {\n const textBlockBanners = items.filter(\n ({ type, settings: { insertionType } }) =>\n type === PB_TYPE_BANNER && insertionType === PB_TYPE_TEXTBLOCK\n );\n\n const hasTextBlockBanners = !!textBlockBanners && !!textBlockBanners.length;\n\n return [hasTextBlockBanners, textBlockBanners];\n }\n }\n\n return [false, []];\n};\n\nexport default getBannersByType;\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAME,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAAK,EAAEC,UAAU,EAAK;EAC9C,IAAID,KAAK,EAAE;IACT,IAAIC,UAAU,KAAKC,mBAAO,EAAE;MAC1B,IAAAC,aAAA,GAAyBH,KAAK,CAACI,MAAM,CACnC,UAAAC,IAAA;UAAA,IAAGC,IAAI,GAAAD,IAAA,CAAJC,IAAI;YAAcC,aAAa,GAAAF,IAAA,CAAzBG,QAAQ,CAAID,aAAa;UAAA,OAChCD,IAAI,KAAKG,yBAAc,IAAIF,aAAa,KAAKN,UAAU;QAAA,CAC3D,CAAC;QAAAS,cAAA,OAAAC,eAAA,aAAAR,aAAA;QAHMS,cAAc,GAAAF,cAAA;MAIrB,IAAIE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAEA,cAAc,CAAC;IACnD,CAAC,MAAM;MACL,IAAMC,gBAAgB,GAAGb,KAAK,CAACI,MAAM,CACnC,UAAAU,KAAA;QAAA,IAAGR,IAAI,GAAAQ,KAAA,CAAJR,IAAI;UAAcC,aAAa,GAAAO,KAAA,CAAzBN,QAAQ,CAAID,aAAa;QAAA,OAChCD,IAAI,KAAKG,yBAAc,IAAIF,aAAa,KAAKQ,4BAAiB;MAAA,CAClE,CAAC;MAED,IAAMC,mBAAmB,GAAG,CAAC,CAACH,gBAAgB,IAAI,CAAC,CAACA,gBAAgB,CAACI,MAAM;MAE3E,OAAO,CAACD,mBAAmB,EAAEH,gBAAgB,CAAC;IAChD;EACF;EAEA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpB,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,cAEapB,gBAAgB"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.object.keys.js");
4
- require("core-js/modules/es.symbol.js");
5
- require("core-js/modules/es.array.filter.js");
6
- require("core-js/modules/es.object.get-own-property-descriptor.js");
7
- require("core-js/modules/es.object.get-own-property-descriptors.js");
8
- require("core-js/modules/es.object.define-properties.js");
9
- require("core-js/modules/es.object.define-property.js");
10
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
11
- Object.defineProperty(exports, "__esModule", {
12
- value: true
13
- });
14
- exports["default"] = void 0;
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
- require("core-js/modules/es.array.for-each.js");
17
- require("core-js/modules/es.object.to-string.js");
18
- require("core-js/modules/web.dom-collections.for-each.js");
19
- var _updateTargetings = _interopRequireDefault(require("./update-targetings"));
20
- var _constants = require("../../constants");
21
- var _constants2 = require("./constants");
22
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
- var checkBannerCollision = function checkBannerCollision(typeToCheck, currentType) {
25
- if (currentType === _constants.IMAGE) return true;
26
- return typeToCheck === _constants.IMAGE;
27
- };
28
- var injectElementBanners = function injectElementBanners(banner, children) {
29
- var _banner$settings = banner.settings,
30
- repeatEvery = _banner$settings.repeatEvery,
31
- startingPoint = _banner$settings.startingPoint,
32
- maxRepetitions = _banner$settings.maxRepetitions;
33
- var updatedChildren = [];
34
- var bannerTotal = 0;
35
- var currentBannerPosition = startingPoint;
36
- children.forEach(function (component, i) {
37
- var type = component.type;
38
- var _ref = children[i - 1] || {},
39
- previousComponentType = _ref.type;
40
- var _ref2 = children[i + 1] || {},
41
- nextComponentType = _ref2.type;
42
- var isBanner = type === _constants2.PB_TYPE_BANNER;
43
- var collidedBefore = checkBannerCollision(previousComponentType, type);
44
- var collidedAfter = checkBannerCollision(nextComponentType, type);
45
- if (collidedBefore || i === 0 && collidedAfter) {
46
- if (currentBannerPosition <= i) currentBannerPosition += 1;
47
- if (!isBanner) updatedChildren.push(component);
48
- return;
49
- }
50
- var hasReachedMax = maxRepetitions && bannerTotal >= maxRepetitions;
51
- if (!hasReachedMax && i === currentBannerPosition) {
52
- var bannerWithTargetings = repeatEvery ? (0, _updateTargetings["default"])(banner, bannerTotal) : banner;
53
- var updatedSettings = _objectSpread({}, bannerWithTargetings.settings);
54
- updatedChildren.push(_objectSpread(_objectSpread({}, bannerWithTargetings), {}, {
55
- settings: updatedSettings
56
- }));
57
- bannerTotal += 1;
58
- currentBannerPosition += repeatEvery;
59
- }
60
- if (!isBanner) updatedChildren.push(component);
61
- });
62
- return updatedChildren;
63
- };
64
- var _default = exports["default"] = injectElementBanners;
65
- //# sourceMappingURL=inject-element-banners.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject-element-banners.js","names":["_updateTargetings","_interopRequireDefault","require","_constants","_constants2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","checkBannerCollision","typeToCheck","currentType","IMAGE","injectElementBanners","banner","children","_banner$settings","settings","repeatEvery","startingPoint","maxRepetitions","updatedChildren","bannerTotal","currentBannerPosition","component","i","type","_ref","previousComponentType","_ref2","nextComponentType","isBanner","PB_TYPE_BANNER","collidedBefore","collidedAfter","hasReachedMax","bannerWithTargetings","updateTargetings","updatedSettings","_default","exports"],"sources":["../../../src/hooks/helpers/inject-element-banners.js"],"sourcesContent":["import updateTargetings from './update-targetings';\nimport { IMAGE } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\n\nconst checkBannerCollision = (typeToCheck, currentType) => {\n if (currentType === IMAGE) return true;\n return typeToCheck === IMAGE;\n};\n\nconst injectElementBanners = (banner, children) => {\n const {\n settings: { repeatEvery, startingPoint, maxRepetitions }\n } = banner;\n\n const updatedChildren = [];\n let bannerTotal = 0;\n let currentBannerPosition = startingPoint;\n\n children.forEach((component, i) => {\n const { type } = component;\n const { type: previousComponentType } = children[i - 1] || {};\n const { type: nextComponentType } = children[i + 1] || {};\n const isBanner = type === PB_TYPE_BANNER;\n const collidedBefore = checkBannerCollision(previousComponentType, type);\n const collidedAfter = checkBannerCollision(nextComponentType, type);\n\n if (collidedBefore || (i === 0 && collidedAfter)) {\n if (currentBannerPosition <= i) currentBannerPosition += 1;\n if (!isBanner) updatedChildren.push(component);\n return;\n }\n\n const hasReachedMax = maxRepetitions && bannerTotal >= maxRepetitions;\n if (!hasReachedMax && i === currentBannerPosition) {\n const bannerWithTargetings = repeatEvery ? updateTargetings(banner, bannerTotal) : banner;\n const updatedSettings = { ...bannerWithTargetings.settings };\n updatedChildren.push({ ...bannerWithTargetings, settings: updatedSettings });\n bannerTotal += 1;\n currentBannerPosition += repeatEvery;\n }\n if (!isBanner) updatedChildren.push(component);\n });\n\n return updatedChildren;\n};\n\nexport default injectElementBanners;\n"],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK } from './constants';
2
- import { ELEMENT } from '../../constants';
3
- const getBannersByType = (items, bannerType) => {
4
- if (items) {
5
- if (bannerType === ELEMENT) {
6
- const [bannerToInject] = items.filter(({
7
- type,
8
- settings: {
9
- insertionType
10
- }
11
- }) => type === PB_TYPE_BANNER && insertionType === bannerType);
12
- if (bannerToInject) return [true, bannerToInject];
13
- } else {
14
- const textBlockBanners = items.filter(({
15
- type,
16
- settings: {
17
- insertionType
18
- }
19
- }) => type === PB_TYPE_BANNER && insertionType === PB_TYPE_TEXTBLOCK);
20
- const hasTextBlockBanners = !!textBlockBanners && !!textBlockBanners.length;
21
- return [hasTextBlockBanners, textBlockBanners];
22
- }
23
- }
24
- return [false, []];
25
- };
26
- export default getBannersByType;
27
- //# sourceMappingURL=get-banners-by-type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-banners-by-type.js","names":["PB_TYPE_BANNER","PB_TYPE_TEXTBLOCK","ELEMENT","getBannersByType","items","bannerType","bannerToInject","filter","type","settings","insertionType","textBlockBanners","hasTextBlockBanners","length"],"sources":["../../../src/hooks/helpers/get-banners-by-type.js"],"sourcesContent":["import { PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK } from './constants';\nimport { ELEMENT } from '../../constants';\n\nconst getBannersByType = (items, bannerType) => {\n if (items) {\n if (bannerType === ELEMENT) {\n const [bannerToInject] = items.filter(\n ({ type, settings: { insertionType } }) =>\n type === PB_TYPE_BANNER && insertionType === bannerType\n );\n if (bannerToInject) return [true, bannerToInject];\n } else {\n const textBlockBanners = items.filter(\n ({ type, settings: { insertionType } }) =>\n type === PB_TYPE_BANNER && insertionType === PB_TYPE_TEXTBLOCK\n );\n\n const hasTextBlockBanners = !!textBlockBanners && !!textBlockBanners.length;\n\n return [hasTextBlockBanners, textBlockBanners];\n }\n }\n\n return [false, []];\n};\n\nexport default getBannersByType;\n"],"mappings":"AAAA,SAASA,cAAc,EAAEC,iBAAiB,QAAQ,aAAa;AAC/D,SAASC,OAAO,QAAQ,iBAAiB;AAEzC,MAAMC,gBAAgB,GAAGA,CAACC,KAAK,EAAEC,UAAU,KAAK;EAC9C,IAAID,KAAK,EAAE;IACT,IAAIC,UAAU,KAAKH,OAAO,EAAE;MAC1B,MAAM,CAACI,cAAc,CAAC,GAAGF,KAAK,CAACG,MAAM,CACnC,CAAC;QAAEC,IAAI;QAAEC,QAAQ,EAAE;UAAEC;QAAc;MAAE,CAAC,KACpCF,IAAI,KAAKR,cAAc,IAAIU,aAAa,KAAKL,UACjD,CAAC;MACD,IAAIC,cAAc,EAAE,OAAO,CAAC,IAAI,EAAEA,cAAc,CAAC;IACnD,CAAC,MAAM;MACL,MAAMK,gBAAgB,GAAGP,KAAK,CAACG,MAAM,CACnC,CAAC;QAAEC,IAAI;QAAEC,QAAQ,EAAE;UAAEC;QAAc;MAAE,CAAC,KACpCF,IAAI,KAAKR,cAAc,IAAIU,aAAa,KAAKT,iBACjD,CAAC;MAED,MAAMW,mBAAmB,GAAG,CAAC,CAACD,gBAAgB,IAAI,CAAC,CAACA,gBAAgB,CAACE,MAAM;MAE3E,OAAO,CAACD,mBAAmB,EAAED,gBAAgB,CAAC;IAChD;EACF;EAEA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpB,CAAC;AAED,eAAeR,gBAAgB"}
@@ -1,55 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import updateTargetings from './update-targetings';
5
- import { IMAGE } from '../../constants';
6
- import { PB_TYPE_BANNER } from './constants';
7
- const checkBannerCollision = (typeToCheck, currentType) => {
8
- if (currentType === IMAGE) return true;
9
- return typeToCheck === IMAGE;
10
- };
11
- const injectElementBanners = (banner, children) => {
12
- const {
13
- settings: {
14
- repeatEvery,
15
- startingPoint,
16
- maxRepetitions
17
- }
18
- } = banner;
19
- const updatedChildren = [];
20
- let bannerTotal = 0;
21
- let currentBannerPosition = startingPoint;
22
- children.forEach((component, i) => {
23
- const {
24
- type
25
- } = component;
26
- const {
27
- type: previousComponentType
28
- } = children[i - 1] || {};
29
- const {
30
- type: nextComponentType
31
- } = children[i + 1] || {};
32
- const isBanner = type === PB_TYPE_BANNER;
33
- const collidedBefore = checkBannerCollision(previousComponentType, type);
34
- const collidedAfter = checkBannerCollision(nextComponentType, type);
35
- if (collidedBefore || i === 0 && collidedAfter) {
36
- if (currentBannerPosition <= i) currentBannerPosition += 1;
37
- if (!isBanner) updatedChildren.push(component);
38
- return;
39
- }
40
- const hasReachedMax = maxRepetitions && bannerTotal >= maxRepetitions;
41
- if (!hasReachedMax && i === currentBannerPosition) {
42
- const bannerWithTargetings = repeatEvery ? updateTargetings(banner, bannerTotal) : banner;
43
- const updatedSettings = _objectSpread({}, bannerWithTargetings.settings);
44
- updatedChildren.push(_objectSpread(_objectSpread({}, bannerWithTargetings), {}, {
45
- settings: updatedSettings
46
- }));
47
- bannerTotal += 1;
48
- currentBannerPosition += repeatEvery;
49
- }
50
- if (!isBanner) updatedChildren.push(component);
51
- });
52
- return updatedChildren;
53
- };
54
- export default injectElementBanners;
55
- //# sourceMappingURL=inject-element-banners.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject-element-banners.js","names":["updateTargetings","IMAGE","PB_TYPE_BANNER","checkBannerCollision","typeToCheck","currentType","injectElementBanners","banner","children","settings","repeatEvery","startingPoint","maxRepetitions","updatedChildren","bannerTotal","currentBannerPosition","forEach","component","i","type","previousComponentType","nextComponentType","isBanner","collidedBefore","collidedAfter","push","hasReachedMax","bannerWithTargetings","updatedSettings","_objectSpread"],"sources":["../../../src/hooks/helpers/inject-element-banners.js"],"sourcesContent":["import updateTargetings from './update-targetings';\nimport { IMAGE } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\n\nconst checkBannerCollision = (typeToCheck, currentType) => {\n if (currentType === IMAGE) return true;\n return typeToCheck === IMAGE;\n};\n\nconst injectElementBanners = (banner, children) => {\n const {\n settings: { repeatEvery, startingPoint, maxRepetitions }\n } = banner;\n\n const updatedChildren = [];\n let bannerTotal = 0;\n let currentBannerPosition = startingPoint;\n\n children.forEach((component, i) => {\n const { type } = component;\n const { type: previousComponentType } = children[i - 1] || {};\n const { type: nextComponentType } = children[i + 1] || {};\n const isBanner = type === PB_TYPE_BANNER;\n const collidedBefore = checkBannerCollision(previousComponentType, type);\n const collidedAfter = checkBannerCollision(nextComponentType, type);\n\n if (collidedBefore || (i === 0 && collidedAfter)) {\n if (currentBannerPosition <= i) currentBannerPosition += 1;\n if (!isBanner) updatedChildren.push(component);\n return;\n }\n\n const hasReachedMax = maxRepetitions && bannerTotal >= maxRepetitions;\n if (!hasReachedMax && i === currentBannerPosition) {\n const bannerWithTargetings = repeatEvery ? updateTargetings(banner, bannerTotal) : banner;\n const updatedSettings = { ...bannerWithTargetings.settings };\n updatedChildren.push({ ...bannerWithTargetings, settings: updatedSettings });\n bannerTotal += 1;\n currentBannerPosition += repeatEvery;\n }\n if (!isBanner) updatedChildren.push(component);\n });\n\n return updatedChildren;\n};\n\nexport default injectElementBanners;\n"],"mappings":";;;AAAA,OAAOA,gBAAgB,MAAM,qBAAqB;AAClD,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SAASC,cAAc,QAAQ,aAAa;AAE5C,MAAMC,oBAAoB,GAAGA,CAACC,WAAW,EAAEC,WAAW,KAAK;EACzD,IAAIA,WAAW,KAAKJ,KAAK,EAAE,OAAO,IAAI;EACtC,OAAOG,WAAW,KAAKH,KAAK;AAC9B,CAAC;AAED,MAAMK,oBAAoB,GAAGA,CAACC,MAAM,EAAEC,QAAQ,KAAK;EACjD,MAAM;IACJC,QAAQ,EAAE;MAAEC,WAAW;MAAEC,aAAa;MAAEC;IAAe;EACzD,CAAC,GAAGL,MAAM;EAEV,MAAMM,eAAe,GAAG,EAAE;EAC1B,IAAIC,WAAW,GAAG,CAAC;EACnB,IAAIC,qBAAqB,GAAGJ,aAAa;EAEzCH,QAAQ,CAACQ,OAAO,CAAC,CAACC,SAAS,EAAEC,CAAC,KAAK;IACjC,MAAM;MAAEC;IAAK,CAAC,GAAGF,SAAS;IAC1B,MAAM;MAAEE,IAAI,EAAEC;IAAsB,CAAC,GAAGZ,QAAQ,CAACU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM;MAAEC,IAAI,EAAEE;IAAkB,CAAC,GAAGb,QAAQ,CAACU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,MAAMI,QAAQ,GAAGH,IAAI,KAAKjB,cAAc;IACxC,MAAMqB,cAAc,GAAGpB,oBAAoB,CAACiB,qBAAqB,EAAED,IAAI,CAAC;IACxE,MAAMK,aAAa,GAAGrB,oBAAoB,CAACkB,iBAAiB,EAAEF,IAAI,CAAC;IAEnE,IAAII,cAAc,IAAKL,CAAC,KAAK,CAAC,IAAIM,aAAc,EAAE;MAChD,IAAIT,qBAAqB,IAAIG,CAAC,EAAEH,qBAAqB,IAAI,CAAC;MAC1D,IAAI,CAACO,QAAQ,EAAET,eAAe,CAACY,IAAI,CAACR,SAAS,CAAC;MAC9C;IACF;IAEA,MAAMS,aAAa,GAAGd,cAAc,IAAIE,WAAW,IAAIF,cAAc;IACrE,IAAI,CAACc,aAAa,IAAIR,CAAC,KAAKH,qBAAqB,EAAE;MACjD,MAAMY,oBAAoB,GAAGjB,WAAW,GAAGV,gBAAgB,CAACO,MAAM,EAAEO,WAAW,CAAC,GAAGP,MAAM;MACzF,MAAMqB,eAAe,GAAAC,aAAA,KAAQF,oBAAoB,CAAClB,QAAQ,CAAE;MAC5DI,eAAe,CAACY,IAAI,CAAAI,aAAA,CAAAA,aAAA,KAAMF,oBAAoB;QAAElB,QAAQ,EAAEmB;MAAe,EAAE,CAAC;MAC5Ed,WAAW,IAAI,CAAC;MAChBC,qBAAqB,IAAIL,WAAW;IACtC;IACA,IAAI,CAACY,QAAQ,EAAET,eAAe,CAACY,IAAI,CAACR,SAAS,CAAC;EAChD,CAAC,CAAC;EAEF,OAAOJ,eAAe;AACxB,CAAC;AAED,eAAeP,oBAAoB"}
@@ -1,27 +0,0 @@
1
- import { PB_TYPE_BANNER, PB_TYPE_TEXTBLOCK } from './constants';
2
- import { ELEMENT } from '../../constants';
3
-
4
- const getBannersByType = (items, bannerType) => {
5
- if (items) {
6
- if (bannerType === ELEMENT) {
7
- const [bannerToInject] = items.filter(
8
- ({ type, settings: { insertionType } }) =>
9
- type === PB_TYPE_BANNER && insertionType === bannerType
10
- );
11
- if (bannerToInject) return [true, bannerToInject];
12
- } else {
13
- const textBlockBanners = items.filter(
14
- ({ type, settings: { insertionType } }) =>
15
- type === PB_TYPE_BANNER && insertionType === PB_TYPE_TEXTBLOCK
16
- );
17
-
18
- const hasTextBlockBanners = !!textBlockBanners && !!textBlockBanners.length;
19
-
20
- return [hasTextBlockBanners, textBlockBanners];
21
- }
22
- }
23
-
24
- return [false, []];
25
- };
26
-
27
- export default getBannersByType;
@@ -1,47 +0,0 @@
1
- import updateTargetings from './update-targetings';
2
- import { IMAGE } from '../../constants';
3
- import { PB_TYPE_BANNER } from './constants';
4
-
5
- const checkBannerCollision = (typeToCheck, currentType) => {
6
- if (currentType === IMAGE) return true;
7
- return typeToCheck === IMAGE;
8
- };
9
-
10
- const injectElementBanners = (banner, children) => {
11
- const {
12
- settings: { repeatEvery, startingPoint, maxRepetitions }
13
- } = banner;
14
-
15
- const updatedChildren = [];
16
- let bannerTotal = 0;
17
- let currentBannerPosition = startingPoint;
18
-
19
- children.forEach((component, i) => {
20
- const { type } = component;
21
- const { type: previousComponentType } = children[i - 1] || {};
22
- const { type: nextComponentType } = children[i + 1] || {};
23
- const isBanner = type === PB_TYPE_BANNER;
24
- const collidedBefore = checkBannerCollision(previousComponentType, type);
25
- const collidedAfter = checkBannerCollision(nextComponentType, type);
26
-
27
- if (collidedBefore || (i === 0 && collidedAfter)) {
28
- if (currentBannerPosition <= i) currentBannerPosition += 1;
29
- if (!isBanner) updatedChildren.push(component);
30
- return;
31
- }
32
-
33
- const hasReachedMax = maxRepetitions && bannerTotal >= maxRepetitions;
34
- if (!hasReachedMax && i === currentBannerPosition) {
35
- const bannerWithTargetings = repeatEvery ? updateTargetings(banner, bannerTotal) : banner;
36
- const updatedSettings = { ...bannerWithTargetings.settings };
37
- updatedChildren.push({ ...bannerWithTargetings, settings: updatedSettings });
38
- bannerTotal += 1;
39
- currentBannerPosition += repeatEvery;
40
- }
41
- if (!isBanner) updatedChildren.push(component);
42
- });
43
-
44
- return updatedChildren;
45
- };
46
-
47
- export default injectElementBanners;