1{"version":3,"file":"css-modules.js","names":["_css","data","require","RNW_CSS_CLASS_ID","transformCssModuleWeb","props","transform","cssResults","filename","code","Buffer","from","src","sourceMap","options","cssModules","dashedIdents","projectRoot","minify","codeAsString","toString","styles","reactNativeWeb","variables","convertLightningCssToReactNativeWebStyleSheet","exports","outputModule","JSON","stringify","dev","runtimeCss","wrapDevelopmentCSS","output","css","map","input","Object","entries","key","value","className","name","composes","length","join","startsWith","$$css","matchCssModule","filePath","test"],"sources":["../../src/transform-worker/css-modules.ts"],"sourcesContent":["import { wrapDevelopmentCSS } from './css';\n\nconst RNW_CSS_CLASS_ID = '_';\n\nexport async function transformCssModuleWeb(props: {\n filename: string;\n src: string;\n options: { projectRoot: string; minify: boolean; dev: boolean; sourceMap: boolean };\n}) {\n const { transform } = require('lightningcss') as typeof import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename: props.filename,\n code: Buffer.from(props.src),\n sourceMap: props.options.sourceMap,\n cssModules: {\n // Prevent renaming CSS variables to ensure\n // variables created in global files are available.\n dashedIdents: false,\n },\n // cssModules: true,\n projectRoot: props.options.projectRoot,\n minify: props.options.minify,\n });\n const codeAsString = cssResults.code.toString();\n\n const { styles, reactNativeWeb, variables } = convertLightningCssToReactNativeWebStyleSheet(\n cssResults.exports!\n );\n\n let outputModule = `module.exports=Object.assign(${JSON.stringify(\n styles\n )},{unstable_styles:${JSON.stringify(reactNativeWeb)}},${JSON.stringify(variables)});`;\n\n if (props.options.dev) {\n const runtimeCss = wrapDevelopmentCSS({\n ...props,\n src: codeAsString,\n });\n\n outputModule += '\\n' + runtimeCss;\n }\n\n return {\n output: outputModule,\n css: cssResults.code,\n map: cssResults.map,\n };\n}\n\nexport function convertLightningCssToReactNativeWebStyleSheet(\n input: import('lightningcss').CSSModuleExports\n) {\n const styles: Record<string, string> = {};\n const reactNativeWeb: Record<string, any> = {};\n const variables: Record<string, string> = {};\n // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }\n Object.entries(input).map(([key, value]) => {\n // order matters here\n let className = value.name;\n\n if (value.composes.length) {\n className += ' ' + value.composes.map((value) => value.name).join(' ');\n }\n\n // CSS Variables will be `{string: string}`\n if (key.startsWith('--')) {\n variables[key] = className;\n }\n\n styles[key] = className;\n reactNativeWeb[key] = { $$css: true, [RNW_CSS_CLASS_ID]: className };\n return {\n [key]: { $$css: true, [RNW_CSS_CLASS_ID]: className },\n };\n });\n\n return { styles, reactNativeWeb, variables };\n}\n\nexport function matchCssModule(filePath: string): boolean {\n return !!/\\.module(\\.(native|ios|android|web))?\\.(css|s[ac]ss)$/.test(filePath);\n}\n"],"mappings":"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"}