// Monitor: a MOLDURA que se repete em todo vídeo do kit. Um monitor CRT de plástico grafite em pé // (retrato), com cantos de 46 px, chanfro de luz em cima e sombra embaixo, o vidro abaulado, e o queixo // com a placa do modelo e o LED âmbar que pisca quando a tela escreve. O vidro recebe as camadas do CRT // (ver Tela.tsx). Liga no quadro `liga` e desliga no `desliga` (a linha e o ponto do tubo). import React from 'react'; import {useCurrentFrame} from 'remotion'; import {COR, FONTE_PLACA, MONITOR, VIDRO, e5, seg} from '../base'; export type MonitorProps = { /** texto da placa no queixo (modelo fictício) */ placa?: string; /** quadro (absoluto) em que o tubo liga / desliga; −1 = nunca */ liga?: number; desliga?: number; children?: React.ReactNode; }; export const Monitor: React.FC = ({placa = 'VG-9 · FÓSFORO P3', liga = 0, desliga = -1, children}) => { const f = useCurrentFrame(); // ligar: linha horizontal que abre (0–8) · desligar: fecha numa linha (0–4) e num ponto (4–8) const on = liga < 0 ? 1 : e5(seg(f, liga + 2, liga + 9)); const offA = desliga < 0 ? 0 : seg(f, desliga, desliga + 4), offB = desliga < 0 ? 0 : seg(f, desliga + 4, desliga + 8); const sy = Math.max(0.004, on * (1 - offA * 0.996)); const sx = 1 - offB * 0.99; const linha = (on > 0 && on < 1) || offA > 0; const led = f % 22 < 18 ? 1 : 0.35; return
{/* plástico */}
{/* rebaixo do vidro */}
{/* o vidro */}
{children}
{linha &&
}
{/* queixo: placa + LED */}
{placa}
0.5 && offB < 1 ? led : 0.15, boxShadow: `0 0 12px ${COR.led}`}} />
; };