@otterstack/sanity-img-astro
Version: 
An Astro component for rendering a responsive <img> element for an image fetched from Sanity
25 lines (24 loc) • 1.07 kB
JavaScript
import { defaultSanityImgDefaults, } from "@otterstack/sanity-img-lib";
export default function sanityImg(defaults) {
    const resolvedDefaults = defaults ?? defaultSanityImgDefaults;
    const loadImageBuilder = `
          import $_sic_urlBuilder from "@sanity/image-url";
          import { sanityClient as $_sic_sanityClient } from "sanity:client";
          import { setSanityImgDefaults as $_sic_setSanityImgDefaults } from "@otterstack/sanity-img-astro";
          {
            const imageUrlBuilder = $_sic_urlBuilder($_sic_sanityClient);
            $_sic_setSanityImgDefaults({...${JSON.stringify(resolvedDefaults)}, imageUrlBuilder });
          }
        `;
    return {
        name: "@otterstack/sanity-img-astro/integration",
        hooks: {
            "astro:config:setup": ({ injectScript }) => {
                //For ssr rendering
                injectScript("page-ssr", loadImageBuilder);
                //For client side components (svelte)
                injectScript("before-hydration", loadImageBuilder);
            },
        },
    };
}