/** * 资源卡旁那一组浮层——「快速编辑」与「生成动画」——的开关合成。 * * 两者挂在同一个选中资源卡旁、同一位置:同时打开就会叠在一起。**互斥规则只有一处**, * 两个开启入口都读它,因此「开动画→点快速编辑」与「开快速编辑→点动画」不会只修好一边。 */ export type ResourceCardFloatingPanelKind = | 'quick-edit' | 'character-animation'; /** 另一个浮层是什么。互斥就是「开 A 必然关 B」,所以只要求出 B 即可。 */ export function opposingResourceCardFloatingPanel( kind: ResourceCardFloatingPanelKind, ): ResourceCardFloatingPanelKind { return kind === 'quick-edit' ? 'character-animation' : 'quick-edit'; } /** * 开启某个浮层时,两个浮层各自应当处于什么状态。 * * 返回的 `open` 就是被点开的那个,`closed` 是必然被收起的另一个;因此结果里 * **永远不可能两个都为真**。 */ export function openResourceCardFloatingPanelState( kind: ResourceCardFloatingPanelKind, ): { open: ResourceCardFloatingPanelKind; closed: ResourceCardFloatingPanelKind; } { return { open: kind, closed: opposingResourceCardFloatingPanel(kind) }; }