Files
learnharness/components/dock-state-key.ts
T

19 lines
950 B
TypeScript
Raw Normal View History

/**
* The dock shell's variant key (the WAAPI height-morph trigger,
* components/chat.tsx DockOverlay). Whenever this string CHANGES between
* renders, the shell morphs its height (120ms) and re-reserves the
* transcript tail; when it stays the same, height changes are measured
* only (typing growth never animates).
*
* The expanded term (the fold: full form ↔ slim bar) belongs to EVERY
* docked variant — question AND practice. For two months it keyed on
* `pending` (the question's tool call) alone, which is null in practice
* sessions: the practice dock folded and re-expanded with an INSTANT
* height jump while teaching morphed (owner report 2026-10-06, "opens
* and closes instantly"). The fold machine itself already treats
* practice as a dock owner; this key now agrees.
*/
export function dockStateKey(mode: string, docked: boolean, expanded: boolean): string {
return docked ? `${mode}:${expanded}` : `${mode}:-`;
}