@pilotlab/lux-tools
Version:
A luxurious user experience framework, developed by your friends at Pilot.
137 lines (101 loc) • 5.07 kB
text/typescript
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