import { is } from '@pilotlab/lux-is'; import {Orientation} from './appEnums'; /*====================================================================* ===== START: DeviceType *====================================================================*/ export enum DeviceType { DESKTOP, MOBILE } // End enum /*====================================================================* ===== START: IAppContext *====================================================================*/ export interface IAppContext { deviceTarget:DeviceType; widthPreferred:number; heightPreferred:number; isConstrainMin:boolean; isConstrainMax:boolean; } // End interface /*====================================================================* ===== START: AppContextBase *====================================================================*/ export class AppContextBase implements IAppContext { constructor(deviceTarget:DeviceType, widthPreferred?:number, heightPreferred?:number, isConstrainMin?:boolean, isConstrainMax?:boolean) { this.p_deviceTarget = deviceTarget; if (is.notEmpty(widthPreferred)) this.p_widthPreferred = widthPreferred; if (is.notEmpty(heightPreferred)) this.p_heightPreferred = heightPreferred; if (is.notEmpty(isConstrainMin)) this.p_isConstrainMin = isConstrainMin; if (is.notEmpty(isConstrainMax)) this.p_isConstrainMax = isConstrainMax; } get deviceTarget():DeviceType { return this.p_deviceTarget; } protected p_deviceTarget:DeviceType; get widthPreferred():number { return this.p_widthPreferred; } protected p_widthPreferred:number; get heightPreferred():number { return this.p_heightPreferred; } protected p_heightPreferred:number; get isConstrainMin():boolean { return this.p_isConstrainMin; } protected p_isConstrainMin:boolean = false; get isConstrainMax():boolean { return this.p_isConstrainMax; } protected p_isConstrainMax:boolean = false; } // End class /*====================================================================* ===== START: AppContextMobile *====================================================================*/ export class AppContextMobile extends AppContextBase { constructor( orientationMode:Orientation = Orientation.BOTH, widthPreferred?:number, heightPreferred?:number, emulationContext?:AppContextDesktopEmulation ) { super(DeviceType.MOBILE, widthPreferred, heightPreferred); this.p_orientationMode = orientationMode; if (is.notEmpty(emulationContext)) this.p_emulationContext = emulationContext; } get orientationMode():Orientation { return this.p_orientationMode; } protected p_orientationMode:Orientation = Orientation.VERTICAL; get emulationContext():AppContextDesktopEmulation { return this.p_emulationContext; } protected p_emulationContext:AppContextDesktopEmulation; } // End class /*====================================================================* ===== START: AppContextWebEmbedded *====================================================================*/ export class AppContextWebEmbedded extends AppContextBase { constructor(widthPreferred?:number, heightPreferred?:number) { super(DeviceType.DESKTOP, widthPreferred, heightPreferred); } } // End class /*====================================================================* ===== START: AppContextDesktop *====================================================================*/ export class AppContextDesktop extends AppContextBase { constructor(widthPreferred?:number, heightPreferred?:number, isConstrainMin?:boolean, isConstrainMax?:boolean) { super(DeviceType.DESKTOP, widthPreferred, heightPreferred, isConstrainMin, isConstrainMax); } get mobileOrientationMode():Orientation { return this.p_mobileOrientationMode; } protected p_mobileOrientationMode:Orientation = Orientation.VERTICAL; } // End class /*====================================================================* ===== START: AppContextDesktopEmulation *====================================================================*/ export class AppContextDesktopEmulation extends AppContextDesktop { constructor( deviceShellImageSrc?:string, deviceShellOrientation:Orientation = Orientation.VERTICAL, widthPreferred:number = 750, heightPreferred:number = 1334 ) { super(); this.p_deviceShellImageSrc = deviceShellImageSrc; this.p_mobileOrientationMode = deviceShellOrientation; this.p_appWidthPreferred = widthPreferred; this.p_appHeightPreferred = heightPreferred; } get deviceShellImageSrc():string { return this.p_deviceShellImageSrc; } protected p_deviceShellImageSrc:string; get appWidthPreferred():number { return this.p_appWidthPreferred; } protected p_appWidthPreferred:number; get appHeightPreferred():number { return this.p_appHeightPreferred; } protected p_appHeightPreferred:number; } // End class