ngx-device-info
Version:
Angular library which provides device information / type / name and also it provides much more device independent features & informations.
1 lines • 18.4 kB
Source Map (JSON)
{"version":3,"file":"ngx-device-info.mjs","sources":["../../../projects/ngx-device-info/src/lib/ngx-device-info.service.ts","../../../projects/ngx-device-info/src/lib/ngx-device-info.component.ts","../../../projects/ngx-device-info/src/public-api.ts","../../../projects/ngx-device-info/src/ngx-device-info.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxDeviceInfoService {\n private permissionsNames = [\n 'geolocation',\n 'notifications',\n 'push',\n 'midi',\n 'camera',\n 'microphone',\n 'speaker',\n 'device-info',\n 'background-fetch',\n 'background-sync',\n 'bluetooth',\n 'persistent-storage',\n 'ambient-light-sensor',\n 'accelerometer',\n 'gyroscope',\n 'magnetometer',\n 'clipboard',\n 'display-capture',\n 'nfc',\n ];\n constructor() { }\n\n public async getDeviceInfo() {\n let deviceName = '';\n var isMobile = {\n Android: function () {\n return navigator.userAgent.match(/Android/i);\n },\n Datalogic: function () {\n return navigator.userAgent.match(/DL-AXIS/i);\n },\n Bluebird: function () {\n return navigator.userAgent.match(/EF500/i);\n },\n Honeywell: function () {\n return navigator.userAgent.match(/CT50/i);\n },\n Zebra: function () {\n return navigator.userAgent.match(/TC70|TC55/i);\n },\n BlackBerry: function () {\n return navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function () {\n return navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Windows: function () {\n return navigator.userAgent.match(/IEMobile/i);\n },\n any: function () {\n return (\n isMobile.Datalogic() ||\n isMobile.Bluebird() ||\n isMobile.Honeywell() ||\n isMobile.Zebra() ||\n isMobile.BlackBerry() ||\n isMobile.Android() ||\n isMobile.iOS() ||\n isMobile.Windows()\n );\n },\n };\n\n if (isMobile.Datalogic()) deviceName = 'Datalogic';\n else if (isMobile.Bluebird()) deviceName = 'Bluebird';\n else if (isMobile.Honeywell()) deviceName = 'Honeywell';\n else if (isMobile.Zebra()) deviceName = 'Zebra';\n else if (isMobile.BlackBerry()) deviceName = 'BlackBerry';\n else if (isMobile.iOS()) deviceName = 'iOS';\n else if (deviceName == '' && isMobile.Android()) deviceName = 'Android';\n else if (deviceName == '' && isMobile.Windows()) deviceName = 'Windows';\n\n // if (deviceName) {\n // console.log('Devices information deviceName = ' + deviceName);\n // console.log('Devices information any = ' + isMobile.any());\n // console.log('navigator.userAgent = ' + navigator.userAgent);\n // }\n let deviceData: any = {\n deviceName: deviceName,\n orientation: this.getOrientation(),\n deviceType: this.getDeviceType(),\n userAgent: navigator.userAgent,\n isMobile: this.isMobile(),\n isDesktop: this.isDesktop(),\n isTablet: this.isTablet(),\n language: window.navigator.language,\n isOnline: window.navigator.onLine,\n cookieEnabled: window.navigator.cookieEnabled,\n vendor: window.navigator.vendor,\n clientHeight: document.body.clientHeight,\n clientWidth: document.body.clientWidth,\n height: screen.height,\n width: screen.width,\n availHeight: screen.availHeight,\n availWidth: screen.availWidth,\n innerHeight: window.innerHeight,\n innerWidth: window.innerWidth,\n outerHeight: window.outerHeight,\n outerWidth: window.outerWidth,\n href: window.location.href,\n protocal: window.location.protocol,\n host: window.location.host,\n hostname: window.location.hostname,\n port: window.location.port,\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n origin: window.location.origin,\n timeZoneOffSet: new Date().getTimezoneOffset(),\n utcString: new Date().toUTCString(),\n time: new Date().getTime(),\n date: new Date().getDate(),\n day: new Date().getDay(),\n month: new Date().getMonth(),\n hour: new Date().getHours(),\n year: new Date().getFullYear(),\n seconds: new Date().getSeconds,\n milliseconds: new Date().getMilliseconds(),\n utcdate: new Date().getUTCDate(),\n utcday: new Date().getUTCDay(),\n utcmonth: new Date().getUTCMonth(),\n utcyear: new Date().getUTCFullYear(),\n };\n await this.getAllPermissions().then((data) => {\n data.forEach((element: any) => {\n deviceData[element['permissionName']] = element['state'];\n });\n });\n return deviceData;\n }\n\n public getDeviceName() {\n var sBrowser,\n sUsrAg = navigator.userAgent;\n\n // The order matters here, and this may report false positives for unlisted browsers.\n\n if (sUsrAg.indexOf('Firefox') > -1) {\n sBrowser = 'Mozilla Firefox';\n // \"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0\"\n } else if (sUsrAg.indexOf('SamsungBrowser') > -1) {\n sBrowser = 'Samsung Internet';\n // \"Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36\n } else if (sUsrAg.indexOf('Opera') > -1 || sUsrAg.indexOf('OPR') > -1) {\n sBrowser = 'Opera';\n // \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106\"\n } else if (sUsrAg.indexOf('Trident') > -1) {\n sBrowser = 'Microsoft Internet Explorer';\n // \"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko\"\n } else if (sUsrAg.indexOf('Edge') > -1) {\n sBrowser = 'Microsoft Edge (Legacy)';\n // \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\"\n } else if (sUsrAg.indexOf('Edg') > -1) {\n sBrowser = 'Microsoft Edge (Chromium)';\n // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64\n } else if (sUsrAg.indexOf('Chrome') > -1) {\n sBrowser = 'Google Chrome or Chromium';\n // \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36\"\n } else if (sUsrAg.indexOf('Safari') > -1) {\n sBrowser = 'Apple Safari';\n // \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306\"\n } else {\n sBrowser = 'unknown';\n }\n return sBrowser;\n }\n\n public getDeviceType() {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return 'tablet';\n }\n if (\n /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua\n )\n ) {\n return 'mobile';\n }\n return 'desktop';\n }\n\n public isMobile() {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return false;\n }\n if (\n /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua\n )\n ) {\n return true;\n }\n return false;\n }\n\n public isTablet() {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return true;\n }\n if (\n /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua\n )\n ) {\n return false;\n }\n return false;\n }\n\n public isDesktop() {\n const ua = navigator.userAgent;\n if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {\n return false;\n }\n if (\n /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(\n ua\n )\n ) {\n return false;\n }\n return true;\n }\n\n public getOrientation() {\n if (window.matchMedia('(orientation: portrait)').matches) {\n return 'portrait';\n }\n if (window.matchMedia('(orientation: landscape)').matches) {\n return 'landscape';\n }\n return \"\";\n }\n\n public getAllPermissions = async () => {\n const allPermissions: any = [];\n // We use Promise.all to wait until all the permission queries are resolved\n await Promise.all(\n this.permissionsNames.map(async (permissionName: any) => {\n try {\n let permission;\n switch (permissionName) {\n case 'push':\n // Not necessary but right now Chrome only supports push messages with notifications\n permission = await navigator.permissions.query({\n name: permissionName,\n });\n break;\n default:\n permission = await navigator.permissions.query({\n name: permissionName,\n });\n }\n allPermissions.push({ permissionName, state: permission.state });\n } catch (e: any) {\n allPermissions.push({\n permissionName,\n state: 'error',\n errorMessage: e.toString(),\n });\n }\n })\n );\n return allPermissions;\n };\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ngx-device-info',\n template: `\n <p>\n ngx-device-info works!\n </p>\n `,\n styles: [],\n standalone: true\n})\nexport class NgxDeviceInfoComponent {\n\n}\n","/*\n * Public API Surface of ngx-device-info\n */\n\nexport * from './lib/ngx-device-info.service';\nexport * from './lib/ngx-device-info.component';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}