| 517 | // y) is not a pen stroke — exclude it so repeated in-place tweens don't |
| 518 | // masquerade as a multi-stroke trace. |
| 519 | function pathTravels(points: Array<{ x: number; y: number }>): boolean { |
| 520 | const first = points[0]; |
| 521 | if (!first) return false; |
| 522 | return points.some((p) => Math.abs(p.x - first.x) > 0.5 || Math.abs(p.y - first.y) > 0.5); |
| 523 | } |
| 524 | |
| 525 | // Group an element's DRAWN position strokes (to/from/fromTo/keyframes that carry |
| 526 | // a path) into one ordered trace. A `set` with x/y is a pen-up jump — excluded |