@pie-players/pie-assessment-toolkit 0.2.7 → 0.2.10

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 (249) hide show
  1. package/README.md +200 -67
  2. package/dist/attempt/TestSession.d.ts +23 -21
  3. package/dist/attempt/TestSession.d.ts.map +1 -1
  4. package/dist/attempt/TestSession.js +17 -15
  5. package/dist/attempt/TestSession.js.map +1 -1
  6. package/dist/attempt/adapters/activity-to-test-attempt-session.d.ts +50 -0
  7. package/dist/attempt/adapters/activity-to-test-attempt-session.d.ts.map +1 -0
  8. package/dist/attempt/adapters/activity-to-test-attempt-session.js +135 -0
  9. package/dist/attempt/adapters/activity-to-test-attempt-session.js.map +1 -0
  10. package/dist/components/ItemToolBar.custom-element.js +953 -0
  11. package/dist/components/PieAssessmentToolkit.custom-element.js +757 -0
  12. package/dist/components/SectionToolBar.custom-element.js +162 -0
  13. package/dist/components/item-toolbar-element.d.ts +3 -0
  14. package/dist/components/item-toolbar-element.d.ts.map +1 -0
  15. package/dist/components/item-toolbar-element.js +2 -0
  16. package/dist/components/item-toolbar-element.js.map +1 -0
  17. package/dist/components/pie-assessment-toolkit-element.d.ts +3 -0
  18. package/dist/components/pie-assessment-toolkit-element.d.ts.map +1 -0
  19. package/dist/components/pie-assessment-toolkit-element.js +2 -0
  20. package/dist/components/pie-assessment-toolkit-element.js.map +1 -0
  21. package/dist/components/section-toolbar-element.d.ts +3 -0
  22. package/dist/components/section-toolbar-element.d.ts.map +1 -0
  23. package/dist/components/section-toolbar-element.js +2 -0
  24. package/dist/components/section-toolbar-element.js.map +1 -0
  25. package/dist/context/assessment-toolkit-context.d.ts +52 -0
  26. package/dist/context/assessment-toolkit-context.d.ts.map +1 -0
  27. package/dist/context/assessment-toolkit-context.js +6 -0
  28. package/dist/context/assessment-toolkit-context.js.map +1 -0
  29. package/dist/context/runtime-context-consumer.d.ts +14 -0
  30. package/dist/context/runtime-context-consumer.d.ts.map +1 -0
  31. package/dist/context/runtime-context-consumer.js +52 -0
  32. package/dist/context/runtime-context-consumer.js.map +1 -0
  33. package/dist/index.d.ts +19 -6
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +14 -11
  36. package/dist/index.js.map +1 -1
  37. package/dist/runtime/RuntimeRegistry.d.ts +13 -0
  38. package/dist/runtime/RuntimeRegistry.d.ts.map +1 -0
  39. package/dist/runtime/RuntimeRegistry.js +50 -0
  40. package/dist/runtime/RuntimeRegistry.js.map +1 -0
  41. package/dist/runtime/SectionRuntimeEngine.d.ts +45 -0
  42. package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -0
  43. package/dist/runtime/SectionRuntimeEngine.js +81 -0
  44. package/dist/runtime/SectionRuntimeEngine.js.map +1 -0
  45. package/dist/runtime/registration-events.d.ts +19 -0
  46. package/dist/runtime/registration-events.d.ts.map +1 -0
  47. package/dist/runtime/registration-events.js +4 -0
  48. package/dist/runtime/registration-events.js.map +1 -0
  49. package/dist/runtime/runtime-event-guards.d.ts +3 -0
  50. package/dist/runtime/runtime-event-guards.d.ts.map +1 -0
  51. package/dist/runtime/runtime-event-guards.js +9 -0
  52. package/dist/runtime/runtime-event-guards.js.map +1 -0
  53. package/dist/runtime/tool-host-contract.d.ts +30 -0
  54. package/dist/runtime/tool-host-contract.d.ts.map +1 -0
  55. package/dist/runtime/tool-host-contract.js +48 -0
  56. package/dist/runtime/tool-host-contract.js.map +1 -0
  57. package/dist/services/HighlightCoordinator.d.ts +9 -0
  58. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  59. package/dist/services/HighlightCoordinator.js +196 -55
  60. package/dist/services/HighlightCoordinator.js.map +1 -1
  61. package/dist/services/TTSService.d.ts +21 -1
  62. package/dist/services/TTSService.d.ts.map +1 -1
  63. package/dist/services/TTSService.js +356 -117
  64. package/dist/services/TTSService.js.map +1 -1
  65. package/dist/services/ThemeProvider.d.ts +1 -0
  66. package/dist/services/ThemeProvider.d.ts.map +1 -1
  67. package/dist/services/ThemeProvider.js +82 -46
  68. package/dist/services/ThemeProvider.js.map +1 -1
  69. package/dist/services/ToolConfigResolver.d.ts +1 -1
  70. package/dist/services/ToolConfigResolver.js +1 -1
  71. package/dist/services/ToolCoordinator.d.ts +1 -1
  72. package/dist/services/ToolCoordinator.d.ts.map +1 -1
  73. package/dist/services/ToolRegistry.d.ts +76 -67
  74. package/dist/services/ToolRegistry.d.ts.map +1 -1
  75. package/dist/services/ToolRegistry.js +73 -22
  76. package/dist/services/ToolRegistry.js.map +1 -1
  77. package/dist/services/ToolkitCoordinator.d.ts +126 -8
  78. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  79. package/dist/services/ToolkitCoordinator.js +607 -72
  80. package/dist/services/ToolkitCoordinator.js.map +1 -1
  81. package/dist/services/createDefaultToolRegistry.d.ts +11 -12
  82. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -1
  83. package/dist/services/createDefaultToolRegistry.js +9 -56
  84. package/dist/services/createDefaultToolRegistry.js.map +1 -1
  85. package/dist/services/defaultPersonalNeedsProfile.d.ts +4 -0
  86. package/dist/services/defaultPersonalNeedsProfile.d.ts.map +1 -0
  87. package/dist/services/defaultPersonalNeedsProfile.js +25 -0
  88. package/dist/services/defaultPersonalNeedsProfile.js.map +1 -0
  89. package/dist/services/interfaces.d.ts +62 -2
  90. package/dist/services/interfaces.d.ts.map +1 -1
  91. package/dist/services/interfaces.js.map +1 -1
  92. package/dist/services/pnp-standard-features.d.ts +3 -4
  93. package/dist/services/pnp-standard-features.d.ts.map +1 -1
  94. package/dist/services/pnp-standard-features.js +0 -3
  95. package/dist/services/pnp-standard-features.js.map +1 -1
  96. package/dist/services/section-controller-types.d.ts +37 -0
  97. package/dist/services/section-controller-types.d.ts.map +1 -0
  98. package/dist/services/section-controller-types.js +2 -0
  99. package/dist/services/section-controller-types.js.map +1 -0
  100. package/dist/services/tool-config-defaults.d.ts +14 -0
  101. package/dist/services/tool-config-defaults.d.ts.map +1 -0
  102. package/dist/services/tool-config-defaults.js +23 -0
  103. package/dist/services/tool-config-defaults.js.map +1 -0
  104. package/dist/services/tool-context.d.ts +4 -4
  105. package/dist/services/tool-context.d.ts.map +1 -1
  106. package/dist/services/tool-context.js +156 -20
  107. package/dist/services/tool-context.js.map +1 -1
  108. package/dist/services/tool-instance-id.d.ts +15 -0
  109. package/dist/services/tool-instance-id.d.ts.map +1 -0
  110. package/dist/services/tool-instance-id.js +55 -0
  111. package/dist/services/tool-instance-id.js.map +1 -0
  112. package/dist/services/tool-providers/IToolProvider.d.ts +2 -3
  113. package/dist/services/tool-providers/IToolProvider.d.ts.map +1 -1
  114. package/dist/services/tool-providers/IToolProvider.js +1 -2
  115. package/dist/services/tool-providers/IToolProvider.js.map +1 -1
  116. package/dist/services/tool-providers/MathJsToolProvider.d.ts +25 -0
  117. package/dist/services/tool-providers/MathJsToolProvider.d.ts.map +1 -0
  118. package/dist/services/tool-providers/MathJsToolProvider.js +53 -0
  119. package/dist/services/tool-providers/MathJsToolProvider.js.map +1 -0
  120. package/dist/services/tool-providers/index.d.ts +2 -0
  121. package/dist/services/tool-providers/index.d.ts.map +1 -1
  122. package/dist/services/tool-providers/index.js +1 -0
  123. package/dist/services/tool-providers/index.js.map +1 -1
  124. package/dist/services/toolbar-items.d.ts +26 -0
  125. package/dist/services/toolbar-items.d.ts.map +1 -0
  126. package/dist/services/toolbar-items.js +10 -0
  127. package/dist/services/toolbar-items.js.map +1 -0
  128. package/dist/services/tools-config-normalizer.d.ts +26 -0
  129. package/dist/services/tools-config-normalizer.d.ts.map +1 -0
  130. package/dist/services/tools-config-normalizer.js +62 -0
  131. package/dist/services/tools-config-normalizer.js.map +1 -0
  132. package/dist/services/tts/browser-provider.d.ts.map +1 -1
  133. package/dist/services/tts/browser-provider.js +201 -34
  134. package/dist/services/tts/browser-provider.js.map +1 -1
  135. package/dist/services/tts/text-processing.d.ts +17 -0
  136. package/dist/services/tts/text-processing.d.ts.map +1 -0
  137. package/dist/services/tts/text-processing.js +144 -0
  138. package/dist/services/tts/text-processing.js.map +1 -0
  139. package/dist/tools/calculators/ti-provider.d.ts.map +1 -1
  140. package/dist/tools/calculators/ti-provider.js +127 -4
  141. package/dist/tools/calculators/ti-provider.js.map +1 -1
  142. package/dist/tools/client.d.ts +2 -1
  143. package/dist/tools/client.d.ts.map +1 -1
  144. package/dist/tools/client.js +2 -1
  145. package/dist/tools/client.js.map +1 -1
  146. package/dist/tools/default-tool-module-loaders.d.ts +9 -0
  147. package/dist/tools/default-tool-module-loaders.d.ts.map +1 -0
  148. package/dist/tools/default-tool-module-loaders.js +11 -0
  149. package/dist/tools/default-tool-module-loaders.js.map +1 -0
  150. package/dist/tools/index.d.ts +2 -1
  151. package/dist/tools/index.d.ts.map +1 -1
  152. package/dist/tools/index.js +2 -1
  153. package/dist/tools/index.js.map +1 -1
  154. package/dist/tools/library-loader.d.ts +1 -1
  155. package/dist/tools/library-loader.d.ts.map +1 -1
  156. package/dist/tools/library-loader.js +7 -2
  157. package/dist/tools/library-loader.js.map +1 -1
  158. package/dist/tools/registrations/accessibility-tools.d.ts +8 -11
  159. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
  160. package/dist/tools/registrations/accessibility-tools.js +108 -120
  161. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  162. package/dist/tools/registrations/calculator.d.ts +2 -2
  163. package/dist/tools/registrations/calculator.d.ts.map +1 -1
  164. package/dist/tools/registrations/calculator.js +42 -55
  165. package/dist/tools/registrations/calculator.js.map +1 -1
  166. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -1
  167. package/dist/tools/registrations/interaction-tools.js +77 -52
  168. package/dist/tools/registrations/interaction-tools.js.map +1 -1
  169. package/dist/tools/registrations/measurement-tools.d.ts.map +1 -1
  170. package/dist/tools/registrations/measurement-tools.js +63 -38
  171. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  172. package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -1
  173. package/dist/tools/registrations/subject-specific-tools.js +63 -38
  174. package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
  175. package/dist/tools/registrations/tts.d.ts +1 -1
  176. package/dist/tools/registrations/tts.d.ts.map +1 -1
  177. package/dist/tools/registrations/tts.js +171 -41
  178. package/dist/tools/registrations/tts.js.map +1 -1
  179. package/dist/tools/response-discovery.d.ts +12 -14
  180. package/dist/tools/response-discovery.d.ts.map +1 -1
  181. package/dist/tools/response-discovery.js +23 -80
  182. package/dist/tools/response-discovery.js.map +1 -1
  183. package/dist/tools/tool-tag-map.d.ts +3 -3
  184. package/dist/tools/tool-tag-map.d.ts.map +1 -1
  185. package/dist/tools/tool-tag-map.js +4 -4
  186. package/dist/tools/tool-tag-map.js.map +1 -1
  187. package/dist/tools/types.d.ts +3 -1
  188. package/dist/tools/types.d.ts.map +1 -1
  189. package/package.json +28 -27
  190. package/src/README.md +16 -32
  191. package/src/components/ItemToolBar.svelte +701 -0
  192. package/src/components/PieAssessmentToolkit.svelte +610 -0
  193. package/src/components/SectionToolBar.svelte +58 -0
  194. package/src/components/ToolButton.svelte +11 -11
  195. package/src/components/ToolButtonGroup.svelte +27 -11
  196. package/src/tools/README.md +6 -5
  197. package/src/tools/calculators/README.md +4 -4
  198. package/dist/player/AssessmentPlayer.d.ts +0 -397
  199. package/dist/player/AssessmentPlayer.d.ts.map +0 -1
  200. package/dist/player/AssessmentPlayer.js +0 -974
  201. package/dist/player/AssessmentPlayer.js.map +0 -1
  202. package/dist/player/index.d.ts +0 -17
  203. package/dist/player/index.d.ts.map +0 -1
  204. package/dist/player/index.js +0 -15
  205. package/dist/player/index.js.map +0 -1
  206. package/dist/player/navigation-types.d.ts +0 -63
  207. package/dist/player/navigation-types.d.ts.map +0 -1
  208. package/dist/player/navigation-types.js +0 -7
  209. package/dist/player/navigation-types.js.map +0 -1
  210. package/dist/player/qti-navigation.d.ts +0 -29
  211. package/dist/player/qti-navigation.d.ts.map +0 -1
  212. package/dist/player/qti-navigation.js +0 -160
  213. package/dist/player/qti-navigation.js.map +0 -1
  214. package/dist/reference-layout/index.d.ts +0 -19
  215. package/dist/reference-layout/index.d.ts.map +0 -1
  216. package/dist/reference-layout/index.js +0 -20
  217. package/dist/reference-layout/index.js.map +0 -1
  218. package/dist/services/AnnotationToolbarConfig.d.ts +0 -134
  219. package/dist/services/AnnotationToolbarConfig.d.ts.map +0 -1
  220. package/dist/services/AnnotationToolbarConfig.js +0 -100
  221. package/dist/services/AnnotationToolbarConfig.js.map +0 -1
  222. package/dist/services/AssessmentAuthoringService.d.ts +0 -60
  223. package/dist/services/AssessmentAuthoringService.d.ts.map +0 -1
  224. package/dist/services/AssessmentAuthoringService.js +0 -183
  225. package/dist/services/AssessmentAuthoringService.js.map +0 -1
  226. package/dist/services/PNPMapper.d.ts +0 -81
  227. package/dist/services/PNPMapper.d.ts.map +0 -1
  228. package/dist/services/PNPMapper.js +0 -108
  229. package/dist/services/PNPMapper.js.map +0 -1
  230. package/dist/services/tts/provider-interface.d.ts +0 -131
  231. package/dist/services/tts/provider-interface.d.ts.map +0 -1
  232. package/dist/services/tts/provider-interface.js +0 -10
  233. package/dist/services/tts/provider-interface.js.map +0 -1
  234. package/src/components/PNPProfileTester.example.svelte +0 -188
  235. package/src/components/PNPProfileTester.svelte +0 -397
  236. package/src/components/PNPProvenanceViewer.svelte +0 -260
  237. package/src/components/QuestionToolBar.svelte +0 -483
  238. package/src/player/AssessmentLayout.svelte +0 -68
  239. package/src/player/README.md +0 -154
  240. package/src/reference-layout/README.md +0 -135
  241. package/src/reference-layout/ReferenceLayout.svelte +0 -201
  242. package/src/reference-layout/components/AssessmentContent.svelte +0 -259
  243. package/src/reference-layout/components/AssessmentFooter.svelte +0 -89
  244. package/src/reference-layout/components/AssessmentHeader.svelte +0 -250
  245. package/src/reference-layout/components/AssessmentNavigation.svelte +0 -134
  246. package/src/reference-layout/components/AssessmentToolsBar.svelte +0 -176
  247. package/src/reference-layout/components/ItemPanel.svelte +0 -200
  248. package/src/reference-layout/components/NotesPanel.svelte +0 -179
  249. package/src/reference-layout/components/PassagePanel.svelte +0 -76
