# extendify/3.1.6/src/Shared/lib/site-images.js

Extendify, version 3.1.6. 28 lines.

- Page: https://pluginprobe.com/plugins/extendify/3.1.6/code/src/Shared/lib/site-images.js
- Raw: https://pluginprobe.com/plugins/extendify/3.1.6/raw/src/Shared/lib/site-images.js
- Modified: 2026-08-20T19:51:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/extendify/3.1.6/code/src/Shared/lib/site-images.js#L10-L20`.

```javascript
const asImage = (image) => {
	if (typeof image === 'string') return image ? { url: image } : null;
	return typeof image?.url === 'string' && image.url ? image : null;
};

const asImages = (images) =>
	Array.isArray(images) ? images.map(asImage).filter(Boolean) : [];

// Sites launched before the banner picks stored one flat list of urls.
export const normalizeSiteImages = (siteImages) =>
	!siteImages || Array.isArray(siteImages)
		? { hero: [], general: asImages(siteImages) }
		: {
				hero: asImages(siteImages.hero),
				general: asImages(siteImages.general),
			};

export const siteImageUrlsByType = (siteImages) => {
	const { hero, general } = normalizeSiteImages(siteImages);
	const urls = (images) => images.map(({ url }) => url);
	return { hero: urls(hero), general: urls(general) };
};

export const siteImageUrls = (siteImages) => {
	const { hero, general } = siteImageUrlsByType(siteImages);
	return [...hero, ...general];
};

```
