@vis.gl/react-maplibre
Version:
React components for Maplibre GL JS
49 lines (46 loc) • 1.71 kB
text/typescript
export type GlobalSettings = {
/** The maximum number of images (raster tiles, sprites, icons) to load in parallel.
* @default 16
*/
maxParallelImageRequests?: number;
/** The map's RTL text plugin. Necessary for supporting the Arabic and Hebrew languages, which are written right-to-left. */
RTLTextPlugin?: string | {pluginUrl: string; lazy?: boolean};
/** The number of web workers instantiated on a page with maplibre-gl maps.
* @default 2
*/
workerCount?: number;
/** Provides an interface for loading maplibre-gl's WebWorker bundle from a self-hosted URL.
* This is useful if your site needs to operate in a strict CSP (Content Security Policy) environment
* wherein you are not allowed to load JavaScript code from a Blob URL, which is default behavior. */
workerUrl?: string;
};
export default function setGlobals(mapLib: any, props: GlobalSettings) {
const {RTLTextPlugin, maxParallelImageRequests, workerCount, workerUrl} = props;
if (
RTLTextPlugin &&
mapLib.getRTLTextPluginStatus &&
mapLib.getRTLTextPluginStatus() === 'unavailable'
) {
const {pluginUrl, lazy = true} =
typeof RTLTextPlugin === 'string' ? {pluginUrl: RTLTextPlugin} : RTLTextPlugin;
mapLib.setRTLTextPlugin(
pluginUrl,
(error?: Error) => {
if (error) {
// eslint-disable-next-line
console.error(error);
}
},
lazy
);
}
if (maxParallelImageRequests !== undefined) {
mapLib.setMaxParallelImageRequests(maxParallelImageRequests);
}
if (workerCount !== undefined) {
mapLib.setWorkerCount(workerCount);
}
if (workerUrl !== undefined) {
mapLib.setWorkerUrl(workerUrl);
}
}