@pie-players/pie-assessment-toolkit 0.2.2 → 0.2.4
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 +159 -1
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/player/AssessmentPlayer.d.ts +9 -0
- package/dist/player/AssessmentPlayer.d.ts.map +1 -1
- package/dist/player/AssessmentPlayer.js +13 -4
- package/dist/player/AssessmentPlayer.js.map +1 -1
- package/dist/services/AnnotationToolbarConfig.d.ts +134 -0
- package/dist/services/AnnotationToolbarConfig.d.ts.map +1 -0
- package/dist/services/AnnotationToolbarConfig.js +100 -0
- package/dist/services/AnnotationToolbarConfig.js.map +1 -0
- package/dist/services/HighlightCoordinator.d.ts +23 -10
- package/dist/services/HighlightCoordinator.d.ts.map +1 -1
- package/dist/services/HighlightCoordinator.js +87 -40
- package/dist/services/HighlightCoordinator.js.map +1 -1
- package/dist/services/PNPToolResolver.d.ts +171 -15
- package/dist/services/PNPToolResolver.d.ts.map +1 -1
- package/dist/services/PNPToolResolver.js +324 -32
- package/dist/services/PNPToolResolver.js.map +1 -1
- package/dist/services/RangeSerializer.d.ts +119 -0
- package/dist/services/RangeSerializer.d.ts.map +1 -0
- package/dist/services/RangeSerializer.js +199 -0
- package/dist/services/RangeSerializer.js.map +1 -0
- package/dist/services/TTSService.d.ts +4 -1
- package/dist/services/TTSService.d.ts.map +1 -1
- package/dist/services/TTSService.js +58 -3
- package/dist/services/TTSService.js.map +1 -1
- package/dist/services/ToolRegistry.d.ts +225 -0
- package/dist/services/ToolRegistry.d.ts.map +1 -0
- package/dist/services/ToolRegistry.js +248 -0
- package/dist/services/ToolRegistry.js.map +1 -0
- package/dist/services/ToolkitCoordinator.d.ts +22 -0
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
- package/dist/services/ToolkitCoordinator.js +44 -0
- package/dist/services/ToolkitCoordinator.js.map +1 -1
- package/dist/services/createDefaultToolRegistry.d.ts +72 -0
- package/dist/services/createDefaultToolRegistry.d.ts.map +1 -0
- package/dist/services/createDefaultToolRegistry.js +147 -0
- package/dist/services/createDefaultToolRegistry.js.map +1 -0
- package/dist/services/interfaces.d.ts +8 -0
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/interfaces.js.map +1 -1
- package/dist/services/pnp-provenance.d.ts +167 -0
- package/dist/services/pnp-provenance.d.ts.map +1 -0
- package/dist/services/pnp-provenance.js +230 -0
- package/dist/services/pnp-provenance.js.map +1 -0
- package/dist/services/pnp-standard-features.d.ts +240 -0
- package/dist/services/pnp-standard-features.d.ts.map +1 -0
- package/dist/services/pnp-standard-features.js +342 -0
- package/dist/services/pnp-standard-features.js.map +1 -0
- package/dist/services/tool-context.d.ts +150 -0
- package/dist/services/tool-context.d.ts.map +1 -0
- package/dist/services/tool-context.js +157 -0
- package/dist/services/tool-context.js.map +1 -0
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -1
- package/dist/services/tool-providers/ToolProviderRegistry.js +7 -7
- package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -1
- package/dist/tools/registrations/accessibility-tools.d.ts +43 -0
- package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -0
- package/dist/tools/registrations/accessibility-tools.js +230 -0
- package/dist/tools/registrations/accessibility-tools.js.map +1 -0
- package/dist/tools/registrations/calculator.d.ts +21 -0
- package/dist/tools/registrations/calculator.d.ts.map +1 -0
- package/dist/tools/registrations/calculator.js +98 -0
- package/dist/tools/registrations/calculator.js.map +1 -0
- package/dist/tools/registrations/interaction-tools.d.ts +28 -0
- package/dist/tools/registrations/interaction-tools.d.ts.map +1 -0
- package/dist/tools/registrations/interaction-tools.js +124 -0
- package/dist/tools/registrations/interaction-tools.js.map +1 -0
- package/dist/tools/registrations/measurement-tools.d.ts +25 -0
- package/dist/tools/registrations/measurement-tools.d.ts.map +1 -0
- package/dist/tools/registrations/measurement-tools.js +112 -0
- package/dist/tools/registrations/measurement-tools.js.map +1 -0
- package/dist/tools/registrations/subject-specific-tools.d.ts +28 -0
- package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -0
- package/dist/tools/registrations/subject-specific-tools.js +118 -0
- package/dist/tools/registrations/subject-specific-tools.js.map +1 -0
- package/dist/tools/registrations/tts.d.ts +20 -0
- package/dist/tools/registrations/tts.d.ts.map +1 -0
- package/dist/tools/registrations/tts.js +86 -0
- package/dist/tools/registrations/tts.js.map +1 -0
- package/dist/tools/tool-tag-map.d.ts +24 -0
- package/dist/tools/tool-tag-map.d.ts.map +1 -0
- package/dist/tools/tool-tag-map.js +38 -0
- package/dist/tools/tool-tag-map.js.map +1 -0
- package/package.json +15 -7
- package/src/README.md +25 -11
- package/src/components/PNPProfileTester.example.svelte +188 -0
- package/src/components/PNPProfileTester.svelte +397 -0
- package/src/components/PNPProvenanceViewer.svelte +260 -0
- package/src/components/QuestionToolBar.svelte +160 -83
- package/src/components/ToolButton.svelte +146 -0
- package/src/components/ToolButtonGroup.svelte +109 -0
- package/src/reference-layout/ReferenceLayout.svelte +5 -13
- package/dist/services/PNPMapper.d.ts +0 -71
- package/dist/services/PNPMapper.d.ts.map +0 -1
- package/dist/services/PNPMapper.js +0 -98
- package/dist/services/PNPMapper.js.map +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Context Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the context types passed to tools for making visibility and behavior decisions.
|
|
5
|
+
* Each context level provides increasingly specific information about where the tool is being used.
|
|
6
|
+
*/
|
|
7
|
+
import type { AssessmentEntity, AssessmentItemRef, ItemEntity, PassageEntity, QtiAssessmentSection, RubricBlock } from "@pie-players/pie-players-shared/types";
|
|
8
|
+
/**
|
|
9
|
+
* Tool placement levels - where a tool can appear in the UI
|
|
10
|
+
*/
|
|
11
|
+
export type ToolLevel = "assessment" | "section" | "item" | "passage" | "rubric" | "element";
|
|
12
|
+
/**
|
|
13
|
+
* Base context available to all tools
|
|
14
|
+
*/
|
|
15
|
+
export interface BaseToolContext {
|
|
16
|
+
/** The level at which this tool is being evaluated */
|
|
17
|
+
level: ToolLevel;
|
|
18
|
+
/** The full assessment entity */
|
|
19
|
+
assessment: AssessmentEntity;
|
|
20
|
+
/** Current section, if applicable */
|
|
21
|
+
section?: QtiAssessmentSection;
|
|
22
|
+
/** Reference to the current item (always available except at assessment level) */
|
|
23
|
+
itemRef?: AssessmentItemRef;
|
|
24
|
+
/** DOM container where the tool will be rendered */
|
|
25
|
+
container?: HTMLElement;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Context for assessment-level tools
|
|
29
|
+
*/
|
|
30
|
+
export interface AssessmentToolContext extends BaseToolContext {
|
|
31
|
+
level: "assessment";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Context for section-level tools
|
|
35
|
+
*/
|
|
36
|
+
export interface SectionToolContext extends BaseToolContext {
|
|
37
|
+
level: "section";
|
|
38
|
+
section: QtiAssessmentSection;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Context for item-level tools (question toolbar)
|
|
42
|
+
*/
|
|
43
|
+
export interface ItemToolContext extends BaseToolContext {
|
|
44
|
+
level: "item";
|
|
45
|
+
itemRef: AssessmentItemRef;
|
|
46
|
+
item: ItemEntity;
|
|
47
|
+
/** Passage entity if this item is associated with a passage */
|
|
48
|
+
passage?: PassageEntity;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Context for passage-level tools (passage header)
|
|
52
|
+
*
|
|
53
|
+
* Passages can appear as:
|
|
54
|
+
* - Standalone passage entities associated with items
|
|
55
|
+
* - RubricBlock with class="stimulus" containing embedded passage
|
|
56
|
+
*/
|
|
57
|
+
export interface PassageToolContext extends BaseToolContext {
|
|
58
|
+
level: "passage";
|
|
59
|
+
itemRef?: AssessmentItemRef;
|
|
60
|
+
passage: PassageEntity;
|
|
61
|
+
/** Items associated with this passage (if applicable) */
|
|
62
|
+
items?: ItemEntity[];
|
|
63
|
+
/** RubricBlock containing this passage (if from rubric) */
|
|
64
|
+
rubricBlock?: RubricBlock;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Context for rubric block tools
|
|
68
|
+
*
|
|
69
|
+
* RubricBlocks can contain:
|
|
70
|
+
* - Instructions (class="instructions")
|
|
71
|
+
* - Rubrics (class="rubric")
|
|
72
|
+
* - Stimulus/passages (class="stimulus" with embedded passage)
|
|
73
|
+
* - Simple HTML content
|
|
74
|
+
*/
|
|
75
|
+
export interface RubricToolContext extends BaseToolContext {
|
|
76
|
+
level: "rubric";
|
|
77
|
+
rubricBlock: RubricBlock;
|
|
78
|
+
/** Section containing this rubric block */
|
|
79
|
+
section: QtiAssessmentSection;
|
|
80
|
+
/** If rubric contains a passage (class="stimulus") */
|
|
81
|
+
passage?: PassageEntity;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Context for element-level tools (inline with interaction)
|
|
85
|
+
*
|
|
86
|
+
* Note: Element-level context uses the PIE interaction element ID
|
|
87
|
+
* and provides access to the full item config for content inspection.
|
|
88
|
+
*/
|
|
89
|
+
export interface ElementToolContext extends BaseToolContext {
|
|
90
|
+
level: "element";
|
|
91
|
+
itemRef: AssessmentItemRef;
|
|
92
|
+
item: ItemEntity;
|
|
93
|
+
/** The PIE element/interaction ID */
|
|
94
|
+
elementId: string;
|
|
95
|
+
/** Passage entity if this item is associated with a passage */
|
|
96
|
+
passage?: PassageEntity;
|
|
97
|
+
/** DOM element that triggered the tool (e.g., the specific input field) */
|
|
98
|
+
triggerElement?: HTMLElement;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Union type of all tool contexts
|
|
102
|
+
*/
|
|
103
|
+
export type ToolContext = AssessmentToolContext | SectionToolContext | ItemToolContext | PassageToolContext | RubricToolContext | ElementToolContext;
|
|
104
|
+
/**
|
|
105
|
+
* Type guard to check if context is at assessment level
|
|
106
|
+
*/
|
|
107
|
+
export declare function isAssessmentContext(context: ToolContext): context is AssessmentToolContext;
|
|
108
|
+
/**
|
|
109
|
+
* Type guard to check if context is at section level
|
|
110
|
+
*/
|
|
111
|
+
export declare function isSectionContext(context: ToolContext): context is SectionToolContext;
|
|
112
|
+
/**
|
|
113
|
+
* Type guard to check if context is at item level
|
|
114
|
+
*/
|
|
115
|
+
export declare function isItemContext(context: ToolContext): context is ItemToolContext;
|
|
116
|
+
/**
|
|
117
|
+
* Type guard to check if context is at passage level
|
|
118
|
+
*/
|
|
119
|
+
export declare function isPassageContext(context: ToolContext): context is PassageToolContext;
|
|
120
|
+
/**
|
|
121
|
+
* Type guard to check if context is at rubric level
|
|
122
|
+
*/
|
|
123
|
+
export declare function isRubricContext(context: ToolContext): context is RubricToolContext;
|
|
124
|
+
/**
|
|
125
|
+
* Type guard to check if context is at element level
|
|
126
|
+
*/
|
|
127
|
+
export declare function isElementContext(context: ToolContext): context is ElementToolContext;
|
|
128
|
+
/**
|
|
129
|
+
* Helper to extract text content from an item or element for analysis
|
|
130
|
+
*/
|
|
131
|
+
export declare function extractTextContent(context: ToolContext): string;
|
|
132
|
+
/**
|
|
133
|
+
* Helper to check if context contains mathematical content
|
|
134
|
+
* (Basic heuristic - can be overridden by tools)
|
|
135
|
+
*/
|
|
136
|
+
export declare function hasMathContent(context: ToolContext): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Helper to check if context contains choice-based interactions
|
|
139
|
+
*/
|
|
140
|
+
export declare function hasChoiceInteraction(context: ToolContext): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Helper to check if context contains text that can be read aloud
|
|
143
|
+
*/
|
|
144
|
+
export declare function hasReadableText(context: ToolContext): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Helper to check if context contains science content
|
|
147
|
+
* (Basic heuristic - can be overridden by tools)
|
|
148
|
+
*/
|
|
149
|
+
export declare function hasScienceContent(context: ToolContext): boolean;
|
|
150
|
+
//# sourceMappingURL=tool-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-context.d.ts","sourceRoot":"","sources":["../../src/services/tool-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Context Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the context types passed to tools for making visibility and behavior decisions.
|
|
5
|
+
* Each context level provides increasingly specific information about where the tool is being used.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Type guard to check if context is at assessment level
|
|
9
|
+
*/
|
|
10
|
+
export function isAssessmentContext(context) {
|
|
11
|
+
return context.level === "assessment";
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Type guard to check if context is at section level
|
|
15
|
+
*/
|
|
16
|
+
export function isSectionContext(context) {
|
|
17
|
+
return context.level === "section";
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Type guard to check if context is at item level
|
|
21
|
+
*/
|
|
22
|
+
export function isItemContext(context) {
|
|
23
|
+
return context.level === "item";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if context is at passage level
|
|
27
|
+
*/
|
|
28
|
+
export function isPassageContext(context) {
|
|
29
|
+
return context.level === "passage";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type guard to check if context is at rubric level
|
|
33
|
+
*/
|
|
34
|
+
export function isRubricContext(context) {
|
|
35
|
+
return context.level === "rubric";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Type guard to check if context is at element level
|
|
39
|
+
*/
|
|
40
|
+
export function isElementContext(context) {
|
|
41
|
+
return context.level === "element";
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Helper to extract text content from an item or element for analysis
|
|
45
|
+
*/
|
|
46
|
+
export function extractTextContent(context) {
|
|
47
|
+
if (isElementContext(context)) {
|
|
48
|
+
// Extract text from specific element in the config
|
|
49
|
+
const config = context.item.config;
|
|
50
|
+
if (!config)
|
|
51
|
+
return "";
|
|
52
|
+
// Try to find element markup
|
|
53
|
+
const elementMarkup = config.elements?.[context.elementId];
|
|
54
|
+
if (elementMarkup) {
|
|
55
|
+
// Strip HTML tags for text analysis
|
|
56
|
+
return elementMarkup.replace(/<[^>]*>/g, " ").trim();
|
|
57
|
+
}
|
|
58
|
+
return "";
|
|
59
|
+
}
|
|
60
|
+
if (isItemContext(context)) {
|
|
61
|
+
const item = context.item;
|
|
62
|
+
if (!item?.config)
|
|
63
|
+
return "";
|
|
64
|
+
// Extract all markup from config
|
|
65
|
+
const markup = item.config.markup || "";
|
|
66
|
+
// Strip HTML tags
|
|
67
|
+
return markup.replace(/<[^>]*>/g, " ").trim();
|
|
68
|
+
}
|
|
69
|
+
if (isPassageContext(context)) {
|
|
70
|
+
const passage = context.passage;
|
|
71
|
+
if (!passage?.config)
|
|
72
|
+
return "";
|
|
73
|
+
// Extract markup from passage
|
|
74
|
+
const markup = passage.config.markup || "";
|
|
75
|
+
return markup.replace(/<[^>]*>/g, " ").trim();
|
|
76
|
+
}
|
|
77
|
+
if (isRubricContext(context)) {
|
|
78
|
+
const rubric = context.rubricBlock;
|
|
79
|
+
// If rubric has embedded passage, extract from passage config
|
|
80
|
+
if (rubric.passage?.config) {
|
|
81
|
+
const markup = rubric.passage.config.markup || "";
|
|
82
|
+
return markup.replace(/<[^>]*>/g, " ").trim();
|
|
83
|
+
}
|
|
84
|
+
// Otherwise, use simple content string
|
|
85
|
+
const content = rubric.content || "";
|
|
86
|
+
return content.replace(/<[^>]*>/g, " ").trim();
|
|
87
|
+
}
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Helper to check if context contains mathematical content
|
|
92
|
+
* (Basic heuristic - can be overridden by tools)
|
|
93
|
+
*/
|
|
94
|
+
export function hasMathContent(context) {
|
|
95
|
+
const text = extractTextContent(context);
|
|
96
|
+
// Look for common math indicators
|
|
97
|
+
const mathIndicators = [
|
|
98
|
+
/<math[>\s]/i, // MathML
|
|
99
|
+
/\\\[([^\]]+)\\\]/, // LaTeX display math
|
|
100
|
+
/\$\$[^$]+\$\$/, // LaTeX display math ($$...$$)
|
|
101
|
+
/\\\(/, // LaTeX inline math
|
|
102
|
+
/[+\-*/=<>≤≥∑∫√π]/, // Math symbols
|
|
103
|
+
/\d+\s*[+\-*/=]\s*\d+/, // Simple arithmetic
|
|
104
|
+
];
|
|
105
|
+
return mathIndicators.some((pattern) => pattern.test(text));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Helper to check if context contains choice-based interactions
|
|
109
|
+
*/
|
|
110
|
+
export function hasChoiceInteraction(context) {
|
|
111
|
+
if (isElementContext(context)) {
|
|
112
|
+
const config = context.item.config;
|
|
113
|
+
if (!config?.models)
|
|
114
|
+
return false;
|
|
115
|
+
// Find model for this element
|
|
116
|
+
const model = config.models.find((m) => m.id === context.elementId);
|
|
117
|
+
if (!model)
|
|
118
|
+
return false;
|
|
119
|
+
const type = model.element || "";
|
|
120
|
+
return [
|
|
121
|
+
"pie-multiple-choice",
|
|
122
|
+
"pie-inline-choice",
|
|
123
|
+
"pie-select-text",
|
|
124
|
+
].includes(type);
|
|
125
|
+
}
|
|
126
|
+
if (isItemContext(context)) {
|
|
127
|
+
const models = context.item.config?.models || [];
|
|
128
|
+
return models.some((m) => ["pie-multiple-choice", "pie-inline-choice", "pie-select-text"].includes(m.element || ""));
|
|
129
|
+
}
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Helper to check if context contains text that can be read aloud
|
|
134
|
+
*/
|
|
135
|
+
export function hasReadableText(context) {
|
|
136
|
+
const text = extractTextContent(context);
|
|
137
|
+
// Must have at least 10 characters of text (arbitrary threshold)
|
|
138
|
+
return text.trim().length >= 10;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Helper to check if context contains science content
|
|
142
|
+
* (Basic heuristic - can be overridden by tools)
|
|
143
|
+
*/
|
|
144
|
+
export function hasScienceContent(context) {
|
|
145
|
+
const text = extractTextContent(context);
|
|
146
|
+
// Look for common science indicators
|
|
147
|
+
const scienceIndicators = [
|
|
148
|
+
/chemistry|chemical|element|atom|molecule|compound/i,
|
|
149
|
+
/periodic\s+table/i,
|
|
150
|
+
/H₂O|CO₂|NaCl|O₂|N₂/i, // Chemical formulas
|
|
151
|
+
/\b[A-Z][a-z]?\d*\b/, // Element symbols (H, He, Li, etc.)
|
|
152
|
+
/biology|organism|cell|DNA|RNA|protein/i,
|
|
153
|
+
/physics|force|energy|velocity|acceleration/i,
|
|
154
|
+
];
|
|
155
|
+
return scienceIndicators.some((pattern) => pattern.test(text));
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=tool-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../../src/services/tool-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolProviderRegistry.d.ts","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,GAAG;IAChD;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,sBAAsB,CAAoC;IAElE;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IA2B9D;;;;;;;;;OASG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;OAEG;YACW,aAAa;IAgD3B;;;;;;;;;;OAUG;IACG,WAAW,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EACxD,UAAU,EAAE,MAAM,EAClB,cAAc,UAAO,GACnB,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolProviderRegistry.d.ts","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,GAAG,GAAG;IAChD;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,sBAAsB,CAAoC;IAElE;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IA2B9D;;;;;;;;;OASG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;OAEG;YACW,aAAa;IAgD3B;;;;;;;;;;OAUG;IACG,WAAW,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EACxD,UAAU,EAAE,MAAM,EAClB,cAAc,UAAO,GACnB,OAAO,CAAC,CAAC,CAAC;IAsCb;;;;;OAKG;IACH,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAMxD;;;;OAIG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C;;;;;OAKG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;OAMG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BnD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
|
|
@@ -140,30 +140,30 @@ export class ToolProviderRegistry {
|
|
|
140
140
|
* @throws Error if provider not registered
|
|
141
141
|
*/
|
|
142
142
|
async getProvider(providerId, autoInitialize = true) {
|
|
143
|
-
console.log(
|
|
143
|
+
console.log("[ToolProviderRegistry] getProvider called", {
|
|
144
144
|
providerId,
|
|
145
145
|
autoInitialize,
|
|
146
146
|
isRegistered: this.providers.has(providerId),
|
|
147
147
|
isInitialized: this.initialized.get(providerId),
|
|
148
|
-
allProviderIds: Array.from(this.providers.keys())
|
|
148
|
+
allProviderIds: Array.from(this.providers.keys()),
|
|
149
149
|
});
|
|
150
150
|
const provider = this.providers.get(providerId);
|
|
151
151
|
if (!provider) {
|
|
152
|
-
console.error(
|
|
152
|
+
console.error("[ToolProviderRegistry] Provider not found:", {
|
|
153
153
|
requestedId: providerId,
|
|
154
|
-
availableProviders: Array.from(this.providers.keys())
|
|
154
|
+
availableProviders: Array.from(this.providers.keys()),
|
|
155
155
|
});
|
|
156
156
|
throw new Error(`[ToolProviderRegistry] Provider "${providerId}" not registered`);
|
|
157
157
|
}
|
|
158
158
|
// Auto-initialize if needed
|
|
159
159
|
if (autoInitialize && !this.initialized.get(providerId)) {
|
|
160
|
-
console.log(
|
|
160
|
+
console.log("[ToolProviderRegistry] Auto-initializing provider:", providerId);
|
|
161
161
|
await this.initialize(providerId);
|
|
162
162
|
}
|
|
163
|
-
console.log(
|
|
163
|
+
console.log("[ToolProviderRegistry] Returning provider:", {
|
|
164
164
|
providerId,
|
|
165
165
|
providerName: provider.providerName,
|
|
166
|
-
isReady: provider.isReady()
|
|
166
|
+
isReady: provider.isReady(),
|
|
167
167
|
});
|
|
168
168
|
return provider;
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolProviderRegistry.js","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ToolProviderRegistry.js","sourceRoot":"","sources":["../../../src/services/tool-providers/ToolProviderRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accessibility Tools Registrations
|
|
3
|
+
*
|
|
4
|
+
* Registers tools for visual accessibility and reading support:
|
|
5
|
+
* - Magnifier (zoom lens)
|
|
6
|
+
* - Line Reader (reading guide)
|
|
7
|
+
* - Color Scheme (theme/contrast)
|
|
8
|
+
* - Annotation Toolbar (text highlighting)
|
|
9
|
+
*
|
|
10
|
+
* Maps to QTI 3.0 standard access features from:
|
|
11
|
+
* - visual category: magnification, highContrastDisplay, colorContrast
|
|
12
|
+
* - reading category: readingMask, readingGuide, highlighting
|
|
13
|
+
*/
|
|
14
|
+
import type { ToolRegistration } from "../../services/ToolRegistry";
|
|
15
|
+
/**
|
|
16
|
+
* Magnifier tool registration
|
|
17
|
+
*
|
|
18
|
+
* Provides a draggable zoom lens for visual accessibility.
|
|
19
|
+
* Global tool that works across entire assessment.
|
|
20
|
+
*/
|
|
21
|
+
export declare const magnifierToolRegistration: ToolRegistration;
|
|
22
|
+
/**
|
|
23
|
+
* Line Reader tool registration
|
|
24
|
+
*
|
|
25
|
+
* Provides a reading guide overlay to help track reading position.
|
|
26
|
+
* Useful for text-heavy passages and questions.
|
|
27
|
+
*/
|
|
28
|
+
export declare const lineReaderToolRegistration: ToolRegistration;
|
|
29
|
+
/**
|
|
30
|
+
* Color Scheme tool registration
|
|
31
|
+
*
|
|
32
|
+
* Provides Learnosity-standard accessible color schemes and theme controls.
|
|
33
|
+
* Global tool that affects entire assessment.
|
|
34
|
+
*/
|
|
35
|
+
export declare const colorSchemeToolRegistration: ToolRegistration;
|
|
36
|
+
/**
|
|
37
|
+
* Annotation Toolbar registration
|
|
38
|
+
*
|
|
39
|
+
* Text highlighting with CSS Custom Highlight API.
|
|
40
|
+
* Zero DOM mutation, optimal performance.
|
|
41
|
+
*/
|
|
42
|
+
export declare const annotationToolbarRegistration: ToolRegistration;
|
|
43
|
+
//# sourceMappingURL=accessibility-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessibility-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/accessibility-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,6BAA6B,CAAC;AAQrC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAuEvC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAsExC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBAwEzC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,gBAsE3C,CAAC"}
|