UNPKG

@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
"use strict"; 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;