@@ -11,6 +11,7 @@
11
11
  * - highlighting (cognitive/reading support)
12
12
  */
13
13
  import { hasChoiceInteraction, hasReadableText, } from "../../services/tool-context.js";
14
+ import { createScopedToolId } from "../../services/tool-instance-id.js";
14
15
  import { createToolElement, } from "../tool-tag-map.js";
15
16
  /**
16
17
  * Answer Eliminator tool registration
@@ -23,8 +24,8 @@ export const answerEliminatorToolRegistration = {
23
24
  name: "Answer Eliminator",
24
25
  description: "Strike through answer choices",
25
26
  icon: "strikethrough",
26
- // Answer eliminator appears at item and element level
27
- supportedLevels: ["item", "element"],
27
+ // Answer eliminator appears at item level only
28
+ supportedLevels: ["item"],
28
29
  // PNP support IDs
29
30
  // Maps to QTI 3.0 standard feature: answerMasking
30
31
  pnpSupportIds: [
@@ -39,37 +40,51 @@ export const answerEliminatorToolRegistration = {
39
40
  isVisibleInContext(context) {
40
41
  return hasChoiceInteraction(context);
41
42
  },
42
- createButton(context, options) {
43
- return {
43
+ renderToolbar(context, toolbarContext) {
44
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
45
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
46
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
47
+ overlay.setAttribute("tool-id", fullToolId);
48
+ overlay.setAttribute("strategy", "strikethrough");
49
+ overlay.setAttribute("button-alignment", "inline");
50
+ const button = {
44
51
  toolId: this.toolId,
45
52
  label: this.name,
46
- icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
47
- disabled: options.disabled || false,
48
- ariaLabel: options.ariaLabel || "Answer eliminator - Strike through choices",
49
- tooltip: options.tooltip || "Strike Through",
50
- onClick: options.onClick || (() => { }),
51
- className: options.className,
53
+ icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="currentColor" aria-hidden="true"><path d="M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z"/></svg>',
54
+ disabled: false,
55
+ ariaLabel: "Answer eliminator - Strike through choices",
56
+ tooltip: "Strike Through",
57
+ onClick: () => toolbarContext.toggleTool(this.toolId),
58
+ active: toolbarContext.isToolVisible(fullToolId),
59
+ };
60
+ return {
61
+ toolId: this.toolId,
62
+ button,
63
+ elements: [{ element: overlay, mount: "after-buttons" }],
64
+ sync: () => {
65
+ const active = toolbarContext.isToolVisible(fullToolId);
66
+ button.active = active;
67
+ overlay.visible = active;
68
+ if (toolbarContext.toolCoordinator) {
69
+ overlay.coordinator = toolbarContext.toolCoordinator;
70
+ }
71
+ overlay.scopeElement = toolbarContext.getScopeElement?.() || null;
72
+ if (toolbarContext.elementToolStateStore) {
73
+ overlay.elementToolStateStore = toolbarContext.elementToolStateStore;
74
+ }
75
+ const globalElementId = toolbarContext.getGlobalElementId?.();
76
+ if (globalElementId) {
77
+ overlay.globalElementId = globalElementId;
78
+ }
79
+ },
80
+ subscribeActive: (callback) => {
81
+ if (!toolbarContext.subscribeVisibility)
82
+ return () => { };
83
+ return toolbarContext.subscribeVisibility(() => {
84
+ callback(toolbarContext.isToolVisible(fullToolId));
85
+ });
86
+ },
52
87
  };
53
- },
54
- createToolInstance(context, options) {
55
- const componentOverrides = options.config ?? {};
56
- const answerEliminator = createToolElement(this.toolId, context, options, componentOverrides);
57
- answerEliminator.visible = true;
58
- answerEliminator.toolId = this.toolId;
59
- if (options.config?.toolkitCoordinator) {
60
- answerEliminator.coordinator = options.config.toolkitCoordinator;
61
- }
62
- if (options.config?.elementToolStateStore) {
63
- answerEliminator.elementToolStateStore =
64
- options.config.elementToolStateStore;
65
- }
66
- if (typeof options.config?.globalElementId === "string") {
67
- answerEliminator.globalElementId = options.config.globalElementId;
68
- }
69
- if (options.onClose) {
70
- answerEliminator.addEventListener("close", options.onClose);
71
- }
72
- return answerEliminator;
73
88
  },
74
89
  };
75
90
  /**
@@ -93,32 +108,42 @@ export const highlighterToolRegistration = {
93
108
  isVisibleInContext(context) {
94
109
  return hasReadableText(context);
95
110
  },
96
- createButton(context, options) {
97
- return {
111
+ renderToolbar(context, toolbarContext) {
112
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
113
+ const button = {
98
114
  toolId: this.toolId,
99
115
  label: this.name,
100
116
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
101
- disabled: options.disabled || false,
102
- ariaLabel: options.ariaLabel || "Highlighter - Highlight text",
103
- tooltip: options.tooltip || "Highlight",
104
- onClick: options.onClick || (() => { }),
105
- className: options.className,
117
+ disabled: false,
118
+ ariaLabel: "Highlighter - Highlight text",
119
+ tooltip: "Highlight",
120
+ onClick: () => toolbarContext.toggleTool(this.toolId),
121
+ active: toolbarContext.isToolVisible(fullToolId),
122
+ };
123
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
124
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
125
+ overlay.setAttribute("tool-id", fullToolId);
126
+ return {
127
+ toolId: this.toolId,
128
+ button,
129
+ elements: [{ element: overlay, mount: "after-buttons" }],
130
+ sync: () => {
131
+ const active = toolbarContext.isToolVisible(fullToolId);
132
+ button.active = active;
133
+ overlay.enabled = active;
134
+ overlay.visible = active;
135
+ if (toolbarContext.ttsService) {
136
+ overlay.ttsService = toolbarContext.ttsService;
137
+ }
138
+ },
139
+ subscribeActive: (callback) => {
140
+ if (!toolbarContext.subscribeVisibility)
141
+ return () => { };
142
+ return toolbarContext.subscribeVisibility(() => {
143
+ callback(toolbarContext.isToolVisible(fullToolId));
144
+ });
145
+ },
106
146
  };
107
- },
108
- createToolInstance(context, options) {
109
- const componentOverrides = options.config ?? {};
110
- const highlighter = createToolElement(this.toolId, context, options, componentOverrides);
111
- highlighter.enabled = true;
112
- if (options.config?.highlightCoordinator) {
113
- highlighter.highlightCoordinator = options.config.highlightCoordinator;
114
- }
115
- if (options.config?.ttsService) {
116
- highlighter.ttsService = options.config.ttsService;
117
- }
118
- if (options.onClose) {
119
- highlighter.addEventListener("close", options.onClose);
120
- }
121
- return highlighter;
122
147
  },
123
148
  };
124
149
  //# sourceMappingURL=interaction-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/interaction-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/interaction-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"measurement-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/measurement-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAQxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBAmEnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAmExC,CAAC"}
1
+ {"version":3,"file":"measurement-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/measurement-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AASxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBA2EnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBA2ExC,CAAC"}
@@ -8,6 +8,7 @@
8
8
  * - protractor (assessment tool)
9
9
  */
