Newer
Older
import { ResponseStatusType } from '@iqb/responses';
export type NavigationTarget = 'first' | 'last' | 'previous' | 'next' | 'end';
export type Progress = 'none' | 'some' | 'complete';
export type PagingMode = 'separate' | 'buttons' | 'concat-scroll' | 'concat-scroll-snap';
export enum ElementCodeStatusValue {
UNSET = 0, NOT_REACHED = 1, DISPLAYED = 2, VALUE_CHANGED = 3, INVALID = 4,
DERIVE_ERROR = 5, CODING_COMPLETE = 6, NO_CODING = 7, CODING_INCOMPLETE = 8, CODING_ERROR = 9
export interface StatusChangeElement {
id: string;
status: ResponseStatusType;
printMode?: 'off' | 'on' | 'on-with-ids';
unitNumber?: number;
unitTitle?: number;
unitId?: number;
logPolicy?: 'lean' | 'rich' | 'debug' | 'disabled';
startPage?: string;
enabledNavigationTargets?: NavigationTarget[];
directDownloadUrl?: string;
}
export interface UnitState {
dataParts?: Record<string, string>;
presentationProgress?: Progress;
responseProgress?: Progress;
unitStateDataType?: string;
}
export interface PlayerState {
validPages?: ValidPage[];
export interface ValidPage {
id: string;
label?: string;
}
export interface LogData {
timeStamp: number,
key: string,
content?: string
}
export interface VopStartCommand {
type: 'vopStartCommand';
sessionId: string;
unitDefinition?: string;
unitDefinitionType?: string;
unitState?: UnitState;
playerConfig?: PlayerConfig;
}
export interface VopRuntimeErrorNotification {
type: 'vopRuntimeErrorNotification';
sessionId: string;
code: string;
message?: string;
}
export interface VopNavigationDeniedNotification {
type: 'vopNavigationDeniedNotification';
sessionId: string;
reason?: Array<'presentationIncomplete' | 'responsesIncomplete'>
}
export interface VopPlayerConfigChangedNotification {
type: 'vopPlayerConfigChangedNotification'
sessionId: string;
playerConfig: PlayerConfig;
}
export interface VopPageNavigationCommand {
type: 'vopPageNavigationCommand';
sessionId: string;
target: string;
}
export interface VopReadyNotification {
metadata: VopMetaData;
export interface VopError {
code: string;
message?: string;
}
export interface VopMetaData {
$schema: string,
id: string;
type: string;
version: string;
specVersion: string;
metadataVersion: string
name: {
lang: string;
value: string;
}[];
description: {
lang: string;
value: string;
}[];
maintainer: {
name: Record<string, string>[];
email: string;
url: string;
}
code: {
repositoryType: string;
licenseType: string;
licenseUrl: string;
repositoryUrl: string;
}
notSupportedFeatures: string[];
}
export interface VopStateChangedNotification {
type: 'vopStateChangedNotification';
sessionId: string;
timeStamp: number;
unitState?: UnitState;
playerState?: PlayerState;
log?: LogData[];
}
export interface VopUnitNavigationRequestedNotification {
type: 'vopUnitNavigationRequestedNotification';
sessionId: string;
target: 'first' | 'last' | 'previous' | 'next' | 'end';
}
export interface VopWindowFocusChangedNotification {
type: 'vopWindowFocusChangedNotification';
timeStamp: number;
hasFocus: boolean;
}
export type VopMessage =
VopStartCommand |
VopPlayerConfigChangedNotification |
VopRuntimeErrorNotification |