1import type { ScopedThreadRef } from "@t3tools/contracts";
2
3type SettleAndAdvance = (threadRef: ScopedThreadRef) => void;
4
5let registeredSettleAndAdvance: SettleAndAdvance | null = null;
6
7export function registerSettleAndAdvance(handler: SettleAndAdvance): () => void {
8 registeredSettleAndAdvance = handler;
9 return () => {
10 if (registeredSettleAndAdvance === handler) registeredSettleAndAdvance = null;
11 };
12}
13
14/** False means no sidebar is mounted; settle in place. */
15export function settleAndAdvance(threadRef: ScopedThreadRef): boolean {
16 if (!registeredSettleAndAdvance) return false;
17 registeredSettleAndAdvance(threadRef);
18 return true;
19}