{"version":3,"file":"WeatherArrow.mjs","sources":["../../../../../../../packages/sdk/plugins/weather/Weather/WeatherArrow.ts"],"sourcesContent":["import L from 'leaflet'\n\nexport interface WeatherArrowOptions extends L.LayerOptions {\n  size?: number\n  direction?: number\n  color?: string\n  stroke?: boolean\n  weight?: number\n  fill?: boolean\n  fillColor?: string\n  fillOpacity?: number\n  item: {\n    speed: any\n    direction: any\n    direction_old: any\n  }\n}\n\nclass WeatherArrow extends L.Path {\n  private _latlng: L.LatLng\n  private _size: number\n  private _direction: number\n  private _arrowSymbol: number[]\n\n  constructor(\n    latlng: L.LatLngLiteral | L.LatLng,\n    options?: WeatherArrowOptions\n  ) {\n    super(options)\n\n    if (latlng === undefined) {\n      throw new Error('Please give a valid lat/lon-position')\n    }\n\n    L.setOptions(this, options || {})\n\n    // this._leaflet_id = this._id\n    this._latlng = L.latLng(latlng)\n    this._size = options?.size || 16\n    this._direction = ((options?.direction || 0) * Math.PI) / 180\n    const size = this._size / 2\n    this._arrowSymbol = [\n      -size,\n      0,\n      size - 6,\n      4,\n      -(size - 5),\n      1,\n      size,\n      1,\n      size,\n      -1,\n      -(size - 5),\n      -1,\n      size - 6,\n      -4,\n    ]\n\n    this.setStroke(options?.stroke ?? true)\n    this.setColor(options?.color ?? '#ff0000')\n    this.setWeight(options?.weight ?? 0.5)\n    this.setFill(options?.fill ?? true)\n    this.setFillOpacity(options?.fillOpacity ?? 1)\n    this.setFillColor(options?.color ?? '#ff0000')\n  }\n\n  setColor(color: string): this {\n    this.setStyle({ color })\n    return this.redraw()\n  }\n\n  setFillOpacity(fillOpacity: number): this {\n    this.setStyle({ fillOpacity })\n    return this.redraw()\n  }\n\n  setOpacity(opacity: number): this {\n    this.setStyle({ opacity })\n    return this.redraw()\n  }\n\n  setWeight(weight: number): this {\n    this.setStyle({ weight })\n    return this.redraw()\n  }\n\n  setFill(fill: boolean): this {\n    this.setStyle({ fill })\n    return this.redraw()\n  }\n\n  setStroke(stroke: boolean): this {\n    this.setStyle({ stroke })\n    return this.redraw()\n  }\n\n  setFillColor(fillColor: string): this {\n    this.setStyle({ fillColor })\n    return this\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected _project(): void {}\n\n  protected _update(): void {\n    this._setPath()\n  }\n\n  protected _setPath(): void {\n    const _ = this as any\n    _._path.setAttribute('d', this.getPathString())\n  }\n\n  setLatLng(latlng: L.LatLngLiteral | L.LatLng): this {\n    const oldLatLng = this._latlng\n    this._latlng = L.latLng(latlng)\n    this.fire('move', { oldLatLng, latlng })\n    return this.redraw()\n  }\n\n  setDirection(direction: number): this {\n    this._direction = direction\n    return this.redraw()\n  }\n\n  // @ts-ignore: TS6133\n  private _getLatSizeOf(size: number): number {\n    return (size / 40075017) * 360\n  }\n  // @ts-ignore: TS6133\n  private _getLngSizeOf(size: number): number {\n    return (\n      ((size / 40075017) * 360) / Math.cos((Math.PI / 180) * this._latlng.lat)\n    )\n  }\n\n  getLatLng(): L.LatLng {\n    return this._latlng\n  }\n\n  private _rotate(point: [number, number], angle: number): [number, number] {\n    const [x, y] = point\n    const sin = Math.sin(angle)\n    const cos = Math.cos(angle)\n    return [x * cos - y * sin, x * sin + y * cos]\n  }\n\n  private _rotateAllPoints(points: number[], angle: number): number[] {\n    const rotatedPoints: number[] = []\n    for (let i = 0; i < points.length; i += 2) {\n      const x = points[i]\n      const y = points[i + 1]\n      const rotated = this._rotate([x, y], angle)\n      rotatedPoints.push(rotated[0], rotated[1])\n    }\n    return rotatedPoints\n  }\n\n  private _transformAllPointsToView(points: number[]): number[] {\n    const viewPoints: number[] = []\n    const layerPoint = this._map.latLngToLayerPoint(this._latlng)\n    for (let i = 0; i < points.length; i += 2) {\n      const x = layerPoint.x + points[i]\n      const y = layerPoint.y - points[i + 1]\n      viewPoints.push(x, y)\n    }\n    return viewPoints\n  }\n\n  private _createPathFromPoints(points: number[]): string {\n    let pathString = ''\n    for (let i = 0; i < points.length; i += 2) {\n      const x = points[i]\n      const y = points[i + 1]\n      if (!pathString) {\n        pathString = `M ${x} ${y} `\n      } else {\n        pathString += `L ${x} ${y} `\n      }\n    }\n    return `${pathString} Z`\n  }\n\n  private _createViewAngleFromModel(direction: number): number {\n    return Math.PI / 2 - direction\n  }\n\n  // private _resizeAndMovePoint(\n  //   point: [number, number],\n  //   scale: [number, number],\n  //   offset: [number, number]\n  // ): [number, number] {\n  //   return [point[0] * scale[0] + offset[0], point[1] * scale[1] + offset[1]]\n  // }\n\n  getPathString(): string {\n    const viewAngle = this._createViewAngleFromModel(this._direction)\n    const transformedPoints = this._transformAllPointsToView(\n      this._rotateAllPoints(this._arrowSymbol, viewAngle)\n    )\n    return this._createPathFromPoints(transformedPoints)\n  }\n}\n\n// 创建工厂方法\nconst weatherArrow = (\n  latlng: L.LatLngLiteral | L.LatLng,\n  options?: WeatherArrowOptions\n) => new WeatherArrow(latlng, options)\n\nexport { weatherArrow }\n"],"names":["g","l","Path","constructor","t","e","i","a","n","s","c","m","super","Error","setOptions","this","_latlng","latLng","_size","size","_direction","direction","Math","PI","r","_arrowSymbol","setStroke","stroke","setColor","color","setWeight","weight","setFill","fill","setFillOpacity","fillOpacity","setFillColor","setStyle","redraw","setOpacity","opacity","fillColor","_project","_update","_setPath","_path","setAttribute","getPathString","setLatLng","fire","oldLatLng","latlng","setDirection","_getLatSizeOf","_getLngSizeOf","cos","lat","getLatLng","_rotate","sin","_rotateAllPoints","length","push","_transformAllPointsToView","_map","latLngToLayerPoint","x","y","_createPathFromPoints","_createViewAngleFromModel","L","h","u"],"mappings":"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"}