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

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 (220) 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 +628 -0
  11. package/dist/components/PieAssessmentToolkit.custom-element.js +670 -0
  12. package/dist/components/item-toolbar-element.d.ts +3 -0
  13. package/dist/components/item-toolbar-element.d.ts.map +1 -0
  14. package/dist/components/item-toolbar-element.js +2 -0
  15. package/dist/components/item-toolbar-element.js.map +1 -0
  16. package/dist/components/pie-assessment-toolkit-element.d.ts +3 -0
  17. package/dist/components/pie-assessment-toolkit-element.d.ts.map +1 -0
  18. package/dist/components/pie-assessment-toolkit-element.js +2 -0
  19. package/dist/components/pie-assessment-toolkit-element.js.map +1 -0
  20. package/dist/context/assessment-toolkit-context.d.ts +52 -0
  21. package/dist/context/assessment-toolkit-context.d.ts.map +1 -0
  22. package/dist/context/assessment-toolkit-context.js +6 -0
  23. package/dist/context/assessment-toolkit-context.js.map +1 -0
  24. package/dist/context/runtime-context-consumer.d.ts +14 -0
  25. package/dist/context/runtime-context-consumer.d.ts.map +1 -0
  26. package/dist/context/runtime-context-consumer.js +52 -0
  27. package/dist/context/runtime-context-consumer.js.map +1 -0
  28. package/dist/index.d.ts +16 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +13 -11
  31. package/dist/index.js.map +1 -1
  32. package/dist/runtime/RuntimeRegistry.d.ts +13 -0
  33. package/dist/runtime/RuntimeRegistry.d.ts.map +1 -0
  34. package/dist/runtime/RuntimeRegistry.js +50 -0
  35. package/dist/runtime/RuntimeRegistry.js.map +1 -0
  36. package/dist/runtime/SectionRuntimeEngine.d.ts +45 -0
  37. package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -0
  38. package/dist/runtime/SectionRuntimeEngine.js +81 -0
  39. package/dist/runtime/SectionRuntimeEngine.js.map +1 -0
  40. package/dist/runtime/registration-events.d.ts +19 -0
  41. package/dist/runtime/registration-events.d.ts.map +1 -0
  42. package/dist/runtime/registration-events.js +4 -0
  43. package/dist/runtime/registration-events.js.map +1 -0
  44. package/dist/runtime/runtime-event-guards.d.ts +3 -0
  45. package/dist/runtime/runtime-event-guards.d.ts.map +1 -0
  46. package/dist/runtime/runtime-event-guards.js +9 -0
  47. package/dist/runtime/runtime-event-guards.js.map +1 -0
  48. package/dist/runtime/tool-host-contract.d.ts +30 -0
  49. package/dist/runtime/tool-host-contract.d.ts.map +1 -0
  50. package/dist/runtime/tool-host-contract.js +48 -0
  51. package/dist/runtime/tool-host-contract.js.map +1 -0
  52. package/dist/services/TTSService.d.ts +3 -1
  53. package/dist/services/TTSService.d.ts.map +1 -1
  54. package/dist/services/TTSService.js +13 -12
  55. package/dist/services/TTSService.js.map +1 -1
  56. package/dist/services/ThemeProvider.d.ts +1 -0
  57. package/dist/services/ThemeProvider.d.ts.map +1 -1
  58. package/dist/services/ThemeProvider.js +82 -46
  59. package/dist/services/ThemeProvider.js.map +1 -1
  60. package/dist/services/ToolConfigResolver.d.ts +1 -1
  61. package/dist/services/ToolConfigResolver.js +1 -1
  62. package/dist/services/ToolCoordinator.d.ts +1 -1
  63. package/dist/services/ToolCoordinator.d.ts.map +1 -1
  64. package/dist/services/ToolRegistry.d.ts +64 -67
  65. package/dist/services/ToolRegistry.d.ts.map +1 -1
  66. package/dist/services/ToolRegistry.js +72 -22
  67. package/dist/services/ToolRegistry.js.map +1 -1
  68. package/dist/services/ToolkitCoordinator.d.ts +106 -8
  69. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  70. package/dist/services/ToolkitCoordinator.js +502 -71
  71. package/dist/services/ToolkitCoordinator.js.map +1 -1
  72. package/dist/services/createDefaultToolRegistry.d.ts +12 -7
  73. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -1
  74. package/dist/services/createDefaultToolRegistry.js +6 -10
  75. package/dist/services/createDefaultToolRegistry.js.map +1 -1
  76. package/dist/services/defaultPersonalNeedsProfile.d.ts +4 -0
  77. package/dist/services/defaultPersonalNeedsProfile.d.ts.map +1 -0
  78. package/dist/services/defaultPersonalNeedsProfile.js +25 -0
  79. package/dist/services/defaultPersonalNeedsProfile.js.map +1 -0
  80. package/dist/services/interfaces.d.ts +61 -1
  81. package/dist/services/interfaces.d.ts.map +1 -1
  82. package/dist/services/interfaces.js.map +1 -1
  83. package/dist/services/pnp-standard-features.d.ts +3 -4
  84. package/dist/services/pnp-standard-features.d.ts.map +1 -1
  85. package/dist/services/pnp-standard-features.js +0 -3
  86. package/dist/services/pnp-standard-features.js.map +1 -1
  87. package/dist/services/section-controller-types.d.ts +32 -0
  88. package/dist/services/section-controller-types.d.ts.map +1 -0
  89. package/dist/services/section-controller-types.js +2 -0
  90. package/dist/services/section-controller-types.js.map +1 -0
  91. package/dist/services/tool-context.d.ts +4 -4
  92. package/dist/services/tool-context.d.ts.map +1 -1
  93. package/dist/services/tool-context.js +106 -17
  94. package/dist/services/tool-context.js.map +1 -1
  95. package/dist/services/tool-instance-id.d.ts +17 -0
  96. package/dist/services/tool-instance-id.d.ts.map +1 -0
  97. package/dist/services/tool-instance-id.js +61 -0
  98. package/dist/services/tool-instance-id.js.map +1 -0
  99. package/dist/services/tool-providers/IToolProvider.d.ts +2 -3
  100. package/dist/services/tool-providers/IToolProvider.d.ts.map +1 -1
  101. package/dist/services/tool-providers/IToolProvider.js +1 -2
  102. package/dist/services/tool-providers/IToolProvider.js.map +1 -1
  103. package/dist/services/tool-providers/MathJsToolProvider.d.ts +25 -0
  104. package/dist/services/tool-providers/MathJsToolProvider.d.ts.map +1 -0
  105. package/dist/services/tool-providers/MathJsToolProvider.js +53 -0
  106. package/dist/services/tool-providers/MathJsToolProvider.js.map +1 -0
  107. package/dist/services/tool-providers/index.d.ts +2 -0
  108. package/dist/services/tool-providers/index.d.ts.map +1 -1
  109. package/dist/services/tool-providers/index.js +1 -0
  110. package/dist/services/tool-providers/index.js.map +1 -1
  111. package/dist/services/tools-config-normalizer.d.ts +26 -0
  112. package/dist/services/tools-config-normalizer.d.ts.map +1 -0
  113. package/dist/services/tools-config-normalizer.js +63 -0
  114. package/dist/services/tools-config-normalizer.js.map +1 -0
  115. package/dist/tools/calculators/ti-provider.d.ts.map +1 -1
  116. package/dist/tools/calculators/ti-provider.js +127 -4
  117. package/dist/tools/calculators/ti-provider.js.map +1 -1
  118. package/dist/tools/client.d.ts +2 -1
  119. package/dist/tools/client.d.ts.map +1 -1
  120. package/dist/tools/client.js +2 -1
  121. package/dist/tools/client.js.map +1 -1
  122. package/dist/tools/default-tool-module-loaders.d.ts +9 -0
  123. package/dist/tools/default-tool-module-loaders.d.ts.map +1 -0
  124. package/dist/tools/default-tool-module-loaders.js +17 -0
  125. package/dist/tools/default-tool-module-loaders.js.map +1 -0
  126. package/dist/tools/index.d.ts +2 -1
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +2 -1
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/library-loader.d.ts +1 -1
  131. package/dist/tools/library-loader.d.ts.map +1 -1
  132. package/dist/tools/library-loader.js +7 -2
  133. package/dist/tools/library-loader.js.map +1 -1
  134. package/dist/tools/registrations/accessibility-tools.d.ts +1 -9
  135. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
  136. package/dist/tools/registrations/accessibility-tools.js +95 -113
  137. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  138. package/dist/tools/registrations/calculator.d.ts +2 -2
  139. package/dist/tools/registrations/calculator.d.ts.map +1 -1
  140. package/dist/tools/registrations/calculator.js +34 -55
  141. package/dist/tools/registrations/calculator.js.map +1 -1
  142. package/dist/tools/registrations/interaction-tools.d.ts.map +1 -1
  143. package/dist/tools/registrations/interaction-tools.js +77 -52
  144. package/dist/tools/registrations/interaction-tools.js.map +1 -1
  145. package/dist/tools/registrations/measurement-tools.d.ts.map +1 -1
  146. package/dist/tools/registrations/measurement-tools.js +63 -38
  147. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  148. package/dist/tools/registrations/subject-specific-tools.d.ts.map +1 -1
  149. package/dist/tools/registrations/subject-specific-tools.js +63 -38
  150. package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
  151. package/dist/tools/registrations/tts.d.ts +1 -1
  152. package/dist/tools/registrations/tts.d.ts.map +1 -1
  153. package/dist/tools/registrations/tts.js +27 -41
  154. package/dist/tools/registrations/tts.js.map +1 -1
  155. package/dist/tools/response-discovery.d.ts +12 -14
  156. package/dist/tools/response-discovery.d.ts.map +1 -1
  157. package/dist/tools/response-discovery.js +23 -80
  158. package/dist/tools/response-discovery.js.map +1 -1
  159. package/dist/tools/tool-tag-map.d.ts +3 -3
  160. package/dist/tools/tool-tag-map.d.ts.map +1 -1
  161. package/dist/tools/tool-tag-map.js +2 -3
  162. package/dist/tools/tool-tag-map.js.map +1 -1
  163. package/dist/tools/types.d.ts +3 -1
  164. package/dist/tools/types.d.ts.map +1 -1
  165. package/package.json +25 -28
  166. package/src/README.md +16 -32
  167. package/src/components/ItemToolBar.svelte +489 -0
  168. package/src/components/PNPProvenanceViewer.svelte +14 -4
  169. package/src/components/PieAssessmentToolkit.svelte +517 -0
  170. package/src/components/ToolButton.svelte +11 -11
  171. package/src/components/ToolButtonGroup.svelte +27 -11
  172. package/src/tools/README.md +6 -5
  173. package/src/tools/calculators/README.md +4 -4
  174. package/dist/player/AssessmentPlayer.d.ts +0 -397
  175. package/dist/player/AssessmentPlayer.d.ts.map +0 -1
  176. package/dist/player/AssessmentPlayer.js +0 -974
  177. package/dist/player/AssessmentPlayer.js.map +0 -1
  178. package/dist/player/index.d.ts +0 -17
  179. package/dist/player/index.d.ts.map +0 -1
  180. package/dist/player/index.js +0 -15
  181. package/dist/player/index.js.map +0 -1
  182. package/dist/player/navigation-types.d.ts +0 -63
  183. package/dist/player/navigation-types.d.ts.map +0 -1
  184. package/dist/player/navigation-types.js +0 -7
  185. package/dist/player/navigation-types.js.map +0 -1
  186. package/dist/player/qti-navigation.d.ts +0 -29
  187. package/dist/player/qti-navigation.d.ts.map +0 -1
  188. package/dist/player/qti-navigation.js +0 -160
  189. package/dist/player/qti-navigation.js.map +0 -1
  190. package/dist/reference-layout/index.d.ts +0 -19
  191. package/dist/reference-layout/index.d.ts.map +0 -1
  192. package/dist/reference-layout/index.js +0 -20
  193. package/dist/reference-layout/index.js.map +0 -1
  194. package/dist/services/AnnotationToolbarConfig.d.ts +0 -134
  195. package/dist/services/AnnotationToolbarConfig.d.ts.map +0 -1
  196. package/dist/services/AnnotationToolbarConfig.js +0 -100
  197. package/dist/services/AnnotationToolbarConfig.js.map +0 -1
  198. package/dist/services/AssessmentAuthoringService.d.ts +0 -60
  199. package/dist/services/AssessmentAuthoringService.d.ts.map +0 -1
  200. package/dist/services/AssessmentAuthoringService.js +0 -183
  201. package/dist/services/AssessmentAuthoringService.js.map +0 -1
  202. package/dist/services/PNPMapper.d.ts +0 -81
  203. package/dist/services/PNPMapper.d.ts.map +0 -1
  204. package/dist/services/PNPMapper.js +0 -108
  205. package/dist/services/PNPMapper.js.map +0 -1
  206. package/src/components/PNPProfileTester.example.svelte +0 -188
  207. package/src/components/PNPProfileTester.svelte +0 -397
  208. package/src/components/QuestionToolBar.svelte +0 -483
  209. package/src/player/AssessmentLayout.svelte +0 -68
  210. package/src/player/README.md +0 -154
  211. package/src/reference-layout/README.md +0 -135
  212. package/src/reference-layout/ReferenceLayout.svelte +0 -201
  213. package/src/reference-layout/components/AssessmentContent.svelte +0 -259
  214. package/src/reference-layout/components/AssessmentFooter.svelte +0 -89
  215. package/src/reference-layout/components/AssessmentHeader.svelte +0 -250
  216. package/src/reference-layout/components/AssessmentNavigation.svelte +0 -134
  217. package/src/reference-layout/components/AssessmentToolsBar.svelte +0 -176
  218. package/src/reference-layout/components/ItemPanel.svelte +0 -200
  219. package/src/reference-layout/components/NotesPanel.svelte +0 -179
  220. package/src/reference-layout/components/PassagePanel.svelte +0 -76
