{
  "version": 3,
  "sources": ["../src/index.ts", "../src/basemap-layer.ts", "../src/globe-layers.ts", "../src/atmosphere-layer.ts", "../src/mvt-label-layer.ts", "../src/mapbox-style.ts", "../src/map-style-schema.ts", "../src/style-resolver.ts", "../src/map-style-loader.ts"],
  "sourcesContent": ["/** Runtime exports for `@deck.gl-community/basemap-layers`. */\nexport {BasemapLayer} from './basemap-layer';\nexport {getBasemapLayers, getGlobeBaseLayers, getGlobeTopLayers} from './globe-layers';\n", "import {CompositeLayer, log, type DefaultProps, type UpdateParameters} from '@deck.gl/core';\nimport {load} from '@loaders.gl/core';\nimport {getBasemapLayers} from './globe-layers';\nimport {MapStyleLoader, type MapStyleLoaderOptions} from './map-style-loader';\nimport type {BasemapStyle, ResolvedBasemapStyle} from './style-resolver';\n\n/**\n * Logs a non-error basemap-layer runtime event to deck.gl logging.\n */\nfunction logBasemapLayerEvent(message: string, details?: unknown): void {\n  log.probe(1, message, details ?? '')();\n}\n\n/**\n * Logs a basemap-layer runtime error to deck.gl logging.\n */\nfunction logBasemapLayerError(message: string, error: Error): void {\n  log.error(`${message}: ${error.message}`)();\n}\n\nfunction getMapStyleLoaderOptions(\n  loadOptions: BasemapLayerProps['loadOptions']\n): MapStyleLoaderOptions {\n  return {\n    mapStyle: (loadOptions || undefined) as NonNullable<MapStyleLoaderOptions['mapStyle']>\n  };\n}\n\n/**\n * Globe-related runtime toggles used by {@link BasemapLayer}.\n */\nexport type BasemapGlobeConfig = {\n  /** Renders the atmosphere overlays returned by the globe helpers when available. */\n  atmosphere?: boolean;\n  /** Renders the main globe basemap content when `true`. */\n  basemap?: boolean;\n  /** Enables symbol-label rendering on the globe path when `true`. */\n  labels?: boolean;\n};\n\n/**\n * Props accepted by {@link BasemapLayer}.\n */\nexport type BasemapLayerProps = {\n  /** Optional deck.gl layer identifier. */\n  id?: string;\n  /** MapLibre or Mapbox style JSON, or a URL that resolves to one. */\n  style: string | BasemapStyle | null;\n  /** Load options forwarded to {@link resolveBasemapStyle}. */\n  loadOptions?: Record<string, unknown> | null;\n  /** Selects whether deck layers are generated for a flat map or a globe. */\n  mode?: 'map' | 'globe';\n  /** Optional globe-specific configuration used when `mode` is `'globe'`. */\n  globe?: {\n    /** Rendering toggles for globe-specific basemap behavior. */\n    config?: BasemapGlobeConfig;\n  };\n};\n\n/**\n * Internal state tracked by {@link BasemapLayer}.\n */\ntype BasemapLayerState = {\n  /** The fully resolved style definition currently backing the generated sublayers. */\n  resolvedStyle: ResolvedBasemapStyle | null;\n  /** The most recent style-resolution error, if one occurred. */\n  loadError: Error | null;\n  /** Monotonic token used to discard stale async style loads. */\n  loadToken: number;\n};\n\n/**\n * A deck.gl {@link CompositeLayer} that loads a style document and renders the\n * corresponding basemap sublayers.\n */\nexport class BasemapLayer extends CompositeLayer<Required<BasemapLayerProps>> {\n  /** Deck.gl layer name. */\n  static layerName = 'BasemapLayer';\n\n  /** Default props for {@link BasemapLayer}. */\n  static defaultProps: DefaultProps<BasemapLayerProps> = {\n    mode: 'map',\n    globe: {\n      type: 'object',\n      value: {\n        config: {\n          atmosphere: false,\n          basemap: true,\n          labels: true\n        }\n      }\n    },\n    style: null,\n    loadOptions: null\n  };\n\n  /** Current layer state. */\n  state: BasemapLayerState = undefined!;\n\n  /** Initializes the asynchronous style-loading state. */\n  initializeState(): void {\n    this.state = {\n      resolvedStyle: null,\n      loadError: null,\n      loadToken: 0\n    };\n  }\n\n  /** Reacts to changes in the input style definition. */\n  updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n    if (\n      changeFlags.dataChanged ||\n      props.style !== oldProps.style ||\n      props.loadOptions !== oldProps.loadOptions\n    ) {\n      this.loadStyle(props.style, props.loadOptions);\n    }\n  }\n\n  /**\n   * Resolves the configured style input and stores the latest successful result\n   * in layer state.\n   */\n  loadStyle(\n    style: BasemapLayerProps['style'],\n    loadOptions: BasemapLayerProps['loadOptions']\n  ): void {\n    if (!style) {\n      const loadToken = this.state.loadToken + 1;\n      logBasemapLayerEvent('Clearing basemap style');\n      this.setState({resolvedStyle: null, loadError: null, loadToken});\n      return;\n    }\n\n    const loadToken = this.state.loadToken + 1;\n    this.setState({loadToken});\n    logBasemapLayerEvent('Resolving basemap style', {\n      style: typeof style === 'string' ? style : 'inline-style-object',\n      loadToken\n    });\n\n    Promise.resolve(\n      typeof style === 'string'\n        ? load(style, MapStyleLoader, getMapStyleLoaderOptions(loadOptions))\n        : MapStyleLoader.parse(\n            new TextEncoder().encode(JSON.stringify(style)).buffer,\n            getMapStyleLoaderOptions(loadOptions)\n          )\n    )\n      .then(resolvedStyle => {\n        if (this.state.loadToken === loadToken) {\n          logBasemapLayerEvent('Resolved basemap style', {\n            loadToken,\n            sources: Object.keys(resolvedStyle.sources || {}),\n            layers: resolvedStyle.layers?.length || 0\n          });\n          this.setState({resolvedStyle, loadError: null});\n        }\n      })\n      .catch((error: Error) => {\n        if (this.state.loadToken === loadToken) {\n          logBasemapLayerError('Failed to resolve basemap style', error);\n          this.setState({resolvedStyle: null, loadError: error});\n        }\n      });\n  }\n\n  /** Renders the sublayers generated from the resolved style definition. */\n  renderLayers() {\n    if (!this.state.resolvedStyle) {\n      return [];\n    }\n\n    return getBasemapLayers({\n      idPrefix: this.props.id,\n      mode: this.props.mode,\n      globe: this.props.globe,\n      styleDefinition: this.state.resolvedStyle,\n      zoom: this.context.viewport?.zoom || 0,\n      loadOptions: this.props.loadOptions\n    });\n  }\n}\n", "import {COORDINATE_SYSTEM, log} from '@deck.gl/core';\nimport {MVTLayer, TileLayer, _getURLFromTemplate} from '@deck.gl/geo-layers';\nimport {BitmapLayer, GeoJsonLayer, SolidPolygonLayer} from '@deck.gl/layers';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {getGlobeAtmosphereLayer, getGlobeAtmosphereSkyLayer} from './atmosphere-layer';\nimport {MVTLabelLayer} from './mvt-label-layer';\nimport {filterFeatures, parseProperties} from './map-style';\nimport type {BasemapGlobeConfig, BasemapLayerProps} from './basemap-layer';\nimport type {\n  BasemapLoadOptions,\n  BasemapSource,\n  ResolvedBasemapStyleLayer as BasemapStyleLayer,\n  ResolvedBasemapStyle\n} from './style-resolver';\n\ntype BasemapMode = NonNullable<BasemapLayerProps['mode']>;\n\ntype BasemapLayerConfig = {\n  atmosphere: boolean;\n  basemap: boolean;\n  labels: boolean;\n};\n\ntype BasemapLayerGroup = {\n  idPrefix?: string;\n  mode?: BasemapMode;\n  globe?: {config?: BasemapGlobeConfig};\n  styleDefinition: ResolvedBasemapStyle;\n  zoom?: number;\n  loadOptions?: BasemapLoadOptions;\n};\n\ntype VectorSourceGroup = {\n  sourceId: string;\n  source: BasemapSource;\n  styleLayers: BasemapStyleLayer[];\n};\n\nfunction logBasemapRuntimeEvent(message: string, details?: unknown): void {\n  log.probe(1, `[BasemapLayer] ${message}`, details ?? '')();\n}\n\nfunction logBasemapRuntimeError(message: string, error: unknown, details?: unknown): void {\n  log.error(`[BasemapLayer] ${message}`, details || '', error)();\n}\n\nfunction getBackgroundParameters(mode: BasemapMode) {\n  return (\n    mode === 'globe'\n      ? {depthTest: true, depthWriteEnabled: true, depthCompare: 'less-equal', cullMode: 'back'}\n      : {depthTest: false, cullMode: 'none'}\n  ) as any;\n}\n\nfunction getTileParameters(mode: BasemapMode) {\n  return (\n    mode === 'globe'\n      ? {depthTest: true, depthWriteEnabled: true, depthCompare: 'less-equal', cullMode: 'back'}\n      : {depthTest: false, cullMode: 'none'}\n  ) as any;\n}\n\nconst BACKGROUND_DATA = [\n  [\n    [-180, 90],\n    [0, 90],\n    [180, 90],\n    [180, -90],\n    [0, -90],\n    [-180, -90]\n  ]\n];\n\nconst BACKGROUND_NORTH_POLE_DATA = [\n  [\n    [-180, 90],\n    [0, 90],\n    [180, 90],\n    [180, 85],\n    [0, 85],\n    [-180, 85]\n  ]\n];\n\nconst SUPPORTED_TYPES = new Set(['background', 'fill', 'line', 'symbol', 'raster']);\nconst DEFAULT_CONFIG: BasemapLayerConfig = {atmosphere: false, basemap: true, labels: true};\nfunction withOpacity(\n  color: number[] | null | undefined,\n  opacity = 1\n): [number, number, number, number] {\n  if (!color) {\n    return [0, 0, 0, 0];\n  }\n\n  const alpha = color.length > 3 ? (color[3] <= 1 ? color[3] * 255 : color[3]) : 255;\n  return [color[0], color[1], color[2], Math.round(alpha * opacity)];\n}\n\nfunction getPaint(layer: BasemapStyleLayer, zoom: number): Record<string, any> {\n  const properties = parseProperties(layer, {zoom});\n  return Object.fromEntries(\n    properties.map(entry => [Object.keys(entry)[0], Object.values(entry)[0]])\n  );\n}\n\nfunction filterTileFeatures(features: any[], styleLayer: BasemapStyleLayer, zoom: number): any[] {\n  const sourceLayer = styleLayer['source-layer'];\n  const sourceFeatures = sourceLayer\n    ? features.filter(feature => feature.properties?.layerName === sourceLayer)\n    : features;\n\n  if (!styleLayer.filter) {\n    return sourceFeatures;\n  }\n\n  return filterFeatures({\n    features: sourceFeatures,\n    filter: styleLayer.filter,\n    globalProperties: {zoom}\n  });\n}\n\nfunction isStyleLayerVisibleAtZoom(\n  styleLayer: BasemapStyleLayer,\n  zoom: number,\n  source?: BasemapSource\n): boolean {\n  const minZoom = styleLayer.minzoom ?? source?.minzoom ?? 0;\n  const maxZoom = styleLayer.maxzoom ?? source?.maxzoom ?? 22;\n\n  return zoom >= minZoom && zoom < maxZoom;\n}\n\nfunction getTileFeatures(data: unknown): any[] {\n  if (Array.isArray(data)) {\n    return data;\n  }\n\n  if (\n    data &&\n    typeof data === 'object' &&\n    Array.isArray((data as {features?: unknown[]}).features)\n  ) {\n    return (data as {features: unknown[]}).features as any[];\n  }\n\n  return [];\n}\n\nfunction getSubLayerBaseProps(props: any) {\n  const {\n    pickable,\n    visible,\n    opacity,\n    modelMatrix,\n    coordinateSystem,\n    coordinateOrigin,\n    extensions,\n    highlightedObjectIndex,\n    highlightColor,\n    parameters,\n    wrapLongitude\n  } = props;\n\n  return {\n    pickable,\n    visible,\n    opacity,\n    modelMatrix,\n    coordinateSystem,\n    coordinateOrigin,\n    extensions,\n    highlightedObjectIndex,\n    highlightColor,\n    parameters,\n    wrapLongitude\n  };\n}\n\nfunction getLineWidthScale(styleLayer: BasemapStyleLayer): number {\n  const sourceLayer = styleLayer['source-layer'] || '';\n  const id = styleLayer.id || '';\n\n  if (sourceLayer === 'transportation' || sourceLayer === 'boundary' || id.includes('road-')) {\n    return 0.55;\n  }\n\n  if (sourceLayer === 'waterway' || sourceLayer === 'aeroway') {\n    return 0.75;\n  }\n\n  return 1;\n}\n\nfunction getGlobeFillColor(color: [number, number, number, number], mode: BasemapMode) {\n  if (mode !== 'globe') {\n    return color;\n  }\n\n  return [color[0], color[1], color[2], 255] as [number, number, number, number];\n}\n\nfunction getConfig(globe?: {config?: BasemapGlobeConfig}): BasemapLayerConfig {\n  return {...DEFAULT_CONFIG, ...(globe?.config || {})};\n}\n\nfunction createBackgroundLayer({\n  idPrefix,\n  layer,\n  zoom,\n  mode\n}: {\n  idPrefix: string;\n  layer: BasemapStyleLayer;\n  zoom: number;\n  mode: BasemapMode;\n}) {\n  const paint = getPaint(layer, zoom);\n\n  return new SolidPolygonLayer({\n    id: `${idPrefix}-${layer.id}`,\n    data: BACKGROUND_DATA,\n    getPolygon: d => d,\n    stroked: false,\n    filled: true,\n    getFillColor: withOpacity(paint['background-color'], paint['background-opacity'] ?? 1),\n    parameters: getBackgroundParameters(mode)\n  });\n}\n\nfunction createRasterLayer({\n  idPrefix,\n  layer,\n  source,\n  mode\n}: {\n  idPrefix: string;\n  layer: BasemapStyleLayer;\n  source: BasemapSource;\n  mode: BasemapMode;\n}) {\n  return new TileLayer({\n    id: `${idPrefix}-${layer.id}`,\n    data: source.tiles,\n    minZoom: layer.minzoom ?? source.minzoom ?? 0,\n    maxZoom: layer.maxzoom ?? source.maxzoom ?? 22,\n    tileSize: source.tileSize || 512,\n    renderSubLayers: props => {\n      const {west, south, east, north} = (props.tile?.bbox || {}) as {\n        west: number;\n        south: number;\n        east: number;\n        north: number;\n      };\n\n      return new BitmapLayer({\n        ...props,\n        _imageCoordinateSystem: COORDINATE_SYSTEM.CARTESIAN,\n        data: null,\n        image: props.data,\n        bounds: [west, south, east, north],\n        parameters: getTileParameters(mode)\n      } as any);\n    },\n    onTileError: error => {\n      logBasemapRuntimeError('Raster tile failed to load', error, {\n        layerId: layer.id,\n        sourceId: layer.source\n      });\n    },\n    parameters: getTileParameters(mode)\n  });\n}\n\nclass StyledMVTLayer extends MVTLayer<any> {\n  getTileData(loadProps: {index: {x: number; y: number; z: number}; signal?: AbortSignal}) {\n    const data = this.props.data;\n    const url = _getURLFromTemplate(data, loadProps as any);\n    if (!url) {\n      return Promise.reject(new Error('Invalid URL'));\n    }\n\n    const loadOptions = this.getLoadOptions();\n    const coordinates = this.context.viewport.resolution ? 'wgs84' : 'local';\n\n    return this.props.fetch(url, {\n      propName: 'data',\n      layer: this,\n      signal: loadProps.signal,\n      loadOptions: {\n        ...loadOptions,\n        mimeType: 'application/x-protobuf',\n        mvt: {\n          ...((loadOptions?.mvt as Record<string, unknown> | undefined) || {}),\n          shape: 'geojson',\n          coordinates,\n          tileIndex: loadProps.index\n        }\n      }\n    });\n  }\n}\n\nStyledMVTLayer.layerName = 'StyledMVTLayer';\nStyledMVTLayer.defaultProps = {\n  ...MVTLayer.defaultProps,\n  binary: false,\n  loaders: [MVTWorkerLoader]\n};\n\nfunction createStyledVectorSubLayer({\n  idPrefix,\n  sourceId,\n  styleLayer,\n  features,\n  props,\n  zoom,\n  config,\n  mode\n}: {\n  idPrefix: string;\n  sourceId: string;\n  styleLayer: BasemapStyleLayer;\n  features: any[];\n  props: any;\n  zoom: number;\n  config: BasemapLayerConfig;\n  mode: BasemapMode;\n}) {\n  if (features.length === 0) {\n    return null;\n  }\n\n  const paint = getPaint(styleLayer, zoom);\n  const opacity =\n    paint[`${styleLayer.type}-opacity`] ??\n    (styleLayer.type === 'fill' ? paint['fill-opacity'] : paint['line-opacity']) ??\n    1;\n  const fillColor = withOpacity(paint['fill-color'], opacity);\n  const lineColor = withOpacity(\n    paint['line-color'] || paint['fill-outline-color'] || [0, 0, 0, 0],\n    opacity\n  );\n\n  if (styleLayer.type === 'symbol') {\n    return createSymbolSubLayer({props, styleLayer, features, config, mode, zoom, opacity, paint});\n  }\n\n  return createGeometrySubLayer({props, styleLayer, features, mode, fillColor, lineColor, paint});\n}\n\nfunction createVectorLayerGroup({\n  idPrefix,\n  sourceId,\n  source,\n  styleLayers,\n  zoom,\n  config,\n  loadOptions,\n  mode\n}: {\n  idPrefix: string;\n  sourceId: string;\n  source: BasemapSource;\n  styleLayers: BasemapStyleLayer[];\n  zoom: number;\n  config: BasemapLayerConfig;\n  loadOptions?: BasemapLoadOptions;\n  mode: BasemapMode;\n}) {\n  const minZoom = Math.min(...styleLayers.map(layer => layer.minzoom ?? source.minzoom ?? 0));\n  const maxZoom = Math.max(...styleLayers.map(layer => layer.maxzoom ?? source.maxzoom ?? 22));\n\n  return new StyledMVTLayer({\n    id: `${idPrefix}-${sourceId}`,\n    data: source.tiles,\n    binary: false,\n    minZoom,\n    maxZoom,\n    tileSize: source.tileSize || 512,\n    loadOptions: {\n      ...(loadOptions || {}),\n      mvt: {\n        ...((loadOptions?.mvt as Record<string, unknown> | undefined) || {}),\n        shape: 'geojson'\n      }\n    },\n    onTileError: error => {\n      logBasemapRuntimeError('Vector tile layer failed', error, {\n        sourceId\n      });\n    },\n    onTileLoad: tile => {\n      const features = Array.isArray(tile.content) ? tile.content : [];\n      if (features.length === 0) {\n        logBasemapRuntimeEvent('Loaded empty vector tile', {\n          sourceId,\n          tileIndex: tile.index\n        });\n      }\n    },\n    parameters: getTileParameters(mode),\n    renderSubLayers: props => {\n      const features = getTileFeatures(props.data);\n      const layers = styleLayers\n        .map(styleLayer => {\n          if (!isStyleLayerVisibleAtZoom(styleLayer, zoom, source)) {\n            return null;\n          }\n\n          const filteredData = filterTileFeatures(features, styleLayer, zoom);\n\n          if (features.length > 0 && filteredData.length === 0) {\n            logBasemapRuntimeEvent('Vector tile rendered no matching features', {\n              sourceId,\n              layerId: styleLayer.id,\n              sourceLayer: styleLayer['source-layer'],\n              tileIndex: props.tile?.index\n            });\n          }\n\n          return createStyledVectorSubLayer({\n            idPrefix,\n            sourceId,\n            styleLayer,\n            features: filteredData,\n            props,\n            zoom,\n            config,\n            mode\n          });\n        })\n        .filter(layer => Boolean(layer));\n\n      return layers as any;\n    }\n  } as any);\n}\n\nfunction inferWaterColor(\n  styleLayers: BasemapStyleLayer[],\n  zoom: number\n): [number, number, number, number] {\n  const waterLayer = styleLayers.find(\n    layer => layer.type === 'fill' && `${layer['source-layer'] || ''}`.includes('water')\n  );\n\n  if (!waterLayer) {\n    return [20, 40, 68, 255];\n  }\n\n  const paint = getPaint(waterLayer, zoom);\n  return withOpacity(paint['fill-color'], paint['fill-opacity'] ?? 1);\n}\n\nfunction getVectorSourceGroups(\n  styleLayers: BasemapStyleLayer[],\n  styleDefinition: ResolvedBasemapStyle\n): VectorSourceGroup[] {\n  const groups = new Map<string, VectorSourceGroup>();\n\n  for (const layer of styleLayers) {\n    const sourceId = layer.source;\n    const source = sourceId ? styleDefinition.sources?.[sourceId] : null;\n    if (sourceId && source?.tiles && source.type === 'vector') {\n      appendVectorSourceGroup(groups, sourceId, source, layer);\n    }\n  }\n\n  return [...groups.values()];\n}\n\nexport function getBasemapLayers({\n  idPrefix = 'basemap',\n  mode = 'map',\n  globe,\n  styleDefinition,\n  zoom = 0,\n  loadOptions\n}: BasemapLayerGroup) {\n  const config = getConfig(globe);\n  const styleLayers = (styleDefinition.layers || []).filter(layer =>\n    SUPPORTED_TYPES.has(layer.type)\n  );\n  const layers: any[] = [];\n  logBasemapRuntimeEvent('Generating basemap layers', {\n    mode,\n    styleLayerCount: styleLayers.length,\n    sourceCount: Object.keys(styleDefinition.sources || {}).length\n  });\n\n  layers.push(...getGlobePreLayers({idPrefix, mode, config, styleLayers}));\n\n  if (config.basemap) {\n    layers.push(...getBackgroundLayers({idPrefix, styleLayers, zoom, mode}));\n    layers.push(\n      ...getVectorLayers({idPrefix, styleLayers, styleDefinition, zoom, config, loadOptions, mode})\n    );\n    layers.push(...getRasterLayers({idPrefix, styleLayers, styleDefinition, zoom, mode}));\n  }\n\n  layers.push(...getGlobePostLayers({idPrefix, mode, config, styleLayers, zoom}));\n\n  return layers.filter(layer => Boolean(layer));\n}\n\nexport function getGlobeBaseLayers({\n  globe,\n  styleDefinition,\n  idPrefix = 'globe-basemap',\n  zoom = 0,\n  loadOptions\n}: Omit<BasemapLayerGroup, 'mode'>) {\n  return getBasemapLayers({idPrefix, mode: 'globe', globe, styleDefinition, zoom, loadOptions});\n}\n\nexport function getGlobeTopLayers({globe}: {globe: {config: BasemapGlobeConfig}}) {\n  const {config} = globe;\n  return config.atmosphere ? [getGlobeAtmosphereLayer()] : [];\n}\n\nfunction createSymbolSubLayer({\n  props,\n  styleLayer,\n  features,\n  config,\n  mode,\n  zoom,\n  opacity,\n  paint\n}: {\n  props: any;\n  styleLayer: BasemapStyleLayer;\n  features: any[];\n  config: BasemapLayerConfig;\n  mode: BasemapMode;\n  zoom: number;\n  opacity: number;\n  paint: Record<string, any>;\n}) {\n  return new MVTLabelLayer({\n    ...getSubLayerBaseProps(props),\n    id: `${props.id}-${styleLayer.id}`,\n    data: features,\n    config,\n    mode,\n    styleLayer,\n    zoom,\n    textColor: withOpacity(paint['text-color'], opacity),\n    labelBackground: paint['text-halo-color']\n      ? withOpacity(paint['text-halo-color'], paint['text-halo-width'] ? 255 : opacity)\n      : null,\n    billboard: true\n  });\n}\n\nfunction createGeometrySubLayer({\n  props,\n  styleLayer,\n  features,\n  mode,\n  fillColor,\n  lineColor,\n  paint\n}: {\n  props: any;\n  styleLayer: BasemapStyleLayer;\n  features: any[];\n  mode: BasemapMode;\n  fillColor: [number, number, number, number];\n  lineColor: [number, number, number, number];\n  paint: Record<string, any>;\n}) {\n  const isLine = styleLayer.type === 'line';\n  const isFill = styleLayer.type === 'fill';\n\n  return new GeoJsonLayer({\n    ...getSubLayerBaseProps(props),\n    id: `${props.id}-${styleLayer.id}`,\n    data: features,\n    stroked: isLine,\n    filled: isFill,\n    getFillColor: isFill ? getGlobeFillColor(fillColor, mode) : [0, 0, 0, 0],\n    getLineColor: lineColor,\n    getLineWidth: isLine\n      ? Math.max(0.25, Number(paint['line-width'] ?? 1) * getLineWidthScale(styleLayer))\n      : 0,\n    lineWidthUnits: 'pixels',\n    lineWidthMinPixels: 0,\n    lineWidthMaxPixels: 20,\n    lineCapRounded: isLine,\n    lineJointRounded: isLine,\n    getPointRadius: 0,\n    pointRadiusMinPixels: 0,\n    parameters: getTileParameters(mode)\n  });\n}\n\nfunction getBackgroundLayers({\n  idPrefix,\n  styleLayers,\n  zoom,\n  mode\n}: {\n  idPrefix: string;\n  styleLayers: BasemapStyleLayer[];\n  zoom: number;\n  mode: BasemapMode;\n}) {\n  return styleLayers\n    .filter(layer => layer.type === 'background' && isStyleLayerVisibleAtZoom(layer, zoom))\n    .map(layer => createBackgroundLayer({idPrefix, layer, zoom, mode}));\n}\n\nfunction getVectorLayers({\n  idPrefix,\n  styleLayers,\n  styleDefinition,\n  zoom,\n  config,\n  loadOptions,\n  mode\n}: {\n  idPrefix: string;\n  styleLayers: BasemapStyleLayer[];\n  styleDefinition: ResolvedBasemapStyle;\n  zoom: number;\n  config: BasemapLayerConfig;\n  loadOptions?: BasemapLoadOptions;\n  mode: BasemapMode;\n}) {\n  const visibleVectorLayers = styleLayers.filter(layer => {\n    if (!isStyleLayerVisibleAtZoom(layer, zoom, styleDefinition.sources?.[layer.source || ''])) {\n      return false;\n    }\n\n    if (layer.type === 'symbol') {\n      return config.labels;\n    }\n    return layer.type === 'fill' || layer.type === 'line';\n  });\n\n  return getVectorSourceGroups(visibleVectorLayers, styleDefinition).map(group =>\n    createVectorLayerGroup({\n      idPrefix,\n      sourceId: group.sourceId,\n      source: group.source,\n      styleLayers: group.styleLayers,\n      zoom,\n      config,\n      loadOptions,\n      mode\n    })\n  );\n}\n\nfunction getRasterLayers({\n  idPrefix,\n  styleLayers,\n  styleDefinition,\n  zoom,\n  mode\n}: {\n  idPrefix: string;\n  styleLayers: BasemapStyleLayer[];\n  styleDefinition: ResolvedBasemapStyle;\n  zoom: number;\n  mode: BasemapMode;\n}) {\n  const rasterLayers = [];\n\n  for (const layer of styleLayers) {\n    if (\n      layer.type === 'raster' &&\n      isStyleLayerVisibleAtZoom(layer, zoom, styleDefinition.sources?.[layer.source || ''])\n    ) {\n      const source = styleDefinition.sources?.[layer.source];\n      if (!source?.tiles) {\n        logBasemapRuntimeEvent('Skipping style layer without resolved tiles', {\n          layerId: layer.id,\n          sourceId: layer.source\n        });\n      } else {\n        rasterLayers.push(createRasterLayer({idPrefix, layer, source, mode}));\n      }\n    }\n  }\n\n  return rasterLayers;\n}\n\nfunction appendVectorSourceGroup(\n  groups: Map<string, VectorSourceGroup>,\n  sourceId: string,\n  source: BasemapSource,\n  layer: BasemapStyleLayer\n) {\n  const group = groups.get(sourceId);\n  if (group) {\n    group.styleLayers.push(layer);\n    return;\n  }\n\n  groups.set(sourceId, {\n    sourceId,\n    source,\n    styleLayers: [layer]\n  });\n}\n\nfunction getGlobePreLayers({\n  idPrefix,\n  mode,\n  config,\n  styleLayers\n}: {\n  idPrefix: string;\n  mode: BasemapMode;\n  config: BasemapLayerConfig;\n  styleLayers: BasemapStyleLayer[];\n}) {\n  const layers = [];\n\n  if (mode === 'globe' && config.atmosphere) {\n    layers.push(getGlobeAtmosphereSkyLayer());\n  }\n\n  const hasBackground = styleLayers.some(layer => layer.type === 'background');\n  if (mode === 'globe' && !hasBackground) {\n    layers.push(\n      new SolidPolygonLayer({\n        id: `${idPrefix}-background-fallback`,\n        data: BACKGROUND_DATA,\n        getPolygon: d => d,\n        stroked: false,\n        filled: true,\n        getFillColor: [10, 24, 46, 255],\n        parameters: getBackgroundParameters(mode)\n      })\n    );\n  }\n\n  return layers;\n}\n\nfunction getGlobePostLayers({\n  idPrefix,\n  mode,\n  config,\n  styleLayers,\n  zoom\n}: {\n  idPrefix: string;\n  mode: BasemapMode;\n  config: BasemapLayerConfig;\n  styleLayers: BasemapStyleLayer[];\n  zoom: number;\n}) {\n  const layers = [];\n\n  if (mode === 'globe' && config.basemap) {\n    layers.push(\n      new SolidPolygonLayer({\n        id: `${idPrefix}-background-north-pole`,\n        data: BACKGROUND_NORTH_POLE_DATA,\n        getPolygon: d => d,\n        stroked: false,\n        filled: true,\n        getFillColor: inferWaterColor(styleLayers, zoom),\n        parameters: getBackgroundParameters(mode)\n      })\n    );\n  }\n\n  if (mode === 'globe' && config.atmosphere) {\n    layers.push(getGlobeAtmosphereLayer());\n  }\n\n  return layers;\n}\n", "/**\n * Returns the top-of-globe atmosphere overlay layer when atmosphere rendering\n * is enabled.\n */\nexport function getGlobeAtmosphereLayer() {\n  return null;\n}\n\n/**\n * Returns the background sky layer rendered behind the globe when atmosphere\n * rendering is enabled.\n */\nexport function getGlobeAtmosphereSkyLayer() {\n  return null;\n}\n", "import {CompositeLayer} from '@deck.gl/core';\nimport type {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport {CollisionFilterExtension} from '@deck.gl/extensions';\nimport {GeoJsonLayer, TextLayer} from '@deck.gl/layers';\n\ntype GeometryType = 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | string;\n\ntype FeatureGeometry = {\n  type: GeometryType;\n  coordinates: any;\n};\n\ntype FeatureLike = {\n  geometry: FeatureGeometry;\n  properties?: Record<string, any>;\n};\n\ntype LabelRow = {\n  position: number[];\n};\n\ntype StyleLayerLike = {\n  layout?: Record<string, any>;\n};\n\ntype LabelConfig = {\n  labels?: boolean;\n};\n\n/**\n * Props accepted by {@link MVTLabelLayer}.\n */\nexport type MVTLabelLayerProps = {\n  /** Decoded vector-tile features or a feature-collection-like object. */\n  data?: {features?: FeatureLike[]} | FeatureLike[];\n  /** Label rendering enablement for the current basemap mode. */\n  config: LabelConfig;\n  /** Style layer that contributes label rules. */\n  styleLayer?: StyleLayerLike;\n  /** Zoom level used to resolve stop-based style values. */\n  zoom?: number;\n  /** Text fill color. */\n  textColor?: number[];\n  /** Optional text halo/background color. */\n  labelBackground?: number[] | null;\n  /** Text size units forwarded to `TextLayer`. */\n  labelSizeUnits?: 'pixels' | 'meters' | 'common';\n  /** Font family used by `TextLayer`. */\n  fontFamily?: string;\n  /** Enables billboard rendering in the text sublayer. */\n  billboard?: boolean;\n  /** When `true`, renders the source geometries for debugging. */\n  renderGeometry?: boolean;\n  /** Additional extension instances passed through to the text sublayer. */\n  extensions?: any[];\n  /** Active basemap mode. */\n  mode?: 'map' | 'globe';\n};\n\ntype MVTLabelLayerState = {\n  /** Flattened label rows generated from the current tile data. */\n  labelData?: LabelRow[];\n};\n\nconst geoJsonDefaultProps = {...GeoJsonLayer.defaultProps} as Omit<\n  typeof GeoJsonLayer.defaultProps,\n  'data'\n>;\ndelete (geoJsonDefaultProps as typeof GeoJsonLayer.defaultProps).data;\n\n/**\n * Evaluates a style value that may contain stop definitions.\n */\nfunction evaluateStyleValue(value: unknown, zoom: number): unknown {\n  if (typeof value === 'number' || typeof value === 'string') {\n    return value;\n  }\n\n  if (value && typeof value === 'object' && Array.isArray((value as {stops?: unknown[]}).stops)) {\n    let resolved = (value as {stops: [number, unknown][]}).stops[0]?.[1];\n    for (const stop of (value as {stops: [number, unknown][]}).stops) {\n      if (zoom >= stop[0]) {\n        resolved = stop[1];\n      }\n    }\n    return resolved;\n  }\n\n  return value;\n}\n\n/**\n * Replaces style-spec token placeholders in a label template.\n */\nfunction resolveTokenString(template: unknown, properties?: Record<string, any>): string | null {\n  if (typeof template !== 'string') {\n    return null;\n  }\n\n  return template.replace(/\\{([^}]+)\\}/g, (_, token) => {\n    const value = properties?.[token];\n    return value === null || value === undefined ? '' : String(value);\n  });\n}\n\n/**\n * Returns a midpoint for a line geometry.\n */\nfunction getLineMidpoint(coordinates: number[][]): number[] | null {\n  if (!Array.isArray(coordinates) || coordinates.length === 0) {\n    return null;\n  }\n\n  return coordinates[Math.floor(coordinates.length / 2)] || coordinates[0] || null;\n}\n\n/**\n * Returns a coarse collision priority for a label feature.\n */\nfunction getCollisionPriority(feature: FeatureLike): number {\n  const properties = feature?.properties || {};\n\n  if (properties.capital > 0 || properties.class === 'country') {\n    return 1000;\n  }\n  if (properties.class === 'state' || properties.class === 'city') {\n    return 750;\n  }\n  if (properties.layerName === 'water_name' || properties.layerName === 'waterway') {\n    return 400;\n  }\n\n  return 100;\n}\n\n/**\n * Renders label text for decoded vector-tile features, with optional geometry\n * passthrough for debugging.\n */\nexport class MVTLabelLayer extends CompositeLayer<MVTLabelLayerProps> {\n  /** Deck.gl layer name. */\n  static layerName = 'MVTLabelLayer';\n\n  /** Default props for {@link MVTLabelLayer}. */\n  static defaultProps: DefaultProps<MVTLabelLayerProps> = {\n    ...geoJsonDefaultProps,\n    billboard: true,\n    renderGeometry: false,\n    labelSizeUnits: 'pixels',\n    labelBackground: {type: 'color', value: null, optional: true},\n    fontFamily: 'Monaco, monospace'\n  };\n\n  /** Current label-row state. */\n  state: MVTLabelLayerState = undefined!;\n\n  /**\n   * Extracts the visible label text for a decoded feature.\n   */\n  getLabel(feature: FeatureLike): string | undefined {\n    const {styleLayer, zoom = 0} = this.props;\n    const textField = evaluateStyleValue(styleLayer?.layout?.['text-field'], zoom);\n    const label = resolveTokenString(textField, feature.properties)?.trim();\n    return label || undefined;\n  }\n\n  /**\n   * Returns the font size for a decoded feature label.\n   */\n  getLabelSize(_feature: FeatureLike): number {\n    const {styleLayer, zoom = 0} = this.props;\n    return Number(evaluateStyleValue(styleLayer?.layout?.['text-size'], zoom) || 14);\n  }\n\n  /**\n   * Returns the text color for a decoded feature label.\n   */\n  getLabelColor(_feature: FeatureLike): number[] {\n    return this.props.textColor || [255, 255, 255];\n  }\n\n  /**\n   * Extracts candidate label anchor positions from a feature geometry.\n   */\n  getLabelAnchors(feature: FeatureLike): number[][] {\n    const {type, coordinates} = feature.geometry;\n    switch (type) {\n      case 'Point':\n        return [coordinates];\n      case 'MultiPoint':\n        return coordinates;\n      case 'LineString': {\n        const midpoint = getLineMidpoint(coordinates);\n        return midpoint ? [midpoint] : [];\n      }\n      case 'MultiLineString': {\n        const midpoint = getLineMidpoint(coordinates[0]);\n        return midpoint ? [midpoint] : [];\n      }\n      default:\n        return [];\n    }\n  }\n\n  /**\n   * Recomputes label anchor rows when the source tile data changes.\n   */\n  updateState({changeFlags}: UpdateParameters<this>): void {\n    const {data} = this.props;\n    if (changeFlags.dataChanged && data) {\n      const features = Array.isArray(data) ? data : data.features || [];\n      const labelData = features.flatMap((feature, index) => {\n        const labelAnchors = this.getLabelAnchors(feature);\n        return labelAnchors.map(position => this.getSubLayerRow({position}, feature, index));\n      });\n\n      this.setState({labelData});\n    }\n  }\n\n  /**\n   * Renders the optional debug geometry and the text labels.\n   */\n  renderLayers(): any {\n    const {config, labelSizeUnits, labelBackground, billboard, renderGeometry} = this.props;\n    const layers: any[] = [];\n\n    if (renderGeometry) {\n      layers.push(\n        new GeoJsonLayer({\n          ...this.props,\n          ...this.getSubLayerProps({id: 'geojson'}),\n          data: this.props.data\n        })\n      );\n    }\n\n    if (config.labels) {\n      const hasBackground = Array.isArray(labelBackground) && labelBackground.length >= 3;\n      layers.push(\n        new TextLayer({\n          ...this.getSubLayerProps({id: 'text'}),\n          data: this.state.labelData,\n          extensions: [...(this.props.extensions || []), new CollisionFilterExtension()],\n          parameters: {\n            depthTest: false\n          },\n          billboard,\n          characterSet: 'auto',\n          collisionEnabled: true,\n          collisionGroup: 'basemap-labels',\n          getCollisionPriority: this.getSubLayerAccessor((feature: FeatureLike) =>\n            getCollisionPriority(feature)\n          ) as any,\n          fontFamily: this.props.fontFamily,\n          sizeUnits: labelSizeUnits,\n          background: hasBackground,\n          getBackgroundColor: (hasBackground ? labelBackground : [0, 0, 0, 0]) as any,\n          getPosition: (d: LabelRow) => d.position,\n          getText: this.getSubLayerAccessor((feature: FeatureLike) =>\n            this.getLabel(feature)\n          ) as any,\n          getSize: this.getSubLayerAccessor((feature: FeatureLike) =>\n            this.getLabelSize(feature)\n          ) as any,\n          getColor: this.getSubLayerAccessor((feature: FeatureLike) =>\n            this.getLabelColor(feature)\n          ) as any\n        })\n      );\n    }\n\n    return layers;\n  }\n}\n", "import {Color, expression, featureFilter, latest as Reference} from '@mapbox/mapbox-gl-style-spec';\n\ntype GlobalProperties = {\n  zoom?: number;\n  [key: string]: unknown;\n};\n\ntype GeometryLike = {\n  type: string;\n};\n\ntype FeatureLike = {\n  type?: number | string;\n  geometry?: GeometryLike;\n  properties?: Record<string, unknown>;\n};\n\ntype FilterFeaturesOptions = {\n  features: FeatureLike[];\n  filter: unknown[];\n  globalProperties?: GlobalProperties;\n};\n\ntype FindFeaturesStyledByLayerOptions = {\n  features: Record<string, Record<string, FeatureLike[]>>;\n  layer: {\n    source?: string;\n    'source-layer'?: string;\n    filter?: unknown[];\n  };\n  globalProperties?: GlobalProperties;\n};\n\ntype PropertyReference = Record<string, unknown> | null;\n\ntype VisitedProperty = {\n  layer: Record<string, any>;\n  path: string[];\n  key: string;\n  value: unknown;\n  reference: PropertyReference;\n  set: (value: unknown) => void;\n};\n\ntype VisitOptions = {\n  paint?: boolean;\n  layout?: boolean;\n};\n\nconst GEOM_TYPES: Record<string, number> = {\n  Point: 1,\n  MultiPoint: 1,\n  LineString: 2,\n  MultiLineString: 2,\n  Polygon: 3,\n  MultiPolygon: 3\n};\n\n/**\n * Applies a Mapbox style-spec filter expression to a set of features.\n */\nexport function filterFeatures({\n  features,\n  filter,\n  globalProperties = {}\n}: FilterFeaturesOptions): FeatureLike[] {\n  if (!features || features.length === 0) {\n    return [];\n  }\n\n  const filterFn = featureFilter(filter).filter;\n\n  return features.filter(feature => {\n    if (![1, 2, 3].includes(Number(feature.type))) {\n      feature.type = GEOM_TYPES[feature.geometry?.type || ''] ?? feature.type;\n    }\n\n    return filterFn(globalProperties, feature);\n  });\n}\n\n/**\n * Finds the source-layer features that participate in a particular style layer\n * and applies the layer's filter expression when present.\n */\nexport function findFeaturesStyledByLayer({\n  features,\n  layer,\n  globalProperties\n}: FindFeaturesStyledByLayerOptions): FeatureLike[] {\n  const sourceLayerFeatures = features[layer.source || '']?.[layer['source-layer'] || ''];\n  if (!sourceLayerFeatures) {\n    return [];\n  }\n\n  if (layer.filter && layer.filter.length > 0) {\n    return filterFeatures({\n      features: sourceLayerFeatures,\n      filter: layer.filter,\n      globalProperties\n    });\n  }\n\n  return [];\n}\n\n/**\n * Evaluates paint properties for a style layer at the requested zoom.\n */\nexport function parseProperties(\n  layer: Record<string, any>,\n  globalProperties: GlobalProperties\n): Array<Record<string, unknown>> {\n  const layerProperties: Array<Record<string, unknown>> = [];\n  visitProperties(layer, {paint: true}, property => {\n    layerProperties.push(parseProperty(property, globalProperties));\n  });\n\n  return layerProperties;\n}\n\n/**\n * Walks layout and paint properties for a style layer.\n */\nfunction visitProperties(\n  layer: Record<string, any>,\n  options: VisitOptions,\n  callback: (property: VisitedProperty) => void\n): void {\n  function inner(targetLayer: Record<string, any>, propertyType: 'paint' | 'layout') {\n    const properties = targetLayer[propertyType];\n    if (!properties) {\n      return;\n    }\n\n    Object.keys(properties).forEach(key => {\n      callback({\n        layer: targetLayer,\n        path: [targetLayer.id, propertyType, key],\n        key,\n        value: properties[key],\n        reference: getPropertyReference(key),\n        set(value) {\n          properties[key] = value;\n        }\n      });\n    });\n  }\n\n  if (options.paint) {\n    inner(layer, 'paint');\n  }\n  if (options.layout) {\n    inner(layer, 'layout');\n  }\n}\n\n/**\n * Resolves the style-spec reference metadata for a property name.\n */\nfunction getPropertyReference(propertyName: string): PropertyReference {\n  for (let i = 0; i < Reference.layout.length; i++) {\n    for (const key in Reference[Reference.layout[i]]) {\n      if (key === propertyName) {\n        return Reference[Reference.layout[i]][key] as PropertyReference;\n      }\n    }\n  }\n\n  for (let i = 0; i < Reference.paint.length; i++) {\n    for (const key in Reference[Reference.paint[i]]) {\n      if (key === propertyName) {\n        return Reference[Reference.paint[i]][key] as PropertyReference;\n      }\n    }\n  }\n\n  return null;\n}\n\n/**\n * Evaluates a single style property expression.\n */\nfunction parseProperty(\n  property: VisitedProperty,\n  globalProperties: GlobalProperties\n): Record<string, unknown> {\n  const exp = expression.normalizePropertyExpression(property.value, property.reference as any);\n  const result = exp.evaluate(globalProperties);\n\n  if (result instanceof Color) {\n    return {[property.key]: result.toArray()};\n  }\n\n  return {[property.key]: result};\n}\n", "import {z} from 'zod';\nimport type {\n  BasemapSource,\n  BasemapStyle,\n  BasemapStyleLayer,\n  ResolvedBasemapStyleLayer,\n  ResolvedBasemapStyle\n} from './style-resolver';\n\n/** Zod schema for a basemap source entry. */\nexport const BasemapSourceSchema = z\n  .object({\n    type: z.string().optional(),\n    url: z.string().optional(),\n    tiles: z.array(z.string()).optional(),\n    minzoom: z.number().optional(),\n    maxzoom: z.number().optional(),\n    tileSize: z.number().optional()\n  })\n  .catchall(z.unknown()) satisfies z.ZodType<BasemapSource>;\n\n/** Zod schema for a basemap style layer entry. */\nexport const BasemapStyleLayerSchema = z\n  .object({\n    id: z.string(),\n    type: z.string().optional(),\n    ref: z.string().optional(),\n    source: z.string().optional(),\n    'source-layer': z.string().optional(),\n    minzoom: z.number().optional(),\n    maxzoom: z.number().optional(),\n    filter: z.array(z.unknown()).optional(),\n    paint: z.record(z.string(), z.unknown()).optional(),\n    layout: z.record(z.string(), z.unknown()).optional()\n  })\n  .catchall(z.unknown())\n  .superRefine((layer, context) => {\n    if (!layer.type && !layer.ref) {\n      context.addIssue({\n        code: z.ZodIssueCode.custom,\n        message: 'Style layers must define either \"type\" or \"ref\".',\n        path: ['type']\n      });\n    }\n  }) satisfies z.ZodType<BasemapStyleLayer>;\n\nconst ResolvedBasemapStyleLayerSchema = z\n  .object({\n    id: z.string(),\n    type: z.string(),\n    source: z.string().optional(),\n    'source-layer': z.string().optional(),\n    minzoom: z.number().optional(),\n    maxzoom: z.number().optional(),\n    filter: z.array(z.unknown()).optional(),\n    paint: z.record(z.string(), z.unknown()).optional(),\n    layout: z.record(z.string(), z.unknown()).optional()\n  })\n  .catchall(z.unknown()) satisfies z.ZodType<ResolvedBasemapStyleLayer>;\n\n/** Zod schema for a MapLibre / Mapbox style document. */\nexport const BasemapStyleSchema = z\n  .object({\n    version: z.number().optional(),\n    metadata: z.record(z.string(), z.unknown()).optional(),\n    sources: z.record(z.string(), BasemapSourceSchema).optional(),\n    layers: z.array(BasemapStyleLayerSchema).optional()\n  })\n  .catchall(z.unknown()) satisfies z.ZodType<BasemapStyle>;\n\n/** Zod schema for a fully resolved basemap style document. */\nexport const ResolvedBasemapStyleSchema = z\n  .object({\n    version: z.number().optional(),\n    metadata: z.record(z.string(), z.unknown()).optional(),\n    sources: z.record(z.string(), BasemapSourceSchema),\n    layers: z.array(ResolvedBasemapStyleLayerSchema)\n  })\n  .catchall(z.unknown()) satisfies z.ZodType<ResolvedBasemapStyle>;\n", "import {derefLayers} from '@mapbox/mapbox-gl-style-spec';\nimport {BasemapStyleSchema, ResolvedBasemapStyleSchema} from './map-style-schema';\n\n/**\n * A basemap source entry from a style document.\n */\nexport type BasemapSource = {\n  /** Source kind such as `vector` or `raster`. */\n  type?: string;\n  /** Optional TileJSON URL used to resolve the source metadata. */\n  url?: string;\n  /** Inline tile templates for the source. */\n  tiles?: string[];\n  /** Minimum source zoom, when supplied by the style or TileJSON. */\n  minzoom?: number;\n  /** Maximum source zoom, when supplied by the style or TileJSON. */\n  maxzoom?: number;\n  /** Tile size in pixels. */\n  tileSize?: number;\n  /** Additional source properties are preserved verbatim. */\n  [key: string]: unknown;\n};\n\n/**\n * A style layer entry used by the basemap runtime.\n */\nexport type BasemapStyleLayer = {\n  /** Unique layer identifier. */\n  id: string;\n  /** Optional concrete style layer type such as `background`, `fill`, `line`, or `raster`. */\n  type?: string;\n  /** Legacy style layer id whose structural render properties are inherited. */\n  ref?: string;\n  /** Referenced source identifier. */\n  source?: string;\n  /** Referenced vector source-layer identifier. */\n  'source-layer'?: string;\n  /** Optional minimum zoom. */\n  minzoom?: number;\n  /** Optional maximum zoom. */\n  maxzoom?: number;\n  /** Optional style-spec filter expression. */\n  filter?: unknown[];\n  /** Paint properties from the source style layer. */\n  paint?: Record<string, unknown>;\n  /** Layout properties from the source style layer. */\n  layout?: Record<string, unknown>;\n  /** Additional layer properties are preserved verbatim. */\n  [key: string]: unknown;\n};\n\n/** A style layer after legacy `ref` inheritance has been resolved. */\nexport type ResolvedBasemapStyleLayer = BasemapStyleLayer & {\n  /** Concrete style layer type after optional `ref` inheritance. */\n  type: string;\n};\n\n/**\n * A MapLibre or Mapbox style document consumed by the basemap runtime.\n */\nexport type BasemapStyle = {\n  /** Style-spec version number. */\n  version?: number;\n  /** Optional style metadata bag. */\n  metadata?: Record<string, unknown>;\n  /** Named source definitions used by the style. */\n  sources?: Record<string, BasemapSource>;\n  /** Ordered list of style layers. */\n  layers?: BasemapStyleLayer[];\n  /** Additional style properties are preserved verbatim. */\n  [key: string]: unknown;\n};\n\n/**\n * A style document after all sources have been normalized and TileJSON-backed\n * sources have been resolved.\n */\nexport type ResolvedBasemapStyle = Omit<BasemapStyle, 'sources' | 'layers'> & {\n  /** Fully resolved source definitions. */\n  sources: Record<string, BasemapSource>;\n  /** Style layers copied into a mutable array. */\n  layers: ResolvedBasemapStyleLayer[];\n};\n\n/**\n * Load options accepted by {@link resolveBasemapStyle}.\n */\nexport type BasemapLoadOptions = {\n  /** Base URL used to resolve relative source or tile URLs for in-memory styles. */\n  baseUrl?: string;\n  /** Optional custom fetch implementation. */\n  fetch?: typeof fetch;\n  /** Optional init object passed to the selected fetch implementation. */\n  fetchOptions?: RequestInit;\n  /** Additional loader options are accepted for forward compatibility. */\n  [key: string]: unknown;\n} | null;\n\n/** Resolves a possibly relative URL against the provided base URL. */\nfunction normalizeUrl(url: string | undefined, baseUrl?: string) {\n  if (!url) {\n    return url;\n  }\n\n  try {\n    return decodeURI(new URL(url, baseUrl).toString());\n  } catch {\n    return url;\n  }\n}\n\n/** Resolves all tile templates in a source against the source base URL. */\nfunction normalizeTiles(tiles: string[] | undefined, baseUrl?: string) {\n  return Array.isArray(tiles) ? tiles.map(tile => normalizeUrl(tile, baseUrl) || tile) : tiles;\n}\n\n/** Fetches and parses a JSON resource. */\nasync function fetchJson(url: string, loadOptions?: BasemapLoadOptions) {\n  const fetchFn = loadOptions?.fetch || fetch;\n  const response = await fetchFn(url, loadOptions?.fetchOptions);\n\n  if (!response.ok) {\n    throw new Error(`Failed to load basemap resource: ${url} (${response.status})`);\n  }\n\n  return await response.json();\n}\n\n/** Resolves a single source, including optional TileJSON indirection. */\nasync function resolveSource(\n  source: BasemapSource | undefined,\n  baseUrl: string | undefined,\n  loadOptions?: BasemapLoadOptions\n) {\n  if (!source) {\n    return source;\n  }\n\n  const resolvedSource: BasemapSource = {...source};\n  let sourceBaseUrl = baseUrl;\n\n  if (resolvedSource.url) {\n    const tileJsonUrl = normalizeUrl(resolvedSource.url, baseUrl);\n    const tileJson = await fetchJson(tileJsonUrl || resolvedSource.url, loadOptions);\n    Object.assign(resolvedSource, tileJson);\n    resolvedSource.url = tileJsonUrl;\n    sourceBaseUrl = tileJsonUrl;\n  }\n\n  if (resolvedSource.tiles) {\n    resolvedSource.tiles = normalizeTiles(resolvedSource.tiles, sourceBaseUrl);\n  }\n\n  return resolvedSource;\n}\n\n/**\n * Resolves a basemap style input into a style object whose sources contain\n * directly consumable tile templates and source metadata.\n */\nexport async function resolveBasemapStyle(\n  style: string | BasemapStyle,\n  loadOptions?: BasemapLoadOptions\n): Promise<ResolvedBasemapStyle> {\n  const styleDefinition = BasemapStyleSchema.parse(\n    typeof style === 'string' ? await fetchJson(style, loadOptions) : structuredClone(style)\n  );\n  const baseUrl = typeof style === 'string' ? style : loadOptions?.baseUrl;\n  const resolvedSources: Record<string, BasemapSource> = {};\n\n  await Promise.all(\n    Object.entries(styleDefinition.sources || {}).map(async ([sourceId, source]) => {\n      resolvedSources[sourceId] = (await resolveSource(source, baseUrl, loadOptions)) || {};\n    })\n  );\n\n  return ResolvedBasemapStyleSchema.parse({\n    ...styleDefinition,\n    sources: resolvedSources,\n    layers: derefLayers([...(styleDefinition.layers || [])]) as ResolvedBasemapStyleLayer[]\n  });\n}\n", "import type {LoaderContext, LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {ResolvedBasemapStyleSchema} from './map-style-schema';\nimport {resolveBasemapStyle} from './style-resolver';\nimport type {BasemapLoadOptions, BasemapStyle, ResolvedBasemapStyle} from './style-resolver';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Namespaced loaders.gl options for {@link MapStyleLoader}. */\nexport type MapStyleLoaderOptions = LoaderOptions & {\n  mapStyle?: NonNullable<BasemapLoadOptions>;\n};\n\nfunction getMapStyleLoadOptions(\n  options?: MapStyleLoaderOptions,\n  context?: LoaderContext\n): NonNullable<BasemapLoadOptions> {\n  return {\n    ...options?.mapStyle,\n    baseUrl: options?.mapStyle?.baseUrl || context?.url || context?.baseUrl,\n    fetch: options?.mapStyle?.fetch || (context?.fetch as typeof fetch | undefined)\n  };\n}\n\n/** loaders.gl-compatible loader that resolves and validates map-style documents. */\nexport const MapStyleLoader = {\n  dataType: null as unknown as ResolvedBasemapStyle,\n  batchType: null as never,\n\n  name: 'Map Style',\n  id: 'map-style',\n  module: 'basemap-layers',\n  version: VERSION,\n  worker: false,\n  extensions: ['json'],\n  mimeTypes: ['application/json', 'application/vnd.mapbox.style+json'],\n  text: true,\n  options: {\n    mapStyle: {}\n  },\n  parse: async (\n    data: ArrayBuffer | string,\n    options?: MapStyleLoaderOptions,\n    context?: LoaderContext\n  ) => {\n    const text = typeof data === 'string' ? data : new TextDecoder().decode(data);\n    const style = JSON.parse(text) as BasemapStyle;\n    const resolved = await resolveBasemapStyle(style, getMapStyleLoadOptions(options, context));\n    return ResolvedBasemapStyleSchema.parse(resolved);\n  }\n} as const satisfies LoaderWithParser<ResolvedBasemapStyle, never, MapStyleLoaderOptions>;\n"],
  "mappings": "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",
  "names": ["import_core", "import_core", "import_layers", "Reference", "import_mapbox_gl_style_spec", "loadToken"]
}
