@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.
Files changed (100) hide show
  1. package/README.md +159 -1
  2. package/dist/index.d.ts +16 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +9 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/player/AssessmentPlayer.d.ts +9 -0
  7. package/dist/player/AssessmentPlayer.d.ts.map +1 -1
  8. package/dist/player/AssessmentPlayer.js +13 -4
  9. package/dist/player/AssessmentPlayer.js.map +1 -1
  10. package/dist/services/AnnotationToolbarConfig.d.ts +134 -0
  11. package/dist/services/AnnotationToolbarConfig.d.ts.map +1 -0
  12. package/dist/services/AnnotationToolbarConfig.js +100 -0
  13. package/dist/services/AnnotationToolbarConfig.js.map +1 -0
  14. package/dist/services/HighlightCoordinator.d.ts +23 -10
  15. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  16. package/dist/services/HighlightCoordinator.js +87 -40
  17. package/dist/services/HighlightCoordinator.js.map +1 -1
  18. package/dist/services/PNPToolResolver.d.ts +171 -15
  19. package/dist/services/PNPToolResolver.d.ts.map +1 -1
  20. package/dist/services/PNPToolResolver.js +324 -32
  21. package/dist/services/PNPToolResolver.js.map +1 -1
  22. package/dist/services/RangeSerializer.d.ts +119 -0
  23. package/dist/services/RangeSerializer.d.ts.map +1 -0
  24. package/dist/services/RangeSerializer.js +199 -0
  25. package/dist/services/RangeSerializer.js.map +1 -0
  26. package/dist/services/TTSService.d.ts +4 -1
  27. package/dist/services/TTSService.d.ts.map +1 -1
  28. package/dist/services/TTSService.js +58 -3
  29. package/dist/services/TTSService.js.map +1 -1
  30. package/dist/services/ToolRegistry.d.ts +225 -0
  31. package/dist/services/ToolRegistry.d.ts.map +1 -0
  32. package/dist/services/ToolRegistry.js +248 -0
  33. package/dist/services/ToolRegistry.js.map +1 -0
  34. package/dist/services/ToolkitCoordinator.d.ts +22 -0
  35. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  36. package/dist/services/ToolkitCoordinator.js +44 -0
  37. package/dist/services/ToolkitCoordinator.js.map +1 -1
  38. package/dist/services/createDefaultToolRegistry.d.ts +72 -0
  39. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -0
  40. package/dist/services/createDefaultToolRegistry.js +147 -0
  41. package/dist/services/createDefaultToolRegistry.js.map +1 -0
  42. package/dist/services/interfaces.d.ts +8 -0
  43. package/dist/services/interfaces.d.ts.map +1 -1
  44. package/dist/services/interfaces.js.map +1 -1
  45. package/dist/services/pnp-provenance.d.ts +167 -0
  46. package/dist/services/pnp-provenance.d.ts.map +1 -0
  47. package/dist/services/pnp-provenance.js +230 -0
  48. package/dist/services/pnp-provenance.js.map +1 -0
  49. package/dist/services/pnp-standard-features.d.ts +240 -0
  50. package/dist/services/pnp-standard-features.d.ts.map +1 -0
  51. package/dist/services/pnp-standard-features.js +342 -0
  52. package/dist/services/pnp-standard-features.js.map +1 -0
  53. package/dist/services/tool-context.d.ts +150 -0
  54. package/dist/services/tool-context.d.ts.map +1 -0
  55. package/dist/services/tool-context.js +157 -0
  56. package/dist/services/tool-context.js.map +1 -0
  57. package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -1
  58. package/dist/services/tool-providers/ToolProviderRegistry.js +7 -7
  59. package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -1
  60. package/dist/tools/registrations/accessibility-tools.d.ts +43 -0
  61. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -0
  62. package/dist/tools/registrations/accessibility-tools.js +230 -0
  63. package/dist/tools/registrations/accessibility-tools.js.map +1 -0
  64. package/dist/tools/registrations/calculator.d.ts +21 -0
  65. package/dist/tools/registrations/calculator.d.ts.map +1 -0
  66. package/dist/tools/registrations/calculator.js +98 -0
  67. package/dist/tools/registrations/calculator.js.map +1 -0
  68. package/dist/tools/registrations/interaction-tools.d.ts +28 -0
  69. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -0
  70. package/dist/tools/registrations/interaction-tools.js +124 -0
  71. package/dist/tools/registrations/interaction-tools.js.map +1 -0
  72. package/dist/tools/registrations/measurement-tools.d.ts +25 -0
  73. package/dist/tools/registrations/measurement-tools.d.ts.map +1 -0
  74. package/dist/tools/registrations/measurement-tools.js +112 -0
  75. package/dist/tools/registrations/measurement-tools.js.map +1 -0
  76. package/dist/tools/registrations/subject-specific-tools.d.ts +28 -0
  77. package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -0
  78. package/dist/tools/registrations/subject-specific-tools.js +118 -0
  79. package/dist/tools/registrations/subject-specific-tools.js.map +1 -0
  80. package/dist/tools/registrations/tts.d.ts +20 -0
  81. package/dist/tools/registrations/tts.d.ts.map +1 -0
  82. package/dist/tools/registrations/tts.js +86 -0
  83. package/dist/tools/registrations/tts.js.map +1 -0
  84. package/dist/tools/tool-tag-map.d.ts +24 -0
  85. package/dist/tools/tool-tag-map.d.ts.map +1 -0
  86. package/dist/tools/tool-tag-map.js +38 -0
  87. package/dist/tools/tool-tag-map.js.map +1 -0
  88. package/package.json +15 -7
  89. package/src/README.md +25 -11
  90. package/src/components/PNPProfileTester.example.svelte +188 -0
  91. package/src/components/PNPProfileTester.svelte +397 -0
  92. package/src/components/PNPProvenanceViewer.svelte +260 -0
  93. package/src/components/QuestionToolBar.svelte +160 -83
  94. package/src/components/ToolButton.svelte +146 -0
  95. package/src/components/ToolButtonGroup.svelte +109 -0
  96. package/src/reference-layout/ReferenceLayout.svelte +5 -13
  97. package/dist/services/PNPMapper.d.ts +0 -71
  98. package/dist/services/PNPMapper.d.ts.map +0 -1
  99. package/dist/services/PNPMapper.js +0 -98
  100. package/dist/services/PNPMapper.js.map +0 -1
