Repository URL to install this package:
|
Version:
0.1.2 ▾
|
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var cmd = [];
var exec = function exec(fn) {
if (self.googletag && self.googletag.apiReady) {
fn(self.googletag);
} else if (self.googletag && self.googletag.cmd) {
self.googletag.cmd.push(function () {
fn(self.googletag);
});
} else {
cmd.push(function () {
fn(self.googletag);
});
}
};
var registered = false;
var registerListeners = function registerListeners() {
if (!registered) {
self.googletag.pubads().addEventListener('slotRenderEnded', function (event) {});
}
};
var configured = false;
var configureLibrary = function configureLibrary() {
if (!configured) {
var lib = self.googletag;
lib.pubads().enableSingleRequest();
lib.pubads().collapseEmptyDivs(true);
lib.pubads().disableInitialLoad();
lib.enableServices();
}
};
var disable = function disable() {
console.log('disabling ads');
if (configured) {
self.googletag.destroySlots();
}
};
var loadLibrary = function loadLibrary() {
return new Promise(function (resolve, reject) {
if (self.googletag) {
resolve(self.googletag);
} else {
self.googletag = self.googletag || {};
self.googletag.cmd = self.googletag.cmd || [];
var script = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
script.async = true;
script.src = 'https://www.googletagservices.com/tag/js/gpt.js';
script.onload = function () {
self.googletag.cmd.push(resolve);
};
script.onerror = reject;
head.appendChild(script);
}
});
};
var init = function init() {
return loadLibrary().then(function () {
registerListeners();
configureLibrary();
}).catch(function () {
console.log('loadLibrary failed');
});
};
var defineSlot = function defineSlot(_ref) {
var id = _ref.id,
adUnitPath = _ref.adUnitPath,
sizeMapping = _ref.sizeMapping;
if (id && adUnitPath && sizeMapping) {
exec(function (lib) {
console.log('[ads] define slot ' + id);
var size = sizeMapping.reduce(function (builder, mapping) {
return builder.addSize(mapping.viewport, mapping.sizes);
}, lib.sizeMapping()).build();
if (lib.pubads().getSlots().filter(function (slot) {
return slot.getSlotElementId() === id;
}).length === 0) lib.defineSlot(adUnitPath, [0, 0], id).addService(lib.pubads()).defineSizeMapping(size);
});
}
};
var destroySlot = function destroySlot(id) {
console.log('[ads] destroy slot ' + id);
exec(function (lib) {
lib.destroySlots([id]);
});
};
var refreshSlot = function refreshSlot(id) {
console.log('[ads] refresh slot ' + id);
};
var setTargeting = function setTargeting() {
exec(function (lib) {
lib.pubads().set('adsense_keywords', 'any');
lib.pubads().set('adsense_keyword_type', 'broad');
lib.pubads().set('page_url', 'https://doodle.com');
lib.pubads().setTargeting('dcats', 'any');
lib.pubads().setTargeting('dcategory', 'any');
lib.pubads().setTargeting('dlanguage', 'en');
lib.pubads().setTargeting('dcountry', 'GB');
lib.pubads().setTargeting('dplacement', 'poll');
});
};
var refresh = function refresh() {
return init().then(function () {
console.log('[ads] initialised');
var lib = self.googletag;
cmd.push(function () {
console.log('[ads] render');
var slots = lib.pubads().getSlots();
slots.forEach(function (slot) {
return lib.display(slot.getSlotElementId());
});
setTargeting();
lib.pubads().refresh();
});
cmd.splice(0, cmd.length).forEach(function (c) {
return lib.cmd.push(c);
});
});
};
exports.default = {
init: init,
disable: disable,
defineSlot: defineSlot,
destroySlot: destroySlot,
refreshSlot: refreshSlot,
refresh: refresh,
setTargeting: setTargeting
};