export type RightPanel = | "profile" | "search" | "versions" | "reactions" | "readers" | "callbacks" | "links" | "annotations" | "jobs" | "presence" | "stories" | "stories-all" | "policy" | "watches" | "webhooks" | "alerts" | "shares" | "bots" | "storage" | "storage-chat" | "storage-trash"; export type LeftView = "main" | "settings"; interface JumpTarget { chatId: number; messageId: number; } function createUi() { let rightPanel = $state(null); let panelMessageId = $state(null); let leftColumnOpen = $state(true); let leftView = $state("main"); let jumpTarget = $state(null); return { clearJump() { jumpTarget = null; }, closePanel() { rightPanel = null; panelMessageId = null; }, closeSettings() { leftView = "main"; }, get jumpTarget() { return jumpTarget; }, get leftColumnOpen() { return leftColumnOpen; }, get leftView() { return leftView; }, openMessagePanel(panel: RightPanel, messageId: number) { rightPanel = panel; panelMessageId = messageId; }, openPanel(panel: RightPanel) { rightPanel = panel; panelMessageId = null; }, openSettings() { leftView = "settings"; }, get panelMessageId() { return panelMessageId; }, requestJump(chatId: number, messageId: number) { jumpTarget = { chatId, messageId }; }, get rightPanel() { return rightPanel; }, setLeftColumn(open: boolean) { leftColumnOpen = open; }, toggleLeftColumn() { leftColumnOpen = !leftColumnOpen; }, }; } export const ui = createUi();