UNPKG

tldraw

Version:

A tiny little drawing editor.

36 lines (35 loc) 1.22 kB
import { b64Vecs, lerp } from "@tldraw/editor"; const interpolateSegments = (startSegments, endSegments, progress) => { const startPoints = []; const endPoints = []; startSegments.forEach((segment) => startPoints.push(...b64Vecs.decodePoints(segment.path))); endSegments.forEach((segment) => endPoints.push(...b64Vecs.decodePoints(segment.path))); const maxLength = Math.max(startPoints.length, endPoints.length); const pointsToUseStart = []; const pointsToUseEnd = []; for (let i = 0; i < maxLength; i++) { pointsToUseStart.push(startPoints[i] || startPoints[startPoints.length - 1]); pointsToUseEnd.push(endPoints[i] || endPoints[endPoints.length - 1]); } const interpolatedPoints = pointsToUseStart.map((point, k) => { let z = 0.5; if (pointsToUseEnd[k].z !== void 0 && point.z !== void 0) { z = lerp(point.z, pointsToUseEnd[k].z, progress); } return { x: lerp(point.x, pointsToUseEnd[k].x, progress), y: lerp(point.y, pointsToUseEnd[k].y, progress), z }; }); return [ { type: "free", path: b64Vecs.encodePoints(interpolatedPoints) } ]; }; export { interpolateSegments }; //# sourceMappingURL=interpolate-props.mjs.map