diff --git a/ts/components/ButtonGroup.svelte b/ts/components/ButtonGroup.svelte index 53d834d30..6e2ef5989 100644 --- a/ts/components/ButtonGroup.svelte +++ b/ts/components/ButtonGroup.svelte @@ -41,15 +41,17 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html makeInterface(makeRegistration); $: for (const [index, item] of $items.entries()) { - if ($items.length === 1) { - item.position.set(ButtonPosition.Standalone); - } else if (index === 0) { - item.position.set(ButtonPosition.Leftmost); - } else if (index === $items.length - 1) { - item.position.set(ButtonPosition.Rightmost); - } else { - item.position.set(ButtonPosition.Center); - } + item.position.update(() => { + if ($items.length === 1) { + return ButtonPosition.Standalone; + } else if (index === 0) { + return ButtonPosition.Leftmost; + } else if (index === $items.length - 1) { + return ButtonPosition.Rightmost; + } else { + return ButtonPosition.Center; + } + }); } setContext(buttonGroupKey, registerComponent); @@ -99,7 +101,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html role="group" > - {#each $dynamicItems as item} + {#each $dynamicItems as item (item[0].id)} diff --git a/ts/components/registration.ts b/ts/components/registration.ts index 5b03b5f02..0ee6fa226 100644 --- a/ts/components/registration.ts +++ b/ts/components/registration.ts @@ -50,8 +50,11 @@ export function makeInterface( index: number = registrations.length, registration = makeRegistration() ): T { - registrations.splice(index, 0, registration); - items.set(registrations); + items.update((registrations) => { + registrations.splice(index, 0, registration); + return registrations; + }); + return registration; } diff --git a/ts/editor/Components.svelte b/ts/editor/Components.svelte index 92465eefa..c324f1255 100644 --- a/ts/editor/Components.svelte +++ b/ts/editor/Components.svelte @@ -10,6 +10,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import WithState from "components/WithState.svelte"; import * as contextKeys from "components/context-keys"; + import * as editorContextKeys from "./context-keys"; export const components = { IconButton, @@ -17,6 +18,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html WithShortcut, WithContext, WithState, - contextKeys, + contextKeys: { ...contextKeys, ...editorContextKeys }, };