@pie-players/pie-assessment-toolkit 0.2.9 → 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 (96) hide show
  1. package/dist/components/ItemToolBar.custom-element.js +413 -88
  2. package/dist/components/PieAssessmentToolkit.custom-element.js +128 -41
  3. package/dist/components/SectionToolBar.custom-element.js +162 -0
  4. package/dist/components/section-toolbar-element.d.ts +3 -0
  5. package/dist/components/section-toolbar-element.d.ts.map +1 -0
  6. package/dist/components/section-toolbar-element.js +2 -0
  7. package/dist/components/section-toolbar-element.js.map +1 -0
  8. package/dist/context/assessment-toolkit-context.d.ts +1 -1
  9. package/dist/context/assessment-toolkit-context.d.ts.map +1 -1
  10. package/dist/index.d.ts +4 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/runtime/SectionRuntimeEngine.d.ts +1 -1
  15. package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -1
  16. package/dist/services/HighlightCoordinator.d.ts +9 -0
  17. package/dist/services/HighlightCoordinator.d.ts.map +1 -1
  18. package/dist/services/HighlightCoordinator.js +196 -55
  19. package/dist/services/HighlightCoordinator.js.map +1 -1
  20. package/dist/services/TTSService.d.ts +18 -0
  21. package/dist/services/TTSService.d.ts.map +1 -1
  22. package/dist/services/TTSService.js +343 -105
  23. package/dist/services/TTSService.js.map +1 -1
  24. package/dist/services/ToolRegistry.d.ts +14 -2
  25. package/dist/services/ToolRegistry.d.ts.map +1 -1
  26. package/dist/services/ToolRegistry.js +2 -1
  27. package/dist/services/ToolRegistry.js.map +1 -1
  28. package/dist/services/ToolkitCoordinator.d.ts +21 -1
  29. package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
  30. package/dist/services/ToolkitCoordinator.js +106 -2
  31. package/dist/services/ToolkitCoordinator.js.map +1 -1
  32. package/dist/services/createDefaultToolRegistry.d.ts +5 -11
  33. package/dist/services/createDefaultToolRegistry.d.ts.map +1 -1
  34. package/dist/services/createDefaultToolRegistry.js +5 -48
  35. package/dist/services/createDefaultToolRegistry.js.map +1 -1
  36. package/dist/services/interfaces.d.ts +1 -1
  37. package/dist/services/interfaces.d.ts.map +1 -1
  38. package/dist/services/pnp-standard-features.d.ts +1 -1
  39. package/dist/services/section-controller-types.d.ts +5 -0
  40. package/dist/services/section-controller-types.d.ts.map +1 -1
  41. package/dist/services/tool-config-defaults.d.ts +14 -0
  42. package/dist/services/tool-config-defaults.d.ts.map +1 -0
  43. package/dist/services/tool-config-defaults.js +23 -0
  44. package/dist/services/tool-config-defaults.js.map +1 -0
  45. package/dist/services/tool-context.d.ts.map +1 -1
  46. package/dist/services/tool-context.js +50 -3
  47. package/dist/services/tool-context.js.map +1 -1
  48. package/dist/services/tool-instance-id.d.ts +1 -3
  49. package/dist/services/tool-instance-id.d.ts.map +1 -1
  50. package/dist/services/tool-instance-id.js +4 -10
  51. package/dist/services/tool-instance-id.js.map +1 -1
  52. package/dist/services/toolbar-items.d.ts +26 -0
  53. package/dist/services/toolbar-items.d.ts.map +1 -0
  54. package/dist/services/toolbar-items.js +10 -0
  55. package/dist/services/toolbar-items.js.map +1 -0
  56. package/dist/services/tools-config-normalizer.d.ts.map +1 -1
  57. package/dist/services/tools-config-normalizer.js +5 -6
  58. package/dist/services/tools-config-normalizer.js.map +1 -1
  59. package/dist/services/tts/browser-provider.d.ts.map +1 -1
  60. package/dist/services/tts/browser-provider.js +201 -34
  61. package/dist/services/tts/browser-provider.js.map +1 -1
  62. package/dist/services/tts/text-processing.d.ts +17 -0
  63. package/dist/services/tts/text-processing.d.ts.map +1 -0
  64. package/dist/services/tts/text-processing.js +144 -0
  65. package/dist/services/tts/text-processing.js.map +1 -0
  66. package/dist/tools/default-tool-module-loaders.d.ts.map +1 -1
  67. package/dist/tools/default-tool-module-loaders.js +1 -7
  68. package/dist/tools/default-tool-module-loaders.js.map +1 -1
  69. package/dist/tools/registrations/accessibility-tools.d.ts +7 -2
  70. package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
  71. package/dist/tools/registrations/accessibility-tools.js +21 -15
  72. package/dist/tools/registrations/accessibility-tools.js.map +1 -1
  73. package/dist/tools/registrations/calculator.d.ts.map +1 -1
  74. package/dist/tools/registrations/calculator.js +18 -10
  75. package/dist/tools/registrations/calculator.js.map +1 -1
  76. package/dist/tools/registrations/interaction-tools.js +4 -4
  77. package/dist/tools/registrations/interaction-tools.js.map +1 -1
  78. package/dist/tools/registrations/measurement-tools.js +4 -4
  79. package/dist/tools/registrations/measurement-tools.js.map +1 -1
  80. package/dist/tools/registrations/subject-specific-tools.js +4 -4
  81. package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
  82. package/dist/tools/registrations/tts.d.ts.map +1 -1
  83. package/dist/tools/registrations/tts.js +161 -17
  84. package/dist/tools/registrations/tts.js.map +1 -1
  85. package/dist/tools/tool-tag-map.d.ts.map +1 -1
  86. package/dist/tools/tool-tag-map.js +2 -1
  87. package/dist/tools/tool-tag-map.js.map +1 -1
  88. package/package.json +11 -7
  89. package/src/components/ItemToolBar.svelte +254 -42
  90. package/src/components/PieAssessmentToolkit.svelte +139 -46
  91. package/src/components/SectionToolBar.svelte +58 -0
  92. package/dist/services/tts/provider-interface.d.ts +0 -131
  93. package/dist/services/tts/provider-interface.d.ts.map +0 -1
  94. package/dist/services/tts/provider-interface.js +0 -10
  95. package/dist/services/tts/provider-interface.js.map +0 -1
  96. package/src/components/PNPProvenanceViewer.svelte +0 -270
