aliascss
Version:
AliasCSS is a CSS post processor.
36 lines (35 loc) • 1.36 kB
JavaScript
export default function timingFunction(data, custom) {
data = data.replace(/^[-_]/, '');
const func = {
e: 'ease',
ease: 'ease',
linear: 'linear',
l: 'linear',
ei: 'ease-in',
'ease-in': 'ease-in',
eo: 'ease-out',
'ease-out': 'ease-out',
eio: 'ease-in-out',
'ease-in-out': 'ease-in-out',
ss: 'step-start',
'step-start': 'step-start',
se: 'step-end',
'step-end': 'step-end',
};
let result = '';
const test1 = /(cubic-bezier|cb)(([-_][-]?[0-9][d]?[0-9]?){4})/;
const test2 = /(steps|s)[-_]([0-9]+)[-]((jump)?[-]?(start|end|none|both))/;
data.split('__').forEach((e) => {
if (test1.test(e)) {
result = result + e.replace(test1, (e, f, g) => 'cubic-bezier' + "(" + g.replace(/-/, "").replace(/--/g, '-Minus').replace(/-/g, ", ").replace(/d/g, ".").replace(/Minus/g, '-') + ")") + ", ";
}
else if (test2.test(e)) {
result = result + e.replace(test2, (e, f, g, h) => "steps" + "(" + g + ", " + h + ")") + ", ";
}
else if (/^(e|ease|l|linear|ei|ease-in|eo|ease-out|eio|ease-in-out|ss|step-start|se|step-end)$/.test(e)) {
result = result + func[e] + ", ";
}
});
if (result.trim())
return result.trim().replace(/[,]$/, '');
}