33 lines
1008 B
TypeScript
33 lines
1008 B
TypeScript
export const useDirectusImage = () => {
|
|
const config = useRuntimeConfig();
|
|
const baseUrl = config.public.directus.url;
|
|
const token = config.public.directus.token;
|
|
|
|
type DirectusAssetParams = {
|
|
width?: number;
|
|
height?: number;
|
|
fit?: 'cover' | 'contain' | 'inside' | 'outside';
|
|
quality?: number;
|
|
format?: 'webp' | 'jpg' | 'png' | 'auto';
|
|
} & Record<string, string | number | boolean>;
|
|
|
|
const getImageUrl = (id?: string | null, options?: DirectusAssetParams) => {
|
|
if (!id) return '';
|
|
const queryToken = token ? 'access_token=' + token : '';
|
|
const queryOptions = options
|
|
? new URLSearchParams(
|
|
Object.fromEntries(
|
|
Object.entries(options).map(([key, value]) => [key, String(value)])
|
|
)
|
|
).toString
|
|
: '';
|
|
const query =
|
|
queryToken || queryOptions
|
|
? `?${[queryToken, queryOptions].filter(Boolean).join('&')}`
|
|
: '';
|
|
return `${baseUrl}/assets/${id}${query}`;
|
|
};
|
|
|
|
return { getImageUrl };
|
|
};
|