From baf1dd1e7fbd5367d752ce1f16947738b6627659 Mon Sep 17 00:00:00 2001 From: dominikg Date: Mon, 5 May 2025 12:29:35 +0200 Subject: [PATCH] add tool config --- packages/svelte/src/toolbar/ToolBar.svelte | 5 +++-- packages/svelte/src/toolbar/configure.js | 26 +++++++++++++++++----- packages/svelte/src/toolbar/index.js | 6 ++--- packages/svelte/src/toolbar/public.d.ts | 13 +++++++++-- packages/svelte/src/toolbar/runtime.js | 6 ++--- 5 files changed, 39 insertions(+), 17 deletions(-) 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() }); } } - -