/**
@module /utils/svgTemplates
*/
/**
@function svg_templates
@async
@description
The method parses the templates object param. Templates which are not yet available as mapp.utils.svgSymbols.templates{} will fetched and stored for use in feature style methods.
The svgTemplates method will resolve once all templates have been parsed and loaded.
@param {object} templates An object with svg_template properties to load.
@returns {Promise<void>}
*/
export default async function svgTemplates(templates) {
if (!templates || !Object.keys(templates).length) return;
mapp.utils.svgSymbols.templates ??= {}
// Iterate through svg_templates entries.
const promises = Object.keys(templates)
// The template key is not yet loaded into the templates
.filter(key => !Object.hasOwn(mapp.utils.svgSymbols.templates, key))
.map(key => {
// Fetch entry value.
return fetch(templates[key])
.then(response => response.text())
.then(svgString => {
// Assign parsed svgString as entry key to templates object.
mapp.utils.svgSymbols.templates[key] = svgString
})
})
await Promise.all(promises)
}