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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"}