/** * VariableView — flat list of all variable key-value pairs. * * Hovering a value shows a popup with: * - Declaration expression (if any), styled distinctly * - Active tag modifiers: #tag +N (from $source) */ import { Component, For, createMemo, Show, createSignal } from "solid-js"; import { useJournalStream } from "../stores/journalStream"; import { useJournalCompletions } from "./completions"; import { getMods, getDeclExpr } from "./var-reactivity"; export const VariableView: Component = () => { const stream = useJournalStream(); const comp = useJournalCompletions(); const values = createMemo(() => stream.variables); /** Runtime engine diagnostics (bad declarations / modifiers). */ const diagnostics = createMemo(() => comp.diagnostics()); /** Flat list of all variables */ const items = createMemo(() => { const vars = values(); return Object.entries(vars).map(([key, value]) => ({ key, value, isTag: value.startsWith("#"), })); }); const hasAnyData = () => comp.data.declarations.length > 0 || Object.keys(values()).length > 0; return (