1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4  value: true
5});
6exports.convertLightningCssToReactNativeWebStyleSheet = convertLightningCssToReactNativeWebStyleSheet;
7exports.matchCssModule = matchCssModule;
8exports.transformCssModuleWeb = transformCssModuleWeb;
9function _css() {
10  const data = require("./css");
11  _css = function () {
12    return data;
13  };
14  return data;
15}
16function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18const RNW_CSS_CLASS_ID = '_';
19async function transformCssModuleWeb(props) {
20  const {
21    transform
22  } = await Promise.resolve().then(() => _interopRequireWildcard(require('lightningcss')));
23
24  // TODO: Add bundling to resolve imports
25  // https://lightningcss.dev/bundling.html#bundling-order
26
27  const cssResults = transform({
28    filename: props.filename,
29    code: Buffer.from(props.src),
30    sourceMap: props.options.sourceMap,
31    cssModules: {
32      // Prevent renaming CSS variables to ensure
33      // variables created in global files are available.
34      dashedIdents: false
35    },
36    // cssModules: true,
37    projectRoot: props.options.projectRoot,
38    minify: props.options.minify
39  });
40  const codeAsString = cssResults.code.toString();
41  const {
42    styles,
43    variables
44  } = convertLightningCssToReactNativeWebStyleSheet(cssResults.exports);
45  let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},${JSON.stringify(variables)});`;
46  if (props.options.dev) {
47    const runtimeCss = (0, _css().wrapDevelopmentCSS)({
48      ...props,
49      src: codeAsString
50    });
51    outputModule += '\n' + runtimeCss;
52  }
53  return {
54    output: outputModule,
55    css: cssResults.code,
56    map: cssResults.map
57  };
58}
59function convertLightningCssToReactNativeWebStyleSheet(input) {
60  const styles = {};
61  const variables = {};
62  // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }
63  Object.entries(input).map(([key, value]) => {
64    // order matters here
65    let className = value.name;
66    if (value.composes.length) {
67      className += ' ' + value.composes.map(value => value.name).join(' ');
68    }
69
70    // CSS Variables will be `{string: string}`
71    if (key.startsWith('--')) {
72      variables[key] = className;
73    }
74    styles[key] = {
75      $$css: true,
76      [RNW_CSS_CLASS_ID]: className
77    };
78    return {
79      [key]: {
80        $$css: true,
81        [RNW_CSS_CLASS_ID]: className
82      }
83    };
84  });
85  return {
86    styles,
87    variables
88  };
89}
90function matchCssModule(filePath) {
91  return !!/\.module(\.(native|ios|android|web))?\.(css|s[ac]ss)$/.test(filePath);
92}
93//# sourceMappingURL=css-modules.js.map