import Image from '@11ty/eleventy-img'
import dotenv from 'dotenv'
import cloudinary from 'cloudinary'
dotenv.config()
cloudinary.v2.config({
cloud_name: process.env.CLOUDINARY_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET
})
export default async ({
src: source,
alt,
width = 300,
height = 300,
classList
}) => {
var src
try {
src = cloudinary.v2.url(source, {
secure: true,
transformation: [
{
quality: 'auto',
}
]
})
} catch (err) {
console.error(err)
return
}
var cssClasses = Array.isArray(classList) > 0
? classList.length > 0
? classList.map(cssClass => cssClass).join(' ')
: null
: null
var stats = await Image(src, {
widths: [788],
outputDir: './_site/img/'
})
var lowestSrc = stats.jpeg[0]
return `<!--_includes/shortcodes/headshot.js--><picture class="headshot${cssClasses
? ` ${cssClasses}`
: ''}" loading="lazy">
${Object.values(stats).map(imageFormat => `<!--image sources-->
<source type="image/${imageFormat[0].format}"
srcset="${imageFormat.map(entry => entry.srcset).join(', ')}">`
).join('\n')}
<img src="${lowestSrc.url}"
width="${width ? width : lowestSrc.width}"
height="${height ? height : lowestSrc.height}"
alt="${alt}">
</picture>`
}