@@ -0,0 +1,248 @@
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
+ /**
8
+ * Tool Registry
9
+ *
10
+ * Manages tool registrations and provides query/lookup functionality
11
+ */
12
+ export class ToolRegistry {
13
+ tools = new Map();
14
+ pnpIndex = new Map(); // pnpSupportId → Set<toolId>
15
+ componentOverrides = {};
16
+ /**
17
+ * Register a tool
18
+ *
19
+ * @param registration - Tool registration
20
+ * @throws Error if toolId is already registered
21
+ */
22
+ register(registration) {
23
+ if (this.tools.has(registration.toolId)) {
24
+ throw new Error(`Tool '${registration.toolId}' is already registered`);
25
+ }
26
+ this.tools.set(registration.toolId, registration);
27
+ // Index PNP support IDs
28
+ if (registration.pnpSupportIds) {
29
+ for (const pnpId of registration.pnpSupportIds) {
30
+ if (!this.pnpIndex.has(pnpId)) {
31
+ this.pnpIndex.set(pnpId, new Set());
32
+ }
33
+ this.pnpIndex.get(pnpId).add(registration.toolId);
34
+ }
35
+ }
36
+ }
37
+ /**
38
+ * Override an existing tool registration
39
+ *
40
+ * @param registration - New tool registration (must have existing toolId)
41
+ */
42
+ override(registration) {
43
+ if (!this.tools.has(registration.toolId)) {
44
+ throw new Error(`Cannot override non-existent tool '${registration.toolId}'`);
45
+ }
46
+ // Remove old PNP index entries
47
+ const oldReg = this.tools.get(registration.toolId);
48
+ if (oldReg.pnpSupportIds) {
49
+ for (const pnpId of oldReg.pnpSupportIds) {
50
+ this.pnpIndex.get(pnpId)?.delete(registration.toolId);
51
+ }
52
+ }
53
+ // Add new registration
54
+ this.tools.set(registration.toolId, registration);
55
+ // Re-index PNP support IDs
56
+ if (registration.pnpSupportIds) {
57
+ for (const pnpId of registration.pnpSupportIds) {
58
+ if (!this.pnpIndex.has(pnpId)) {
59
+ this.pnpIndex.set(pnpId, new Set());
60
+ }
61
+ this.pnpIndex.get(pnpId).add(registration.toolId);
62
+ }
63
+ }
64
+ }
65
+ /**
66
+ * Unregister a tool
67
+ *
68
+ * @param toolId - Tool ID to remove
69
+ */
70
+ unregister(toolId) {
71
+ const reg = this.tools.get(toolId);
72
+ if (!reg)
73
+ return;
74
+ // Remove PNP index entries
75
+ if (reg.pnpSupportIds) {
76
+ for (const pnpId of reg.pnpSupportIds) {
77
+ this.pnpIndex.get(pnpId)?.delete(toolId);
78
+ }
79
+ }
80
+ this.tools.delete(toolId);
81
+ }
82
+ /**
83
+ * Get a tool registration by ID
84
+ *
85
+ * @param toolId - Tool ID
86
+ * @returns Tool registration or undefined
87
+ */
88
+ get(toolId) {
89
+ return this.tools.get(toolId);
90
+ }
91
+ /**
92
+ * Check if a tool is registered
93
+ *
94
+ * @param toolId - Tool ID
95
+ * @returns true if registered
96
+ */
97
+ has(toolId) {
98
+ return this.tools.has(toolId);
99
+ }
100
+ /**
101
+ * Get all registered tool IDs
102
+ *
103
+ * @returns Array of tool IDs
104
+ */
105
+ getAllToolIds() {
106
+ return Array.from(this.tools.keys());
107
+ }
108
+ /**
109
+ * Get all tool registrations
110
+ *
111
+ * @returns Array of tool registrations
112
+ */
113
+ getAllTools() {
114
+ return Array.from(this.tools.values());
115
+ }
116
+ /**
117
+ * Find tool IDs that support a given PNP support ID
118
+ *
119
+ * @param pnpSupportId - PNP support ID (e.g., 'calculator')
120
+ * @returns Set of tool IDs that support this PNP ID
121
+ */
122
+ getToolsByPNPSupport(pnpSupportId) {
123
+ return this.pnpIndex.get(pnpSupportId) || new Set();
124
+ }
125
+ /**
126
+ * Get tools that support a specific level
127
+ *
128
+ * @param level - Tool level (assessment, section, item, passage, element)
129
+ * @returns Array of tool registrations that support this level
130
+ */
131
+ getToolsByLevel(level) {
132
+ return this.getAllTools().filter((tool) => tool.supportedLevels.includes(level));
133
+ }
134
+ /**
135
+ * Filter tools by visibility in a given context
136
+ *
137
+ * Pass 2 of the two-pass model: Given a list of allowed tool IDs (from Pass 1),
138
+ * ask each tool if it's relevant in this context.
139
+ *
140
+ * @param allowedToolIds - Tool IDs that passed Pass 1 (orchestrator approval)
141
+ * @param context - Context to evaluate
142
+ * @returns Array of visible tool registrations
143
+ */
144
+ filterVisibleInContext(allowedToolIds, context) {
145
+ const visible = [];
146
+ for (const toolId of allowedToolIds) {
147
+ const tool = this.get(toolId);
148
+ if (!tool) {
149
+ console.warn(`Tool '${toolId}' is allowed but not registered`);
150
+ continue;
151
+ }
152
+ // Check if tool supports this level
153
+ if (!tool.supportedLevels.includes(context.level)) {
154
+ continue;
155
+ }
156
+ // Pass 2: Ask tool if it's relevant
157
+ try {
158
+ if (tool.isVisibleInContext(context)) {
159
+ visible.push(tool);
160
+ }
161
+ }
162
+ catch (error) {
163
+ console.error(`Error evaluating visibility for tool '${toolId}':`, error);
164
+ }
165
+ }
166
+ return visible;
167
+ }
168
+ /**
169
+ * Create button definitions for visible tools
170
+ *
171
+ * @param allowedToolIds - Tool IDs that passed Pass 1
172
+ * @param context - Context to evaluate
173
+ * @param buttonOptions - Options for button creation
174
+ * @returns Array of button definitions ready for rendering
175
+ */
176
+ createButtons(allowedToolIds, context, buttonOptions) {
177
+ const visibleTools = this.filterVisibleInContext(allowedToolIds, context);
178
+ return visibleTools.map((tool) => {
179
+ const options = buttonOptions(tool.toolId);
180
+ return tool.createButton(context, options);
181
+ });
182
+ }
183
+ /**
184
+ * Get tool metadata for building UIs
185
+ * Useful for building PNP configuration interfaces
186
+ *
187
+ * @returns Array of tool metadata (id, name, description, pnpSupportIds)
188
+ */
189
+ getToolMetadata() {
190
+ return this.getAllTools().map((tool) => ({
191
+ toolId: tool.toolId,
192
+ name: tool.name,
193
+ description: tool.description,
194
+ pnpSupportIds: tool.pnpSupportIds || [],
195
+ supportedLevels: tool.supportedLevels,
196
+ }));
197
+ }
198
+ /**
199
+ * Generate PNP support IDs from enabled tools
200
+ * Useful for creating PNP profiles
201
+ *
202
+ * @param enabledToolIds - Tool IDs to enable
203
+ * @returns Array of unique PNP support IDs
204
+ */
205
+ generatePNPSupportsFromTools(enabledToolIds) {
206
+ const pnpSupports = new Set();
207
+ for (const toolId of enabledToolIds) {
208
+ const tool = this.get(toolId);
209
+ if (tool?.pnpSupportIds) {
210
+ for (const pnpId of tool.pnpSupportIds) {
211
+ pnpSupports.add(pnpId);
212
+ }
213
+ }
214
+ }
215
+ return Array.from(pnpSupports);
216
+ }
217
+ /**
218
+ * Clear all registrations (useful for testing)
219
+ */
220
+ clear() {
221
+ this.tools.clear();
222
+ this.pnpIndex.clear();
223
+ }
224
+ /**
225
+ * Configure global component overrides used by tool instance creation.
226
+ */
227
+ setComponentOverrides(overrides) {
228
+ this.componentOverrides = overrides;
229
+ }
230
+ /**
231
+ * Create a tool instance by tool ID using registered tool definition.
232
+ */
233
+ createToolInstance(toolId, context, options = {}) {
234
+ const tool = this.get(toolId);
235
+ if (!tool) {
236
+ throw new Error(`Tool '${toolId}' is not registered`);
237
+ }
238
+ const mergedOptions = {
239
+ ...options,
240
+ config: {
241
+ ...(this.componentOverrides || {}),
242
+ ...(options.config || {}),
243
+ },
244
+ };
245
+ return tool.createToolInstance(context, mergedOptions);
246
+ }
247
+ }
248
+ //# sourceMappingURL=ToolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../../src/services/ToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -135,6 +135,8 @@ export declare class ToolkitCoordinator {
135
135
  readonly toolProviderRegistry: ToolProviderRegistry;
