Repository URL to install this package:
|
Version:
0.2.4 ▾
|
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _injectScriptAsync = require('./injectScriptAsync');
var _injectScriptAsync2 = _interopRequireDefault(_injectScriptAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var exec = function exec(fn) {
var _window = window,
urban = _window.urban;
if (urban && urban.int) {
fn(urban);
} else if (urban && urban.cmd) {
urban.cmd.push(function () {
fn(window.urban);
});
}
};
var translateOldSlotId = function translateOldSlotId(oldSlotId) {
switch (oldSlotId) {
case 'div-gpt-ad-1322494907436-2':
return 'd-outside-full-top';
case 'div-gpt-ad-1322494907436-4':
return 'd-outside-right';
case 'div-gpt-ad-1444389854204-0':
return 'd-overlay';
case 'div-gpt-ad-1331663301023-0':
return 'd-outside-left';
case 'div-gpt-ad-1451408806423-0':
return 'd-inside-full-screen';
case 'div-gpt-ad-1478784417464-0':
return 'd-inside-full-pos1';
default:
}
};
var passbackListener = function passbackListener(event) {
var oldSlotId = event.data;
var slotId = translateOldSlotId(oldSlotId);
if (slotId) {
try {
var dfpSlotElement = window.top.document.getElementById(slotId);
var urbanSlotElement = dfpSlotElement.parentNode.querySelector('[id^="urban-"]');
if (urbanSlotElement) {
urbanSlotElement.style.display = 'none';
window.googletag.cmd.push(function () {
var slots = window.googletag.pubads().getSlots();
var slotsToBeRefreshed = slots.filter(function (slot) {
return slot.getSlotElementId() === slotId;
});
// while disableInitialLoad is configured (which may happen on the urban media framework): display does not "display" - only subsequent refresh calls.
window.googletag.display(slotId);
window.googletag.pubads().refresh(slotsToBeRefreshed);
});
}
} catch (error) {
// fail silently
}
}
};
var registerListeners = function registerListeners() {
window.top.addEventListener('message', passbackListener, false);
};
var loadLibrary = function loadLibrary() {
return new Promise(function (resolve, reject) {
if (window.urban) {
resolve(window.urban);
} else {
window.urban = window.urban || {};
window.urban.cmd = window.urban.cmd || [];
window.urban.config = window.urban.confg || [];
Promise.all([(0, _injectScriptAsync2.default)('//ads.urban-media.com/js/19435634/55/doodle.beta.js'), (0, _injectScriptAsync2.default)('//ads.urban-media.com/js/13774210/208/urban.js')]).then(function () {
registerListeners();
exec(function (urban) {
resolve(urban);
});
}).catch(function () {
return reject();
});
}
});
};
var refresh = function refresh() {
var urbanIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
exec(function (urban) {
if (urbanIds.length > 0) {
urbanIds.forEach(function (urbanId) {
return urban.display(urbanId);
});
urban.refresh(urbanIds);
}
});
};
var initialize = function initialize() {
var targeting = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return loadLibrary().then(function () {
exec(function (urban) {
urban.init({
targeting: targeting
});
});
});
};
exports.default = {
initialize: initialize,
refresh: refresh
};