cssnano
Version:
A modular CSS minifier, built on top of the PostCSS ecosystem.
51 lines (46 loc) • 1.01 kB
JavaScript
/** @constructor */
class LayerCache {
#values;
constructor() {
this.#values = new Map();
}
/**
* @param {number} startIndex
* @return {void}
*/
optimizeValues(startIndex) {
const sortedValues = Array.from(this.#values.keys()).toSorted(ascending);
for (let i = 0; i < sortedValues.length; i++) {
this.#values.set(sortedValues[i], i + startIndex);
}
}
/**
* @param {string} value
* @return {void}
*/
addValue(value) {
const parsedValue = Number.parseInt(value, 10);
// pass only valid values
if (!parsedValue || parsedValue < 0) {
return;
}
this.#values.set(parsedValue, parsedValue);
}
/**
* @param {string} value
* @return {string}
*/
getValue(value) {
const parsedValue = Number.parseInt(value, 10);
return this.#values.get(parsedValue) || value;
}
}
/**
* @param {number} a
* @param {number} b
* @return {number}
*/
function ascending(a, b) {
return a - b;
}
export default LayerCache;