@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,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RangeSerializer - Serialize and deserialize DOM Range objects
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for storing and restoring text ranges across sessions.
|
|
5
|
+
* Used by both TTS (for timing data) and annotations (for persistence).
|
|
6
|
+
*
|
|
7
|
+
* Uses CSS selector paths and node indices for robust serialization that
|
|
8
|
+
* survives content changes when possible.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* RangeSerializer - Serialize and deserialize Range objects.
|
|
12
|
+
*/
|
|
13
|
+
export class RangeSerializer {
|
|
14
|
+
/**
|
|
15
|
+
* Serialize a Range to storable format.
|
|
16
|
+
*
|
|
17
|
+
* @param range - Range to serialize
|
|
18
|
+
* @param root - Root element (typically document.body or content container)
|
|
19
|
+
* @returns Serialized range data
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const serializer = new RangeSerializer();
|
|
24
|
+
* const range = window.getSelection()!.getRangeAt(0);
|
|
25
|
+
* const serialized = serializer.serialize(range, document.body);
|
|
26
|
+
* localStorage.setItem('savedRange', JSON.stringify(serialized));
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
serialize(range, root) {
|
|
30
|
+
return {
|
|
31
|
+
startContainer: this.getNodePath(range.startContainer, root),
|
|
32
|
+
startOffset: range.startOffset,
|
|
33
|
+
endContainer: this.getNodePath(range.endContainer, root),
|
|
34
|
+
endOffset: range.endOffset,
|
|
35
|
+
text: range.toString(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Deserialize range from storage.
|
|
40
|
+
*
|
|
41
|
+
* @param data - Serialized range data
|
|
42
|
+
* @param root - Root element (same as used in serialize)
|
|
43
|
+
* @returns Range object, or null if content changed
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const serializer = new RangeSerializer();
|
|
48
|
+
* const data = JSON.parse(localStorage.getItem('savedRange')!);
|
|
49
|
+
* const range = serializer.deserialize(data, document.body);
|
|
50
|
+
* if (range) {
|
|
51
|
+
* // Range successfully restored
|
|
52
|
+
* } else {
|
|
53
|
+
* // Content changed, range invalid
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
deserialize(data, root) {
|
|
58
|
+
const startNode = this.findNodeByPath(data.startContainer, root);
|
|
59
|
+
const endNode = this.findNodeByPath(data.endContainer, root);
|
|
60
|
+
if (!startNode || !endNode) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const range = new Range();
|
|
65
|
+
range.setStart(startNode, data.startOffset);
|
|
66
|
+
range.setEnd(endNode, data.endOffset);
|
|
67
|
+
// Validate text hasn't changed
|
|
68
|
+
if (range.toString() === data.text) {
|
|
69
|
+
return range;
|
|
70
|
+
}
|
|
71
|
+
// Text changed, range is invalid
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
// Range construction failed (offsets invalid, etc.)
|
|
76
|
+
console.warn("Failed to deserialize range:", error);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get a unique path to a node from root.
|
|
82
|
+
*
|
|
83
|
+
* Uses a hybrid approach:
|
|
84
|
+
* - For element nodes: CSS selector path
|
|
85
|
+
* - For text nodes: parent selector + text node index
|
|
86
|
+
*
|
|
87
|
+
* @param node - Node to get path for
|
|
88
|
+
* @param root - Root element
|
|
89
|
+
* @returns Path string
|
|
90
|
+
*/
|
|
91
|
+
getNodePath(node, root) {
|
|
92
|
+
if (node === root) {
|
|
93
|
+
return "";
|
|
94
|
+
}
|
|
95
|
+
// Handle text nodes
|
|
96
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
97
|
+
const parent = node.parentElement;
|
|
98
|
+
if (!parent) {
|
|
99
|
+
throw new Error("Text node has no parent");
|
|
100
|
+
}
|
|
101
|
+
// Get index of this text node among its siblings
|
|
102
|
+
const textNodes = Array.from(parent.childNodes).filter((n) => n.nodeType === Node.TEXT_NODE);
|
|
103
|
+
const index = textNodes.indexOf(node);
|
|
104
|
+
const parentPath = this.getElementPath(parent, root);
|
|
105
|
+
return `${parentPath}::text[${index}]`;
|
|
106
|
+
}
|
|
107
|
+
// Handle element nodes
|
|
108
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
109
|
+
return this.getElementPath(node, root);
|
|
110
|
+
}
|
|
111
|
+
throw new Error(`Unsupported node type: ${node.nodeType}`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get CSS selector path to an element.
|
|
115
|
+
*
|
|
116
|
+
* @param element - Element to get path for
|
|
117
|
+
* @param root - Root element
|
|
118
|
+
* @returns CSS selector path
|
|
119
|
+
*/
|
|
120
|
+
getElementPath(element, root) {
|
|
121
|
+
if (element === root) {
|
|
122
|
+
return "";
|
|
123
|
+
}
|
|
124
|
+
const path = [];
|
|
125
|
+
let current = element;
|
|
126
|
+
while (current && current !== root) {
|
|
127
|
+
// Use ID if available (more stable)
|
|
128
|
+
if (current.id) {
|
|
129
|
+
path.unshift(`#${current.id}`);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
// Otherwise use tag + nth-of-type
|
|
133
|
+
const parent = current.parentElement;
|
|
134
|
+
if (!parent)
|
|
135
|
+
break;
|
|
136
|
+
const siblings = Array.from(parent.children).filter((el) => el.tagName === current.tagName);
|
|
137
|
+
const index = siblings.indexOf(current);
|
|
138
|
+
const selector = siblings.length > 1
|
|
139
|
+
? `${current.tagName.toLowerCase()}:nth-of-type(${index + 1})`
|
|
140
|
+
: current.tagName.toLowerCase();
|
|
141
|
+
path.unshift(selector);
|
|
142
|
+
current = parent;
|
|
143
|
+
}
|
|
144
|
+
return path.join(" > ");
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Find a node by its path from root.
|
|
148
|
+
*
|
|
149
|
+
* @param path - Path string from getNodePath
|
|
150
|
+
* @param root - Root element
|
|
151
|
+
* @returns Node, or null if not found
|
|
152
|
+
*/
|
|
153
|
+
findNodeByPath(path, root) {
|
|
154
|
+
if (path === "") {
|
|
155
|
+
return root;
|
|
156
|
+
}
|
|
157
|
+
// Handle text node paths
|
|
158
|
+
if (path.includes("::text[")) {
|
|
159
|
+
const [elementPath, textPart] = path.split("::text[");
|
|
160
|
+
const textIndex = Number.parseInt(textPart.replace("]", ""), 10);
|
|
161
|
+
// Find parent element
|
|
162
|
+
const parent = elementPath ? root.querySelector(elementPath) : root;
|
|
163
|
+
if (!parent)
|
|
164
|
+
return null;
|
|
165
|
+
// Find text node by index
|
|
166
|
+
const textNodes = Array.from(parent.childNodes).filter((n) => n.nodeType === Node.TEXT_NODE);
|
|
167
|
+
return textNodes[textIndex] || null;
|
|
168
|
+
}
|
|
169
|
+
// Handle element paths
|
|
170
|
+
try {
|
|
171
|
+
return root.querySelector(path);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
console.warn("Invalid selector path:", path, error);
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Batch serialize multiple ranges.
|
|
180
|
+
*
|
|
181
|
+
* @param ranges - Ranges to serialize
|
|
182
|
+
* @param root - Root element
|
|
183
|
+
* @returns Array of serialized ranges
|
|
184
|
+
*/
|
|
185
|
+
serializeMany(ranges, root) {
|
|
186
|
+
return ranges.map((range) => this.serialize(range, root));
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Batch deserialize multiple ranges.
|
|
190
|
+
*
|
|
191
|
+
* @param data - Array of serialized ranges
|
|
192
|
+
* @param root - Root element
|
|
193
|
+
* @returns Array of ranges (nulls for invalid ranges)
|
|
194
|
+
*/
|
|
195
|
+
deserializeMany(data, root) {
|
|
196
|
+
return data.map((item) => this.deserialize(item, root));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=RangeSerializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeSerializer.js","sourceRoot":"","sources":["../../src/services/RangeSerializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,10 @@ export declare class TTSService {
|
|
|
105
105
|
contentElement?: Element;
|
|
106
106
|
}): Promise<void>;
|
|
107
107
|
/**
|
|
108
|
-
* Speak a text range
|
|
108
|
+
* Speak a text range with accurate word highlighting
|
|
109
|
+
*
|
|
110
|
+
* This calculates the offset of the range within its parent element
|
|
111
|
+
* to ensure word highlighting aligns correctly with the selected text.
|
|
109
112
|
*
|
|
110
113
|
* @param range DOM Range to speak
|
|
111
114
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TTSService.d.ts","sourceRoot":"","sources":["../../src/services/TTSService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACX,YAAY,EAEZ,SAAS,EACT,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,YAAY,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,oBAAY,aAAa;IACxB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;CACf;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,eAAe,CACZ;IACX,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,SAAS,CAAuB;;IAIxC;;;;;OAKG;IACG,UAAU,CACf,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM,GAC7B,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;OAOG;IACG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI;IAIjE;;;;;;;OAOG;IACH,kBAAkB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAIhE;;OAEG;IACH,eAAe,IAAI,uBAAuB,GAAG,IAAI;IAIjD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA2HxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;;;;OAKG;IACG,KAAK,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;KACzB,GACC,OAAO,CAAC,IAAI,CAAC;IAiHhB
|
|
1
|
+
{"version":3,"file":"TTSService.d.ts","sourceRoot":"","sources":["../../src/services/TTSService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACX,YAAY,EAEZ,SAAS,EACT,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,YAAY,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,oBAAY,aAAa;IACxB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;CACf;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,eAAe,CACZ;IACX,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,SAAS,CAAuB;;IAIxC;;;;;OAKG;IACG,UAAU,CACf,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,OAAO,CAAC,SAAS,CAAM,GAC7B,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;;OAOG;IACG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI;IAIjE;;;;;;;OAOG;IACH,kBAAkB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI;IAIhE;;OAEG;IACH,eAAe,IAAI,uBAAuB,GAAG,IAAI;IAIjD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA2HxB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAyD1B;;;;;OAKG;IACG,KAAK,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,OAAO,CAAC;KACzB,GACC,OAAO,CAAC,IAAI,CAAC;IAiHhB;;;;;;;OAOG;IACG,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAwE7C;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,MAAM,IAAI,IAAI;IASd;;OAEG;IACH,IAAI,IAAI,IAAI;IAiBZ;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAOzE;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAU1E;;OAEG;IACH,OAAO,CAAC,QAAQ;CAYhB"}
|
|
@@ -345,13 +345,68 @@ export class TTSService {
|
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
/**
|
|
348
|
-
* Speak a text range
|
|
348
|
+
* Speak a text range with accurate word highlighting
|
|
349
|
+
*
|
|
350
|
+
* This calculates the offset of the range within its parent element
|
|
351
|
+
* to ensure word highlighting aligns correctly with the selected text.
|
|
349
352
|
*
|
|
350
353
|
* @param range DOM Range to speak
|
|
351
354
|
*/
|
|
352
355
|
async speakRange(range) {
|
|
353
|
-
|
|
354
|
-
|
|
356
|
+
if (!this.provider) {
|
|
357
|
+
throw new Error("TTS service not initialized");
|
|
358
|
+
}
|
|
359
|
+
const text = range.toString().trim();
|
|
360
|
+
if (!text)
|
|
361
|
+
return;
|
|
362
|
+
// Find the root content element (closest element with data-pie-content or body)
|
|
363
|
+
let root = null;
|
|
364
|
+
let node = range.commonAncestorContainer;
|
|
365
|
+
while (node && node.nodeType !== Node.ELEMENT_NODE) {
|
|
366
|
+
node = node.parentNode;
|
|
367
|
+
}
|
|
368
|
+
if (node) {
|
|
369
|
+
root = node.closest("[data-pie-content]") || document.body;
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
root = document.body;
|
|
373
|
+
}
|
|
374
|
+
// Calculate the offset of the range start within the root element
|
|
375
|
+
const beforeRange = document.createRange();
|
|
376
|
+
beforeRange.selectNodeContents(root);
|
|
377
|
+
beforeRange.setEnd(range.startContainer, range.startOffset);
|
|
378
|
+
const textBeforeRange = beforeRange.toString();
|
|
379
|
+
const offset = textBeforeRange.trim().replace(/\s+/g, " ").length;
|
|
380
|
+
console.log("[TTSService] speakRange offset calculation:", {
|
|
381
|
+
selectedText: text,
|
|
382
|
+
textBeforeRange: textBeforeRange.substring(0, 100),
|
|
383
|
+
offset,
|
|
384
|
+
rootTag: root.tagName,
|
|
385
|
+
});
|
|
386
|
+
// Store the offset for word boundary calculations
|
|
387
|
+
const originalOnWordBoundary = this.provider.onWordBoundary;
|
|
388
|
+
// Wrap the onWordBoundary handler to adjust character indices
|
|
389
|
+
this.provider.onWordBoundary = (word, charIndex, length) => {
|
|
390
|
+
// Adjust the character index by the offset
|
|
391
|
+
const adjustedIndex = charIndex + offset;
|
|
392
|
+
// Call the handler from speak() method which will handle the highlighting
|
|
393
|
+
// Pass the adjusted index so highlighting aligns with the actual selection
|
|
394
|
+
if (this.highlightCoordinator && this.currentContentElement) {
|
|
395
|
+
const wordLength = length || word.length;
|
|
396
|
+
const highlightRange = this.findHighlightRange(adjustedIndex, wordLength);
|
|
397
|
+
if (highlightRange) {
|
|
398
|
+
this.highlightCoordinator.highlightTTSWord(highlightRange.node, highlightRange.start, highlightRange.end);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
try {
|
|
403
|
+
// Speak the text with the root element as context
|
|
404
|
+
await this.speak(text, { contentElement: root });
|
|
405
|
+
}
|
|
406
|
+
finally {
|
|
407
|
+
// Restore original handler
|
|
408
|
+
this.provider.onWordBoundary = originalOnWordBoundary;
|
|
409
|
+
}
|
|
355
410
|
}
|
|
356
411
|
/**
|
|
357
412
|
* Pause playback
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TTSService.js","sourceRoot":"","sources":["../../src/services/TTSService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TTSService.js","sourceRoot":"","sources":["../../src/services/TTSService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all assessment tools. Manages tool metadata, visibility logic,
|
|
5
|
+
* and button/instance creation. Supports dynamic registration and override by integrators.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolContext, ToolLevel } from "./tool-context";
|
|
8
|
+
import type { ToolComponentOverrides } from "../tools/tool-tag-map";
|
|
9
|
+
/**
|
|
10
|
+
* Options for creating a tool button
|
|
11
|
+
*/
|
|
12
|
+
export interface ToolButtonOptions {
|
|
13
|
+
/** Whether the button should be disabled */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Additional CSS classes */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Callback when button is clicked */
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
/** Aria label override */
|
|
20
|
+
ariaLabel?: string;
|
|
21
|
+
/** Custom icon override */
|
|
22
|
+
icon?: string;
|
|
23
|
+
/** Tooltip text */
|
|
24
|
+
tooltip?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Definition for a tool button component
|
|
28
|
+
*/
|
|
29
|
+
export interface ToolButtonDefinition {
|
|
30
|
+
/** Tool ID */
|
|
31
|
+
toolId: string;
|
|
32
|
+
/** Display label */
|
|
33
|
+
label: string;
|
|
34
|
+
/** Icon (SVG string, icon name, or URL) */
|
|
35
|
+
icon: string;
|
|
36
|
+
/** Whether button is disabled */
|
|
37
|
+
disabled: boolean;
|
|
38
|
+
/** Aria label for accessibility */
|
|
39
|
+
ariaLabel: string;
|
|
40
|
+
/** Tooltip text */
|
|
41
|
+
tooltip?: string;
|
|
42
|
+
/** Click handler */
|
|
43
|
+
onClick: () => void;
|
|
44
|
+
/** Additional CSS classes */
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options for creating a tool instance
|
|
49
|
+
*/
|
|
50
|
+
export interface ToolInstanceOptions {
|
|
51
|
+
/** Initial state for the tool */
|
|
52
|
+
initialState?: unknown;
|
|
53
|
+
/** Callback when tool is closed/dismissed */
|
|
54
|
+
onClose?: () => void;
|
|
55
|
+
/** Custom configuration */
|
|
56
|
+
config?: Record<string, unknown>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Tool registration interface
|
|
60
|
+
*/
|
|
61
|
+
export interface ToolRegistration {
|
|
62
|
+
/** Unique tool identifier (e.g., 'calculator', 'textToSpeech') */
|
|
63
|
+
toolId: string;
|
|
64
|
+
/** Human-readable name */
|
|
65
|
+
name: string;
|
|
66
|
+
/** Description of what the tool does */
|
|
67
|
+
description: string;
|
|
68
|
+
/** Icon identifier or SVG string */
|
|
69
|
+
icon: string | ((context: ToolContext) => string);
|
|
70
|
+
/** Which levels this tool supports */
|
|
71
|
+
supportedLevels: ToolLevel[];
|
|
72
|
+
/**
|
|
73
|
+
* PNP support IDs that enable this tool (optional)
|
|
74
|
+
* Used by PNPToolResolver to determine if tool is allowed
|
|
75
|
+
* Example: ['calculator', 'basic-calculator', 'scientific-calculator']
|
|
76
|
+
*/
|
|
77
|
+
pnpSupportIds?: string[];
|
|
78
|
+
/**
|
|
79
|
+
* Pass 2: Tool decides if it's relevant in this context
|
|
80
|
+
* Called ONLY if orchestrator has already allowed the tool (Pass 1)
|
|
81
|
+
*
|
|
82
|
+
* @param context - Rich context about where tool is being evaluated
|
|
83
|
+
* @returns true if tool should be visible, false to hide
|
|
84
|
+
*/
|
|
85
|
+
isVisibleInContext(context: ToolContext): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Create a button definition for rendering in a toolbar
|
|
88
|
+
*
|
|
89
|
+
* @param context - Context where button will appear
|
|
90
|
+
* @param options - Button options (click handler, disabled state, etc.)
|
|
91
|
+
* @returns Button definition for rendering
|
|
92
|
+
*/
|
|
93
|
+
createButton(context: ToolContext, options: ToolButtonOptions): ToolButtonDefinition;
|
|
94
|
+
/**
|
|
95
|
+
* Create the actual tool instance (e.g., calculator component)
|
|
96
|
+
*
|
|
97
|
+
* @param context - Context where tool is being used
|
|
98
|
+
* @param options - Tool-specific options
|
|
99
|
+
* @returns HTMLElement containing the tool
|
|
100
|
+
*/
|
|
101
|
+
createToolInstance(context: ToolContext, options: ToolInstanceOptions): HTMLElement;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Tool Registry
|
|
105
|
+
*
|
|
106
|
+
* Manages tool registrations and provides query/lookup functionality
|
|
107
|
+
*/
|
|
108
|
+
export declare class ToolRegistry {
|
|
109
|
+
private tools;
|
|
110
|
+
private pnpIndex;
|
|
111
|
+
private componentOverrides;
|
|
112
|
+
/**
|
|
113
|
+
* Register a tool
|
|
114
|
+
*
|
|
115
|
+
* @param registration - Tool registration
|
|
116
|
+
* @throws Error if toolId is already registered
|
|
117
|
+
*/
|
|
118
|
+
register(registration: ToolRegistration): void;
|
|
119
|
+
/**
|
|
120
|
+
* Override an existing tool registration
|
|
121
|
+
*
|
|
122
|
+
* @param registration - New tool registration (must have existing toolId)
|
|
123
|
+
*/
|
|
124
|
+
override(registration: ToolRegistration): void;
|
|
125
|
+
/**
|
|
126
|
+
* Unregister a tool
|
|
127
|
+
*
|
|
128
|
+
* @param toolId - Tool ID to remove
|
|
129
|
+
*/
|
|
130
|
+
unregister(toolId: string): void;
|
|
131
|
+
/**
|
|
132
|
+
* Get a tool registration by ID
|
|
133
|
+
*
|
|
134
|
+
* @param toolId - Tool ID
|
|
135
|
+
* @returns Tool registration or undefined
|
|
136
|
+
*/
|
|
137
|
+
get(toolId: string): ToolRegistration | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Check if a tool is registered
|
|
140
|
+
*
|
|
141
|
+
* @param toolId - Tool ID
|
|
142
|
+
* @returns true if registered
|
|
143
|
+
*/
|
|
144
|
+
has(toolId: string): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Get all registered tool IDs
|
|
147
|
+
*
|
|
148
|
+
* @returns Array of tool IDs
|
|
149
|
+
*/
|
|
150
|
+
getAllToolIds(): string[];
|
|
151
|
+
/**
|
|
152
|
+
* Get all tool registrations
|
|
153
|
+
*
|
|
154
|
+
* @returns Array of tool registrations
|
|
155
|
+
*/
|
|
156
|
+
getAllTools(): ToolRegistration[];
|
|
157
|
+
/**
|
|
158
|
+
* Find tool IDs that support a given PNP support ID
|
|
159
|
+
*
|
|
160
|
+
* @param pnpSupportId - PNP support ID (e.g., 'calculator')
|
|
161
|
+
* @returns Set of tool IDs that support this PNP ID
|
|
162
|
+
*/
|
|
163
|
+
getToolsByPNPSupport(pnpSupportId: string): Set<string>;
|
|
164
|
+
/**
|
|
165
|
+
* Get tools that support a specific level
|
|
166
|
+
*
|
|
167
|
+
* @param level - Tool level (assessment, section, item, passage, element)
|
|
168
|
+
* @returns Array of tool registrations that support this level
|
|
169
|
+
*/
|
|
170
|
+
getToolsByLevel(level: ToolLevel): ToolRegistration[];
|
|
171
|
+
/**
|
|
172
|
+
* Filter tools by visibility in a given context
|
|
173
|
+
*
|
|
174
|
+
* Pass 2 of the two-pass model: Given a list of allowed tool IDs (from Pass 1),
|
|
175
|
+
* ask each tool if it's relevant in this context.
|
|
176
|
+
*
|
|
177
|
+
* @param allowedToolIds - Tool IDs that passed Pass 1 (orchestrator approval)
|
|
178
|
+
* @param context - Context to evaluate
|
|
179
|
+
* @returns Array of visible tool registrations
|
|
180
|
+
*/
|
|
181
|
+
filterVisibleInContext(allowedToolIds: string[], context: ToolContext): ToolRegistration[];
|
|
182
|
+
/**
|
|
183
|
+
* Create button definitions for visible tools
|
|
184
|
+
*
|
|
185
|
+
* @param allowedToolIds - Tool IDs that passed Pass 1
|
|
186
|
+
* @param context - Context to evaluate
|
|
187
|
+
* @param buttonOptions - Options for button creation
|
|
188
|
+
* @returns Array of button definitions ready for rendering
|
|
189
|
+
*/
|
|
190
|
+
createButtons(allowedToolIds: string[], context: ToolContext, buttonOptions: (toolId: string) => ToolButtonOptions): ToolButtonDefinition[];
|
|
191
|
+
/**
|
|
192
|
+
* Get tool metadata for building UIs
|
|
193
|
+
* Useful for building PNP configuration interfaces
|
|
194
|
+
*
|
|
195
|
+
* @returns Array of tool metadata (id, name, description, pnpSupportIds)
|
|
196
|
+
*/
|
|
197
|
+
getToolMetadata(): Array<{
|
|
198
|
+
toolId: string;
|
|
199
|
+
name: string;
|
|
200
|
+
description: string;
|
|
201
|
+
pnpSupportIds: string[];
|
|
202
|
+
supportedLevels: ToolLevel[];
|
|
203
|
+
}>;
|
|
204
|
+
/**
|
|
205
|
+
* Generate PNP support IDs from enabled tools
|
|
206
|
+
* Useful for creating PNP profiles
|
|
207
|
+
*
|
|
208
|
+
* @param enabledToolIds - Tool IDs to enable
|
|
209
|
+
* @returns Array of unique PNP support IDs
|
|
210
|
+
*/
|
|
211
|
+
generatePNPSupportsFromTools(enabledToolIds: string[]): string[];
|
|
212
|
+
/**
|
|
213
|
+
* Clear all registrations (useful for testing)
|
|
214
|
+
*/
|
|
215
|
+
clear(): void;
|
|
216
|
+
/**
|
|
217
|
+
* Configure global component overrides used by tool instance creation.
|
|
218
|
+
*/
|
|
219
|
+
setComponentOverrides(overrides: ToolComponentOverrides): void;
|
|
220
|
+
/**
|
|
221
|
+
* Create a tool instance by tool ID using registered tool definition.
|
|
222
|
+
*/
|
|
223
|
+
createToolInstance(toolId: string, context: ToolContext, options?: ToolInstanceOptions): HTMLElement;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=ToolRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
|