ember-codemod-remove-global-styles
Version:
Codemod to localize global styles
37 lines (36 loc) • 1.22 kB
JavaScript
import { findTemplateTags } from '@codemod-utils/ast-template-tag';
import { getClasses } from '../../utils/css/index.js';
function getLocalStyles(classes, data) {
const classesSet = new Set(classes);
const localStyles = classes.reduce((accumulator, className) => {
const styles = data.classToStyles.get(className) ?? [];
const filteredStyles = styles.filter(({ classes }) => {
return classes.every((className) => classesSet.has(className));
});
accumulator.push(...filteredStyles);
return accumulator;
}, []);
return localStyles;
}
export function getEntityData(file, data) {
const classes = [];
const errors = [];
if (data.isHbs) {
const output = getClasses(file);
classes.push(...output.classes);
errors.push(...output.errors);
}
else {
const templateTags = findTemplateTags(file);
templateTags.forEach(({ contents }) => {
const output = getClasses(contents);
classes.push(...output.classes);
errors.push(...output.errors);
});
}
return {
classes,
errors,
localStyles: getLocalStyles(classes, data),
};
}