UNPKG

@pepperi/ngx-lib

Version:

Pepperi Angular Components and Services

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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3NyYy9jb3JlL2xheW91dC9sYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR3RELDZCQUE2QjtBQUM3QixpRUFBaUU7QUFDakUsOEVBQThFO0FBQzlFLE1BQU0sZUFBZSxHQUFHO0lBQ3BCLElBQUk7SUFDSixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLElBQUk7SUFDSixJQUFJO0lBQ0osS0FBSztJQUNMLElBQUk7SUFDSixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUksQ0FBSSx1QkFBdUI7Q0FDbEMsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIsdURBQVMsQ0FBQTtJQUNULHFEQUFRLENBQUE7QUFDWixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQU1YO0FBTkQsV0FBWSxXQUFXO0lBQ25CLHlDQUFFLENBQUE7SUFDRix5Q0FBRSxDQUFBO0lBQ0YseUNBQUUsQ0FBQTtJQUNGLHlDQUFFLENBQUE7SUFDRix5Q0FBRSxDQUFBO0FBQ04sQ0FBQyxFQU5XLFdBQVcsS0FBWCxXQUFXLFFBTXRCO0FBS0QsTUFBTSxPQUFPLGFBQWE7SUFPdEIsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0Ms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VSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUM5RSxDQUFDO0lBRU0sS0FBSztRQUNSLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OzBFQXBGUSxhQUFhO3FEQUFiLGFBQWEsV0FBYixhQUFhLG1CQUZWLE1BQU07a0RBRVQsYUFBYTtjQUh6QixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuLy8gQ29uc3QgQklESV9SVExfTEFOR1MgQXJyYXlcclxuLy8gQklESV9SVExfTEFOR1MgcmVmOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JpZ2h0LXRvLWxlZnRcclxuLy8gVGFibGUgb2Ygc2NyaXB0cyBpbiBVbmljb2RlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TY3JpcHRfKFVuaWNvZGUpXHJcbmNvbnN0IF9CSURJX1JUTF9MQU5HUyA9IFtcclxuICAgICdhZScsXHQvKiBBdmVzdGFuICovXHJcbiAgICAnYXInLCAgIC8qICfYp9mE2LnYsdio2YrYqScsIEFyYWJpYyAqL1xyXG4gICAgJ2FyYycsICAvKiBBcmFtYWljICovXHJcbiAgICAnYmNjJywgIC8qICfYqNmE2YjahtuMINmF2qnYsdin2YbbjCcsIFNvdXRoZXJuIEJhbG9jaGkgKi9cclxuICAgICdicWknLCAgLyogJ9io2K7YqtmK2KfYsdmKJywgQmFrdGhpYXJpICovXHJcbiAgICAnY2tiJywgIC8qICdTb3JhbsOuIC8g2qnZiNix2K/bjCcsIFNvcmFuaSAqL1xyXG4gICAgJ2R2JywgICAvKiBEaGl2ZWhpICovXHJcbiAgICAnZmEnLCAgIC8qICfZgdin2LHYs9uMJywgUGVyc2lhbiAqL1xyXG4gICAgJ2dsaycsICAvKiAn2q/bjNmE2qnbjCcsIEdpbGFraSAqL1xyXG4gICAgJ2hlJywgICAvKiAn16LXkdeo15nXqicsIEhlYnJldyAqL1xyXG4gICAgJ2t1JywgICAvKiAnS3VyZMOuIC8g2YPZiNix2K/bjCcsIEt1cmRpc2ggKi9cclxuICAgICdtem4nLCAgLyogJ9mF2KfYstmQ2LHZiNmG24wnLCBNYXphbmRlcmFuaSAqL1xyXG4gICAgJ25xbycsICAvKiBOJ0tvICovXHJcbiAgICAncG5iJywgIC8qICfZvtmG2KzYp9io24wnLCBXZXN0ZXJuIFB1bmphYmkgKi9cclxuICAgICdwcycsICAgLyogJ9m+2prYqtmIJywgUGFzaHRvLCAqL1xyXG4gICAgJ3NkJywgICAvKiAn2LPZhtqM2YonLCBTaW5kaGkgKi9cclxuICAgICd1ZycsICAgLyogJ1V5Z2h1cmNoZSAvINim24fZiti624fYsdqG25UnLCBVeWdodXIgKi9cclxuICAgICd1cicsICAgLyogJ9in2LHYr9mIJywgVXJkdSAqL1xyXG4gICAgJ3lpJyAgICAvKiAn15nXmda015PXmdepJywgWWlkZGlzaCAqL1xyXG5dO1xyXG5cclxuZXhwb3J0IGVudW0gT1JJRU5UQVRJT04ge1xyXG4gICAgTGFuZHNjYXBlLFxyXG4gICAgUG9ydHJhaXQsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNDUkVFTl9TSVpFIHtcclxuICAgIFhMLFxyXG4gICAgTEcsXHJcbiAgICBNRCxcclxuICAgIFNNLFxyXG4gICAgWFMsXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZXNpemVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8U0NSRUVOX1NJWkU+O1xyXG5cclxuICAgIGdldCBvblJlc2l6ZSQoKTogT2JzZXJ2YWJsZTxTQ1JFRU5fU0laRT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc2l6ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMucmVzaXplU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QoU0NSRUVOX1NJWkUuTEcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHNjcmVlbiBzaXplLlxyXG4gICAgICogQHBhcmFtIHNpemUgVGhlIHNpemUgdG8gY2hhbmdlIHRvLlxyXG4gICAgICovXHJcbiAgICBvblJlc2l6ZShzaXplOiBTQ1JFRU5fU0laRSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVzaXplU3ViamVjdC5uZXh0KHNpemUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRPcmludGF0aW9uKCk6IE9SSUVOVEFUSU9OIHtcclxuICAgICAgICBpZiAod2luZG93LmlubmVySGVpZ2h0ID4gd2luZG93LmlubmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9SSUVOVEFUSU9OLlBvcnRyYWl0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPUklFTlRBVElPTi5MYW5kc2NhcGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTY3JlZW5XaWR0aCgpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCByZXRWYWwgPSAyNTAuMDtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMucmVzaXplU3ViamVjdC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuWFM6IHtcclxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuZ2V0T3JpbnRhdGlvbigpID09PSBPUklFTlRBVElPTi5MYW5kc2NhcGUgPyAxMzAuMCA6IDY1LjA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLlNNOlxyXG4gICAgICAgICAgICBjYXNlIFNDUkVFTl9TSVpFLk1EOiB7XHJcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0aGlzLmdldE9yaW50YXRpb24oKSA9PT0gT1JJRU5UQVRJT04uTGFuZHNjYXBlID8gMjIwLjAgOiAxNDAuMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuTEc6IHtcclxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuZ2V0T3JpbnRhdGlvbigpID09PSBPUklFTlRBVElPTi5MYW5kc2NhcGUgPyA0MDAuMCA6IDI1MC4wO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2NyZWVuSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IHJldFZhbCA9IDI1MC4wO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5yZXNpemVTdWJqZWN0LmdldFZhbHVlKCkpIHtcclxuICAgICAgICAgICAgY2FzZSBTQ1JFRU5fU0laRS5YUzoge1xyXG4gICAgICAgICAgICAgICAgcmV0VmFsID0gdGhpcy5nZXRPcmludGF0aW9uKCkgPT09IE9SSUVOVEFUSU9OLkxhbmRzY2FwZSA/IDY1LjAgOiAxMzAuMDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuU006XHJcbiAgICAgICAgICAgIGNhc2UgU0NSRUVOX1NJWkUuTUQ6IHtcclxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHRoaXMuZ2V0T3JpbnRhdGlvbigpID09PSBPUklFTlRBVElPTi5MYW5kc2NhcGUgPyAxNDAuMCA6IDIyMC4wO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBTQ1JFRU5fU0laRS5MRzoge1xyXG4gICAgICAgICAgICAgICAgcmV0VmFsID0gdGhpcy5nZXRPcmludGF0aW9uKCkgPT09IE9SSUVOVEFUSU9OLkxhbmRzY2FwZSA/IDI1MC4wIDogNDAwLjA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0VmFsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNjcmVlbkhlaWdodFB4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNjcmVlbldpZHRoUHgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q3VycmVudExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlICYmIHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nIHx8IG5hdmlnYXRvci5sYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNSdGwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgdXNlckxhbmcgPSB0aGlzLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xyXG4gICAgICAgIGNvbnN0IGlzUnRsID0gX0JJRElfUlRMX0xBTkdTLmluZGV4T2YodXNlckxhbmcpID49IDA7XHJcblxyXG4gICAgICAgIHJldHVybiBpc1J0bDtcclxuICAgIH1cclxufVxyXG4iXX0=