Repository URL to install this package:
|
Version:
0.2.4 ▾
|
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _injectScriptAsync = require('./injectScriptAsync');
var _injectScriptAsync2 = _interopRequireDefault(_injectScriptAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var exec = function exec(fn) {
var _window = window,
googletag = _window.googletag;
if (googletag && googletag.apiReady) {
return fn(googletag);
} else if (googletag && googletag.cmd) {
googletag.cmd.push(function () {
fn(googletag);
});
}
};
var slotRenderEndedListeners = {};
var registerListeners = function registerListeners() {
exec(function (googletag) {
googletag.pubads().addEventListener('slotRenderEnded', function (event) {
var slotElementId = event.slot.getSlotElementId();
var listeners = slotRenderEndedListeners[slotElementId];
if (listeners) {
listeners.forEach(function (listener) {
listener(event);
});
}
});
});
};
var addSlotRenderEndedListener = function addSlotRenderEndedListener(slotElementId, listener) {
slotRenderEndedListeners = _extends({}, slotRenderEndedListeners, _defineProperty({}, slotElementId, [].concat(_toConsumableArray(slotRenderEndedListeners[slotElementId]), [listener])));
// return removal callback
return function () {
slotRenderEndedListeners = _extends({}, slotRenderEndedListeners, _defineProperty({}, slotElementId, slotRenderEndedListeners[slotElementId].filter(function (l) {
return l !== listener;
})));
};
};
var configureLibrary = function configureLibrary() {
exec(function (googletag) {
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs(true);
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
};
var loadLibrary = function loadLibrary() {
return new Promise(function (resolve, reject) {
if (window.googletag && window.googletag.cmd) {
resolve(window.googletag);
} else {
window.googletag = window.googletag || {};
window.googletag.cmd = window.googletag.cmd || [];
(0, _injectScriptAsync2.default)('https://www.googletagservices.com/tag/js/gpt.js').then(function () {
exec(function () {
resolve(window.googletag);
});
}).catch(function () {
return reject();
});
}
});
};
var initialize = function initialize() {
return loadLibrary().then(function () {
registerListeners();
configureLibrary();
});
};
var getSlots = function getSlots() {
return exec(function (googletag) {
return googletag.pubads().getSlots();
}) || [];
};
var isSlotDefined = function isSlotDefined(id) {
return getSlots().filter(function (slot) {
return id === slot.getSlotElementId().length === 0;
}).length > 0 || false;
};
var defineSlot = function defineSlot(_ref) {
var id = _ref.id,
adUnitPath = _ref.adUnitPath,
sizeMapping = _ref.sizeMapping;
if (id && adUnitPath && sizeMapping) {
exec(function (googletag) {
var size = sizeMapping.reduce(function (builder, mapping) {
return builder.addSize(mapping.viewport, mapping.sizes);
}, googletag.sizeMapping()).build();
if (!isSlotDefined(id)) {
googletag.defineSlot(adUnitPath, [0, 0], id).defineSizeMapping(size).addService(googletag.pubads());
}
});
}
};
var destroySlot = function destroySlot(id) {
exec(function (googletag) {
var slot = googletag.pubads().getSlots().find(function (slots) {
return slots.getSlotElementId() === id;
});
googletag.destroySlots([slot]);
});
};
var destroySlots = function destroySlots() {
exec(function (googletag) {
googletag.destroySlots();
});
};
var setAdsense = function setAdsense(config) {
exec(function (googletag) {
Object.keys(config).forEach(function (key) {
googletag.pubads().set(key, config[key]);
});
});
};
var setTargeting = function setTargeting(targeting) {
exec(function (googletag) {
Object.keys(targeting).forEach(function (key) {
googletag.pubads().setTargeting(key, targeting[key]);
});
});
};
var waitForPubadsReady = function waitForPubadsReady(googletag, callback) {
if (!googletag.pubadsReady) {
setTimeout(waitForPubadsReady.bind(null, googletag, callback), 50);
} else {
callback();
}
};
var refreshSlots = function refreshSlots(slotElementIds) {
exec(function (googletag) {
var slots = googletag.pubads().getSlots();
var slotsToBeRefreshed = slots.filter(function (slot) {
return slotElementIds.indexOf(slot.getSlotElementId()) >= 0;
});
if (slotsToBeRefreshed.length > 0) {
slotsToBeRefreshed.forEach(function (slot) {
return googletag.display(slot.getSlotElementId());
});
new Promise(function (resolve) {
return waitForPubadsReady(googletag, resolve);
}).then(function () {
googletag.pubads().refresh(slotsToBeRefreshed);
});
}
});
};
exports.default = {
initialize: initialize,
defineSlot: defineSlot,
destroySlot: destroySlot,
destroySlots: destroySlots,
setAdsense: setAdsense,
setTargeting: setTargeting,
refreshSlots: refreshSlots,
addSlotRenderEndedListener: addSlotRenderEndedListener,
isSlotDefined: isSlotDefined,
getSlots: getSlots
};