UNPKG

ldx-widgets

Version:

widgets

74 lines (68 loc) 2.08 kB
(function() { var Flux, Global, _; Flux = require('delorean').Flux; _ = require('lodash'); Global = Flux.createStore({ actions: { 'user-logout': 'resetState', 'calculate-scollbar-width': 'calculateScrollBarWidth' }, scheme: { activeRequests: { "default": {} }, requestActive: { "default": false }, ie: { "default": false }, ie9: { "default": false }, scrollBarWidth: { "default": 0 } }, initialize: function() { return this.detectBrowser(); }, detectBrowser: function() { var ieVersion, ua; ua = navigator.userAgent.toLowerCase(); if (navigator.appName === 'Microsoft Internet Explorer') { this.set('ie', true); ieVersion = parseInt(ua.match(/msie.([0-9]+)/)[1]); if (ieVersion === 9) { return this.set('ie9', true); } } else if (navigator.appName === 'Netscape' && new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) !== null) { return this.set('ie', true); } }, calculateScrollBarWidth: function() { var inner1, inner2, outer, scrollBarWidth; outer = document.createElement('div'); outer.style.overflow = 'scroll'; outer.style.height = '500px'; outer.style.width = '500px'; outer.style.position = 'absolute'; outer.style.top = '100px'; outer.style.left = '100px'; inner1 = document.createElement('div'); inner1.style.position = 'absolute'; inner1.style.height = '100%'; inner1.style.width = '100%'; inner2 = document.createElement('div'); inner2.style.height = '600px'; inner2.style.width = '600px'; outer.appendChild(inner1); outer.appendChild(inner2); document.body.appendChild(outer); scrollBarWidth = outer.offsetHeight - inner1.offsetHeight; document.body.removeChild(outer); return this.set('scrollBarWidth', scrollBarWidth); } }); module.exports = Global; }).call(this);