{"version":3,"file":"index.mjs","sources":["../../../../src/utils/mix/index.ts"],"sourcesContent":["import { sanitize } from \"../../value/types/utils/sanitize\"\nimport { getMixer } from \"./complex\"\nimport { mixNumber as mixNumberImmediate } from \"./number\"\nimport { Mixer } from \"./types\"\n\n/**\n * A single number with an optional unit, e.g. \"50%\", \"-10px\", \".5em\".\n * Exponents don't match, so they fall through to the complex mixer.\n */\nconst unitValue = /^(-?(?:\\d+(?:\\.\\d*)?|\\.\\d+))([a-z%]*)$/iu\n\n/**\n * Most CSS values Motion mixes are a single number with a unit. Mixing\n * these directly produces the same output as the complex mixer\n * (\"25%\", \"0.33333px\") without tokenising both strings.\n */\nfunction mixUnit(from: string, to: string): Mixer<string> | undefined {\n    const a = unitValue.exec(from)\n    if (!a) return\n    const b = unitValue.exec(to)\n    if (!b || a[2] !== b[2]) return\n\n    const unit = a[2]\n    const origin = parseFloat(a[1])\n    const target = parseFloat(b[1])\n\n    return (p: number) =>\n        sanitize(mixNumberImmediate(origin, target, p)) + unit\n}\n\nexport function mix<T>(from: T, to: T): Mixer<T>\nexport function mix(from: number, to: number, p: number): number\nexport function mix<T>(from: T, to: T, p?: T): Mixer<T> | number {\n    if (\n        typeof from === \"number\" &&\n        typeof to === \"number\" &&\n        typeof p === \"number\"\n    ) {\n        return mixNumberImmediate(from, to, p)\n    }\n\n    if (typeof from === \"string\" && typeof to === \"string\") {\n        const mixer = mixUnit(from, to)\n        if (mixer) return mixer as Mixer<T>\n    }\n\n    const mixer = getMixer(from)\n    return mixer(from as any, to as any) as Mixer<T>\n}\n"],"names":["mixNumberImmediate"],"mappings":";;;;AAKA;;;AAGG;AACH,MAAM,SAAS,GAAG,0CAA0C;AAE5D;;;;AAIG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,EAAU,EAAA;IACrC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,IAAA,IAAI,CAAC,CAAC;QAAE;IACR,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE;AAEzB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/B,IAAA,OAAO,CAAC,CAAS,KACb,QAAQ,CAACA,SAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;AAC9D;SAIgB,GAAG,CAAI,IAAO,EAAE,EAAK,EAAE,CAAK,EAAA;IACxC,IACI,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,EAAE,KAAK,QAAQ;AACtB,QAAA,OAAO,CAAC,KAAK,QAAQ,EACvB;QACE,OAAOA,SAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C;IAEA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AAC/B,QAAA,IAAI,KAAK;AAAE,YAAA,OAAO,KAAiB;IACvC;AAEA,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC5B,IAAA,OAAO,KAAK,CAAC,IAAW,EAAE,EAAS,CAAa;AACpD;;;;"}