@@ -2,71 +2,17 @@
2
2
  * Accessibility Tools Registrations
3
3
  *
4
4
  * Registers tools for visual accessibility and reading support:
5
- * - Magnifier (zoom lens)
6
5
  * - Line Reader (reading guide)
7
6
  * - Color Scheme (theme/contrast)
8
7
  * - Annotation Toolbar (text highlighting)
9
8
  *
10
9
  * Maps to QTI 3.0 standard access features from:
11
- * - visual category: magnification, highContrastDisplay, colorContrast
10
+ * - visual category: highContrastDisplay, colorContrast
12
11
  * - reading category: readingMask, readingGuide, highlighting
13
12
  */
14
13
  import { hasReadableText } from "../../services/tool-context.js";
14
+ import { createScopedToolId } from "../../services/tool-instance-id.js";
15
15
  import { createToolElement, } from "../tool-tag-map.js";
16
- /**
17
- * Magnifier tool registration
18
- *
19
- * Provides a draggable zoom lens for visual accessibility.
20
- * Global tool that works across entire assessment.
21
- */
22
- export const magnifierToolRegistration = {
23
- toolId: "magnifier",
24
- name: "Magnifier",
25
- description: "Zoom lens for visual accessibility",
26
- icon: "magnifying-glass",
27
- // Magnifier is assessment-wide (global)
28
- supportedLevels: ["assessment", "section"],
29
- // PNP support IDs
30
- // Maps to QTI 3.0 standard features: magnification, screenMagnifier, zoomable
31
- pnpSupportIds: [
32
- "magnification", // QTI 3.0 standard (visual.magnification)
33
- "screenMagnifier", // QTI 3.0 standard (visual.screenMagnifier)
34
- "zoomable", // QTI 3.0 standard (visual.zoomable)
35
- "magnifier", // Common variant
36
- "zoom", // Common variant
37
- "visualZoom", // Common variant
38
- ],
39
- /**
40
- * Pass 2: Magnifier is always relevant when allowed
41
- */
42
- isVisibleInContext(context) {
43
- return true; // Always show if allowed by orchestrator
44
- },
45
- createButton(context, options) {
46
- return {
47
- toolId: this.toolId,
48
- label: this.name,
49
- icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
50
- disabled: options.disabled || false,
51
- ariaLabel: options.ariaLabel || "Magnifier - Zoom in on content",
52
- tooltip: options.tooltip || "Magnifier",
53
- onClick: options.onClick || (() => { }),
54
- className: options.className,
55
- };
56
- },
57
- createToolInstance(context, options) {
58
- const componentOverrides = options.config ?? {};
59
- const magnifier = createToolElement(this.toolId, context, options, componentOverrides);
60
- magnifier.visible = true;
61
- if (options.config?.toolkitCoordinator) {
62
- magnifier.toolkitCoordinator = options.config.toolkitCoordinator;
63
- }
64
- if (options.onClose) {
65
- magnifier.addEventListener("close", options.onClose);
66
- }
67
- return magnifier;
68
- },
69
- };
70
16
  /**
71
17
  * Line Reader tool registration
72
18
  *
@@ -95,29 +41,41 @@ export const lineReaderToolRegistration = {
95
41
  isVisibleInContext(context) {
96
42
  return hasReadableText(context);
97
43
  },
98
- createButton(context, options) {
99
- return {
44
+ renderToolbar(context, toolbarContext) {
45
+ const fullToolId = createScopedToolId(this.toolId, "item", toolbarContext.itemId);
46
+ const button = {
100
47
  toolId: this.toolId,
101
48
  label: this.name,
102
49
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
103
- disabled: options.disabled || false,
104
- ariaLabel: options.ariaLabel || "Line reader - Reading guide",
105
- tooltip: options.tooltip || "Line Reader",
106
- onClick: options.onClick || (() => { }),
107
- className: options.className,
50
+ disabled: false,
51
+ ariaLabel: "Line reader - Reading guide",
52
+ tooltip: "Line Reader",
53
+ onClick: () => toolbarContext.toggleTool(this.toolId),
54
+ active: toolbarContext.isToolVisible(fullToolId),
55
+ };
56
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
57
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
58
+ overlay.setAttribute("tool-id", fullToolId);
59
+ return {
60
+ toolId: this.toolId,
61
+ button,
62
+ overlayElement: overlay,
63
+ sync: () => {
64
+ const active = toolbarContext.isToolVisible(fullToolId);
65
+ button.active = active;
66
+ overlay.visible = active;
67
+ if (toolbarContext.toolkitCoordinator) {
68
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
69
+ }
70
+ },
71
+ subscribeActive: (callback) => {
72
+ if (!toolbarContext.subscribeVisibility)
73
+ return () => { };
74
+ return toolbarContext.subscribeVisibility(() => {
75
+ callback(toolbarContext.isToolVisible(fullToolId));
76
+ });
77
+ },
108
78
  };
109
- },
110
- createToolInstance(context, options) {
111
- const componentOverrides = options.config ?? {};
112
- const lineReader = createToolElement(this.toolId, context, options, componentOverrides);
113
- lineReader.visible = true;
114
- if (options.config?.toolkitCoordinator) {
115
- lineReader.toolkitCoordinator = options.config.toolkitCoordinator;
116
- }
117
- if (options.onClose) {
118
- lineReader.addEventListener("close", options.onClose);
119
- }
120
- return lineReader;
121
79
  },
122
80
  };
123
81
  /**
@@ -149,29 +107,41 @@ export const colorSchemeToolRegistration = {
149
107
  isVisibleInContext(context) {
150
108
  return true; // Always show if allowed by orchestrator
151
109
  },
152
- createButton(context, options) {
153
- return {
110
+ renderToolbar(context, toolbarContext) {
111
+ const fullToolId = createScopedToolId(this.toolId, "item", toolbarContext.itemId);
112
+ const button = {
154
113
  toolId: this.toolId,
155
114
  label: this.name,
156
115
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
157
- disabled: options.disabled || false,
158
- ariaLabel: options.ariaLabel || "Color scheme - Change colors and contrast",
159
- tooltip: options.tooltip || "Color Scheme",
160
- onClick: options.onClick || (() => { }),
161
- className: options.className,
116
+ disabled: false,
117
+ ariaLabel: "Color scheme - Change colors and contrast",
118
+ tooltip: "Color Scheme",
119
+ onClick: () => toolbarContext.toggleTool(this.toolId),
120
+ active: toolbarContext.isToolVisible(fullToolId),
121
+ };
122
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
123
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
124
+ overlay.setAttribute("tool-id", fullToolId);
125
+ return {
126
+ toolId: this.toolId,
127
+ button,
128
+ overlayElement: overlay,
129
+ sync: () => {
130
+ const active = toolbarContext.isToolVisible(fullToolId);
131
+ button.active = active;
132
+ overlay.visible = active;
133
+ if (toolbarContext.toolkitCoordinator) {
134
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
135
+ }
136
+ },
137
+ subscribeActive: (callback) => {
138
+ if (!toolbarContext.subscribeVisibility)
139
+ return () => { };
140
+ return toolbarContext.subscribeVisibility(() => {
141
+ callback(toolbarContext.isToolVisible(fullToolId));
142
+ });
143
+ },
162
144
  };
163
- },
164
- createToolInstance(context, options) {
165
- const componentOverrides = options.config ?? {};
166
- const colorScheme = createToolElement(this.toolId, context, options, componentOverrides);
167
- colorScheme.visible = true;
168
- if (options.config?.toolkitCoordinator) {
169
- colorScheme.toolkitCoordinator = options.config.toolkitCoordinator;
170
- }
171
- if (options.onClose) {
172
- colorScheme.addEventListener("close", options.onClose);
173
- }
174
- return colorScheme;
175
145
  },
176
146
  };
177
147
  /**
@@ -202,29 +172,41 @@ export const annotationToolbarRegistration = {
202
172
  isVisibleInContext(context) {
203
173
  return hasReadableText(context);
204
174
  },
205
- createButton(context, options) {
206
- return {
175
+ renderToolbar(context, toolbarContext) {
176
+ const fullToolId = createScopedToolId(this.toolId, "item", toolbarContext.itemId);
177
+ const button = {
207
178
  toolId: this.toolId,
208
179
  label: this.name,
209
180
  icon: typeof this.icon === "function" ? this.icon(context) : this.icon,
210
- disabled: options.disabled || false,
211
- ariaLabel: options.ariaLabel || "Annotation toolbar - Highlight text",
212
- tooltip: options.tooltip || "Highlight",
213
- onClick: options.onClick || (() => { }),
214
- className: options.className,
181
+ disabled: false,
182
+ ariaLabel: "Annotation toolbar - Highlight text",
183
+ tooltip: "Highlight",
184
+ onClick: () => toolbarContext.toggleTool(this.toolId),
185
+ active: toolbarContext.isToolVisible(fullToolId),
186
+ };
187
+ const componentOverrides = toolbarContext.componentOverrides ?? {};
188
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
189
+ overlay.setAttribute("tool-id", fullToolId);
190
+ return {
191
+ toolId: this.toolId,
192
+ button,
193
+ overlayElement: overlay,
194
+ sync: () => {
195
+ const active = toolbarContext.isToolVisible(fullToolId);
196
+ button.active = active;
197
+ overlay.visible = active;
198
+ if (toolbarContext.toolkitCoordinator) {
199
+ overlay.toolkitCoordinator = toolbarContext.toolkitCoordinator;
200
+ }
201
+ },
202
+ subscribeActive: (callback) => {
203
+ if (!toolbarContext.subscribeVisibility)
204
+ return () => { };
205
+ return toolbarContext.subscribeVisibility(() => {
206
+ callback(toolbarContext.isToolVisible(fullToolId));
207
+ });
208
+ },
215
209
  };
216
- },
217
- createToolInstance(context, options) {
218
- const componentOverrides = options.config ?? {};
219
- const toolbar = createToolElement(this.toolId, context, options, componentOverrides);
220
- toolbar.visible = true;
221
- if (options.config?.toolkitCoordinator) {
222
- toolbar.toolkitCoordinator = options.config.toolkitCoordinator;
223
- }
224
- if (options.onClose) {
225
- toolbar.addEventListener("close", options.onClose);
226
- }
227
- return toolbar;
228
210
  },
229
211
  };
230
212
  //# sourceMappingURL=accessibility-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/accessibility-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessibility-tools.js","sourceRoot":"","sources":["../../../src/tools/registrations/accessibility-tools.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,8 @@ import type { ToolRegistration } from "../../services/ToolRegistry.js";
14
14
  *
15
15
  * Supports:
16
16
  * - Basic, scientific, and graphing calculators via Desmos
17
- * - Context-aware visibility (shows when math content is detected)
18
- * - All levels except assessment (section, item, passage, rubric, element)
17
+ * - Context-aware visibility (shows only when math content is detected)
18
+ * - Item level only
19
19
  */
