UNPKG

@cerebral/useragent

Version:
119 lines (90 loc) 3.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _cerebral = require('cerebral'); var _raf = require('raf'); var _raf2 = _interopRequireDefault(_raf); var _getFeatures = require('./getFeatures'); var _getFeatures2 = _interopRequireDefault(_getFeatures); var _network = require('./network'); var _network2 = _interopRequireDefault(_network); var _parseUserAgent = require('./parseUserAgent'); var _parseUserAgent2 = _interopRequireDefault(_parseUserAgent); var _getMedia = require('./getMedia'); var _getMedia2 = _interopRequireDefault(_getMedia); var _getWindowSpec = require('./getWindowSpec'); var _getWindowSpec2 = _interopRequireDefault(_getWindowSpec); var _offlineChanged = require('./signalFactories/offlineChanged'); var _offlineChanged2 = _interopRequireDefault(_offlineChanged); var _windowChanged = require('./signalFactories/windowChanged'); var _windowChanged2 = _interopRequireDefault(_windowChanged); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultOptions = { feature: true, offline: { checkOnLoad: false, checks: { xhr: { url: 'https://api.github.com' } }, interceptRequests: true, reconnect: { initialDelay: 3, delay: 1.5 }, requests: false }, parse: { browser: true, device: true }, media: {}, window: true }; exports.default = function () { var userOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var options = Object.assign({}, defaultOptions, userOptions); var state = (0, _parseUserAgent2.default)(options); state.media = (0, _getMedia2.default)(options); state.feature = (0, _getFeatures2.default)(options); state.window = (0, _getWindowSpec2.default)(); state.network = { offline: _network2.default.state === 'down' }; _network2.default.options = options.offline || {}; return (0, _cerebral.Module)(function (_ref) { var controller = _ref.controller, path = _ref.path; controller.on('initialized', function () { var offlineChanged = controller.getSignal(path + '.offlineChanged'); var windowChanged = controller.getSignal(path + '.windowChanged'); if (options.offline !== false) { _network2.default.on('up', function () { controller.getState(path + '.network.offline') && offlineChanged({ offline: false }); }); _network2.default.on('down', function () { !controller.getState(path + '.network.offline') && offlineChanged({ offline: true }); }); _network2.default.check(); } if (options.window !== false) { var updatingSpecs = false; window.addEventListener('resize', function (event) { if (updatingSpecs) return; updatingSpecs = true; (0, _raf2.default)(function () { windowChanged({ windowSpec: (0, _getWindowSpec2.default)(), media: (0, _getMedia2.default)(options) }); updatingSpecs = false; }); }); } }); return { state: state, signals: { offlineChanged: (0, _offlineChanged2.default)(path), windowChanged: (0, _windowChanged2.default)(path) } }; }); }; //# sourceMappingURL=index.js.map