@foblex/platform
Version:
An Angular library providing a set of services for supporting server-side rendering (SSR) and other features.
67 lines • 9.36 kB
JavaScript
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { EOperationSystem } from './e-operation-system';
import * as i0 from "@angular/core";
let hasV8BreakIterator;
try {
hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;
}
catch {
hasV8BreakIterator = false;
}
export class PlatformService {
_platformId;
isBrowser = false;
EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);
TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);
BLINK = this.isBrowser &&
!!(window.chrome || hasV8BreakIterator) &&
typeof CSS !== 'undefined' &&
!this.EDGE &&
!this.TRIDENT;
WEBKIT = this.isBrowser &&
/AppleWebKit/i.test(navigator.userAgent) &&
!this.BLINK &&
!this.EDGE &&
!this.TRIDENT;
IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);
FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);
ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;
SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;
constructor(_platformId) {
this._platformId = _platformId;
this.isBrowser = this._platformId
? isPlatformBrowser(this._platformId)
: typeof document === 'object' && !!document;
}
getOS() {
let userAgent = navigator.userAgent.toLowerCase(), macosPlatforms = /(macintosh|macintel|macppc|mac68k|macos)/i, windowsPlatforms = /(win32|win64|windows|wince)/i;
let result;
if (macosPlatforms.test(userAgent)) {
result = EOperationSystem.MAC_OS;
}
else if (this.IOS) {
result = EOperationSystem.IOS;
}
else if (windowsPlatforms.test(userAgent)) {
result = EOperationSystem.WINDOWS;
}
else if (this.ANDROID) {
result = EOperationSystem.ANDROID;
}
else if (!result && /linux/.test(userAgent)) {
result = EOperationSystem.LINUX;
}
return result;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: PlatformService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: PlatformService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: PlatformService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: Object, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFeEQsSUFBSSxrQkFBMkIsQ0FBQztBQUVoQyxJQUFJLENBQUM7SUFDSCxrQkFBa0IsR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUssSUFBWSxDQUFDLGVBQWUsQ0FBQztBQUNwRixDQUFDO0FBQUMsTUFBTSxDQUFDO0lBQ1Asa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBQzdCLENBQUM7QUFHRCxNQUFNLE9BQU8sZUFBZTtJQWdDSztJQTlCeEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUUzQixJQUFJLEdBQVksSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV0RSxPQUFPLEdBQVksSUFBSSxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWpGLEtBQUssR0FDVixJQUFJLENBQUMsU0FBUztRQUNkLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQyxNQUFNLElBQUksa0JBQWtCLENBQUM7UUFDaEQsT0FBTyxHQUFHLEtBQUssV0FBVztRQUMxQixDQUFDLElBQUksQ0FBQyxJQUFJO1FBQ1YsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRVQsTUFBTSxHQUNYLElBQUksQ0FBQyxTQUFTO1FBQ2QsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3hDLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDWCxDQUFDLElBQUksQ0FBQyxJQUFJO1FBQ1YsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRVQsR0FBRyxHQUNSLElBQUksQ0FBQyxTQUFTLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0lBRXJGLE9BQU8sR0FBWSxJQUFJLENBQUMsU0FBUyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFdEYsT0FBTyxHQUFZLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBRTNGLE1BQU0sR0FBWSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7SUFFOUYsWUFDK0IsV0FBbUI7UUFBbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFFaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUMvQixDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxDQUFDLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDaEQsQ0FBQztJQUVNLEtBQUs7UUFFVixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUMvQyxjQUFjLEdBQUcsMkNBQTJDLEVBQzVELGdCQUFnQixHQUFHLDhCQUE4QixDQUFDO1FBRXBELElBQUksTUFBb0MsQ0FBQztRQUV6QyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQixNQUFNLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDcEMsQ0FBQzthQUFNLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7dUdBNURVLGVBQWUsa0JBZ0NoQixXQUFXOzJHQWhDVixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFpQzdCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVPcGVyYXRpb25TeXN0ZW0gfSBmcm9tICcuL2Utb3BlcmF0aW9uLXN5c3RlbSc7XG5cbmxldCBoYXNWOEJyZWFrSXRlcmF0b3I6IGJvb2xlYW47XG5cbnRyeSB7XG4gIGhhc1Y4QnJlYWtJdGVyYXRvciA9IHR5cGVvZiBJbnRsICE9PSAndW5kZWZpbmVkJyAmJiAoSW50bCBhcyBhbnkpLnY4QnJlYWtJdGVyYXRvcjtcbn0gY2F0Y2gge1xuICBoYXNWOEJyZWFrSXRlcmF0b3IgPSBmYWxzZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBpc0Jyb3dzZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgRURHRTogYm9vbGVhbiA9IHRoaXMuaXNCcm93c2VyICYmIC8oZWRnZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4gIHB1YmxpYyBUUklERU5UOiBib29sZWFuID0gdGhpcy5pc0Jyb3dzZXIgJiYgLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICBwdWJsaWMgQkxJTks6IGJvb2xlYW4gPVxuICAgIHRoaXMuaXNCcm93c2VyICYmXG4gICAgISEoKHdpbmRvdyBhcyBhbnkpLmNocm9tZSB8fCBoYXNWOEJyZWFrSXRlcmF0b3IpICYmXG4gICAgdHlwZW9mIENTUyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhdGhpcy5FREdFICYmXG4gICAgIXRoaXMuVFJJREVOVDtcblxuICBwdWJsaWMgV0VCS0lUOiBib29sZWFuID1cbiAgICB0aGlzLmlzQnJvd3NlciAmJlxuICAgIC9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiZcbiAgICAhdGhpcy5CTElOSyAmJlxuICAgICF0aGlzLkVER0UgJiZcbiAgICAhdGhpcy5UUklERU5UO1xuXG4gIHB1YmxpYyBJT1M6IGJvb2xlYW4gPVxuICAgIHRoaXMuaXNCcm93c2VyICYmIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICEoJ01TU3RyZWFtJyBpbiB3aW5kb3cpO1xuXG4gIHB1YmxpYyBGSVJFRk9YOiBib29sZWFuID0gdGhpcy5pc0Jyb3dzZXIgJiYgLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4gIHB1YmxpYyBBTkRST0lEOiBib29sZWFuID0gdGhpcy5pc0Jyb3dzZXIgJiYgL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmICF0aGlzLlRSSURFTlQ7XG5cbiAgcHVibGljIFNBRkFSSTogYm9vbGVhbiA9IHRoaXMuaXNCcm93c2VyICYmIC9zYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIHRoaXMuV0VCS0lUO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgX3BsYXRmb3JtSWQ6IE9iamVjdFxuICApIHtcbiAgICB0aGlzLmlzQnJvd3NlciA9IHRoaXMuX3BsYXRmb3JtSWRcbiAgICAgID8gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5fcGxhdGZvcm1JZClcbiAgICAgIDogdHlwZW9mIGRvY3VtZW50ID09PSAnb2JqZWN0JyAmJiAhIWRvY3VtZW50XG4gIH1cblxuICBwdWJsaWMgZ2V0T1MoKTogRU9wZXJhdGlvblN5c3RlbSB8IHVuZGVmaW5lZCB7XG5cbiAgICBsZXQgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLFxuICAgICAgbWFjb3NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pLFxuICAgICAgd2luZG93c1BsYXRmb3JtcyA9IC8od2luMzJ8d2luNjR8d2luZG93c3x3aW5jZSkvaTtcblxuICAgIGxldCByZXN1bHQ6IEVPcGVyYXRpb25TeXN0ZW0gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAobWFjb3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgICByZXN1bHQgPSBFT3BlcmF0aW9uU3lzdGVtLk1BQ19PUztcbiAgICB9IGVsc2UgaWYgKHRoaXMuSU9TKSB7XG4gICAgICByZXN1bHQgPSBFT3BlcmF0aW9uU3lzdGVtLklPUztcbiAgICB9IGVsc2UgaWYgKHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgICByZXN1bHQgPSBFT3BlcmF0aW9uU3lzdGVtLldJTkRPV1M7XG4gICAgfSBlbHNlIGlmICh0aGlzLkFORFJPSUQpIHtcbiAgICAgIHJlc3VsdCA9IEVPcGVyYXRpb25TeXN0ZW0uQU5EUk9JRDtcbiAgICB9IGVsc2UgaWYgKCFyZXN1bHQgJiYgL2xpbnV4Ly50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICAgIHJlc3VsdCA9IEVPcGVyYXRpb25TeXN0ZW0uTElOVVg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19