"use client"; import { useMemo } from "react"; import { IconChevronDown, IconCode, IconLoader2 } from "@tabler/icons-react"; import { Button } from "@kandev/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@kandev/ui/dropdown-menu"; import { Tooltip, TooltipContent, TooltipTrigger } from "@kandev/ui/tooltip"; import { useEditors } from "@/hooks/domains/settings/use-editors"; import { useOpenSessionInEditor } from "@/hooks/use-open-session-in-editor"; import { useAppStore } from "@/components/state-provider"; import type { EditorOption } from "@/lib/types/http"; type EditorsMenuProps = { activeSessionId: string | null; }; export function EditorsMenu({ activeSessionId }: EditorsMenuProps) { const openEditor = useOpenSessionInEditor(activeSessionId ?? null); const { editors } = useEditors(); const defaultEditorId = useAppStore((state) => state.userSettings.defaultEditorId); const enabledEditors = useMemo( () => editors.filter((editor: EditorOption) => { if (!editor.enabled) return false; if (editor.kind === "built_in") return editor.installed; return true; }), [editors], ); const resolvedEditorId = useMemo(() => { if ( defaultEditorId && enabledEditors.some((editor: EditorOption) => editor.id === defaultEditorId) ) { return defaultEditorId; } return enabledEditors[0]?.id ?? ""; }, [defaultEditorId, enabledEditors]); return (