import{createEmpty}from"../../extent.js";import Builder from"./Builder.js";import ImageBuilder from"./ImageBuilder.js";import LineStringBuilder from"./LineStringBuilder.js";import PolygonBuilder from"./PolygonBuilder.js";import TextBuilder from"./TextBuilder.js";const BATCH_CONSTRUCTORS={Circle:PolygonBuilder,Default:Builder,Image:ImageBuilder,LineString:LineStringBuilder,Polygon:PolygonBuilder,Text:TextBuilder};class BuilderGroup{constructor(e,t,i,r,l){this.declutter_=l,this.declutterGroups_=null,this.tolerance_=e,this.maxExtent_=t,this.pixelRatio_=r,this.resolution_=i,this.buildersByZIndex_={}}addDeclutter(e){let t=null;return this.declutter_&&(e?(t=this.declutterGroups_)[0][4]++:(t=[createEmpty()],(this.declutterGroups_=t)[0].push(1))),t}finish(){const e={};for(const i in this.buildersByZIndex_){e[i]=e[i]||{};const r=this.buildersByZIndex_[i];for(const l in r){var t=r[l].finish();e[i][l]=t}}return e}getBuilder(e,t){e=void 0!==e?e.toString():"0";let i=this.buildersByZIndex_[e],r=(void 0===i&&(i={},this.buildersByZIndex_[e]=i),i[t]);if(void 0===r){const l=BATCH_CONSTRUCTORS[t];r=new l(this.tolerance_,this.maxExtent_,this.resolution_,this.pixelRatio_),i[t]=r}return r}}export default BuilderGroup;