{"version":3,"file":"valcome-ng-screens.mjs","sources":["../../../projects/ng-screens/src/lib/screens.module.ts","../../../projects/ng-screens/src/lib/services/device.service.ts","../../../projects/ng-screens/src/lib/services/full-screen.service.ts","../../../projects/ng-screens/src/lib/services/orientation.service.ts","../../../projects/ng-screens/src/lib/services/screen-fit.service.ts","../../../projects/ng-screens/src/valcome-ng-screens.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\n@NgModule({\n  providers: []\n})\nexport class ScreensModule {\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { ScreensModule } from '../screens.module';\n\n@Injectable({ providedIn: ScreensModule })\nexport class DeviceService extends DeviceDetectorService {\n\n  public constructor(@Inject(PLATFORM_ID) platformId: Object) {\n    super(platformId);\n  }\n\n  public isMobileOrTablet(): boolean {\n    return this.isMobile() || this.isTablet();\n  }\n\n  public isSafari(): boolean {\n    return this.browser.toLowerCase().indexOf('safari') !== -1;\n  }\n\n  public isIOS(): boolean {\n    let ua = this.getUserAgent();\n    return !!ua?.match(/iPad/i) || !!ua?.match(/iPhone/i);\n  }\n\n  public getUserAgent(): string {\n    return window?.navigator?.userAgent;\n  }\n}\n","// @ts-ignore\nimport { BehaviorSubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { ScreensModule } from '../screens.module';\nimport screenfull, { Screenfull } from 'screenfull';\nimport { DeviceService } from './device.service';\n\nconst fullScreen = (screenfull.isEnabled) ? screenfull as Screenfull : undefined;\n\n@Injectable({ providedIn: ScreensModule })\nexport class FullScreenService {\n\n  public isFullScreen: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n  public constructor(private deviceService: DeviceService) {\n    this.setupFullScreenOnErrorListener();\n    this.listenToFullScreenChange();\n  }\n\n  public async goFullScreen(): Promise<void> {\n    if (fullScreen?.isEnabled) {\n      return fullScreen.request().catch();\n    }\n  }\n\n  public async toggleFullScreen(): Promise<void> {\n    if (fullScreen?.isEnabled) {\n      return fullScreen.toggle().catch();\n    }\n  }\n\n  public async goFullScreenIfMobile(): Promise<void> {\n    if (this.deviceService.isMobileOrTablet()) {\n      return this.goFullScreen();\n    }\n  }\n\n  private listenToFullScreenChange(): void {\n    if (fullScreen?.isEnabled) {\n      fullScreen.on('change', () => {\n        this.isFullScreen.next(fullScreen.isFullscreen);\n      });\n    }\n  }\n\n  private setupFullScreenOnErrorListener(): void {\n    if (fullScreen?.isEnabled) {\n      fullScreen.onerror(() => {\n        console.warn('Fullscreen not possible yet');\n      });\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ScreensModule } from '../screens.module';\nimport { DeviceService } from './device.service';\nimport { JsUtils } from '@valcome/ts-core';\n\n@Injectable({ providedIn: ScreensModule })\nexport class OrientationService {\n\n  public isLandscape: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n  public constructor(private deviceService: DeviceService) {\n    this.listenToOrientationChange();\n  }\n\n  public lockToLandscape(): void {\n    if ('orientation' in screen && screen.orientation) {\n      screen.orientation.lock('landscape')\n        .catch(() => console.log('Landscape not guaranteed'));\n    }\n  }\n\n  private listenToOrientationChange(): void {\n    window.addEventListener('orientationchange', () => {\n      JsUtils.callAfterStackResolved(\n        this.emitScreenOrientation.bind(this)\n      );\n    });\n    this.emitScreenOrientation();\n  }\n\n  private emitScreenOrientation(): void {\n    let isLandscape: boolean = this.getIsLandscapeFromBrowser();\n    this.isLandscape.next(isLandscape);\n  }\n\n  private getIsLandscapeFromBrowser(): boolean {\n    if (this.deviceService.isMobileOrTablet()) {\n      if (this.hasOrientationProperty() && screen.orientation.type) {\n        return this.getIsLandscapeFromType();\n      } else if (this.hasOrientationProperty() && screen.orientation.angle) {\n        return this.getIsLandscapeFromAngle();\n      } else {\n        return this.getIsLandscapeFromOrientation();\n      }\n    } else {\n      return true;\n    }\n  }\n\n  private hasOrientationProperty(): boolean {\n    return ('orientation' in screen && screen.orientation != null);\n  }\n\n  private getIsLandscapeFromType(): boolean {\n    return screen.orientation.type.indexOf('landscape') !== -1;\n  }\n\n  private getIsLandscapeFromAngle(): boolean {\n    return Math.abs(screen.orientation.angle) === 90;\n  }\n\n  private getIsLandscapeFromOrientation(): boolean {\n    // @ts-ignore\n    return Math.abs(window.orientation) === 90; // for bad browsers like safari\n  }\n}\n","// @ts-ignore\nimport * as getInnerHeight_ from 'ios-inner-height';\nimport { Injectable } from '@angular/core';\nimport { ScreensModule } from '../screens.module';\nimport { DeviceService } from './device.service';\n\nconst getInnerHeight = getInnerHeight_;\n\n@Injectable({ providedIn: ScreensModule })\nexport class ScreenFitService {\n\n  public constructor(private deviceService: DeviceService) {\n  }\n\n  public fitPage(): void {\n    let innerHeight: number = getInnerHeight();\n    let addition: number = 0;\n\n    if (this.deviceService.isIOS() && this.deviceService.isSafari()) {\n      addition = 1;\n    }\n\n    document.body.style.width = '100vw';\n    document.body.style.height = innerHeight + addition + 'px';\n  }\n\n  public resetPageFit(): void {\n    document.body.style.height = '100%';\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DeviceService"],"mappings":"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"}