UNPKG

@pepperi/lib

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.1.

127 lines 14.5 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { distinctUntilChanged } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; // Const BIDI_RTL_LANGS Array // BIDI_RTL_LANGS ref: http://en.wikipedia.org/wiki/Right-to-left // Table of scripts in Unicode: https://en.wikipedia.org/wiki/Script_(Unicode) const _BIDI_RTL_LANGS = [ 'ae', 'ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he', 'ku', 'mzn', 'nqo', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi' /* 'ייִדיש', Yiddish */ ]; export var ORIENTATION; (function (ORIENTATION) { ORIENTATION[ORIENTATION["Landscape"] = 0] = "Landscape"; ORIENTATION[ORIENTATION["Portrait"] = 1] = "Portrait"; })(ORIENTATION || (ORIENTATION = {})); export var SCREEN_SIZE; (function (SCREEN_SIZE) { SCREEN_SIZE[SCREEN_SIZE["XL"] = 0] = "XL"; SCREEN_SIZE[SCREEN_SIZE["LG"] = 1] = "LG"; SCREEN_SIZE[SCREEN_SIZE["MD"] = 2] = "MD"; SCREEN_SIZE[SCREEN_SIZE["SM"] = 3] = "SM"; SCREEN_SIZE[SCREEN_SIZE["XS"] = 4] = "XS"; })(SCREEN_SIZE || (SCREEN_SIZE = {})); export class LayoutService { constructor(translate) { this.translate = translate; this.resizeSubject = new BehaviorSubject(SCREEN_SIZE.LG); } get onResize$() { return this.resizeSubject.asObservable().pipe(distinctUntilChanged()); } /** * Set the current screen size. * @param size The size to change to. */ onResize(size) { this.resizeSubject.next(size); } getOrintation() { if (window.innerHeight > window.innerWidth) { return ORIENTATION.Portrait; } else { return ORIENTATION.Landscape; } } getScreenWidth() { let retVal = 250.0; switch (this.resizeSubject.getValue()) { case SCREEN_SIZE.XS: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 130.0 : 65.0; break; } case SCREEN_SIZE.SM: case SCREEN_SIZE.MD: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 220.0 : 140.0; break; } case SCREEN_SIZE.LG: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 400.0 : 250.0; break; } } return retVal; } getScreenHeight() { let retVal = 250.0; switch (this.resizeSubject.getValue()) { case SCREEN_SIZE.XS: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 65.0 : 130.0; break; } case SCREEN_SIZE.SM: case SCREEN_SIZE.MD: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 140.0 : 220.0; break; } case SCREEN_SIZE.LG: { retVal = this.getOrintation() === ORIENTATION.Landscape ? 250.0 : 400.0; break; } } return retVal; } getScreenHeightPx() { return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; } getScreenWidthPx() { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; } getCurrentLanguage() { return this.translate && this.translate.currentLang || navigator.language; } isRtl() { const userLang = this.getCurrentLanguage(); const isRtl = _BIDI_RTL_LANGS.indexOf(userLang) >= 0; return isRtl; } } LayoutService.ɵfac = function LayoutService_Factory(t) { return new (t || LayoutService)(i0.ɵɵinject(i1.TranslateService)); }; LayoutService.ɵprov = i0.ɵɵdefineInjectable({ token: LayoutService, factory: LayoutService.ɵfac, providedIn: 'root' }); /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(LayoutService, [{ type: Injectable, args: [{ providedIn: 'root', }] }], function () { return [{ type: i1.TranslateService }]; }, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wZXBwZXJpLWxpYi9zcmMvY29yZS9sYXlvdXQvbGF5b3V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUF1QixlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd0RCw2QkFBNkI7QUFDN0IsaUVBQWlFO0FBQ2pFLDhFQUE4RTtBQUM5RSxNQUFNLGVBQWUsR0FBRztJQUNwQixJQUFJO0lBQ0osSUFBSTtJQUNKLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxJQUFJO0lBQ0osSUFBSTtJQUNKLEtBQUs7SUFDTCxJQUFJO0lBQ0osSUFBSTtJQUNKLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJLENBQUksdUJBQXVCO0NBQ2xDLENBQUM7QUFFRixNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ25CLHVEQUFTLENBQUE7SUFDVCxxREFBUSxDQUFBO0FBQ1osQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FNWDtBQU5ELFdBQVksV0FBVztJQUNuQix5Q0FBRSxDQUFBO0lBQ0YseUNBQUUsQ0FBQTtJQUNGLHlDQUFFLENBQUE7SUFDRix5Q0FBRSxDQUFBO0lBQ0YseUNBQUUsQ0FBQTtBQUNOLENBQUMsRUFOVyxXQUFXLEtBQVgsV0FBVyxRQU10QjtBQUtELE1BQU0sT0FBTyxhQUFhO0lBT3RCLFlBQW9CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FB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LFVBQVUsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNsRyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDOUUsQ0FBQztJQUVNLEtBQUs7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzswRUFwRlEsYUFBYTtxREFBYixhQUFhLFdBQWIsYUFBYSxtQkFGVixNQUFNO2tEQUVULGFBQWE7Y0FIekIsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8vIENvbnN0IEJJRElfUlRMX0xBTkdTIEFycmF5XHJcbi8vIEJJRElfUlRMX0xBTkdTIHJlZjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SaWdodC10by1sZWZ0XHJcbi8vIFRhYmxlIG9mIHNjcmlwdHMgaW4gVW5pY29kZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2NyaXB0XyhVbmljb2RlKVxyXG5jb25zdCBfQklESV9SVExfTEFOR1MgPSBbXHJcbiAgICAnYWUnLFx0LyogQXZlc3RhbiAqL1xyXG4gICAgJ2FyJywgICAvKiAn2KfZhNi52LHYqNmK2KknLCBBcmFiaWMgKi9cclxuICAgICdhcmMnLCAgLyogQXJhbWFpYyAqL1xyXG4gICAgJ2JjYycsICAvKiAn2KjZhNmI2obbjCDZhdqp2LHYp9mG24wnLCBTb3V0aGVybiBCYWxvY2hpICovXHJcbiAgICAnYnFpJywgIC8qICfYqNiu2KrZitin2LHZiicsIEJha3RoaWFyaSAqL1xyXG4gICAgJ2NrYicsICAvKiAnU29yYW7DriAvINqp2YjYsdiv24wnLCBTb3JhbmkgKi9cclxuICAgICdkdicsICAgLyogRGhpdmVoaSAqL1xyXG4gICAgJ2ZhJywgICAvKiAn2YHYp9ix2LPbjCcsIFBlcnNpYW4gKi9cclxuICAgICdnbGsnLCAgLyogJ9qv24zZhNqp24wnLCBHaWxha2kgKi9cclxuICAgICdoZScsICAgLyogJ9ei15HXqNeZ16onLCBIZWJyZXcgKi9cclxuICAgICdrdScsICAgLyogJ0t1cmTDriAvINmD2YjYsdiv24wnLCBLdXJkaXNoICovXHJcbiAgICAnbXpuJywgIC8qICfZhdin2LLZkNix2YjZhtuMJywgTWF6YW5kZXJhbmkgKi9cclxuICAgICducW8nLCAgLyogTidLbyAqL1xyXG4gICAgJ3BuYicsICAvKiAn2b7Zhtis2KfYqNuMJywgV2VzdGVybiBQdW5qYWJpICovXHJcbiAgICAncHMnLCAgIC8qICfZvtqa2KrZiCcsIFBhc2h0bywgKi9cclxuICAgICdzZCcsICAgLyogJ9iz2YbajNmKJywgU2luZGhpICovXHJcbiAgICAndWcnLCAgIC8qICdVeWdodXJjaGUgLyDYptuH2YrYutuH2LHahtuVJywgVXlnaHVyICovXHJcbiAgICAndXInLCAgIC8qICfYp9ix2K/ZiCcsIFVyZHUgKi9cclxuICAgICd5aScgICAgLyogJ9eZ15nWtNeT15nXqScsIFlpZGRpc2ggKi9cclxuXTtcclxuXHJcbmV4cG9ydCBlbnVtIE9SSUVOVEFUSU9OIHtcclxuICAgIExhbmRzY2FwZSxcclxuICAgIFBvcnRyYWl0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTQ1JFRU5fU0laRSB7XHJcbiAgICBYTCxcclxuICAgIExHLFxyXG4gICAgTUQsXHJcbiAgICBTTSxcclxuICAgIFhTLFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVzaXplU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFNDUkVFTl9TSVpFPjtcclxuXHJcbiAgICBnZXQgb25SZXNpemUkKCk6IE9ic2VydmFibGU8U0NSRUVOX1NJWkU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFNDUkVFTl9TSVpFLkxHKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgY3VycmVudCBzY3JlZW4gc2l6ZS5cclxuICAgICAqIEBwYXJhbSBzaXplIFRoZSBzaXplIHRvIGNoYW5nZSB0by5cclxuICAgICAqL1xyXG4gICAgb25SZXNpemUoc2l6ZTogU0NSRUVOX1NJWkUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZVN1YmplY3QubmV4dChzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0T3JpbnRhdGlvbigpOiBPUklFTlRBVElPTiB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lckhlaWdodCA+IHdpbmRvdy5pbm5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPUklFTlRBVElPTi5Qb3J0cmFpdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gT1JJRU5UQVRJT04uTGFuZHNjYXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2NyZWVuV2lkdGgoKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgcmV0VmFsID0gMjUwLjA7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnJlc2l6ZVN1YmplY3QuZ2V0VmFsdWUoKSkge1xyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLlhTOiB7XHJcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0aGlzLmdldE9yaW50YXRpb24oKSA9PT0gT1JJRU5UQVRJT04uTGFuZHNjYXBlID8gMTMwLjAgOiA2NS4wO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBTQ1JFRU5fU0laRS5TTTpcclxuICAgICAgICAgICAgY2FzZSBTQ1JFRU5fU0laRS5NRDoge1xyXG4gICAgICAgICAgICAgICAgcmV0VmFsID0gdGhpcy5nZXRPcmludGF0aW9uKCkgPT09IE9SSUVOVEFUSU9OLkxhbmRzY2FwZSA/IDIyMC4wIDogMTQwLjA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLkxHOiB7XHJcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0aGlzLmdldE9yaW50YXRpb24oKSA9PT0gT1JJRU5UQVRJT04uTGFuZHNjYXBlID8gNDAwLjAgOiAyNTAuMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXRWYWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNjcmVlbkhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCByZXRWYWwgPSAyNTAuMDtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXplU3ViamVjdC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuWFM6IHtcclxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuZ2V0T3JpbnRhdGlvbigpID09PSBPUklFTlRBVElPTi5MYW5kc2NhcGUgPyA2NS4wIDogMTMwLjA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLlNNOlxyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLk1EOiB7XHJcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0aGlzLmdldE9yaW50YXRpb24oKSA9PT0gT1JJRU5UQVRJT04uTGFuZHNjYXBlID8gMTQwLjAgOiAyMjAuMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuTEc6IHtcclxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuZ2V0T3JpbnRhdGlvbigpID09PSBPUklFTlRBVElPTi5MYW5kc2NhcGUgPyAyNTAuMCA6IDQwMC4wO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTY3JlZW5IZWlnaHRQeCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTY3JlZW5XaWR0aFB4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZSAmJiB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzUnRsKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJMYW5nID0gdGhpcy5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuICAgICAgICBjb25zdCBpc1J0bCA9IF9CSURJX1JUTF9MQU5HUy5pbmRleE9mKHVzZXJMYW5nKSA+PSAwO1xyXG5cclxuICAgICAgICByZXR1cm4gaXNSdGw7XHJcbiAgICB9XHJcbn1cclxuIl19