From 50e39de9740fdf901e14a9c3ec0a84b5266fb943 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 30 Apr 2025 16:15:10 +0300 Subject: [PATCH] Allow pasting more script config (#25240) * Allow pasting more script config * Update manual-script-editor.ts --- .../config/script/manual-script-editor.ts | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/panels/config/script/manual-script-editor.ts b/src/panels/config/script/manual-script-editor.ts index d15c41a49f..457a6f7303 100644 --- a/src/panels/config/script/manual-script-editor.ts +++ b/src/panels/config/script/manual-script-editor.ts @@ -24,7 +24,11 @@ import "../../../components/ha-card"; import "../../../components/ha-icon-button"; import "../../../components/ha-markdown"; import type { Action, Fields, ScriptConfig } from "../../../data/script"; -import { MODES, normalizeScriptConfig } from "../../../data/script"; +import { + getActionType, + MODES, + normalizeScriptConfig, +} from "../../../data/script"; import { haStyle } from "../../../resources/styles"; import type { HomeAssistant } from "../../../types"; import { documentationUrl } from "../../../util/documentation-url"; @@ -236,10 +240,31 @@ export class HaManualScriptEditor extends LitElement { const loaded: any = load(paste); if (loaded) { + let config = loaded; + + if ("script" in config) { + config = config.script; + if (Object.keys(config).length) { + config = config[Object.keys(config)[0]]; + } + } + + if (Array.isArray(config)) { + if (config.length === 1) { + config = config[0]; + } else { + config = { sequence: config }; + } + } + + if (!["sequence", "unknown"].includes(getActionType(config))) { + config = { sequence: [config] }; + } + let normalized: ScriptConfig | undefined; try { - normalized = normalizeScriptConfig(loaded); + normalized = normalizeScriptConfig(config); } catch (_err: any) { return; }