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

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 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.142.0-alpha.1](https://github.com/thebyte9/blaze/compare/v0.142.0-alpha.0...v0.142.0-alpha.1) (2024-05-24)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * get component for repetition ([#4376](https://github.com/thebyte9/blaze/issues/4376)) ([2dc7e4b](https://github.com/thebyte9/blaze/commit/2dc7e4b2ecf8c8989cd453e3b446dd615b32fc3a))
12
+
13
+
14
+
15
+
16
+
6
17
  # [0.142.0-alpha.0](https://github.com/thebyte9/blaze/compare/v0.141.3...v0.142.0-alpha.0) (2024-05-24)
7
18
 
8
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"buildPBComponents.js","names":["_react","_interopRequireDefault","require","_lodash","_GlobalLightbox","_RenderComponent","_getComponentsToInsertByType","_injectElementComponents","_StoreImages","_getLightboxImages","_insertBanners","_checkBannerInsertionSet","_getBannerIndex","_constants","_constants2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","renderChildComponents","options","items","undefined","BuildPBComponents","components","rootLevel","isArray","Array","metaTitle","_options$lightboxImag","lightboxImages","toggleModal","open","selectedImage","setSelectedImage","parent","parentName","name","StoreImages","resetImages","addImages","getLightboxImages","concat","setHandlers","imageProps","handleSelectedImage","images","map","image","createElement","Fragment","onClose","component","_component$items","_getComponentsToInser","getComponentsToInsertByType","ELEMENT","_getComponentsToInser2","_slicedToArray2","hasElementInsertionComponents","elementInsertionComponents","_getComponentsToInser3","PB_TYPE_TEXTBLOCK","_getComponentsToInser4","hasTextBlockBanners","textBlockBanners","updatedChildren","cloneDeep","_ref","_ref$settings","settings","_ref$settings2","insertionType","injectElementComponents","bannerToInject","checkBannerInsertionSet","bannerIndex","getBannerIndex","hasComponentItems","insertBanners","childComponents","siblings","key","id","_default","exports"],"sources":["../../../src/hooks/helpers/buildPBComponents.js"],"sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash.clonedeep';\nimport GlobalLightbox from '../../components/Image/GlobalLightbox';\nimport RenderComponent from './RenderComponent';\nimport getComponentsToInsertByType from './get-components-to-insert-by-type';\nimport injectElementComponents from './inject-element-components';\nimport StoreImages from './StoreImages';\nimport getLightboxImages from './get-lightbox-images';\nimport insertBanners from './insert-banners';\nimport checkBannerInsertionSet from './check-banner-insertion-set';\nimport getBannerIndex from './get-banner-index';\nimport { ELEMENT } from '../../constants';\nimport { PB_TYPE_TEXTBLOCK } from './constants';\n\nfunction renderChildComponents(options, items = []) {\n return items && items.length ? BuildPBComponents(items, options) : [];\n}\n\nfunction BuildPBComponents(components, options = {}, rootLevel = false) {\n const isArray = Array.isArray(components);\n if (!isArray) return [];\n\n const {\n metaTitle,\n lightboxImages = [],\n toggleModal,\n open,\n selectedImage,\n setSelectedImage,\n parent,\n name: parentName\n } = options;\n\n if (rootLevel && !open) StoreImages.resetImages();\n\n StoreImages.addImages(getLightboxImages(components).concat(lightboxImages), options);\n StoreImages.setHandlers({ toggleModal, setSelectedImage });\n\n const imageProps = {\n toggleModal: StoreImages.toggleModal,\n handleSelectedImage: StoreImages.handleSelectedImage\n };\n\n const images = StoreImages.images.map(image => ({ ...image, ...imageProps }));\n\n return (\n <>\n {open && (\n <GlobalLightbox\n images={images}\n onClose={StoreImages.toggleModal}\n selectedImage={selectedImage}\n metaTitle={metaTitle}\n parentName={parentName}\n parent={parent}\n />\n )}\n {components.map(component => {\n const { items = [] } = component;\n const [\n hasElementInsertionComponents,\n elementInsertionComponents\n ] = getComponentsToInsertByType(items, ELEMENT);\n\n const [hasTextBlockBanners, textBlockBanners] = getComponentsToInsertByType(\n items,\n PB_TYPE_TEXTBLOCK\n );\n let updatedChildren =\n items &&\n cloneDeep(items).filter(\n ({ settings: { insertionType } = {} }) => insertionType !== PB_TYPE_TEXTBLOCK\n );\n\n if (hasElementInsertionComponents) {\n updatedChildren = injectElementComponents(elementInsertionComponents, updatedChildren);\n } else {\n // TODO: this block is for banner retrocompatibility, once completly migrated remove it as well as all related helpers\n const bannerToInject = checkBannerInsertionSet(updatedChildren);\n const bannerIndex = getBannerIndex(updatedChildren, bannerToInject);\n const hasComponentItems = !!(updatedChildren && updatedChildren.length);\n\n if (hasComponentItems && bannerIndex > -1) {\n updatedChildren = insertBanners(updatedChildren, bannerIndex, bannerToInject);\n }\n }\n\n const childComponents = renderChildComponents(options, updatedChildren);\n\n return (\n <RenderComponent\n component={component}\n siblings={updatedChildren}\n childComponents={childComponents}\n imageProps={imageProps}\n options={{ ...options }}\n images={images}\n key={`${component.id}`}\n hasTextBlockBanners={hasTextBlockBanners}\n textBlockBanners={textBlockBanners}\n />\n );\n })}\n </>\n );\n}\n\nexport default BuildPBComponents;\n"],"mappings":"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"}
1
+ {"version":3,"file":"buildPBComponents.js","names":["_react","_interopRequireDefault","require","_lodash","_GlobalLightbox","_RenderComponent","_getComponentsToInsertByType","_injectElementComponents","_StoreImages","_getLightboxImages","_insertBanners","_checkBannerInsertionSet","_getBannerIndex","_constants","_constants2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","renderChildComponents","options","items","undefined","BuildPBComponents","components","rootLevel","isArray","Array","metaTitle","_options$lightboxImag","lightboxImages","toggleModal","open","selectedImage","setSelectedImage","parent","parentName","name","StoreImages","resetImages","addImages","getLightboxImages","concat","setHandlers","imageProps","handleSelectedImage","images","map","image","createElement","Fragment","onClose","component","_component$items","_getComponentsToInser","getComponentsToInsertByType","ELEMENT","_getComponentsToInser2","_slicedToArray2","hasElementInsertionComponents","elementInsertionComponents","_getComponentsToInser3","PB_TYPE_TEXTBLOCK","_getComponentsToInser4","hasTextBlockBanners","textBlockBanners","updatedChildren","cloneDeep","_ref","_ref$settings","settings","_ref$settings2","insertionType","injectElementComponents","bannerToInject","checkBannerInsertionSet","bannerIndex","getBannerIndex","hasComponentItems","insertBanners","childComponents","siblings","key","id","_default","exports"],"sources":["../../../src/hooks/helpers/buildPBComponents.js"],"sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash.clonedeep';\nimport GlobalLightbox from '../../components/Image/GlobalLightbox';\nimport RenderComponent from './RenderComponent';\nimport getComponentsToInsertByType from './get-components-to-insert-by-type';\nimport injectElementComponents from './inject-element-components';\nimport StoreImages from './StoreImages';\nimport getLightboxImages from './get-lightbox-images';\nimport insertBanners from './insert-banners';\nimport checkBannerInsertionSet from './check-banner-insertion-set';\nimport getBannerIndex from './get-banner-index';\nimport { ELEMENT } from '../../constants';\nimport { PB_TYPE_TEXTBLOCK } from './constants';\n\nfunction renderChildComponents(options, items = []) {\n return items && items.length ? BuildPBComponents(items, options) : [];\n}\n\nfunction BuildPBComponents(components, options = {}, rootLevel = false) {\n const isArray = Array.isArray(components);\n if (!isArray) return [];\n\n const {\n metaTitle,\n lightboxImages = [],\n toggleModal,\n open,\n selectedImage,\n setSelectedImage,\n parent,\n name: parentName\n } = options;\n\n if (rootLevel && !open) StoreImages.resetImages();\n\n StoreImages.addImages(getLightboxImages(components).concat(lightboxImages), options);\n StoreImages.setHandlers({ toggleModal, setSelectedImage });\n\n const imageProps = {\n toggleModal: StoreImages.toggleModal,\n handleSelectedImage: StoreImages.handleSelectedImage\n };\n\n const images = StoreImages.images.map(image => ({ ...image, ...imageProps }));\n\n return (\n <>\n {open && (\n <GlobalLightbox\n images={images}\n onClose={StoreImages.toggleModal}\n selectedImage={selectedImage}\n metaTitle={metaTitle}\n parentName={parentName}\n parent={parent}\n />\n )}\n {components.map(component => {\n const { items = [] } = component;\n const [\n hasElementInsertionComponents,\n elementInsertionComponents\n ] = getComponentsToInsertByType(items, ELEMENT);\n\n const [hasTextBlockBanners, textBlockBanners] = getComponentsToInsertByType(\n items,\n PB_TYPE_TEXTBLOCK\n );\n\n let updatedChildren =\n items &&\n cloneDeep(items).filter(\n ({ settings: { insertionType } = {} }) => insertionType !== PB_TYPE_TEXTBLOCK\n );\n\n if (hasElementInsertionComponents) {\n updatedChildren = injectElementComponents(elementInsertionComponents, updatedChildren);\n } else {\n // TODO: this block is for banner retrocompatibility, once completly migrated remove it as well as all related helpers\n const bannerToInject = checkBannerInsertionSet(updatedChildren);\n const bannerIndex = getBannerIndex(updatedChildren, bannerToInject);\n const hasComponentItems = !!(updatedChildren && updatedChildren.length);\n\n if (hasComponentItems && bannerIndex > -1) {\n updatedChildren = insertBanners(updatedChildren, bannerIndex, bannerToInject);\n }\n }\n\n const childComponents = renderChildComponents(options, updatedChildren);\n\n return (\n <RenderComponent\n component={component}\n siblings={updatedChildren}\n childComponents={childComponents}\n imageProps={imageProps}\n options={{ ...options }}\n images={images}\n key={`${component.id}`}\n hasTextBlockBanners={hasTextBlockBanners}\n textBlockBanners={textBlockBanners}\n />\n );\n })}\n </>\n );\n}\n\nexport default BuildPBComponents;\n"],"mappings":"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"}
@@ -23,11 +23,11 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
23
23
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
24
24
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
25
25
  var _react = _interopRequireDefault(require("react"));
