Files
ttrpg-tools/src/components/journal/index.ts
T
hypercross 30ec8a43cf fix(journal): decouple broker from session
The broker connection now persists across session changes. Joining or switching a session swaps subscriptions instead of reconnecting, and a lobby lets sessions be listed and created before joining one.

Fixes session switching being a no-op (the store only updated local state) and session creation being unreachable before connecting. Also removes the dead ConnectionBar and the no-op hydrateFromServer/setSessionId store calls.
2026-09-13 13:23:50 +08:00

69 lines
2.5 KiB
TypeScript

/**
* Journal module — barrel export
*/
// Trigger message type registration
import "./types";
export {
registerMessageType,
getMessageType,
registeredTypes,
validatePayload,
canEmit,
} from "./registry";
export type { MessageTypeDef, StreamMessage } from "./registry";
export {
connectBroker,
joinSession,
switchSession,
leaveSession,
disconnectStream,
resolveBrokerUrl,
sendMessage,
revertLatest,
canRevert,
visibleMessages,
useJournalStream,
journalStreamState,
createSession,
deleteSession,
sessions,
setMyName,
} from "../stores/journalStream";
export type {
JournalStreamState,
SessionMeta,
SessionManifest,
} from "../stores/journalStream";
// UI components
export { JournalPanel } from "./JournalPanel";
export type { JournalPanelProps } from "./JournalPanel";
export { JournalHeader } from "./JournalHeader";
export { ConnectDialog } from "./ConnectDialog";
export { InviteDialog } from "./InviteDialog";
export { SessionDropdown } from "./SessionDropdown";
export { CreateSessionDialog } from "./CreateSessionDialog";
export { StreamView } from "./StreamView";
export { StreamMessageCard } from "./StreamMessage";
export { ComposePanel } from "./ComposePanel";
export { JournalInput } from "./JournalInput";
export { DynamicForm } from "./DynamicForm";
export { useJournalCompletions, ensureReactivity } from "./completions";
export { dispatchCommand } from "./command-dispatcher";
export type { DispatchContext, DispatchResult } from "./command-dispatcher";
export { parseInput } from "./command-parser";
export type { ParsedInput, CompletionItem } from "./command-parser";
export { buildCompletions } from "./command-completions";
export type { CompletionsContext } from "./command-completions";
export { VariableView } from "./VariableView";
export { parseDeclare, declareSchema } from "./declare-parser";
export type { VarDeclaration, TagModifier } from "./declare-parser";
export { evaluateExpression, expressionIsTag, exprValueToString } from "./variable-expression";
export type { EvalContext, EvalResult, ExprValue } from "./variable-expression";
export { initReactivity, computeCascade, getCombined, getMods, getDeclExpr, setBase, extractDependencies, computeInitialValues, getReactivityDiagnostics, clearReactivityDiagnostics, onReactivityDiagnostics, resolveVariable } from "./var-reactivity";
export type { VarReactivityState, VariableStore, ReactivityDiagnostic } from "./var-reactivity";
export { JournalContext, useJournalContext } from "./JournalContext";
export type { JournalContextValue } from "./JournalContext";