hacifootprint
hcifootprintInterfaces

RegisteredHandlers

Interface: RegisteredHandlers

Defined in: src/traverse/session.ts:451

registerHandlers() output: optional exact-provenance triggers + the group's cleanup.

Properties

setBusy

setBusy: (actionId, label) => void

Defined in: src/traverse/session.ts:479

Say this control is WORKING right now — the app's own label for it, or undefined to clear. The third state a control has, scoped and refused the same way setEnabled is.

It is here for the same reason setEnabled is: the door that mounted a control owns its state, and greyed/working are not two different kinds of ownership. Its absence also had a consequence beyond symmetry — useWorking (hcifootprint/react) takes handles by their setBusy, so a flat-session app could mount its controls through this door and then could not hand the result to the React binding at all.

Parameters

actionId

string

label

string | undefined

Returns

void


setEnabled

setEnabled: (actionId, enabled) => void

Defined in: src/traverse/session.ts:466

Grey out (or restore) one of the actions THIS group registered — the same control the tree API's group handle has always offered, scoped the same way. Reaching for an action the group did not register is refused by name.

Parameters

actionId

string

enabled

boolean

Returns

void


triggers

triggers: Record<string, (payload?) => FireResult>

Defined in: src/traverse/session.ts:460

Wrapped manual triggers (same signature as the app's handlers): calling one records the action as source 'user' AND invokes the handler — the opt-in precision tier. Wire a trigger IN PLACE OF the handler at the call site (the trigger invokes it for you); keeping both wired executes the handler twice. If you cannot replace the call site, rely on the zero-touch tiers instead (DOM sensor / effect-signature inference).


unregister

unregister: () => void

Defined in: src/traverse/session.ts:481

Unregister everything this call registered (call on unmount).

Returns

void

On this page