@pie-players/pie-assessment-toolkit 0.2.9 → 0.2.11
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.
- package/dist/components/ItemToolBar.custom-element.js +425 -93
- package/dist/components/PieAssessmentToolkit.custom-element.js +200 -46
- package/dist/components/SectionToolBar.custom-element.js +162 -0
- package/dist/components/section-toolbar-element.d.ts +3 -0
- package/dist/components/section-toolbar-element.d.ts.map +1 -0
- package/dist/components/section-toolbar-element.js +2 -0
- package/dist/components/section-toolbar-element.js.map +1 -0
- package/dist/context/assessment-toolkit-context.d.ts +1 -1
- package/dist/context/assessment-toolkit-context.d.ts.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/SectionRuntimeEngine.d.ts +57 -1
- package/dist/runtime/SectionRuntimeEngine.d.ts.map +1 -1
- package/dist/runtime/SectionRuntimeEngine.js +23 -0
- package/dist/runtime/SectionRuntimeEngine.js.map +1 -1
- package/dist/runtime/registration-events.d.ts +19 -0
- package/dist/runtime/registration-events.d.ts.map +1 -1
- package/dist/runtime/registration-events.js +3 -0
- package/dist/runtime/registration-events.js.map +1 -1
- package/dist/runtime/runtime-event-guards.d.ts +0 -1
- package/dist/runtime/runtime-event-guards.d.ts.map +1 -1
- package/dist/runtime/runtime-event-guards.js +0 -5
- package/dist/runtime/runtime-event-guards.js.map +1 -1
- package/dist/runtime/session-event-emitter-policy.d.ts +12 -0
- package/dist/runtime/session-event-emitter-policy.d.ts.map +1 -0
- package/dist/runtime/session-event-emitter-policy.js +57 -0
- package/dist/runtime/session-event-emitter-policy.js.map +1 -0
- package/dist/services/HighlightCoordinator.d.ts +9 -0
- package/dist/services/HighlightCoordinator.d.ts.map +1 -1
- package/dist/services/HighlightCoordinator.js +196 -55
- package/dist/services/HighlightCoordinator.js.map +1 -1
- package/dist/services/TTSService.d.ts +18 -0
- package/dist/services/TTSService.d.ts.map +1 -1
- package/dist/services/TTSService.js +343 -105
- package/dist/services/TTSService.js.map +1 -1
- package/dist/services/ToolRegistry.d.ts +40 -2
- package/dist/services/ToolRegistry.d.ts.map +1 -1
- package/dist/services/ToolRegistry.js +22 -1
- package/dist/services/ToolRegistry.js.map +1 -1
- package/dist/services/ToolkitCoordinator.d.ts +34 -1
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -1
- package/dist/services/ToolkitCoordinator.js +203 -2
- package/dist/services/ToolkitCoordinator.js.map +1 -1
- package/dist/services/createDefaultToolRegistry.d.ts +5 -11
- package/dist/services/createDefaultToolRegistry.d.ts.map +1 -1
- package/dist/services/createDefaultToolRegistry.js +5 -48
- package/dist/services/createDefaultToolRegistry.js.map +1 -1
- package/dist/services/interfaces.d.ts +7 -2
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/interfaces.js.map +1 -1
- package/dist/services/pnp-standard-features.d.ts +1 -1
- package/dist/services/section-controller-types.d.ts +5 -0
- package/dist/services/section-controller-types.d.ts.map +1 -1
- package/dist/services/tool-config-defaults.d.ts +14 -0
- package/dist/services/tool-config-defaults.d.ts.map +1 -0
- package/dist/services/tool-config-defaults.js +23 -0
- package/dist/services/tool-config-defaults.js.map +1 -0
- package/dist/services/tool-context.d.ts.map +1 -1
- package/dist/services/tool-context.js +50 -3
- package/dist/services/tool-context.js.map +1 -1
- package/dist/services/tool-instance-id.d.ts +1 -3
- package/dist/services/tool-instance-id.d.ts.map +1 -1
- package/dist/services/tool-instance-id.js +4 -10
- package/dist/services/tool-instance-id.js.map +1 -1
- package/dist/services/toolbar-items.d.ts +26 -0
- package/dist/services/toolbar-items.d.ts.map +1 -0
- package/dist/services/toolbar-items.js +10 -0
- package/dist/services/toolbar-items.js.map +1 -0
- package/dist/services/tools-config-normalizer.d.ts.map +1 -1
- package/dist/services/tools-config-normalizer.js +5 -6
- package/dist/services/tools-config-normalizer.js.map +1 -1
- package/dist/services/tts/browser-provider.d.ts.map +1 -1
- package/dist/services/tts/browser-provider.js +201 -34
- package/dist/services/tts/browser-provider.js.map +1 -1
- package/dist/services/tts/text-processing.d.ts +17 -0
- package/dist/services/tts/text-processing.d.ts.map +1 -0
- package/dist/services/tts/text-processing.js +144 -0
- package/dist/services/tts/text-processing.js.map +1 -0
- package/dist/tools/default-tool-module-loaders.d.ts.map +1 -1
- package/dist/tools/default-tool-module-loaders.js +1 -7
- package/dist/tools/default-tool-module-loaders.js.map +1 -1
- package/dist/tools/registrations/accessibility-tools.d.ts +7 -2
- package/dist/tools/registrations/accessibility-tools.d.ts.map +1 -1
- package/dist/tools/registrations/accessibility-tools.js +23 -15
- package/dist/tools/registrations/accessibility-tools.js.map +1 -1
- package/dist/tools/registrations/calculator.d.ts.map +1 -1
- package/dist/tools/registrations/calculator.js +18 -10
- package/dist/tools/registrations/calculator.js.map +1 -1
- package/dist/tools/registrations/interaction-tools.d.ts.map +1 -1
- package/dist/tools/registrations/interaction-tools.js +5 -4
- package/dist/tools/registrations/interaction-tools.js.map +1 -1
- package/dist/tools/registrations/measurement-tools.js +4 -4
- package/dist/tools/registrations/measurement-tools.js.map +1 -1
- package/dist/tools/registrations/subject-specific-tools.js +4 -4
- package/dist/tools/registrations/subject-specific-tools.js.map +1 -1
- package/dist/tools/registrations/tts.d.ts.map +1 -1
- package/dist/tools/registrations/tts.js +161 -17
- package/dist/tools/registrations/tts.js.map +1 -1
- package/dist/tools/tool-tag-map.d.ts.map +1 -1
- package/dist/tools/tool-tag-map.js +2 -1
- package/dist/tools/tool-tag-map.js.map +1 -1
- package/package.json +12 -8
- package/src/components/ItemToolBar.svelte +275 -47
- package/src/components/PieAssessmentToolkit.svelte +217 -53
- package/src/components/SectionToolBar.svelte +58 -0
- package/dist/services/tts/provider-interface.d.ts +0 -131
- package/dist/services/tts/provider-interface.d.ts.map +0 -1
- package/dist/services/tts/provider-interface.js +0 -10
- package/dist/services/tts/provider-interface.js.map +0 -1
- 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
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var root_4 = $.from_html(`<
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
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
|
|
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
|
|
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(() =>
|
|
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));
|
|
@@ -100,34 +129,62 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
100
129
|
return $.get(effectiveToolRegistry).normalizeToolIds(resolved).filter(Boolean);
|
|
101
130
|
});
|
|
102
131
|
|
|
132
|
+
const providerConfig = $.derived(() => $.get(effectiveToolsConfig)?.providers || {});
|
|
133
|
+
const isProviderEnabled = (toolId) => $.get(providerConfig)[toolId]?.enabled !== false;
|
|
134
|
+
|
|
103
135
|
// Pass 1: determine allowed tools
|
|
104
136
|
const allowedToolIds = $.derived(() => {
|
|
105
137
|
const configuredTools = $.get(normalizedExplicitTools).length > 0
|
|
106
138
|
? $.get(normalizedExplicitTools)
|
|
107
139
|
: $.get(placementAllowedToolIds);
|
|
108
140
|
|
|
141
|
+
const providerEnabledConfiguredTools = configuredTools.filter((toolId) => isProviderEnabled(toolId));
|
|
142
|
+
|
|
109
143
|
if (pnpResolver() && assessment() && itemRef()) {
|
|
110
144
|
const allowedByPnp = pnpResolver().getAllowedToolIds(assessment(), itemRef());
|
|
111
145
|
|
|
112
|
-
if (
|
|
146
|
+
if (providerEnabledConfiguredTools.length === 0) return allowedByPnp;
|
|
113
147
|
|
|
114
|
-
return allowedByPnp.filter((toolId) =>
|
|
148
|
+
return allowedByPnp.filter((toolId) => providerEnabledConfiguredTools.includes(toolId));
|
|
115
149
|
}
|
|
116
150
|
|
|
117
|
-
return
|
|
151
|
+
return providerEnabledConfiguredTools;
|
|
118
152
|
});
|
|
119
153
|
|
|
120
154
|
const contentReady = $.derived(() => {
|
|
155
|
+
if ($.get(effectiveLevel) === 'section' || $.get(effectiveLevel) === 'assessment') return true;
|
|
156
|
+
|
|
121
157
|
const config = $.get(effectiveItem)?.config;
|
|
122
158
|
|
|
123
159
|
return !!($.get(effectiveItem) && config && typeof config === 'object');
|
|
124
160
|
});
|
|
125
161
|
|
|
126
162
|
const toolContext = $.derived(() => {
|
|
163
|
+
if ($.get(effectiveLevel) === 'section') {
|
|
164
|
+
return {
|
|
165
|
+
level: 'section',
|
|
166
|
+
assessment: assessment() || {},
|
|
167
|
+
section: {}
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if ($.get(effectiveLevel) === 'assessment') {
|
|
172
|
+
return { level: 'assessment', assessment: assessment() || {} };
|
|
173
|
+
}
|
|
174
|
+
|
|
127
175
|
if (!$.get(contentReady) || !$.get(effectiveItem)) {
|
|
128
176
|
return null;
|
|
129
177
|
}
|
|
130
178
|
|
|
179
|
+
if ($.get(effectiveLevel) === 'passage') {
|
|
180
|
+
return {
|
|
181
|
+
level: 'passage',
|
|
182
|
+
assessment: assessment() || {},
|
|
183
|
+
itemRef: itemRef() || { id: $.get(effectiveCanonicalItemId) },
|
|
184
|
+
passage: $.get(effectiveItem)
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
131
188
|
return {
|
|
132
189
|
level: 'item',
|
|
133
190
|
assessment: assessment() || {},
|
|
@@ -148,6 +205,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
148
205
|
});
|
|
149
206
|
|
|
150
207
|
const elementContexts = $.derived(() => {
|
|
208
|
+
if ($.get(effectiveLevel) !== 'item' && $.get(effectiveLevel) !== 'passage') return [];
|
|
151
209
|
if (!$.get(contentReady) || !$.get(effectiveItem)) return [];
|
|
152
210
|
|
|
153
211
|
const modelsRaw = $.get(effectiveItem)?.config?.models;
|
|
@@ -167,28 +225,44 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
167
225
|
|
|
168
226
|
// Pass 2: tool-owned context filtering (item + element aggregation)
|
|
169
227
|
const visibleToolIds = $.derived(() => {
|
|
228
|
+
const levelCompatibleToolIds = $.get(allowedToolIds).filter((toolId) => {
|
|
229
|
+
const registration = $.get(effectiveToolRegistry).get(toolId);
|
|
230
|
+
|
|
231
|
+
return registration
|
|
232
|
+
? registration.supportedLevels.includes($.get(effectiveLevel))
|
|
233
|
+
: false;
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
if ($.get(effectiveLevel) === 'section') {
|
|
237
|
+
// Section toolbars are orchestrator-driven. Tool-level relevance is often
|
|
238
|
+
// item-content dependent. Keep pass-1 as the source of truth here.
|
|
239
|
+
return $.get(allowedToolIds);
|
|
240
|
+
}
|
|
241
|
+
|
|
170
242
|
if (!$.get(contentReady)) {
|
|
171
243
|
// Stage 1: orchestrator-level allow-list only.
|
|
172
|
-
return
|
|
244
|
+
return levelCompatibleToolIds;
|
|
173
245
|
}
|
|
174
246
|
|
|
175
247
|
if (!$.get(toolContext) && $.get(elementContexts).length === 0) {
|
|
176
|
-
return
|
|
248
|
+
return levelCompatibleToolIds;
|
|
177
249
|
}
|
|
178
250
|
|
|
179
251
|
const visible = new Set();
|
|
180
252
|
|
|
181
253
|
if ($.get(toolContext)) {
|
|
182
|
-
$.get(effectiveToolRegistry).filterVisibleInContext(
|
|
254
|
+
$.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, $.get(toolContext)).forEach((tool) => visible.add(tool.toolId));
|
|
183
255
|
}
|
|
184
256
|
|
|
185
257
|
for (const context of $.get(elementContexts)) {
|
|
186
|
-
$.get(effectiveToolRegistry).filterVisibleInContext(
|
|
258
|
+
$.get(effectiveToolRegistry).filterVisibleInContext(levelCompatibleToolIds, context).forEach((tool) => visible.add(tool.toolId));
|
|
187
259
|
}
|
|
188
260
|
|
|
189
261
|
return Array.from(visible);
|
|
190
262
|
});
|
|
191
263
|
|
|
264
|
+
const toolbarVisibleToolIds = $.derived(() => $.get(effectiveToolRegistry).filterToolIdsByActivation($.get(visibleToolIds), 'toolbar-toggle'));
|
|
265
|
+
|
|
192
266
|
// Dynamically load whatever tools are currently visible.
|
|
193
267
|
// The registry owns module loader configuration by toolId.
|
|
194
268
|
$.user_effect(() => {
|
|
@@ -196,7 +270,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
196
270
|
|
|
197
271
|
let cancelled = false;
|
|
198
272
|
|
|
199
|
-
void $.get(effectiveToolRegistry).ensureToolModulesLoaded($.get(
|
|
273
|
+
void $.get(effectiveToolRegistry).ensureToolModulesLoaded($.get(toolbarVisibleToolIds)).then(() => {
|
|
200
274
|
if (!cancelled) $.set(moduleLoadVersion, $.get(moduleLoadVersion) + 1);
|
|
201
275
|
}).catch((error) => {
|
|
202
276
|
console.error('[ItemToolBar] Failed to load one or more tool modules:', error);
|
|
@@ -227,11 +301,20 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
227
301
|
// This keeps toolbar contracts stable across mixed registration implementations.
|
|
228
302
|
return parseScopedToolId(toolId)
|
|
229
303
|
? toolId
|
|
230
|
-
: createScopedToolId(toolId,
|
|
304
|
+
: createScopedToolId(toolId, $.get(effectiveLevel), $.get(effectiveScopeId));
|
|
231
305
|
};
|
|
232
306
|
|
|
233
307
|
return {
|
|
234
|
-
|
|
308
|
+
scope: {
|
|
309
|
+
level: $.get(effectiveLevel),
|
|
310
|
+
scopeId: $.get(effectiveScopeId),
|
|
311
|
+
assessmentId: $.get(runtimeContext)?.assessmentId,
|
|
312
|
+
sectionId: $.get(effectiveSectionId),
|
|
313
|
+
itemId: $.get(effectiveItemId),
|
|
314
|
+
canonicalItemId: $.get(effectiveCanonicalItemId),
|
|
315
|
+
contentKind: $.get(effectiveContentKind)
|
|
316
|
+
},
|
|
317
|
+
itemId: $.get(effectiveScopeId),
|
|
235
318
|
catalogId: $.get(effectiveCatalogId),
|
|
236
319
|
language: language(),
|
|
237
320
|
ui: { size: size() },
|
|
@@ -244,7 +327,15 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
244
327
|
toggleTool: (toolId) => {
|
|
245
328
|
if (!$.get(effectiveToolCoordinator)) return;
|
|
246
329
|
|
|
247
|
-
|
|
330
|
+
const instanceToolId = toInstanceToolId(toolId);
|
|
331
|
+
|
|
332
|
+
// Some tools only self-register after first visibility sync.
|
|
333
|
+
// Seed a placeholder registration so first toggle always works.
|
|
334
|
+
if (!$.get(effectiveToolCoordinator).getToolState(instanceToolId)) {
|
|
335
|
+
$.get(effectiveToolCoordinator).registerTool(instanceToolId, toolId);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
$.get(effectiveToolCoordinator).toggleTool(instanceToolId);
|
|
248
339
|
},
|
|
249
340
|
|
|
250
341
|
isToolVisible: (toolId) => {
|
|
@@ -267,7 +358,7 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
267
358
|
|
|
268
359
|
const rendered = [];
|
|
269
360
|
|
|
270
|
-
for (const toolId of $.get(
|
|
361
|
+
for (const toolId of $.get(toolbarVisibleToolIds)) {
|
|
271
362
|
const result = $.get(effectiveToolRegistry).renderForToolbar(toolId, $.get(renderContext), $.get(toolbarContext));
|
|
272
363
|
|
|
273
364
|
if (result) {
|
|
@@ -278,6 +369,59 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
278
369
|
return rendered;
|
|
279
370
|
});
|
|
280
371
|
|
|
372
|
+
const normalizedHostButtons = $.derived(() => Array.isArray(hostButtons())
|
|
373
|
+
? hostButtons().filter((item) => !!item && typeof item.id === 'string')
|
|
374
|
+
: []);
|
|
375
|
+
|
|
376
|
+
const nativeToolbarItems = $.derived(() => $.get(renderedTools).filter((renderedTool) => !!renderedTool.button).map((renderedTool) => {
|
|
377
|
+
const button = renderedTool.button;
|
|
378
|
+
|
|
379
|
+
return {
|
|
380
|
+
id: renderedTool.toolId,
|
|
381
|
+
label: button.label,
|
|
382
|
+
ariaLabel: button.ariaLabel || button.label,
|
|
383
|
+
icon: button.icon,
|
|
384
|
+
tooltip: button.tooltip || button.label,
|
|
385
|
+
disabled: button.disabled,
|
|
386
|
+
active: $.get(activeToolState)[renderedTool.toolId] ?? button.active ?? false,
|
|
387
|
+
onClick: () => {
|
|
388
|
+
button.onClick();
|
|
389
|
+
syncRenderedToolsState();
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
}));
|
|
393
|
+
|
|
394
|
+
const toolbarItems = $.derived(() => [
|
|
395
|
+
...$.get(nativeToolbarItems),
|
|
396
|
+
...$.get(normalizedHostButtons)
|
|
397
|
+
]);
|
|
398
|
+
|
|
399
|
+
const mountedElementsBeforeButtons = $.derived(() => $.get(renderedTools).flatMap((renderedTool) => (renderedTool.elements || []).filter((entry) => entry.mount === 'before-buttons').map((entry) => entry.element).filter((entry) => Boolean(entry))));
|
|
400
|
+
const mountedElementsAfterButtons = $.derived(() => $.get(renderedTools).flatMap((renderedTool) => (renderedTool.elements || []).filter((entry) => entry.mount === 'after-buttons').map((entry) => entry.element).filter((entry) => Boolean(entry))));
|
|
401
|
+
|
|
402
|
+
function isToolbarItemActive(item) {
|
|
403
|
+
if (item.id in $.get(activeToolState)) {
|
|
404
|
+
return $.get(activeToolState)[item.id] === true;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
return item.active === true;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
function getFallbackIconSvg(iconName) {
|
|
411
|
+
const iconMap = {
|
|
412
|
+
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>',
|
|
413
|
+
'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>',
|
|
414
|
+
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>',
|
|
415
|
+
'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>',
|
|
416
|
+
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>',
|
|
417
|
+
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>',
|
|
418
|
+
'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>',
|
|
419
|
+
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>'
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
return iconMap[iconName] || null;
|
|
423
|
+
}
|
|
424
|
+
|
|
281
425
|
function syncRenderedToolsState() {
|
|
282
426
|
const nextActiveState = {};
|
|
283
427
|
|
|
@@ -356,6 +500,24 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
356
500
|
}
|
|
357
501
|
|
|
358
502
|
var $$exports = {
|
|
503
|
+
get level() {
|
|
504
|
+
return level();
|
|
505
|
+
},
|
|
506
|
+
|
|
507
|
+
set level($$value) {
|
|
508
|
+
level($$value);
|
|
509
|
+
$.flush();
|
|
510
|
+
},
|
|
511
|
+
|
|
512
|
+
get scopeId() {
|
|
513
|
+
return scopeId();
|
|
514
|
+
},
|
|
515
|
+
|
|
516
|
+
set scopeId($$value) {
|
|
517
|
+
scopeId($$value);
|
|
518
|
+
$.flush();
|
|
519
|
+
},
|
|
520
|
+
|
|
359
521
|
get itemId() {
|
|
360
522
|
return itemId();
|
|
361
523
|
},
|
|
@@ -365,6 +527,15 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
365
527
|
$.flush();
|
|
366
528
|
},
|
|
367
529
|
|
|
530
|
+
get sectionId() {
|
|
531
|
+
return sectionId();
|
|
532
|
+
},
|
|
533
|
+
|
|
534
|
+
set sectionId($$value) {
|
|
535
|
+
sectionId($$value);
|
|
536
|
+
$.flush();
|
|
537
|
+
},
|
|
538
|
+
|
|
368
539
|
get catalogId() {
|
|
369
540
|
return catalogId();
|
|
370
541
|
},
|
|
@@ -392,6 +563,15 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
392
563
|
$.flush();
|
|
393
564
|
},
|
|
394
565
|
|
|
566
|
+
get position() {
|
|
567
|
+
return position();
|
|
568
|
+
},
|
|
569
|
+
|
|
570
|
+
set position($$value) {
|
|
571
|
+
position($$value);
|
|
572
|
+
$.flush();
|
|
573
|
+
},
|
|
574
|
+
|
|
395
575
|
get scopeElement() {
|
|
396
576
|
return scopeElement();
|
|
397
577
|
},
|
|
@@ -446,6 +626,15 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
446
626
|
$.flush();
|
|
447
627
|
},
|
|
448
628
|
|
|
629
|
+
get hostButtons() {
|
|
630
|
+
return hostButtons();
|
|
631
|
+
},
|
|
632
|
+
|
|
633
|
+
set hostButtons($$value) {
|
|
634
|
+
hostButtons($$value);
|
|
635
|
+
$.flush();
|
|
636
|
+
},
|
|
637
|
+
|
|
449
638
|
get class() {
|
|
450
639
|
return className();
|
|
451
640
|
},
|
|
@@ -478,123 +667,261 @@ export default function ItemToolBar($$anchor, $$props) {
|
|
|
478
667
|
var node_1 = $.first_child(fragment);
|
|
479
668
|
|
|
480
669
|
{
|
|
481
|
-
var
|
|
670
|
+
var consequent_9 = ($$anchor) => {
|
|
482
671
|
var div = root_1();
|
|
672
|
+
let classes;
|
|
673
|
+
var node_2 = $.child(div);
|
|
483
674
|
|
|
484
|
-
$.each(
|
|
485
|
-
var
|
|
486
|
-
var node_2 = $.first_child(fragment_1);
|
|
487
|
-
|
|
488
|
-
{
|
|
489
|
-
var consequent = ($$anchor) => {
|
|
490
|
-
var span = root_3();
|
|
675
|
+
$.each(node_2, 17, () => $.get(mountedElementsBeforeButtons), (mountedElement) => `before-${mountedElement.tagName}-${mountedElement.getAttribute('tool-id') || ''}`, ($$anchor, mountedElement) => {
|
|
676
|
+
var span = root_2();
|
|
491
677
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
678
|
+
$.action(span, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(mountedElement));
|
|
679
|
+
$.append($$anchor, span);
|
|
680
|
+
});
|
|
495
681
|
|
|
496
|
-
|
|
497
|
-
if ($.get(renderedTool).inlineElement) $$render(consequent);
|
|
498
|
-
});
|
|
499
|
-
}
|
|
682
|
+
var node_3 = $.sibling(node_2, 2);
|
|
500
683
|
|
|
501
|
-
|
|
684
|
+
$.each(node_3, 17, () => $.get(toolbarItems), (item) => item.id, ($$anchor, item, $$index_1, $$array) => {
|
|
685
|
+
var fragment_1 = $.comment();
|
|
686
|
+
var node_4 = $.first_child(fragment_1);
|
|
502
687
|
|
|
503
688
|
{
|
|
504
|
-
var
|
|
505
|
-
var
|
|
506
|
-
let
|
|
507
|
-
var
|
|
689
|
+
var consequent_4 = ($$anchor) => {
|
|
690
|
+
var a = root_4();
|
|
691
|
+
let classes_1;
|
|
692
|
+
var node_5 = $.child(a);
|
|
508
693
|
|
|
509
694
|
{
|
|
510
|
-
var
|
|
695
|
+
var consequent_3 = ($$anchor) => {
|
|
511
696
|
var fragment_2 = $.comment();
|
|
512
|
-
var
|
|
697
|
+
var node_6 = $.first_child(fragment_2);
|
|
513
698
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
699
|
+
{
|
|
700
|
+
var consequent = ($$anchor) => {
|
|
701
|
+
var fragment_3 = $.comment();
|
|
702
|
+
var node_7 = $.first_child(fragment_3);
|
|
517
703
|
|
|
518
|
-
|
|
704
|
+
$.html(node_7, () => $.get(item).icon);
|
|
705
|
+
$.append($$anchor, fragment_3);
|
|
706
|
+
};
|
|
519
707
|
|
|
520
|
-
|
|
521
|
-
var img = root_6();
|
|
708
|
+
var d = $.derived(() => isInlineSvgIcon($.get(item).icon));
|
|
522
709
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
710
|
+
var consequent_1 = ($$anchor) => {
|
|
711
|
+
var img = root_7();
|
|
712
|
+
|
|
713
|
+
$.template_effect(() => $.set_attribute(img, 'src', $.get(item).icon));
|
|
714
|
+
$.append($$anchor, img);
|
|
715
|
+
};
|
|
716
|
+
|
|
717
|
+
var d_1 = $.derived(() => isExternalIconUrl($.get(item).icon));
|
|
718
|
+
|
|
719
|
+
var alternate_1 = ($$anchor) => {
|
|
720
|
+
const fallbackIcon = $.derived(() => getFallbackIconSvg($.get(item).icon));
|
|
721
|
+
var fragment_4 = $.comment();
|
|
722
|
+
var node_8 = $.first_child(fragment_4);
|
|
723
|
+
|
|
724
|
+
{
|
|
725
|
+
var consequent_2 = ($$anchor) => {
|
|
726
|
+
var fragment_5 = $.comment();
|
|
727
|
+
var node_9 = $.first_child(fragment_5);
|
|
728
|
+
|
|
729
|
+
$.html(node_9, () => $.get(fallbackIcon));
|
|
730
|
+
$.append($$anchor, fragment_5);
|
|
731
|
+
};
|
|
526
732
|
|
|
527
|
-
|
|
733
|
+
var alternate = ($$anchor) => {
|
|
734
|
+
var i = root_10();
|
|
528
735
|
|
|
529
|
-
|
|
530
|
-
|
|
736
|
+
$.template_effect(() => $.set_class(i, 1, `icon icon-${$.get(item).icon}`, 'svelte-rnx3ie'));
|
|
737
|
+
$.append($$anchor, i);
|
|
738
|
+
};
|
|
531
739
|
|
|
532
|
-
|
|
533
|
-
|
|
740
|
+
$.if(node_8, ($$render) => {
|
|
741
|
+
if ($.get(fallbackIcon)) $$render(consequent_2); else $$render(alternate, false);
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
$.append($$anchor, fragment_4);
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
$.if(node_6, ($$render) => {
|
|
749
|
+
if ($.get(d)) $$render(consequent); else if ($.get(d_1)) $$render(consequent_1, 1); else $$render(alternate_1, false);
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
$.append($$anchor, fragment_2);
|
|
534
754
|
};
|
|
535
755
|
|
|
536
|
-
$.if(
|
|
537
|
-
if ($.get(
|
|
756
|
+
$.if(node_5, ($$render) => {
|
|
757
|
+
if ($.get(item).icon) $$render(consequent_3);
|
|
538
758
|
});
|
|
539
759
|
}
|
|
540
760
|
|
|
541
|
-
$.reset(
|
|
761
|
+
$.reset(a);
|
|
762
|
+
|
|
763
|
+
$.template_effect(
|
|
764
|
+
($0) => {
|
|
765
|
+
classes_1 = $.set_class(a, 1, 'item-toolbar__button svelte-rnx3ie', null, classes_1, $0);
|
|
766
|
+
$.set_attribute(a, 'href', $.get(item).disabled ? undefined : $.get(item).href);
|
|
767
|
+
$.set_attribute(a, 'target', $.get(item).target);
|
|
768
|
+
$.set_attribute(a, 'rel', $.get(item).rel);
|
|
769
|
+
$.set_attribute(a, 'aria-label', $.get(item).ariaLabel || $.get(item).label);
|
|
770
|
+
$.set_attribute(a, 'title', $.get(item).tooltip || $.get(item).label);
|
|
771
|
+
$.set_attribute(a, 'aria-disabled', $.get(item).disabled ? 'true' : undefined);
|
|
772
|
+
},
|
|
773
|
+
[
|
|
774
|
+
() => ({
|
|
775
|
+
'item-toolbar__button--active': isToolbarItemActive($.get(item))
|
|
776
|
+
})
|
|
777
|
+
]
|
|
778
|
+
);
|
|
779
|
+
|
|
780
|
+
$.delegated('click', a, (event) => {
|
|
781
|
+
if ($.get(item).disabled) {
|
|
782
|
+
event.preventDefault();
|
|
783
|
+
}
|
|
784
|
+
});
|
|
542
785
|
|
|
543
|
-
$.
|
|
544
|
-
|
|
545
|
-
'item-toolbar__button--active': $.get(activeToolState)[$.get(renderedTool).toolId] ?? $.get(renderedTool).button.active ?? false
|
|
546
|
-
});
|
|
786
|
+
$.append($$anchor, a);
|
|
787
|
+
};
|
|
547
788
|
|
|
548
|
-
|
|
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
|
-
});
|
|
789
|
+
var d_2 = $.derived(() => isToolbarLinkItem($.get(item)));
|
|
553
790
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
791
|
+
var alternate_4 = ($$anchor) => {
|
|
792
|
+
var button_1 = root_11();
|
|
793
|
+
let classes_2;
|
|
794
|
+
var node_10 = $.child(button_1);
|
|
558
795
|
|
|
559
|
-
|
|
560
|
-
|
|
796
|
+
{
|
|
797
|
+
var consequent_8 = ($$anchor) => {
|
|
798
|
+
var fragment_6 = $.comment();
|
|
799
|
+
var node_11 = $.first_child(fragment_6);
|
|
561
800
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
801
|
+
{
|
|
802
|
+
var consequent_5 = ($$anchor) => {
|
|
803
|
+
var fragment_7 = $.comment();
|
|
804
|
+
var node_12 = $.first_child(fragment_7);
|
|
566
805
|
|
|
567
|
-
|
|
806
|
+
$.html(node_12, () => $.get(item).icon);
|
|
807
|
+
$.append($$anchor, fragment_7);
|
|
808
|
+
};
|
|
568
809
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
810
|
+
var d_3 = $.derived(() => isInlineSvgIcon($.get(item).icon));
|
|
811
|
+
|
|
812
|
+
var consequent_6 = ($$anchor) => {
|
|
813
|
+
var img_1 = root_14();
|
|
814
|
+
|
|
815
|
+
$.template_effect(() => $.set_attribute(img_1, 'src', $.get(item).icon));
|
|
816
|
+
$.append($$anchor, img_1);
|
|
817
|
+
};
|
|
818
|
+
|
|
819
|
+
var d_4 = $.derived(() => isExternalIconUrl($.get(item).icon));
|
|
820
|
+
|
|
821
|
+
var alternate_3 = ($$anchor) => {
|
|
822
|
+
const fallbackIcon = $.derived(() => getFallbackIconSvg($.get(item).icon));
|
|
823
|
+
var fragment_8 = $.comment();
|
|
824
|
+
var node_13 = $.first_child(fragment_8);
|
|
825
|
+
|
|
826
|
+
{
|
|
827
|
+
var consequent_7 = ($$anchor) => {
|
|
828
|
+
var fragment_9 = $.comment();
|
|
829
|
+
var node_14 = $.first_child(fragment_9);
|
|
830
|
+
|
|
831
|
+
$.html(node_14, () => $.get(fallbackIcon));
|
|
832
|
+
$.append($$anchor, fragment_9);
|
|
833
|
+
};
|
|
834
|
+
|
|
835
|
+
var alternate_2 = ($$anchor) => {
|
|
836
|
+
var i_1 = root_17();
|
|
837
|
+
|
|
838
|
+
$.template_effect(() => $.set_class(i_1, 1, `icon icon-${$.get(item).icon}`, 'svelte-rnx3ie'));
|
|
839
|
+
$.append($$anchor, i_1);
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
$.if(node_13, ($$render) => {
|
|
843
|
+
if ($.get(fallbackIcon)) $$render(consequent_7); else $$render(alternate_2, false);
|
|
844
|
+
});
|
|
845
|
+
}
|
|
572
846
|
|
|
573
|
-
|
|
574
|
-
|
|
847
|
+
$.append($$anchor, fragment_8);
|
|
848
|
+
};
|
|
849
|
+
|
|
850
|
+
$.if(node_11, ($$render) => {
|
|
851
|
+
if ($.get(d_3)) $$render(consequent_5); else if ($.get(d_4)) $$render(consequent_6, 1); else $$render(alternate_3, false);
|
|
852
|
+
});
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
$.append($$anchor, fragment_6);
|
|
856
|
+
};
|
|
857
|
+
|
|
858
|
+
$.if(node_10, ($$render) => {
|
|
859
|
+
if ($.get(item).icon) $$render(consequent_8);
|
|
860
|
+
});
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
$.reset(button_1);
|
|
864
|
+
|
|
865
|
+
$.template_effect(
|
|
866
|
+
($0, $1) => {
|
|
867
|
+
classes_2 = $.set_class(button_1, 1, 'item-toolbar__button svelte-rnx3ie', null, classes_2, $0);
|
|
868
|
+
$.set_attribute(button_1, 'aria-label', $.get(item).ariaLabel || $.get(item).label);
|
|
869
|
+
$.set_attribute(button_1, 'aria-pressed', $1);
|
|
870
|
+
$.set_attribute(button_1, 'title', $.get(item).tooltip || $.get(item).label);
|
|
871
|
+
button_1.disabled = $.get(item).disabled;
|
|
872
|
+
},
|
|
873
|
+
[
|
|
874
|
+
() => ({
|
|
875
|
+
'item-toolbar__button--active': isToolbarItemActive($.get(item))
|
|
876
|
+
}),
|
|
877
|
+
() => isToolbarItemActive($.get(item))
|
|
878
|
+
]
|
|
879
|
+
);
|
|
880
|
+
|
|
881
|
+
$.delegated('click', button_1, function (...$$args) {
|
|
882
|
+
$.get(item).onClick?.apply(this, $$args);
|
|
883
|
+
});
|
|
884
|
+
|
|
885
|
+
$.append($$anchor, button_1);
|
|
575
886
|
};
|
|
576
887
|
|
|
577
|
-
$.if(
|
|
578
|
-
if ($.get(
|
|
888
|
+
$.if(node_4, ($$render) => {
|
|
889
|
+
if ($.get(d_2)) $$render(consequent_4); else $$render(alternate_4, false);
|
|
579
890
|
});
|
|
580
891
|
}
|
|
581
892
|
|
|
582
893
|
$.append($$anchor, fragment_1);
|
|
583
894
|
});
|
|
584
895
|
|
|
896
|
+
var node_15 = $.sibling(node_3, 2);
|
|
897
|
+
|
|
898
|
+
$.each(node_15, 17, () => $.get(mountedElementsAfterButtons), (mountedElement) => `after-${mountedElement.tagName}-${mountedElement.getAttribute('tool-id') || ''}`, ($$anchor, mountedElement) => {
|
|
899
|
+
var span_1 = root_18();
|
|
900
|
+
|
|
901
|
+
$.action(span_1, ($$node, $$action_arg) => mountElement?.($$node, $$action_arg), () => $.get(mountedElement));
|
|
902
|
+
$.append($$anchor, span_1);
|
|
903
|
+
});
|
|
904
|
+
|
|
585
905
|
$.reset(div);
|
|
586
906
|
$.bind_this(div, ($$value) => $.set(toolbarRootElement, $$value), () => $.get(toolbarRootElement));
|
|
587
907
|
|
|
588
908
|
$.template_effect(() => {
|
|
589
|
-
$.set_class(div, 1, `item-toolbar ${className() ?? ''} item-toolbar--${size() ?? ''}`, 'svelte-rnx3ie'
|
|
909
|
+
classes = $.set_class(div, 1, `item-toolbar ${className() ?? ''} item-toolbar--${size() ?? ''}`, 'svelte-rnx3ie', classes, {
|
|
910
|
+
'item-toolbar--top': position() === 'top',
|
|
911
|
+
'item-toolbar--right': position() === 'right',
|
|
912
|
+
'item-toolbar--bottom': position() === 'bottom',
|
|
913
|
+
'item-toolbar--left': position() === 'left'
|
|
914
|
+
});
|
|
915
|
+
|
|
590
916
|
$.set_attribute(div, 'data-content-kind', $.get(effectiveContentKind));
|
|
917
|
+
$.set_attribute(div, 'data-level', $.get(effectiveLevel));
|
|
591
918
|
});
|
|
592
919
|
|
|
593
920
|
$.append($$anchor, div);
|
|
594
921
|
};
|
|
595
922
|
|
|
596
923
|
$.if(node_1, ($$render) => {
|
|
597
|
-
if (isBrowser) $$render(
|
|
924
|
+
if (isBrowser) $$render(consequent_9);
|
|
598
925
|
});
|
|
599
926
|
}
|
|
600
927
|
|
|
@@ -608,10 +935,14 @@ $.delegate(['click']);
|
|
|
608
935
|
customElements.define('pie-item-toolbar', $.create_custom_element(
|
|
609
936
|
ItemToolBar,
|
|
610
937
|
{
|
|
938
|
+
level: { attribute: 'level', type: 'String' },
|
|
939
|
+
scopeId: { attribute: 'scope-id', type: 'String' },
|
|
611
940
|
itemId: { attribute: 'item-id', type: 'String' },
|
|
941
|
+
sectionId: { attribute: 'section-id', type: 'String' },
|
|
612
942
|
catalogId: { attribute: 'catalog-id', type: 'String' },
|
|
613
943
|
tools: { attribute: 'tools', type: 'String' },
|
|
614
944
|
contentKind: { attribute: 'content-kind', type: 'String' },
|
|
945
|
+
position: { attribute: 'position', type: 'String' },
|
|
615
946
|
size: { attribute: 'size', type: 'String' },
|
|
616
947
|
language: { attribute: 'language', type: 'String' },
|
|
617
948
|
scopeElement: { type: 'Object' },
|
|
@@ -620,6 +951,7 @@ customElements.define('pie-item-toolbar', $.create_custom_element(
|
|
|
620
951
|
assessment: { type: 'Object' },
|
|
621
952
|
itemRef: { type: 'Object' },
|
|
622
953
|
item: { type: 'Object' },
|
|
954
|
+
hostButtons: { type: 'Object' },
|
|
623
955
|
class: {}
|
|
624
956
|
},
|
|
625
957
|
[],
|