(tr: SurfacedTrace)
| 600 | } |
| 601 | |
| 602 | function printTrace(tr: SurfacedTrace): void { |
| 603 | const start = Math.min(...tr.strokes.map((s) => s.start)); |
| 604 | const end = Math.max(...tr.strokes.map((s) => s.end)); |
| 605 | const n = tr.strokes.length; |
| 606 | console.log( |
| 607 | ` ${c.accent(tr.target)}${c.dim(" position")} ${c.dim("trace")} ${c.dim(`${n} strokes`)} ${c.dim(`@${start}s→${end}s`)}`, |
| 608 | ); |
| 609 | tr.strokes.forEach((s, i) => { |
| 610 | const kfLine = s.keyframes.map((k) => `${k.pct}% {${fmtProps(k.properties)}}`).join(" "); |
| 611 | console.log(` ${c.dim(`stroke ${i + 1}:`)} ${c.dim(kfLine)}`); |
| 612 | }); |
| 613 | console.log(); |
| 614 | } |
| 615 | |
| 616 | // ── Onion-skin self-verify shot ────────────────────────────────────────────── |
| 617 |
no test coverage detected