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 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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"}