mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-13 12:19:25 +00:00
refactor(web/engine): intro of text.EngineDeviceSpec
fix(web): missed change
This commit is contained in:
parent
534222fea5
commit
03481e017d
2 changed files with 81 additions and 0 deletions
|
|
@ -1,6 +1,7 @@
|
|||
// Includes version-related functionality
|
||||
///<reference path="utils/version.ts"/>
|
||||
///<reference path="utils/styleConstants.ts" />
|
||||
///<reference path="text/engineDeviceSpec.ts" />
|
||||
|
||||
// The Device object definition -------------------------------------------------
|
||||
|
||||
|
|
@ -249,5 +250,9 @@ namespace com.keyman {
|
|||
|
||||
return this._styles;
|
||||
}
|
||||
|
||||
public get headlessSpec(): text.EngineDeviceSpec {
|
||||
return new text.EngineDeviceSpec(this.browser, this.formFactor, this.OS, this.touchable);
|
||||
}
|
||||
}
|
||||
}
|
||||
76
web/source/text/engineDeviceSpec.ts
Normal file
76
web/source/text/engineDeviceSpec.ts
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
namespace com.keyman.text {
|
||||
export enum Browser {
|
||||
Chrome = 'chrome',
|
||||
Edge = 'edge',
|
||||
Firefox = 'firefox',
|
||||
Native = 'native', // Used by embedded mode
|
||||
Opera = 'opera',
|
||||
Safari = 'safari',
|
||||
Other = 'other'
|
||||
}
|
||||
|
||||
export enum OperatingSystem {
|
||||
Windows = 'Windows',
|
||||
macOS = 'MacOSX',
|
||||
Linux = 'Linux',
|
||||
Android = 'Android',
|
||||
iOS = 'iOS',
|
||||
Other = 'other'
|
||||
}
|
||||
|
||||
export enum FormFactor {
|
||||
Desktop = 'desktop',
|
||||
Phone = 'phone',
|
||||
Tablet = 'tablet'
|
||||
}
|
||||
|
||||
/**
|
||||
* This class provides an abstract version of com.keyman.Device that is headless-friendly,
|
||||
* containing only the information needed by web-core for text processing use.
|
||||
*/
|
||||
export class EngineDeviceSpec {
|
||||
readonly browser: Browser;
|
||||
readonly formFactor: FormFactor;
|
||||
readonly OS: OperatingSystem;
|
||||
readonly touchable: boolean;
|
||||
|
||||
constructor(browser: string, formFactor: string, OS: string, touchable: boolean) {
|
||||
switch(browser as Browser) {
|
||||
case Browser.Chrome:
|
||||
case Browser.Edge:
|
||||
case Browser.Firefox:
|
||||
case Browser.Native:
|
||||
case Browser.Opera:
|
||||
case Browser.Safari:
|
||||
this.browser = browser as Browser;
|
||||
break;
|
||||
default:
|
||||
this.browser = Browser.Other;
|
||||
}
|
||||
|
||||
switch(formFactor.toLowerCase()) {
|
||||
case FormFactor.Desktop:
|
||||
case FormFactor.Phone:
|
||||
case FormFactor.Tablet:
|
||||
this.formFactor = formFactor as FormFactor;
|
||||
break;
|
||||
default:
|
||||
throw ("Invalid form factor specified for device!");
|
||||
}
|
||||
|
||||
switch(OS.toLowerCase()) {
|
||||
case OperatingSystem.Windows.toLowerCase():
|
||||
case OperatingSystem.macOS.toLowerCase():
|
||||
case OperatingSystem.Linux.toLowerCase():
|
||||
case OperatingSystem.Android.toLowerCase():
|
||||
case OperatingSystem.iOS.toLowerCase():
|
||||
this.OS = OS as OperatingSystem;
|
||||
break;
|
||||
default:
|
||||
this.OS = OperatingSystem.Other;
|
||||
}
|
||||
|
||||
this.touchable = touchable;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue