rhythmic-scale
Version:
A utility library for building modular scale systems.
29 lines • 1.02 kB
JavaScript
import { ratioToPower } from 'musical-ratios';
import { ensureNotPxRem } from 'empxrem';
const rhythmicScaleDefaultParams = {
baseFont: 10,
baseBrowserFontSize: 16,
lineHeightFactor: 1.2,
};
function scaledSize(ratio, level, size = 1) {
return size * ratioToPower(ratio, level);
}
export class RhythmicScale {
baseFont;
baseBrowserFontSize;
lineHeightFactor;
constructor(params = {}) {
const { baseFont, baseBrowserFontSize, lineHeightFactor } = { ...rhythmicScaleDefaultParams, ...params };
this.baseFont = baseFont;
this.baseBrowserFontSize = baseBrowserFontSize;
this.lineHeightFactor = lineHeightFactor;
}
scaledStyles(ratio, level) {
const scaled = scaledSize(ratio, level, this.baseFont);
return {
size: ensureNotPxRem(scaled, this.baseBrowserFontSize),
lineHeight: ensureNotPxRem(scaled * this.lineHeightFactor, this.baseBrowserFontSize),
};
}
}
//# sourceMappingURL=rhythmic-scale.js.map