react-prebid-adunit
Version:
React Component to wrap AdUnit elements using a Prebid.js container
1 lines • 5.99 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){function a(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{!d&&h["return"]&&h["return"]()}finally{if(e)throw f}}return c}return function(b,c){if(Array.isArray(b))return b;if(Symbol.iterator in Object(b))return a(b,c);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function a(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),_react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_nautilusjs=require("nautilusjs"),_lodash=require("lodash.isundefined"),_lodash2=_interopRequireDefault(_lodash),_lodash3=require("lodash.omitby"),_lodash4=_interopRequireDefault(_lodash3);function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return b&&("object"==typeof b||"function"==typeof b)?b:a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}var DEFAULT_PREBID_URL="https://acdn.adnxs.com/prebid/not-for-prod/1/prebid.js",DEFAULT_ADSERVER_TIMEOUT=1e3,propTypes={"data-testid":_propTypes2.default.string,domID:_propTypes2.default.string.isRequired,bids:_propTypes2.default.arrayOf(_propTypes2.default.shape({bidder:_propTypes2.default.string.isRequired,params:_propTypes2.default.object.isRequired})),dimensions:_propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.number)).isRequired,className:_propTypes2.default.string,skipIf:_propTypes2.default.func,prebidLibURL:_propTypes2.default.string,bidderAliases:_propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.string)),bidderTimeout:_propTypes2.default.number,currency:_propTypes2.default.shape({adServerCurrency:_propTypes2.default.string,granularityMultiplier:_propTypes2.default.number,conversionRateFile:_propTypes2.default.string,rates:_propTypes2.default.object,bidderCurrencyDefault:_propTypes2.default.object}),debug:_propTypes2.default.bool,priceGranularity:_propTypes2.default.oneOfType([_propTypes2.default.oneOf(["low","medium","high","auto","dense"]),_propTypes2.default.shape({buckets:_propTypes2.default.arrayOf(_propTypes2.default.shape({min:_propTypes2.default.number,max:_propTypes2.default.number,increment:_propTypes2.default.number,precision:_propTypes2.default.number}))})])},defaultProps={skipIf:function(){return!1},bids:[],prebidLibURL:DEFAULT_PREBID_URL,bidderAliases:[],bidderTimeout:DEFAULT_ADSERVER_TIMEOUT,debug:"development"===process.env.NODE_ENV},PrebidContainer=function(a){function b(a){_classCallCheck(this,b);var c=_possibleConstructorReturn(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a));return c.configure=c.configure.bind(c),c.requestBids=c.requestBids.bind(c),c.sendAdserverRequest=c.sendAdserverRequest.bind(c),c}return _inherits(b,a),_createClass(b,null,[{key:"propTypes",get:function(){return propTypes}},{key:"defaultProps",get:function(){return defaultProps}}]),_createClass(b,[{key:"configure",value:function(){var a=this.props,b=a.bidderAliases,c=a.bidderTimeout,d=a.currency,e=a.debug,f=a.priceGranularity;b.forEach(function(a){var b=_slicedToArray(a,2),c=b[0],d=b[1];pbjs.aliasBidder(c,d)});var g=(0,_lodash4.default)({bidderTimeout:c,currency:d,debug:e,priceGranularity:f},_lodash2.default);pbjs.setConfig(g)}},{key:"componentDidMount",value:function(){var a=this.props,b=a.skipIf,c=a.prebidLibURL;b()||(this.adServerInit(),!window.pbjs&&(window.pbjs={que:[this.configure]},window.pbjs__slots=[],(0,_nautilusjs.nautilus)([c,this.adServerURL()])),this.defineSlot())}},{key:"adServerInit",value:function(){throw new Error("AdServer initiation is not implemented")}},{key:"adServerType",value:function(){throw new Error("AdServer type is not implemented")}},{key:"adServerURL",value:function(){throw new Error("AdServer URL is not implemented")}},{key:"adServerRequest",value:function(){throw new Error("AdServer request is not implemented")}},{key:"adServerSlot",value:function(){throw new Error("AdServer slot is not implemented")}},{key:"sendAdserverRequest",value:function(){var a=window,b=a.pbjs;b.adserverRequestSent||(b.adserverRequestSent=!0,this.adServerRequest())}},{key:"afterAdServerRequest",value:function(){var a=window,b=a.pbjs;return new Promise(function(a){b.que.push(function(){b.setTargetingForGPTAsync(),a()})})}},{key:"requestBids",value:function(){var a=this,b=window,c=b.pbjs;c.que.push(function(){c.requestBids({bidsBackHandler:a.sendAdserverRequest})})}},{key:"defineSlot",value:function(){var a=this,b=window,c=b.pbjs,d=b.pbjs__slots,e=this.props,f=e.dimensions,g=e.bids,h=e.domID;c.que.push(function(){if(!(-1<d.indexOf(h))){d.push(h);var b=document.querySelectorAll("[data-prebid-adspot="+a.adServerType()+"]"),e=b.length===d.length;c.addAdUnits([{code:h,mediaTypes:{banner:{sizes:f}},bids:g}]),a.adServerSlot(e,a.requestBids)}})}},{key:"render",value:function(){var a=this.props,b=a.className,c=a.domID,d=a["data-testid"];return _react2.default.createElement("div",{id:c,className:("adspot "+(b||"")).trim(),"data-prebid-adspot":this.adServerType(),"data-testid":d})}}]),b}(_react.Component);exports.default=PrebidContainer,module.exports=exports["default"];