Use Closed.
The same emitter under the old binding name, so a template still binding (closed) keeps working. Must stay AFTER Closed: class fields initialise in order, and the other way round this captures undefined.
True during the panel's first open, while its rows are being fetched.
Pins are no longer loaded during conversation open — the open path reads only a count — so the panel can now render before its contents exist.
Use JumpRequested.
The same emitter under the old binding name, so a template still binding (jumpRequested) keeps working. Must stay AFTER JumpRequested: class fields initialise in order, and the other way round this captures undefined.
Readonly because the chat area hands over the window store's own pin array by reference — a stable reference between real changes is what keeps this input from re-firing every change detection cycle. The panel renders it; it never mutates it.
IDs currently being removed (for fade-out animation)
Use UnpinRequested.
The same emitter under the old binding name, so a template still binding (unpinRequested) keeps working. Must stay AFTER UnpinRequested: class fields initialise in order, and the other way round this captures undefined.
Use IsLoading.
Use PinnedMessages.
Use UnpinningIds.
Strip markdown to plain prose for card preview
When false, pins stay listed and jumpable but Unpin is hidden.