diff --git a/src/runtime/image.ts b/src/runtime/image.ts index 70fdbede3..0cad2e730 100644 --- a/src/runtime/image.ts +++ b/src/runtime/image.ts @@ -143,7 +143,9 @@ function getSizes (ctx: ImageCTX, input: string, opts: ImageSizesOptions): Image if (Object.keys(sizes).length > 1) { // 'sizes path' for (const key in sizes) { - const variant = getSizesVariant(key, String(sizes[key]), height, hwRatio, ctx) + const _height = sizes[key][1] ? parseSize(sizes[key][1]) : height + + const variant = getSizesVariant(key, sizes[key][0], _height, hwRatio, ctx) if (variant === undefined) { continue } diff --git a/src/runtime/utils/index.ts b/src/runtime/utils/index.ts index f1612a0fd..ad3100e4f 100644 --- a/src/runtime/utils/index.ts +++ b/src/runtime/utils/index.ts @@ -103,17 +103,14 @@ export function parseDensities (input: string | undefined = ''): number[] { return densities.filter((value, index) => densities.indexOf(value) === index) } -export function parseSizes (input: Record | string): Record { - const sizes: Record = {} +export function parseSizes (input: Record | string): Record { + const sizes: Record = {} // string => object if (typeof input === 'string') { for (const entry of input.split(/[\s,]+/).filter(e => e)) { const s = entry.split(':') - if (s.length !== 2) { - sizes[s[0].trim()] = s[0].trim() - } else { - sizes[s[0].trim()] = s[1].trim() - } + + sizes[s[0].trim()] = (s.length !== 2 ? s[0].trim() : s[1].trim()).split('_') } } else { Object.assign(sizes, input)