Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/advertising / state / saga / urbanMedia.js
Size: Mime:
'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
};