diff --git a/packages/svelte/src/toolbar/ToolBar.svelte b/packages/svelte/src/toolbar/ToolBar.svelte
index 5eb346c2f7..8fc987f375 100644
--- a/packages/svelte/src/toolbar/ToolBar.svelte
+++ b/packages/svelte/src/toolbar/ToolBar.svelte
@@ -1,7 +1,8 @@
+
toolbar
- {JSON.stringify(props,null,2)}
+ {JSON.stringify(props, null, 2)}
diff --git a/packages/svelte/src/toolbar/configure.js b/packages/svelte/src/toolbar/configure.js
index fc54884aeb..b254a0a15d 100644
--- a/packages/svelte/src/toolbar/configure.js
+++ b/packages/svelte/src/toolbar/configure.js
@@ -2,15 +2,29 @@
* toolbar config
* @type {import('./public.d.ts').Config}
*/
-const config = {};
+const config = {
+ tools: []
+};
/**
* @param {Partial} options
*/
-export function configure(options){
- // TODO deep merge?
- for(const [key,value] of options){
- config[key]=value;
+export function configure(options) {
+ for (const [key, value] of options) {
+ if (key === 'tools') {
+ for (const tool of /** @type {import('./public.d.ts').Tool[]}*/ value) {
+ const existing = config.tools.find((t) => t.name === tool.name);
+ if (existing) {
+ for (const [k, v] of tool) {
+ existing[k] = v;
+ }
+ } else {
+ config.tools.push(tool);
+ }
+ }
+ } else {
+ config[key] = value;
+ }
}
}
@@ -18,7 +32,7 @@ export function configure(options){
*
* @return {import('./public.d.ts').Config}
*/
-export function getConfig(){
+export function getConfig() {
// TODO clone to avoid direct manipulation
return config;
}
diff --git a/packages/svelte/src/toolbar/index.js b/packages/svelte/src/toolbar/index.js
index 4406065c48..11785ffe8c 100644
--- a/packages/svelte/src/toolbar/index.js
+++ b/packages/svelte/src/toolbar/index.js
@@ -1,3 +1,3 @@
-export {default as ToolBar} from './ToolBar.svelte'
-export * from './configure.js'
-export {mountUI as default} from './runtime.js'
+export { default as ToolBar } from './ToolBar.svelte';
+export * from './configure.js';
+export { mountUI as default } from './runtime.js';
diff --git a/packages/svelte/src/toolbar/public.d.ts b/packages/svelte/src/toolbar/public.d.ts
index bfa22bd866..43d56bd049 100644
--- a/packages/svelte/src/toolbar/public.d.ts
+++ b/packages/svelte/src/toolbar/public.d.ts
@@ -1,5 +1,14 @@
-export * from './index.js'
+export * from './index.js';
+export interface Tool {
+ name: string;
+ icon: string; // url or svg
+ activate();
+ deactivate();
+ keyCombo?: string;
+ disabled?: boolean;
+}
export interface Config {
- position: 'top'|'bottom'
+ position?: 'top' | 'bottom';
+ tools?: Tool[];
}
diff --git a/packages/svelte/src/toolbar/runtime.js b/packages/svelte/src/toolbar/runtime.js
index 9e8a533e99..b68e48d122 100644
--- a/packages/svelte/src/toolbar/runtime.js
+++ b/packages/svelte/src/toolbar/runtime.js
@@ -12,10 +12,8 @@ function create_toolbar_host() {
document.documentElement.appendChild(el);
return el;
}
-export function mountUI(){
- if(typeof window !== 'undefined') {
+export function mountUI() {
+ if (typeof window !== 'undefined') {
mount(ToolBar, { target: create_toolbar_host() });
}
}
-
-