26
- var _Banner = _interopRequireDefault(require("../../components/Banner"));
27
26
  var _checkCollisions = require("./check-collisions");
28
27
  var _updateTargetings = _interopRequireDefault(require("./update-targetings"));
29
28
  var _constants = require("../../constants");
30
29
  var _constants2 = require("./constants");
30
+ var _getComponent = _interopRequireDefault(require("./getComponent"));
31
31
  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; }
32
32
  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; }
33
33
  var checkCanInjectBanner = function checkCanInjectBanner(maxRepetitions, total) {
@@ -84,7 +84,8 @@ var injectTextblockBanners = function injectTextblockBanners(_ref) {
84
84
  var updatedBanner = _objectSpread(_objectSpread(_objectSpread({}, pbOptions), bannerWithTargetings.settings), {}, {
85
85
  name: name
86
86
  });
87
- updatedBlock.push( /*#__PURE__*/_react["default"].createElement(_Banner["default"], (0, _extends2["default"])({
87
+ var Component = (0, _getComponent["default"])(typeToCheck);
88
+ if (Component) updatedBlock.push( /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({
88
89
  key: bannerKey
89
90
  }, updatedBanner)));
90
91
  bannerCounters[name].insertionPoint += repeatEvery;
@@ -1 +1 @@
1
- {"version":3,"file":"inject-textblock-banners.js","names":["_react","_interopRequireDefault","require","_Banner","_checkCollisions","_updateTargetings","_constants","_constants2","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","checkCanInjectBanner","maxRepetitions","total","injectTextblockBanners","_ref","componentName","parsedTextBlock","bannerContext","bannerCounters","banners","siblings","pbOptions","bannerPositionCounter","blockTracker","_getCollisions","getCollisions","_getCollisions2","_slicedToArray2","collidedWithPrevious","collidedWithNext","updatedBlock","blocksLength","block","blockIndex","type","_block$props","props","_block$props2","paragraphContent","children","hasBanner","shouldCount","ALLOWED_BLOCK_TYPES","includes","addBlock","banner","name","settings","typeToCheck","repeatEvery","_bannerCounters$name","paragraphCounter","insertionPoint","canInsertAfterPreviousBlock","lastBlockType","hasCollided","checkIfHasCollided","canInjectBanner","bannerWithTargetings","updateTargetings","counter","bannerKey","concat","targetings","updatedBanner","createElement","_extends2","key","PB_TYPE_BANNER","_default","exports"],"sources":["../../../src/hooks/helpers/inject-textblock-banners.js"],"sourcesContent":["import React from 'react';\nimport Banner from '../../components/Banner';\nimport { getCollisions, checkIfHasCollided } from './check-collisions';\nimport updateTargetings from './update-targetings';\nimport { ALLOWED_BLOCK_TYPES } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\n\nconst checkCanInjectBanner = (maxRepetitions, total) => {\n if (!maxRepetitions) return true;\n return total < maxRepetitions;\n};\n\nconst injectTextblockBanners = ({ componentName, parsedTextBlock, bannerContext }) => {\n const {\n bannerCounters,\n banners,\n siblings,\n pbOptions,\n bannerPositionCounter,\n blockTracker\n } = bannerContext;\n const [collidedWithPrevious, collidedWithNext] = getCollisions(componentName, siblings);\n const updatedBlock = [];\n const { length: blocksLength } = parsedTextBlock;\n\n parsedTextBlock.forEach((block, blockIndex) => {\n const { type, props: { children: paragraphContent } = {} } = block;\n let hasBanner = false;\n const shouldCount = ALLOWED_BLOCK_TYPES.includes(type);\n if (!paragraphContent || typeof type !== 'string') {\n return addBlock(block, blockTracker, updatedBlock);\n }\n\n banners.forEach(banner => {\n const { name, settings, type: typeToCheck } = banner;\n const { repeatEvery, maxRepetitions } = settings;\n\n const { total, paragraphCounter, insertionPoint } = bannerCounters[name];\n const canInsertAfterPreviousBlock =\n !blockTracker.lastBlockType || ALLOWED_BLOCK_TYPES.includes(blockTracker.lastBlockType);\n\n const hasCollided =\n !canInsertAfterPreviousBlock ||\n checkIfHasCollided(blockIndex, blocksLength, collidedWithPrevious, collidedWithNext);\n const canInjectBanner = checkCanInjectBanner(maxRepetitions, total);\n\n if (canInjectBanner && paragraphCounter === insertionPoint) {\n if (hasBanner || hasCollided) {\n bannerCounters[name].insertionPoint += 1;\n bannerCounters[name].paragraphCounter += 1;\n return;\n }\n\n const bannerWithTargetings = repeatEvery\n ? updateTargetings(banner, bannerPositionCounter.counter)\n : banner;\n const bannerKey = `${bannerWithTargetings.settings.targetings}-${paragraphCounter}`;\n const updatedBanner = {\n ...pbOptions,\n ...bannerWithTargetings.settings,\n name\n };\n updatedBlock.push(<Banner key={bannerKey} {...updatedBanner} />);\n bannerCounters[name].insertionPoint += repeatEvery;\n bannerCounters[name].total += 1;\n hasBanner = true;\n if (repeatEvery && typeToCheck === PB_TYPE_BANNER) bannerPositionCounter.counter += 1;\n }\n\n bannerCounters[name].paragraphCounter += shouldCount ? 1 : 0;\n });\n\n return addBlock(block, blockTracker, updatedBlock);\n });\n\n return updatedBlock;\n};\n\nconst addBlock = (block, blockTracker, updatedBlock) => {\n // eslint-disable-next-line no-param-reassign\n if (block.type) blockTracker.lastBlockType = block.type;\n return updatedBlock.push(block);\n};\n\nexport default injectTextblockBanners;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAA6C,SAAAM,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAE7C,IAAMoB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,cAAc,EAAEC,KAAK,EAAK;EACtD,IAAI,CAACD,cAAc,EAAE,OAAO,IAAI;EAChC,OAAOC,KAAK,GAAGD,cAAc;AAC/B,CAAC;AAED,IAAME,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAAC,IAAA,EAA0D;EAAA,IAApDC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IAAEC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAAEC,aAAa,GAAAH,IAAA,CAAbG,aAAa;EAC7E,IACEC,cAAc,GAMZD,aAAa,CANfC,cAAc;IACdC,OAAO,GAKLF,aAAa,CALfE,OAAO;IACPC,QAAQ,GAINH,aAAa,CAJfG,QAAQ;IACRC,SAAS,GAGPJ,aAAa,CAHfI,SAAS;IACTC,qBAAqB,GAEnBL,aAAa,CAFfK,qBAAqB;IACrBC,YAAY,GACVN,aAAa,CADfM,YAAY;EAEd,IAAAC,cAAA,GAAiD,IAAAC,8BAAa,EAACV,aAAa,EAAEK,QAAQ,CAAC;IAAAM,eAAA,OAAAC,eAAA,aAAAH,cAAA;IAAhFI,oBAAoB,GAAAF,eAAA;IAAEG,gBAAgB,GAAAH,eAAA;EAC7C,IAAMI,YAAY,GAAG,EAAE;EACvB,IAAgBC,YAAY,GAAKf,eAAe,CAAxCZ,MAAM;EAEdY,eAAe,CAACX,OAAO,CAAC,UAAC2B,KAAK,EAAEC,UAAU,EAAK;IAC7C,IAAQC,IAAI,GAAiDF,KAAK,CAA1DE,IAAI;MAAAC,YAAA,GAAiDH,KAAK,CAApDI,KAAK;MAAAC,aAAA,GAAAF,YAAA,cAAmC,CAAC,CAAC,GAAAA,YAAA;MAAvBG,gBAAgB,GAAAD,aAAA,CAA1BE,QAAQ;IAC/B,IAAIC,SAAS,GAAG,KAAK;IACrB,IAAMC,WAAW,GAAGC,8BAAmB,CAACC,QAAQ,CAACT,IAAI,CAAC;IACtD,IAAI,CAACI,gBAAgB,IAAI,OAAOJ,IAAI,KAAK,QAAQ,EAAE;MACjD,OAAOU,QAAQ,CAACZ,KAAK,EAAET,YAAY,EAAEO,YAAY,CAAC;IACpD;IAEAX,OAAO,CAACd,OAAO,CAAC,UAAAwC,MAAM,EAAI;MACxB,IAAQC,IAAI,GAAkCD,MAAM,CAA5CC,IAAI;QAAEC,QAAQ,GAAwBF,MAAM,CAAtCE,QAAQ;QAAQC,WAAW,GAAKH,MAAM,CAA5BX,IAAI;MAC5B,IAAQe,WAAW,GAAqBF,QAAQ,CAAxCE,WAAW;QAAEtC,cAAc,GAAKoC,QAAQ,CAA3BpC,cAAc;MAEnC,IAAAuC,oBAAA,GAAoDhC,cAAc,CAAC4B,IAAI,CAAC;QAAhElC,KAAK,GAAAsC,oBAAA,CAALtC,KAAK;QAAEuC,gBAAgB,GAAAD,oBAAA,CAAhBC,gBAAgB;QAAEC,cAAc,GAAAF,oBAAA,CAAdE,cAAc;MAC/C,IAAMC,2BAA2B,GAC/B,CAAC9B,YAAY,CAAC+B,aAAa,IAAIZ,8BAAmB,CAACC,QAAQ,CAACpB,YAAY,CAAC+B,aAAa,CAAC;MAEzF,IAAMC,WAAW,GACf,CAACF,2BAA2B,IAC5B,IAAAG,mCAAkB,EAACvB,UAAU,EAAEF,YAAY,EAAEH,oBAAoB,EAAEC,gBAAgB,CAAC;MACtF,IAAM4B,eAAe,GAAG/C,oBAAoB,CAACC,cAAc,EAAEC,KAAK,CAAC;MAEnE,IAAI6C,eAAe,IAAIN,gBAAgB,KAAKC,cAAc,EAAE;QAC1D,IAAIZ,SAAS,IAAIe,WAAW,EAAE;UAC5BrC,cAAc,CAAC4B,IAAI,CAAC,CAACM,cAAc,IAAI,CAAC;UACxClC,cAAc,CAAC4B,IAAI,CAAC,CAACK,gBAAgB,IAAI,CAAC;UAC1C;QACF;QAEA,IAAMO,oBAAoB,GAAGT,WAAW,GACpC,IAAAU,4BAAgB,EAACd,MAAM,EAAEvB,qBAAqB,CAACsC,OAAO,CAAC,GACvDf,MAAM;QACV,IAAMgB,SAAS,MAAAC,MAAA,CAAMJ,oBAAoB,CAACX,QAAQ,CAACgB,UAAU,OAAAD,MAAA,CAAIX,gBAAgB,CAAE;QACnF,IAAMa,aAAa,GAAA9D,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACdmB,SAAS,GACTqC,oBAAoB,CAACX,QAAQ;UAChCD,IAAI,EAAJA;QAAI,EACL;QACDhB,YAAY,CAAC9B,IAAI,eAACnB,MAAA,YAAAoF,aAAA,CAACjF,OAAA,WAAM,MAAAkF,SAAA;UAACC,GAAG,EAAEN;QAAU,GAAKG,aAAa,CAAG,CAAC,CAAC;QAChE9C,cAAc,CAAC4B,IAAI,CAAC,CAACM,cAAc,IAAIH,WAAW;QAClD/B,cAAc,CAAC4B,IAAI,CAAC,CAAClC,KAAK,IAAI,CAAC;QAC/B4B,SAAS,GAAG,IAAI;QAChB,IAAIS,WAAW,IAAID,WAAW,KAAKoB,0BAAc,EAAE9C,qBAAqB,CAACsC,OAAO,IAAI,CAAC;MACvF;MAEA1C,cAAc,CAAC4B,IAAI,CAAC,CAACK,gBAAgB,IAAIV,WAAW,GAAG,CAAC,GAAG,CAAC;IAC9D,CAAC,CAAC;IAEF,OAAOG,QAAQ,CAACZ,KAAK,EAAET,YAAY,EAAEO,YAAY,CAAC;EACpD,CAAC,CAAC;EAEF,OAAOA,YAAY;AACrB,CAAC;AAED,IAAMc,QAAQ,GAAG,SAAXA,QAAQA,CAAIZ,KAAK,EAAET,YAAY,EAAEO,YAAY,EAAK;EACtD;EACA,IAAIE,KAAK,CAACE,IAAI,EAAEX,YAAY,CAAC+B,aAAa,GAAGtB,KAAK,CAACE,IAAI;EACvD,OAAOJ,YAAY,CAAC9B,IAAI,CAACgC,KAAK,CAAC;AACjC,CAAC;AAAC,IAAAqC,QAAA,GAAAC,OAAA,cAEazD,sBAAsB"}
1
+ {"version":3,"file":"inject-textblock-banners.js","names":["_react","_interopRequireDefault","require","_checkCollisions","_updateTargetings","_constants","_constants2","_getComponent","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","checkCanInjectBanner","maxRepetitions","total","injectTextblockBanners","_ref","componentName","parsedTextBlock","bannerContext","bannerCounters","banners","siblings","pbOptions","bannerPositionCounter","blockTracker","_getCollisions","getCollisions","_getCollisions2","_slicedToArray2","collidedWithPrevious","collidedWithNext","updatedBlock","blocksLength","block","blockIndex","type","_block$props","props","_block$props2","paragraphContent","children","hasBanner","shouldCount","ALLOWED_BLOCK_TYPES","includes","addBlock","banner","name","settings","typeToCheck","repeatEvery","_bannerCounters$name","paragraphCounter","insertionPoint","canInsertAfterPreviousBlock","lastBlockType","hasCollided","checkIfHasCollided","canInjectBanner","bannerWithTargetings","updateTargetings","counter","bannerKey","concat","targetings","updatedBanner","Component","getComponent","createElement","_extends2","key","PB_TYPE_BANNER","_default","exports"],"sources":["../../../src/hooks/helpers/inject-textblock-banners.js"],"sourcesContent":["import React from 'react';\nimport { getCollisions, checkIfHasCollided } from './check-collisions';\nimport updateTargetings from './update-targetings';\nimport { ALLOWED_BLOCK_TYPES } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\nimport getComponent from './getComponent';\n\nconst checkCanInjectBanner = (maxRepetitions, total) => {\n if (!maxRepetitions) return true;\n return total < maxRepetitions;\n};\n\nconst injectTextblockBanners = ({ componentName, parsedTextBlock, bannerContext }) => {\n const {\n bannerCounters,\n banners,\n siblings,\n pbOptions,\n bannerPositionCounter,\n blockTracker\n } = bannerContext;\n const [collidedWithPrevious, collidedWithNext] = getCollisions(componentName, siblings);\n const updatedBlock = [];\n const { length: blocksLength } = parsedTextBlock;\n\n parsedTextBlock.forEach((block, blockIndex) => {\n const { type, props: { children: paragraphContent } = {} } = block;\n let hasBanner = false;\n const shouldCount = ALLOWED_BLOCK_TYPES.includes(type);\n if (!paragraphContent || typeof type !== 'string') {\n return addBlock(block, blockTracker, updatedBlock);\n }\n\n banners.forEach(banner => {\n const { name, settings, type: typeToCheck } = banner;\n const { repeatEvery, maxRepetitions } = settings;\n\n const { total, paragraphCounter, insertionPoint } = bannerCounters[name];\n const canInsertAfterPreviousBlock =\n !blockTracker.lastBlockType || ALLOWED_BLOCK_TYPES.includes(blockTracker.lastBlockType);\n\n const hasCollided =\n !canInsertAfterPreviousBlock ||\n checkIfHasCollided(blockIndex, blocksLength, collidedWithPrevious, collidedWithNext);\n const canInjectBanner = checkCanInjectBanner(maxRepetitions, total);\n\n if (canInjectBanner && paragraphCounter === insertionPoint) {\n if (hasBanner || hasCollided) {\n bannerCounters[name].insertionPoint += 1;\n bannerCounters[name].paragraphCounter += 1;\n return;\n }\n\n const bannerWithTargetings = repeatEvery\n ? updateTargetings(banner, bannerPositionCounter.counter)\n : banner;\n const bannerKey = `${bannerWithTargetings.settings.targetings}-${paragraphCounter}`;\n const updatedBanner = {\n ...pbOptions,\n ...bannerWithTargetings.settings,\n name\n };\n const Component = getComponent(typeToCheck);\n if (Component) updatedBlock.push(<Component key={bannerKey} {...updatedBanner} />);\n\n bannerCounters[name].insertionPoint += repeatEvery;\n bannerCounters[name].total += 1;\n hasBanner = true;\n if (repeatEvery && typeToCheck === PB_TYPE_BANNER) bannerPositionCounter.counter += 1;\n }\n\n bannerCounters[name].paragraphCounter += shouldCount ? 1 : 0;\n });\n\n return addBlock(block, blockTracker, updatedBlock);\n });\n\n return updatedBlock;\n};\n\nconst addBlock = (block, blockTracker, updatedBlock) => {\n // eslint-disable-next-line no-param-reassign\n if (block.type) blockTracker.lastBlockType = block.type;\n return updatedBlock.push(block);\n};\n\nexport default injectTextblockBanners;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildPBComponents.js","names":["React","cloneDeep","GlobalLightbox","RenderComponent","getComponentsToInsertByType","injectElementComponents","StoreImages","getLightboxImages","insertBanners","checkBannerInsertionSet","getBannerIndex","ELEMENT","PB_TYPE_TEXTBLOCK","renderChildComponents","options","items","length","BuildPBComponents","components","rootLevel","isArray","Array","metaTitle","lightboxImages","toggleModal","open","selectedImage","setSelectedImage","parent","name","parentName","resetImages","addImages","concat","setHandlers","imageProps","handleSelectedImage","images","map","image","_objectSpread","createElement","Fragment","onClose","component","hasElementInsertionComponents","elementInsertionComponents","hasTextBlockBanners","textBlockBanners","updatedChildren","filter","settings","insertionType","bannerToInject","bannerIndex","hasComponentItems","childComponents","siblings","key","id"],"sources":["../../../src/hooks/helpers/buildPBComponents.js"],"sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash.clonedeep';\nimport GlobalLightbox from '../../components/Image/GlobalLightbox';\nimport RenderComponent from './RenderComponent';\nimport getComponentsToInsertByType from './get-components-to-insert-by-type';\nimport injectElementComponents from './inject-element-components';\nimport StoreImages from './StoreImages';\nimport getLightboxImages from './get-lightbox-images';\nimport insertBanners from './insert-banners';\nimport checkBannerInsertionSet from './check-banner-insertion-set';\nimport getBannerIndex from './get-banner-index';\nimport { ELEMENT } from '../../constants';\nimport { PB_TYPE_TEXTBLOCK } from './constants';\n\nfunction renderChildComponents(options, items = []) {\n return items && items.length ? BuildPBComponents(items, options) : [];\n}\n\nfunction BuildPBComponents(components, options = {}, rootLevel = false) {\n const isArray = Array.isArray(components);\n if (!isArray) return [];\n\n const {\n metaTitle,\n lightboxImages = [],\n toggleModal,\n open,\n selectedImage,\n setSelectedImage,\n parent,\n name: parentName\n } = options;\n\n if (rootLevel && !open) StoreImages.resetImages();\n\n StoreImages.addImages(getLightboxImages(components).concat(lightboxImages), options);\n StoreImages.setHandlers({ toggleModal, setSelectedImage });\n\n const imageProps = {\n toggleModal: StoreImages.toggleModal,\n handleSelectedImage: StoreImages.handleSelectedImage\n };\n\n const images = StoreImages.images.map(image => ({ ...image, ...imageProps }));\n\n return (\n <>\n {open && (\n <GlobalLightbox\n images={images}\n onClose={StoreImages.toggleModal}\n selectedImage={selectedImage}\n metaTitle={metaTitle}\n parentName={parentName}\n parent={parent}\n />\n )}\n {components.map(component => {\n const { items = [] } = component;\n const [\n hasElementInsertionComponents,\n elementInsertionComponents\n ] = getComponentsToInsertByType(items, ELEMENT);\n\n const [hasTextBlockBanners, textBlockBanners] = getComponentsToInsertByType(\n items,\n PB_TYPE_TEXTBLOCK\n );\n let updatedChildren =\n items &&\n cloneDeep(items).filter(\n ({ settings: { insertionType } = {} }) => insertionType !== PB_TYPE_TEXTBLOCK\n );\n\n if (hasElementInsertionComponents) {\n updatedChildren = injectElementComponents(elementInsertionComponents, updatedChildren);\n } else {\n // TODO: this block is for banner retrocompatibility, once completly migrated remove it as well as all related helpers\n const bannerToInject = checkBannerInsertionSet(updatedChildren);\n const bannerIndex = getBannerIndex(updatedChildren, bannerToInject);\n const hasComponentItems = !!(updatedChildren && updatedChildren.length);\n\n if (hasComponentItems && bannerIndex > -1) {\n updatedChildren = insertBanners(updatedChildren, bannerIndex, bannerToInject);\n }\n }\n\n const childComponents = renderChildComponents(options, updatedChildren);\n\n return (\n <RenderComponent\n component={component}\n siblings={updatedChildren}\n childComponents={childComponents}\n imageProps={imageProps}\n options={{ ...options }}\n images={images}\n key={`${component.id}`}\n hasTextBlockBanners={hasTextBlockBanners}\n textBlockBanners={textBlockBanners}\n />\n );\n })}\n </>\n );\n}\n\nexport default BuildPBComponents;\n"],"mappings":"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"}
1
+ {"version":3,"file":"buildPBComponents.js","names":["React","cloneDeep","GlobalLightbox","RenderComponent","getComponentsToInsertByType","injectElementComponents","StoreImages","getLightboxImages","insertBanners","checkBannerInsertionSet","getBannerIndex","ELEMENT","PB_TYPE_TEXTBLOCK","renderChildComponents","options","items","length","BuildPBComponents","components","rootLevel","isArray","Array","metaTitle","lightboxImages","toggleModal","open","selectedImage","setSelectedImage","parent","name","parentName","resetImages","addImages","concat","setHandlers","imageProps","handleSelectedImage","images","map","image","_objectSpread","createElement","Fragment","onClose","component","hasElementInsertionComponents","elementInsertionComponents","hasTextBlockBanners","textBlockBanners","updatedChildren","filter","settings","insertionType","bannerToInject","bannerIndex","hasComponentItems","childComponents","siblings","key","id"],"sources":["../../../src/hooks/helpers/buildPBComponents.js"],"sourcesContent":["import React from 'react';\nimport cloneDeep from 'lodash.clonedeep';\nimport GlobalLightbox from '../../components/Image/GlobalLightbox';\nimport RenderComponent from './RenderComponent';\nimport getComponentsToInsertByType from './get-components-to-insert-by-type';\nimport injectElementComponents from './inject-element-components';\nimport StoreImages from './StoreImages';\nimport getLightboxImages from './get-lightbox-images';\nimport insertBanners from './insert-banners';\nimport checkBannerInsertionSet from './check-banner-insertion-set';\nimport getBannerIndex from './get-banner-index';\nimport { ELEMENT } from '../../constants';\nimport { PB_TYPE_TEXTBLOCK } from './constants';\n\nfunction renderChildComponents(options, items = []) {\n return items && items.length ? BuildPBComponents(items, options) : [];\n}\n\nfunction BuildPBComponents(components, options = {}, rootLevel = false) {\n const isArray = Array.isArray(components);\n if (!isArray) return [];\n\n const {\n metaTitle,\n lightboxImages = [],\n toggleModal,\n open,\n selectedImage,\n setSelectedImage,\n parent,\n name: parentName\n } = options;\n\n if (rootLevel && !open) StoreImages.resetImages();\n\n StoreImages.addImages(getLightboxImages(components).concat(lightboxImages), options);\n StoreImages.setHandlers({ toggleModal, setSelectedImage });\n\n const imageProps = {\n toggleModal: StoreImages.toggleModal,\n handleSelectedImage: StoreImages.handleSelectedImage\n };\n\n const images = StoreImages.images.map(image => ({ ...image, ...imageProps }));\n\n return (\n <>\n {open && (\n <GlobalLightbox\n images={images}\n onClose={StoreImages.toggleModal}\n selectedImage={selectedImage}\n metaTitle={metaTitle}\n parentName={parentName}\n parent={parent}\n />\n )}\n {components.map(component => {\n const { items = [] } = component;\n const [\n hasElementInsertionComponents,\n elementInsertionComponents\n ] = getComponentsToInsertByType(items, ELEMENT);\n\n const [hasTextBlockBanners, textBlockBanners] = getComponentsToInsertByType(\n items,\n PB_TYPE_TEXTBLOCK\n );\n\n let updatedChildren =\n items &&\n cloneDeep(items).filter(\n ({ settings: { insertionType } = {} }) => insertionType !== PB_TYPE_TEXTBLOCK\n );\n\n if (hasElementInsertionComponents) {\n updatedChildren = injectElementComponents(elementInsertionComponents, updatedChildren);\n } else {\n // TODO: this block is for banner retrocompatibility, once completly migrated remove it as well as all related helpers\n const bannerToInject = checkBannerInsertionSet(updatedChildren);\n const bannerIndex = getBannerIndex(updatedChildren, bannerToInject);\n const hasComponentItems = !!(updatedChildren && updatedChildren.length);\n\n if (hasComponentItems && bannerIndex > -1) {\n updatedChildren = insertBanners(updatedChildren, bannerIndex, bannerToInject);\n }\n }\n\n const childComponents = renderChildComponents(options, updatedChildren);\n\n return (\n <RenderComponent\n component={component}\n siblings={updatedChildren}\n childComponents={childComponents}\n imageProps={imageProps}\n options={{ ...options }}\n images={images}\n key={`${component.id}`}\n hasTextBlockBanners={hasTextBlockBanners}\n textBlockBanners={textBlockBanners}\n />\n );\n })}\n </>\n );\n}\n\nexport default BuildPBComponents;\n"],"mappings":"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"}
@@ -3,11 +3,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  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; }
4
4
  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; }
5
5
  import React from 'react';
6
- import Banner from '../../components/Banner';
7
6
  import { getCollisions, checkIfHasCollided } from './check-collisions';
8
7
  import updateTargetings from './update-targetings';
9
8
  import { ALLOWED_BLOCK_TYPES } from '../../constants';
10
9
  import { PB_TYPE_BANNER } from './constants';
10
+ import getComponent from './getComponent';
11
11
  const checkCanInjectBanner = (maxRepetitions, total) => {
12
12
  if (!maxRepetitions) return true;
13
13
  return total < maxRepetitions;
@@ -71,7 +71,8 @@ const injectTextblockBanners = ({
71
71
  const updatedBanner = _objectSpread(_objectSpread(_objectSpread({}, pbOptions), bannerWithTargetings.settings), {}, {
72
72
  name
73
73
  });
74
- updatedBlock.push( /*#__PURE__*/React.createElement(Banner, _extends({
74
+ const Component = getComponent(typeToCheck);
75
+ if (Component) updatedBlock.push( /*#__PURE__*/React.createElement(Component, _extends({
75
76
  key: bannerKey
76
77
  }, updatedBanner)));
77
78
  bannerCounters[name].insertionPoint += repeatEvery;
@@ -1 +1 @@
1
- {"version":3,"file":"inject-textblock-banners.js","names":["React","Banner","getCollisions","checkIfHasCollided","updateTargetings","ALLOWED_BLOCK_TYPES","PB_TYPE_BANNER","checkCanInjectBanner","maxRepetitions","total","injectTextblockBanners","componentName","parsedTextBlock","bannerContext","bannerCounters","banners","siblings","pbOptions","bannerPositionCounter","blockTracker","collidedWithPrevious","collidedWithNext","updatedBlock","length","blocksLength","forEach","block","blockIndex","type","props","children","paragraphContent","hasBanner","shouldCount","includes","addBlock","banner","name","settings","typeToCheck","repeatEvery","paragraphCounter","insertionPoint","canInsertAfterPreviousBlock","lastBlockType","hasCollided","canInjectBanner","bannerWithTargetings","counter","bannerKey","targetings","updatedBanner","_objectSpread","push","createElement","_extends","key"],"sources":["../../../src/hooks/helpers/inject-textblock-banners.js"],"sourcesContent":["import React from 'react';\nimport Banner from '../../components/Banner';\nimport { getCollisions, checkIfHasCollided } from './check-collisions';\nimport updateTargetings from './update-targetings';\nimport { ALLOWED_BLOCK_TYPES } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\n\nconst checkCanInjectBanner = (maxRepetitions, total) => {\n if (!maxRepetitions) return true;\n return total < maxRepetitions;\n};\n\nconst injectTextblockBanners = ({ componentName, parsedTextBlock, bannerContext }) => {\n const {\n bannerCounters,\n banners,\n siblings,\n pbOptions,\n bannerPositionCounter,\n blockTracker\n } = bannerContext;\n const [collidedWithPrevious, collidedWithNext] = getCollisions(componentName, siblings);\n const updatedBlock = [];\n const { length: blocksLength } = parsedTextBlock;\n\n parsedTextBlock.forEach((block, blockIndex) => {\n const { type, props: { children: paragraphContent } = {} } = block;\n let hasBanner = false;\n const shouldCount = ALLOWED_BLOCK_TYPES.includes(type);\n if (!paragraphContent || typeof type !== 'string') {\n return addBlock(block, blockTracker, updatedBlock);\n }\n\n banners.forEach(banner => {\n const { name, settings, type: typeToCheck } = banner;\n const { repeatEvery, maxRepetitions } = settings;\n\n const { total, paragraphCounter, insertionPoint } = bannerCounters[name];\n const canInsertAfterPreviousBlock =\n !blockTracker.lastBlockType || ALLOWED_BLOCK_TYPES.includes(blockTracker.lastBlockType);\n\n const hasCollided =\n !canInsertAfterPreviousBlock ||\n checkIfHasCollided(blockIndex, blocksLength, collidedWithPrevious, collidedWithNext);\n const canInjectBanner = checkCanInjectBanner(maxRepetitions, total);\n\n if (canInjectBanner && paragraphCounter === insertionPoint) {\n if (hasBanner || hasCollided) {\n bannerCounters[name].insertionPoint += 1;\n bannerCounters[name].paragraphCounter += 1;\n return;\n }\n\n const bannerWithTargetings = repeatEvery\n ? updateTargetings(banner, bannerPositionCounter.counter)\n : banner;\n const bannerKey = `${bannerWithTargetings.settings.targetings}-${paragraphCounter}`;\n const updatedBanner = {\n ...pbOptions,\n ...bannerWithTargetings.settings,\n name\n };\n updatedBlock.push(<Banner key={bannerKey} {...updatedBanner} />);\n bannerCounters[name].insertionPoint += repeatEvery;\n bannerCounters[name].total += 1;\n hasBanner = true;\n if (repeatEvery && typeToCheck === PB_TYPE_BANNER) bannerPositionCounter.counter += 1;\n }\n\n bannerCounters[name].paragraphCounter += shouldCount ? 1 : 0;\n });\n\n return addBlock(block, blockTracker, updatedBlock);\n });\n\n return updatedBlock;\n};\n\nconst addBlock = (block, blockTracker, updatedBlock) => {\n // eslint-disable-next-line no-param-reassign\n if (block.type) blockTracker.lastBlockType = block.type;\n return updatedBlock.push(block);\n};\n\nexport default injectTextblockBanners;\n"],"mappings":"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"}
1
+ {"version":3,"file":"inject-textblock-banners.js","names":["React","getCollisions","checkIfHasCollided","updateTargetings","ALLOWED_BLOCK_TYPES","PB_TYPE_BANNER","getComponent","checkCanInjectBanner","maxRepetitions","total","injectTextblockBanners","componentName","parsedTextBlock","bannerContext","bannerCounters","banners","siblings","pbOptions","bannerPositionCounter","blockTracker","collidedWithPrevious","collidedWithNext","updatedBlock","length","blocksLength","forEach","block","blockIndex","type","props","children","paragraphContent","hasBanner","shouldCount","includes","addBlock","banner","name","settings","typeToCheck","repeatEvery","paragraphCounter","insertionPoint","canInsertAfterPreviousBlock","lastBlockType","hasCollided","canInjectBanner","bannerWithTargetings","counter","bannerKey","targetings","updatedBanner","_objectSpread","Component","push","createElement","_extends","key"],"sources":["../../../src/hooks/helpers/inject-textblock-banners.js"],"sourcesContent":["import React from 'react';\nimport { getCollisions, checkIfHasCollided } from './check-collisions';\nimport updateTargetings from './update-targetings';\nimport { ALLOWED_BLOCK_TYPES } from '../../constants';\nimport { PB_TYPE_BANNER } from './constants';\nimport getComponent from './getComponent';\n\nconst checkCanInjectBanner = (maxRepetitions, total) => {\n if (!maxRepetitions) return true;\n return total < maxRepetitions;\n};\n\nconst injectTextblockBanners = ({ componentName, parsedTextBlock, bannerContext }) => {\n const {\n bannerCounters,\n banners,\n siblings,\n pbOptions,\n bannerPositionCounter,\n blockTracker\n } = bannerContext;\n const [collidedWithPrevious, collidedWithNext] = getCollisions(componentName, siblings);\n const updatedBlock = [];\n const { length: blocksLength } = parsedTextBlock;\n\n parsedTextBlock.forEach((block, blockIndex) => {\n const { type, props: { children: paragraphContent } = {} } = block;\n let hasBanner = false;\n const shouldCount = ALLOWED_BLOCK_TYPES.includes(type);\n if (!paragraphContent || typeof type !== 'string') {\n return addBlock(block, blockTracker, updatedBlock);\n }\n\n banners.forEach(banner => {\n const { name, settings, type: typeToCheck } = banner;\n const { repeatEvery, maxRepetitions } = settings;\n\n const { total, paragraphCounter, insertionPoint } = bannerCounters[name];\n const canInsertAfterPreviousBlock =\n !blockTracker.lastBlockType || ALLOWED_BLOCK_TYPES.includes(blockTracker.lastBlockType);\n\n const hasCollided =\n !canInsertAfterPreviousBlock ||\n checkIfHasCollided(blockIndex, blocksLength, collidedWithPrevious, collidedWithNext);\n const canInjectBanner = checkCanInjectBanner(maxRepetitions, total);\n\n if (canInjectBanner && paragraphCounter === insertionPoint) {\n if (hasBanner || hasCollided) {\n bannerCounters[name].insertionPoint += 1;\n bannerCounters[name].paragraphCounter += 1;\n return;\n }\n\n const bannerWithTargetings = repeatEvery\n ? updateTargetings(banner, bannerPositionCounter.counter)\n : banner;\n const bannerKey = `${bannerWithTargetings.settings.targetings}-${paragraphCounter}`;\n const updatedBanner = {\n ...pbOptions,\n ...bannerWithTargetings.settings,\n name\n };\n const Component = getComponent(typeToCheck);\n if (Component) updatedBlock.push(<Component key={bannerKey} {...updatedBanner} />);\n\n bannerCounters[name].insertionPoint += repeatEvery;\n bannerCounters[name].total += 1;\n hasBanner = true;\n if (repeatEvery && typeToCheck === PB_TYPE_BANNER) bannerPositionCounter.counter += 1;\n }\n\n bannerCounters[name].paragraphCounter += shouldCount ? 1 : 0;\n });\n\n return addBlock(block, blockTracker, updatedBlock);\n });\n\n return updatedBlock;\n};\n\nconst addBlock = (block, blockTracker, updatedBlock) => {\n // eslint-disable-next-line no-param-reassign\n if (block.type) blockTracker.lastBlockType = block.type;\n return updatedBlock.push(block);\n};\n\nexport default injectTextblockBanners;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/react-page-builder",
3
- "version": "0.142.0-alpha.0",
3
+ "version": "0.142.0-alpha.1",
4
4
  "description": "Blaze react page builder",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -89,5 +89,5 @@
89
89
  "lib/*",
90
90
  "lib-es/*"
91
91
  ],
92
- "gitHead": "a8c8a5250ea81ce37cbb8864089c2cc157586135"
92
+ "gitHead": "cef72c36aa86ab85f2baa709ff5b8f2e9f37c651"
93
93
  }
@@ -66,6 +66,7 @@ function BuildPBComponents(components, options = {}, rootLevel = false) {
66
66
  items,
67
67
  PB_TYPE_TEXTBLOCK
68
68
  );
69
+
69
70
  let updatedChildren =
70
71
  items &&
71
72
  cloneDeep(items).filter(
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import Banner from '../../components/Banner';
3
2
  import { getCollisions, checkIfHasCollided } from './check-collisions';
4
3
  import updateTargetings from './update-targetings';
5
4
  import { ALLOWED_BLOCK_TYPES } from '../../constants';
6
5
  import { PB_TYPE_BANNER } from './constants';
6
+ import getComponent from './getComponent';
7
7
 
8
8
  const checkCanInjectBanner = (maxRepetitions, total) => {
9
9
  if (!maxRepetitions) return true;
@@ -60,7 +60,9 @@ const injectTextblockBanners = ({ componentName, parsedTextBlock, bannerContext
60
60
  ...bannerWithTargetings.settings,
61
61
  name
62
62
  };
63
- updatedBlock.push(<Banner key={bannerKey} {...updatedBanner} />);
63
+ const Component = getComponent(typeToCheck);
64
+ if (Component) updatedBlock.push(<Component key={bannerKey} {...updatedBanner} />);
65
+
64
66
  bannerCounters[name].insertionPoint += repeatEvery;
65
67
  bannerCounters[name].total += 1;
66
68
  hasBanner = true;
@@ -2,6 +2,8 @@ import '@testing-library/jest-dom/extend-expect';
2
2
  import injectTextblockBanners from '../../../../../src/hooks/helpers/inject-textblock-banners';
3
3
  import setInitialBannerCounters from '../../../../../src/BannerContext/helpers/set-initial-banner-counters';
4
4
 
5
+ jest.mock('../../../../../src/hooks/helpers/getComponent', () => jest.fn(() => 'Banner'));
6
+
5
7
  const mockedBanner = {
6
8
  name: 'testBanner',
7
9
  type: 'banner',