UNPKG

@foblex/platform

Version:

An Angular library providing a set of services for supporting server-side rendering (SSR) and other features.

70 lines 8.13 kB
import { Injectable, Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { F_WINDOW } from './window'; import { F_LOCAL_STORAGE } from './local-storage'; import * as i0 from "@angular/core"; import * as i1 from "./platform.service"; export class BrowserService { injectedDocument; windowService; localStorageService; platformService; constructor(injectedDocument, windowService, localStorageService, platformService) { this.injectedDocument = injectedDocument; this.windowService = windowService; this.localStorageService = localStorageService; this.platformService = platformService; } isBrowser() { return this.platformService.isBrowser; } get window() { return this.windowService; } get localStorage() { return this.localStorageService; } get document() { return this.injectedDocument; } toPixels(value, clientWidth, clientHeight, fontSize) { if (value.endsWith('px')) { return parseFloat(value); } else if (value.endsWith('%')) { const percentage = parseFloat(value) / 100; return Math.max(clientWidth, clientHeight) * percentage; } else if (value.endsWith('em')) { return parseFloat(value) * parseFloat(fontSize); } else if (value.endsWith('rem')) { return parseFloat(value) * parseFloat(getComputedStyle(this.document.documentElement).fontSize); } else if (value.endsWith('vh')) { const vh = this.window.innerHeight / 100; return parseFloat(value) * vh; } else if (value.endsWith('vw')) { const vw = this.window.innerWidth / 100; return parseFloat(value) * vw; } return parseFloat(value) || 0; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: BrowserService, deps: [{ token: DOCUMENT }, { token: F_WINDOW }, { token: F_LOCAL_STORAGE }, { token: i1.PlatformService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: BrowserService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: BrowserService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }, { type: undefined, decorators: [{ type: Inject, args: [F_WINDOW] }] }, { type: undefined, decorators: [{ type: Inject, args: [F_LOCAL_STORAGE] }] }, { type: i1.PlatformService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1wbGF0Zm9ybS9zcmMvbGliL2Jyb3dzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBa0IsTUFBTSxVQUFVLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBSWpFLE1BQU0sT0FBTyxjQUFjO0lBR0c7SUFDQTtJQUNPO0lBQ3pCO0lBSlYsWUFDNEIsZ0JBQTBCLEVBQzFCLGFBQTZCLEVBQ3RCLG1CQUFrQyxFQUMzRCxlQUFnQztRQUhkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBVTtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDdEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFlO1FBQzNELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUUxQyxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ3hGLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQzFELENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7WUFDekMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDeEMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0E1Q1UsY0FBYyxrQkFHZixRQUFRLGFBQ1IsUUFBUSxhQUNSLGVBQWU7MkdBTGQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSTdCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZfV0lORE9XLCBJV2luZG93U2VydmljZSB9IGZyb20gJy4vd2luZG93JztcbmltcG9ydCB7IEZfTE9DQUxfU1RPUkFHRSwgSUxvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuL3BsYXRmb3JtLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEJyb3dzZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGluamVjdGVkRG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoRl9XSU5ET1cpIHByaXZhdGUgd2luZG93U2VydmljZTogSVdpbmRvd1NlcnZpY2UsXG4gICAgQEluamVjdChGX0xPQ0FMX1NUT1JBR0UpIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogSUxvY2FsU3RvcmFnZSxcbiAgICBwcml2YXRlIHBsYXRmb3JtU2VydmljZTogUGxhdGZvcm1TZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIGlzQnJvd3NlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybVNlcnZpY2UuaXNCcm93c2VyO1xuICB9XG5cbiAgcHVibGljIGdldCB3aW5kb3coKTogSVdpbmRvd1NlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLndpbmRvd1NlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvY2FsU3RvcmFnZSgpOiBJTG9jYWxTdG9yYWdlIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIGdldCBkb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0ZWREb2N1bWVudDtcbiAgfVxuXG4gIHB1YmxpYyB0b1BpeGVscyh2YWx1ZTogc3RyaW5nLCBjbGllbnRXaWR0aDogbnVtYmVyLCBjbGllbnRIZWlnaHQ6IG51bWJlciwgZm9udFNpemU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlLmVuZHNXaXRoKCdweCcpKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICBjb25zdCBwZXJjZW50YWdlID0gcGFyc2VGbG9hdCh2YWx1ZSkgLyAxMDA7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCkgKiBwZXJjZW50YWdlO1xuICAgIH0gZWxzZSBpZiAodmFsdWUuZW5kc1dpdGgoJ2VtJykpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSAqIHBhcnNlRmxvYXQoZm9udFNpemUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUuZW5kc1dpdGgoJ3JlbScpKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgKiBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmZvbnRTaXplKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCd2aCcpKSB7XG4gICAgICBjb25zdCB2aCA9IHRoaXMud2luZG93LmlubmVySGVpZ2h0IC8gMTAwO1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpICogdmg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgndncnKSkge1xuICAgICAgY29uc3QgdncgPSB0aGlzLndpbmRvdy5pbm5lcldpZHRoIC8gMTAwO1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpICogdnc7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICB9XG59XG4iXX0=