UNPKG

@furystack/shades

Version:

Google Authentication Provider for FuryStack

69 lines 2.78 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable } from '@furystack/inject'; import { ObservableValue } from '@furystack/utils'; export const ScreenSizes = ['xs', 'sm', 'md', 'lg', 'xl']; /** * Service for handling screen size changes */ let ScreenService = class ScreenService { getOrientation = () => (window.matchMedia?.('(orientation:landscape').matches ? 'landscape' : 'portrait'); /** * The definitions of the breakpoints */ breakpoints = { xl: { minSize: 1920 }, lg: { minSize: 1280 }, md: { minSize: 960 }, sm: { minSize: 600 }, xs: { minSize: 0 }, }; [Symbol.dispose]() { window.removeEventListener('resize', this.onResizeListener); } /** * Observers for the current screen size. Will refresh on resize */ screenSize = { atLeast: { xs: new ObservableValue(this.screenSizeAtLeast('xs')), sm: new ObservableValue(this.screenSizeAtLeast('sm')), md: new ObservableValue(this.screenSizeAtLeast('md')), lg: new ObservableValue(this.screenSizeAtLeast('lg')), xl: new ObservableValue(this.screenSizeAtLeast('xl')), }, }; screenSizeAtLeast(size) { return window.innerWidth >= this.breakpoints[size].minSize; } /** * Observable value for tracking the screen orientation */ orientation = new ObservableValue(this.getOrientation()); onResizeListener = () => { this.refreshValues(); }; refreshValues() { this.orientation.setValue(this.getOrientation()); ScreenSizes.forEach((size) => { this.screenSize.atLeast[size].setValue(this.screenSizeAtLeast(size)); }); } constructor() { window.addEventListener('resize', this.onResizeListener); this.refreshValues(); } }; ScreenService = __decorate([ Injectable({ lifetime: 'singleton' }), __metadata("design:paramtypes", []) ], ScreenService); export { ScreenService }; //# sourceMappingURL=screen-service.js.map