{"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 | 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(from: T, to: T): Mixer\nexport function mix(from: number, to: number, p: number): number\nexport function mix(from: T, to: T, p?: T): Mixer | 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\n }\n\n const mixer = getMixer(from)\n return mixer(from as any, to as any) as Mixer\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;;;;"}