@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
JavaScript
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