device-manager
Version:
Detect information about a user's current device
7 lines (6 loc) • 3.83 kB
JavaScript
/**
* device-manager - v1.1.1.
* https://github.com/mkay581/device-manager.git
* Copyright 2015 Mark Kennedy. Licensed MIT.
*/
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.DeviceManager=t()}}(function(){return function t(e,n,i){function r(s,a){if(!n[s]){if(!e[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var f=new Error("Cannot find module '"+s+"'");throw f.code="MODULE_NOT_FOUND",f}var h=n[s]={exports:{}};e[s][0].call(h.exports,function(t){var n=e[s][1][t];return r(n?n:t)},h,h.exports,t,e,n,i)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<i.length;s++)r(i[s]);return r}({1:[function(t,e,n){"use strict";var i={createTarget:function(t){this._targets=this._targets||[];var e=this._getTargetMap(t);e.target||(t.addEventListener=this._getEventMethod(t,"_addEvent").bind(this),t.removeEventListener=this._getEventMethod(t,"_removeEvent").bind(this),t.dispatchEvent=this._getEventMethod(t,"_dispatchEvent").bind(this),e.target=t,this._targets.push(e))},_getTargetMap:function(t){return this._targets.filter(function(e){return e.target===t})[0]||{}},_addEvent:function(t,e,n,i,r){"boolean"!=typeof i&&(r=i,i=null),i=i||!1;var o=this.getNested(this._getTargetMap(t),e);o||(o=this.setNested(this._getTargetMap(t),e,[]));var s={listener:n,context:r,useCapture:i};-1===o.indexOf(s)&&o.push(s)},_getEventMethod:function(t,e){return function(){var n=Array.prototype.slice.call(arguments,0);n.unshift(t),this[e].apply(this,n)}.bind(this)},_removeEvent:function(t,e,n){var i=this.getNested(this._getTargetMap(t),e,[]);i.forEach(function(t,e){t.listener===n&&i.splice(e,1)})},_dispatchEvent:function(t,e,n){var i,r=this._getTargetMap(t)||{};r[e]&&r[e].forEach(function(r){i=this._createEvent(e,n),r.listener.call(r.context||t,i)}.bind(this))},_createEvent:function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,!1,!1,e),n},extend:function(t){var e,n,i=t;for(n=1;n<arguments.length;n++){e=arguments[n];for(var r in e)e.hasOwnProperty(r)&&(i[r]=e[r])}return i},getNested:function(t,e,n){for(var i=e.split("."),r=t,o=0;o<i.length;o++){if(!r[i[o]]){r=n;break}r=r[i[o]]}return r},setNested:function(t,e,n){for(var i=e.split("."),r=t,o=0;o<i.length;o++){var s=o===i.length-1;s?r[i[o]]=n:(r[i[o]]=r[i[o]]||{},r=r[i[o]])}return n},destroyTarget:function(t){var e=this._getTargetMap(t),n=this._targets.indexOf(e);n>-1&&this._targets.splice(n,1)}};e.exports=i},{}],2:[function(t,e,n){"use strict";var i=t("listen-js"),r=function(){this.initialize()};r.prototype={initialize:function(){i.createTarget(this),this._getOrientationChangeListener=function(){var t=this;return function(){t._onOrientationChange.bind(t)}},window.addEventListener("orientationchange",this._getOrientationChangeListener())},_onOrientationChange:function(){var t;t=window.innerHeight<=window.innerWidth?"landscape":"portrait",this.dispatchEvent("orientationchange",{orientation:t})},getUserAgent:function(){return window.navigator.userAgent},isBrowser:function(t){var e,n=t,i=this.getUserAgent();return t?(Array.isArray(t)&&(n=t.join("|")),n.indexOf("safari")>-1?(e=new RegExp("chrome","i"),!e.test(i)):(e=new RegExp(n,"i"),e.test(i))):!0},isMobile:function(){return this.isBrowser(["Android","webOS","iPhone","iPad","iPod","BlackBerry","IEMobile","Opera Mini"])},isOS:function(t){var e=t;Array.isArray(t)&&(e=t.join("|"));var n=new RegExp(e,"i");return n.test(this.getUserAgent())},destroy:function(){window.removeEventListener("orientationchange",this._getOrientationChangeListener()),i.destroyTarget(this)}},e.exports=new r},{"listen-js":1}]},{},[2])(2)});