10
10
  import { hasMathContent } from "../../services/tool-context.js";
11
+ import { createScopedToolId } from "../../services/tool-instance-id.js";
11
12
  import { createToolElement, } from "../tool-tag-map.js";
12
13
  /**
13
14
  * Ruler tool registration
@@ -34,29 +35,41 @@ export const rulerToolRegistration = {
34
35
  isVisibleInContext(context) {
35
36
  return hasMathContent(context);
36
37
  },
37
- createButton(context, options) {
38
- return {
38
+ renderToolbar(context, toolbarContext) {
39
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
40
+ const button = {
39
41
  toolId: this.toolId,
40
42
  label: this.name,
41
43
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
42
- disabled: options.disabled || false,
43
- ariaLabel: options.ariaLabel || "Open ruler tool",
44
- tooltip: options.tooltip || "Ruler",
45
- onClick: options.onClick || (() => { }),
46
- className: options.className,
44
+ disabled: false,
45
+ ariaLabel: "Open ruler tool",
46
+ tooltip: "Ruler",
47
+ onClick: () => toolbarContext.toggleTool(this.toolId),
48
+ active: toolbarContext.isToolVisible(fullToolId),
49
+ };
50
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
51
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
52
+ overlay.setAttribute("tool-id", fullToolId);
53
+ return {
54
+ toolId: this.toolId,
55
+ button,
56
+ elements: [{ element: overlay, mount: "after-buttons" }],
57
+ sync: () => {
58
+ const active = toolbarContext.isToolVisible(fullToolId);
59
+ button.active = active;
60
+ overlay.visible = active;
61
+ if (toolbarContext.toolkitCoordinator) {
62
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
63
+ }
64
+ },
65
+ subscribeActive: (callback) => {
66
+ if (!toolbarContext.subscribeVisibility)
67
+ return () => { };
68
+ return toolbarContext.subscribeVisibility(() => {
69
+ callback(toolbarContext.isToolVisible(fullToolId));
70
+ });
71
+ },
47
72
  };
48
- },
49
- createToolInstance(context, options) {
50
- const componentOverrides = options.config ?? {};
51
- const ruler = createToolElement(this.toolId, context, options, componentOverrides);
52
- ruler.visible = true;
53
- if (options.config?.toolkitCoordinator) {
54
- ruler.toolkitCoordinator = options.config.toolkitCoordinator;
55
- }
56
- if (options.onClose) {
57
- ruler.addEventListener("close", options.onClose);
58
- }
59
- return ruler;
60
73
  },
61
74
  };
62
75
  /**
@@ -84,29 +97,41 @@ export const protractorToolRegistration = {
84
97
  isVisibleInContext(context) {
85
98
  return hasMathContent(context);
86
99
  },
87
- createButton(context, options) {
88
- return {
100
+ renderToolbar(context, toolbarContext) {
101
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
102
+ const button = {
89
103
  toolId: this.toolId,
90
104
  label: this.name,
91
105
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
92
- disabled: options.disabled || false,
93
- ariaLabel: options.ariaLabel || "Open protractor tool",
94
- tooltip: options.tooltip || "Protractor",
95
- onClick: options.onClick || (() => { }),
96
- className: options.className,
106
+ disabled: false,
107
+ ariaLabel: "Open protractor tool",
108
+ tooltip: "Protractor",
109
+ onClick: () => toolbarContext.toggleTool(this.toolId),
110
+ active: toolbarContext.isToolVisible(fullToolId),
111
+ };
112
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
113
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
114
+ overlay.setAttribute("tool-id", fullToolId);
115
+ return {
116
+ toolId: this.toolId,
117
+ button,
118
+ elements: [{ element: overlay, mount: "after-buttons" }],
119
+ sync: () => {
120
+ const active = toolbarContext.isToolVisible(fullToolId);
121
+ button.active = active;
122
+ overlay.visible = active;
123
+ if (toolbarContext.toolkitCoordinator) {
124
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
125
+ }
126
+ },
127
+ subscribeActive: (callback) => {
128
+ if (!toolbarContext.subscribeVisibility)
129
+ return () => { };
130
+ return toolbarContext.subscribeVisibility(() => {
131
+ callback(toolbarContext.isToolVisible(fullToolId));
132
+ });
133
+ },
97
134
  };
98
- },
99
- createToolInstance(context, options) {
100
- const componentOverrides = options.config ?? {};
101
- const protractor = createToolElement(this.toolId, context, options, componentOverrides);
102
- protractor.visible = true;
103
- if (options.config?.toolkitCoordinator) {
104
- protractor.toolkitCoordinator = options.config.toolkitCoordinator;
105
- }
106
- if (options.onClose) {
107
- protractor.addEventListener("close", options.onClose);
108
- }
109
- return protractor;
110
135
  },
111
136
  };
112
137
  //# sourceMappingURL=measurement-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"measurement-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/measurement-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"measurement-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/measurement-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"subject-specific-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/subject-specific-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAQxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBAqEnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,gBAoE3C,CAAC"}
1
+ {"version":3,"file":"subject-specific-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/subject-specific-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AASxC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBA6EnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,EAAE,gBA4E3C,CAAC"}
@@ -11,6 +11,7 @@
11
11
  * - periodicTable (assessment tool)
12
12
  */