136
136
  /** Track TTS initialization state */
137
137
  private ttsInitialized;
138
+ /** Callback for floating tools changes */
139
+ private floatingToolsChangeCallback;
138
140
  constructor(config: ToolkitCoordinatorConfig);
139
141
  /**
140
142
  * Register tool providers in the registry
@@ -179,6 +181,26 @@ export declare class ToolkitCoordinator {
179
181
  * @param updates Partial configuration updates
180
182
  */
181
183
  updateToolConfig(toolId: string, updates: Partial<ToolConfig>): void;
184
+ /**
185
+ * Update the enabled tools list for floating tools (calculator, graph, etc.).
186
+ * Used for PNP profile changes or dynamic tool configuration.
187
+ *
188
+ * @param toolIds Array of tool IDs to enable
189
+ */
190
+ updateFloatingTools(toolIds: string[]): void;
191
+ /**
192
+ * Get currently enabled floating tools.
193
+ *
194
+ * @returns Array of enabled tool IDs
195
+ */
196
+ getFloatingTools(): string[];
197
+ /**
198
+ * Set a callback to be notified when floating tools change.
199
+ *
200
+ * @param callback Function to call when floating tools are updated
201
+ * @returns Unsubscribe function
202
+ */
203
+ onFloatingToolsChange(callback: (toolIds: string[]) => void): () => void;
182
204
  /**
183
205
  * Apply tool configuration changes to underlying services.
184
206
  * Called after updateToolConfig().
@@ -1 +1 @@
1
- {"version":3,"file":"ToolkitCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolkitCoordinator.d.ts","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,8 @@ export class ToolkitCoordinator {
56
56
  toolProviderRegistry;
57
57
  /** Track TTS initialization state */
