import type { Peca, PecaDeImagem } from "./documento";

/*
 * O "Substituir" do Canva: quem usa um modelo troca a foto e fica com tudo o
 * resto (lugar, tamanho, moldura, forma, filtros, animação). A peça escolhida
 * pode ser a foto, ou a forma / o texto com uma foto dentro (aí troca a de dentro).
 */

/** A foto que a troca alcança a partir da peça escolhida (ela mesma ou a foto de dentro). */
export function fotoQueTroca(pecas: Peca[], peca: Peca): PecaDeImagem | null {
  if (peca.tipo === "imagem") return peca;
  return (pecas.find((p) => p.tipo === "imagem" && p.dentroDe === peca.id) as PecaDeImagem | undefined) ?? null;
}

/**
 * A foto com a imagem nova: a moldura vazia deixa de ser vazia, o enquadre
 * volta ao meio e o que era da foto velha sai (o vídeo, o recorte do fundo
 * tirado). Em moldura, forma ou círculo a foto cobre; solta, mantém o ajuste.
 */
export function comFotoNova(p: PecaDeImagem, src: string): PecaDeImagem {
  const { video: _video, semFundoDe: _semFundo, corteDoFundo: _corte, ...resto } = p;
  void _video;
  void _semFundo;
  void _corte;
  const cobre = p.moldura || Boolean(p.mascara) || p.circulo || p.ajuste === "cobrir";
  return { ...resto, src, moldura: false, enquadre: null, ajuste: cobre ? "cobrir" : p.ajuste };
}
