compass-vertical-rhythm
Version:
A port-in-progress of the Compass vertical rhythm library
3 lines (2 loc) • 1.61 kB
JavaScript
var e=require("convert-css-length"),n=require("parse-unit"),t=function(e){return n(e)[1]},i=function(e){return n(e)[0]},r={baseFontSize:"16px",baseLineHeight:1.5,rhythmUnit:"rem",defaultRhythmBorderWidth:"1px",defaultRhythmBorderStyle:"solid",roundToNearestHalfLine:!0,minLinePadding:"2px"},a=function(n,t){var r,a=e(t.baseFontSize),o=i(a(n,"px")),s=i(t.baseLineHeightInPx),u=i(a(t.minLinePadding,"px"));return(r=t.roundToNearestHalfLine?Math.ceil(2*o/s)/2:Math.ceil(o/s))*s-o<2*u&&(r+=t.roundToNearestHalfLine?.5:1),r},o=function(n){var r=e(n.baseFontSize);return function(e,a,o){null==e&&(e=1),null==a&&(a=n.baseFontSize),null==o&&(o=0);var s=e*i(n.baseLineHeightInPx)-o+"px",u=r(s,n.rhythmUnit,a);return"px"===t(u)&&(u=Math.floor(i(u))+t(u)),parseFloat(i(u).toFixed(5))+t(u)}};module.exports=function(n){var s=JSON.parse(JSON.stringify(r)),u=Object.assign({},s,n),h=e(u.baseFontSize);if(t(u.baseLineHeight)){i(h(u.baseFontSize,"px"));u.baseLineHeightInPx=h(u.baseLineHeight,"px")}else u.baseLineHeightInPx=i(u.baseFontSize)*u.baseLineHeight+"px";return{rhythm:o(u),establishBaseline:function(){return function(n){e(n.baseFontSize);return{fontSize:i(n.baseFontSize)/16*100+"%",lineHeight:n.baseLineHeight.toString()}}(u)},linesForFontSize:function(e){return a(e,u)},adjustFontSizeTo:function(n,r,s){return null==r&&(r="auto"),function(n,r,s,u){null==s&&(s=u.baseFontSize),"%"===t(n)&&(n=i(u.baseFontSize)*(i(n)/100)+"px");var h=e(u.baseFontSize);n=h(n,"px",s=h(s,"px"));var l=o(u);return"auto"===r&&(r=a(n,u)),{fontSize:h(n,u.rhythmUnit,s),lineHeight:l(r,s)}}(n,r,s,u)}}};
//# sourceMappingURL=index.js.map