From d330a303498ca0a2e0230225af42c88de7129144 Mon Sep 17 00:00:00 2001 From: dominikg Date: Mon, 5 May 2025 12:46:52 +0200 Subject: [PATCH] allow Tool to be function --- packages/svelte/src/toolbar/configure.js | 5 ++++- packages/svelte/src/toolbar/public.d.ts | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/svelte/src/toolbar/configure.js b/packages/svelte/src/toolbar/configure.js index b254a0a15d..3b491b502c 100644 --- a/packages/svelte/src/toolbar/configure.js +++ b/packages/svelte/src/toolbar/configure.js @@ -12,7 +12,10 @@ const config = { export function configure(options) { for (const [key, value] of options) { if (key === 'tools') { - for (const tool of /** @type {import('./public.d.ts').Tool[]}*/ value) { + for (let tool of /** @type {import('./public.d.ts').Config.tools[0][]}*/ value) { + if(typeof tool === 'function') { + tool = tool(); + } const existing = config.tools.find((t) => t.name === tool.name); if (existing) { for (const [k, v] of tool) { diff --git a/packages/svelte/src/toolbar/public.d.ts b/packages/svelte/src/toolbar/public.d.ts index 43d56bd049..87a05ba716 100644 --- a/packages/svelte/src/toolbar/public.d.ts +++ b/packages/svelte/src/toolbar/public.d.ts @@ -8,7 +8,9 @@ export interface Tool { keyCombo?: string; disabled?: boolean; } +type ToolFn = ()=>Tool + export interface Config { position?: 'top' | 'bottom'; - tools?: Tool[]; + tools?: (Tool | ToolFn)[]; }