UNPKG

maplibre-gl

Version:

BSD licensed community fork of mapbox-gl, a WebGL interactive maps library

63 lines (50 loc) 1.59 kB
import type {WorkerTile} from './worker_tile'; import {type ExpiryData} from '../util/ajax'; export type ParsingState = { rawData: ArrayBufferLike; cacheControl?: ExpiryData; resourceTiming?: any; }; export class WorkerTileState { loading: Record<string, WorkerTile> = {}; loaded: Record<string, WorkerTile> = {}; parsing: Record<string, ParsingState> = {}; startLoading(uid: string | number, tile: WorkerTile): void { this.loading[uid] = tile; } finishLoading(uid: string | number): void { delete this.loading[uid]; } abort(uid: string | number): void { const tile = this.loading[uid]; if (!tile?.abort) return; tile.abort.abort(); delete this.loading[uid]; } setParsing(uid: string | number, state: ParsingState): void { this.parsing[uid] = state; } consumeParsing(uid: string | number): ParsingState | undefined { const state = this.parsing[uid]; if (!state) return undefined; delete this.parsing[uid]; return state; } clearParsing(uid: string | number): void { delete this.parsing[uid]; } markLoaded(uid: string | number, tile: WorkerTile): void { this.loaded[uid] = tile; } getLoaded(uid: string | number): WorkerTile | undefined { const tile = this.loaded[uid]; if (!tile) return undefined; return tile; } removeLoaded(uid: string | number): void { delete this.loaded[uid]; } clearLoaded(): void { this.loaded = {}; } }