// Единый принцип жёлтого (2026-07-29): жёлтый = устройство прямо сейчас
// выполняет основную функцию. Термоголовка желтеет от реального нагрева
// (hvac_action), а не от служебного свитча защиты от накипи; горящая лампа
// желтит значок в любом режиме заливки тем же условием, что зажигает пятно.
import { launch, checkAll, finish } from './serve.mjs';
const { page, browser } = await launch();
const out = await page.evaluate(() => {
  const o = {};
  const c = window.__card;
  const cls = (d, states) => {
    const saved = c.hass;
    c.hass = { ...c.hass, states: { ...c.hass.states, ...states } };
    const r = c._stateClass(d);
    c.hass = saved;
    return r;
  };
  const trv = { id: 't', primary: 'climate.trv', entities: ['climate.trv', 'switch.trv_anti_scaling'], marker: null };

  // реально греет → жёлтая
  o.heatingIsYellow = cls(trv, {
    'climate.trv': { state: 'heat', attributes: { hvac_action: 'heating' } },
    'switch.trv_anti_scaling': { state: 'on' },
  }) === 'on';

  // включена, но не греет (idle) → чёрная, даже со включённой защитой от накипи
  o.idleIsDark = cls(trv, {
    'climate.trv': { state: 'heat', attributes: { hvac_action: 'idle' } },
    'switch.trv_anti_scaling': { state: 'on' },
  }) === '';

  // выключена → чёрная
  o.offIsDark = cls(trv, {
    'climate.trv': { state: 'off', attributes: { hvac_action: 'off' } },
  }) === '';

  // без hvac_action фолбэк на state
  o.stateFallback = cls(trv, { 'climate.trv': { state: 'heat', attributes: {} } }) === ''
    ? false : cls(trv, { 'climate.trv': { state: 'heat', attributes: {} } }) === 'on';

  // горящая лампа устройства желтит значок, даже если primary — не она
  const lamp = { id: 'l', primary: 'sensor.lamp_power', entities: ['sensor.lamp_power', 'light.lamp'], marker: null };
  o.litLightWins = cls(lamp, {
    'sensor.lamp_power': { state: '5' },
    'light.lamp': { state: 'on' },
  }) === 'on';
  o.darkLampIdle = cls(lamp, {
    'sensor.lamp_power': { state: '5' },
    'light.lamp': { state: 'off' },
  }) === '';

  // «источник света»: умный выключатель с глупыми светильниками — жёлтый от
  // того же условия, что и пятно glow
  const wall = { id: 'w', primary: 'sensor.w', entities: ['sensor.w'],
    marker: { is_light: true, controls: ['switch.fixtures'] } };
  o.forcedSourceYellow = cls(wall, {
    'sensor.w': { state: '1' }, 'switch.fixtures': { state: 'on' },
  }) === 'on';
  return o;
});
await finish(browser, checkAll(out));
