import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client' import { installMobileEffect } from '../platform/breakpoints.ts' /** * 工作区 chip「再点关闭」的接管(2026-09-23,对账 0.1.7-rc.1)。 * * 症状:hero 空态的工作区 chip,第一次点开工作区列表,**再点 chip 关不掉** * (列表原地不动,等于又开一次)。要求的行为:单击打开、再单击关闭。 * * 真根因(读宿主源码得出): * `ui-conversation` 的 chip 自己是正常 toggle(`ConversationContent.tsx`): * * onClick: () => { setPickerOpen(open => !open) } * * 关不掉的原因在 `ui-workspace` 的 WorkspacePickFlow 怎么开这个菜单: * * * * `anchor={null}` ⇒ Menu 的 rootRef 是一个**空 span**,触发器 chip 在 Menu 子树之外; * 而 `ui-primitives/Menu.tsx` 的「外部 pointerdown 关闭」只豁免 rootRef / listRef: * * if (rootRef.current?.contains(target) === true) return * if (listRef.current?.contains(target) === true) return * onClose() * * ⇒ 菜单开着时点 chip:pointerdown 先被判成「外部点击」→ onClose()(翻到 false), * 紧接着的 click 到达 chip 的 onClick → 又翻回 true。净效果=再开一次。 * 旁证:同行的「预设」触发器传的是 `anchor={