{"version":3,"file":"TileLayerFunctional.mjs","sources":["../../../../../../../packages/sdk/plugins/weather/util/TileLayerFunctional.ts"],"sourcesContent":["import * as L from 'leaflet'\nimport type { TileLayerOptions } from 'leaflet'\n\ninterface TileFunction {\n  (view: any): string | Promise<string>\n}\n\nclass TileLayerFunctional extends L.TileLayer {\n  private _tileFunction: TileFunction\n\n  constructor(tileFunction: TileFunction, options?: TileLayerOptions) {\n    super('', options)\n    this._tileFunction = tileFunction\n  }\n\n  override getTileUrl(tilePoint: L.Point): any {\n    const map = this._map\n    const crs = map.options.crs as L.CRS\n    const tileSize = this.options.tileSize as number\n    const zoom = (tilePoint as any).z\n    const nwPoint = tilePoint.multiplyBy(tileSize)\n    const sePoint = nwPoint.add(new L.Point(tileSize, tileSize))\n    const nw = crs.project(map.unproject(nwPoint, zoom))\n    const se = crs.project(map.unproject(sePoint, zoom))\n    const bbox = [nw.x, se.y, se.x, nw.y].join(',')\n\n    const view = {\n      bbox,\n      width: tileSize,\n      height: tileSize,\n      zoom,\n      tile: {\n        row: this.options.tms\n          ? (this as any)._tileNumBounds.max.y - tilePoint.y\n          : tilePoint.y,\n        column: tilePoint.x,\n      },\n      subdomain: (this as any)._getSubdomain(tilePoint),\n    }\n\n    return this._tileFunction(view)\n  }\n\n  _loadTile(tile: any, tilePoint: L.Point): void {\n    tile._layer = this\n    tile.onload = this._tileOnLoad\n    tile.onerror = this._tileOnError\n    ;(this as any)._adjustTilePoint(tilePoint)\n    const tileUrl = this.getTileUrl(tilePoint) as any\n\n    if (typeof tileUrl === 'string') {\n      ;(this as any).src = tileUrl\n      this.fire('tileloadstart', { tile, url: tile.src })\n    } else if (tileUrl && typeof tileUrl.then === 'function') {\n      tileUrl.then((tileUrl: any) => {\n        tile.src = tileUrl\n        this.fire('tileloadstart', { tile, url: tile.src })\n      })\n    }\n  }\n}\n\nfunction tileLayerFunctional(\n  tileFunction: TileFunction,\n  options?: TileLayerOptions\n): TileLayerFunctional {\n  return new TileLayerFunctional(tileFunction, options)\n}\n\nexport { TileLayerFunctional, tileLayerFunctional }\n"],"names":["y","u","TileLayer","constructor","t","n","super","this","_tileFunction","getTileUrl","_map","i","options","crs","o","tileSize","s","z","a","multiplyBy","p","add","Point","c","project","unproject","l","h","bbox","x","join","width","height","zoom","tile","row","tms","_tileNumBounds","max","column","subdomain","_getSubdomain","_loadTile","_layer","onload","_tileOnLoad","onerror","_tileOnError","_adjustTilePoint","src","fire","url","then","m","e","r"],"mappings":"0BAA0B,MAAMA,UAAUC,EAAEC,UAAU,WAAAC,CAAYC,EAAEC,GAAGC,MAAM,GAAGD,GAAGE,KAAKC,cAAcJ,CAAC,CAAC,UAAAK,CAAWL,GAAG,MAAMC,EAAEE,KAAKG,KAAKC,EAAEN,EAAEO,QAAQC,IAAIC,EAAEP,KAAKK,QAAQG,SAASC,EAAEZ,EAAEa,EAAEC,EAAEd,EAAEe,WAAWL,GAAGM,EAAEF,EAAEG,IAAI,IAAIpB,EAAEqB,MAAMR,EAAEA,IAAIS,EAAEZ,EAAEa,QAAQnB,EAAEoB,UAAUP,EAAEF,IAAIU,EAAEf,EAAEa,QAAQnB,EAAEoB,UAAUL,EAAEJ,IAAIW,EAAE,CAACC,KAAK,CAACL,EAAEM,EAAEH,EAAE1B,EAAE0B,EAAEG,EAAEN,EAAEvB,GAAG8B,KAAK,KAAKC,MAAMjB,EAAEkB,OAAOlB,EAAEmB,KAAKjB,EAAEkB,KAAK,CAACC,IAAI5B,KAAKK,QAAQwB,IAAI7B,KAAK8B,eAAeC,IAAItC,EAAEI,EAAEJ,EAAEI,EAAEJ,EAAEuC,OAAOnC,EAAEyB,GAAGW,UAAUjC,KAAKkC,cAAcrC,IAAI,OAAOG,KAAKC,cAAcmB,EAAE,CAAC,SAAAe,CAAUtC,EAAEC,GAAGD,EAAEuC,OAAOpC,KAAKH,EAAEwC,OAAOrC,KAAKsC,YAAYzC,EAAE0C,QAAQvC,KAAKwC,aAAaxC,KAAKyC,iBAAiB3C,GAAG,MAAMM,EAAEJ,KAAKE,WAAWJ,GAAa,iBAAHM,GAAaJ,KAAK0C,IAAItC,EAAEJ,KAAK2C,KAAK,gBAAgB,CAAChB,KAAK9B,EAAE+C,IAAI/C,EAAE6C,OAAOtC,GAAkB,mBAARA,EAAEyC,MAAkBzC,EAAEyC,MAAKtC,IAAIV,EAAE6C,IAAInC,EAAEP,KAAK2C,KAAK,gBAAgB,CAAChB,KAAK9B,EAAE+C,IAAI/C,EAAE6C,QAAO,EAAE,SAASI,EAAEC,EAAEC,GAAG,OAAO,IAAIvD,EAAEsD,EAAEC,EAAE"}