UNPKG

motion-dom

Version:
1 lines • 1.89 kB
{"version":3,"file":"get-final.mjs","sources":["../../../../src/animation/keyframes/get-final.ts"],"sourcesContent":["import { AnimationPlaybackOptions } from \"../types\"\n\nexport function getFinalKeyframe<T>(\n keyframes: T[],\n { repeat, repeatType = \"loop\" }: AnimationPlaybackOptions,\n finalKeyframe?: T,\n speed: number = 1\n): T {\n /**\n * The first and last keyframes that aren't null, and how many there\n * are. Found in one pass rather than filtering into a new array, as\n * this runs for every value of every animation.\n */\n let first: T | undefined\n let last: T | undefined\n let numResolved = 0\n for (let i = 0; i < keyframes.length; i++) {\n const keyframe = keyframes[i]\n if (keyframe !== null) {\n if (!numResolved++) first = keyframe\n last = keyframe\n }\n }\n\n const useFirstKeyframe =\n speed < 0 || (repeat && repeatType !== \"loop\" && repeat % 2 === 1)\n const index = useFirstKeyframe ? 0 : numResolved - 1\n\n return !index || finalKeyframe === undefined\n ? ((index ? last : first) as T)\n : finalKeyframe\n}\n"],"names":[],"mappings":"SAEgB,gBAAgB,CAC5B,SAAc,EACd,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,EAA4B,EACzD,aAAiB,EACjB,QAAgB,CAAC,EAAA;AAEjB;;;;AAIG;AACH,IAAA,IAAI,KAAoB;AACxB,IAAA,IAAI,IAAmB;IACvB,IAAI,WAAW,GAAG,CAAC;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;gBAAE,KAAK,GAAG,QAAQ;YACpC,IAAI,GAAG,QAAQ;QACnB;IACJ;AAEA,IAAA,MAAM,gBAAgB,GAClB,KAAK,GAAG,CAAC,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;AACtE,IAAA,MAAM,KAAK,GAAG,gBAAgB,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC;AAEpD,IAAA,OAAO,CAAC,KAAK,IAAI,aAAa,KAAK;WAC3B,KAAK,GAAG,IAAI,GAAG,KAAK;UACtB,aAAa;AACvB;;;;"}