@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.43 kB
JavaScript
import{isSome as t}from"../../../../core/maybe.js";import{isAbortError as e}from"../../../../core/promiseUtils.js";import{PlacementEngine as s}from"./Placement.js";import r from"./TileParser.js";import{TileStatus as i}from"../../tiling/enums.js";class a{constructor(t,e,r,a){this.status=i.INITIALIZED,this.placementEngine=new s,this.tileKey=t,this.refKeys=e,this._workerTileHandler=r,this._styleRepository=a}release(){this.tileKey="",this.refKeys=null,this.status=i.INITIALIZED,this._workerTileHandler=null}async parse(s,r){const a=r&&r.signal;if(t(a)){const t=()=>{a.removeEventListener("abort",t),this.status=i.INVALID};a.addEventListener("abort",t)}let n;const l={bucketsWithData:[],emptyBuckets:null};try{n=await this._parse(s,r)}catch(y){if(e(y))throw y;return{result:l,transferList:[]}}this.status=i.READY;const o=l.bucketsWithData,u=[];for(const t of n)if(t.hasFeatures()){const e=t.serialize();o.push(e)}else u.push(t.layer.uid);const h=[...o];let c=null;return u.length>0&&(c=Uint32Array.from(u),h.push(c.buffer)),l.emptyBuckets=c,{result:l,transferList:h}}setObsolete(){this.status=i.INVALID}getLayers(){return this._workerTileHandler.getLayers()}getWorkerTileHandler(){return this._workerTileHandler}async _parse(t,e){const s=t.sourceName2DataAndRefKey;if(0===Object.keys(s).length)return[];this.status=i.MODIFIED;return new r(s,this,e.client,this._styleRepository,t.styleLayerUIDs).parse(e)}}export{a as default};