{"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;;;;"}