@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
@@ -3,17 +3,17 @@
3
3
  * ToolButton
4
4
  *
5
5
  * Generic button component for rendering tool buttons in toolbars.
6
- * Uses ToolButtonDefinition from ToolRegistry for consistent tool button rendering.
6
+ * Uses ToolToolbarButtonDefinition from ToolRegistry for consistent rendering.
7
7
  */
8
8
 
9
- import type { ToolButtonDefinition } from "../services/ToolRegistry";
9
+ import type { ToolToolbarButtonDefinition } from "../services/ToolRegistry.js";
10
10
 
11
11
  // Props
12
12
  let {
13
13
  button,
14
14
  class: className = "",
15
15
  }: {
16
- button: ToolButtonDefinition;
16
+ button: ToolToolbarButtonDefinition;
17
17
  class?: string;
18
18
  } = $props();
19
19
 
@@ -69,10 +69,10 @@
69
69
  align-items: center;
70
70
  gap: 0.5rem;
71
71
  padding: 0.5rem 1rem;
72
- background: var(--tool-button-bg, #ffffff);
73
- border: 1px solid var(--tool-button-border, #d1d5db);
72
+ background: var(--pie-button-bg, #ffffff);
73
+ border: 1px solid var(--pie-button-border, #d1d5db);
74
74
  border-radius: 0.375rem;
75
- color: var(--tool-button-color, #374151);
75
+ color: var(--pie-button-color, #374151);
76
76
  font-size: 0.875rem;
77
77
  font-weight: 500;
78
78
  cursor: pointer;
@@ -81,18 +81,18 @@
81
81
  }
82
82
 
83
83
  .tool-button:hover:not(:disabled) {
84
- background: var(--tool-button-hover-bg, #f9fafb);
85
- border-color: var(--tool-button-hover-border, #9ca3af);
86
- color: var(--tool-button-hover-color, #111827);
84
+ background: var(--pie-button-hover-bg, #f9fafb);
85
+ border-color: var(--pie-button-hover-border, #9ca3af);
86
+ color: var(--pie-button-hover-color, #111827);
87
87
  }
88
88
 
89
89
  .tool-button:active:not(:disabled) {
90
- background: var(--tool-button-active-bg, #f3f4f6);
90
+ background: var(--pie-button-active-bg, #f3f4f6);
91
91
  transform: translateY(1px);
92
92
  }
93
93
 
94
94
  .tool-button:focus-visible {
95
- outline: 2px solid var(--tool-button-focus-outline, #3b82f6);
95
+ outline: 2px solid var(--pie-button-focus-outline, #3b82f6);
96
96
  outline-offset: 2px;
97
97
  }
98
98
 
@@ -8,8 +8,12 @@
8
8
  * - Pass 2: Filters by tool relevance using ToolRegistry
9
9
  */
10
10
 
11
- import type { ToolRegistry } from "../services/ToolRegistry";
12
- import type { ToolContext } from "../services/tool-context";
11
+ import type {
12
+ ToolRegistry,
13
+ ToolToolbarButtonDefinition,
14
+ ToolbarContext,
15
+ } from "../services/ToolRegistry.js";
16
+ import type { ToolContext } from "../services/tool-context.js";
13
17
  import ToolButton from "./ToolButton.svelte";
14
18
 
15
19
  // Props
@@ -17,6 +21,7 @@
17
21
  toolRegistry,
18
22
  allowedToolIds,
19
23
  context,
24
+ toolbarContext,
20
25
  onToolClick,
21
26
  orientation = "horizontal",
22
27
  compact = false,
@@ -28,6 +33,8 @@
28
33
  allowedToolIds: string[];
29
34
  /** Context for visibility evaluation (Pass 2) */
30
35
  context: ToolContext;
36
+ /** Context used for toolbar rendering contract */
37
+ toolbarContext: ToolbarContext;
31
38
  /** Callback when tool button is clicked */
32
39
  onToolClick?: (toolId: string) => void;
33
40
  /** Layout orientation */
@@ -44,17 +51,26 @@
44
51
  toolRegistry.filterVisibleInContext(allowedToolIds, context),
45
52
  );
46
53
 
47
- // Create button definitions for visible tools
48
- const buttons = $derived(
49
- visibleTools.map((tool) =>
50
- tool.createButton(context, {
54
+ // Create button definitions for visible tools using the toolbar contract
55
+ const buttons = $derived.by((): ToolToolbarButtonDefinition[] => {
56
+ const rendered = visibleTools
57
+ .map((tool) => toolRegistry.renderForToolbar(tool.toolId, context, toolbarContext))
58
+ .filter((tool): tool is NonNullable<typeof tool> => Boolean(tool));
59
+
60
+ return rendered
61
+ .map((tool) => tool.button)
62
+ .filter((button): button is ToolToolbarButtonDefinition => Boolean(button))
63
+ .map((button) => ({
64
+ ...button,
51
65
  onClick: () => {
52
- onToolClick?.(tool.toolId);
66
+ button.onClick();
67
+ onToolClick?.(button.toolId);
53
68
  },
54
- className: compact ? "tool-button--compact" : "",
55
- }),
56
- ),
57
- );
69
+ className: compact
70
+ ? `${button.className ? `${button.className} ` : ""}tool-button--compact`
71
+ : button.className,
72
+ }));
73
+ });
58
74
 
59
75
  // Derive container classes
60
76
  const containerClasses = $derived(
@@ -139,10 +139,10 @@ src/lib/tags/tool-{name}/
139
139
  {#if visible}
140
140
  <div
141
141
  bind:this={containerEl}
142
- class="my-tool"
142
+ class="pie-tool-my-tool"
143
143
  on:mousedown={() => toolCoordinator.bringToFront(toolId)}
144
144
  >
145
- <div class="tool-header">
145
+ <div class="pie-tool-my-tool__header">
146
146
  <span>My Tool</span>
147
147
  <button on:click={handleClose}>×</button>
148
148
  </div>
@@ -152,7 +152,7 @@ src/lib/tags/tool-{name}/
152
152
  {/if}
153
153
 
154
154
  <style>
155
- .my-tool {
155
+ .pie-tool-my-tool {
156
156
  position: fixed;
157
157
  /* Tool-specific styles */
158
158
  }
@@ -257,6 +257,7 @@ Tools that require external API integration:
257
257
  6. **Make tools draggable** for better UX
258
258
  7. **Add close buttons** to all tools
259
259
  8. **Use consistent styling** (header, body, controls)
260
+ 9. **Use namespaced classes** (`pie-tool-{name}` and `pie-tool-{name}__*`)
260
261
 
261
262
  ## Architectural Enhancement Services
262
263
 
@@ -317,7 +318,7 @@ const roster: RosterToolConfiguration = {
317
318
  rosterId: 'roster-456',
318
319
  toolAllowances: {
319
320
  calculator: '1', // allowed
320
- dictionary: '0', // blocked
321
+ lineReader: '0', // blocked
321
322
  },
322
323
  };
323
324
 
@@ -329,7 +330,7 @@ const item: ItemToolConfig = {
329
330
 
330
331
  // Resolve final tools
331
332
  const resolved = accommodationResolver.resolveToolsForItem(student, roster, item);
332
- // Returns: [calculator, highlighter, protractor] (graphing-calculator blocked, dictionary blocked)
333
+ // Returns: [calculator, highlighter, protractor] (graphing-calculator blocked, lineReader blocked)
333
334
 
334
335
  // Check specific tool
335
336
  const result = accommodationResolver.isToolAllowed('calculator', student, roster, item);
@@ -277,10 +277,10 @@ calculator.clearHistory();
277
277
  {#if visible}
278
278
  <div
279
279
  bind:this={containerEl}
280
- class="calculator-tool"
280
+ class="pie-tool-calculator"
281
281
  on:mousedown={() => toolCoordinator.bringToFront(toolId)}
282
282
  >
283
- <div class="tool-header">
283
+ <div class="pie-tool-calculator__header">
284
284
  <span>Calculator</span>
285
285
  <button on:click={handleClose}>×</button>
286
286
  </div>
@@ -290,14 +290,14 @@ calculator.clearHistory();
290
290
  {/if}
291
291
 
292
292
  <style>
293
- .calculator-tool {
293
+ .pie-tool-calculator {
294
294
  position: fixed;
295
295
  top: 100px;
296
296
  right: 50px;
297
297
  z-index: 1000;
298
298
  }
299
299
 
300
- .tool-header {
300
+ .pie-tool-calculator__header {
301
301
  padding: 10px;
302
302
  background: #34495e;
303
303
  color: white;
@@ -1,397 +0,0 @@
1
- /**
2
- * AssessmentPlayer
3
- *
4
- * Reference implementation showing how to wire PIE Assessment Toolkit services
5
- * together for a complete assessment player.
6
- *
7
- * This implementation provides:
8
- * - Navigation through assessment items (linear or nonlinear)
9
- * - QTI navigation model (testParts/sections/questionRefs)
10
- * - Section awareness and rubric block support
11
- * - Event-driven architecture using TypedEventBus
12
- * - Session state management
13
- * - TTS integration via TTSService
14
- * - Theme support via ThemeProvider
15
- * - Tool coordination (optional)
16
- *
17
- * Products can use this as-is, extend it, or use it as a pattern for their own implementation.
18
- */
19
- import type { AssessmentAuthoringCallbacks, AssessmentEntity, ItemConfig, ItemEntity, RubricBlock } from "@pie-players/pie-players-shared/types";
20
- import { type StorageLike, type TestSession } from "../attempt/TestSession.js";
21
- import { type AssessmentToolkitEvents, HighlightCoordinator, I18nService, type ThemeConfig, ThemeProvider, ToolCoordinator, TTSService, TypedEventBus } from "../index.js";
22
- import type { LoadItem } from "../item-loader.js";
23
- import { AssessmentAuthoringService } from "../services/AssessmentAuthoringService.js";
24
- import { type ResolvedToolConfig } from "../services/PNPToolResolver.js";
25
- import type { DefaultToolRegistryOptions } from "../services/createDefaultToolRegistry.js";
26
- import { DesmosCalculatorProvider, TICalculatorProvider } from "../tools/client.js";
27
- export interface ReferencePlayerConfig {
28
- assessment: AssessmentEntity;
29
- organizationId?: string | null;
30
- bundleHost?: string;
31
- /**
32
- * Item loader. Must be client-resolvable (can be backed by an API or local itemBank).
33
- */
34
- loadItem: LoadItem;
35
- /**
36
- * Player mode (defaults to 'gather' for student assessment mode)
37
- */
38
- mode?: "gather" | "view" | "evaluate" | "author";
39
- /**
40
- * Optional context to generate a deterministic TestSession identifier.
41
- * If omitted, a stable anonymous device id is used.
42
- */
43
- userId?: string | null;
44
- assignmentId?: string | null;
45
- /**
46
- * Optional storage injection for tests / custom persistence.
47
- * Defaults to browser localStorage when available.
48
- */
49
- attemptStorage?: StorageLike;
50
- navigationMode?: "linear" | "nonlinear";
51
- showSections?: boolean;
52
- allowSectionNavigation?: boolean;
53
- onSessionChanged?: (session: any) => void | Promise<void>;
54
- onItemChanged?: (itemId: string, index: number) => void | Promise<void>;
55
- onNavigationRequested?: (direction: "next" | "previous" | "index", targetIndex?: number) => void | Promise<void>;
56
- authoringCallbacks?: AssessmentAuthoringCallbacks;
57
- services?: {
58
- eventBus?: TypedEventBus<AssessmentToolkitEvents>;
59
- ttsService?: TTSService;
60
- toolCoordinator?: ToolCoordinator;
61
- themeProvider?: ThemeProvider;
62
- highlightCoordinator?: HighlightCoordinator;
63
- i18nService?: I18nService;
64
- desmosProvider?: DesmosCalculatorProvider;
65
- tiProvider?: TICalculatorProvider;
66
- };
67
- /**
68
- * Optional overrides for default tool-component mapping/factories.
69
- */
70
- toolRegistryOptions?: DefaultToolRegistryOptions;
71
- }
72
- export interface NavigationState {
73
- currentIndex: number;
74
- totalItems: number;
75
- canNext: boolean;
76
- canPrevious: boolean;
77
- isLoading: boolean;
78
- currentSection?: {
79
- id: string;
80
- title?: string;
81
- index: number;
82
- };
83
- totalSections?: number;
84
- }
85
- export declare class AssessmentPlayer {
86
- private eventBus;
87
- private ttsService;
88
- private themeProvider;
89
- private toolCoordinator;
90
- private highlightCoordinator;
91
- private i18nService;
92
- private desmosProvider;
93
- private tiProvider;
94
- private authoringService;
95
- private config;
96
- private pnpResolver;
97
- private currentTools;
98
- private contextStore;
99
- private assessmentFormat;
100
- private questionRefs;
101
- private navigationStructure;
102
- private navigationMode;
103
- private currentItemIndex;
104
- private currentItem;
105
- private isLoadingItem;
106
- private sessionState;
107
- private attemptStorage;
108
- private testSession;
109
- private ttsInitialized;
110
- private ttsSpeaking;
111
- private ttsPaused;
112
- private ttsRootElement;
113
- private navigationListeners;
114
- private itemListeners;
115
- private loadingListeners;
116
- private sessionListeners;
117
- private ttsStateListeners;
118
- constructor(config: ReferencePlayerConfig);
119
- private initializeOrLoadTestSession;
120
- /**
121
- * Set up internal event listeners
122
- */
123
- private setupEventListeners;
124
- /**
125
- * Initialize TTS service
126
- */
127
- private initializeTTS;
128
- /**
129
- * Get event bus for external listeners
130
- */
131
- getEventBus(): TypedEventBus<AssessmentToolkitEvents>;
132
- /**
133
- * Get current navigation state
134
- */
135
- getNavigationState(): NavigationState;
136
- /**
137
- * Flatten navigation structure to get all sections
138
- */
139
- private flattenSections;
140
- /**
141
- * Check if a section contains a specific question
142
- */
143
- private sectionContainsQuestion;
144
- /**
145
- * Get current item
146
- */
147
- getCurrentItem(): ItemEntity | null;
148
- /**
149
- * Get current item config
150
- */
151
- getCurrentItemConfig(): ItemConfig | null;
152
- /**
153
- * Get session state
154
- */
155
- getSessionState(): {
156
- id: string;
157
- data: any[];
158
- };
159
- /**
160
- * Get the client-side QTI-like TestSession (attempt) state.
161
- */
162
- getTestSession(): TestSession | null;
163
- /**
164
- * Get player environment
165
- */
166
- getEnv(): {
167
- mode: "view" | "gather" | "evaluate" | "author";
168
- };
169
- /**
170
- * Get ToolCoordinator for tool management
171
- */
172
- getToolCoordinator(): ToolCoordinator;
173
- /**
174
- * Get HighlightCoordinator for annotation/TTS highlighting
175
- */
176
- getHighlightCoordinator(): HighlightCoordinator | null;
177
- /**
178
- * Get TTSService for text-to-speech functionality
179
- */
180
- getTTSService(): TTSService;
181
- /**
182
- * Get ThemeProvider for accessibility theming
183
- */
184
- getThemeProvider(): ThemeProvider | null;
185
- /**
186
- * Get I18nService for internationalization
187
- */
188
- getI18nService(): I18nService;
189
- /**
190
- * Get Desmos calculator provider
191
- */
192
- getDesmosProvider(): DesmosCalculatorProvider;
193
- /**
194
- * Get TI calculator provider
195
- */
196
- getTIProvider(): TICalculatorProvider;
197
- /**
198
- * Navigate to specific item index
199
- */
200
- navigate(index: number): Promise<void>;
201
- /**
202
- * Navigate to next item
203
- */
204
- navigateNext(): Promise<void>;
205
- /**
206
- * Navigate to previous item
207
- */
208
- navigatePrevious(): Promise<void>;
209
- /**
210
- * Start assessment (navigate to first item)
211
- */
212
- start(): Promise<void>;
213
- /**
214
- * TTS: Read current question
215
- */
216
- readQuestion(rootElement: HTMLElement): Promise<void>;
217
- /**
218
- * TTS: Toggle play/pause
219
- */
220
- toggleTTS(rootElement?: HTMLElement): void;
221
- /**
222
- * TTS: Stop reading
223
- */
224
- stopTTS(): void;
225
- /**
226
- * TTS: Get state
227
- */
228
- getTTSState(): {
229
- initialized: boolean;
230
- speaking: boolean;
231
- paused: boolean;
232
- };
233
- /**
234
- * Apply theme
235
- */
236
- applyTheme(theme: ThemeConfig): void;
237
- /**
238
- * Handle PIE player session-changed event
239
- * Call this from your component when you receive session-changed from pie-iife-player
240
- */
241
- handlePieSessionChanged(detail: any): void;
242
- private persistAttemptNavigation;
243
- private findSectionIdentifierForQuestion;
244
- /**
245
- * Subscribe to navigation state changes
246
- */
247
- onNavigationChange(listener: (state: NavigationState) => void): () => void;
248
- /**
249
- * Subscribe to item changes
250
- */
251
- onItemChange(listener: (item: ItemEntity | null) => void): () => void;
252
- /**
253
- * Subscribe to loading state changes
254
- */
255
- onLoadingChange(listener: (isLoading: boolean) => void): () => void;
256
- /**
257
- * Subscribe to session changes
258
- */
259
- onSessionChange(listener: (session: any) => void): () => void;
260
- /**
261
- * Subscribe to TTS state changes
262
- */
263
- onTTSStateChange(listener: (speaking: boolean, paused: boolean) => void): () => void;
264
- /**
265
- * Notify listeners
266
- */
267
- private notifyNavigationListeners;
268
- private notifyItemListeners;
269
- private notifyLoadingListeners;
270
- private notifySessionListeners;
271
- private notifyTTSStateListeners;
272
- /**
273
- * Extract text from element (simplified)
274
- * Production would use extractTextFromElement from tts/utils
275
- */
276
- private extractText;
277
- /**
278
- * Get current section's rubric blocks (passages, instructions)
279
- */
280
- getCurrentSectionRubricBlocks(): RubricBlock[];
281
- /**
282
- * Extract rubric blocks for a specific section identifier
283
- */
284
- private extractRubricBlocksForSection;
285
- /**
286
- * Recursively search for rubric blocks in sections
287
- */
288
- private findRubricBlocksInSections;
289
- /**
290
- * Navigate to a specific section (goes to first item in section)
291
- */
292
- navigateToSection(sectionIndex: number): Promise<void>;
293
- /**
294
- * Find the index of the first question in a section
295
- */
296
- private findFirstQuestionInSection;
297
- /**
298
- * Get navigation mode (linear or nonlinear)
299
- */
300
- getNavigationMode(): "linear" | "nonlinear";
301
- /**
302
- * Get all sections for display (e.g., in a section menu)
303
- */
304
- getAllSections(): Array<{
305
- id: string;
306
- title?: string;
307
- index: number;
308
- }>;
309
- /**
310
- * Get the authoring service (only available in author mode)
311
- */
312
- getAuthoringService(): AssessmentAuthoringService | null;
313
- /**
314
- * Enable or disable authoring mode
315
- */
316
- setAuthoringMode(enabled: boolean): void;
317
- /**
318
- * Apply an assessment context profile
319
- */
320
- /**
321
- * Initialize tools from assessment PNP
322
- */
323
- private initializeTools;
324
- /**
325
- * Apply theme from assessment settings
326
- */
327
- private applyAssessmentTheme;
328
- /**
329
- * Auto-activate tools marked in PNP
330
- */
331
- private autoActivateTools;
332
- /**
333
- * Configure calculator with settings
334
- */
335
- private configureCalculator;
336
- /**
337
- * Convert tool ID to human-readable name
338
- */
339
- private humanizeName;
340
- /**
341
- * Get available tools (resolved from PNP)
342
- */
343
- getAvailableTools(): ResolvedToolConfig[];
344
- /**
345
- * Check if a specific tool is enabled
346
- */
347
- isToolEnabled(toolId: string): boolean;
348
- /**
349
- * Check if a specific tool is required
350
- */
351
- isToolRequired(toolId: string): boolean;
352
- /**
353
- * Get configuration for a specific tool
354
- */
355
- getToolConfig(toolId: string): any | undefined;
356
- /**
357
- * Get layout preferences from settings
358
- */
359
- getLayoutPreferences(): any;
360
- /**
361
- * Get context variable value
362
- *
363
- * @param identifier Variable identifier
364
- * @returns Variable value or undefined
365
- */
366
- getContextVariable(identifier: string): any;
367
- /**
368
- * Set context variable value
369
- *
370
- * @param identifier Variable identifier
371
- * @param value New value
372
- */
373
- setContextVariable(identifier: string, value: any): void;
374
- /**
375
- * Get all context variables as object
376
- *
377
- * @returns Object containing all context variables
378
- */
379
- getContextVariables(): Record<string, any>;
380
- /**
381
- * Reset context variables to default values
382
- */
383
- resetContextVariables(): void;
384
- /**
385
- * Restore context variables from session storage
386
- */
387
- private restoreContextVariables;
388
- /**
389
- * Persist context variables to session storage
390
- */
391
- private persistContextVariables;
392
- /**
393
- * Cleanup
394
- */
395
- destroy(): void;
396
- }
397
- //# sourceMappingURL=AssessmentPlayer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssessmentPlayer.d.ts","sourceRoot":"","sources":["../../src/player/AssessmentPlayer.ts"],"names":[],"mappings":"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"}