@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
@@ -0,0 +1,26 @@
1
+ export type ToolPlacementLevel = "section" | "item" | "passage";
2
+ export interface ToolPolicyConfig {
3
+ allowed?: string[];
4
+ blocked?: string[];
5
+ }
6
+ export interface ToolPlacementConfig {
7
+ section?: string[];
8
+ item?: string[];
9
+ passage?: string[];
10
+ }
11
+ export interface ToolProvidersConfig {
12
+ tts?: Record<string, unknown>;
13
+ calculator?: Record<string, unknown>;
14
+ [key: string]: Record<string, unknown> | undefined;
15
+ }
16
+ export interface CanonicalToolsConfig {
17
+ policy: ToolPolicyConfig;
18
+ placement: Required<ToolPlacementConfig>;
19
+ providers: ToolProvidersConfig;
20
+ }
21
+ export declare function normalizeToolAlias(toolId: string): string;
22
+ export declare function normalizeToolList(toolIds: string[] | undefined | null): string[];
23
+ export declare function parseToolList(input: string | undefined | null): string[];
24
+ export declare function normalizeToolsConfig(input?: Partial<CanonicalToolsConfig> | null): CanonicalToolsConfig;
25
+ export declare function resolveToolsForLevel(config: CanonicalToolsConfig, level: ToolPlacementLevel): string[];
26
+ //# sourceMappingURL=tools-config-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-config-normalizer.d.ts","sourceRoot":"","sources":["../../src/services/tools-config-normalizer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACzC,SAAS,EAAE,mBAAmB,CAAC;CAC/B;AAQD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,CAShF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,CAQxE;AAED,wBAAgB,oBAAoB,CACnC,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,GAC1C,oBAAoB,CAqBtB;AAED,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,kBAAkB,GACvB,MAAM,EAAE,CAOV"}
@@ -0,0 +1,62 @@
1
+ import { DEFAULT_TOOL_ALIAS_MAP, DEFAULT_TOOL_PLACEMENT } from "./tool-config-defaults.js";
2
+ const DEFAULT_PLACEMENT = {
3
+ section: [...DEFAULT_TOOL_PLACEMENT.section],
4
+ item: [...DEFAULT_TOOL_PLACEMENT.item],
5
+ passage: [...DEFAULT_TOOL_PLACEMENT.passage],
6
+ };
7
+ export function normalizeToolAlias(toolId) {
8
+ const trimmed = toolId.trim();
9
+ if (!trimmed)
10
+ return "";
11
+ return DEFAULT_TOOL_ALIAS_MAP[trimmed] || trimmed;
12
+ }
13
+ export function normalizeToolList(toolIds) {
14
+ if (!toolIds || toolIds.length === 0)
15
+ return [];
16
+ const deduped = new Set();
17
+ for (const rawToolId of toolIds) {
18
+ const normalized = normalizeToolAlias(rawToolId);
19
+ if (!normalized)
20
+ continue;
21
+ deduped.add(normalized);
22
+ }
23
+ return Array.from(deduped);
24
+ }
25
+ export function parseToolList(input) {
26
+ if (!input)
27
+ return [];
28
+ return normalizeToolList(input
29
+ .split(",")
30
+ .map((entry) => entry.trim())
31
+ .filter(Boolean));
32
+ }
33
+ export function normalizeToolsConfig(input) {
34
+ return {
35
+ policy: {
36
+ allowed: normalizeToolList(input?.policy?.allowed),
37
+ blocked: normalizeToolList(input?.policy?.blocked),
38
+ },
39
+ placement: {
40
+ section: normalizeToolList(input?.placement?.section).length
41
+ ? normalizeToolList(input?.placement?.section)
42
+ : [...DEFAULT_PLACEMENT.section],
43
+ item: normalizeToolList(input?.placement?.item).length
44
+ ? normalizeToolList(input?.placement?.item)
45
+ : [...DEFAULT_PLACEMENT.item],
46
+ passage: normalizeToolList(input?.placement?.passage).length
47
+ ? normalizeToolList(input?.placement?.passage)
48
+ : [...DEFAULT_PLACEMENT.passage],
49
+ },
50
+ providers: {
51
+ ...(input?.providers || {}),
52
+ },
53
+ };
54
+ }
55
+ export function resolveToolsForLevel(config, level) {
56
+ const placement = normalizeToolList(config.placement[level]);
57
+ const allowed = normalizeToolList(config.policy.allowed);
58
+ const blocked = new Set(normalizeToolList(config.policy.blocked));
59
+ const passAllowed = allowed.length === 0 ? placement : placement.filter((toolId) => allowed.includes(toolId));
60
+ return passAllowed.filter((toolId) => !blocked.has(toolId));
61
+ }
62
+ //# sourceMappingURL=tools-config-normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-config-normalizer.js","sourceRoot":"","sources":["../../src/services/tools-config-normalizer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.d.ts","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACtD,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,8BAA8B;IACnD,QAAQ,CAAC,OAAO,WAAW;IAErB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAcxE,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAK7C,eAAe,IAAI,uBAAuB;IAW1C,OAAO,IAAI,IAAI;CAGf"}
1
+ {"version":3,"file":"browser-provider.d.ts","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,0BAA0B,EAC1B,SAAS,EACT,UAAU,EACV,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAQ9B;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACtD,QAAQ,CAAC,UAAU,aAAa;IAChC,QAAQ,CAAC,YAAY,8BAA8B;IACnD,QAAQ,CAAC,OAAO,WAAW;IAErB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAcxE,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAK7C,eAAe,IAAI,uBAAuB;IAW1C,OAAO,IAAI,IAAI;CAGf"}
@@ -54,79 +54,239 @@ class BrowserTTSProviderImpl {
54
54
  config = null;
55
55
  _isPlaying = false;
56
56
  _isPaused = false;
57
+ speakRunId = 0;
57
58
  constructor(config) {
58
59
  this.config = config;
59
60
  }
60
61
  async speak(text) {
62
+ if (!this.config) {
63
+ throw new Error("TTS not initialized");
64
+ }
65
+ // Invalidate any in-flight run and cancel current utterance.
66
+ this.stop();
67
+ const runId = this.speakRunId;
68
+ const chunks = this.splitIntoChunks(text);
69
+ for (const chunk of chunks) {
70
+ if (runId !== this.speakRunId) {
71
+ break;
72
+ }
73
+ const shouldContinue = await this.speakChunk(chunk.text, chunk.offset, runId);
74
+ if (!shouldContinue) {
75
+ break;
76
+ }
77
+ }
78
+ }
79
+ async speakSegments(segments) {
80
+ if (!this.config) {
81
+ throw new Error("TTS not initialized");
82
+ }
83
+ this.stop();
84
+ const runId = this.speakRunId;
85
+ for (const segment of segments) {
86
+ if (runId !== this.speakRunId)
87
+ break;
88
+ const chunks = this.splitIntoChunks(segment.text);
89
+ for (const chunk of chunks) {
90
+ if (runId !== this.speakRunId)
91
+ break;
92
+ const shouldContinue = await this.speakChunk(chunk.text, segment.startOffset + chunk.offset, runId);
93
+ if (!shouldContinue)
94
+ break;
95
+ }
96
+ const pauseMsAfter = Math.max(0, Number(segment.pauseMsAfter || 0));
97
+ if (pauseMsAfter > 0 && runId === this.speakRunId) {
98
+ const shouldContinue = await this.waitForPause(pauseMsAfter, runId);
99
+ if (!shouldContinue)
100
+ break;
101
+ }
102
+ }
103
+ }
104
+ async waitForPause(pauseMs, runId) {
105
+ await new Promise((resolve) => setTimeout(resolve, pauseMs));
106
+ return runId === this.speakRunId;
107
+ }
108
+ splitIntoChunks(text) {
109
+ const MAX_CHUNK_LENGTH = 260;
110
+ if (text.length <= MAX_CHUNK_LENGTH) {
111
+ return [{ text, offset: 0 }];
112
+ }
113
+ const sentences = this.segmentSentences(text);
114
+ const chunks = [];
115
+ let currentText = "";
116
+ let currentOffset = 0;
117
+ for (const sentence of sentences) {
118
+ const trimmed = sentence.text.trim();
119
+ if (!trimmed)
120
+ continue;
121
+ const firstNonWhitespace = sentence.text.search(/\S/);
122
+ const trimmedStart = sentence.offset + (firstNonWhitespace === -1 ? 0 : firstNonWhitespace);
123
+ if (!currentText) {
124
+ currentText = trimmed;
125
+ currentOffset = trimmedStart;
126
+ continue;
127
+ }
128
+ const candidate = `${currentText} ${trimmed}`;
129
+ if (candidate.length <= MAX_CHUNK_LENGTH) {
130
+ currentText = candidate;
131
+ }
132
+ else {
133
+ chunks.push({ text: currentText, offset: currentOffset });
134
+ currentText = trimmed;
135
+ currentOffset = trimmedStart;
136
+ }
137
+ }
138
+ if (currentText) {
139
+ chunks.push({ text: currentText, offset: currentOffset });
140
+ }
141
+ return chunks.length ? chunks : [{ text, offset: 0 }];
142
+ }
143
+ getHighlightMode() {
144
+ const providerOptions = (this.config?.providerOptions || {});
145
+ return providerOptions.highlightMode === "word" ? "word" : "sentence";
146
+ }
147
+ getSegmentationPolicy() {
148
+ const providerOptions = (this.config?.providerOptions || {});
149
+ const segmenter = (providerOptions.segmenter || {});
150
+ const mode = segmenter.mode;
151
+ const useSegmenter = mode !== "regexOnly";
152
+ const locale = typeof segmenter.locale === "string" && segmenter.locale.trim().length > 0
153
+ ? segmenter.locale
154
+ : typeof providerOptions.locale === "string" &&
155
+ providerOptions.locale.trim().length > 0
156
+ ? providerOptions.locale
157
+ : undefined;
158
+ return {
159
+ useSentenceSegmenter: useSegmenter,
160
+ useWordSegmenter: useSegmenter,
161
+ locale,
162
+ };
163
+ }
164
+ segmentSentences(text) {
165
+ try {
166
+ const policy = this.getSegmentationPolicy();
167
+ if (!policy.useSentenceSegmenter) {
168
+ throw new Error("Segmenter disabled by policy");
169
+ }
170
+ const Segmenter = globalThis.Intl?.Segmenter;
171
+ if (typeof Segmenter === "function") {
172
+ const segmenter = new Segmenter(policy.locale, {
173
+ granularity: "sentence",
174
+ });
175
+ const segments = Array.from(segmenter.segment(text));
176
+ const parsed = segments
177
+ .map((segment) => ({
178
+ text: segment.segment,
179
+ offset: segment.index,
180
+ }))
181
+ .filter((segment) => segment.text.trim().length > 0);
182
+ if (parsed.length > 0) {
183
+ return parsed;
184
+ }
185
+ }
186
+ }
187
+ catch {
188
+ // Fallback below.
189
+ }
190
+ const sentenceRegex = /[^.!?]+(?:[.!?]+|$)/g;
191
+ const raw = text.match(sentenceRegex) || [text];
192
+ const parsed = [];
193
+ let processed = 0;
194
+ for (const sentence of raw) {
195
+ const offset = text.indexOf(sentence, processed);
196
+ if (offset === -1)
197
+ continue;
198
+ parsed.push({ text: sentence, offset });
199
+ processed = offset + sentence.length;
200
+ }
201
+ return parsed.length > 0 ? parsed : [{ text, offset: 0 }];
202
+ }
203
+ inferWordLength(text, index) {
204
+ const safeIndex = Math.max(0, Math.min(index, Math.max(0, text.length - 1)));
205
+ const slice = text.slice(safeIndex);
206
+ const match = slice.match(/^\s*([^\s]+)/);
207
+ return match?.[1]?.length || 1;
208
+ }
209
+ async speakChunk(chunkText, chunkOffset, runId) {
61
210
  return new Promise((resolve, reject) => {
62
- if (!this.config) {
63
- reject(new Error("TTS not initialized"));
211
+ if (runId !== this.speakRunId) {
212
+ resolve(false);
64
213
  return;
65
214
  }
66
- this.stop(); // Stop any ongoing speech
67
- this.utterance = new SpeechSynthesisUtterance(text);
68
- // Track for word boundary fallback
69
- let lastBoundaryIndex = -1;
70
- let boundaryCount = 0;
215
+ this.utterance = new SpeechSynthesisUtterance(chunkText);
71
216
  // Apply config
72
- if (this.config.voice) {
217
+ if (this.config?.voice) {
73
218
  const voices = speechSynthesis.getVoices();
74
219
  const voice = voices.find((v) => v.name === this.config.voice);
75
220
  if (voice)
76
221
  this.utterance.voice = voice;
77
222
  }
78
- if (this.config.rate)
223
+ if (this.config?.rate)
79
224
  this.utterance.rate = this.config.rate;
80
- if (this.config.pitch)
225
+ if (this.config?.pitch)
81
226
  this.utterance.pitch = this.config.pitch;
82
- // Set up event handlers
83
227
  this.utterance.onstart = () => {
228
+ if (runId !== this.speakRunId)
229
+ return;
84
230
  this._isPlaying = true;
85
231
  this._isPaused = false;
86
232
  };
87
233
  this.utterance.onend = () => {
234
+ if (runId !== this.speakRunId) {
235
+ resolve(false);
236
+ return;
237
+ }
88
238
  this._isPlaying = false;
89
239
  this._isPaused = false;
90
- resolve();
240
+ resolve(true);
91
241
  };
92
242
  this.utterance.onerror = (event) => {
243
+ if (runId !== this.speakRunId) {
244
+ resolve(false);
245
+ return;
246
+ }
93
247
  this._isPlaying = false;
94
248
  this._isPaused = false;
95
- // Ignore "interrupted" errors (expected when user stops TTS)
96
249
  if (event.error === "interrupted" || event.error === "canceled") {
97
- resolve(); // Treat interruption as successful completion
250
+ resolve(false);
98
251
  return;
99
252
  }
100
253
  reject(new Error(`Speech synthesis error: ${event.error}`));
101
254
  };
102
255
  this.utterance.onpause = () => {
256
+ if (runId !== this.speakRunId)
257
+ return;
103
258
  this._isPaused = true;
104
259
  };
105
260
  this.utterance.onresume = () => {
261
+ if (runId !== this.speakRunId)
262
+ return;
106
263
  this._isPaused = false;
107
264
  };
108
- // Word boundary events (if supported)
109
265
  this.utterance.onboundary = (event) => {
266
+ if (runId !== this.speakRunId)
267
+ return;
110
268
  console.log("[BrowserProvider] Boundary event:", event.name, "charIndex:", event.charIndex, "charLength:", event.charLength);
111
- if (event.name === "word" && this.onWordBoundary) {
112
- boundaryCount++;
113
- // Detect if browser word boundaries are broken (Safari bug)
114
- // If we get multiple events at the same position, boundaries don't work
115
- if (event.charIndex === lastBoundaryIndex && boundaryCount > 2) {
116
- console.warn("[BrowserProvider] Browser word boundaries broken - disabling word highlighting");
117
- if (this.utterance) {
118
- this.utterance.onboundary = null; // Stop listening
119
- }
120
- return;
121
- }
122
- lastBoundaryIndex = event.charIndex;
123
- // Extract word from text
124
- const word = text.substring(event.charIndex, event.charIndex + (event.charLength || 0));
125
- console.log("[BrowserProvider] Calling onWordBoundary with word:", word, "at position:", event.charIndex);
126
- this.onWordBoundary(word, event.charIndex);
269
+ if (event.name !== "word" || !this.onWordBoundary)
270
+ return;
271
+ if (this.getHighlightMode() === "sentence") {
272
+ return;
127
273
  }
274
+ const charIndex = Math.max(0, Math.min(event.charIndex, Math.max(0, chunkText.length - 1)));
275
+ const reportedLength = Number(event.charLength || 0);
276
+ const inferredLength = this.inferWordLength(chunkText, charIndex);
277
+ const wordLength = Number.isFinite(reportedLength) &&
278
+ reportedLength > 0 &&
279
+ reportedLength <= 80 &&
280
+ charIndex + reportedLength <= chunkText.length
281
+ ? reportedLength
282
+ : inferredLength;
283
+ const word = chunkText
284
+ .substring(charIndex, Math.min(chunkText.length, charIndex + wordLength))
285
+ .trim();
286
+ const absoluteBoundaryStart = chunkOffset + charIndex;
287
+ console.log("[BrowserProvider] Calling onWordBoundary with word:", word, "at position:", absoluteBoundaryStart);
288
+ this.onWordBoundary(word, absoluteBoundaryStart, wordLength);
128
289
  };
129
- // Start speaking
130
290
  speechSynthesis.speak(this.utterance);
131
291
  });
132
292
  }
@@ -141,11 +301,12 @@ class BrowserTTSProviderImpl {
141
301
  }
142
302
  }
143
303
  stop() {
304
+ this.speakRunId += 1;
144
305
  if (this._isPlaying) {
145
306
  speechSynthesis.cancel();
146
- this._isPlaying = false;
147
- this._isPaused = false;
148
307
  }
308
+ this._isPlaying = false;
309
+ this._isPaused = false;
149
310
  }
150
311
  isPlaying() {
151
312
  return this._isPlaying && !this._isPaused;
@@ -171,6 +332,12 @@ class BrowserTTSProviderImpl {
171
332
  if (settings.voice !== undefined) {
172
333
  this.config.voice = settings.voice;
173
334
  }
335
+ if (settings.providerOptions !== undefined) {
336
+ this.config.providerOptions = {
337
+ ...(this.config.providerOptions || {}),
338
+ ...(settings.providerOptions || {}),
339
+ };
340
+ }
174
341
  }
175
342
  onWordBoundary;
176
343
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../../src/services/tts/browser-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export type NormalizedTextMap = Map<number, {
2
+ node: Text;
3
+ offset: number;
4
+ }>;
5
+ export type BoundarySpacingMode = "segmenterPreferred" | "alnum" | "none";
6
+ export interface TextProcessingOptions {
7
+ locale?: string;
8
+ boundarySpacingMode?: BoundarySpacingMode;
9
+ }
10
+ export declare const normalizeTextForSpeech: (text: string) => string;
11
+ export declare const isElementHiddenForTTS: (element: Element) => boolean;
12
+ export declare const collectVisibleTextAndMap: (element: Element, options?: TextProcessingOptions) => {
13
+ text: string;
14
+ map: NormalizedTextMap;
15
+ };
16
+ export declare const extractVisibleText: (element: Element, options?: TextProcessingOptions) => string;
17
+ //# sourceMappingURL=text-processing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-processing.d.ts","sourceRoot":"","sources":["../../../src/services/tts/text-processing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AAED,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,MACrB,CAAC;AAElC,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,KAAG,OAyCxD,CAAC;AAiCF,eAAO,MAAM,wBAAwB,GACpC,SAAS,OAAO,EAChB,UAAU,qBAAqB,KAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAgFxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC9B,SAAS,OAAO,EAChB,UAAU,qBAAqB,KAC7B,MAAyD,CAAC"}
@@ -0,0 +1,144 @@
1
+ export const normalizeTextForSpeech = (text) => text.trim().replace(/\s+/g, " ");
2
+ export const isElementHiddenForTTS = (element) => {
3
+ if (element.hidden)
4
+ return true;
5
+ if (element.getAttribute("aria-hidden") === "true")
6
+ return true;
7
+ if (element.hasAttribute("inert"))
8
+ return true;
9
+ const classList = element.classList;
10
+ if (classList?.contains("sr-only") ||
11
+ classList?.contains("pie-sr-only") ||
12
+ classList?.contains("visually-hidden")) {
13
+ return true;
14
+ }
15
+ if (typeof window !== "undefined") {
16
+ const style = window.getComputedStyle(element);
17
+ if (style.display === "none" || style.visibility === "hidden") {
18
+ return true;
19
+ }
20
+ const width = Number.parseFloat(style.width || "0");
21
+ const height = Number.parseFloat(style.height || "0");
22
+ const isTiny = Number.isFinite(width) &&
23
+ Number.isFinite(height) &&
24
+ width <= 1 &&
25
+ height <= 1;
26
+ const isOffscreenClip = style.clipPath.includes("inset(50%") ||
27
+ style.clipPath.includes("inset(100%") ||
28
+ style.clip.includes("rect(0px, 0px, 0px, 0px)") ||
29
+ style.clip.includes("rect(0 0 0 0)");
30
+ if ((style.position === "absolute" || style.position === "fixed") &&
31
+ isTiny &&
32
+ (style.overflow === "hidden" || isOffscreenClip)) {
33
+ return true;
34
+ }
35
+ if (style.opacity === "0" && isTiny) {
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ };
41
+ const shouldInsertBoundarySpace = (previousChar, nextChar, options) => {
42
+ if (!previousChar || !nextChar)
43
+ return false;
44
+ if (/\s/.test(previousChar) || /\s/.test(nextChar))
45
+ return false;
46
+ const mode = options?.boundarySpacingMode ?? "segmenterPreferred";
47
+ if (mode === "none")
48
+ return false;
49
+ if (mode === "segmenterPreferred") {
50
+ try {
51
+ const Segmenter = globalThis.Intl?.Segmenter;
52
+ if (typeof Segmenter === "function") {
53
+ const segmenter = new Segmenter(options?.locale, { granularity: "word" });
54
+ const segments = Array.from(segmenter.segment(`${previousChar}${nextChar}`));
55
+ const wordLikeCount = segments.filter((segment) => segment.isWordLike !== false &&
56
+ segment.segment.trim().length > 0).length;
57
+ if (wordLikeCount >= 2)
58
+ return true;
59
+ }
60
+ }
61
+ catch {
62
+ // Fall back to alnum heuristics below.
63
+ }
64
+ }
65
+ const prevIsAlnum = /[A-Za-z0-9]/.test(previousChar);
66
+ const nextIsAlnum = /[A-Za-z0-9]/.test(nextChar);
67
+ return prevIsAlnum && nextIsAlnum;
68
+ };
69
+ export const collectVisibleTextAndMap = (element, options) => {
70
+ const map = new Map();
71
+ if (typeof document === "undefined" ||
72
+ typeof document.createTreeWalker !==
73
+ "function" ||
74
+ typeof NodeFilter === "undefined") {
75
+ return { text: "", map };
76
+ }
77
+ const outChars = [];
78
+ let outPos = 0;
79
+ let inLeadingWhitespace = true;
80
+ let lastCharWasWhitespace = false;
81
+ let lastMapped = null;
82
+ let previousVisibleChar = null;
83
+ const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);
84
+ let current = walker.nextNode();
85
+ while (current) {
86
+ const textNode = current;
87
+ const parent = textNode.parentElement;
88
+ if (parent && !isElementHiddenForTTS(parent)) {
89
+ const raw = textNode.textContent || "";
90
+ const firstVisibleMatch = raw.match(/\S/);
91
+ const firstVisibleChar = firstVisibleMatch ? firstVisibleMatch[0] : null;
92
+ if (!inLeadingWhitespace &&
93
+ !lastCharWasWhitespace &&
94
+ shouldInsertBoundarySpace(previousVisibleChar, firstVisibleChar, options)) {
95
+ outChars.push(" ");
96
+ if (lastMapped) {
97
+ map.set(outPos, lastMapped);
98
+ }
99
+ outPos++;
100
+ lastCharWasWhitespace = true;
101
+ }
102
+ for (let i = 0; i < raw.length; i++) {
103
+ const ch = raw[i];
104
+ const isWhitespace = /\s/.test(ch);
105
+ if (inLeadingWhitespace) {
106
+ if (!isWhitespace) {
107
+ inLeadingWhitespace = false;
108
+ outChars.push(ch);
109
+ map.set(outPos, { node: textNode, offset: i });
110
+ lastMapped = { node: textNode, offset: i };
111
+ outPos++;
112
+ lastCharWasWhitespace = false;
113
+ previousVisibleChar = ch;
114
+ }
115
+ }
116
+ else if (isWhitespace) {
117
+ if (!lastCharWasWhitespace) {
118
+ outChars.push(" ");
119
+ map.set(outPos, { node: textNode, offset: i });
120
+ lastMapped = { node: textNode, offset: i };
121
+ outPos++;
122
+ }
123
+ lastCharWasWhitespace = true;
124
+ }
125
+ else {
126
+ outChars.push(ch);
127
+ map.set(outPos, { node: textNode, offset: i });
128
+ lastMapped = { node: textNode, offset: i };
129
+ outPos++;
130
+ lastCharWasWhitespace = false;
131
+ previousVisibleChar = ch;
132
+ }
133
+ }
134
+ }
135
+ current = walker.nextNode();
136
+ }
137
+ const text = outChars.join("").trimEnd();
138
+ while (map.has(text.length)) {
139
+ map.delete(text.length);
140
+ }
141
+ return { text, map };
142
+ };
143
+ export const extractVisibleText = (element, options) => collectVisibleTextAndMap(element, options).text;
144
+ //# sourceMappingURL=text-processing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-processing.js","sourceRoot":"","sources":["../../../src/services/tts/text-processing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ti-provider.d.ts","sourceRoot":"","sources":["../../../src/tools/calculators/ti-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEX,UAAU,EACV,kBAAkB,EAClB,8BAA8B,EAC9B,wBAAwB,EAExB,cAAc,EAEd,MAAM,6BAA6B,CAAC;AAUrC,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;QACxE,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;QACtE,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;KACrE;CACD;AAGD,UAAU,oBAAoB;IAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC9D,QAAQ,CAAC,UAAU,QAAQ;IAC3B,QAAQ,CAAC,YAAY,uBAAuB;IAC5C,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,CAAmC;IAC5E,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAA6B;IAEpD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACG,gBAAgB,CACrB,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,WAAW,EACtB,MAAM,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,UAAU,CAAC;IAkBtB;;OAEG;YACW,aAAa;IAkB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAI3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,eAAe,IAAI,8BAA8B;CAUjD;AAwaD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sBAA6B,CAAC;;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG"}
1
+ {"version":3,"file":"ti-provider.d.ts","sourceRoot":"","sources":["../../../src/tools/calculators/ti-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEX,UAAU,EACV,kBAAkB,EAClB,8BAA8B,EAC9B,wBAAwB,EAExB,cAAc,EAEd,MAAM,6BAA6B,CAAC;AAUrC,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;QACxE,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;QACtE,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,oBAAoB,CAAC;KACrE;CACD;AAGD,UAAU,oBAAoB;IAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC9D,QAAQ,CAAC,UAAU,QAAQ;IAC3B,QAAQ,CAAC,YAAY,uBAAuB;IAC5C,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,CAAmC;IAC5E,QAAQ,CAAC,OAAO,WAAW;IAE3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAA6B;IAEpD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACG,gBAAgB,CACrB,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,WAAW,EACtB,MAAM,CAAC,EAAE,wBAAwB,GAC/B,OAAO,CAAC,UAAU,CAAC;IAkBtB;;OAEG;YACW,aAAa;IAkB3B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAI3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,eAAe,IAAI,8BAA8B;CAUjD;AAgkBD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sBAA6B,CAAC;;AAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG"}