@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,953 @@
1
+ // @ts-nocheck
2
+ import 'svelte/internal/disclose-version';
3
+ import * as $ from 'svelte/internal/client';
4
+
5
+ import {
6
+ connectAssessmentToolkitRuntimeContext,
7
+ connectAssessmentToolkitShellContext
8
+ } from '../context/runtime-context-consumer.js';
9
+
10
+ import { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem } from '../services/toolbar-items.js';
11
+ import { createDefaultToolRegistry } from '../services/createDefaultToolRegistry.js';
12
+ import { DEFAULT_TOOL_MODULE_LOADERS } from '../tools/default-tool-module-loaders.js';
13
+ import { normalizeToolsConfig, parseToolList, resolveToolsForLevel } from '../services/tools-config-normalizer.js';
14
+ import { createScopedToolId, parseScopedToolId } from '../services/tool-instance-id.js';
15
+
16
+ var root_2 = $.from_html(`<span class="item-toolbar__element-host svelte-rnx3ie"></span>`);
17
+ var root_7 = $.from_html(`<img class="item-toolbar__icon-image svelte-rnx3ie" alt=""/>`);
18
+ var root_10 = $.from_html(`<i aria-hidden="true"></i>`);
19
+ var root_4 = $.from_html(`<a><!></a>`);
20
+ var root_14 = $.from_html(`<img class="item-toolbar__icon-image svelte-rnx3ie" alt=""/>`);
21
+ var root_17 = $.from_html(`<i aria-hidden="true"></i>`);
22
+ var root_11 = $.from_html(`<button type="button"><!></button>`);
23
+ var root_18 = $.from_html(`<span class="item-toolbar__element-host svelte-rnx3ie"></span>`);
24
+ var root_1 = $.from_html(`<div><!> <!> <!></div>`);
25
+
26
+ const $$css = {
27
+ hash: 'svelte-rnx3ie',
28
+ code: '.item-toolbar.svelte-rnx3ie {display:flex;align-items:center;gap:0.5rem;}.item-toolbar--top.svelte-rnx3ie,\n .item-toolbar--bottom.svelte-rnx3ie {flex-direction:row;flex-wrap:wrap;}.item-toolbar--left.svelte-rnx3ie,\n .item-toolbar--right.svelte-rnx3ie {flex-direction:column;align-items:stretch;}.item-toolbar__button.svelte-rnx3ie {display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0.25rem;border:1px solid var(--pie-border, #ccc);border-radius:0.25rem;background-color:var(--pie-background, white);color:var(--pie-text, #333);cursor:pointer;transition:all 0.15s ease;text-decoration:none;}.item-toolbar__element-host.svelte-rnx3ie {display:contents;}.item-toolbar--sm.svelte-rnx3ie .item-toolbar__button:where(.svelte-rnx3ie) {width:2.75rem;height:2.75rem;}.item-toolbar--lg.svelte-rnx3ie .item-toolbar__button:where(.svelte-rnx3ie) {width:2.5rem;height:2.5rem;}.item-toolbar__button.svelte-rnx3ie:hover:not(:disabled) {background-color:var(--pie-secondary-background, #f5f5f5);transform:translateY(-1px);box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);}.item-toolbar__button.svelte-rnx3ie:active:not(:disabled) {transform:translateY(0);box-shadow:none;}.item-toolbar__button--active.svelte-rnx3ie {background-color:var(--pie-primary, #1976d2);color:white;border-color:var(--pie-primary, #1976d2);}.item-toolbar__button--active.svelte-rnx3ie:hover:not(:disabled) {background-color:var(--pie-primary-dark, #1565c0);}.item-toolbar__button.svelte-rnx3ie:focus-visible {outline:2px solid var(--pie-primary, #1976d2);outline-offset:2px;}.item-toolbar__button.svelte-rnx3ie:disabled {opacity:0.5;cursor:not-allowed;}.item-toolbar__button.svelte-rnx3ie svg {width:100%;height:100%;}.item-toolbar__icon-image.svelte-rnx3ie {width:100%;height:100%;object-fit:contain;}'
29
+ };
30
+
31
+ export default function ItemToolBar($$anchor, $$props) {
32
+ $.push($$props, true);
33
+ $.append_styles($$anchor, $$css);
34
+
35
+ const isBrowser = typeof window !== 'undefined';
36
+ const fallbackToolRegistry = createDefaultToolRegistry({ toolModuleLoaders: DEFAULT_TOOL_MODULE_LOADERS });
37
+ let activeToolState = $.state($.proxy({}));
38
+
39
+ // Props
40
+ let level = $.prop($$props, 'level', 7, 'item'),
41
+ scopeId = $.prop($$props, 'scopeId', 7, ''),
42
+ itemId = $.prop($$props, 'itemId', 7, ''),
43
+ sectionId = $.prop($$props, 'sectionId', 7, ''),
44
+ catalogId = $.prop($$props, 'catalogId', 7, ''),
45
+ tools = $.prop($$props, 'tools', 7, 'calculator,textToSpeech,answerEliminator'),
46
+ contentKind = $.prop($$props, 'contentKind', 7, 'assessment-item'),
47
+ position = $.prop($$props, 'position', 7, 'bottom'),
48
+ scopeElement = $.prop($$props, 'scopeElement', 7, null),
49
+ toolRegistry = $.prop($$props, 'toolRegistry', 7, null),
50
+ pnpResolver = $.prop($$props, 'pnpResolver', 7, null),
51
+ assessment = $.prop($$props, 'assessment', 7, null),
52
+ itemRef = $.prop($$props, 'itemRef', 7, null),
53
+ item = $.prop($$props, 'item', 7, null),
54
+ hostButtons = $.prop($$props, 'hostButtons', 23, () => []),
55
+ className = $.prop($$props, 'class', 7, ''),
56
+ size = $.prop($$props, 'size', 7, 'md'),
57
+ language = $.prop($$props, 'language', 7, 'en-US');
58
+
59
+ let toolbarRootElement = $.state(null);
60
+ let runtimeContext = $.state(null);
61
+ let shellContext = $.state(null);
62
+ let moduleLoadVersion = $.state(0);
63
+
64
+ $.user_effect(() => {
65
+ if (!$.get(toolbarRootElement)) return;
66
+
67
+ return connectAssessmentToolkitRuntimeContext($.get(toolbarRootElement), (value) => {
68
+ $.set(runtimeContext, value, true);
69
+ });
70
+ });
71
+
72
+ $.user_effect(() => {
73
+ if (!$.get(toolbarRootElement)) return;
74
+
75
+ return connectAssessmentToolkitShellContext($.get(toolbarRootElement), (value) => {
76
+ $.set(shellContext, value, true);
77
+ });
78
+ });
79
+
80
+ const effectiveToolCoordinator = $.derived(() => $.get(runtimeContext)?.toolCoordinator);
81
+ const effectiveTTSService = $.derived(() => $.get(runtimeContext)?.ttsService);
82
+ const effectiveElementToolStateStore = $.derived(() => $.get(runtimeContext)?.elementToolStateStore);
83
+ const effectiveAssessmentId = $.derived(() => $.get(runtimeContext)?.assessmentId ?? '');
84
+ const effectiveItemId = $.derived(() => itemId() || $.get(shellContext)?.itemId || '');
85
+ const effectiveCanonicalItemId = $.derived(() => $.get(shellContext)?.canonicalItemId || $.get(effectiveItemId));
86
+ const effectiveSectionId = $.derived(() => sectionId() || $.get(runtimeContext)?.sectionId || '');
87
+ const effectiveContentKind = $.derived(() => contentKind() || $.get(shellContext)?.contentKind || (level() === 'section' ? 'section' : 'assessment-item'));
88
+
89
+ const effectiveLevel = $.derived(() => {
90
+ if (level() && level() !== 'item') return level();
91
+ if ($.get(effectiveContentKind) === 'rubric-block-stimulus') return 'passage';
92
+
93
+ return 'item';
94
+ });
95
+
96
+ const effectiveScopeId = $.derived(() => {
97
+ if (scopeId()) return scopeId();
98
+ if ($.get(effectiveLevel) === 'section') return $.get(effectiveSectionId) || $.get(runtimeContext)?.sectionId || 'default-section';
99
+ if ($.get(effectiveLevel) === 'assessment') return $.get(runtimeContext)?.assessmentId || 'default-assessment';
100
+
101
+ return $.get(effectiveCanonicalItemId) || $.get(effectiveItemId) || 'default-item';
102
+ });
103
+
104
+ const effectiveCatalogId = $.derived(() => catalogId() || $.get(effectiveScopeId));
105
+ const effectiveItem = $.derived(() => item() || $.get(shellContext)?.item || null);
106
+
107
+ // Effective registry for visibility and metadata ownership.
108
+ const effectiveToolRegistry = $.derived(() => toolRegistry() || fallbackToolRegistry);
109
+
110
+ const explicitTools = $.derived(() => parseToolList(tools()));
111
+ const normalizedExplicitTools = $.derived(() => $.get(effectiveToolRegistry).normalizeToolIds($.get(explicitTools)).filter(Boolean));
112
+
113
+ const effectiveToolsConfig = $.derived(() => {
114
+ const coordinatorConfig = $.get(runtimeContext)?.toolkitCoordinator?.config?.tools;
115
+
116
+ return normalizeToolsConfig(coordinatorConfig || {});
117
+ });
118
+
119
+ const placementLevel = $.derived(() => {
120
+ if ($.get(effectiveLevel) === 'section') return 'section';
121
+ if ($.get(effectiveLevel) === 'passage' || $.get(effectiveContentKind) === 'rubric-block-stimulus') return 'passage';
122
+
123
+ return 'item';
124
+ });
125
+
126
+ const placementAllowedToolIds = $.derived(() => {
127
+ const resolved = resolveToolsForLevel($.get(effectiveToolsConfig), $.get(placementLevel));
128
+
129
+ return $.get(effectiveToolRegistry).normalizeToolIds(resolved).filter(Boolean);
130
+ });
131
+
132
+ // Pass 1: determine allowed tools
133
+ const allowedToolIds = $.derived(() => {
134
+ const configuredTools = $.get(normalizedExplicitTools).length > 0
135
+ ? $.get(normalizedExplicitTools)
136
+ : $.get(placementAllowedToolIds);
137
+
138
+ if (pnpResolver() && assessment() && itemRef()) {
139
+ const allowedByPnp = pnpResolver().getAllowedToolIds(assessment(), itemRef());
140
+
141
+ if (configuredTools.length === 0) return allowedByPnp;
142
+
143
+ return allowedByPnp.filter((toolId) => configuredTools.includes(toolId));
144
+ }
145
+
146
+ return configuredTools;
147
+ });
148
+
149
+ const contentReady = $.derived(() => {
150
+ if ($.get(effectiveLevel) === 'section' || $.get(effectiveLevel) === 'assessment') return true;
151
+
152
+ const config = $.get(effectiveItem)?.config;
153
+
154
+ return !!($.get(effectiveItem) && config && typeof config === 'object');
155
+ });
156
+
157
+ const toolContext = $.derived(() => {
158
+ if ($.get(effectiveLevel) === 'section') {
159
+ return {
160
+ level: 'section',
161
+ assessment: assessment() || {},
162
+ section: {}
163
+ };
164
+ }
165
+
166
+ if ($.get(effectiveLevel) === 'assessment') {
167
+ return { level: 'assessment', assessment: assessment() || {} };
168
+ }
169
+
170
+ if (!$.get(contentReady) || !$.get(effectiveItem)) {
171
+ return null;
172
+ }
173
+
174
+ if ($.get(effectiveLevel) === 'passage') {
175
+ return {
176
+ level: 'passage',
177
+ assessment: assessment() || {},
178
+ itemRef: itemRef() || { id: $.get(effectiveCanonicalItemId) },
179
+ passage: $.get(effectiveItem)
180
+ };
181
+ }
182
+
183
+ return {
184
+ level: 'item',
185
+ assessment: assessment() || {},
186
+ itemRef: itemRef() || { id: $.get(effectiveCanonicalItemId) },
187
+ item: $.get(effectiveItem)
188
+ };
189
+ });
190
+
191
+ const renderContext = $.derived(() => {
192
+ if ($.get(toolContext)) return $.get(toolContext);
193
+
194
+ return {
195
+ level: 'item',
196
+ assessment: assessment() || {},
197
+ itemRef: itemRef() || { id: $.get(effectiveCanonicalItemId) },
198
+ item: $.get(effectiveItem) || { id: $.get(effectiveCanonicalItemId), config: {} }
199
+ };
200
+ });
201
+
202
+ const elementContexts = $.derived(() => {
203
+ if ($.get(effectiveLevel) !== 'item' && $.get(effectiveLevel) !== 'passage') return [];
204
+ if (!$.get(contentReady) || !$.get(effectiveItem)) return [];
205
+
206
+ const modelsRaw = $.get(effectiveItem)?.config?.models;
207
+
208
+ const models = Array.isArray(modelsRaw)
209
+ ? modelsRaw
210
+ : modelsRaw && typeof modelsRaw === 'object' ? Object.values(modelsRaw) : [];
211
+
212
+ return models.filter((model) => model && typeof model === 'object' && typeof model.id === 'string').map((model) => ({
213
+ level: 'element',
214
+ assessment: assessment() || {},
215
+ itemRef: itemRef() || { id: $.get(effectiveCanonicalItemId) },
216
+ item: $.get(effectiveItem),
217
+ elementId: model.id
218
+ }));
219
+ });
220
+
221
+ // Pass 2: tool-owned context filtering (item + element aggregation)
222
+ const visibleToolIds = $.derived(() => {
223
+ const levelCompatibleToolIds = $.get(allowedToolIds).filter((toolId) => {
224
+ const registration = $.get(effectiveToolRegistry).get(toolId);
225
+
226
+ return registration
227
+ ? registration.supportedLevels.includes($.get(effectiveLevel))
228
+ : false;
229
+ });
230
+
231
+ if ($.get(effectiveLevel) === 'section') {
232
+ // Section toolbars are orchestrator-driven. Tool-level relevance is often
233
+ // item-content dependent. Keep pass-1 as the source of truth here.
234
+ return $.get(allowedToolIds);
235
+ }
236
+
237
+ if (!$.get(contentReady)) {
238
+ // Stage 1: orchestrator-level allow-list only.
239
+ return levelCompatibleToolIds;
240
+ }
241
+
242
+ if (!$.get(toolContext) && $.get(elementContexts).length === 0) {
243
+ return levelCompatibleToolIds;
244
+ }
245
+
246
+ const visible = new Set();
247
+
248
+ if ($.get(toolContext)) {
249
+ $.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, $.get(toolContext)).forEach((tool) => visible.add(tool.toolId));
250
+ }
251
+
252
+ for (const context of $.get(elementContexts)) {
253
+ $.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, context).forEach((tool) => visible.add(tool.toolId));
254
+ }
255
+
256
+ return Array.from(visible);
257
+ });
258
+
259
+ // Dynamically load whatever tools are currently visible.
260
+ // The registry owns module loader configuration by toolId.
261
+ $.user_effect(() => {
262
+ if (!isBrowser) return;
263
+
264
+ let cancelled = false;
265
+
266
+ void $.get(effectiveToolRegistry).ensureToolModulesLoaded($.get(visibleToolIds)).then(() => {
267
+ if (!cancelled) $.set(moduleLoadVersion, $.get(moduleLoadVersion) + 1);
268
+ }).catch((error) => {
269
+ console.error('[ItemToolBar] Failed to load one or more tool modules:', error);
270
+ });
271
+
272
+ return () => {
273
+ cancelled = true;
274
+ };
275
+ });
276
+
277
+ function resolveScopeElement() {
278
+ if (scopeElement()) return scopeElement();
279
+
280
+ return $.get(shellContext)?.scopeElement || null;
281
+ }
282
+
283
+ function resolveGlobalElementId() {
284
+ if (!$.get(effectiveElementToolStateStore) || !$.get(effectiveAssessmentId) || !$.get(effectiveSectionId) || !$.get(effectiveCanonicalItemId)) return null;
285
+
286
+ return $.get(effectiveElementToolStateStore).getGlobalElementId($.get(effectiveAssessmentId), $.get(effectiveSectionId), $.get(effectiveCanonicalItemId), $.get(effectiveCanonicalItemId));
287
+ }
288
+
289
+ const toolbarContext = $.derived(() => {
290
+ const toolkitCoordinator = $.get(runtimeContext)?.toolkitCoordinator || null;
291
+
292
+ const toInstanceToolId = (toolId) => {
293
+ // Accept either base tool IDs (e.g. "calculator") or already-scoped IDs.
294
+ // This keeps toolbar contracts stable across mixed registration implementations.
295
+ return parseScopedToolId(toolId)
296
+ ? toolId
297
+ : createScopedToolId(toolId, $.get(effectiveLevel), $.get(effectiveScopeId));
298
+ };
299
+
300
+ return {
301
+ scope: {
302
+ level: $.get(effectiveLevel),
303
+ scopeId: $.get(effectiveScopeId),
304
+ assessmentId: $.get(runtimeContext)?.assessmentId,
305
+ sectionId: $.get(effectiveSectionId),
306
+ itemId: $.get(effectiveItemId),
307
+ canonicalItemId: $.get(effectiveCanonicalItemId),
308
+ contentKind: $.get(effectiveContentKind)
309
+ },
310
+ itemId: $.get(effectiveScopeId),
311
+ catalogId: $.get(effectiveCatalogId),
312
+ language: language(),
313
+ ui: { size: size() },
314
+ getScopeElement: resolveScopeElement,
315
+ getGlobalElementId: resolveGlobalElementId,
316
+ toolCoordinator: $.get(effectiveToolCoordinator) || null,
317
+ toolkitCoordinator,
318
+ ttsService: $.get(effectiveTTSService) || null,
319
+ elementToolStateStore: $.get(effectiveElementToolStateStore) || null,
320
+ toggleTool: (toolId) => {
321
+ if (!$.get(effectiveToolCoordinator)) return;
322
+
323
+ const instanceToolId = toInstanceToolId(toolId);
324
+
325
+ // Some tools only self-register after first visibility sync.
326
+ // Seed a placeholder registration so first toggle always works.
327
+ if (!$.get(effectiveToolCoordinator).getToolState(instanceToolId)) {
328
+ $.get(effectiveToolCoordinator).registerTool(instanceToolId, toolId);
329
+ }
330
+
331
+ $.get(effectiveToolCoordinator).toggleTool(instanceToolId);
332
+ },
333
+
334
+ isToolVisible: (toolId) => {
335
+ if (!$.get(effectiveToolCoordinator)) return false;
336
+
337
+ return $.get(effectiveToolCoordinator).isToolVisible(toInstanceToolId(toolId));
338
+ },
339
+
340
+ subscribeVisibility: $.get(effectiveToolCoordinator)
341
+ ? (listener) => $.get(effectiveToolCoordinator).subscribe(listener)
342
+ : null,
343
+ ensureTTSReady: toolkitCoordinator ? () => toolkitCoordinator.ensureTTSReady() : null
344
+ };
345
+ });
346
+
347
+ let renderedTools = $.derived(() => {
348
+ if (!isBrowser) return [];
349
+
350
+ $.get(moduleLoadVersion);
351
+
352
+ const rendered = [];
353
+
354
+ for (const toolId of $.get(visibleToolIds)) {
355
+ const result = $.get(effectiveToolRegistry).renderForToolbar(toolId, $.get(renderContext), $.get(toolbarContext));
356
+
357
+ if (result) {
358
+ rendered.push(result);
359
+ }
360
+ }
361
+
362
+ return rendered;
363
+ });
364
+
365
+ const normalizedHostButtons = $.derived(() => Array.isArray(hostButtons())
366
+ ? hostButtons().filter((item) => !!item && typeof item.id === 'string')
367
+ : []);
368
+
369
+ const nativeToolbarItems = $.derived(() => $.get(renderedTools).filter((renderedTool) => !!renderedTool.button).map((renderedTool) => {
370
+ const button = renderedTool.button;
371
+
372
+ return {
373
+ id: renderedTool.toolId,
374
+ label: button.label,
375
+ ariaLabel: button.ariaLabel || button.label,
376
+ icon: button.icon,
377
+ tooltip: button.tooltip || button.label,
378
+ disabled: button.disabled,
379
+ active: $.get(activeToolState)[renderedTool.toolId] ?? button.active ?? false,
380
+ onClick: () => {
381
+ button.onClick();
382
+ syncRenderedToolsState();
383
+ }
384
+ };
385
+ }));
386
+
387
+ const toolbarItems = $.derived(() => [
388
+ ...$.get(nativeToolbarItems),
389
+ ...$.get(normalizedHostButtons)
390
+ ]);
391
+
392
+ const mountedElementsBeforeButtons = $.derived(() => $.get(renderedTools).flatMap((renderedTool) => (renderedTool.elements || []).filter((entry) => entry.mount === 'before-buttons').map((entry) => entry.element).filter((entry) => Boolean(entry))));
393
+ const mountedElementsAfterButtons = $.derived(() => $.get(renderedTools).flatMap((renderedTool) => (renderedTool.elements || []).filter((entry) => entry.mount === 'after-buttons').map((entry) => entry.element).filter((entry) => Boolean(entry))));
394
+
395
+ function isToolbarItemActive(item) {
396
+ if (item.id in $.get(activeToolState)) {
397
+ return $.get(activeToolState)[item.id] === true;
398
+ }
399
+
400
+ return item.active === true;
401
+ }
402
+
403
+ function getFallbackIconSvg(iconName) {
404
+ const iconMap = {
405
+ calculator: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2Zm0 2v4h10V4H7Zm0 6v2h2v-2H7Zm4 0v2h2v-2h-2Zm4 0v2h2v-2h-2Zm-8 4v2h2v-2H7Zm4 0v2h2v-2h-2Zm4 0v2h2v-2h-2Zm-8 4v2h2v-2H7Zm4 0v2h2v-2h-2Zm4 0v2h2v-2h-2Z" fill="currentColor"/></svg>',
406
+ 'volume-up': '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 3.23v2.06A7.002 7.002 0 0 1 19 12a7 7 0 0 1-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77Zm-2 17.75V3L7 8H3v8h4l5 5Zm4.5-9a4.5 4.5 0 0 0-2.5-4.03v8.05A4.5 4.5 0 0 0 16.5 12Z" fill="currentColor"/></svg>',
407
+ swatch: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3a9 9 0 1 0 9 9c0-.55-.45-1-1-1h-2.5a1.5 1.5 0 0 1 0-3H20a1 1 0 0 0 1-1 8.99 8.99 0 0 0-9-4Zm-5.5 9A1.5 1.5 0 1 1 8 13.5 1.5 1.5 0 0 1 6.5 12Zm3-4A1.5 1.5 0 1 1 11 9.5 1.5 1.5 0 0 1 9.5 8Zm5 0A1.5 1.5 0 1 1 16 9.5 1.5 1.5 0 0 1 14.5 8Z" fill="currentColor"/></svg>',
408
+ 'chart-bar': '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4.75 5a.76.76 0 0 1 .75.75v11c0 .438.313.75.75.75h13a.76.76 0 0 1 .696 1.039.74.74 0 0 1-.696.461h-13C5 19 4 18 4 16.75v-11A.74.74 0 0 1 4.75 5ZM8 8.25a.74.74 0 0 1 .75-.75h6.5a.76.76 0 0 1 .696 1.039.74.74 0 0 1-.696.461h-6.5A.722.722 0 0 1 8 8.25Zm.75 2.25h4.5a.76.76 0 0 1 .696 1.039.74.74 0 0 1-.696.461h-4.5a.723.723 0 0 1-.75-.75.74.74 0 0 1 .75-.75Zm0 3h8.5a.76.76 0 0 1 .696 1.039.74.74 0 0 1-.696.461h-8.5a.723.723 0 0 1-.75-.75.74.74 0 0 1 .75-.75Z" fill="currentColor"/></svg>',
409
+ beaker: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 21c-.85 0-1.454-.38-1.813-1.137-.358-.759-.27-1.463.263-2.113L9 11V5H8a.968.968 0 0 1-.713-.287A.968.968 0 0 1 7 4c0-.283.096-.52.287-.712A.968.968 0 0 1 8 3h8c.283 0 .52.096.712.288.192.191.288.429.288.712s-.096.52-.288.713A.968.968 0 0 1 16 5h-1v6l5.55 6.75c.533.65.62 1.354.262 2.113C20.454 20.62 19.85 21 19 21H5Zm2-3h10l-3.4-4h-3.2L7 18Zm-2 1h14l-6-7.3V5h-2v6.7L5 19Z" fill="currentColor"/></svg>',
410
+ protractor: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m6.75 21-.25-2.2 2.85-7.85a3.95 3.95 0 0 0 1.75.95l-2.75 7.55L6.75 21Zm10.5 0-1.6-1.55-2.75-7.55a3.948 3.948 0 0 0 1.75-.95l2.85 7.85-.25 2.2ZM12 11a2.893 2.893 0 0 1-2.125-.875A2.893 2.893 0 0 1 9 8c0-.65.188-1.23.563-1.737A2.935 2.935 0 0 1 11 5.2V3h2v2.2c.583.2 1.063.554 1.438 1.063C14.812 6.77 15 7.35 15 8c0 .833-.292 1.542-.875 2.125A2.893 2.893 0 0 1 12 11Zm0-2c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Z" fill="currentColor"/></svg>',
411
+ 'bars-3': '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.85 15c.517 0 .98-.15 1.388-.45.408-.3.695-.692.862-1.175l.375-1.15c.267-.8.2-1.537-.2-2.213C8.875 9.337 8.3 9 7.55 9H4.025l.475 3.925c.083.583.346 1.075.787 1.475.442.4.963.6 1.563.6Zm10.3 0c.6 0 1.12-.2 1.563-.6.441-.4.704-.892.787-1.475L19.975 9h-3.5c-.75 0-1.325.342-1.725 1.025-.4.683-.467 1.425-.2 2.225l.35 1.125c.167.483.454.875.862 1.175.409.3.871.45 1.388.45Zm-10.3 2c-1.1 0-2.063-.363-2.887-1.088a4.198 4.198 0 0 1-1.438-2.737L2 9H1V7h6.55c.733 0 1.404.18 2.013.537A3.906 3.906 0 0 1 11 9h2.025c.35-.617.83-1.104 1.438-1.463A3.892 3.892 0 0 1 16.474 7H23v2h-1l-.525 4.175a4.198 4.198 0 0 1-1.438 2.737A4.238 4.238 0 0 1 17.15 17c-.95 0-1.804-.27-2.562-.813A4.234 4.234 0 0 1 13 14.026l-.375-1.125a21.35 21.35 0 0 1-.1-.363 4.926 4.926 0 0 1-.1-.537h-.85c-.033.2-.067.363-.1.488a21.35 21.35 0 0 1-.1.362L11 14a4.3 4.3 0 0 1-1.588 2.175A4.258 4.258 0 0 1 6.85 17Z" fill="currentColor"/></svg>',
412
+ ruler: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m8.8 10.95 2.15-2.175-1.4-1.425-1.1 1.1-1.4-1.4 1.075-1.1L7 4.825 4.825 7 8.8 10.95Zm8.2 8.225L19.175 17l-1.125-1.125-1.1 1.075-1.4-1.4 1.075-1.1-1.425-1.4-2.15 2.15L17 19.175ZM7.25 21H3v-4.25l4.375-4.375L2 7l5-5 5.4 5.4 3.775-3.8c.2-.2.425-.35.675-.45a2.068 2.068 0 0 1 1.55 0c.25.1.475.25.675.45L20.4 4.95c.2.2.35.425.45.675.1.25.15.508.15.775a1.975 1.975 0 0 1-.6 1.425l-3.775 3.8L22 17l-5 5-5.375-5.375L7.25 21ZM5 19h1.4l9.8-9.775L14.775 7.8 5 17.6V19Z" fill="currentColor"/></svg>'
413
+ };
414
+
415
+ return iconMap[iconName] || null;
416
+ }
417
+
418
+ function syncRenderedToolsState() {
419
+ const nextActiveState = {};
420
+
421
+ for (const renderedTool of $.get(renderedTools)) {
422
+ renderedTool.sync?.();
423
+
424
+ if (renderedTool.button) {
425
+ nextActiveState[renderedTool.toolId] = renderedTool.button.active ?? false;
426
+ }
427
+ }
428
+
429
+ $.set(activeToolState, nextActiveState, true);
430
+ }
431
+
432
+ $.user_effect(() => {
433
+ const unsubs = [];
434
+
435
+ syncRenderedToolsState();
436
+
437
+ for (const renderedTool of $.get(renderedTools)) {
438
+ if (renderedTool.subscribeActive) {
439
+ const unsubscribe = renderedTool.subscribeActive((active) => {
440
+ $.set(activeToolState, { ...$.get(activeToolState), [renderedTool.toolId]: active }, true);
441
+ renderedTool.sync?.();
442
+ });
443
+
444
+ unsubs.push(unsubscribe);
445
+ }
446
+ }
447
+
448
+ return () => {
449
+ unsubs.forEach((unsub) => unsub());
450
+ };
451
+ });
452
+
453
+ $.user_effect(() => {
454
+ if (!$.get(toolbarContext).subscribeVisibility) return;
455
+
456
+ return $.get(toolbarContext).subscribeVisibility(() => {
457
+ syncRenderedToolsState();
458
+ });
459
+ });
460
+
461
+ function mountElement(node, element) {
462
+ let mountedElement = null;
463
+
464
+ const updateMountedElement = (nextElement) => {
465
+ if (mountedElement === nextElement) return;
466
+
467
+ if (mountedElement && mountedElement.parentNode === node) {
468
+ node.removeChild(mountedElement);
469
+ }
470
+
471
+ mountedElement = nextElement;
472
+
473
+ if (mountedElement) {
474
+ if (mountedElement.parentNode && mountedElement.parentNode !== node) {
475
+ mountedElement.parentNode.removeChild(mountedElement);
476
+ }
477
+
478
+ node.appendChild(mountedElement);
479
+ }
480
+ };
481
+
482
+ updateMountedElement(element);
483
+
484
+ return {
485
+ update(nextElement) {
486
+ updateMountedElement(nextElement);
487
+ },
488
+
489
+ destroy() {
490
+ updateMountedElement(null);
491
+ }
492
+ };
493
+ }
494
+
495
+ var $$exports = {
496
+ get level() {
497
+ return level();
498
+ },
499
+
500
+ set level($$value) {
501
+ level($$value);
502
+ $.flush();
503
+ },
504
+
505
+ get scopeId() {
506
+ return scopeId();
507
+ },
508
+
509
+ set scopeId($$value) {
510
+ scopeId($$value);
511
+ $.flush();
512
+ },
513
+
514
+ get itemId() {
515
+ return itemId();
516
+ },
517
+
518
+ set itemId($$value) {
519
+ itemId($$value);
520
+ $.flush();
521
+ },
522
+
523
+ get sectionId() {
524
+ return sectionId();
525
+ },
526
+
527
+ set sectionId($$value) {
528
+ sectionId($$value);
529
+ $.flush();
530
+ },
531
+
532
+ get catalogId() {
533
+ return catalogId();
534
+ },
535
+
536
+ set catalogId($$value) {
537
+ catalogId($$value);
538
+ $.flush();
539
+ },
540
+
541
+ get tools() {
542
+ return tools();
543
+ },
544
+
545
+ set tools($$value) {
546
+ tools($$value);
547
+ $.flush();
548
+ },
549
+
550
+ get contentKind() {
551
+ return contentKind();
552
+ },
553
+
554
+ set contentKind($$value) {
555
+ contentKind($$value);
556
+ $.flush();
557
+ },
558
+
559
+ get position() {
560
+ return position();
561
+ },
562
+
563
+ set position($$value) {
564
+ position($$value);
565
+ $.flush();
566
+ },
567
+
568
+ get scopeElement() {
569
+ return scopeElement();
570
+ },
571
+
572
+ set scopeElement($$value) {
573
+ scopeElement($$value);
574
+ $.flush();
575
+ },
576
+
577
+ get toolRegistry() {
578
+ return toolRegistry();
579
+ },
580
+
581
+ set toolRegistry($$value) {
582
+ toolRegistry($$value);
583
+ $.flush();
584
+ },
585
+
586
+ get pnpResolver() {
587
+ return pnpResolver();
588
+ },
589
+
590
+ set pnpResolver($$value) {
591
+ pnpResolver($$value);
592
+ $.flush();
593
+ },
594
+
595
+ get assessment() {
596
+ return assessment();
597
+ },
598
+
599
+ set assessment($$value) {
600
+ assessment($$value);
601
+ $.flush();
602
+ },
603
+
604
+ get itemRef() {
605
+ return itemRef();
606
+ },
607
+
608
+ set itemRef($$value) {
609
+ itemRef($$value);
610
+ $.flush();
611
+ },
612
+
613
+ get item() {
614
+ return item();
615
+ },
616
+
617
+ set item($$value) {
618
+ item($$value);
619
+ $.flush();
620
+ },
621
+
622
+ get hostButtons() {
623
+ return hostButtons();
624
+ },
625
+
626
+ set hostButtons($$value) {
627
+ hostButtons($$value);
628
+ $.flush();
629
+ },
630
+
631
+ get class() {
632
+ return className();
633
+ },
634
+
635
+ set class($$value) {
636
+ className($$value);
637
+ $.flush();
638
+ },
639
+
640
+ get size() {
641
+ return size();
642
+ },
643
+
644
+ set size($$value) {
645
+ size($$value);
646
+ $.flush();
647
+ },
648
+
649
+ get language() {
650
+ return language();
651
+ },
652
+
653
+ set language($$value) {
654
+ language($$value);
655
+ $.flush();
656
+ }
657
+ };
658
+
659
+ var fragment = $.comment();
660
+ var node_1 = $.first_child(fragment);
661
+
662
+ {
663
+ var consequent_9 = ($$anchor) => {
664
+ var div = root_1();
665
+ let classes;
666
+ var node_2 = $.child(div);
667
+
668
+ $.each(node_2, 17, () => $.get(mountedElementsBeforeButtons), (mountedElement) => `before-${mountedElement.tagName}-${mountedElement.getAttribute('tool-id') || ''}`, ($$anchor, mountedElement) => {
669
+ var span = root_2();
670
+
671
+ $.action(span, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(mountedElement));
672
+ $.append($$anchor, span);
673
+ });
674
+
675
+ var node_3 = $.sibling(node_2, 2);
676
+
677
+ $.each(node_3, 17, () => $.get(toolbarItems), (item) => item.id, ($$anchor, item, $$index_1, $$array) => {
678
+ var fragment_1 = $.comment();
679
+ var node_4 = $.first_child(fragment_1);
680
+
681
+ {
682
+ var consequent_4 = ($$anchor) => {
683
+ var a = root_4();
684
+ let classes_1;
685
+ var node_5 = $.child(a);
686
+
687
+ {
688
+ var consequent_3 = ($$anchor) => {
689
+ var fragment_2 = $.comment();
690
+ var node_6 = $.first_child(fragment_2);
691
+
692
+ {
693
+ var consequent = ($$anchor) => {
694
+ var fragment_3 = $.comment();
695
+ var node_7 = $.first_child(fragment_3);
696
+
697
+ $.html(node_7, () => $.get(item).icon);
698
+ $.append($$anchor, fragment_3);
699
+ };
700
+
701
+ var d = $.derived(() => isInlineSvgIcon($.get(item).icon));
702
+
703
+ var consequent_1 = ($$anchor) => {
704
+ var img = root_7();
705
+
706
+ $.template_effect(() => $.set_attribute(img, 'src', $.get(item).icon));
707
+ $.append($$anchor, img);
708
+ };
709
+
710
+ var d_1 = $.derived(() => isExternalIconUrl($.get(item).icon));
711
+
712
+ var alternate_1 = ($$anchor) => {
713
+ const fallbackIcon = $.derived(() => getFallbackIconSvg($.get(item).icon));
714
+ var fragment_4 = $.comment();
715
+ var node_8 = $.first_child(fragment_4);
716
+
717
+ {
718
+ var consequent_2 = ($$anchor) => {
719
+ var fragment_5 = $.comment();
720
+ var node_9 = $.first_child(fragment_5);
721
+
722
+ $.html(node_9, () => $.get(fallbackIcon));
723
+ $.append($$anchor, fragment_5);
724
+ };
725
+
726
+ var alternate = ($$anchor) => {
727
+ var i = root_10();
728
+
729
+ $.template_effect(() => $.set_class(i, 1, `icon icon-${$.get(item).icon}`, 'svelte-rnx3ie'));
730
+ $.append($$anchor, i);
731
+ };
732
+
733
+ $.if(node_8, ($$render) => {
734
+ if ($.get(fallbackIcon)) $$render(consequent_2); else $$render(alternate, false);
735
+ });
736
+ }
737
+
738
+ $.append($$anchor, fragment_4);
739
+ };
740
+
741
+ $.if(node_6, ($$render) => {
742
+ if ($.get(d)) $$render(consequent); else if ($.get(d_1)) $$render(consequent_1, 1); else $$render(alternate_1, false);
743
+ });
744
+ }
745
+
746
+ $.append($$anchor, fragment_2);
747
+ };
748
+
749
+ $.if(node_5, ($$render) => {
750
+ if ($.get(item).icon) $$render(consequent_3);
751
+ });
752
+ }
753
+
754
+ $.reset(a);
755
+
756
+ $.template_effect(
757
+ ($0) => {
758
+ classes_1 = $.set_class(a, 1, 'item-toolbar__button svelte-rnx3ie', null, classes_1, $0);
759
+ $.set_attribute(a, 'href', $.get(item).disabled ? undefined : $.get(item).href);
760
+ $.set_attribute(a, 'target', $.get(item).target);
761
+ $.set_attribute(a, 'rel', $.get(item).rel);
762
+ $.set_attribute(a, 'aria-label', $.get(item).ariaLabel || $.get(item).label);
763
+ $.set_attribute(a, 'title', $.get(item).tooltip || $.get(item).label);
764
+ $.set_attribute(a, 'aria-disabled', $.get(item).disabled ? 'true' : undefined);
765
+ },
766
+ [
767
+ () => ({
768
+ 'item-toolbar__button--active': isToolbarItemActive($.get(item))
769
+ })
770
+ ]
771
+ );
772
+
773
+ $.delegated('click', a, (event) => {
774
+ if ($.get(item).disabled) {
775
+ event.preventDefault();
776
+ }
777
+ });
778
+
779
+ $.append($$anchor, a);
780
+ };
781
+
782
+ var d_2 = $.derived(() => isToolbarLinkItem($.get(item)));
783
+
784
+ var alternate_4 = ($$anchor) => {
785
+ var button_1 = root_11();
786
+ let classes_2;
787
+ var node_10 = $.child(button_1);
788
+
789
+ {
790
+ var consequent_8 = ($$anchor) => {
791
+ var fragment_6 = $.comment();
792
+ var node_11 = $.first_child(fragment_6);
793
+
794
+ {
795
+ var consequent_5 = ($$anchor) => {
796
+ var fragment_7 = $.comment();
797
+ var node_12 = $.first_child(fragment_7);
798
+
799
+ $.html(node_12, () => $.get(item).icon);
800
+ $.append($$anchor, fragment_7);
801
+ };
802
+
803
+ var d_3 = $.derived(() => isInlineSvgIcon($.get(item).icon));
804
+
805
+ var consequent_6 = ($$anchor) => {
806
+ var img_1 = root_14();
807
+
808
+ $.template_effect(() => $.set_attribute(img_1, 'src', $.get(item).icon));
809
+ $.append($$anchor, img_1);
810
+ };
811
+
812
+ var d_4 = $.derived(() => isExternalIconUrl($.get(item).icon));
813
+
814
+ var alternate_3 = ($$anchor) => {
815
+ const fallbackIcon = $.derived(() => getFallbackIconSvg($.get(item).icon));
816
+ var fragment_8 = $.comment();
817
+ var node_13 = $.first_child(fragment_8);
818
+
819
+ {
820
+ var consequent_7 = ($$anchor) => {
821
+ var fragment_9 = $.comment();
822
+ var node_14 = $.first_child(fragment_9);
823
+
824
+ $.html(node_14, () => $.get(fallbackIcon));
825
+ $.append($$anchor, fragment_9);
826
+ };
827
+
828
+ var alternate_2 = ($$anchor) => {
829
+ var i_1 = root_17();
830
+
831
+ $.template_effect(() => $.set_class(i_1, 1, `icon icon-${$.get(item).icon}`, 'svelte-rnx3ie'));
832
+ $.append($$anchor, i_1);
833
+ };
834
+
835
+ $.if(node_13, ($$render) => {
836
+ if ($.get(fallbackIcon)) $$render(consequent_7); else $$render(alternate_2, false);
837
+ });
838
+ }
839
+
840
+ $.append($$anchor, fragment_8);
841
+ };
842
+
843
+ $.if(node_11, ($$render) => {
844
+ if ($.get(d_3)) $$render(consequent_5); else if ($.get(d_4)) $$render(consequent_6, 1); else $$render(alternate_3, false);
845
+ });
846
+ }
847
+
848
+ $.append($$anchor, fragment_6);
849
+ };
850
+
851
+ $.if(node_10, ($$render) => {
852
+ if ($.get(item).icon) $$render(consequent_8);
853
+ });
854
+ }
855
+
856
+ $.reset(button_1);
857
+
858
+ $.template_effect(
859
+ ($0, $1) => {
860
+ classes_2 = $.set_class(button_1, 1, 'item-toolbar__button svelte-rnx3ie', null, classes_2, $0);
861
+ $.set_attribute(button_1, 'aria-label', $.get(item).ariaLabel || $.get(item).label);
862
+ $.set_attribute(button_1, 'aria-pressed', $1);
863
+ $.set_attribute(button_1, 'title', $.get(item).tooltip || $.get(item).label);
864
+ button_1.disabled = $.get(item).disabled;
865
+ },
866
+ [
867
+ () => ({
868
+ 'item-toolbar__button--active': isToolbarItemActive($.get(item))
869
+ }),
870
+ () => isToolbarItemActive($.get(item))
871
+ ]
872
+ );
873
+
874
+ $.delegated('click', button_1, function (...$$args) {
875
+ $.get(item).onClick?.apply(this, $$args);
876
+ });
877
+
878
+ $.append($$anchor, button_1);
879
+ };
880
+
881
+ $.if(node_4, ($$render) => {
882
+ if ($.get(d_2)) $$render(consequent_4); else $$render(alternate_4, false);
883
+ });
884
+ }
885
+
886
+ $.append($$anchor, fragment_1);
887
+ });
888
+
889
+ var node_15 = $.sibling(node_3, 2);
890
+
891
+ $.each(node_15, 17, () => $.get(mountedElementsAfterButtons), (mountedElement) => `after-${mountedElement.tagName}-${mountedElement.getAttribute('tool-id') || ''}`, ($$anchor, mountedElement) => {
892
+ var span_1 = root_18();
893
+
894
+ $.action(span_1, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(mountedElement));
895
+ $.append($$anchor, span_1);
896
+ });
897
+
898
+ $.reset(div);
899
+ $.bind_this(div, ($$value) => $.set(toolbarRootElement, $$value), () => $.get(toolbarRootElement));
900
+
901
+ $.template_effect(() => {
902
+ classes = $.set_class(div, 1, `item-toolbar ${className() ?? ''} item-toolbar--${size() ?? ''}`, 'svelte-rnx3ie', classes, {
903
+ 'item-toolbar--top': position() === 'top',
904
+ 'item-toolbar--right': position() === 'right',
905
+ 'item-toolbar--bottom': position() === 'bottom',
906
+ 'item-toolbar--left': position() === 'left'
907
+ });
908
+
909
+ $.set_attribute(div, 'data-content-kind', $.get(effectiveContentKind));
910
+ $.set_attribute(div, 'data-level', $.get(effectiveLevel));
911
+ });
912
+
913
+ $.append($$anchor, div);
914
+ };
915
+
916
+ $.if(node_1, ($$render) => {
917
+ if (isBrowser) $$render(consequent_9);
918
+ });
919
+ }
920
+
921
+ $.append($$anchor, fragment);
922
+
923
+ return $.pop($$exports);
924
+ }
925
+
926
+ $.delegate(['click']);
927
+
928
+ customElements.define('pie-item-toolbar', $.create_custom_element(
929
+ ItemToolBar,
930
+ {
931
+ level: { attribute: 'level', type: 'String' },
932
+ scopeId: { attribute: 'scope-id', type: 'String' },
933
+ itemId: { attribute: 'item-id', type: 'String' },
934
+ sectionId: { attribute: 'section-id', type: 'String' },
935
+ catalogId: { attribute: 'catalog-id', type: 'String' },
936
+ tools: { attribute: 'tools', type: 'String' },
937
+ contentKind: { attribute: 'content-kind', type: 'String' },
938
+ position: { attribute: 'position', type: 'String' },
939
+ size: { attribute: 'size', type: 'String' },
940
+ language: { attribute: 'language', type: 'String' },
941
+ scopeElement: { type: 'Object' },
942
+ toolRegistry: { type: 'Object' },
943
+ pnpResolver: { type: 'Object' },
944
+ assessment: { type: 'Object' },
945
+ itemRef: { type: 'Object' },
946
+ item: { type: 'Object' },
947
+ hostButtons: { type: 'Object' },
948
+ class: {}
949
+ },
950
+ [],
951
+ [],
952
+ { mode: 'open' }
953
+ ));