framer-motion
Version:
A simple and powerful JavaScript animation library
1 lines • 2.42 kB
Source Map (JSON)
{"version":3,"file":"calc-time.mjs","sources":["../../../../../src/animation/sequence/utils/calc-time.ts"],"sourcesContent":["import { SequenceTime } from \"../types\"\n\n/**\n * The time of a label, or a label with an offset like \"label+1\" or\n * \"label-0.5\". An exact label name wins over an offset.\n */\nexport function calcLabelTime(\n position: string,\n labels: Map<string, number>\n): number | undefined {\n if (labels.has(position)) return labels.get(position)\n const [, name, offset] = position.match(/^(.+?)([+-][\\d.]+)$/) || []\n return labels.has(name)\n ? Math.max(0, labels.get(name)! + parseFloat(offset))\n : undefined\n}\n\n/**\n * Given a absolute or relative time definition and current/prev time state of the sequence,\n * calculate an absolute time for the next keyframes.\n */\nexport function calcNextTime(\n current: number,\n next: SequenceTime,\n prev: number,\n labels: Map<string, number>\n): number {\n if (typeof next === \"number\") {\n return next\n } else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n return Math.max(0, current + parseFloat(next))\n } else if (next === \"<\") {\n return prev\n } else if (next.startsWith(\"<\")) {\n return Math.max(0, prev + parseFloat(next.slice(1)))\n } else {\n return calcLabelTime(next, labels) ?? current\n }\n}\n"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,aAAa,CACzB,QAAgB,EAChB,MAA2B,EAAA;AAE3B,IAAA,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrD,IAAA,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACpE,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI;AAClB,UAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,GAAG,UAAU,CAAC,MAAM,CAAC;UAClD,SAAS;AACnB;AAEA;;;AAGG;AACG,SAAU,YAAY,CACxB,OAAe,EACf,IAAkB,EAClB,IAAY,EACZ,MAA2B,EAAA;AAE3B,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD;AAAO,SAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AACrB,QAAA,OAAO,IAAI;IACf;AAAO,SAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD;SAAO;QACH,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO;IACjD;AACJ;;;;"}