58
58
  ttsInitialized = false;
59
+ /** Callback for floating tools changes */
60
+ floatingToolsChangeCallback = null;
59
61
  constructor(config) {
60
62
  if (!config.assessmentId) {
61
63
  throw new Error("ToolkitCoordinator requires assessmentId in config");
@@ -231,6 +233,48 @@ export class ToolkitCoordinator {
231
233
  // Apply configuration changes to services
232
234
  this._applyToolConfigChange(toolId, updates);
233
235
  }
236
+ /**
237
+ * Update the enabled tools list for floating tools (calculator, graph, etc.).
238
+ * Used for PNP profile changes or dynamic tool configuration.
239
+ *
240
+ * @param toolIds Array of tool IDs to enable
241
+ */
242
+ updateFloatingTools(toolIds) {
243
+ if (!this.config.tools) {
244
+ this.config.tools = {};
245
+ }
246
+ if (!this.config.tools.floatingTools) {
247
+ this.config.tools.floatingTools = {};
248
+ }
249
+ this.config.tools.floatingTools.enabledTools = toolIds;
250
+ // Notify listener of change
251
+ if (this.floatingToolsChangeCallback) {
252
+ this.floatingToolsChangeCallback(toolIds);
253
+ }
254
+ }
255
+ /**
256
+ * Get currently enabled floating tools.
257
+ *
258
+ * @returns Array of enabled tool IDs
259
+ */
260
+ getFloatingTools() {
261
+ return this.config.tools?.floatingTools?.enabledTools || [];
262
+ }
263
+ /**
264
+ * Set a callback to be notified when floating tools change.
265
+ *
266
+ * @param callback Function to call when floating tools are updated
267
+ * @returns Unsubscribe function
268
+ */
269
+ onFloatingToolsChange(callback) {
270
+ this.floatingToolsChangeCallback = callback;
271
+ // Call immediately with current value
272
+ callback(this.getFloatingTools());
273
+ // Return unsubscribe function
274
+ return () => {
275
+ this.floatingToolsChangeCallback = null;
276
+ };
277
+ }
234
278
  /**
235
279
  * Apply tool configuration changes to underlying services.
236
280
  * Called after updateToolConfig().
@@ -1 +1 @@
1
- {"version":3,"file":"ToolkitCoordinator.js","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolkitCoordinator.js","sourceRoot":"","sources":["../../src/services/ToolkitCoordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Default Tool Registry Factory
3
+ *
4
+ * Creates a ToolRegistry pre-populated with all PIE framework tools.
5
+ * Integrators can use this as a starting point and customize as needed.
6
+ */
7
+ import { ToolRegistry } from "./ToolRegistry";
8
+ import type { ToolRegistration } from "./ToolRegistry";
9
+ import { type ToolComponentFactory, type ToolComponentFactoryMap, type ToolTagMap } from "../tools/tool-tag-map";
10
+ export interface DefaultToolRegistryOptions {
11
+ /**
12
+ * Override default tool registrations by toolId.
13
+ * This is the highest-precedence extension point.
14
+ */
15
+ overrides?: Partial<Record<string, ToolRegistration>>;
16
+ /**
17
+ * Override default component tag mapping used by built-in registrations.
18
+ */
19
+ toolTagMap?: Partial<ToolTagMap>;
20
+ /**
21
+ * Override component factory globally (all tools) or per tool.
22
+ */
23
+ toolComponentFactory?: ToolComponentFactory;
24
+ toolComponentFactories?: Partial<ToolComponentFactoryMap>;
25
+ }
26
+ /**
27
+ * Create a tool registry with all default PIE tools registered
28
+ *
29
+ * Default tools include:
30
+ * - Calculator (basic, scientific, graphing)
31
+ * - Text-to-Speech (TTS)
32
+ * - Ruler
33
+ * - Protractor
34
+ * - Answer Eliminator
35
+ * - Highlighter
36
+ * - Magnifier
37
+ * - Line Reader
38
+ * - Color Scheme
39
+ * - Annotation Toolbar
40
+ * - Graph
41
+ * - Periodic Table
42
+ *
43
+ * @returns ToolRegistry with all default tools
44
+ */
45
+ export declare function createDefaultToolRegistry(options?: DefaultToolRegistryOptions): ToolRegistry;
46
+ /**
47
+ * Default tool placement configuration
48
+ *
49
+ * Defines which tools appear at which levels by default.
50
+ * Integrators can override this configuration.
51
+ *
52
+ * Categories:
53
+ * - Global tools: magnifier, colorScheme (assessment/section level)
54
+ * - Context-smart: calculator, graph, periodicTable (item/element, auto-detect)
55
+ * - Reading aids: textToSpeech, lineReader, annotationToolbar (where text exists)
56
+ * - Interaction-specific: answerEliminator (choice questions), highlighter (text)
57
+ * - Measurement: ruler, protractor (element level, diagram/geometry)
58
+ */
59
+ export declare const DEFAULT_TOOL_PLACEMENT: {
60
+ readonly assessment: readonly ["magnifier", "colorScheme"];
61
+ readonly section: readonly ["magnifier", "colorScheme", "calculator", "textToSpeech"];
62
+ readonly item: readonly ["calculator", "textToSpeech", "answerEliminator", "highlighter", "annotationToolbar", "graph", "periodicTable"];
63
+ readonly passage: readonly ["textToSpeech", "highlighter", "annotationToolbar", "lineReader"];
64
+ readonly rubric: readonly ["textToSpeech", "highlighter", "annotationToolbar", "lineReader"];
65
+ readonly element: readonly ["calculator", "textToSpeech", "ruler", "protractor", "highlighter", "annotationToolbar", "graph", "periodicTable"];
66
+ };
67
+ /**
68
+ * Tool priority order for rendering
69
+ * Tools will be rendered in this order when multiple tools are visible
70
+ */
71
+ export declare const DEFAULT_TOOL_ORDER: readonly ["magnifier", "colorScheme", "calculator", "textToSpeech", "lineReader", "annotationToolbar", "highlighter", "answerEliminator", "ruler", "protractor", "graph", "periodicTable"];
72
+ //# sourceMappingURL=createDefaultToolRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDefaultToolRegistry.d.ts","sourceRoot":"","sources":["../../src/services/createDefaultToolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqBvD,OAAO,EAEN,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,0BAA0B;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACtD;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,sBAAsB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACxC,OAAO,GAAE,0BAA+B,GACtC,YAAY,CA+Bd;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB;;;;;;;CAgDzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4LAmBrB,CAAC"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Default Tool Registry Factory
3
+ *
4
+ * Creates a ToolRegistry pre-populated with all PIE framework tools.
5
+ * Integrators can use this as a starting point and customize as needed.
6
+ */
7
+ import { ToolRegistry } from "./ToolRegistry";
8
+ import { calculatorToolRegistration } from "../tools/registrations/calculator";
9
+ import { ttsToolRegistration } from "../tools/registrations/tts";
10
+ import { rulerToolRegistration, protractorToolRegistration, } from "../tools/registrations/measurement-tools";
11
+ import { answerEliminatorToolRegistration, highlighterToolRegistration, } from "../tools/registrations/interaction-tools";
12
+ import { magnifierToolRegistration, lineReaderToolRegistration, colorSchemeToolRegistration, annotationToolbarRegistration, } from "../tools/registrations/accessibility-tools";
13
+ import { graphToolRegistration, periodicTableToolRegistration, } from "../tools/registrations/subject-specific-tools";
14
+ import { DEFAULT_TOOL_TAG_MAP, } from "../tools/tool-tag-map";
15
+ /**
16
+ * Create a tool registry with all default PIE tools registered
17
+ *
18
+ * Default tools include:
19
+ * - Calculator (basic, scientific, graphing)
20
+ * - Text-to-Speech (TTS)
21
+ * - Ruler
22
+ * - Protractor
23
+ * - Answer Eliminator
24
+ * - Highlighter
25
+ * - Magnifier
26
+ * - Line Reader
27
+ * - Color Scheme
28
+ * - Annotation Toolbar
29
+ * - Graph
30
+ * - Periodic Table
31
+ *
32
+ * @returns ToolRegistry with all default tools
33
+ */
34
+ export function createDefaultToolRegistry(options = {}) {
35
+ const registry = new ToolRegistry();
36
+ const componentConfig = {
37
+ toolTagMap: {
38
+ ...DEFAULT_TOOL_TAG_MAP,
39
+ ...(options.toolTagMap || {}),
40
+ },
41
+ toolComponentFactory: options.toolComponentFactory,
42
+ toolComponentFactories: options.toolComponentFactories,
43
+ };
44
+ const applyOverrides = (registration) => options.overrides?.[registration.toolId] || registration;
45
+ // Register all default PIE tools
46
+ registry.register(applyOverrides(calculatorToolRegistration));
47
+ registry.register(applyOverrides(ttsToolRegistration));
48
+ registry.register(applyOverrides(rulerToolRegistration));
49
+ registry.register(applyOverrides(protractorToolRegistration));
50
+ registry.register(applyOverrides(answerEliminatorToolRegistration));
51
+ registry.register(applyOverrides(highlighterToolRegistration));
52
+ registry.register(applyOverrides(magnifierToolRegistration));
53
+ registry.register(applyOverrides(lineReaderToolRegistration));
54
+ registry.register(applyOverrides(colorSchemeToolRegistration));
55
+ registry.register(applyOverrides(annotationToolbarRegistration));
56
+ registry.register(applyOverrides(graphToolRegistration));
57
+ registry.register(applyOverrides(periodicTableToolRegistration));
58
+ registry.setComponentOverrides(componentConfig);
59
+ return registry;
60
+ }
61
+ /**
62
+ * Default tool placement configuration
63
+ *
64
+ * Defines which tools appear at which levels by default.
65
+ * Integrators can override this configuration.
66
+ *
67
+ * Categories:
68
+ * - Global tools: magnifier, colorScheme (assessment/section level)
69
+ * - Context-smart: calculator, graph, periodicTable (item/element, auto-detect)
70
+ * - Reading aids: textToSpeech, lineReader, annotationToolbar (where text exists)
71
+ * - Interaction-specific: answerEliminator (choice questions), highlighter (text)
72
+ * - Measurement: ruler, protractor (element level, diagram/geometry)
73
+ */
74
+ export const DEFAULT_TOOL_PLACEMENT = {
75
+ assessment: [
76
+ // Global accessibility tools
77
+ "magnifier",
78
+ "colorScheme",
79
+ ],
80
+ section: [
81
+ // Global accessibility + common tools
82
+ "magnifier",
83
+ "colorScheme",
84
+ "calculator",
85
+ "textToSpeech",
86
+ ],
87
+ item: [
88
+ // Most common item-level tools
89
+ "calculator",
90
+ "textToSpeech",
91
+ "answerEliminator",
92
+ "highlighter",
93
+ "annotationToolbar",
94
+ "graph",
95
+ "periodicTable",
96
+ ],
97
+ passage: [
98
+ // Reading-focused tools
99
+ "textToSpeech",
100
+ "highlighter",
101
+ "annotationToolbar",
102
+ "lineReader",
103
+ ],
104
+ rubric: [
105
+ // Similar to passage
106
+ "textToSpeech",
107
+ "highlighter",
108
+ "annotationToolbar",
109
+ "lineReader",
110
+ ],
111
+ element: [
112
+ // Element-specific tools
113
+ "calculator",
114
+ "textToSpeech",
115
+ "ruler",
116
+ "protractor",
117
+ "highlighter",
118
+ "annotationToolbar",
119
+ "graph",
120
+ "periodicTable",
121
+ ],
122
+ };
123
+ /**
124
+ * Tool priority order for rendering
125
+ * Tools will be rendered in this order when multiple tools are visible
126
+ */
127
+ export const DEFAULT_TOOL_ORDER = [
128
+ // Global accessibility first
129
+ "magnifier",
130
+ "colorScheme",
131
+ // Common tools
132
+ "calculator",
133
+ "textToSpeech",
134
+ // Reading aids
135
+ "lineReader",
136
+ "annotationToolbar",
137
+ "highlighter",
138
+ // Interaction tools
139
+ "answerEliminator",
140
+ // Measurement tools
141
+ "ruler",
142
+ "protractor",
143
+ // Subject-specific
144
+ "graph",
145
+ "periodicTable",
146
+ ];
147
+ //# sourceMappingURL=createDefaultToolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDefaultToolRegistry.js","sourceRoot":"","sources":["../../src/services/createDefaultToolRegistry.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,14 @@ export interface IToolCoordinator {
109
109
  * Hide a tool
110
110
  */
111
111
  hideTool(id: string): void;
112
+ /**
113
+ * Toggle tool visibility
114
+ */
115
+ toggleTool(id: string): void;
116
+ /**
117
+ * Check if tool is visible
118
+ */
119
+ isToolVisible(id: string): boolean;
112
120
  /**
113
121
  * Bring an element to the front of its layer
114
122
  */