Skip to content

TypesScript

Generic Types

ts
export type IndexAny = Record<string, any>

export type AnyFunc = (...args: any[]) => any
export type AnyNumberFunc = (...args: any[]) => number
export type AnyNumbersFunc = (...args: any[]) => number[]
export type AnyArr = any[]

export type EmptyFunction = () => void

mapbox-gl Types

ts
@types/mapbox-gl: ^1.13.10
ts
import type mapboxgl from 'mapbox-gl'
import type { AnyLayer, AnySourceData, CameraOptions, EaseToOptions, FlyToOptions, LngLatBoundsLike, LngLatLike, Map } from 'mapbox-gl'

export type MapboxglNamespace = typeof mapboxgl
export interface SupermapMapboxglNamespace extends MapboxglNamespace {
  supermap: any
}
export interface MapboxInstance extends Map {
  _removed: boolean
  __deck: any
  mapboxgl: SupermapMapboxglNamespace
  updateImage(
    name: string,
    image:
      | HTMLImageElement
      | ArrayBufferView
      | { width: number; height: number; data: Uint8Array | Uint8ClampedArray }
      | ImageData
      | ImageBitmap,
    options?: { pixelRatio?: number | undefined; sdf?: boolean | undefined },
  ): void
}

export interface MapImageCanvas {
  width: number;
  height: number;
  data: Uint8Array | Uint8ClampedArray
  [x: string]: any
}

export type MapInstance = {
  addSource: (id: string, source: AnySourceData) => void;
  getSource: (id: string) => mapboxgl.AnySourceImpl;
  addLayer: (layer: AnyLayer, beforeId?: string) => void;
  moveLayer: (id: string, beforeId?: string) => void;
  getZoom: () => number;
  setZoom: (zoomValue: number) => void;
  getCenter: () => [number, number]
  setCenter: (centerValue: number[]) => void
  resize: () => void
  reorderLayers: (layerIds: string[]) => void
  getBearing: () => number
  setBearing: (bearingValue: number) => void
  getPitch: () => number
  setPitch: (pitchValue: number) => void
  jumpTo: (options: CameraOptions) => void
  easeTo: (options: EaseToOptions) => Promise<void>
  flyTo: (options: FlyToOptions) => Promise<void>
  stop: () => void
  cameraForBounds: (bounds: LngLatBoundsLike, options: Record<string, any>) => mapboxgl.CameraForBoundsResult | undefined
  fitBounds: (bounds: LngLatBoundsLike, options: Record<string, any>) => Promise<void>
  project: (lnglatLike: LngLatLike) => mapboxgl.Point;
}

export type MapResolved = {
  mapboxInstance: MapboxInstance
  mapInstance: MapInstance
}

export type VectorLayerDataItem = { coordinates: Array<number[]>, properties?: Record<string, any> }
export type VectorLayerData = VectorLayerDataItem[]
export type SymbolLayerDataItem = {
  coordinates: number[]
  properties?: Record<string, any>
}
export type SymbolLayerData = SymbolLayerDataItem[]

Usage

ts
import type {
  MapImageCanvas,
  MapInstance,
  MapResolved,
  MapboxInstance,
  SymbolLayerData,
  SymbolLayerDataItem,
  VectorLayerData,
  VectorLayerDataItem,
} from '@mapbox-vue3/core'