{"version":3,"file":"TileLayerMulti.mjs","sources":["../../../../../packages/sdk/plugins/TileLayerMulti.ts"],"sourcesContent":["import * as L from 'leaflet'\n\ninterface TileDef extends TitleOptions {\n  url: string\n}\ninterface TitleOptions extends L.TileLayerOptions {\n  crx: string\n}\n\nclass TileLayerMulti extends L.TileLayer {\n  private _tileDefs: TileDef[] = []\n  private _options: TitleOptions | undefined\n\n  constructor(tileDefs: Record<string, TileDef>, options?: TitleOptions) {\n    super('', options)\n    this._options = options\n    this.initialize(tileDefs)\n  }\n\n  initialize(tileDefs: Record<string, TileDef>) {\n    const defaultUrl =\n      tileDefs && Object.keys(tileDefs)[0]\n        ? tileDefs[Object.keys(tileDefs)[0]].url\n        : ''\n    super.setUrl(defaultUrl)\n\n    let zoom = this._options?.minZoom ?? 0\n    for (const maxZoomStr in tileDefs) {\n      const maxZoom = Number.parseInt(maxZoomStr, 10)\n      const tileDef = this._fixTileDef(tileDefs[maxZoomStr])\n      for (; zoom <= maxZoom; zoom++) {\n        this._tileDefs[zoom] = tileDef\n      }\n    }\n  }\n\n  private _fixTileDef(tileDef: TileDef): TileDef {\n    const fixedTileDef = {\n      ...L.TileLayer.prototype.options,\n      ...tileDef,\n    }\n\n    return fixedTileDef\n  }\n  // 假设 _getSubdomain 是 L.TileLayer 的内部方法，虽然在文档中未明确提及\n  private _getSubdomain(tilePoint: L.Point, subdomains: string[]): string {\n    // 假设实现类似下面这样，具体实现取决于 L.TileLayer 内部是如何做的\n    const index = (tilePoint.x + tilePoint.y) % subdomains.length\n    return subdomains[index]\n  }\n  override getTileUrl(tilePoint: L.Point): string {\n    const zoom = this._getZoomForUrl()\n    const tileDef = this._tileDefs[zoom]\n\n    return L.Util.template(tileDef.url, {\n      s: this._getSubdomain(tilePoint, tileDef.subdomains as string[]),\n      z: zoom,\n      x: tilePoint.x,\n      y: tilePoint.y,\n      ...this._options,\n    })\n  }\n}\n\nconst tileLayerMulti = (\n  defs: Record<string, TileDef>,\n  options?: TitleOptions\n): TileLayerMulti => {\n  return new TileLayerMulti(defs, options)\n}\n\nexport { TileLayerMulti, tileLayerMulti }\n"],"names":["f","r","TileLayer","constructor","e","t","super","this","_tileDefs","_options","initialize","n","l","Object","keys","url","setUrl","i","minZoom","a","p","Number","parseInt","T","_fixTileDef","prototype","options","_getSubdomain","x","y","length","getTileUrl","_getZoomForUrl","Util","template","s","subdomains","z","c","o"],"mappings":"0BAA0B,MAAMA,UAAUC,EAAEC,UAAU,WAAAC,CAAYC,EAAEC,GAAGC,MAAM,GAAGD,GAAGE,KAAKC,UAAU,GAAGD,KAAKE,SAASJ,EAAEE,KAAKG,WAAWN,EAAE,CAAC,UAAAM,CAAWN,GAAG,IAAIO,EAAEC,EAAE,MAAMP,EAAED,GAAGS,OAAOC,KAAKV,GAAG,GAAGA,EAAES,OAAOC,KAAKV,GAAG,IAAIW,IAAI,GAAGT,MAAMU,OAAOX,GAAG,IAAIY,EAAgD,OAA7CL,EAAqB,OAAlBD,EAAEJ,KAAKE,eAAgB,EAAOE,EAAEO,SAAeN,EAAE,EAAE,IAAI,MAAMO,KAAKf,EAAE,CAAC,MAAMgB,EAAEC,OAAOC,SAASH,EAAE,IAAII,EAAEhB,KAAKiB,YAAYpB,EAAEe,IAAI,KAAKF,GAAGG,EAAEH,IAAIV,KAAKC,UAAUS,GAAGM,CAAC,CAAC,CAAC,WAAAC,CAAYpB,GAAG,MAAM,IAAIH,EAAEC,UAAUuB,UAAUC,WAAWtB,EAAE,CAAC,aAAAuB,CAAcvB,EAAEC,GAA8B,OAAOA,GAAzBD,EAAEwB,EAAExB,EAAEyB,GAAGxB,EAAEyB,OAAkB,CAAC,UAAAC,CAAW3B,GAAG,MAAMC,EAAEE,KAAKyB,iBAAiBf,EAAEV,KAAKC,UAAUH,GAAG,OAAOJ,EAAEgC,KAAKC,SAASjB,EAAEF,IAAI,CAACoB,EAAE5B,KAAKoB,cAAcvB,EAAEa,EAAEmB,YAAYC,EAAEhC,EAAEuB,EAAExB,EAAEwB,EAAEC,EAAEzB,EAAEyB,KAAKtB,KAAKE,UAAU,EAAO,MAAC6B,EAAE,CAACC,EAAEJ,IAAI,IAAInC,EAAEuC,EAAEJ"}