postcss-theme-fold
Version:
[![NPM Version][npm-img]][npm-url] [![github (ci)][github-ci]][github-ci]
49 lines (48 loc) • 1.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasUnprocessedNodes = exports.checkNodesProcessed = exports.removeValueFromMap = exports.addValueToMap = void 0;
function addValueToMap(map, selector, item) {
const currentValue = map.get(selector);
if (currentValue) {
if (currentValue.some(({ selector, value, prop }) => selector === item.selector && value === item.value && prop === item.prop)) {
return;
}
map.set(selector, [...currentValue, item]);
}
else {
map.set(selector, [item]);
}
}
exports.addValueToMap = addValueToMap;
function removeValueFromMap(map, themeSelector, value) {
const currentValue = map.get(themeSelector);
if (!currentValue)
return;
const nextValue = currentValue.map((item) => {
if (item.prop === value.prop &&
item.value === value.value &&
item.selector === value.selector) {
item.processed = true;
}
return item;
});
map.set(themeSelector, nextValue);
}
exports.removeValueFromMap = removeValueFromMap;
function checkNodesProcessed(map, nodes, themeSelector) {
nodes.forEach((node) => {
if (node.type === 'decl' && node.parent.type === 'rule') {
removeValueFromMap(map, themeSelector, {
value: node.value,
prop: node.prop,
selector: node.parent.selector.trim(),
});
}
});
}
exports.checkNodesProcessed = checkNodesProcessed;
function hasUnprocessedNodes(map, themeSelector) {
var _a;
return Boolean(map.has(themeSelector) && ((_a = map.get(themeSelector)) === null || _a === void 0 ? void 0 : _a.some(({ processed }) => !processed)));
}
exports.hasUnprocessedNodes = hasUnprocessedNodes;
;