@mjhenkes/postcss-rtl
Version:
PostCSS plugin for RTL-optimizations
39 lines (30 loc) • 1 kB
JavaScript
const _require = require('./decls'),
rtlifyDecl = _require.rtlifyDecl;
const _require2 = require('./rules'),
rtlifyRule = _require2.rtlifyRule;
const isKeyframeRule = rule => rule.type === 'atrule' && rule.name.replace(/^-\w+-/, '') === 'keyframes';
const isKeyframeAlreadyProcessed = rule => !!rule.params.match(/-ltr$|-rtl$/);
const isKeyframeSymmetric = rule => !rtlifyRule(rule);
const rtlifyKeyframe = (rule, options) => {
const ruleName = rule.params;
rule.params = `${ruleName}-ltr`;
if (!options.onlyDirection || options.onlyDirection === 'rtl') {
const rtlRule = rule.cloneAfter({
params: `${ruleName}-rtl`
});
rtlRule.walkDecls(decl => {
const rtl = rtlifyDecl(decl);
decl.value = rtl ? rtl.value : decl.value;
});
}
if (options.onlyDirection && options.onlyDirection === 'rtl') {
rule.remove();
}
};
module.exports = {
isKeyframeRule,
isKeyframeAlreadyProcessed,
isKeyframeSymmetric,
rtlifyKeyframe
};
;