import type { EnvironmentId } from "@t3tools/contracts"; import { DEFAULT_RESOLVED_KEYBINDINGS } from "@t3tools/shared/keybindings"; import { PlusIcon } from "lucide-react"; import { useState } from "react"; import { useEnvironments } from "../../state/environments"; import { EMPTY_PROJECT_SCRIPT_INPUT, editorRequestForScript, ProjectScriptEditorDialog, type ProjectScriptEditorRequest, } from "../projectScriptEditor"; import { Button } from "../ui/button"; import { ProjectActionsList } from "./ProjectActionsList"; import { useProjectScriptSettings } from "./ProjectSettingsPanel"; import { SettingResetButton, SettingsRow, SettingsSection } from "./settingsLayout"; export function ProjectDefaultActionsSettings({ environmentId, }: { environmentId: EnvironmentId | null; }) { const { environments } = useEnvironments(); const targets = environments.filter( (environment) => (environmentId === null || environment.environmentId === environmentId) && environment.connection.phase === "connected" && environment.serverConfig !== null, ); const representative = targets[0]?.serverConfig; const scripts = representative?.settings.defaultProjectScripts ?? []; const keybindings = representative?.keybindings ?? DEFAULT_RESOLVED_KEYBINDINGS; const mixed = targets.some( (target) => JSON.stringify(target.serverConfig?.settings.defaultProjectScripts) !== JSON.stringify(scripts), ); const [request, setRequest] = useState(null); const { saving, persist, submit } = useProjectScriptSettings( targets.flatMap(({ environmentId, serverConfig }) => serverConfig ? [ { environmentId, settings: serverConfig.settings, keybindings: serverConfig.keybindings, }, ] : [], ), ); return ( Import scripts } /> (target.serverConfig?.settings.defaultProjectScripts.length ?? 0) > 0, ) ? ( void persist(() => [])} /> ) : null } control={ } /> {mixed ? ( ) : ( setRequest(editorRequestForScript(script, keybindings))} /> )} void persist((current) => current.filter((script) => script.id !== id), id, null) } onClose={() => setRequest(null)} /> ); }