@financial-times/o-ads
Version:
This package contains the core functionality used by the FT in providing ads across all of its sites. This includes ft.com, howtospendit.com, ftadviser.com and other specialist titles.
76 lines (56 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCurrent = getCurrent;
exports.default = init;
exports.setThrottleInterval = void 0;
var _index = _interopRequireDefault(require("./index.js"));
var _oViewport = _interopRequireDefault(require("@financial-times/o-viewport"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var callback;
var breakpoints;
var current;
function getNearestBreakpoint() {
var winner;
var dims = _oViewport.default.getSize(true);
function findCurrentBreakpoint(breakpoint) {
var breakpointDims = breakpoints[breakpoint];
if (dims.width >= breakpointDims[0] && dims.height >= breakpointDims[1]) {
if (!winner || breakpointDims[0] >= breakpoints[winner][0]) {
winner = breakpoint;
}
}
}
Object.keys(breakpoints).forEach(findCurrentBreakpoint);
return winner;
}
function fire() {
var winner = getNearestBreakpoint();
if (current !== winner) {
setCurrent(winner);
callback(winner);
}
}
function setCurrent(name) {
current = name;
}
function getCurrent() {
return current;
}
function init(brps, cb) {
if (!_index.default.isFunction(cb)) {
// must have a call back function
return false;
}
breakpoints = brps;
callback = cb;
setCurrent(getNearestBreakpoint());
document.body.addEventListener('oViewport.orientation', fire);
document.body.addEventListener('oViewport.resize', fire);
_oViewport.default.listenTo('orientation');
_oViewport.default.listenTo('resize');
return getCurrent();
}
var setThrottleInterval = _oViewport.default.setThrottleInterval;
exports.setThrottleInterval = setThrottleInterval;