@nuxtjs/sanity
Version:
Sanity integration for Nuxt
38 lines (37 loc) • 1.14 kB
JavaScript
import { computed, defineComponent, h } from "vue";
import { useSanity } from "#imports";
const baseURL = "https://cdn.sanity.io/files";
export default defineComponent({
name: "SanityImage",
props: {
assetId: { type: String, required: true },
projectId: {
type: String,
default: null
},
dataset: {
type: String,
default: null
},
download: {
type: [String, Boolean],
default: false
}
},
setup(props, { slots }) {
const sanity = useSanity();
const src = computed(() => {
const parts = props.assetId.split("-").slice(1);
const format = parts.pop();
const projectId = props.projectId || sanity.config.projectId;
const dataset = props.dataset || sanity.config.dataset || "production";
const filename = `${parts.join("-")}.${format}`;
const src2 = [baseURL, projectId, dataset, filename].join("/");
if (props.download) {
return src2 + "?dl=" + (typeof props.download === "string" ? props.download : "");
}
return src2;
});
return () => slots.default?.({ src: src.value }) || h("span");
}
});