13
13
  import { hasMathContent, hasScienceContent } from "../../services/tool-context.js";
14
+ import { createScopedToolId } from "../../services/tool-instance-id.js";
14
15
  import { createToolElement, } from "../tool-tag-map.js";
15
16
  /**
16
17
  * Graph tool registration
@@ -39,29 +40,41 @@ export const graphToolRegistration = {
39
40
  isVisibleInContext(context) {
40
41
  return hasMathContent(context);
41
42
  },
42
- createButton(context, options) {
43
- return {
43
+ renderToolbar(context, toolbarContext) {
44
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
45
+ const button = {
44
46
  toolId: this.toolId,
45
47
  label: this.name,
46
48
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
47
- disabled: options.disabled || false,
48
- ariaLabel: options.ariaLabel || "Graph - Graphing calculator",
49
- tooltip: options.tooltip || "Graph",
50
- onClick: options.onClick || (() => { }),
51
- className: options.className,
49
+ disabled: false,
50
+ ariaLabel: "Graph - Graphing calculator",
51
+ tooltip: "Graph",
52
+ onClick: () => toolbarContext.toggleTool(this.toolId),
53
+ active: toolbarContext.isToolVisible(fullToolId),
54
+ };
55
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
56
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
57
+ overlay.setAttribute("tool-id", fullToolId);
58
+ return {
59
+ toolId: this.toolId,
60
+ button,
61
+ elements: [{ element: overlay, mount: "after-buttons" }],
62
+ sync: () => {
63
+ const active = toolbarContext.isToolVisible(fullToolId);
64
+ button.active = active;
65
+ overlay.visible = active;
66
+ if (toolbarContext.toolkitCoordinator) {
67
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
68
+ }
69
+ },
70
+ subscribeActive: (callback) => {
71
+ if (!toolbarContext.subscribeVisibility)
72
+ return () => { };
73
+ return toolbarContext.subscribeVisibility(() => {
74
+ callback(toolbarContext.isToolVisible(fullToolId));
75
+ });
76
+ },
52
77
  };
53
- },
54
- createToolInstance(context, options) {
55
- const componentOverrides = options.config ?? {};
56
- const graph = createToolElement(this.toolId, context, options, componentOverrides);
57
- graph.visible = true;
58
- if (options.config?.toolkitCoordinator) {
59
- graph.toolkitCoordinator = options.config.toolkitCoordinator;
60
- }
61
- if (options.onClose) {
62
- graph.addEventListener("close", options.onClose);
63
- }
64
- return graph;
65
78
  },
66
79
  };
67
80
  /**
@@ -90,29 +103,41 @@ export const periodicTableToolRegistration = {
90
103
  isVisibleInContext(context) {
91
104
  return hasScienceContent(context);
92
105
  },
93
- createButton(context, options) {
94
- return {
106
+ renderToolbar(context, toolbarContext) {
107
+ const fullToolId = createScopedToolId(this.toolId, toolbarContext.scope.level, toolbarContext.scope.scopeId);
108
+ const button = {
95
109
  toolId: this.toolId,
96
110
  label: this.name,
97
111
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
98
- disabled: options.disabled || false,
99
- ariaLabel: options.ariaLabel || "Periodic table - Chemistry reference",
100
- tooltip: options.tooltip || "Periodic Table",
101
- onClick: options.onClick || (() => { }),
102
- className: options.className,
112
+ disabled: false,
113
+ ariaLabel: "Periodic table - Chemistry reference",
114
+ tooltip: "Periodic Table",
115
+ onClick: () => toolbarContext.toggleTool(this.toolId),
116
+ active: toolbarContext.isToolVisible(fullToolId),
117
+ };
118
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
119
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
120
+ overlay.setAttribute("tool-id", fullToolId);
121
+ return {
122
+ toolId: this.toolId,
123
+ button,
124
+ elements: [{ element: overlay, mount: "after-buttons" }],
125
+ sync: () => {
126
+ const active = toolbarContext.isToolVisible(fullToolId);
127
+ button.active = active;
128
+ overlay.visible = active;
129
+ if (toolbarContext.toolkitCoordinator) {
130
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
131
+ }
132
+ },
133
+ subscribeActive: (callback) => {
134
+ if (!toolbarContext.subscribeVisibility)
135
+ return () => { };
136
+ return toolbarContext.subscribeVisibility(() => {
137
+ callback(toolbarContext.isToolVisible(fullToolId));
138
+ });
139
+ },
103
140
  };
104
- },
105
- createToolInstance(context, options) {
106
- const componentOverrides = options.config ?? {};
107
- const periodicTable = createToolElement(this.toolId, context, options, componentOverrides);
108
- periodicTable.visible = true;
109
- if (options.config?.toolkitCoordinator) {
110
- periodicTable.toolkitCoordinator = options.config.toolkitCoordinator;
111
- }
112
- if (options.onClose) {
113
- periodicTable.addEventListener("close", options.onClose);
114
- }
115
- return periodicTable;
116
141
  },
117
142
  };
118
143
  //# sourceMappingURL=subject-specific-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-specific-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/subject-specific-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subject-specific-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/subject-specific-tools.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { ToolRegistration } from "../../services/ToolRegistry.js";
14
14
  * Supports:
15
15
  * - Reading content aloud using browser TTS or external providers
16
16
  * - Context-aware visibility (shows when readable text is available)
17
- * - All levels except assessment (section, item, passage, rubric, element)
17
+ * - All levels except assessment and element
18
18
  */
19
19
  export declare const ttsToolRegistration: ToolRegistration;
20
20
  //# sourceMappingURL=tts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAQxC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBA+FjC,CAAC"}
1
+ {"version":3,"file":"tts.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAKxC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBA8OjC,CAAC"}