/* Copyright 2026 Marimo. All rights reserved. */ import type { CellId } from "@/core/cells/ids"; import type { CompletionConfig, DiagnosticsConfig, LSPConfig, } from "@/core/config/config-schema"; import type { HotkeyProvider } from "@/core/hotkeys/hotkeys"; import { singleFacet } from "../facet"; import type { PlaceholderType } from "./types"; /** * State for completion config */ export const completionConfigState = singleFacet(); /** * State for hotkeys provider */ export const hotkeysProviderState = singleFacet(); /** * State for placeholder type */ export const placeholderState = singleFacet(); /** * State for cell id */ export const cellIdState = singleFacet(); /** * State for LSP config */ export const lspConfigState = singleFacet< LSPConfig & { diagnostics: DiagnosticsConfig } >(); /** * Extension for cell config */ export function cellConfigExtension({ cellId, completionConfig, hotkeys, placeholderType, lspConfig, diagnosticsConfig, }: { cellId: CellId; completionConfig: CompletionConfig; hotkeys: HotkeyProvider; placeholderType: PlaceholderType; lspConfig: LSPConfig; diagnosticsConfig: DiagnosticsConfig; }) { return [ // Store state cellIdState.of(cellId), completionConfigState.of(completionConfig), hotkeysProviderState.of(hotkeys), placeholderState.of(placeholderType), lspConfigState.of({ ...lspConfig, diagnostics: diagnosticsConfig }), ]; }