diff options
| author | Adam <[email protected]> | 2026-03-13 06:27:58 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-13 06:27:58 -0500 |
| commit | 270cb0b8b4265ac0965ac8b94a58a3bca86fa558 (patch) | |
| tree | 5a37c81bec1dea75b5c24f6aa8fb6a762d438f64 /packages/ui/src/components/basic-tool.tsx | |
| parent | 46ba9c81703fc6e7db7e623a607eeaab94fcd00f (diff) | |
| download | opencode-270cb0b8b4265ac0965ac8b94a58a3bca86fa558.tar.gz opencode-270cb0b8b4265ac0965ac8b94a58a3bca86fa558.zip | |
chore: cleanup (#17284)
Diffstat (limited to 'packages/ui/src/components/basic-tool.tsx')
| -rw-r--r-- | packages/ui/src/components/basic-tool.tsx | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/packages/ui/src/components/basic-tool.tsx b/packages/ui/src/components/basic-tool.tsx index 4ad91824d..3f009f4e0 100644 --- a/packages/ui/src/components/basic-tool.tsx +++ b/packages/ui/src/components/basic-tool.tsx @@ -1,5 +1,6 @@ -import { createEffect, createSignal, For, Match, on, onCleanup, Show, Switch, type JSX } from "solid-js" +import { createEffect, For, Match, on, onCleanup, Show, Switch, type JSX } from "solid-js" import { animate, type AnimationPlaybackControls } from "motion" +import { createStore } from "solid-js/store" import { Collapsible } from "./collapsible" import type { IconProps } from "./icon" import { TextShimmer } from "./text-shimmer" @@ -37,8 +38,12 @@ export interface BasicToolProps { const SPRING = { type: "spring" as const, visualDuration: 0.35, bounce: 0 } export function BasicTool(props: BasicToolProps) { - const [open, setOpen] = createSignal(props.defaultOpen ?? false) - const [ready, setReady] = createSignal(open()) + const [state, setState] = createStore({ + open: props.defaultOpen ?? false, + ready: props.defaultOpen ?? false, + }) + const open = () => state.open + const ready = () => state.ready const pending = () => props.status === "pending" || props.status === "running" let frame: number | undefined @@ -52,7 +57,7 @@ export function BasicTool(props: BasicToolProps) { onCleanup(cancel) createEffect(() => { - if (props.forceOpen) setOpen(true) + if (props.forceOpen) setState("open", true) }) createEffect( @@ -62,7 +67,7 @@ export function BasicTool(props: BasicToolProps) { if (!props.defer) return if (!value) { cancel() - setReady(false) + setState("ready", false) return } @@ -70,7 +75,7 @@ export function BasicTool(props: BasicToolProps) { frame = requestAnimationFrame(() => { frame = undefined if (!open()) return - setReady(true) + setState("ready", true) }) }, { defer: true }, @@ -112,7 +117,7 @@ export function BasicTool(props: BasicToolProps) { const handleOpenChange = (value: boolean) => { if (pending()) return if (props.locked && !value) return - setOpen(value) + setState("open", value) } return ( |
