ngx-device-detector
Version:
<p align="center"> <img src="https://raw.githubusercontent.com/AhsanAyaz/ngx-device-detector/master/assets/logo.svg" width="200"> </p>
727 lines (721 loc) • 17.8 kB
TypeScript
import * as i0 from '@angular/core';
import { Signal } from '@angular/core';
/**
* Created by ahsanayaz on 08/11/2016.
*/
declare const GENERAL: {
UKNOWN: string;
};
declare const BROWSERS: {
CHROME: string;
FIREFOX: string;
SAFARI: string;
OPERA: string;
IE: string;
MS_EDGE: string;
MS_EDGE_CHROMIUM: string;
FB_MESSANGER: string;
SAMSUNG: string;
UCBROWSER: string;
UNKNOWN: string;
};
declare const MOBILES_RE: {
HTC: RegExp;
NEXUS_PHONE: RegExp;
DELL: RegExp;
MOTOROLA: RegExp;
SAMSUNG: RegExp;
LG: RegExp;
SONY: RegExp;
ASUS: RegExp;
NOKIA_LUMIA: RegExp;
MICROMAX: RegExp;
PALM: RegExp;
VERTU: RegExp;
PANTECH: RegExp;
FLY: RegExp;
WIKO: RegExp;
I_MOBILE: RegExp;
SIMVALLEY: RegExp;
WOLFGANG: RegExp;
ALCATEL: RegExp;
NINTENDO: RegExp;
AMOI: RegExp;
INQ: RegExp;
VITA: RegExp;
BLACKBERRY: RegExp;
FIREFOX_OS: RegExp;
IPHONE: RegExp;
iPod: RegExp;
ANDROID: RegExp;
WINDOWS_PHONE: RegExp;
GENERIC_PHONE: RegExp;
};
declare const TABLETS_RE: {
iPad: RegExp;
NexusTablet: RegExp;
GoogleTablet: RegExp;
SamsungTablet: RegExp;
Kindle: RegExp;
SurfaceTablet: RegExp;
HPTablet: RegExp;
AsusTablet: RegExp;
BlackBerryTablet: RegExp;
HTCtablet: RegExp;
MotorolaTablet: RegExp;
NookTablet: RegExp;
AcerTablet: RegExp;
ToshibaTablet: RegExp;
LGTablet: RegExp;
FujitsuTablet: RegExp;
PrestigioTablet: RegExp;
LenovoTablet: RegExp;
DellTablet: RegExp;
YarvikTablet: RegExp;
MedionTablet: RegExp;
ArnovaTablet: RegExp;
IntensoTablet: RegExp;
IRUTablet: RegExp;
MegafonTablet: RegExp;
EbodaTablet: RegExp;
AllViewTablet: RegExp;
ArchosTablet: RegExp;
AinolTablet: RegExp;
NokiaLumiaTablet: RegExp;
SonyTablet: RegExp;
PhilipsTablet: RegExp;
CubeTablet: RegExp;
CobyTablet: RegExp;
MIDTablet: RegExp;
MSITablet: RegExp;
SMiTTablet: RegExp;
RockChipTablet: RegExp;
FlyTablet: RegExp;
bqTablet: RegExp;
HuaweiTablet: RegExp;
NecTablet: RegExp;
PantechTablet: RegExp;
BronchoTablet: RegExp;
VersusTablet: RegExp;
ZyncTablet: RegExp;
PositivoTablet: RegExp;
NabiTablet: RegExp;
KoboTablet: RegExp;
DanewTablet: RegExp;
TexetTablet: RegExp;
PlaystationTablet: RegExp;
TrekstorTablet: RegExp;
PyleAudioTablet: RegExp;
AdvanTablet: RegExp;
DanyTechTablet: string;
GalapadTablet: RegExp;
MicromaxTablet: RegExp;
KarbonnTablet: RegExp;
AllFineTablet: RegExp;
PROSCANTablet: RegExp;
YONESTablet: RegExp;
ChangJiaTablet: RegExp;
GUTablet: RegExp;
PointOfViewTablet: RegExp;
OvermaxTablet: RegExp;
HCLTablet: RegExp;
DPSTablet: RegExp;
VistureTablet: RegExp;
CrestaTablet: RegExp;
MediatekTablet: RegExp;
ConcordeTablet: RegExp;
GoCleverTablet: RegExp;
ModecomTablet: RegExp;
VoninoTablet: RegExp;
ECSTablet: RegExp;
StorexTablet: RegExp;
VodafoneTablet: RegExp;
EssentielBTablet: RegExp;
RossMoorTablet: RegExp;
iMobileTablet: RegExp;
TolinoTablet: RegExp;
AudioSonicTablet: RegExp;
AMPETablet: RegExp;
SkkTablet: RegExp;
TecnoTablet: RegExp;
JXDTablet: RegExp;
iJoyTablet: RegExp;
FX2Tablet: RegExp;
XoroTablet: RegExp;
ViewsonicTablet: RegExp;
VerizonTablet: RegExp;
OdysTablet: RegExp;
CaptivaTablet: RegExp;
IconbitTablet: RegExp;
TeclastTablet: RegExp;
OndaTablet: RegExp;
JaytechTablet: RegExp;
BlaupunktTablet: RegExp;
DigmaTablet: RegExp;
EvolioTablet: RegExp;
LavaTablet: RegExp;
AocTablet: RegExp;
MpmanTablet: RegExp;
CelkonTablet: RegExp;
WolderTablet: RegExp;
MediacomTablet: string;
MiTablet: RegExp;
NibiruTablet: RegExp;
NexoTablet: RegExp;
LeaderTablet: RegExp;
UbislateTablet: RegExp;
PocketBookTablet: RegExp;
KocasoTablet: RegExp;
HisenseTablet: RegExp;
Hudl: RegExp;
TelstraTablet: RegExp;
Honeywell: RegExp;
GenericTablet: RegExp;
};
declare const DEVICES: {
BLACKBERRY: string;
FIREFOX_OS: string;
CHROME_BOOK: string;
WINDOWS_PHONE: string;
VITA: string;
PS4: string;
MAC: string;
CHROMECAST: string;
APPLE_TV: string;
GOOGLE_TV: string;
ANDROID: string;
Tesla: string;
iPad: string;
IPHONE: string;
iPod: string;
UNKNOWN: string;
HTC: string;
NEXUS_PHONE: string;
NexusTablet: string;
DELL: string;
MOTOROLA: string;
SAMSUNG: string;
LG: string;
SONY: string;
ASUS: string;
NOKIA_LUMIA: string;
MICROMAX: string;
PALM: string;
VERTU: string;
PANTECH: string;
FLY: string;
WIKO: string;
I_MOBILE: string;
SIMVALLEY: string;
WOLFGANG: string;
ALCATEL: string;
HONEYWELL: string;
NINTENDO: string;
AMOI: string;
INQ: string;
GENERIC_PHONE: string;
MI_SE_9: string;
};
declare const DESKTOP_DEVICES: string[];
declare const OS: {
WINDOWS: string;
MAC: string;
IOS: string;
ANDROID: string;
LINUX: string;
UNIX: string;
FIREFOX_OS: string;
CHROME_OS: string;
WINDOWS_PHONE: string;
UNKNOWN: string;
};
declare const OS_VERSIONS: {
WINDOWS_3_11: string;
WINDOWS_95: string;
WINDOWS_ME: string;
WINDOWS_98: string;
WINDOWS_CE: string;
WINDOWS_2000: string;
WINDOWS_XP: string;
WINDOWS_SERVER_2003: string;
WINDOWS_VISTA: string;
WINDOWS_7: string;
WINDOWS_8_1: string;
WINDOWS_8: string;
WINDOWS_10: string;
WINDOWS_PHONE_7_5: string;
WINDOWS_PHONE_8_1: string;
WINDOWS_PHONE_10: string;
WINDOWS_NT_4_0: string;
MACOSX_11_0: string;
MACOSX_16: string;
MACOSX_15: string;
MACOSX_14: string;
MACOSX_13: string;
MACOSX_12: string;
MACOSX_11: string;
MACOSX_10: string;
MACOSX_9: string;
MACOSX_8: string;
MACOSX_7: string;
MACOSX_6: string;
MACOSX_5: string;
MACOSX_4: string;
MACOSX_3: string;
MACOSX_2: string;
MACOSX: string;
iOS: string;
ANDROID_9: string;
UNKNOWN: string;
};
declare const OS_RE: {
WINDOWS: {
and: ({
or: RegExp[];
not?: undefined;
} | {
not: RegExp;
or?: undefined;
})[];
};
MAC: {
and: (RegExp | {
not: {
or: RegExp[];
};
})[];
};
IOS: {
and: ({
or: RegExp[];
not?: undefined;
} | {
not: RegExp;
or?: undefined;
})[];
};
ANDROID: {
and: (RegExp | {
not: RegExp;
})[];
};
LINUX: RegExp;
UNIX: RegExp;
FIREFOX_OS: {
and: RegExp[];
};
CHROME_OS: RegExp;
WINDOWS_PHONE: {
or: RegExp[];
};
PS4: RegExp;
VITA: RegExp;
};
declare const BROWSERS_RE: {
CHROME: {
and: ({
or: RegExp[];
not?: undefined;
} | {
not: {
or: RegExp[];
};
or?: undefined;
})[];
};
FIREFOX: {
or: RegExp[];
};
SAFARI: {
and: (RegExp | {
not: {
or: RegExp[];
};
})[];
};
OPERA: {
or: RegExp[];
};
IE: {
or: RegExp[];
};
MS_EDGE: {
or: RegExp[];
};
MS_EDGE_CHROMIUM: RegExp;
PS4: RegExp;
VITA: RegExp;
FB_MESSANGER: RegExp;
SAMSUNG: RegExp;
UCBROWSER: RegExp;
};
declare const DEVICES_RE: {
FIREFOX_OS: {
and: RegExp[];
};
CHROME_BOOK: RegExp;
PS4: RegExp;
CHROMECAST: RegExp;
APPLE_TV: RegExp;
GOOGLE_TV: RegExp;
Tesla: RegExp;
MI_SE_9: RegExp;
MAC: {
and: (RegExp | {
not: {
or: RegExp[];
};
})[];
};
WINDOWS: {
and: ({
or: RegExp[];
not?: undefined;
} | {
not: RegExp;
or?: undefined;
})[];
};
IOS: {
and: ({
or: RegExp[];
not?: undefined;
} | {
not: RegExp;
or?: undefined;
})[];
};
ANDROID: {
and: (RegExp | {
not: RegExp;
})[];
};
LINUX: RegExp;
UNIX: RegExp;
CHROME_OS: RegExp;
WINDOWS_PHONE: {
or: RegExp[];
};
VITA: RegExp;
iPad: RegExp;
NexusTablet: RegExp;
GoogleTablet: RegExp;
SamsungTablet: RegExp;
Kindle: RegExp;
SurfaceTablet: RegExp;
HPTablet: RegExp;
AsusTablet: RegExp;
BlackBerryTablet: RegExp;
HTCtablet: RegExp;
MotorolaTablet: RegExp;
NookTablet: RegExp;
AcerTablet: RegExp;
ToshibaTablet: RegExp;
LGTablet: RegExp;
FujitsuTablet: RegExp;
PrestigioTablet: RegExp;
LenovoTablet: RegExp;
DellTablet: RegExp;
YarvikTablet: RegExp;
MedionTablet: RegExp;
ArnovaTablet: RegExp;
IntensoTablet: RegExp;
IRUTablet: RegExp;
MegafonTablet: RegExp;
EbodaTablet: RegExp;
AllViewTablet: RegExp;
ArchosTablet: RegExp;
AinolTablet: RegExp;
NokiaLumiaTablet: RegExp;
SonyTablet: RegExp;
PhilipsTablet: RegExp;
CubeTablet: RegExp;
CobyTablet: RegExp;
MIDTablet: RegExp;
MSITablet: RegExp;
SMiTTablet: RegExp;
RockChipTablet: RegExp;
FlyTablet: RegExp;
bqTablet: RegExp;
HuaweiTablet: RegExp;
NecTablet: RegExp;
PantechTablet: RegExp;
BronchoTablet: RegExp;
VersusTablet: RegExp;
ZyncTablet: RegExp;
PositivoTablet: RegExp;
NabiTablet: RegExp;
KoboTablet: RegExp;
DanewTablet: RegExp;
TexetTablet: RegExp;
PlaystationTablet: RegExp;
TrekstorTablet: RegExp;
PyleAudioTablet: RegExp;
AdvanTablet: RegExp;
DanyTechTablet: string;
GalapadTablet: RegExp;
MicromaxTablet: RegExp;
KarbonnTablet: RegExp;
AllFineTablet: RegExp;
PROSCANTablet: RegExp;
YONESTablet: RegExp;
ChangJiaTablet: RegExp;
GUTablet: RegExp;
PointOfViewTablet: RegExp;
OvermaxTablet: RegExp;
HCLTablet: RegExp;
DPSTablet: RegExp;
VistureTablet: RegExp;
CrestaTablet: RegExp;
MediatekTablet: RegExp;
ConcordeTablet: RegExp;
GoCleverTablet: RegExp;
ModecomTablet: RegExp;
VoninoTablet: RegExp;
ECSTablet: RegExp;
StorexTablet: RegExp;
VodafoneTablet: RegExp;
EssentielBTablet: RegExp;
RossMoorTablet: RegExp;
iMobileTablet: RegExp;
TolinoTablet: RegExp;
AudioSonicTablet: RegExp;
AMPETablet: RegExp;
SkkTablet: RegExp;
TecnoTablet: RegExp;
JXDTablet: RegExp;
iJoyTablet: RegExp;
FX2Tablet: RegExp;
XoroTablet: RegExp;
ViewsonicTablet: RegExp;
VerizonTablet: RegExp;
OdysTablet: RegExp;
CaptivaTablet: RegExp;
IconbitTablet: RegExp;
TeclastTablet: RegExp;
OndaTablet: RegExp;
JaytechTablet: RegExp;
BlaupunktTablet: RegExp;
DigmaTablet: RegExp;
EvolioTablet: RegExp;
LavaTablet: RegExp;
AocTablet: RegExp;
MpmanTablet: RegExp;
CelkonTablet: RegExp;
WolderTablet: RegExp;
MediacomTablet: string;
MiTablet: RegExp;
NibiruTablet: RegExp;
NexoTablet: RegExp;
LeaderTablet: RegExp;
UbislateTablet: RegExp;
PocketBookTablet: RegExp;
KocasoTablet: RegExp;
HisenseTablet: RegExp;
Hudl: RegExp;
TelstraTablet: RegExp;
Honeywell: RegExp;
GenericTablet: RegExp;
HTC: RegExp;
NEXUS_PHONE: RegExp;
DELL: RegExp;
MOTOROLA: RegExp;
SAMSUNG: RegExp;
LG: RegExp;
SONY: RegExp;
ASUS: RegExp;
NOKIA_LUMIA: RegExp;
MICROMAX: RegExp;
PALM: RegExp;
VERTU: RegExp;
PANTECH: RegExp;
FLY: RegExp;
WIKO: RegExp;
I_MOBILE: RegExp;
SIMVALLEY: RegExp;
WOLFGANG: RegExp;
ALCATEL: RegExp;
NINTENDO: RegExp;
AMOI: RegExp;
INQ: RegExp;
BLACKBERRY: RegExp;
IPHONE: RegExp;
iPod: RegExp;
GENERIC_PHONE: RegExp;
};
declare const OS_VERSIONS_RE_MAP: {
WINDOWS_3_11: RegExp;
WINDOWS_95: RegExp;
WINDOWS_ME: RegExp;
WINDOWS_98: RegExp;
WINDOWS_CE: RegExp;
WINDOWS_2000: RegExp;
WINDOWS_XP: RegExp;
WINDOWS_SERVER_2003: RegExp;
WINDOWS_VISTA: RegExp;
WINDOWS_7: RegExp;
WINDOWS_8_1: RegExp;
WINDOWS_8: RegExp;
WINDOWS_10: RegExp;
WINDOWS_PHONE_7_5: RegExp;
WINDOWS_PHONE_8_1: RegExp;
WINDOWS_PHONE_10: RegExp;
WINDOWS_NT_4_0: {
and: (RegExp | {
not: RegExp;
})[];
};
MACOSX: RegExp;
MACOSX_3: RegExp;
MACOSX_4: RegExp;
MACOSX_5: RegExp;
MACOSX_6: RegExp;
MACOSX_7: RegExp;
MACOSX_8: RegExp;
MACOSX_9: RegExp;
MACOSX_10: RegExp;
MACOSX_11: RegExp;
MACOSX_12: RegExp;
MACOSX_13: RegExp;
MACOSX_14: RegExp;
MACOSX_15: RegExp;
MACOSX_16: RegExp;
MACOSX_11_0: {
or: RegExp[];
};
iOS: RegExp;
ANDROID_9: RegExp;
};
declare const BROWSER_VERSIONS_RE_MAP: {
CHROME: RegExp[];
FIREFOX: RegExp[];
SAFARI: RegExp[];
OPERA: RegExp[];
IE: RegExp[];
MS_EDGE: RegExp;
MS_EDGE_CHROMIUM: RegExp;
SAMSUNG: RegExp;
UCBROWSER: RegExp;
};
declare const OS_VERSIONS_RE: {};
declare const BROWSER_VERSIONS_RE: {};
/**
* Created by ahsanayaz on 08/11/2016.
*/
interface DeviceInfo {
userAgent: string;
os: string;
browser: string;
device: string;
os_version: string;
browser_version: string;
deviceType: string;
orientation: string;
isDesktopMode: boolean;
}
declare enum DeviceType {
Mobile = "mobile",
Tablet = "tablet",
Desktop = "desktop",
Unknown = "unknown"
}
declare enum OrientationType {
Portrait = "portrait",
Landscape = "landscape",
Unknown = "Unknown"
}
declare class DeviceDetectorService {
readonly deviceInfo: Signal<DeviceInfo>;
private readonly _ua;
private readonly _userAgent;
private readonly _os;
private readonly _browser;
private readonly _device;
private readonly _os_version;
private readonly _browser_version;
private readonly _deviceType;
private readonly _orientation;
private readonly _isDesktopMode;
private readonly reTree;
private readonly platformId;
constructor();
get ua(): Signal<string>;
get browser(): Signal<string>;
get device(): Signal<string>;
get userAgent(): Signal<string>;
get os(): Signal<string>;
get os_version(): Signal<string>;
get browser_version(): Signal<string>;
get deviceType(): Signal<DeviceType>;
get orientation(): Signal<OrientationType>;
get isDesktopMode(): Signal<boolean>;
/**
* @author Ahsan Ayaz
* @desc Sets the initial value of the device when the service is initiated.
* This value is later accessible for usage
*/
private detectFromMapping;
/**
* Detects if a mobile device is running in desktop mode
* Desktop mode occurs when mobile browsers request desktop websites
* by sending desktop user agent strings while retaining mobile characteristics
*/
private detectDesktopMode;
/**
* Checks if screen dimensions suggest mobile device
*/
private hasMobileScreenDimensions;
/**
* Checks for mobile browser signatures that might leak through in desktop mode
*/
private hasMobileBrowserSignatures;
setDeviceInfo(ua?: string): void;
/**
* @author Ahsan Ayaz
* @desc Returns the device information
* @deprecated Use `deviceInfo` signal instead.
* @returns the device information object.
*/
getDeviceInfo(): DeviceInfo;
/**
* @author Ahsan Ayaz
* @desc Compares the current device info with the mobile devices to check
* if the current device is a mobile and also check current device is tablet so it will return false.
* @returns whether the current device is a mobile
*/
isMobile(userAgent?: string): boolean;
/**
* @author Ahsan Ayaz
* @desc Compares the current device info with the tablet devices to check
* if the current device is a tablet.
* @returns whether the current device is a tablet
*/
isTablet(userAgent?: string): boolean;
/**
* @author Ahsan Ayaz
* @desc Compares the current device info with the desktop devices to check
* if the current device is a desktop device.
* @returns whether the current device is a desktop device
*/
isDesktop(userAgent?: string): boolean;
/**
* @desc Checks if the current device is a mobile device running in desktop mode.
* Desktop mode occurs when mobile browsers request desktop websites by sending
* desktop user agent strings while retaining mobile hardware characteristics.
* @returns whether the current device is in desktop mode
*/
isDesktopModeEnabled(): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<DeviceDetectorService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DeviceDetectorService>;
}
/**
* Created by ahsanayaz on 08/11/2016.
*/
declare class ReTree {
private readonly regexCache;
private getRegex;
test(str: string, regex: unknown): boolean;
exec(str: string, regex: unknown): RegExpExecArray | null;
}
export { BROWSERS, BROWSERS_RE, BROWSER_VERSIONS_RE, BROWSER_VERSIONS_RE_MAP, DESKTOP_DEVICES, DEVICES, DEVICES_RE, DeviceDetectorService, DeviceType, GENERAL, MOBILES_RE, OS, OS_RE, OS_VERSIONS, OS_VERSIONS_RE, OS_VERSIONS_RE_MAP, OrientationType, ReTree, TABLETS_RE };
export type { DeviceInfo };