{
  "version": 3,
  "sources": ["../src/index.ts", "../src/mapbox-overlay.ts", "../src/deck-utils.ts", "../src/resolve-layers.ts", "../src/mapbox-layer.ts"],
  "sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {default as MapboxOverlay} from './mapbox-overlay';\n\nexport type {MapboxOverlayProps} from './mapbox-overlay';\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Deck, assert} from '@deck.gl/core';\nimport {\n  getViewState,\n  getDefaultView,\n  getDeckInstance,\n  removeDeckInstance,\n  getDefaultParameters\n} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent, ControlPosition} from './types';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\nimport {log} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n  DeckProps,\n  | 'width'\n  | 'height'\n  | 'gl'\n  | 'parent'\n  | 'canvas'\n  | '_customRender'\n  | 'viewState'\n  | 'initialViewState'\n  | 'controller'\n> & {\n  interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n  private _props: MapboxOverlayProps;\n  private _deck?: Deck<any>;\n  private _map?: Map;\n  private _container?: HTMLDivElement;\n  private _interleaved: boolean;\n  private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n  constructor(props: MapboxOverlayProps) {\n    const {interleaved = false, ...otherProps} = props;\n    this._interleaved = interleaved;\n    this._props = otherProps;\n  }\n\n  /** Update (partial) props of the underlying Deck instance. */\n  setProps(props: MapboxOverlayProps): void {\n    if (this._interleaved && props.layers) {\n      resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n    }\n\n    Object.assign(this._props, props);\n\n    if (this._deck && this._map) {\n      this._deck.setProps({\n        ...this._props,\n        parameters: {\n          ...getDefaultParameters(this._map, this._interleaved),\n          ...this._props.parameters\n        }\n      });\n    }\n  }\n\n  // The local Map type is for internal typecheck only. It does not necesarily satisefy mapbox/maplibre types at runtime.\n  // Do not restrict the argument type here to avoid type conflict.\n  /** Called when the control is added to a map */\n  onAdd(map: unknown): HTMLDivElement {\n    this._map = map as Map;\n    return this._interleaved ? this._onAddInterleaved(map as Map) : this._onAddOverlaid(map as Map);\n  }\n\n  private _onAddOverlaid(map: Map): HTMLDivElement {\n    /* global document */\n    const container = document.createElement('div');\n    Object.assign(container.style, {\n      position: 'absolute',\n      left: 0,\n      top: 0,\n      textAlign: 'initial',\n      pointerEvents: 'none'\n    });\n    this._container = container;\n\n    this._deck = new Deck<any>({\n      ...this._props,\n      parent: container,\n      parameters: {...getDefaultParameters(map, false), ...this._props.parameters},\n      views: this._props.views || getDefaultView(map),\n      viewState: getViewState(map)\n    });\n\n    map.on('resize', this._updateContainerSize);\n    map.on('render', this._updateViewState);\n    map.on('mousedown', this._handleMouseEvent);\n    map.on('dragstart', this._handleMouseEvent);\n    map.on('drag', this._handleMouseEvent);\n    map.on('dragend', this._handleMouseEvent);\n    map.on('mousemove', this._handleMouseEvent);\n    map.on('mouseout', this._handleMouseEvent);\n    map.on('click', this._handleMouseEvent);\n    map.on('dblclick', this._handleMouseEvent);\n\n    this._updateContainerSize();\n    return container;\n  }\n\n  private _onAddInterleaved(map: Map): HTMLDivElement {\n    // @ts-ignore non-public map property\n    const gl = map.painter.context.gl;\n    if (gl instanceof WebGLRenderingContext) {\n      log.warn(\n        'Incompatible basemap library. See: https://deck.gl/docs/api-reference/mapbox/overview#compatibility'\n      )();\n    }\n    this._deck = getDeckInstance({\n      map,\n      gl,\n      deck: new Deck({\n        ...this._props,\n        gl\n      })\n    });\n\n    map.on('styledata', this._handleStyleChange);\n    resolveLayers(map, this._deck, [], this._props.layers);\n\n    return document.createElement('div');\n  }\n\n  /** Called when the control is removed from a map */\n  onRemove(): void {\n    const map = this._map;\n\n    if (map) {\n      if (this._interleaved) {\n        this._onRemoveInterleaved(map);\n      } else {\n        this._onRemoveOverlaid(map);\n      }\n    }\n\n    this._deck = undefined;\n    this._map = undefined;\n    this._container = undefined;\n  }\n\n  private _onRemoveOverlaid(map: Map): void {\n    map.off('resize', this._updateContainerSize);\n    map.off('render', this._updateViewState);\n    map.off('mousedown', this._handleMouseEvent);\n    map.off('dragstart', this._handleMouseEvent);\n    map.off('drag', this._handleMouseEvent);\n    map.off('dragend', this._handleMouseEvent);\n    map.off('mousemove', this._handleMouseEvent);\n    map.off('mouseout', this._handleMouseEvent);\n    map.off('click', this._handleMouseEvent);\n    map.off('dblclick', this._handleMouseEvent);\n    this._deck?.finalize();\n  }\n\n  private _onRemoveInterleaved(map: Map): void {\n    map.off('styledata', this._handleStyleChange);\n    resolveLayers(map, this._deck, this._props.layers, []);\n    removeDeckInstance(map);\n  }\n\n  getDefaultPosition(): ControlPosition {\n    return 'top-left';\n  }\n\n  /** Forwards the Deck.pickObject method */\n  pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n    assert(this._deck);\n    return this._deck.pickObject(params);\n  }\n\n  /** Forwards the Deck.pickMultipleObjects method */\n  pickMultipleObjects(\n    params: Parameters<Deck['pickMultipleObjects']>[0]\n  ): ReturnType<Deck['pickMultipleObjects']> {\n    assert(this._deck);\n    return this._deck.pickMultipleObjects(params);\n  }\n\n  /** Forwards the Deck.pickObjects method */\n  pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n    assert(this._deck);\n    return this._deck.pickObjects(params);\n  }\n\n  /** Remove from map and releases all resources */\n  finalize() {\n    if (this._map) {\n      this._map.removeControl(this);\n    }\n  }\n\n  /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n  getCanvas(): HTMLCanvasElement | null {\n    if (!this._map) {\n      return null;\n    }\n    return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\n  }\n\n  private _handleStyleChange = () => {\n    resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n  };\n\n  private _updateContainerSize = () => {\n    if (this._map && this._container) {\n      const {clientWidth, clientHeight} = this._map.getContainer();\n      Object.assign(this._container.style, {\n        width: `${clientWidth}px`,\n        height: `${clientHeight}px`\n      });\n    }\n  };\n\n  private _updateViewState = () => {\n    const deck = this._deck;\n    const map = this._map;\n    if (deck && map) {\n      deck.setProps({\n        views: this._props.views || getDefaultView(map),\n        viewState: getViewState(map)\n      });\n      // Redraw immediately if view state has changed\n      if (deck.isInitialized) {\n        deck.redraw();\n      }\n    }\n  };\n\n  // eslint-disable-next-line complexity\n  private _handleMouseEvent = (event: MapMouseEvent) => {\n    const deck = this._deck;\n    if (!deck || !deck.isInitialized) {\n      return;\n    }\n\n    const mockEvent: {\n      type: string;\n      deltaX?: number;\n      deltaY?: number;\n      offsetCenter: {x: number; y: number};\n      srcEvent: MapMouseEvent;\n      tapCount?: number;\n    } = {\n      type: event.type,\n      offsetCenter: event.point,\n      srcEvent: event\n    };\n\n    const lastDown = this._lastMouseDownPoint;\n    if (!event.point && lastDown) {\n      // drag* events do not contain a `point` field\n      mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n      mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n      mockEvent.offsetCenter = {\n        x: lastDown.x + mockEvent.deltaX,\n        y: lastDown.y + mockEvent.deltaY\n      };\n    }\n\n    switch (mockEvent.type) {\n      case 'mousedown':\n        deck._onPointerDown(mockEvent as unknown as MjolnirPointerEvent);\n        this._lastMouseDownPoint = {\n          ...event.point,\n          clientX: event.originalEvent.clientX,\n          clientY: event.originalEvent.clientY\n        };\n        break;\n\n      case 'dragstart':\n        mockEvent.type = 'panstart';\n        deck._onEvent(mockEvent as unknown as MjolnirGestureEvent);\n        break;\n\n      case 'drag':\n        mockEvent.type = 'panmove';\n        deck._onEvent(mockEvent as unknown as MjolnirGestureEvent);\n        break;\n\n      case 'dragend':\n        mockEvent.type = 'panend';\n        deck._onEvent(mockEvent as unknown as MjolnirGestureEvent);\n        break;\n\n      case 'click':\n        mockEvent.tapCount = 1;\n        deck._onEvent(mockEvent as unknown as MjolnirGestureEvent);\n        break;\n\n      case 'dblclick':\n        mockEvent.type = 'click';\n        mockEvent.tapCount = 2;\n        deck._onEvent(mockEvent as unknown as MjolnirGestureEvent);\n        break;\n\n      case 'mousemove':\n        mockEvent.type = 'pointermove';\n        deck._onPointerMove(mockEvent as unknown as MjolnirPointerEvent);\n        break;\n\n      case 'mouseout':\n        mockEvent.type = 'pointerleave';\n        deck._onPointerMove(mockEvent as unknown as MjolnirPointerEvent);\n        break;\n\n      default:\n        return;\n    }\n  };\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {Deck, MapView, _GlobeView as GlobeView, _flatten as flatten} from '@deck.gl/core';\nimport type {Viewport, MapViewState, Layer} from '@deck.gl/core';\nimport type {Parameters} from '@luma.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from './types';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\n\ntype UserData = {\n  isExternal: boolean;\n  currentViewport?: Viewport | null;\n  mapboxLayers: Set<MapboxLayer<any>>;\n  // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n  map,\n  gl,\n  deck\n}: {\n  map: Map & {__deck?: Deck<any> | null};\n  gl: WebGL2RenderingContext;\n  deck?: Deck<any>;\n}): Deck<any> {\n  // Only create one deck instance per context\n  if (map.__deck) {\n    return map.__deck;\n  }\n\n  // Only initialize certain props once per context\n  const customRender = deck?.props._customRender;\n  const onLoad = deck?.props.onLoad;\n\n  const deckProps = {\n    ...deck?.props,\n    _customRender: () => {\n      map.triggerRepaint();\n      // customRender may be subscribed by DeckGL React component to update child props\n      // make sure it is still called\n      // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n      // Rerender will be triggered by MapboxLayer's render()\n      customRender?.('');\n    }\n  };\n  deckProps.parameters = {...getDefaultParameters(map, true), ...deckProps.parameters};\n  deckProps.views ||= getDefaultView(map);\n\n  let deckInstance: Deck;\n\n  if (!deck || deck.props.gl === gl) {\n    // If deck isn't defined (Internal MapboxLayer use case),\n    // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n    // block deck from setting the canvas size, and use the map's viewState to drive deck.\n    // Otherwise, we use deck's viewState to drive the map.\n    Object.assign(deckProps, {\n      gl,\n      width: null,\n      height: null,\n      touchAction: 'unset',\n      viewState: getViewState(map)\n    });\n    if (deck?.isInitialized) {\n      watchMapMove(deck, map);\n    } else {\n      deckProps.onLoad = () => {\n        onLoad?.();\n        watchMapMove(deckInstance, map);\n      };\n    }\n  }\n\n  if (deck) {\n    deckInstance = deck;\n    deck.setProps(deckProps);\n    (deck.userData as UserData).isExternal = true;\n  } else {\n    deckInstance = new Deck(deckProps);\n    map.on('remove', () => {\n      removeDeckInstance(map);\n    });\n  }\n\n  (deckInstance.userData as UserData).mapboxLayers = new Set();\n  // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n  map.__deck = deckInstance;\n  map.on('render', () => {\n    if (deckInstance.isInitialized) afterRender(deckInstance, map);\n  });\n\n  return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n  const _handleMapMove = () => {\n    if (deck.isInitialized) {\n      // call view state methods\n      onMapMove(deck, map);\n    } else {\n      // deregister itself when deck is finalized\n      map.off('move', _handleMapMove);\n    }\n  };\n  map.on('move', _handleMapMove);\n}\n\nexport function removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n  map.__deck?.finalize();\n  map.__deck = null;\n}\n\nexport function getDefaultParameters(map: Map, interleaved: boolean): Parameters {\n  const result: Parameters = interleaved\n    ? {\n        depthWriteEnabled: true,\n        depthCompare: 'less-equal',\n        depthBias: 0,\n        blend: true,\n        blendColorSrcFactor: 'src-alpha',\n        blendColorDstFactor: 'one-minus-src-alpha',\n        blendAlphaSrcFactor: 'one',\n        blendAlphaDstFactor: 'one-minus-src-alpha',\n        blendColorOperation: 'add',\n        blendAlphaOperation: 'add'\n      }\n    : {};\n  if (getProjection(map) === 'globe') {\n    result.cullMode = 'back';\n  }\n  return result;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n  (deck.userData as UserData).mapboxLayers.add(layer);\n  updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n  (deck.userData as UserData).mapboxLayers.delete(layer);\n  updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n  updateLayers(deck);\n}\n\nexport function drawLayer(\n  deck: Deck,\n  map: Map,\n  layer: MapboxLayer<any>,\n  renderParameters: any\n): void {\n  let {currentViewport} = deck.userData as UserData;\n  let clearStack: boolean = false;\n  if (!currentViewport) {\n    // This is the first layer drawn in this render cycle.\n    // Generate viewport from the current map state.\n    currentViewport = getViewport(deck, map, renderParameters);\n    (deck.userData as UserData).currentViewport = currentViewport;\n    clearStack = true;\n  }\n\n  if (!deck.isInitialized) {\n    return;\n  }\n\n  deck._drawLayers('mapbox-repaint', {\n    viewports: [currentViewport],\n    layerFilter: ({layer: deckLayer}) =>\n      layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\n    clearStack,\n    clearCanvas: false\n  });\n}\n\nfunction getProjection(map: Map): 'mercator' | 'globe' {\n  const projection = map.getProjection?.();\n  const type =\n    // maplibre projection spec\n    projection?.type ||\n    // mapbox projection spec\n    projection?.name;\n  if (type === 'globe') {\n    return 'globe';\n  }\n  if (type && type !== 'mercator') {\n    throw new Error('Unsupported projection');\n  }\n  return 'mercator';\n}\n\nexport function getDefaultView(map: Map): GlobeView | MapView {\n  if (getProjection(map) === 'globe') {\n    return new GlobeView({id: 'mapbox'});\n  }\n  return new MapView({id: 'mapbox'});\n}\n\nexport function getViewState(map: Map): MapViewState & {\n  repeat: boolean;\n  padding: {\n    left: number;\n    right: number;\n    top: number;\n    bottom: number;\n  };\n} {\n  const {lng, lat} = map.getCenter();\n\n  const viewState: MapViewState & {\n    repeat: boolean;\n    padding: {\n      left: number;\n      right: number;\n      top: number;\n      bottom: number;\n    };\n  } = {\n    // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n    // https://github.com/visgl/deck.gl/issues/6894\n    longitude: ((lng + 540) % 360) - 180,\n    latitude: lat,\n    zoom: map.getZoom(),\n    bearing: map.getBearing(),\n    pitch: map.getPitch(),\n    padding: map.getPadding(),\n    repeat: map.getRenderWorldCopies()\n  };\n\n  if (map.getTerrain?.()) {\n    // When the base map has terrain, we need to target the camera at the terrain surface\n    centerCameraOnTerrain(map, viewState);\n  }\n\n  return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n  if (map.getFreeCameraOptions) {\n    // mapbox-gl v2\n    const {position} = map.getFreeCameraOptions();\n    if (!position || position.z === undefined) {\n      return;\n    }\n\n    // @ts-ignore transform is not typed\n    const height = map.transform.height;\n    const {longitude, latitude, pitch} = viewState;\n\n    // Convert mapbox mercator coordinate to deck common space\n    const cameraX = position.x * TILE_SIZE;\n    const cameraY = (1 - position.y) * TILE_SIZE;\n    const cameraZ = position.z * TILE_SIZE;\n\n    // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n    const center = lngLatToWorld([longitude, latitude]);\n    const dx = cameraX - center[0];\n    const dy = cameraY - center[1];\n    const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n    const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n    const altitudePixels = 1.5 * height;\n    const scale =\n      pitchRadians < 0.001\n        ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n          (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n        : (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n    viewState.zoom = Math.log2(scale);\n\n    const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n    const surfaceElevation = cameraZ - cameraZFromSurface;\n    viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n  }\n  // @ts-ignore transform is not typed\n  else if (typeof map.transform.elevation === 'number') {\n    // maplibre-gl\n    // @ts-ignore transform is not typed\n    viewState.position = [0, 0, map.transform.elevation];\n  }\n}\n\n// Since maplibre-gl@5\n// https://github.com/maplibre/maplibre-gl-js/blob/main/src/style/style_layer/custom_style_layer.ts\ntype MaplibreRenderParameters = {\n  farZ: number;\n  nearZ: number;\n  fov: number;\n  modelViewProjectionMatrix: number[];\n  projectionMatrix: number[];\n};\n\nfunction getViewport(deck: Deck, map: Map, renderParameters?: unknown): Viewport {\n  const viewState = getViewState(map);\n  const view = getDefaultView(map);\n\n  if (renderParameters) {\n    // Called from MapboxLayer.render\n    // Magic number, matches mapbox-gl@>=1.3.0's projection matrix\n    view.props.nearZMultiplier = 0.2;\n  }\n\n  // Get the base map near/far plane\n  // renderParameters is maplibre API but not mapbox\n  // Transform is not an official API, properties could be undefined for older versions\n  const nearZ = (renderParameters as MaplibreRenderParameters)?.nearZ ?? map.transform._nearZ;\n  const farZ = (renderParameters as MaplibreRenderParameters)?.farZ ?? map.transform._farZ;\n  if (Number.isFinite(nearZ)) {\n    viewState.nearZ = nearZ / map.transform.height;\n    viewState.farZ = farZ / map.transform.height;\n  }\n  // Otherwise fallback to default calculation using nearZMultiplier/farZMultiplier\n\n  return view.makeViewport({\n    width: deck.width,\n    height: deck.height,\n    viewState\n  }) as Viewport;\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n  const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n  if (isExternal) {\n    // Draw non-Mapbox layers\n    const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n    const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n    const hasNonMapboxLayers = deckLayers.some(\n      layer => layer && !mapboxLayerIds.includes(layer.id)\n    );\n    let viewports = deck.getViewports();\n    const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n    const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n    if (hasNonMapboxLayers || hasNonMapboxViews) {\n      if (mapboxViewportIdx >= 0) {\n        viewports = viewports.slice();\n        viewports[mapboxViewportIdx] = getViewport(deck, map);\n      }\n\n      deck._drawLayers('mapbox-repaint', {\n        viewports,\n        layerFilter: params =>\n          (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n          (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n        clearCanvas: false\n      });\n    }\n  }\n\n  // End of render cycle, clear generated viewport\n  (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n  deck.setProps({\n    viewState: getViewState(map)\n  });\n  // Camera changed, will trigger a map repaint right after this\n  // Clear any change flag triggered by setting viewState so that deck does not request\n  // a second repaint\n  deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n  if ((deck.userData as UserData).isExternal) {\n    return;\n  }\n\n  const layers: Layer[] = [];\n  (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n    const LayerType = deckLayer.props.type;\n    const layer = new LayerType(deckLayer.props);\n    layers.push(layer);\n  });\n  deck.setProps({layers});\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {_flatten as flatten} from '@deck.gl/core';\nimport MapboxLayer from './mapbox-layer';\n\nimport type {Deck, LayersList, Layer} from '@deck.gl/core';\nimport type {Map} from './types';\n\nconst UNDEFINED_BEFORE_ID = '__UNDEFINED__';\n\n/** Insert Deck layers into the mapbox Map according to the user-defined order */\n// eslint-disable-next-line complexity, max-statements\nexport function resolveLayers(\n  map?: Map,\n  deck?: Deck,\n  oldLayers?: LayersList,\n  newLayers?: LayersList\n) {\n  // Wait until map style is loaded\n  // @ts-ignore non-public map property\n  if (!map || !deck || !map.style || !map.style._loaded) {\n    return;\n  }\n\n  const layers = flatten(newLayers, Boolean) as Layer[];\n\n  if (oldLayers !== newLayers) {\n    // Step 1: remove layers that no longer exist\n    const prevLayers = flatten(oldLayers, Boolean) as Layer[];\n    const prevLayerIds = new Set<string>(prevLayers.map(l => l.id));\n\n    for (const layer of layers) {\n      prevLayerIds.delete(layer.id);\n    }\n\n    for (const id of prevLayerIds) {\n      if (map.getLayer(id)) {\n        map.removeLayer(id);\n      }\n    }\n  }\n\n  // Step 2: add missing layers\n  for (const layer of layers) {\n    const mapboxLayer = map.getLayer(layer.id) as MapboxLayer<Layer>;\n    if (mapboxLayer) {\n      // Mapbox's map.getLayer() had a breaking change in v3.6.0, see https://github.com/visgl/deck.gl/issues/9086\n      // @ts-expect-error not typed\n      const layerInstance = mapboxLayer.implementation || mapboxLayer;\n      layerInstance.setProps(layer.props);\n    } else {\n      map.addLayer(\n        new MapboxLayer({\n          id: layer.id,\n          deck,\n          // @ts-expect-error slot is not defined in LayerProps\n          slot: layer.props.slot\n        }),\n        // @ts-expect-error beforeId is not defined in LayerProps\n        layer.props.beforeId\n      );\n    }\n  }\n\n  // Step 3: check the order of layers\n  // If beforeId is defined, the deck layer should always render before the mapbox layer [beforeId]\n  // If beforeId is not defined, the deck layer should appear after all mapbox layers\n  // When two deck layers share the same beforeId, they are rendered in the order that is passed into Deck props.layers\n  // @ts-ignore non-public map property\n  const mapLayers: string[] = map.style._order;\n\n  // Group deck layers by beforeId\n  const layerGroups: Record<string, string[]> = {};\n  for (const layer of layers) {\n    // @ts-expect-error beforeId is not defined in LayerProps\n    let {beforeId} = layer.props;\n    if (!beforeId || !mapLayers.includes(beforeId)) {\n      beforeId = UNDEFINED_BEFORE_ID;\n    }\n    layerGroups[beforeId] = layerGroups[beforeId] || [];\n    layerGroups[beforeId].push(layer.id);\n  }\n\n  for (const beforeId in layerGroups) {\n    const layerGroup = layerGroups[beforeId];\n    let lastLayerIndex =\n      beforeId === UNDEFINED_BEFORE_ID ? mapLayers.length : mapLayers.indexOf(beforeId);\n    let lastLayerId = beforeId === UNDEFINED_BEFORE_ID ? undefined : beforeId;\n    for (let i = layerGroup.length - 1; i >= 0; i--) {\n      const layerId = layerGroup[i];\n      const layerIndex = mapLayers.indexOf(layerId);\n      if (layerIndex !== lastLayerIndex - 1) {\n        map.moveLayer(layerId, lastLayerId);\n        if (layerIndex > lastLayerIndex) {\n          // The last layer's index have changed\n          lastLayerIndex++;\n        }\n      }\n      lastLayerIndex--;\n      lastLayerId = layerId;\n    }\n  }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from './types';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n  id: string;\n  renderingMode?: '2d' | '3d';\n  deck?: Deck;\n  /* Mapbox v3 Standard style */\n  slot?: 'bottom' | 'middle' | 'top';\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n  id: string;\n  type: 'custom';\n  renderingMode: '2d' | '3d';\n  /* Mapbox v3 Standard style */\n  slot?: 'bottom' | 'middle' | 'top';\n  map: Map | null;\n  deck: Deck | null;\n  props: MapboxLayerProps<LayerT>;\n\n  /* eslint-disable no-this-before-super */\n  constructor(props: MapboxLayerProps<LayerT>) {\n    if (!props.id) {\n      throw new Error('Layer must have an unique id');\n    }\n\n    this.id = props.id;\n    this.type = 'custom';\n    this.renderingMode = props.renderingMode || '3d';\n    this.slot = props.slot;\n    this.map = null;\n    this.deck = null;\n    this.props = props;\n  }\n\n  /* Mapbox custom layer methods */\n\n  onAdd(map: Map, gl: WebGL2RenderingContext): void {\n    this.map = map;\n    this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n    addLayer(this.deck, this);\n  }\n\n  onRemove(): void {\n    if (this.deck) {\n      removeLayer(this.deck, this);\n    }\n  }\n\n  setProps(props: MapboxLayerProps<LayerT>) {\n    // id cannot be changed\n    Object.assign(this.props, props, {id: this.id});\n    // safe guard in case setProps is called before onAdd\n    if (this.deck) {\n      updateLayer(this.deck, this);\n    }\n  }\n\n  render(gl, renderParameters) {\n    drawLayer(this.deck!, this.map!, this, renderParameters);\n  }\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACIA,IAAAA,eAA2B;;;ACA3B,kBAA0E;AAM1E,0BAA2C;AAU3C,IAAM,YAAY;AAClB,IAAM,qBAAqB,KAAK,KAAK;AAG/B,SAAU,gBAAgB,EAC9B,KACA,IACA,KAAI,GAKL;AAEC,MAAI,IAAI,QAAQ;AACd,WAAO,IAAI;EACb;AAGA,QAAM,eAAe,6BAAM,MAAM;AACjC,QAAM,SAAS,6BAAM,MAAM;AAE3B,QAAM,YAAY;IAChB,GAAG,6BAAM;IACT,eAAe,MAAK;AAClB,UAAI,eAAc;AAKlB,mDAAe;IACjB;;AAEF,YAAU,aAAa,EAAC,GAAG,qBAAqB,KAAK,IAAI,GAAG,GAAG,UAAU,WAAU;AACnF,YAAU,UAAV,UAAU,QAAU,eAAe,GAAG;AAEtC,MAAI;AAEJ,MAAI,CAAC,QAAQ,KAAK,MAAM,OAAO,IAAI;AAKjC,WAAO,OAAO,WAAW;MACvB;MACA,OAAO;MACP,QAAQ;MACR,aAAa;MACb,WAAW,aAAa,GAAG;KAC5B;AACD,QAAI,6BAAM,eAAe;AACvB,mBAAa,MAAM,GAAG;IACxB,OAAO;AACL,gBAAU,SAAS,MAAK;AACtB;AACA,qBAAa,cAAc,GAAG;MAChC;IACF;EACF;AAEA,MAAI,MAAM;AACR,mBAAe;AACf,SAAK,SAAS,SAAS;AACtB,SAAK,SAAsB,aAAa;EAC3C,OAAO;AACL,mBAAe,IAAI,iBAAK,SAAS;AACjC,QAAI,GAAG,UAAU,MAAK;AACpB,yBAAmB,GAAG;IACxB,CAAC;EACH;AAEC,eAAa,SAAsB,eAAe,oBAAI,IAAG;AAE1D,MAAI,SAAS;AACb,MAAI,GAAG,UAAU,MAAK;AACpB,QAAI,aAAa;AAAe,kBAAY,cAAc,GAAG;EAC/D,CAAC;AAED,SAAO;AACT;AAEA,SAAS,aAAa,MAAY,KAAiC;AACjE,QAAM,iBAAiB,MAAK;AAC1B,QAAI,KAAK,eAAe;AAEtB,gBAAU,MAAM,GAAG;IACrB,OAAO;AAEL,UAAI,IAAI,QAAQ,cAAc;IAChC;EACF;AACA,MAAI,GAAG,QAAQ,cAAc;AAC/B;AAEM,SAAU,mBAAmB,KAAiC;AAlHpE;AAmHE,YAAI,WAAJ,mBAAY;AACZ,MAAI,SAAS;AACf;AAEM,SAAU,qBAAqB,KAAU,aAAoB;AACjE,QAAM,SAAqB,cACvB;IACE,mBAAmB;IACnB,cAAc;IACd,WAAW;IACX,OAAO;IACP,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;MAEvB,CAAA;AACJ,MAAI,cAAc,GAAG,MAAM,SAAS;AAClC,WAAO,WAAW;EACpB;AACA,SAAO;AACT;AAEM,SAAU,SAAS,MAAY,OAAuB;AACzD,OAAK,SAAsB,aAAa,IAAI,KAAK;AAClD,eAAa,IAAI;AACnB;AAEM,SAAU,YAAY,MAAY,OAAuB;AAC5D,OAAK,SAAsB,aAAa,OAAO,KAAK;AACrD,eAAa,IAAI;AACnB;AAEM,SAAU,YAAY,MAAY,OAAuB;AAC7D,eAAa,IAAI;AACnB;AAEM,SAAU,UACd,MACA,KACA,OACA,kBAAqB;AAErB,MAAI,EAAC,gBAAe,IAAI,KAAK;AAC7B,MAAI,aAAsB;AAC1B,MAAI,CAAC,iBAAiB;AAGpB,sBAAkB,YAAY,MAAM,KAAK,gBAAgB;AACxD,SAAK,SAAsB,kBAAkB;AAC9C,iBAAa;EACf;AAEA,MAAI,CAAC,KAAK,eAAe;AACvB;EACF;AAEA,OAAK,YAAY,kBAAkB;IACjC,WAAW,CAAC,eAAe;IAC3B,aAAa,CAAC,EAAC,OAAO,UAAS,MAC7B,MAAM,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,SAAS,SAAS;IAC3E;IACA,aAAa;GACd;AACH;AAEA,SAAS,cAAc,KAAQ;AAvL/B;AAwLE,QAAM,cAAa,SAAI,kBAAJ;AACnB,QAAM;;KAEJ,yCAAY;KAEZ,yCAAY;;AACd,MAAI,SAAS,SAAS;AACpB,WAAO;EACT;AACA,MAAI,QAAQ,SAAS,YAAY;AAC/B,UAAM,IAAI,MAAM,wBAAwB;EAC1C;AACA,SAAO;AACT;AAEM,SAAU,eAAe,KAAQ;AACrC,MAAI,cAAc,GAAG,MAAM,SAAS;AAClC,WAAO,IAAI,YAAAC,WAAU,EAAC,IAAI,SAAQ,CAAC;EACrC;AACA,SAAO,IAAI,oBAAQ,EAAC,IAAI,SAAQ,CAAC;AACnC;AAEM,SAAU,aAAa,KAAQ;AA9MrC;AAuNE,QAAM,EAAC,KAAK,IAAG,IAAI,IAAI,UAAS;AAEhC,QAAM,YAQF;;;IAGF,YAAa,MAAM,OAAO,MAAO;IACjC,UAAU;IACV,MAAM,IAAI,QAAO;IACjB,SAAS,IAAI,WAAU;IACvB,OAAO,IAAI,SAAQ;IACnB,SAAS,IAAI,WAAU;IACvB,QAAQ,IAAI,qBAAoB;;AAGlC,OAAI,SAAI,eAAJ,8BAAoB;AAEtB,0BAAsB,KAAK,SAAS;EACtC;AAEA,SAAO;AACT;AAEA,SAAS,sBAAsB,KAAU,WAAuB;AAC9D,MAAI,IAAI,sBAAsB;AAE5B,UAAM,EAAC,SAAQ,IAAI,IAAI,qBAAoB;AAC3C,QAAI,CAAC,YAAY,SAAS,MAAM,QAAW;AACzC;IACF;AAGA,UAAM,SAAS,IAAI,UAAU;AAC7B,UAAM,EAAC,WAAW,UAAU,MAAK,IAAI;AAGrC,UAAM,UAAU,SAAS,IAAI;AAC7B,UAAM,WAAW,IAAI,SAAS,KAAK;AACnC,UAAM,UAAU,SAAS,IAAI;AAG7B,UAAM,aAAS,mCAAc,CAAC,WAAW,QAAQ,CAAC;AAClD,UAAM,KAAK,UAAU,OAAO,CAAC;AAC7B,UAAM,KAAK,UAAU,OAAO,CAAC;AAC7B,UAAM,+BAA+B,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AAEhE,UAAM,eAAe,QAAS;AAC9B,UAAM,iBAAiB,MAAM;AAC7B,UAAM,QACJ,eAAe;;MAEV,iBAAiB,KAAK,IAAI,YAAY,IAAK;QAC3C,iBAAiB,KAAK,IAAI,YAAY,IAAK;AAClD,cAAU,OAAO,KAAK,KAAK,KAAK;AAEhC,UAAM,qBAAsB,iBAAiB,KAAK,IAAI,YAAY,IAAK;AACvE,UAAM,mBAAmB,UAAU;AACnC,cAAU,WAAW,CAAC,GAAG,GAAG,uBAAmB,mCAAc,QAAQ,CAAC;EACxE,WAES,OAAO,IAAI,UAAU,cAAc,UAAU;AAGpD,cAAU,WAAW,CAAC,GAAG,GAAG,IAAI,UAAU,SAAS;EACrD;AACF;AAYA,SAAS,YAAY,MAAY,KAAU,kBAA0B;AACnE,QAAM,YAAY,aAAa,GAAG;AAClC,QAAM,OAAO,eAAe,GAAG;AAE/B,MAAI,kBAAkB;AAGpB,SAAK,MAAM,kBAAkB;EAC/B;AAKA,QAAM,SAAS,qDAA+C,UAAS,IAAI,UAAU;AACrF,QAAM,QAAQ,qDAA+C,SAAQ,IAAI,UAAU;AACnF,MAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,cAAU,QAAQ,QAAQ,IAAI,UAAU;AACxC,cAAU,OAAO,OAAO,IAAI,UAAU;EACxC;AAGA,SAAO,KAAK,aAAa;IACvB,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb;GACD;AACH;AAEA,SAAS,YAAY,MAAY,KAAQ;AACvC,QAAM,EAAC,cAAc,WAAU,IAAI,KAAK;AAExC,MAAI,YAAY;AAEd,UAAM,iBAAiB,MAAM,KAAK,cAAc,WAAS,MAAM,EAAE;AACjE,UAAM,iBAAa,YAAAC,UAAQ,KAAK,MAAM,QAAQ,OAAO;AACrD,UAAM,qBAAqB,WAAW,KACpC,WAAS,SAAS,CAAC,eAAe,SAAS,MAAM,EAAE,CAAC;AAEtD,QAAI,YAAY,KAAK,aAAY;AACjC,UAAM,oBAAoB,UAAU,UAAU,QAAM,GAAG,OAAO,QAAQ;AACtE,UAAM,oBAAoB,UAAU,SAAS,KAAK,oBAAoB;AAEtE,QAAI,sBAAsB,mBAAmB;AAC3C,UAAI,qBAAqB,GAAG;AAC1B,oBAAY,UAAU,MAAK;AAC3B,kBAAU,iBAAiB,IAAI,YAAY,MAAM,GAAG;MACtD;AAEA,WAAK,YAAY,kBAAkB;QACjC;QACA,aAAa,aACV,CAAC,KAAK,MAAM,eAAe,KAAK,MAAM,YAAY,MAAM,OACxD,OAAO,SAAS,OAAO,YAAY,CAAC,eAAe,SAAS,OAAO,MAAM,EAAE;QAC9E,aAAa;OACd;IACH;EACF;AAGC,OAAK,SAAsB,kBAAkB;AAChD;AAEA,SAAS,UAAU,MAAY,KAAQ;AACrC,OAAK,SAAS;IACZ,WAAW,aAAa,GAAG;GAC5B;AAID,OAAK,YAAY,EAAC,kBAAkB,KAAI,CAAC;AAC3C;AAEA,SAAS,aAAa,MAAU;AAC9B,MAAK,KAAK,SAAsB,YAAY;AAC1C;EACF;AAEA,QAAM,SAAkB,CAAA;AACvB,OAAK,SAAsB,aAAa,QAAQ,eAAY;AAC3D,UAAM,YAAY,UAAU,MAAM;AAClC,UAAM,QAAQ,IAAI,UAAU,UAAU,KAAK;AAC3C,WAAO,KAAK,KAAK;EACnB,CAAC;AACD,OAAK,SAAS,EAAC,OAAM,CAAC;AACxB;;;AD/WA,IAAAC,eAAkB;;;AEZlB,IAAAC,eAAkC;;;ACYlC,IAAqB,cAArB,MAAgC;;EAW9B,YAAY,OAA+B;AACzC,QAAI,CAAC,MAAM,IAAI;AACb,YAAM,IAAI,MAAM,8BAA8B;IAChD;AAEA,SAAK,KAAK,MAAM;AAChB,SAAK,OAAO;AACZ,SAAK,gBAAgB,MAAM,iBAAiB;AAC5C,SAAK,OAAO,MAAM;AAClB,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,QAAQ;EACf;;EAIA,MAAM,KAAU,IAA0B;AACxC,SAAK,MAAM;AACX,SAAK,OAAO,gBAAgB,EAAC,KAAK,IAAI,MAAM,KAAK,MAAM,KAAI,CAAC;AAC5D,aAAS,KAAK,MAAM,IAAI;EAC1B;EAEA,WAAQ;AACN,QAAI,KAAK,MAAM;AACb,kBAAY,KAAK,MAAM,IAAI;IAC7B;EACF;EAEA,SAAS,OAA+B;AAEtC,WAAO,OAAO,KAAK,OAAO,OAAO,EAAC,IAAI,KAAK,GAAE,CAAC;AAE9C,QAAI,KAAK,MAAM;AACb,kBAAY,KAAK,MAAM,IAAI;IAC7B;EACF;EAEA,OAAO,IAAI,kBAAgB;AACzB,cAAU,KAAK,MAAO,KAAK,KAAM,MAAM,gBAAgB;EACzD;;;;ADxDF,IAAM,sBAAsB;AAItB,SAAU,cACd,KACA,MACA,WACA,WAAsB;AAItB,MAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,IAAI,MAAM,SAAS;AACrD;EACF;AAEA,QAAM,aAAS,aAAAC,UAAQ,WAAW,OAAO;AAEzC,MAAI,cAAc,WAAW;AAE3B,UAAM,iBAAa,aAAAA,UAAQ,WAAW,OAAO;AAC7C,UAAM,eAAe,IAAI,IAAY,WAAW,IAAI,OAAK,EAAE,EAAE,CAAC;AAE9D,eAAW,SAAS,QAAQ;AAC1B,mBAAa,OAAO,MAAM,EAAE;IAC9B;AAEA,eAAW,MAAM,cAAc;AAC7B,UAAI,IAAI,SAAS,EAAE,GAAG;AACpB,YAAI,YAAY,EAAE;MACpB;IACF;EACF;AAGA,aAAW,SAAS,QAAQ;AAC1B,UAAM,cAAc,IAAI,SAAS,MAAM,EAAE;AACzC,QAAI,aAAa;AAGf,YAAM,gBAAgB,YAAY,kBAAkB;AACpD,oBAAc,SAAS,MAAM,KAAK;IACpC,OAAO;AACL,UAAI;QACF,IAAI,YAAY;UACd,IAAI,MAAM;UACV;;UAEA,MAAM,MAAM,MAAM;SACnB;;QAED,MAAM,MAAM;MAAQ;IAExB;EACF;AAOA,QAAM,YAAsB,IAAI,MAAM;AAGtC,QAAM,cAAwC,CAAA;AAC9C,aAAW,SAAS,QAAQ;AAE1B,QAAI,EAAC,SAAQ,IAAI,MAAM;AACvB,QAAI,CAAC,YAAY,CAAC,UAAU,SAAS,QAAQ,GAAG;AAC9C,iBAAW;IACb;AACA,gBAAY,QAAQ,IAAI,YAAY,QAAQ,KAAK,CAAA;AACjD,gBAAY,QAAQ,EAAE,KAAK,MAAM,EAAE;EACrC;AAEA,aAAW,YAAY,aAAa;AAClC,UAAM,aAAa,YAAY,QAAQ;AACvC,QAAI,iBACF,aAAa,sBAAsB,UAAU,SAAS,UAAU,QAAQ,QAAQ;AAClF,QAAI,cAAc,aAAa,sBAAsB,SAAY;AACjE,aAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAC/C,YAAM,UAAU,WAAW,CAAC;AAC5B,YAAM,aAAa,UAAU,QAAQ,OAAO;AAC5C,UAAI,eAAe,iBAAiB,GAAG;AACrC,YAAI,UAAU,SAAS,WAAW;AAClC,YAAI,aAAa,gBAAgB;AAE/B;QACF;MACF;AACA;AACA,oBAAc;IAChB;EACF;AACF;;;AFjEA,IAAqB,gBAArB,MAAkC;EAQhC,YAAY,OAAyB;AAuK7B,SAAA,qBAAqB,MAAK;AAChC,oBAAc,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAO,MAAM;IAC7E;AAEQ,SAAA,uBAAuB,MAAK;AAClC,UAAI,KAAK,QAAQ,KAAK,YAAY;AAChC,cAAM,EAAC,aAAa,aAAY,IAAI,KAAK,KAAK,aAAY;AAC1D,eAAO,OAAO,KAAK,WAAW,OAAO;UACnC,OAAO,GAAG;UACV,QAAQ,GAAG;SACZ;MACH;IACF;AAEQ,SAAA,mBAAmB,MAAK;AAC9B,YAAM,OAAO,KAAK;AAClB,YAAM,MAAM,KAAK;AACjB,UAAI,QAAQ,KAAK;AACf,aAAK,SAAS;UACZ,OAAO,KAAK,OAAO,SAAS,eAAe,GAAG;UAC9C,WAAW,aAAa,GAAG;SAC5B;AAED,YAAI,KAAK,eAAe;AACtB,eAAK,OAAM;QACb;MACF;IACF;AAGQ,SAAA,oBAAoB,CAAC,UAAwB;AACnD,YAAM,OAAO,KAAK;AAClB,UAAI,CAAC,QAAQ,CAAC,KAAK,eAAe;AAChC;MACF;AAEA,YAAM,YAOF;QACF,MAAM,MAAM;QACZ,cAAc,MAAM;QACpB,UAAU;;AAGZ,YAAM,WAAW,KAAK;AACtB,UAAI,CAAC,MAAM,SAAS,UAAU;AAE5B,kBAAU,SAAS,MAAM,cAAc,UAAU,SAAS;AAC1D,kBAAU,SAAS,MAAM,cAAc,UAAU,SAAS;AAC1D,kBAAU,eAAe;UACvB,GAAG,SAAS,IAAI,UAAU;UAC1B,GAAG,SAAS,IAAI,UAAU;;MAE9B;AAEA,cAAQ,UAAU,MAAM;QACtB,KAAK;AACH,eAAK,eAAe,SAA2C;AAC/D,eAAK,sBAAsB;YACzB,GAAG,MAAM;YACT,SAAS,MAAM,cAAc;YAC7B,SAAS,MAAM,cAAc;;AAE/B;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,eAAK,SAAS,SAA2C;AACzD;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,eAAK,SAAS,SAA2C;AACzD;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,eAAK,SAAS,SAA2C;AACzD;QAEF,KAAK;AACH,oBAAU,WAAW;AACrB,eAAK,SAAS,SAA2C;AACzD;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,oBAAU,WAAW;AACrB,eAAK,SAAS,SAA2C;AACzD;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,eAAK,eAAe,SAA2C;AAC/D;QAEF,KAAK;AACH,oBAAU,OAAO;AACjB,eAAK,eAAe,SAA2C;AAC/D;QAEF;AACE;MACJ;IACF;AAnRE,UAAM,EAAC,cAAc,OAAO,GAAG,WAAU,IAAI;AAC7C,SAAK,eAAe;AACpB,SAAK,SAAS;EAChB;;EAGA,SAAS,OAAyB;AAChC,QAAI,KAAK,gBAAgB,MAAM,QAAQ;AACrC,oBAAc,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,QAAQ,MAAM,MAAM;IACvE;AAEA,WAAO,OAAO,KAAK,QAAQ,KAAK;AAEhC,QAAI,KAAK,SAAS,KAAK,MAAM;AAC3B,WAAK,MAAM,SAAS;QAClB,GAAG,KAAK;QACR,YAAY;UACV,GAAG,qBAAqB,KAAK,MAAM,KAAK,YAAY;UACpD,GAAG,KAAK,OAAO;;OAElB;IACH;EACF;;;;EAKA,MAAM,KAAY;AAChB,SAAK,OAAO;AACZ,WAAO,KAAK,eAAe,KAAK,kBAAkB,GAAU,IAAI,KAAK,eAAe,GAAU;EAChG;EAEQ,eAAe,KAAQ;AAE7B,UAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,WAAO,OAAO,UAAU,OAAO;MAC7B,UAAU;MACV,MAAM;MACN,KAAK;MACL,WAAW;MACX,eAAe;KAChB;AACD,SAAK,aAAa;AAElB,SAAK,QAAQ,IAAI,kBAAU;MACzB,GAAG,KAAK;MACR,QAAQ;MACR,YAAY,EAAC,GAAG,qBAAqB,KAAK,KAAK,GAAG,GAAG,KAAK,OAAO,WAAU;MAC3E,OAAO,KAAK,OAAO,SAAS,eAAe,GAAG;MAC9C,WAAW,aAAa,GAAG;KAC5B;AAED,QAAI,GAAG,UAAU,KAAK,oBAAoB;AAC1C,QAAI,GAAG,UAAU,KAAK,gBAAgB;AACtC,QAAI,GAAG,aAAa,KAAK,iBAAiB;AAC1C,QAAI,GAAG,aAAa,KAAK,iBAAiB;AAC1C,QAAI,GAAG,QAAQ,KAAK,iBAAiB;AACrC,QAAI,GAAG,WAAW,KAAK,iBAAiB;AACxC,QAAI,GAAG,aAAa,KAAK,iBAAiB;AAC1C,QAAI,GAAG,YAAY,KAAK,iBAAiB;AACzC,QAAI,GAAG,SAAS,KAAK,iBAAiB;AACtC,QAAI,GAAG,YAAY,KAAK,iBAAiB;AAEzC,SAAK,qBAAoB;AACzB,WAAO;EACT;EAEQ,kBAAkB,KAAQ;AAEhC,UAAM,KAAK,IAAI,QAAQ,QAAQ;AAC/B,QAAI,cAAc,uBAAuB;AACvC,uBAAI,KACF,qGAAqG,EACtG;IACH;AACA,SAAK,QAAQ,gBAAgB;MAC3B;MACA;MACA,MAAM,IAAI,kBAAK;QACb,GAAG,KAAK;QACR;OACD;KACF;AAED,QAAI,GAAG,aAAa,KAAK,kBAAkB;AAC3C,kBAAc,KAAK,KAAK,OAAO,CAAA,GAAI,KAAK,OAAO,MAAM;AAErD,WAAO,SAAS,cAAc,KAAK;EACrC;;EAGA,WAAQ;AACN,UAAM,MAAM,KAAK;AAEjB,QAAI,KAAK;AACP,UAAI,KAAK,cAAc;AACrB,aAAK,qBAAqB,GAAG;MAC/B,OAAO;AACL,aAAK,kBAAkB,GAAG;MAC5B;IACF;AAEA,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,aAAa;EACpB;EAEQ,kBAAkB,KAAQ;AA3JpC;AA4JI,QAAI,IAAI,UAAU,KAAK,oBAAoB;AAC3C,QAAI,IAAI,UAAU,KAAK,gBAAgB;AACvC,QAAI,IAAI,aAAa,KAAK,iBAAiB;AAC3C,QAAI,IAAI,aAAa,KAAK,iBAAiB;AAC3C,QAAI,IAAI,QAAQ,KAAK,iBAAiB;AACtC,QAAI,IAAI,WAAW,KAAK,iBAAiB;AACzC,QAAI,IAAI,aAAa,KAAK,iBAAiB;AAC3C,QAAI,IAAI,YAAY,KAAK,iBAAiB;AAC1C,QAAI,IAAI,SAAS,KAAK,iBAAiB;AACvC,QAAI,IAAI,YAAY,KAAK,iBAAiB;AAC1C,eAAK,UAAL,mBAAY;EACd;EAEQ,qBAAqB,KAAQ;AACnC,QAAI,IAAI,aAAa,KAAK,kBAAkB;AAC5C,kBAAc,KAAK,KAAK,OAAO,KAAK,OAAO,QAAQ,CAAA,CAAE;AACrD,uBAAmB,GAAG;EACxB;EAEA,qBAAkB;AAChB,WAAO;EACT;;EAGA,WAAW,QAAyC;AAClD,6BAAO,KAAK,KAAK;AACjB,WAAO,KAAK,MAAM,WAAW,MAAM;EACrC;;EAGA,oBACE,QAAkD;AAElD,6BAAO,KAAK,KAAK;AACjB,WAAO,KAAK,MAAM,oBAAoB,MAAM;EAC9C;;EAGA,YAAY,QAA0C;AACpD,6BAAO,KAAK,KAAK;AACjB,WAAO,KAAK,MAAM,YAAY,MAAM;EACtC;;EAGA,WAAQ;AACN,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,cAAc,IAAI;IAC9B;EACF;;EAGA,YAAS;AACP,QAAI,CAAC,KAAK,MAAM;AACd,aAAO;IACT;AACA,WAAO,KAAK,eAAe,KAAK,KAAK,UAAS,IAAK,KAAK,MAAO,UAAS;EAC1E;;",
  "names": ["import_core", "GlobeView", "flatten", "import_core", "import_core", "flatten"]
}
