tpa-style-webpack-plugin
Version:
A Webpack plugin that handles wix tpa styles, it separates static css file that injects dynamic style at runtime.
59 lines • 2.35 kB
JavaScript
import { isCssVar, isNumber } from './utils/utils';
export function getProcessor(_a) {
var cssVars = _a.cssVars, plugins = _a.plugins;
function executeFunction(value) {
var _a;
var functionSignature = plugins.getFunctionSignature(value);
if (functionSignature) {
return (_a = plugins.cssFunctions)[functionSignature.funcName].apply(_a, functionSignature.args.map(function (arg) { return executeFunction(arg.trim()); }));
}
else {
return getVarOrPrimitiveValue(value);
}
}
function getVarOrPrimitiveValue(varName) {
if (isCssVar(varName)) {
var varValue_1 = cssVars[varName];
var defaultVarValue = void 0;
if (plugins.isSupportedFunction(varValue_1)) {
defaultVarValue = executeFunction(varValue_1);
}
else {
defaultVarValue = function () { return varValue_1; };
}
return getDefaultValueOrValueFromSettings(varName, defaultVarValue);
}
return function () { return varName; };
}
function getDefaultValueOrValueFromSettings(varName, defaultVarValue) {
return function (tpaParams) {
var varNameInSettings = varName.substring(2, varName.length);
if (tpaParams.strings[varNameInSettings] && tpaParams.strings[varNameInSettings].value) {
return tpaParams.strings[varNameInSettings].value;
}
else if (tpaParams.colors[varNameInSettings]) {
return tpaParams.colors[varNameInSettings];
}
else if (tpaParams.fonts[varNameInSettings]) {
return tpaParams.fonts[varNameInSettings];
}
else if (isNumber(tpaParams.numbers[varNameInSettings])) {
return tpaParams.numbers[varNameInSettings];
}
//not found in settings
return defaultVarValue(tpaParams);
};
}
function process(_a) {
var part = _a.part, tpaParams = _a.tpaParams;
if (plugins.isSupportedFunction(part)) {
var evaluationFunc = executeFunction(part);
return evaluationFunc(tpaParams);
}
return part;
}
return {
process: process,
};
}
//# sourceMappingURL=processor.js.map