@@ -25,7 +25,7 @@ type ImageProps = Omit<
25
25
'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading'
26
26
> & {
27
27
src : string
28
- quality ?: string
28
+ quality ?: number | string
29
29
priority ?: boolean
30
30
loading ?: LoadingValue
31
31
unoptimized ?: boolean
@@ -83,7 +83,7 @@ function getObserver(): IntersectionObserver | undefined {
83
83
function computeSrc (
84
84
src : string ,
85
85
unoptimized : boolean ,
86
- quality ?: string
86
+ quality ?: number
87
87
) : string {
88
88
if ( unoptimized ) {
89
89
return src
@@ -94,7 +94,7 @@ function computeSrc(
94
94
type CallLoaderProps = {
95
95
src : string
96
96
width : number
97
- quality ?: string
97
+ quality ?: number
98
98
}
99
99
100
100
function callLoader ( loaderProps : CallLoaderProps ) {
@@ -105,7 +105,7 @@ function callLoader(loaderProps: CallLoaderProps) {
105
105
type SrcSetData = {
106
106
src : string
107
107
widths : number [ ]
108
- quality ?: string
108
+ quality ?: number
109
109
}
110
110
111
111
function generateSrcSet ( { src, widths, quality } : SrcSetData ) : string {
@@ -121,7 +121,7 @@ type PreloadData = {
121
121
widths : number [ ]
122
122
sizes ?: string
123
123
unoptimized ?: boolean
124
- quality ?: string
124
+ quality ?: number
125
125
}
126
126
127
127
function generatePreload ( {
@@ -200,13 +200,16 @@ export default function Image({
200
200
}
201
201
} , [ thisEl , lazy ] )
202
202
203
+ const parsedQuality =
204
+ typeof quality === 'undefined' ? undefined : parseInt ( quality as string , 10 )
205
+
203
206
// Generate attribute values
204
- const imgSrc = computeSrc ( src , unoptimized , quality )
207
+ const imgSrc = computeSrc ( src , unoptimized , parsedQuality )
205
208
const imgSrcSet = ! unoptimized
206
209
? generateSrcSet ( {
207
210
src,
208
211
widths : configSizes ,
209
- quality,
212
+ quality : parsedQuality ,
210
213
} )
211
214
: undefined
212
215
@@ -301,7 +304,7 @@ export default function Image({
301
304
widths : configSizes ,
302
305
unoptimized,
303
306
sizes,
304
- quality,
307
+ quality : parsedQuality ,
305
308
} )
306
309
: '' }
307
310
< img
@@ -391,7 +394,5 @@ function defaultLoader({ root, src, width, quality }: LoaderProps): string {
391
394
}
392
395
}
393
396
394
- return `${ root } ?url=${ encodeURIComponent ( src ) } &w=${ width } &q=${
395
- quality || '100'
396
- } `
397
+ return `${ root } ?url=${ encodeURIComponent ( src ) } &w=${ width } &q=${ quality || 100 } `
397
398
}
0 commit comments