@@ -7,22 +7,25 @@ import {
7
7
  connectAssessmentToolkitShellContext
8
8
  } from '../context/runtime-context-consumer.js';
9
9
 
10
+ import { isExternalIconUrl, isInlineSvgIcon, isToolbarLinkItem } from '../services/toolbar-items.js';
10
11
  import { createDefaultToolRegistry } from '../services/createDefaultToolRegistry.js';
11
12
  import { DEFAULT_TOOL_MODULE_LOADERS } from '../tools/default-tool-module-loaders.js';
12
13
  import { normalizeToolsConfig, parseToolList, resolveToolsForLevel } from '../services/tools-config-normalizer.js';
13
14
  import { createScopedToolId, parseScopedToolId } from '../services/tool-instance-id.js';
14
15
 
15
- var root_3 = $.from_html(`<span class="item-toolbar__element-host svelte-rnx3ie"></span>`);
16
- var root_6 = $.from_html(`<img class="item-toolbar__icon-image svelte-rnx3ie" alt=""/>`);
17
- var root_7 = $.from_html(`<i aria-hidden="true"></i>`);
18
- var root_4 = $.from_html(`<button type="button"><!></button>`);
19
- var root_8 = $.from_html(`<span class="item-toolbar__element-host svelte-rnx3ie"></span>`);
20
- var root_2 = $.from_html(`<!> <!> <!>`, 1);
21
- var root_1 = $.from_html(`<div></div>`);
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>`);
22
25
 
23
26
  const $$css = {
24
27
  hash: 'svelte-rnx3ie',
25
- code: '.item-toolbar.svelte-rnx3ie {display:flex;align-items:center;gap:0.5rem;}.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;}.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;}'
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;}'
26
29
  };
27
30
 
28
31
  export default function ItemToolBar($$anchor, $$props) {
@@ -34,16 +37,21 @@ export default function ItemToolBar($$anchor, $$props) {
34
37
  let activeToolState = $.state($.proxy({}));
35
38
 
36
39
  // Props
37
- let itemId = $.prop($$props, 'itemId', 7, ''),
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, ''),
38
44
  catalogId = $.prop($$props, 'catalogId', 7, ''),
39
45
  tools = $.prop($$props, 'tools', 7, 'calculator,textToSpeech,answerEliminator'),
40
46
  contentKind = $.prop($$props, 'contentKind', 7, 'assessment-item'),
47
+ position = $.prop($$props, 'position', 7, 'bottom'),
41
48
  scopeElement = $.prop($$props, 'scopeElement', 7, null),
42
49
  toolRegistry = $.prop($$props, 'toolRegistry', 7, null),
43
50
  pnpResolver = $.prop($$props, 'pnpResolver', 7, null),
44
51
  assessment = $.prop($$props, 'assessment', 7, null),
45
52
  itemRef = $.prop($$props, 'itemRef', 7, null),
46
53
  item = $.prop($$props, 'item', 7, null),
54
+ hostButtons = $.prop($$props, 'hostButtons', 23, () => []),
47
55
  className = $.prop($$props, 'class', 7, ''),
48
56
  size = $.prop($$props, 'size', 7, 'md'),
49
57
  language = $.prop($$props, 'language', 7, 'en-US');
@@ -73,11 +81,27 @@ export default function ItemToolBar($$anchor, $$props) {
73
81
  const effectiveTTSService = $.derived(() => $.get(runtimeContext)?.ttsService);
74
82
  const effectiveElementToolStateStore = $.derived(() => $.get(runtimeContext)?.elementToolStateStore);
75
83
  const effectiveAssessmentId = $.derived(() => $.get(runtimeContext)?.assessmentId ?? '');
76
- const effectiveSectionId = $.derived(() => $.get(runtimeContext)?.sectionId ?? '');
77
84
  const effectiveItemId = $.derived(() => itemId() || $.get(shellContext)?.itemId || '');
78
85
  const effectiveCanonicalItemId = $.derived(() => $.get(shellContext)?.canonicalItemId || $.get(effectiveItemId));
79
- const effectiveCatalogId = $.derived(() => catalogId() || $.get(effectiveItemId));
80
- const effectiveContentKind = $.derived(() => contentKind() || $.get(shellContext)?.contentKind || 'assessment-item');
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));
81
105
  const effectiveItem = $.derived(() => item() || $.get(shellContext)?.item || null);
82
106
 
83
107
  // Effective registry for visibility and metadata ownership.
@@ -92,7 +116,12 @@ export default function ItemToolBar($$anchor, $$props) {
92
116
  return normalizeToolsConfig(coordinatorConfig || {});
93
117
  });
94
118
 
95
- const placementLevel = $.derived(() => $.get(effectiveContentKind) === 'rubric-block-stimulus' ? 'passage' : 'item');
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
+ });
96
125
 
97
126
  const placementAllowedToolIds = $.derived(() => {
98
127
  const resolved = resolveToolsForLevel($.get(effectiveToolsConfig), $.get(placementLevel));
@@ -118,16 +147,39 @@ export default function ItemToolBar($$anchor, $$props) {
118
147
  });
119
148
 
120
149
  const contentReady = $.derived(() => {
150
+ if ($.get(effectiveLevel) === 'section' || $.get(effectiveLevel) === 'assessment') return true;
151
+
121
152
  const config = $.get(effectiveItem)?.config;
122
153
 
123
154
  return !!($.get(effectiveItem) && config && typeof config === 'object');
124
155
  });
125
156
 
126
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
+
127
170
  if (!$.get(contentReady) || !$.get(effectiveItem)) {
128
171
  return null;
129
172
  }
130
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
+
131
183
  return {
132
184
  level: 'item',
133
185
  assessment: assessment() || {},
@@ -148,6 +200,7 @@ export default function ItemToolBar($$anchor, $$props) {
148
200
  });
149
201
 
150
202
  const elementContexts = $.derived(() => {
203
+ if ($.get(effectiveLevel) !== 'item' && $.get(effectiveLevel) !== 'passage') return [];
151
204
  if (!$.get(contentReady) || !$.get(effectiveItem)) return [];
152
205
 
153
206
  const modelsRaw = $.get(effectiveItem)?.config?.models;
@@ -167,23 +220,37 @@ export default function ItemToolBar($$anchor, $$props) {
167
220
 
168
221
  // Pass 2: tool-owned context filtering (item + element aggregation)
169
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
+
170
237
  if (!$.get(contentReady)) {
171
238
  // Stage 1: orchestrator-level allow-list only.
172
- return $.get(allowedToolIds);
239
+ return levelCompatibleToolIds;
173
240
  }
174
241
 
175
242
  if (!$.get(toolContext) && $.get(elementContexts).length === 0) {
176
- return $.get(allowedToolIds);
243
+ return levelCompatibleToolIds;
177
244
  }
178
245
 
179
246
  const visible = new Set();
180
247
 
181
248
  if ($.get(toolContext)) {
182
- $.get(effectiveToolRegistry).filterVisibleInContext($.get(allowedToolIds), $.get(toolContext)).forEach((tool) => visible.add(tool.toolId));
249
+ $.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, $.get(toolContext)).forEach((tool) => visible.add(tool.toolId));
183
250
  }
184
251
 
185
252
  for (const context of $.get(elementContexts)) {
186
- $.get(effectiveToolRegistry).filterVisibleInContext($.get(allowedToolIds), context).forEach((tool) => visible.add(tool.toolId));
253
+ $.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, context).forEach((tool) => visible.add(tool.toolId));
187
254
  }
188
255
 
189
256
  return Array.from(visible);
@@ -227,11 +294,20 @@ export default function ItemToolBar($$anchor, $$props) {
227
294
  // This keeps toolbar contracts stable across mixed registration implementations.
228
295
  return parseScopedToolId(toolId)
229
296
  ? toolId
230
- : createScopedToolId(toolId, 'item', $.get(effectiveCanonicalItemId));
297
+ : createScopedToolId(toolId, $.get(effectiveLevel), $.get(effectiveScopeId));
231
298
  };
232
299
 
233
300
  return {
234
- itemId: $.get(effectiveCanonicalItemId),
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),
235
311
  catalogId: $.get(effectiveCatalogId),
236
312
  language: language(),
237
313
  ui: { size: size() },
@@ -244,7 +320,15 @@ export default function ItemToolBar($$anchor, $$props) {
244
320
  toggleTool: (toolId) => {
245
321
  if (!$.get(effectiveToolCoordinator)) return;
246
322
 
247
- $.get(effectiveToolCoordinator).toggleTool(toInstanceToolId(toolId));
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);
248
332
  },
249
333
 
250
334
  isToolVisible: (toolId) => {
@@ -278,6 +362,59 @@ export default function ItemToolBar($$anchor, $$props) {
278
362
  return rendered;
279
363
  });
280
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
+
281
418
  function syncRenderedToolsState() {
282
419
  const nextActiveState = {};
283
420
 
@@ -356,6 +493,24 @@ export default function ItemToolBar($$anchor, $$props) {
356
493
  }
357
494
 
358
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
+
359
514
  get itemId() {
360
515
  return itemId();
361
516
  },
@@ -365,6 +520,15 @@ export default function ItemToolBar($$anchor, $$props) {
365
520
  $.flush();
366
521
  },
367
522
 
523
+ get sectionId() {
524
+ return sectionId();
525
+ },
526
+
527
+ set sectionId($$value) {
528
+ sectionId($$value);
529
+ $.flush();
530
+ },
531
+
368
532
  get catalogId() {
369
533
  return catalogId();
370
534
  },
@@ -392,6 +556,15 @@ export default function ItemToolBar($$anchor, $$props) {
392
556
  $.flush();
393
557
  },
394
558
 
559
+ get position() {
560
+ return position();
561
+ },
562
+
563
+ set position($$value) {
564
+ position($$value);
565
+ $.flush();
566
+ },
567
+
395
568
  get scopeElement() {
396
569
  return scopeElement();
397
570
  },
@@ -446,6 +619,15 @@ export default function ItemToolBar($$anchor, $$props) {
446
619
  $.flush();
447
620
  },
448
621
 
622
+ get hostButtons() {
623
+ return hostButtons();
624
+ },
625
+
626
+ set hostButtons($$value) {
627
+ hostButtons($$value);
628
+ $.flush();
629
+ },
630
+
449
631
  get class() {
450
632
  return className();
451
633
  },
@@ -478,123 +660,261 @@ export default function ItemToolBar($$anchor, $$props) {
478
660
  var node_1 = $.first_child(fragment);
479
661
 
480
662
  {
481
- var consequent_5 = ($$anchor) => {
663
+ var consequent_9 = ($$anchor) => {
482
664
  var div = root_1();
665
+ let classes;
666
+ var node_2 = $.child(div);
483
667
 
484
- $.each(div, 21, () => $.get(renderedTools), (renderedTool) => renderedTool.toolId, ($$anchor, renderedTool) => {
485
- var fragment_1 = root_2();
486
- var node_2 = $.first_child(fragment_1);
487
-
488
- {
489
- var consequent = ($$anchor) => {
490
- var span = root_3();
668
+ $.each(node_2, 17, () => $.get(mountedElementsBeforeButtons), (mountedElement) => `before-${mountedElement.tagName}-${mountedElement.getAttribute('tool-id') || ''}`, ($$anchor, mountedElement) => {
669
+ var span = root_2();
491
670
 
492
- $.action(span, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(renderedTool).inlineElement);
493
- $.append($$anchor, span);
494
- };
671
+ $.action(span, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(mountedElement));
672
+ $.append($$anchor, span);
673
+ });
495
674
 
496
- $.if(node_2, ($$render) => {
497
- if ($.get(renderedTool).inlineElement) $$render(consequent);
498
- });
499
- }
675
+ var node_3 = $.sibling(node_2, 2);
500
676
 
501
- var node_3 = $.sibling(node_2, 2);
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);
502
680
 
503
681
  {
504
- var consequent_3 = ($$anchor) => {
505
- var button = root_4();
506
- let classes;
507
- var node_4 = $.child(button);
682
+ var consequent_4 = ($$anchor) => {
683
+ var a = root_4();
684
+ let classes_1;
685
+ var node_5 = $.child(a);
508
686
 
509
687
  {
510
- var consequent_1 = ($$anchor) => {
688
+ var consequent_3 = ($$anchor) => {
511
689
  var fragment_2 = $.comment();
512
- var node_5 = $.first_child(fragment_2);
690
+ var node_6 = $.first_child(fragment_2);
513
691
 
514
- $.html(node_5, () => $.get(renderedTool).button.icon);
515
- $.append($$anchor, fragment_2);
516
- };
692
+ {
693
+ var consequent = ($$anchor) => {
694
+ var fragment_3 = $.comment();
695
+ var node_7 = $.first_child(fragment_3);
517
696
 
518
- var d = $.derived(() => $.get(renderedTool).button.icon.startsWith('<svg'));
697
+ $.html(node_7, () => $.get(item).icon);
698
+ $.append($$anchor, fragment_3);
699
+ };
519
700
 
520
- var consequent_2 = ($$anchor) => {
521
- var img = root_6();
701
+ var d = $.derived(() => isInlineSvgIcon($.get(item).icon));
522
702
 
523
- $.template_effect(() => $.set_attribute(img, 'src', $.get(renderedTool).button.icon));
524
- $.append($$anchor, img);
525
- };
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
+ };
526
732
 
527
- var d_1 = $.derived(() => $.get(renderedTool).button.icon.startsWith('http'));
733
+ $.if(node_8, ($$render) => {
734
+ if ($.get(fallbackIcon)) $$render(consequent_2); else $$render(alternate, false);
735
+ });
736
+ }
528
737
 
529
- var alternate = ($$anchor) => {
530
- var i = root_7();
738
+ $.append($$anchor, fragment_4);
739
+ };
531
740
 
532
- $.template_effect(() => $.set_class(i, 1, `icon icon-${$.get(renderedTool).button.icon}`, 'svelte-rnx3ie'));
533
- $.append($$anchor, i);
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);
534
747
  };
535
748
 
536
- $.if(node_4, ($$render) => {
537
- if ($.get(d)) $$render(consequent_1); else if ($.get(d_1)) $$render(consequent_2, 1); else $$render(alternate, false);
749
+ $.if(node_5, ($$render) => {
750
+ if ($.get(item).icon) $$render(consequent_3);
538
751
  });
539
752
  }
540
753
 
541
- $.reset(button);
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
+ });
542
778
 
543
- $.template_effect(() => {
544
- classes = $.set_class(button, 1, `item-toolbar__button ${($.get(renderedTool).button.className || '') ?? ''}`, 'svelte-rnx3ie', classes, {
545
- 'item-toolbar__button--active': $.get(activeToolState)[$.get(renderedTool).toolId] ?? $.get(renderedTool).button.active ?? false
546
- });
779
+ $.append($$anchor, a);
780
+ };
547
781
 
548
- $.set_attribute(button, 'aria-label', $.get(renderedTool).button.ariaLabel || $.get(renderedTool).button.label);
549
- $.set_attribute(button, 'aria-pressed', $.get(activeToolState)[$.get(renderedTool).toolId] ?? $.get(renderedTool).button.active ?? false);
550
- $.set_attribute(button, 'title', $.get(renderedTool).button.tooltip || $.get(renderedTool).button.label);
551
- button.disabled = $.get(renderedTool).button.disabled;
552
- });
782
+ var d_2 = $.derived(() => isToolbarLinkItem($.get(item)));
553
783
 
554
- $.delegated('click', button, () => {
555
- $.get(renderedTool).button?.onClick();
556
- syncRenderedToolsState();
557
- });
784
+ var alternate_4 = ($$anchor) => {
785
+ var button_1 = root_11();
786
+ let classes_2;
787
+ var node_10 = $.child(button_1);
558
788
 
559
- $.append($$anchor, button);
560
- };
789
+ {
790
+ var consequent_8 = ($$anchor) => {
791
+ var fragment_6 = $.comment();
792
+ var node_11 = $.first_child(fragment_6);
561
793
 
562
- $.if(node_3, ($$render) => {
563
- if ($.get(renderedTool).button) $$render(consequent_3);
564
- });
565
- }
794
+ {
795
+ var consequent_5 = ($$anchor) => {
796
+ var fragment_7 = $.comment();
797
+ var node_12 = $.first_child(fragment_7);
566
798
 
567
- var node_6 = $.sibling(node_3, 2);
799
+ $.html(node_12, () => $.get(item).icon);
800
+ $.append($$anchor, fragment_7);
801
+ };
568
802
 
569
- {
570
- var consequent_4 = ($$anchor) => {
571
- var span_1 = root_8();
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
+ }
572
839
 
573
- $.action(span_1, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(renderedTool).overlayElement);
574
- $.append($$anchor, span_1);
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);
575
879
  };
576
880
 
577
- $.if(node_6, ($$render) => {
578
- if ($.get(renderedTool).overlayElement) $$render(consequent_4);
881
+ $.if(node_4, ($$render) => {
882
+ if ($.get(d_2)) $$render(consequent_4); else $$render(alternate_4, false);
579
883
  });
580
884
  }
581
885
 
582
886
  $.append($$anchor, fragment_1);
583
887
  });
584
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
+
585
898
  $.reset(div);
586
899
  $.bind_this(div, ($$value) => $.set(toolbarRootElement, $$value), () => $.get(toolbarRootElement));
587
900
 
588
901
  $.template_effect(() => {
589
- $.set_class(div, 1, `item-toolbar ${className() ?? ''} item-toolbar--${size() ?? ''}`, 'svelte-rnx3ie');
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
+
590
909
  $.set_attribute(div, 'data-content-kind', $.get(effectiveContentKind));
910
+ $.set_attribute(div, 'data-level', $.get(effectiveLevel));
591
911
  });
592
912
 
593
913
  $.append($$anchor, div);
594
914
  };
595
915
 
596
916
  $.if(node_1, ($$render) => {
597
- if (isBrowser) $$render(consequent_5);
917
+ if (isBrowser) $$render(consequent_9);
598
918
  });
599
919
  }
600
920
 
@@ -608,10 +928,14 @@ $.delegate(['click']);
608
928
  customElements.define('pie-item-toolbar', $.create_custom_element(
609
929
  ItemToolBar,
610
930
  {
931
+ level: { attribute: 'level', type: 'String' },
932
+ scopeId: { attribute: 'scope-id', type: 'String' },
611
933
  itemId: { attribute: 'item-id', type: 'String' },
934
+ sectionId: { attribute: 'section-id', type: 'String' },
612
935
  catalogId: { attribute: 'catalog-id', type: 'String' },
613
936
  tools: { attribute: 'tools', type: 'String' },
614
937
  contentKind: { attribute: 'content-kind', type: 'String' },
938
+ position: { attribute: 'position', type: 'String' },
615
939
  size: { attribute: 'size', type: 'String' },
616
940
  language: { attribute: 'language', type: 'String' },
617
941
  scopeElement: { type: 'Object' },
@@ -620,6 +944,7 @@ customElements.define('pie-item-toolbar', $.create_custom_element(
620
944
  assessment: { type: 'Object' },
621
945
  itemRef: { type: 'Object' },
622
946
  item: { type: 'Object' },
947
+ hostButtons: { type: 'Object' },
623
948
  class: {}
624
949
  },
625
950
  [],