UNPKG

ember-codemod-remove-global-styles

Version:
46 lines (45 loc) 1.51 kB
import postcss from 'postcss'; import { extractClasses, extractRootClass, extractSelectors, } from './get-class-to-styles/index.js'; export function getClassToStyles(file) { const classToStyles = new Map(); function processRule(node) { const selectors = extractSelectors(node.selector); const clone = node.clone(); selectors.forEach((selector) => { const containerClass = extractRootClass(selector); if (containerClass === undefined) { return; } clone.selector = selector; const data = { classes: extractClasses(selector), location: { end: node.source.end, start: node.source.start, }, raw: clone.toString(), selector, }; if (classToStyles.has(containerClass)) { classToStyles.get(containerClass).push(data); } else { classToStyles.set(containerClass, [data]); } }); } const plugins = [ { postcssPlugin: 'postcss-get-class-to-styles', prepare() { return { Rule: processRule, }; }, }, ]; // @ts-expect-error: Incorrect type // eslint-disable-next-line @typescript-eslint/no-unused-expressions postcss(plugins).process(file).css; return classToStyles; }