@pie-players/pie-assessment-toolkit 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +520 -0
- package/dist/attempt/TestSession.d.ts +90 -0
- package/dist/attempt/TestSession.d.ts.map +1 -0
- package/dist/attempt/TestSession.js +174 -0
- package/dist/attempt/TestSession.js.map +1 -0
- package/dist/core/TypedEventBus.d.ts +48 -0
- package/dist/core/TypedEventBus.d.ts.map +1 -0
- package/dist/core/TypedEventBus.js +63 -0
- package/dist/core/TypedEventBus.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/item-loader.d.ts +45 -0
- package/dist/item-loader.d.ts.map +1 -0
- package/dist/item-loader.js +62 -0
- package/dist/item-loader.js.map +1 -0
- package/dist/player/AssessmentPlayer.d.ts +388 -0
- package/dist/player/AssessmentPlayer.d.ts.map +1 -0
- package/dist/player/AssessmentPlayer.js +965 -0
- package/dist/player/AssessmentPlayer.js.map +1 -0
- package/dist/player/index.d.ts +17 -0
- package/dist/player/index.d.ts.map +1 -0
- package/dist/player/index.js +15 -0
- package/dist/player/index.js.map +1 -0
- package/dist/player/navigation-types.d.ts +63 -0
- package/dist/player/navigation-types.d.ts.map +1 -0
- package/dist/player/navigation-types.js +7 -0
- package/dist/player/navigation-types.js.map +1 -0
- package/dist/player/qti-navigation.d.ts +29 -0
- package/dist/player/qti-navigation.d.ts.map +1 -0
- package/dist/player/qti-navigation.js +160 -0
- package/dist/player/qti-navigation.js.map +1 -0
- package/dist/reference-layout/index.d.ts +19 -0
- package/dist/reference-layout/index.d.ts.map +1 -0
- package/dist/reference-layout/index.js +20 -0
- package/dist/reference-layout/index.js.map +1 -0
- package/dist/services/AccessibilityCatalogResolver.d.ts +141 -0
- package/dist/services/AccessibilityCatalogResolver.d.ts.map +1 -0
- package/dist/services/AccessibilityCatalogResolver.js +249 -0
- package/dist/services/AccessibilityCatalogResolver.js.map +1 -0
- package/dist/services/AssessmentAuthoringService.d.ts +60 -0
- package/dist/services/AssessmentAuthoringService.d.ts.map +1 -0
- package/dist/services/AssessmentAuthoringService.js +183 -0
- package/dist/services/AssessmentAuthoringService.js.map +1 -0
- package/dist/services/ContextVariableStore.d.ts +114 -0
- package/dist/services/ContextVariableStore.d.ts.map +1 -0
- package/dist/services/ContextVariableStore.js +207 -0
- package/dist/services/ContextVariableStore.js.map +1 -0
- package/dist/services/ElementToolStateStore.d.ts +125 -0
- package/dist/services/ElementToolStateStore.d.ts.map +1 -0
- package/dist/services/ElementToolStateStore.js +200 -0
- package/dist/services/ElementToolStateStore.js.map +1 -0
- package/dist/services/HighlightCoordinator.d.ts +179 -0
- package/dist/services/HighlightCoordinator.d.ts.map +1 -0
- package/dist/services/HighlightCoordinator.js +446 -0
- package/dist/services/HighlightCoordinator.js.map +1 -0
- package/dist/services/I18nService.d.ts +121 -0
- package/dist/services/I18nService.d.ts.map +1 -0
- package/dist/services/I18nService.js +276 -0
- package/dist/services/I18nService.js.map +1 -0
- package/dist/services/PNPMapper.d.ts +71 -0
- package/dist/services/PNPMapper.d.ts.map +1 -0
- package/dist/services/PNPMapper.js +98 -0
- package/dist/services/PNPMapper.js.map +1 -0
- package/dist/services/PNPToolResolver.d.ts +127 -0
- package/dist/services/PNPToolResolver.d.ts.map +1 -0
- package/dist/services/PNPToolResolver.js +222 -0
- package/dist/services/PNPToolResolver.js.map +1 -0
- package/dist/services/SSMLExtractor.d.ts +61 -0
- package/dist/services/SSMLExtractor.d.ts.map +1 -0
- package/dist/services/SSMLExtractor.js +181 -0
- package/dist/services/SSMLExtractor.js.map +1 -0
- package/dist/services/TTSService.d.ts +162 -0
- package/dist/services/TTSService.d.ts.map +1 -0
- package/dist/services/TTSService.js +465 -0
- package/dist/services/TTSService.js.map +1 -0
- package/dist/services/ThemeProvider.d.ts +95 -0
- package/dist/services/ThemeProvider.d.ts.map +1 -0
- package/dist/services/ThemeProvider.js +299 -0
- package/dist/services/ThemeProvider.js.map +1 -0
- package/dist/services/ToolConfigResolver.d.ts +162 -0
- package/dist/services/ToolConfigResolver.d.ts.map +1 -0
- package/dist/services/ToolConfigResolver.js +230 -0
- package/dist/services/ToolConfigResolver.js.map +1 -0
- package/dist/services/ToolCoordinator.d.ts +137 -0
- package/dist/services/ToolCoordinator.d.ts.map +1 -0
- package/dist/services/ToolCoordinator.js +318 -0
- package/dist/services/ToolCoordinator.js.map +1 -0
- package/dist/services/ToolkitCoordinator.d.ts +188 -0
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -0
- package/dist/services/ToolkitCoordinator.js +252 -0
- package/dist/services/ToolkitCoordinator.js.map +1 -0
- package/dist/services/interfaces.d.ts +391 -0
- package/dist/services/interfaces.d.ts.map +1 -0
- package/dist/services/interfaces.js +12 -0
- package/dist/services/interfaces.js.map +1 -0
- package/dist/services/tool-providers/DesmosToolProvider.d.ts +103 -0
- package/dist/services/tool-providers/DesmosToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/DesmosToolProvider.js +127 -0
- package/dist/services/tool-providers/DesmosToolProvider.js.map +1 -0
- package/dist/services/tool-providers/IToolProvider.d.ts +137 -0
- package/dist/services/tool-providers/IToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/IToolProvider.js +13 -0
- package/dist/services/tool-providers/IToolProvider.js.map +1 -0
- package/dist/services/tool-providers/TIToolProvider.d.ts +107 -0
- package/dist/services/tool-providers/TIToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/TIToolProvider.js +123 -0
- package/dist/services/tool-providers/TIToolProvider.js.map +1 -0
- package/dist/services/tool-providers/TTSToolProvider.d.ts +143 -0
- package/dist/services/tool-providers/TTSToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/TTSToolProvider.js +168 -0
- package/dist/services/tool-providers/TTSToolProvider.js.map +1 -0
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts +165 -0
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -0
- package/dist/services/tool-providers/ToolProviderRegistry.js +240 -0
- package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -0
- package/dist/services/tool-providers/index.d.ts +18 -0
- package/dist/services/tool-providers/index.d.ts.map +1 -0
- package/dist/services/tool-providers/index.js +15 -0
- package/dist/services/tool-providers/index.js.map +1 -0
- package/dist/services/tts/browser-provider.d.ts +24 -0
- package/dist/services/tts/browser-provider.d.ts.map +1 -0
- package/dist/services/tts/browser-provider.js +177 -0
- package/dist/services/tts/browser-provider.js.map +1 -0
- package/dist/services/tts/provider-interface.d.ts +131 -0
- package/dist/services/tts/provider-interface.d.ts.map +1 -0
- package/dist/services/tts/provider-interface.js +10 -0
- package/dist/services/tts/provider-interface.js.map +1 -0
- package/dist/tools/calculators/desmos-provider.d.ts +54 -0
- package/dist/tools/calculators/desmos-provider.d.ts.map +1 -0
- package/dist/tools/calculators/desmos-provider.js +384 -0
- package/dist/tools/calculators/desmos-provider.js.map +1 -0
- package/dist/tools/calculators/mathjs-provider.d.ts +50 -0
- package/dist/tools/calculators/mathjs-provider.d.ts.map +1 -0
- package/dist/tools/calculators/mathjs-provider.js +660 -0
- package/dist/tools/calculators/mathjs-provider.js.map +1 -0
- package/dist/tools/calculators/ti-provider.d.ts +122 -0
- package/dist/tools/calculators/ti-provider.d.ts.map +1 -0
- package/dist/tools/calculators/ti-provider.js +587 -0
- package/dist/tools/calculators/ti-provider.js.map +1 -0
- package/dist/tools/client.d.ts +17 -0
- package/dist/tools/client.d.ts.map +1 -0
- package/dist/tools/client.js +26 -0
- package/dist/tools/client.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/library-loader.d.ts +63 -0
- package/dist/tools/library-loader.d.ts.map +1 -0
- package/dist/tools/library-loader.js +292 -0
- package/dist/tools/library-loader.js.map +1 -0
- package/dist/tools/response-discovery.d.ts +72 -0
- package/dist/tools/response-discovery.d.ts.map +1 -0
- package/dist/tools/response-discovery.js +183 -0
- package/dist/tools/response-discovery.js.map +1 -0
- package/dist/tools/tool-coordinator.d.ts +76 -0
- package/dist/tools/tool-coordinator.d.ts.map +1 -0
- package/dist/tools/tool-coordinator.js +197 -0
- package/dist/tools/tool-coordinator.js.map +1 -0
- package/dist/tools/types.d.ts +427 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +13 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/variant-resolver.d.ts +48 -0
- package/dist/tools/variant-resolver.d.ts.map +1 -0
- package/dist/tools/variant-resolver.js +214 -0
- package/dist/tools/variant-resolver.js.map +1 -0
- package/dist/types/events.d.ts +157 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +11 -0
- package/dist/types/events.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
- package/src/README.md +626 -0
- package/src/components/QuestionToolBar.svelte +406 -0
- package/src/player/AssessmentLayout.svelte +68 -0
- package/src/player/README.md +154 -0
- package/src/reference-layout/README.md +135 -0
- package/src/reference-layout/ReferenceLayout.svelte +209 -0
- package/src/reference-layout/components/AssessmentContent.svelte +259 -0
- package/src/reference-layout/components/AssessmentFooter.svelte +89 -0
- package/src/reference-layout/components/AssessmentHeader.svelte +250 -0
- package/src/reference-layout/components/AssessmentNavigation.svelte +134 -0
- package/src/reference-layout/components/AssessmentToolsBar.svelte +176 -0
- package/src/reference-layout/components/ItemPanel.svelte +200 -0
- package/src/reference-layout/components/NotesPanel.svelte +179 -0
- package/src/reference-layout/components/PassagePanel.svelte +76 -0
- package/src/tools/README.md +616 -0
- package/src/tools/calculators/README.md +395 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AssessmentPlayer
|
|
3
|
+
*
|
|
4
|
+
* Reference implementation showing how to wire PIE Assessment Toolkit services
|
|
5
|
+
* together for a complete assessment player.
|
|
6
|
+
*
|
|
7
|
+
* This implementation provides:
|
|
8
|
+
* - Navigation through assessment items (linear or nonlinear)
|
|
9
|
+
* - QTI navigation model (testParts/sections/questionRefs)
|
|
10
|
+
* - Section awareness and rubric block support
|
|
11
|
+
* - Event-driven architecture using TypedEventBus
|
|
12
|
+
* - Session state management
|
|
13
|
+
* - TTS integration via TTSService
|
|
14
|
+
* - Theme support via ThemeProvider
|
|
15
|
+
* - Tool coordination (optional)
|
|
16
|
+
*
|
|
17
|
+
* Products can use this as-is, extend it, or use it as a pattern for their own implementation.
|
|
18
|
+
*/
|
|
19
|
+
import type { AssessmentAuthoringCallbacks, AssessmentEntity, ItemConfig, ItemEntity, RubricBlock } from "@pie-players/pie-players-shared/types";
|
|
20
|
+
import { type StorageLike, type TestSession } from "../attempt/TestSession";
|
|
21
|
+
import { type AssessmentToolkitEvents, HighlightCoordinator, I18nService, type ThemeConfig, ThemeProvider, ToolCoordinator, TTSService, TypedEventBus } from "../index";
|
|
22
|
+
import type { LoadItem } from "../item-loader";
|
|
23
|
+
import { AssessmentAuthoringService } from "../services/AssessmentAuthoringService";
|
|
24
|
+
import { type ResolvedToolConfig } from "../services/PNPToolResolver";
|
|
25
|
+
import { DesmosCalculatorProvider, TICalculatorProvider } from "../tools/client";
|
|
26
|
+
export interface ReferencePlayerConfig {
|
|
27
|
+
assessment: AssessmentEntity;
|
|
28
|
+
organizationId?: string | null;
|
|
29
|
+
bundleHost?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Item loader. Must be client-resolvable (can be backed by an API or local itemBank).
|
|
32
|
+
*/
|
|
33
|
+
loadItem: LoadItem;
|
|
34
|
+
/**
|
|
35
|
+
* Player mode (defaults to 'gather' for student assessment mode)
|
|
36
|
+
*/
|
|
37
|
+
mode?: "gather" | "view" | "evaluate" | "author";
|
|
38
|
+
/**
|
|
39
|
+
* Optional context to generate a deterministic TestSession identifier.
|
|
40
|
+
* If omitted, a stable anonymous device id is used.
|
|
41
|
+
*/
|
|
42
|
+
userId?: string | null;
|
|
43
|
+
assignmentId?: string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Optional storage injection for tests / custom persistence.
|
|
46
|
+
* Defaults to browser localStorage when available.
|
|
47
|
+
*/
|
|
48
|
+
attemptStorage?: StorageLike;
|
|
49
|
+
navigationMode?: "linear" | "nonlinear";
|
|
50
|
+
showSections?: boolean;
|
|
51
|
+
allowSectionNavigation?: boolean;
|
|
52
|
+
onSessionChanged?: (session: any) => void | Promise<void>;
|
|
53
|
+
onItemChanged?: (itemId: string, index: number) => void | Promise<void>;
|
|
54
|
+
onNavigationRequested?: (direction: "next" | "previous" | "index", targetIndex?: number) => void | Promise<void>;
|
|
55
|
+
authoringCallbacks?: AssessmentAuthoringCallbacks;
|
|
56
|
+
services?: {
|
|
57
|
+
eventBus?: TypedEventBus<AssessmentToolkitEvents>;
|
|
58
|
+
ttsService?: TTSService;
|
|
59
|
+
toolCoordinator?: ToolCoordinator;
|
|
60
|
+
themeProvider?: ThemeProvider;
|
|
61
|
+
highlightCoordinator?: HighlightCoordinator;
|
|
62
|
+
i18nService?: I18nService;
|
|
63
|
+
desmosProvider?: DesmosCalculatorProvider;
|
|
64
|
+
tiProvider?: TICalculatorProvider;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export interface NavigationState {
|
|
68
|
+
currentIndex: number;
|
|
69
|
+
totalItems: number;
|
|
70
|
+
canNext: boolean;
|
|
71
|
+
canPrevious: boolean;
|
|
72
|
+
isLoading: boolean;
|
|
73
|
+
currentSection?: {
|
|
74
|
+
id: string;
|
|
75
|
+
title?: string;
|
|
76
|
+
index: number;
|
|
77
|
+
};
|
|
78
|
+
totalSections?: number;
|
|
79
|
+
}
|
|
80
|
+
export declare class AssessmentPlayer {
|
|
81
|
+
private eventBus;
|
|
82
|
+
private ttsService;
|
|
83
|
+
private themeProvider;
|
|
84
|
+
private toolCoordinator;
|
|
85
|
+
private highlightCoordinator;
|
|
86
|
+
private i18nService;
|
|
87
|
+
private desmosProvider;
|
|
88
|
+
private tiProvider;
|
|
89
|
+
private authoringService;
|
|
90
|
+
private config;
|
|
91
|
+
private pnpResolver;
|
|
92
|
+
private currentTools;
|
|
93
|
+
private contextStore;
|
|
94
|
+
private assessmentFormat;
|
|
95
|
+
private questionRefs;
|
|
96
|
+
private navigationStructure;
|
|
97
|
+
private navigationMode;
|
|
98
|
+
private currentItemIndex;
|
|
99
|
+
private currentItem;
|
|
100
|
+
private isLoadingItem;
|
|
101
|
+
private sessionState;
|
|
102
|
+
private attemptStorage;
|
|
103
|
+
private testSession;
|
|
104
|
+
private ttsInitialized;
|
|
105
|
+
private ttsSpeaking;
|
|
106
|
+
private ttsPaused;
|
|
107
|
+
private ttsRootElement;
|
|
108
|
+
private navigationListeners;
|
|
109
|
+
private itemListeners;
|
|
110
|
+
private loadingListeners;
|
|
111
|
+
private sessionListeners;
|
|
112
|
+
private ttsStateListeners;
|
|
113
|
+
constructor(config: ReferencePlayerConfig);
|
|
114
|
+
private initializeOrLoadTestSession;
|
|
115
|
+
/**
|
|
116
|
+
* Set up internal event listeners
|
|
117
|
+
*/
|
|
118
|
+
private setupEventListeners;
|
|
119
|
+
/**
|
|
120
|
+
* Initialize TTS service
|
|
121
|
+
*/
|
|
122
|
+
private initializeTTS;
|
|
123
|
+
/**
|
|
124
|
+
* Get event bus for external listeners
|
|
125
|
+
*/
|
|
126
|
+
getEventBus(): TypedEventBus<AssessmentToolkitEvents>;
|
|
127
|
+
/**
|
|
128
|
+
* Get current navigation state
|
|
129
|
+
*/
|
|
130
|
+
getNavigationState(): NavigationState;
|
|
131
|
+
/**
|
|
132
|
+
* Flatten navigation structure to get all sections
|
|
133
|
+
*/
|
|
134
|
+
private flattenSections;
|
|
135
|
+
/**
|
|
136
|
+
* Check if a section contains a specific question
|
|
137
|
+
*/
|
|
138
|
+
private sectionContainsQuestion;
|
|
139
|
+
/**
|
|
140
|
+
* Get current item
|
|
141
|
+
*/
|
|
142
|
+
getCurrentItem(): ItemEntity | null;
|
|
143
|
+
/**
|
|
144
|
+
* Get current item config
|
|
145
|
+
*/
|
|
146
|
+
getCurrentItemConfig(): ItemConfig | null;
|
|
147
|
+
/**
|
|
148
|
+
* Get session state
|
|
149
|
+
*/
|
|
150
|
+
getSessionState(): {
|
|
151
|
+
id: string;
|
|
152
|
+
data: any[];
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Get the client-side QTI-like TestSession (attempt) state.
|
|
156
|
+
*/
|
|
157
|
+
getTestSession(): TestSession | null;
|
|
158
|
+
/**
|
|
159
|
+
* Get player environment
|
|
160
|
+
*/
|
|
161
|
+
getEnv(): {
|
|
162
|
+
mode: "view" | "gather" | "evaluate" | "author";
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Get ToolCoordinator for tool management
|
|
166
|
+
*/
|
|
167
|
+
getToolCoordinator(): ToolCoordinator;
|
|
168
|
+
/**
|
|
169
|
+
* Get HighlightCoordinator for annotation/TTS highlighting
|
|
170
|
+
*/
|
|
171
|
+
getHighlightCoordinator(): HighlightCoordinator | null;
|
|
172
|
+
/**
|
|
173
|
+
* Get ThemeProvider for accessibility theming
|
|
174
|
+
*/
|
|
175
|
+
getThemeProvider(): ThemeProvider | null;
|
|
176
|
+
/**
|
|
177
|
+
* Get I18nService for internationalization
|
|
178
|
+
*/
|
|
179
|
+
getI18nService(): I18nService;
|
|
180
|
+
/**
|
|
181
|
+
* Get Desmos calculator provider
|
|
182
|
+
*/
|
|
183
|
+
getDesmosProvider(): DesmosCalculatorProvider;
|
|
184
|
+
/**
|
|
185
|
+
* Get TI calculator provider
|
|
186
|
+
*/
|
|
187
|
+
getTIProvider(): TICalculatorProvider;
|
|
188
|
+
/**
|
|
189
|
+
* Navigate to specific item index
|
|
190
|
+
*/
|
|
191
|
+
navigate(index: number): Promise<void>;
|
|
192
|
+
/**
|
|
193
|
+
* Navigate to next item
|
|
194
|
+
*/
|
|
195
|
+
navigateNext(): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Navigate to previous item
|
|
198
|
+
*/
|
|
199
|
+
navigatePrevious(): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Start assessment (navigate to first item)
|
|
202
|
+
*/
|
|
203
|
+
start(): Promise<void>;
|
|
204
|
+
/**
|
|
205
|
+
* TTS: Read current question
|
|
206
|
+
*/
|
|
207
|
+
readQuestion(rootElement: HTMLElement): Promise<void>;
|
|
208
|
+
/**
|
|
209
|
+
* TTS: Toggle play/pause
|
|
210
|
+
*/
|
|
211
|
+
toggleTTS(rootElement?: HTMLElement): void;
|
|
212
|
+
/**
|
|
213
|
+
* TTS: Stop reading
|
|
214
|
+
*/
|
|
215
|
+
stopTTS(): void;
|
|
216
|
+
/**
|
|
217
|
+
* TTS: Get state
|
|
218
|
+
*/
|
|
219
|
+
getTTSState(): {
|
|
220
|
+
initialized: boolean;
|
|
221
|
+
speaking: boolean;
|
|
222
|
+
paused: boolean;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Apply theme
|
|
226
|
+
*/
|
|
227
|
+
applyTheme(theme: ThemeConfig): void;
|
|
228
|
+
/**
|
|
229
|
+
* Handle PIE player session-changed event
|
|
230
|
+
* Call this from your component when you receive session-changed from pie-iife-player
|
|
231
|
+
*/
|
|
232
|
+
handlePieSessionChanged(detail: any): void;
|
|
233
|
+
private persistAttemptNavigation;
|
|
234
|
+
private findSectionIdentifierForQuestion;
|
|
235
|
+
/**
|
|
236
|
+
* Subscribe to navigation state changes
|
|
237
|
+
*/
|
|
238
|
+
onNavigationChange(listener: (state: NavigationState) => void): () => void;
|
|
239
|
+
/**
|
|
240
|
+
* Subscribe to item changes
|
|
241
|
+
*/
|
|
242
|
+
onItemChange(listener: (item: ItemEntity | null) => void): () => void;
|
|
243
|
+
/**
|
|
244
|
+
* Subscribe to loading state changes
|
|
245
|
+
*/
|
|
246
|
+
onLoadingChange(listener: (isLoading: boolean) => void): () => void;
|
|
247
|
+
/**
|
|
248
|
+
* Subscribe to session changes
|
|
249
|
+
*/
|
|
250
|
+
onSessionChange(listener: (session: any) => void): () => void;
|
|
251
|
+
/**
|
|
252
|
+
* Subscribe to TTS state changes
|
|
253
|
+
*/
|
|
254
|
+
onTTSStateChange(listener: (speaking: boolean, paused: boolean) => void): () => void;
|
|
255
|
+
/**
|
|
256
|
+
* Notify listeners
|
|
257
|
+
*/
|
|
258
|
+
private notifyNavigationListeners;
|
|
259
|
+
private notifyItemListeners;
|
|
260
|
+
private notifyLoadingListeners;
|
|
261
|
+
private notifySessionListeners;
|
|
262
|
+
private notifyTTSStateListeners;
|
|
263
|
+
/**
|
|
264
|
+
* Extract text from element (simplified)
|
|
265
|
+
* Production would use extractTextFromElement from tts/utils
|
|
266
|
+
*/
|
|
267
|
+
private extractText;
|
|
268
|
+
/**
|
|
269
|
+
* Get current section's rubric blocks (passages, instructions)
|
|
270
|
+
*/
|
|
271
|
+
getCurrentSectionRubricBlocks(): RubricBlock[];
|
|
272
|
+
/**
|
|
273
|
+
* Extract rubric blocks for a specific section identifier
|
|
274
|
+
*/
|
|
275
|
+
private extractRubricBlocksForSection;
|
|
276
|
+
/**
|
|
277
|
+
* Recursively search for rubric blocks in sections
|
|
278
|
+
*/
|
|
279
|
+
private findRubricBlocksInSections;
|
|
280
|
+
/**
|
|
281
|
+
* Navigate to a specific section (goes to first item in section)
|
|
282
|
+
*/
|
|
283
|
+
navigateToSection(sectionIndex: number): Promise<void>;
|
|
284
|
+
/**
|
|
285
|
+
* Find the index of the first question in a section
|
|
286
|
+
*/
|
|
287
|
+
private findFirstQuestionInSection;
|
|
288
|
+
/**
|
|
289
|
+
* Get navigation mode (linear or nonlinear)
|
|
290
|
+
*/
|
|
291
|
+
getNavigationMode(): "linear" | "nonlinear";
|
|
292
|
+
/**
|
|
293
|
+
* Get all sections for display (e.g., in a section menu)
|
|
294
|
+
*/
|
|
295
|
+
getAllSections(): Array<{
|
|
296
|
+
id: string;
|
|
297
|
+
title?: string;
|
|
298
|
+
index: number;
|
|
299
|
+
}>;
|
|
300
|
+
/**
|
|
301
|
+
* Get the authoring service (only available in author mode)
|
|
302
|
+
*/
|
|
303
|
+
getAuthoringService(): AssessmentAuthoringService | null;
|
|
304
|
+
/**
|
|
305
|
+
* Enable or disable authoring mode
|
|
306
|
+
*/
|
|
307
|
+
setAuthoringMode(enabled: boolean): void;
|
|
308
|
+
/**
|
|
309
|
+
* Apply an assessment context profile
|
|
310
|
+
*/
|
|
311
|
+
/**
|
|
312
|
+
* Initialize tools from assessment PNP
|
|
313
|
+
*/
|
|
314
|
+
private initializeTools;
|
|
315
|
+
/**
|
|
316
|
+
* Apply theme from assessment settings
|
|
317
|
+
*/
|
|
318
|
+
private applyAssessmentTheme;
|
|
319
|
+
/**
|
|
320
|
+
* Auto-activate tools marked in PNP
|
|
321
|
+
*/
|
|
322
|
+
private autoActivateTools;
|
|
323
|
+
/**
|
|
324
|
+
* Configure calculator with settings
|
|
325
|
+
*/
|
|
326
|
+
private configureCalculator;
|
|
327
|
+
/**
|
|
328
|
+
* Convert tool ID to human-readable name
|
|
329
|
+
*/
|
|
330
|
+
private humanizeName;
|
|
331
|
+
/**
|
|
332
|
+
* Get available tools (resolved from PNP)
|
|
333
|
+
*/
|
|
334
|
+
getAvailableTools(): ResolvedToolConfig[];
|
|
335
|
+
/**
|
|
336
|
+
* Check if a specific tool is enabled
|
|
337
|
+
*/
|
|
338
|
+
isToolEnabled(toolId: string): boolean;
|
|
339
|
+
/**
|
|
340
|
+
* Check if a specific tool is required
|
|
341
|
+
*/
|
|
342
|
+
isToolRequired(toolId: string): boolean;
|
|
343
|
+
/**
|
|
344
|
+
* Get configuration for a specific tool
|
|
345
|
+
*/
|
|
346
|
+
getToolConfig(toolId: string): any | undefined;
|
|
347
|
+
/**
|
|
348
|
+
* Get layout preferences from settings
|
|
349
|
+
*/
|
|
350
|
+
getLayoutPreferences(): any;
|
|
351
|
+
/**
|
|
352
|
+
* Get context variable value
|
|
353
|
+
*
|
|
354
|
+
* @param identifier Variable identifier
|
|
355
|
+
* @returns Variable value or undefined
|
|
356
|
+
*/
|
|
357
|
+
getContextVariable(identifier: string): any;
|
|
358
|
+
/**
|
|
359
|
+
* Set context variable value
|
|
360
|
+
*
|
|
361
|
+
* @param identifier Variable identifier
|
|
362
|
+
* @param value New value
|
|
363
|
+
*/
|
|
364
|
+
setContextVariable(identifier: string, value: any): void;
|
|
365
|
+
/**
|
|
366
|
+
* Get all context variables as object
|
|
367
|
+
*
|
|
368
|
+
* @returns Object containing all context variables
|
|
369
|
+
*/
|
|
370
|
+
getContextVariables(): Record<string, any>;
|
|
371
|
+
/**
|
|
372
|
+
* Reset context variables to default values
|
|
373
|
+
*/
|
|
374
|
+
resetContextVariables(): void;
|
|
375
|
+
/**
|
|
376
|
+
* Restore context variables from session storage
|
|
377
|
+
*/
|
|
378
|
+
private restoreContextVariables;
|
|
379
|
+
/**
|
|
380
|
+
* Persist context variables to session storage
|
|
381
|
+
*/
|
|
382
|
+
private persistContextVariables;
|
|
383
|
+
/**
|
|
384
|
+
* Cleanup
|
|
385
|
+
*/
|
|
386
|
+
destroy(): void;
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=AssessmentPlayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssessmentPlayer.d.ts","sourceRoot":"","sources":["../../src/player/AssessmentPlayer.ts"],"names":[],"mappings":"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"}
|