@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 793 B
JavaScript
export function createStyleTransform(c){if(typeof c!="string")return;const p=new URL(c,window.location.href).href,o=i=>new URL(i,p).href.replace(/%7B/g,"{").replace(/%7D/g,"}"),l=i=>i.startsWith("pmtiles://")?`pmtiles://${o(i.slice(10))}`:o(i);return(i,u)=>{const e={...u};typeof e.sprite=="string"?e.sprite=o(e.sprite):Array.isArray(e.sprite)&&(e.sprite=e.sprite.map(t=>{if(!t||typeof t!="object")return t;const r=t;return typeof r.url!="string"?t:{...r,url:o(r.url)}})),typeof e.glyphs=="string"&&(e.glyphs=o(e.glyphs));const n=e.sources;if(n){e.sources={...n};for(const[t,r]of Object.entries(n)){if(!r||typeof r!="object")continue;const s={...r};typeof s.url=="string"&&(s.url=l(s.url)),Array.isArray(s.tiles)&&(s.tiles=s.tiles.map(f=>typeof f=="string"?l(f):f)),e.sources[t]=s}}return e}}