@pie-players/pie-assessment-toolkit 0.2.0
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/README.md +520 -0
- package/dist/attempt/TestSession.d.ts +90 -0
- package/dist/attempt/TestSession.d.ts.map +1 -0
- package/dist/attempt/TestSession.js +174 -0
- package/dist/attempt/TestSession.js.map +1 -0
- package/dist/core/TypedEventBus.d.ts +48 -0
- package/dist/core/TypedEventBus.d.ts.map +1 -0
- package/dist/core/TypedEventBus.js +63 -0
- package/dist/core/TypedEventBus.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/item-loader.d.ts +45 -0
- package/dist/item-loader.d.ts.map +1 -0
- package/dist/item-loader.js +62 -0
- package/dist/item-loader.js.map +1 -0
- package/dist/player/AssessmentPlayer.d.ts +388 -0
- package/dist/player/AssessmentPlayer.d.ts.map +1 -0
- package/dist/player/AssessmentPlayer.js +965 -0
- package/dist/player/AssessmentPlayer.js.map +1 -0
- package/dist/player/index.d.ts +17 -0
- package/dist/player/index.d.ts.map +1 -0
- package/dist/player/index.js +15 -0
- package/dist/player/index.js.map +1 -0
- package/dist/player/navigation-types.d.ts +63 -0
- package/dist/player/navigation-types.d.ts.map +1 -0
- package/dist/player/navigation-types.js +7 -0
- package/dist/player/navigation-types.js.map +1 -0
- package/dist/player/qti-navigation.d.ts +29 -0
- package/dist/player/qti-navigation.d.ts.map +1 -0
- package/dist/player/qti-navigation.js +160 -0
- package/dist/player/qti-navigation.js.map +1 -0
- package/dist/reference-layout/index.d.ts +19 -0
- package/dist/reference-layout/index.d.ts.map +1 -0
- package/dist/reference-layout/index.js +20 -0
- package/dist/reference-layout/index.js.map +1 -0
- package/dist/services/AccessibilityCatalogResolver.d.ts +141 -0
- package/dist/services/AccessibilityCatalogResolver.d.ts.map +1 -0
- package/dist/services/AccessibilityCatalogResolver.js +249 -0
- package/dist/services/AccessibilityCatalogResolver.js.map +1 -0
- package/dist/services/AssessmentAuthoringService.d.ts +60 -0
- package/dist/services/AssessmentAuthoringService.d.ts.map +1 -0
- package/dist/services/AssessmentAuthoringService.js +183 -0
- package/dist/services/AssessmentAuthoringService.js.map +1 -0
- package/dist/services/ContextVariableStore.d.ts +114 -0
- package/dist/services/ContextVariableStore.d.ts.map +1 -0
- package/dist/services/ContextVariableStore.js +207 -0
- package/dist/services/ContextVariableStore.js.map +1 -0
- package/dist/services/ElementToolStateStore.d.ts +125 -0
- package/dist/services/ElementToolStateStore.d.ts.map +1 -0
- package/dist/services/ElementToolStateStore.js +200 -0
- package/dist/services/ElementToolStateStore.js.map +1 -0
- package/dist/services/HighlightCoordinator.d.ts +179 -0
- package/dist/services/HighlightCoordinator.d.ts.map +1 -0
- package/dist/services/HighlightCoordinator.js +446 -0
- package/dist/services/HighlightCoordinator.js.map +1 -0
- package/dist/services/I18nService.d.ts +121 -0
- package/dist/services/I18nService.d.ts.map +1 -0
- package/dist/services/I18nService.js +276 -0
- package/dist/services/I18nService.js.map +1 -0
- package/dist/services/PNPMapper.d.ts +71 -0
- package/dist/services/PNPMapper.d.ts.map +1 -0
- package/dist/services/PNPMapper.js +98 -0
- package/dist/services/PNPMapper.js.map +1 -0
- package/dist/services/PNPToolResolver.d.ts +127 -0
- package/dist/services/PNPToolResolver.d.ts.map +1 -0
- package/dist/services/PNPToolResolver.js +222 -0
- package/dist/services/PNPToolResolver.js.map +1 -0
- package/dist/services/SSMLExtractor.d.ts +61 -0
- package/dist/services/SSMLExtractor.d.ts.map +1 -0
- package/dist/services/SSMLExtractor.js +181 -0
- package/dist/services/SSMLExtractor.js.map +1 -0
- package/dist/services/TTSService.d.ts +162 -0
- package/dist/services/TTSService.d.ts.map +1 -0
- package/dist/services/TTSService.js +465 -0
- package/dist/services/TTSService.js.map +1 -0
- package/dist/services/ThemeProvider.d.ts +95 -0
- package/dist/services/ThemeProvider.d.ts.map +1 -0
- package/dist/services/ThemeProvider.js +299 -0
- package/dist/services/ThemeProvider.js.map +1 -0
- package/dist/services/ToolConfigResolver.d.ts +162 -0
- package/dist/services/ToolConfigResolver.d.ts.map +1 -0
- package/dist/services/ToolConfigResolver.js +230 -0
- package/dist/services/ToolConfigResolver.js.map +1 -0
- package/dist/services/ToolCoordinator.d.ts +137 -0
- package/dist/services/ToolCoordinator.d.ts.map +1 -0
- package/dist/services/ToolCoordinator.js +318 -0
- package/dist/services/ToolCoordinator.js.map +1 -0
- package/dist/services/ToolkitCoordinator.d.ts +188 -0
- package/dist/services/ToolkitCoordinator.d.ts.map +1 -0
- package/dist/services/ToolkitCoordinator.js +252 -0
- package/dist/services/ToolkitCoordinator.js.map +1 -0
- package/dist/services/interfaces.d.ts +391 -0
- package/dist/services/interfaces.d.ts.map +1 -0
- package/dist/services/interfaces.js +12 -0
- package/dist/services/interfaces.js.map +1 -0
- package/dist/services/tool-providers/DesmosToolProvider.d.ts +103 -0
- package/dist/services/tool-providers/DesmosToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/DesmosToolProvider.js +127 -0
- package/dist/services/tool-providers/DesmosToolProvider.js.map +1 -0
- package/dist/services/tool-providers/IToolProvider.d.ts +137 -0
- package/dist/services/tool-providers/IToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/IToolProvider.js +13 -0
- package/dist/services/tool-providers/IToolProvider.js.map +1 -0
- package/dist/services/tool-providers/TIToolProvider.d.ts +107 -0
- package/dist/services/tool-providers/TIToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/TIToolProvider.js +123 -0
- package/dist/services/tool-providers/TIToolProvider.js.map +1 -0
- package/dist/services/tool-providers/TTSToolProvider.d.ts +143 -0
- package/dist/services/tool-providers/TTSToolProvider.d.ts.map +1 -0
- package/dist/services/tool-providers/TTSToolProvider.js +168 -0
- package/dist/services/tool-providers/TTSToolProvider.js.map +1 -0
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts +165 -0
- package/dist/services/tool-providers/ToolProviderRegistry.d.ts.map +1 -0
- package/dist/services/tool-providers/ToolProviderRegistry.js +240 -0
- package/dist/services/tool-providers/ToolProviderRegistry.js.map +1 -0
- package/dist/services/tool-providers/index.d.ts +18 -0
- package/dist/services/tool-providers/index.d.ts.map +1 -0
- package/dist/services/tool-providers/index.js +15 -0
- package/dist/services/tool-providers/index.js.map +1 -0
- package/dist/services/tts/browser-provider.d.ts +24 -0
- package/dist/services/tts/browser-provider.d.ts.map +1 -0
- package/dist/services/tts/browser-provider.js +177 -0
- package/dist/services/tts/browser-provider.js.map +1 -0
- package/dist/services/tts/provider-interface.d.ts +131 -0
- package/dist/services/tts/provider-interface.d.ts.map +1 -0
- package/dist/services/tts/provider-interface.js +10 -0
- package/dist/services/tts/provider-interface.js.map +1 -0
- package/dist/tools/calculators/desmos-provider.d.ts +54 -0
- package/dist/tools/calculators/desmos-provider.d.ts.map +1 -0
- package/dist/tools/calculators/desmos-provider.js +384 -0
- package/dist/tools/calculators/desmos-provider.js.map +1 -0
- package/dist/tools/calculators/mathjs-provider.d.ts +50 -0
- package/dist/tools/calculators/mathjs-provider.d.ts.map +1 -0
- package/dist/tools/calculators/mathjs-provider.js +660 -0
- package/dist/tools/calculators/mathjs-provider.js.map +1 -0
- package/dist/tools/calculators/ti-provider.d.ts +122 -0
- package/dist/tools/calculators/ti-provider.d.ts.map +1 -0
- package/dist/tools/calculators/ti-provider.js +587 -0
- package/dist/tools/calculators/ti-provider.js.map +1 -0
- package/dist/tools/client.d.ts +17 -0
- package/dist/tools/client.d.ts.map +1 -0
- package/dist/tools/client.js +26 -0
- package/dist/tools/client.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/library-loader.d.ts +63 -0
- package/dist/tools/library-loader.d.ts.map +1 -0
- package/dist/tools/library-loader.js +292 -0
- package/dist/tools/library-loader.js.map +1 -0
- package/dist/tools/response-discovery.d.ts +72 -0
- package/dist/tools/response-discovery.d.ts.map +1 -0
- package/dist/tools/response-discovery.js +183 -0
- package/dist/tools/response-discovery.js.map +1 -0
- package/dist/tools/tool-coordinator.d.ts +76 -0
- package/dist/tools/tool-coordinator.d.ts.map +1 -0
- package/dist/tools/tool-coordinator.js +197 -0
- package/dist/tools/tool-coordinator.js.map +1 -0
- package/dist/tools/types.d.ts +427 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +13 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/variant-resolver.d.ts +48 -0
- package/dist/tools/variant-resolver.d.ts.map +1 -0
- package/dist/tools/variant-resolver.js +214 -0
- package/dist/tools/variant-resolver.js.map +1 -0
- package/dist/types/events.d.ts +157 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +11 -0
- package/dist/types/events.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
- package/src/README.md +626 -0
- package/src/components/QuestionToolBar.svelte +406 -0
- package/src/player/AssessmentLayout.svelte +68 -0
- package/src/player/README.md +154 -0
- package/src/reference-layout/README.md +135 -0
- package/src/reference-layout/ReferenceLayout.svelte +209 -0
- package/src/reference-layout/components/AssessmentContent.svelte +259 -0
- package/src/reference-layout/components/AssessmentFooter.svelte +89 -0
- package/src/reference-layout/components/AssessmentHeader.svelte +250 -0
- package/src/reference-layout/components/AssessmentNavigation.svelte +134 -0
- package/src/reference-layout/components/AssessmentToolsBar.svelte +176 -0
- package/src/reference-layout/components/ItemPanel.svelte +200 -0
- package/src/reference-layout/components/NotesPanel.svelte +179 -0
- package/src/reference-layout/components/PassagePanel.svelte +76 -0
- package/src/tools/README.md +616 -0
- package/src/tools/calculators/README.md +395 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Coordinator Store (Svelte-specific)
|
|
3
|
+
*
|
|
4
|
+
* Svelte store-based implementation of tool coordination.
|
|
5
|
+
* This is a framework-specific alternative to the class-based ToolCoordinator service.
|
|
6
|
+
*
|
|
7
|
+
* **When to use:**
|
|
8
|
+
* - In Svelte components that need reactive tool state
|
|
9
|
+
* - When you want automatic subscription/unsubscription
|
|
10
|
+
*
|
|
11
|
+
* **When NOT to use:**
|
|
12
|
+
* - In framework-agnostic code
|
|
13
|
+
* - When you need fine-grained control over service lifecycle
|
|
14
|
+
* - In testing scenarios (prefer class-based ToolCoordinator with DI)
|
|
15
|
+
*
|
|
16
|
+
* For framework-agnostic code, use the class-based ToolCoordinator from services/.
|
|
17
|
+
*/
|
|
18
|
+
import type { ToolCoordinator, ToolId, ToolState } from "./types";
|
|
19
|
+
interface ToolCoordinatorState {
|
|
20
|
+
tools: Map<ToolId, ToolState>;
|
|
21
|
+
highestZIndex: number;
|
|
22
|
+
activeTool: ToolId | null;
|
|
23
|
+
}
|
|
24
|
+
declare const subscribe: (this: void, run: import("svelte/store").Subscriber<ToolCoordinatorState>, invalidate?: () => void) => import("svelte/store").Unsubscriber;
|
|
25
|
+
/**
|
|
26
|
+
* Register a new tool with the coordinator
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerTool(id: ToolId, name: string, element?: HTMLElement): void;
|
|
29
|
+
/**
|
|
30
|
+
* Unregister a tool
|
|
31
|
+
*/
|
|
32
|
+
export declare function unregisterTool(id: ToolId): void;
|
|
33
|
+
/**
|
|
34
|
+
* Show a tool
|
|
35
|
+
*/
|
|
36
|
+
export declare function showTool(id: ToolId): void;
|
|
37
|
+
/**
|
|
38
|
+
* Hide a tool
|
|
39
|
+
*/
|
|
40
|
+
export declare function hideTool(id: ToolId): void;
|
|
41
|
+
/**
|
|
42
|
+
* Toggle a tool's visibility
|
|
43
|
+
*/
|
|
44
|
+
export declare function toggleTool(id: ToolId): void;
|
|
45
|
+
/**
|
|
46
|
+
* Bring a tool to front (highest z-index)
|
|
47
|
+
* Can be called with either a tool ID or an element directly
|
|
48
|
+
*/
|
|
49
|
+
export declare function bringToFront(idOrElement: ToolId | HTMLElement): void;
|
|
50
|
+
/**
|
|
51
|
+
* Update tool element reference
|
|
52
|
+
*/
|
|
53
|
+
export declare function updateToolElement(id: ToolId, element: HTMLElement): void;
|
|
54
|
+
/**
|
|
55
|
+
* Hide all tools
|
|
56
|
+
*/
|
|
57
|
+
export declare function hideAllTools(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Get tool state
|
|
60
|
+
*/
|
|
61
|
+
export declare function getToolState(id: ToolId): ToolState | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Check if a tool is visible
|
|
64
|
+
*/
|
|
65
|
+
export declare function isToolVisible(id: ToolId): boolean;
|
|
66
|
+
export declare const visibleTools: import("svelte/store").Readable<ToolState[]>;
|
|
67
|
+
export declare const activeTool: import("svelte/store").Readable<ToolState | null | undefined>;
|
|
68
|
+
export declare const toolCoordinatorStore: ToolCoordinator & {
|
|
69
|
+
subscribe: typeof subscribe;
|
|
70
|
+
};
|
|
71
|
+
/** @deprecated Use toolCoordinatorStore instead */
|
|
72
|
+
export declare const toolCoordinator: ToolCoordinator & {
|
|
73
|
+
subscribe: typeof subscribe;
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=tool-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-coordinator.d.ts","sourceRoot":"","sources":["../../src/tools/tool-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAElE,UAAU,oBAAoB;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AASD,QAAA,MAAQ,SAAS,4IAAyD,CAAC;AAE3E;;GAEG;AACH,wBAAgB,YAAY,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GACnB,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAgBzC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAazC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAS3C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA8BpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAWxE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CASnC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAG9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEjD;AAGD,eAAO,MAAM,YAAY,8CAExB,CAAC;AAGF,eAAO,MAAM,UAAU,+DAEtB,CAAC;AAIF,eAAO,MAAM,oBAAoB,EAAE,eAAe,GAAG;IACpD,SAAS,EAAE,OAAO,SAAS,CAAC;CAa5B,CAAC;AAGF,mDAAmD;AACnD,eAAO,MAAM,eAAe;eAjBhB,OAAO,SAAS;CAiBuB,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Coordinator Store (Svelte-specific)
|
|
3
|
+
*
|
|
4
|
+
* Svelte store-based implementation of tool coordination.
|
|
5
|
+
* This is a framework-specific alternative to the class-based ToolCoordinator service.
|
|
6
|
+
*
|
|
7
|
+
* **When to use:**
|
|
8
|
+
* - In Svelte components that need reactive tool state
|
|
9
|
+
* - When you want automatic subscription/unsubscription
|
|
10
|
+
*
|
|
11
|
+
* **When NOT to use:**
|
|
12
|
+
* - In framework-agnostic code
|
|
13
|
+
* - When you need fine-grained control over service lifecycle
|
|
14
|
+
* - In testing scenarios (prefer class-based ToolCoordinator with DI)
|
|
15
|
+
*
|
|
16
|
+
* For framework-agnostic code, use the class-based ToolCoordinator from services/.
|
|
17
|
+
*/
|
|
18
|
+
import { derived, get, writable } from "svelte/store";
|
|
19
|
+
const initialState = {
|
|
20
|
+
tools: new Map(),
|
|
21
|
+
highestZIndex: 1000,
|
|
22
|
+
activeTool: null,
|
|
23
|
+
};
|
|
24
|
+
// Create the writable store
|
|
25
|
+
const { subscribe, update } = writable(initialState);
|
|
26
|
+
/**
|
|
27
|
+
* Register a new tool with the coordinator
|
|
28
|
+
*/
|
|
29
|
+
export function registerTool(id, name, element) {
|
|
30
|
+
update((state) => {
|
|
31
|
+
state.tools.set(id, {
|
|
32
|
+
id,
|
|
33
|
+
name,
|
|
34
|
+
isVisible: false,
|
|
35
|
+
isActive: false,
|
|
36
|
+
zIndex: state.highestZIndex,
|
|
37
|
+
element,
|
|
38
|
+
});
|
|
39
|
+
return state;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Unregister a tool
|
|
44
|
+
*/
|
|
45
|
+
export function unregisterTool(id) {
|
|
46
|
+
update((state) => {
|
|
47
|
+
state.tools.delete(id);
|
|
48
|
+
if (state.activeTool === id) {
|
|
49
|
+
state.activeTool = null;
|
|
50
|
+
}
|
|
51
|
+
return state;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Show a tool
|
|
56
|
+
*/
|
|
57
|
+
export function showTool(id) {
|
|
58
|
+
update((state) => {
|
|
59
|
+
const tool = state.tools.get(id);
|
|
60
|
+
if (tool) {
|
|
61
|
+
tool.isVisible = true;
|
|
62
|
+
tool.isActive = true;
|
|
63
|
+
tool.zIndex = ++state.highestZIndex;
|
|
64
|
+
state.activeTool = id;
|
|
65
|
+
// Update element z-index if available
|
|
66
|
+
if (tool.element) {
|
|
67
|
+
tool.element.style.zIndex = String(tool.zIndex);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return state;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Hide a tool
|
|
75
|
+
*/
|
|
76
|
+
export function hideTool(id) {
|
|
77
|
+
update((state) => {
|
|
78
|
+
const tool = state.tools.get(id);
|
|
79
|
+
if (tool) {
|
|
80
|
+
tool.isVisible = false;
|
|
81
|
+
tool.isActive = false;
|
|
82
|
+
if (state.activeTool === id) {
|
|
83
|
+
state.activeTool = null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return state;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Toggle a tool's visibility
|
|
91
|
+
*/
|
|
92
|
+
export function toggleTool(id) {
|
|
93
|
+
const state = get({ subscribe });
|
|
94
|
+
const tool = state.tools.get(id);
|
|
95
|
+
if (tool?.isVisible) {
|
|
96
|
+
hideTool(id);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
showTool(id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Bring a tool to front (highest z-index)
|
|
104
|
+
* Can be called with either a tool ID or an element directly
|
|
105
|
+
*/
|
|
106
|
+
export function bringToFront(idOrElement) {
|
|
107
|
+
update((state) => {
|
|
108
|
+
// If given an element directly, just update its z-index
|
|
109
|
+
if (idOrElement instanceof HTMLElement) {
|
|
110
|
+
idOrElement.style.zIndex = String(++state.highestZIndex);
|
|
111
|
+
return state;
|
|
112
|
+
}
|
|
113
|
+
// Otherwise, treat as tool ID (legacy behavior)
|
|
114
|
+
const id = idOrElement;
|
|
115
|
+
const tool = state.tools.get(id);
|
|
116
|
+
if (tool && tool.isVisible) {
|
|
117
|
+
tool.zIndex = ++state.highestZIndex;
|
|
118
|
+
tool.isActive = true;
|
|
119
|
+
state.activeTool = id;
|
|
120
|
+
// Update element z-index if available
|
|
121
|
+
if (tool.element) {
|
|
122
|
+
tool.element.style.zIndex = String(tool.zIndex);
|
|
123
|
+
}
|
|
124
|
+
// Deactivate other tools
|
|
125
|
+
state.tools.forEach((t, tId) => {
|
|
126
|
+
if (tId !== id) {
|
|
127
|
+
t.isActive = false;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return state;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Update tool element reference
|
|
136
|
+
*/
|
|
137
|
+
export function updateToolElement(id, element) {
|
|
138
|
+
update((state) => {
|
|
139
|
+
const tool = state.tools.get(id);
|
|
140
|
+
if (tool) {
|
|
141
|
+
tool.element = element;
|
|
142
|
+
if (tool.isVisible && element) {
|
|
143
|
+
element.style.zIndex = String(tool.zIndex);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return state;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Hide all tools
|
|
151
|
+
*/
|
|
152
|
+
export function hideAllTools() {
|
|
153
|
+
update((state) => {
|
|
154
|
+
state.tools.forEach((tool) => {
|
|
155
|
+
tool.isVisible = false;
|
|
156
|
+
tool.isActive = false;
|
|
157
|
+
});
|
|
158
|
+
state.activeTool = null;
|
|
159
|
+
return state;
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get tool state
|
|
164
|
+
*/
|
|
165
|
+
export function getToolState(id) {
|
|
166
|
+
const state = get({ subscribe });
|
|
167
|
+
return state.tools.get(id);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if a tool is visible
|
|
171
|
+
*/
|
|
172
|
+
export function isToolVisible(id) {
|
|
173
|
+
return getToolState(id)?.isVisible ?? false;
|
|
174
|
+
}
|
|
175
|
+
// Derived store for getting all visible tools
|
|
176
|
+
export const visibleTools = derived({ subscribe }, ($state) => Array.from($state.tools.values()).filter((tool) => tool.isVisible));
|
|
177
|
+
// Derived store for getting active tool
|
|
178
|
+
export const activeTool = derived({ subscribe }, ($state) => $state.activeTool ? $state.tools.get($state.activeTool) : null);
|
|
179
|
+
// Export the main store with explicit type
|
|
180
|
+
// Renamed to toolCoordinatorStore to distinguish from class-based ToolCoordinator
|
|
181
|
+
export const toolCoordinatorStore = {
|
|
182
|
+
subscribe,
|
|
183
|
+
registerTool,
|
|
184
|
+
unregisterTool,
|
|
185
|
+
showTool,
|
|
186
|
+
hideTool,
|
|
187
|
+
toggleTool,
|
|
188
|
+
bringToFront,
|
|
189
|
+
updateToolElement,
|
|
190
|
+
hideAllTools,
|
|
191
|
+
getToolState,
|
|
192
|
+
isToolVisible,
|
|
193
|
+
};
|
|
194
|
+
// Backward compatibility alias (deprecated - use toolCoordinatorStore)
|
|
195
|
+
/** @deprecated Use toolCoordinatorStore instead */
|
|
196
|
+
export const toolCoordinator = toolCoordinatorStore;
|
|
197
|
+
//# sourceMappingURL=tool-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-coordinator.js","sourceRoot":"","sources":["../../src/tools/tool-coordinator.ts"],"names":[],"mappings":"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"}
|