22 decodeDataUrlFromQueryParam ,
33 prepareNamedLogo ,
44} from '../../lib/logos.js'
5- import { svg2base64 } from '../../lib/svg-helpers.js'
5+ import { svg2base64 , getIconSize } from '../../lib/svg-helpers.js'
6+ import { DEFAULT_LOGO_HEIGHT } from '../../badge-maker/lib/constants.js'
67import coalesce from './coalesce.js'
78import toArray from './to-array.js'
89
@@ -55,7 +56,9 @@ export default function coalesceBadge(
5556 } = overrides
5657 let {
5758 logoWidth : overrideLogoWidth ,
59+ logoHeight : overrideLogoHeight ,
5860 logoPosition : overrideLogoPosition ,
61+ logoSize : overrideLogoSize ,
5962 color : overrideColor ,
6063 labelColor : overrideLabelColor ,
6164 } = overrides
@@ -76,6 +79,7 @@ export default function coalesceBadge(
7679 overrideLabelColor = `${ overrideLabelColor } `
7780 }
7881 overrideLogoWidth = + overrideLogoWidth || undefined
82+ overrideLogoHeight = + overrideLogoHeight || undefined
7983 overrideLogoPosition = + overrideLogoPosition || undefined
8084
8185 const {
@@ -88,6 +92,7 @@ export default function coalesceBadge(
8892 namedLogo : serviceNamedLogo ,
8993 logoColor : serviceLogoColor ,
9094 logoWidth : serviceLogoWidth ,
95+ logoHeight : serviceLogoHeight ,
9196 logoPosition : serviceLogoPosition ,
9297 link : serviceLink ,
9398 cacheSeconds : serviceCacheSeconds ,
@@ -119,7 +124,12 @@ export default function coalesceBadge(
119124 style = 'flat'
120125 }
121126
122- let namedLogo , namedLogoColor , logoWidth , logoPosition , logoSvgBase64
127+ let namedLogo ,
128+ namedLogoColor ,
129+ logoWidth ,
130+ logoHeight ,
131+ logoPosition ,
132+ logoSvgBase64
123133 if ( overrideLogo ) {
124134 // `?logo=` could be a named logo or encoded svg.
125135 const overrideLogoSvgBase64 = decodeDataUrlFromQueryParam ( overrideLogo )
@@ -134,6 +144,7 @@ export default function coalesceBadge(
134144 // If the logo has been overridden it does not make sense to inherit the
135145 // original width or position.
136146 logoWidth = overrideLogoWidth
147+ logoHeight = overrideLogoHeight
137148 logoPosition = overrideLogoPosition
138149 } else {
139150 if ( serviceLogoSvg ) {
@@ -146,12 +157,21 @@ export default function coalesceBadge(
146157 namedLogoColor = coalesce ( overrideLogoColor , serviceLogoColor )
147158 }
148159 logoWidth = coalesce ( overrideLogoWidth , serviceLogoWidth )
160+ logoHeight = coalesce ( overrideLogoHeight , serviceLogoHeight )
149161 logoPosition = coalesce ( overrideLogoPosition , serviceLogoPosition )
150162 }
151163 if ( namedLogo ) {
164+ const iconSize = getIconSize ( namedLogo . toLowerCase ( ) )
165+
166+ if ( ! logoWidth && iconSize && overrideLogoSize === 'auto' ) {
167+ logoWidth =
168+ ( iconSize . width / iconSize . height ) * ( logoHeight || DEFAULT_LOGO_HEIGHT )
169+ }
170+
152171 logoSvgBase64 = prepareNamedLogo ( {
153172 name : namedLogo ,
154173 color : namedLogoColor ,
174+ size : overrideLogoSize ,
155175 style,
156176 } )
157177 }
@@ -179,6 +199,7 @@ export default function coalesceBadge(
179199 logo : logoSvgBase64 ,
180200 logoWidth,
181201 logoPosition,
202+ logoSize : overrideLogoSize ,
182203 links : toArray ( overrideLink || serviceLink ) ,
183204 cacheLengthSeconds : coalesce ( serviceCacheSeconds , defaultCacheSeconds ) ,
184205 }
0 commit comments