// NotaDatilografada: pedaço de papel rasgado com texto que bate na máquina de escrever (Special Elite), uma palavra circulada a caneta vermelha // que se desenha, e fita no topo. `circular` é a palavra a destacar. import React from 'react'; import {COR, FONTE_TEXTO, LARGURA_UTIL, caber, mola, seg, useF} from '../base'; import {FitaAdesiva} from '../formas/FitaAdesiva'; import {rasgado} from '../lib/rasgado'; export type NotaDatilografadaProps = {texto: string; circular?: string; inicio?: number; y?: number; tamanho?: number; ritmo?: number}; export const NotaDatilografada: React.FC = ({texto, circular, inicio = 0, y = 740, tamanho = 100, ritmo = 1.4}) => { const f = useF() - inicio; const p = mola(seg(f, 0, 10), 1.8); const W = 840, H = 760; const n = Math.max(0, Math.floor((f - 8) / ritmo)); const linhas = texto.split('\n'); const maiorLinha = linhas.reduce((a, b) => (a.length > b.length ? a : b), ''); const tam = caber(maiorLinha, tamanho, W - 120, FONTE_TEXTO, 400, 0); let gasto = 0; const circ = seg(f, 8 + texto.length * ritmo + 4, 8 + texto.length * ritmo + 16); return <>
{linhas.map((l, i) => { const ini = gasto; gasto += l.length; const vis = l.slice(0, Math.max(0, n - ini)); const idx = circular ? l.indexOf(circular) : -1; return
{vis} {idx >= 0 && circular && }
; })}
; };