forked from rDrama/rDrama
53 lines
1.9 KiB
JavaScript
53 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = createUtilityPlugin;
|
|
|
|
var _transformThemeValue = _interopRequireDefault(require("./transformThemeValue"));
|
|
|
|
var _pluginUtils = require("../util/pluginUtils");
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
let asMap = new Map([[_pluginUtils.asValue, 'any'], [_pluginUtils.asList, 'list'], [_pluginUtils.asColor, 'color'], [_pluginUtils.asAngle, 'angle'], [_pluginUtils.asLength, 'length'], [_pluginUtils.asLookupValue, 'lookup']]);
|
|
|
|
function createUtilityPlugin(themeKey, utilityVariations = [[themeKey, [themeKey]]], {
|
|
filterDefault = false,
|
|
resolveArbitraryValue = _pluginUtils.asValue
|
|
} = {}) {
|
|
let transformValue = (0, _transformThemeValue.default)(themeKey);
|
|
return function ({
|
|
matchUtilities,
|
|
variants,
|
|
theme
|
|
}) {
|
|
for (let utilityVariation of utilityVariations) {
|
|
var _asMap$get;
|
|
|
|
let group = Array.isArray(utilityVariation[0]) ? utilityVariation : [utilityVariation];
|
|
matchUtilities(group.reduce((obj, [classPrefix, properties]) => {
|
|
return Object.assign(obj, {
|
|
[classPrefix]: value => {
|
|
return properties.reduce((obj, name) => {
|
|
if (Array.isArray(name)) {
|
|
return Object.assign(obj, {
|
|
[name[0]]: name[1]
|
|
});
|
|
}
|
|
|
|
return Object.assign(obj, {
|
|
[name]: transformValue(value)
|
|
});
|
|
}, {});
|
|
}
|
|
});
|
|
}, {}), {
|
|
values: filterDefault ? Object.fromEntries(Object.entries(theme(themeKey) || {}).filter(([modifier]) => modifier !== 'DEFAULT')) : theme(themeKey),
|
|
variants: variants(themeKey),
|
|
type: (_asMap$get = asMap.get(resolveArbitraryValue)) !== null && _asMap$get !== void 0 ? _asMap$get : 'any'
|
|
});
|
|
}
|
|
};
|
|
} |