maplibre-gl
Version:
BSD licensed community fork of mapbox-gl, a WebGL interactive maps library
29 lines (24 loc) • 1.04 kB
text/typescript
import type {SpriteSpecification} from '@maplibre/maplibre-gl-style-spec';
/**
* Takes a SpriteSpecification value and returns it in its array form. If `undefined` is passed as an input value, an
* empty array is returned.
* duplicated entries with identical id/url will be removed in returned array
* @param sprite - optional sprite to coerce
* @returns an empty array in case `undefined` is passed; id-url pairs otherwise
*/
export function coerceSpriteToArray(sprite?: SpriteSpecification): {id: string; url: string}[] {
const resultArray: {id: string; url: string}[] = [];
if (typeof sprite === 'string') {
resultArray.push({id: 'default', url: sprite});
} else if (sprite && sprite.length > 0) {
const dedupArray: string[] = [];
for (const {id, url} of sprite) {
const key = `${id}${url}`;
if (dedupArray.indexOf(key) === -1) {
dedupArray.push(key);
resultArray.push({id, url});
}
}
}
return resultArray;
}