20
20
  export declare const calculatorToolRegistration: ToolRegistration;
21
21
  //# sourceMappingURL=calculator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAQxC;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBA4GxC,CAAC"}
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAGhB,MAAM,gCAAgC,CAAC;AAMxC;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBA6ExC,CAAC"}
@@ -9,22 +9,23 @@
9
9
  * - graphingCalculator (assessment tool)
10
10
  */
11
11
  import { hasMathContent } from "../../services/tool-context.js";
12
- import { createToolElement, } from "../tool-tag-map.js";
12
+ import { createScopedToolId } from "../../services/tool-instance-id.js";
13
+ import { createToolElement } from "../tool-tag-map.js";
13
14
  /**
14
15
  * Calculator tool registration
15
16
  *
16
17
  * Supports:
17
18
  * - Basic, scientific, and graphing calculators via Desmos
18
- * - Context-aware visibility (shows when math content is detected)
19
- * - All levels except assessment (section, item, passage, rubric, element)
19
+ * - Context-aware visibility (shows only when math content is detected)
20
+ * - Item level only
20
21
  */
21
22
  export const calculatorToolRegistration = {
22
23
  toolId: "calculator",
23
24
  name: "Calculator",
24
25
  description: "Multi-type calculator (basic, scientific, graphing)",
25
26
  icon: "calculator",
26
- // Calculator can appear at all levels except assessment
27
- supportedLevels: ["section", "item", "passage", "rubric", "element"],
27
+ // Calculator is item-level in this player architecture.
28
+ supportedLevels: ["item"],
28
29
  // PNP support IDs that enable this tool
29
30
  // Maps to QTI 3.0 standard features: calculator, graphingCalculator
30
31
  pnpSupportIds: [
@@ -36,63 +37,41 @@ export const calculatorToolRegistration = {
36
37
  /**
37
38
  * Pass 2: Determine if calculator is relevant in this context
38
39
  *
39
- * Calculator is relevant when:
40
- * - Context contains mathematical content (MathML, LaTeX, arithmetic)
41
- * - Section/item level (always show - student might need for any problem)
40
+ * Calculator is relevant when context contains mathematical content
41
+ * (MathML, LaTeX, arithmetic markers).
42
42
  */
43
43
  isVisibleInContext(context) {
44
- // At section/item level, always show (student might need it)
45
- if (context.level === "section" || context.level === "item") {
46
- return true;
47
- }
48
- // At passage/rubric/element level, show if math content detected
44
+ // Show only when math is present in item content.
49
45
  return hasMathContent(context);
50
46
  },
51
- /**
52
- * Create calculator button for toolbar
53
- */
54
- createButton(context, options) {
55
- const icon = typeof this.icon === "function" ? this.icon(context) : this.icon;
47
+ renderToolbar(context, toolbarContext) {
48
+ const fullToolId = createScopedToolId(this.toolId, "item", toolbarContext.itemId);
49
+ const componentOverrides = toolbarContext.componentOverrides;
50
+ const overlay = createToolElement(this.toolId, context, toolbarContext, componentOverrides);
51
+ overlay.setAttribute("tool-id", fullToolId);
52
+ const inline = document.createElement("pie-tool-calculator-inline");
53
+ inline.setAttribute("tool-id", createScopedToolId(this.toolId, "item", toolbarContext.itemId, "inline"));
54
+ inline.setAttribute("target-tool-id", fullToolId);
55
+ inline.setAttribute("calculator-type", "scientific");
56
+ inline.setAttribute("available-types", "basic,scientific,graphing");
57
+ inline.setAttribute("size", toolbarContext.ui?.size || "md");
56
58
  return {
57
59
  toolId: this.toolId,
58
- label: this.name,
59
- icon: icon,
60
- disabled: options.disabled || false,
61
- ariaLabel: options.ariaLabel ||
62
- "Open calculator - Press to activate calculator tool",
63
- tooltip: options.tooltip || "Calculator",
64
- onClick: options.onClick || (() => { }),
65
- className: options.className,
60
+ inlineElement: inline,
61
+ overlayElement: overlay,
62
+ button: null,
63
+ sync: () => {
64
+ const active = toolbarContext.isToolVisible(fullToolId);
65
+ overlay.visible = active;
66
+ },
67
+ subscribeActive: (callback) => {
68
+ if (!toolbarContext.subscribeVisibility)
69
+ return () => { };
70
+ return toolbarContext.subscribeVisibility(() => {
71
+ callback(toolbarContext.isToolVisible(fullToolId));
72
+ });
73
+ },
66
74
  };
67
75
  },
68
- /**
69
- * Create calculator tool instance
70
- *
71
- * Creates a <pie-tool-calculator> web component and initializes it.
72
- */
73
- createToolInstance(context, options) {
74
- const componentOverrides = options.config ?? {};
75
- const calculator = createToolElement(this.toolId, context, options, componentOverrides);
76
- // Set default calculator type (can be overridden via config)
77
- const calculatorType = options.config?.calculatorType || "scientific";
78
- const availableTypes = options.config?.availableTypes || [
79
- "basic",
80
- "scientific",
81
- "graphing",
82
- ];
83
- // Configure calculator
84
- calculator.visible = true;
85
- calculator.calculatorType = calculatorType;
86
- calculator.availableTypes = availableTypes;
87
- // Pass toolkit coordinator if available from context
88
- if (options.config?.toolkitCoordinator) {
89
- calculator.toolkitCoordinator = options.config.toolkitCoordinator;
90
- }
91
- // Handle close callback
92
- if (options.onClose) {
93
- calculator.addEventListener("close", options.onClose);
94
- }
95
- return calculator;
96
- },
97
76
  };
98
77
  //# sourceMappingURL=calculator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/tools/registrations/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EACN,iBAAiB,GAEjB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqB;IAC3D,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,YAAY;IAElB,wDAAwD;IACxD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;IAEpE,wCAAwC;IACxC,oEAAoE;IACpE,aAAa,EAAE;QACd,YAAY,EAAE,0CAA0C;QACxD,oBAAoB,EAAE,mDAAmD;QACzE,iBAAiB,EAAE,iBAAiB;QACpC,sBAAsB,EAAE,iBAAiB;KACzC;IAED;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAoB;QACtC,6DAA6D;QAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACb,CAAC;QAED,iEAAiE;QACjE,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,YAAY,CACX,OAAoB,EACpB,OAA0B;QAE1B,MAAM,IAAI,GACT,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAElE,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,SAAS,EACR,OAAO,CAAC,SAAS;gBACjB,qDAAqD;YACtD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,YAAY;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC5B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CACjB,OAAoB,EACpB,OAA4B;QAE5B,MAAM,kBAAkB,GACtB,OAAO,CAAC,MAA6C,IAAI,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAG,iBAAiB,CACnC,IAAI,CAAC,MAAM,EACX,OAAO,EACP,OAAO,EACP,kBAAkB,CAMlB,CAAC;QAEF,6DAA6D;QAC7D,MAAM,cAAc,GAClB,OAAO,CAAC,MAAM,EAAE,cAAyB,IAAI,YAAY,CAAC;QAC5D,MAAM,cAAc,GAAI,OAAO,CAAC,MAAM,EAAE,cAA2B,IAAI;YACtE,OAAO;YACP,YAAY;YACZ,UAAU;SACV,CAAC;QAEF,uBAAuB;QACvB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3C,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;QAE3C,qDAAqD;QACrD,IAAI,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;YACxC,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACnE,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,UAAU,CAAC;IACnB,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../src/tools/registrations/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqB;IAC3D,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,YAAY;IAElB,wDAAwD;IACxD,eAAe,EAAE,CAAC,MAAM,CAAC;IAEzB,wCAAwC;IACxC,oEAAoE;IACpE,aAAa,EAAE;QACd,YAAY,EAAE,0CAA0C;QACxD,oBAAoB,EAAE,mDAAmD;QACzE,iBAAiB,EAAE,iBAAiB;QACpC,sBAAsB,EAAE,iBAAiB;KACzC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,OAAoB;QACtC,kDAAkD;QAClD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,aAAa,CACZ,OAAoB,EACpB,cAA8B;QAE9B,MAAM,UAAU,GAAG,kBAAkB,CACpC,IAAI,CAAC,MAAM,EACX,MAAM,EACN,cAAc,CAAC,MAAM,CACrB,CAAC;QACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC;QAC7D,MAAM,OAAO,GAAG,iBAAiB,CAChC,IAAI,CAAC,MAAM,EACX,OAAO,EACP,cAAc,EACd,kBAAkB,CAIlB,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACpE,MAAM,CAAC,YAAY,CAClB,SAAS,EACT,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CACxE,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;QACpE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;QAE7D,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,OAAO;YACvB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,GAAG,EAAE;gBACV,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACxD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;YAC1B,CAAC;YACD,eAAe,EAAE,CAAC,QAAmC,EAAE,EAAE;gBACxD,IAAI,CAAC,cAAc,CAAC,mBAAmB;oBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;gBACzD,OAAO,cAAc,CAAC,mBAAmB,CAAC,GAAG,EAAE;oBAC9C,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/interaction-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAWxC;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,gBAiF9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBAkEzC,CAAC"}
1
+ {"version":3,"file":"interaction-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registrations/interaction-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,gCAAgC,CAAC;AAYxC;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,gBA4F9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBA0EzC,CAAC"}
@@ -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, "item", toolbarContext.itemId);
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
+ overlayElement: overlay,
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, "item", toolbarContext.itemId);
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
+ overlayElement: overlay,
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