swc-plugin-jsx-css-modules
Version:
通过 SWC 实现 jsx 中无感知使用 cssModules
44 lines (35 loc) • 1.55 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.JsxCssModulesHelper = {})));
}(this, (function (exports) { 'use strict';
var splitString = function splitString(string) {
return string.trim().split(' ');
};
var getMatcher = function getMatcher(styles, prefer) {
return function (classNames) {
if (typeof classNames !== 'string') {
return null;
}
var globalClassNames = [];
var localClassNames = [];
var restClassNames = splitString(classNames.replace(/\s{2,}/g, ' ').replace(/:global\([\s\S]*?\)/g, function (text) {
globalClassNames = globalClassNames.concat(splitString(text.replace(/(:global\(|\))/g, '')));
return '';
}).replace(/:local\([\s\S]*?\)/g, function (text) {
localClassNames = localClassNames.concat(splitString(text.replace(/(:local\(|\))/g, '')));
return '';
}));
if (prefer === 'local') {
localClassNames = localClassNames.concat(restClassNames);
} else {
globalClassNames = globalClassNames.concat(restClassNames);
}
return localClassNames.map(function (className) {
return styles[className] || className;
}).concat(globalClassNames).join(' ').trim();
};
};
exports.getMatcher = getMatcher;
Object.defineProperty(exports, '__esModule', { value: true });
})));