add tool config

feat/devtool
dominikg 4 months ago
parent 71b03fc1c5
commit baf1dd1e7f

@ -1,6 +1,7 @@
<script> <script>
let props = $props() let props = $props();
</script> </script>
<h1>toolbar</h1> <h1>toolbar</h1>
<pre> <pre>
{JSON.stringify(props, null, 2)} {JSON.stringify(props, null, 2)}

@ -2,17 +2,31 @@
* toolbar config * toolbar config
* @type {import('./public.d.ts').Config} * @type {import('./public.d.ts').Config}
*/ */
const config = {}; const config = {
tools: []
};
/** /**
* @param {Partial<import('./public.d.ts').Config>} options * @param {Partial<import('./public.d.ts').Config>} options
*/ */
export function configure(options) { export function configure(options) {
// TODO deep merge?
for (const [key, value] of 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; config[key] = value;
} }
} }
}
/** /**
* *

@ -1,3 +1,3 @@
export {default as ToolBar} from './ToolBar.svelte' export { default as ToolBar } from './ToolBar.svelte';
export * from './configure.js' export * from './configure.js';
export {mountUI as default} from './runtime.js' export { mountUI as default } from './runtime.js';

@ -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 { export interface Config {
position: 'top'|'bottom' position?: 'top' | 'bottom';
tools?: Tool[];
} }

@ -17,5 +17,3 @@ export function mountUI(){
mount(ToolBar, { target: create_toolbar_host() }); mount(ToolBar, { target: create_toolbar_host() });
} }
} }

Loading…
Cancel
Save