@carto/api-client 0.5.31 → 0.5.32-alpha.13acc23.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/build/api-client.cjs +300 -3
  3. package/build/api-client.cjs.map +1 -1
  4. package/build/api-client.d.cts +42 -5
  5. package/build/api-client.d.ts +42 -5
  6. package/build/api-client.js +289 -3
  7. package/build/api-client.js.map +1 -1
  8. package/package.json +2 -2
  9. package/src/fetch-map/layer-map.ts +48 -0
  10. package/src/fetch-map/parse-map.ts +108 -10
  11. package/src/fetch-map/pattern-atlas-baked.ts +56 -0
  12. package/src/fetch-map/pattern-atlas-runtime.ts +139 -0
  13. package/src/fetch-map/pattern-atlas.ts +21 -0
  14. package/src/fetch-map/patterns/checker-large.png +0 -0
  15. package/src/fetch-map/patterns/checker-medium.png +0 -0
  16. package/src/fetch-map/patterns/checker-small.png +0 -0
  17. package/src/fetch-map/patterns/cross-hatch-large.png +0 -0
  18. package/src/fetch-map/patterns/cross-hatch-medium.png +0 -0
  19. package/src/fetch-map/patterns/cross-hatch-small.png +0 -0
  20. package/src/fetch-map/patterns/diag-left-large.png +0 -0
  21. package/src/fetch-map/patterns/diag-left-medium.png +0 -0
  22. package/src/fetch-map/patterns/diag-left-small.png +0 -0
  23. package/src/fetch-map/patterns/diag-right-large.png +0 -0
  24. package/src/fetch-map/patterns/diag-right-medium.png +0 -0
  25. package/src/fetch-map/patterns/diag-right-small.png +0 -0
  26. package/src/fetch-map/patterns/dots-large.png +0 -0
  27. package/src/fetch-map/patterns/dots-medium.png +0 -0
  28. package/src/fetch-map/patterns/dots-small.png +0 -0
  29. package/src/fetch-map/patterns/hlines-large.png +0 -0
  30. package/src/fetch-map/patterns/hlines-medium.png +0 -0
  31. package/src/fetch-map/patterns/hlines-small.png +0 -0
  32. package/src/fetch-map/patterns/solid.png +0 -0
  33. package/src/fetch-map/patterns/vlines-large.png +0 -0
  34. package/src/fetch-map/patterns/vlines-medium.png +0 -0
  35. package/src/fetch-map/patterns/vlines-small.png +0 -0
  36. package/src/fetch-map/types.ts +44 -0
  37. package/src/global.d.ts +10 -0
@@ -1,5 +1,5 @@
1
- import { Feature, Polygon, MultiPolygon, BBox, FeatureCollection, Geometry } from 'geojson';
2
- import { BinaryFeatureCollection, BinaryFeature } from '@loaders.gl/schema';
1
+ import { Polygon, MultiPolygon, Feature, BBox, FeatureCollection, Geometry } from 'geojson';
2
+ import { BinaryFeature, BinaryFeatureCollection } from '@loaders.gl/schema';
3
3
  import jsep from 'jsep';
4
4
 
5
5
  /**
@@ -863,6 +863,16 @@ declare function getIconUrlAccessor(field: VisualChannelField | null | undefined
863
863
  maxIconSize: number;
864
864
  useMaskedIcons?: boolean;
865
865
  }, data: any): any;
866
+ declare function getLineStyleAccessor(field: VisualChannelField, range: LineStyleRange, data: any): {
867
+ accessor: any;
868
+ domain: string[];
869
+ range: [number, number][];
870
+ };
871
+ declare function getFillPatternAccessor(field: VisualChannelField, range: FillPatternRange, density: 'small' | 'medium' | 'large' | undefined, data: any): {
872
+ accessor: any;
873
+ domain: string[];
874
+ range: string[];
875
+ };
866
876
  declare function getMaxMarkerSize(visConfig: VisConfig, visualChannels: VisualChannels): number;
867
877
  type Accessor = number | ((d: any, i: any) => number);
868
878
  declare function negateAccessor(accessor: Accessor): Accessor;
@@ -908,6 +918,10 @@ type VisualChannels = {
908
918
  sizeScale?: ScaleType;
909
919
  strokeColorField?: VisualChannelField;
910
920
  strokeColorScale?: ScaleType;
921
+ lineStyleField?: VisualChannelField;
922
+ lineStyleScale?: ScaleType;
923
+ fillPatternField?: VisualChannelField;
924
+ fillPatternScale?: ScaleType;
911
925
  heightField?: VisualChannelField;
912
926
  heightScale?: ScaleType;
913
927
  weightField?: VisualChannelField;
@@ -928,6 +942,20 @@ type CustomMarkersRange = {
928
942
  }[];
929
943
  othersMarker?: string;
930
944
  };
945
+ type LineStyleRange = {
946
+ dashArrayMap: {
947
+ value: string;
948
+ dashArray: [number, number];
949
+ }[];
950
+ othersDashArray?: [number, number];
951
+ };
952
+ type FillPatternRange = {
953
+ patternMap: {
954
+ value: string;
955
+ pattern: string;
956
+ }[];
957
+ othersPattern?: string;
958
+ };
931
959
  type ColorBand = 'red' | 'green' | 'blue' | 'alpha';
932
960
  type RasterLayerConfigColorBand = {
933
961
  band: ColorBand;
@@ -963,6 +991,15 @@ type VisConfig = {
963
991
  strokeColorAggregationDomain?: [number, number];
964
992
  strokeOpacity?: number;
965
993
  strokeColorRange?: ColorRange;
994
+ stroked?: boolean;
995
+ lineStyle?: 'solid' | 'dashed' | 'dotted';
996
+ dashArray?: [number, number];
997
+ lineStyleRange?: LineStyleRange | null;
998
+ fillPatternEnabled?: boolean;
999
+ fillPattern?: string;
1000
+ fillPatternDensity?: 'small' | 'medium' | 'large';
1001
+ fillPatternSize?: number;
1002
+ fillPatternRange?: FillPatternRange | null;
966
1003
  heightRange?: number[];
967
1004
  heightAggregation?: string;
968
1005
  heightAggregationExp?: string;
@@ -1149,9 +1186,9 @@ type Scale = {
1149
1186
  domain?: string[] | number[];
1150
1187
  /** Domain of the user to construct d3 scale */
1151
1188
  scaleDomain?: string[] | number[];
1152
- range?: string[] | number[];
1189
+ range?: string[] | number[] | number[][];
1153
1190
  };
1154
- type ScaleKey = 'fillColor' | 'pointRadius' | 'lineColor' | 'lineWidth' | 'elevation' | 'weight';
1191
+ type ScaleKey = 'fillColor' | 'pointRadius' | 'lineColor' | 'lineWidth' | 'elevation' | 'weight' | 'lineStyle' | 'fillPattern';
1155
1192
  type Scales = Partial<Record<ScaleKey, Scale>>;
1156
1193
  type LayerDescriptor = {
1157
1194
  type: LayerType;
@@ -2362,4 +2399,4 @@ declare function getColumnNameFromGeoColumn(geoColumn: string | null | undefined
2362
2399
  */
2363
2400
  declare function getSpatialIndexFromGeoColumn(geoColumn: string): SpatialIndex | null;
2364
2401
 
2365
- export { type APIErrorContext, type APIRequestType, AUDIT_TAGS, type AddFilterOptions, type AggregationFunction, type AggregationType, AggregationTypes, type AggregationsRequestOptions, type AggregationsResponse, ApiVersion, type Attribute, type AuthMode, type AuthOptions, _default as BASEMAP, type BaseRequestOptions, type Basemap, type BoundaryQuerySourceOptions, type BoundaryQuerySourceResponse, type BoundaryTableSourceOptions, type BoundaryTableSourceResponse, CARTO_SOURCES, CartoAPIError, type CategoryOrderBy, type CategoryRequestOptions, type CategoryResponse, type CategoryResponseEntry, type CategoryResponseRaw, CellSet, type ColumnsOption, type D3Scale, DEFAULT_API_BASE_URL, type ExtentRequestOptions, type ExtentResponse, FEATURE_GEOM_PROPERTY, type FeaturesRequestOptions, type FeaturesResponse, type FetchMapOptions, type FetchMapResult, type Filter, type FilterFunction, type FilterInterval, type FilterIntervalComplete, type FilterIntervalExtremum, type FilterLogicalOperator, type FilterOptions, FilterType, type Filters, type Format, type FormulaRequestOptions, type FormulaResponse, type GeometrySpatialFilter, type GetFilterOptions, type GoogleBasemap, type GroupByFeature, type GroupDateType, type H3QuerySourceOptions, type H3QuerySourceResponse, type H3TableSourceOptions, type H3TableSourceResponse, type H3TilesetSourceOptions, type H3TilesetSourceResponse, type HasFilterOptions, type HistogramRequestOptions, type HistogramResponse, type KeplerMapConfig, type Layer, type LayerDescriptor, type LayerType, type MapLibreBasemap, type MapType, type NamedQueryParameter, OPACITY_MAP, OTHERS_CATEGORY_NAME, type ParseMapResult, type PositionalQueryParameter, Provider, type ProviderType, type QuadbinQuerySourceOptions, type QuadbinQuerySourceResponse, type QuadbinTableSourceOptions, type QuadbinTableSourceResponse, type QuadbinTilesetSourceOptions, type QuadbinTilesetSourceResponse, type QueryOptions, type QueryParameterValue, type QueryParameters, type QueryResult, type QuerySourceOptions, type RangeRequestOptions, type RangeResponse, type Raster, RasterBandColorinterp, type RasterBandType, type RasterMetadata, type RasterMetadataBand, type RasterMetadataBandStats, type RasterSourceOptions, type RasterTile, type RemoveFilterOptions, SOURCE_DEFAULTS, type Scale, type ScaleKey, type ScaleType, type Scales, type ScatterPlotFeature, type ScatterRequestOptions, type ScatterResponse, type SchemaField, SchemaFieldType, type SortColumnType, type SortDirection, type SourceOptionalOptions, type SourceOptions, type SourceRequiredOptions, type SpatialDataType, type SpatialFilter, type SpatialFilterPolyfillMode, SpatialIndex, SpatialIndexColumn, type SpatialIndexFilter, type SpatialIndexTile, type StringSearchOptions, TEXT_LABEL_INDEX, TEXT_NUMBER_FORMATTER, TEXT_OUTLINE_OPACITY, type TableRequestOptions, type TableResponse, type TableSourceOptions, type Tile, type TileFeatureExtractOptions, type TileFeatures, type TileFeaturesSpatialIndexOptions, TileFormat, type TileResolution, type Tilejson, type TilejsonResult, type TilesetSourceOptions, type Tilestats, type TimeSeriesRequestOptions, type TimeSeriesResponse, type TrajectoryQuerySourceOptions, type TrajectoryQuerySourceResponse, type TrajectoryTableSourceOptions, type TrajectoryTableSourceResponse, type VectorLayer, type VectorQuerySourceOptions, type VectorQuerySourceResponse, type VectorTableSourceOptions, type VectorTableSourceResponse, type VectorTilesetSourceOptions, type VectorTilesetSourceResponse, type ViewState, type Viewport, type WidgetFeatureGeometryType, WidgetQuerySource, type WidgetQuerySourceResult, WidgetRasterSource, type WidgetRasterSourceProps, type WidgetRasterSourceResult, WidgetRemoteSource, type WidgetRemoteSourceProps, WidgetSource, type WidgetSourceProps, WidgetTableSource, type WidgetTableSourceResult, WidgetTilesetSource, type WidgetTilesetSourceProps, type WidgetTilesetSourceResult, type _DataFilterExtensionProps, ErrorCode as _ErrorCode, type VecExprResult as _VecExprResult, applyLayerGroupFilters as _applyLayerGroupFilters, _buildFeatureFilter, createVecExprEvaluator as _createVecExprEvaluator, domainFromValues as _domainFromValues, evaluateVecExpr as _evaluateVecExpr, fillInMapDatasets as _fillInMapDatasets, fillInTileStats as _fillInTileStats, _getHexagonResolution, getLog10ScaleSteps as _getLog10ScaleSteps, getPointsAggregationLevel as _getPointsAggregationLevel, getRasterTileLayerStyleProps as _getRasterTileLayerStyleProps, validateVecExprSyntax as _validateVecExprSyntax, addFilter, aggregate, aggregationFunctions, applyFilters, applySorting, boundaryQuerySource, boundaryTableSource, buildAuthHeaders, buildBinaryFeatureFilter, buildPublicMapUrl, buildStatsUrl, calculateClusterRadius, calculateClusterTextFontSize, calculateLayerScale, clearDefaultRequestCache, clearFilters, compileCustomAggregation, configureSource, createColorScale, createPolygonSpatialFilter, createViewportSpatialFilter, fetchBasemapProps, fetchMap, filterFunctions, geojsonFeatures, getApplicableFilters, getAuthCredentials, getClient, getColorAccessor, getColumnNameFromGeoColumn, getDataFilterExtensionProps, getDefaultAggregationExpColumnAliasForLayerType, getFilter, getIconUrlAccessor, getLayerDescriptor, getLayerProps, getMaxMarkerSize, getSizeAccessor, getSorter, getSpatialIndexFromGeoColumn, getTextAccessor, groupValuesByColumn, groupValuesByDateColumn, h3QuerySource, h3TableSource, h3TilesetSource, hasFilter, histogram, isSpatialIndexFilter, makeIntervalComplete, negateAccessor, opacityToAlpha, parseMap, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, query, rasterSource, removeFilter, requestWithParameters, rewriteUrlForSessionMode, scaleAggregationResLevel, scatterPlot, setClient, tileFeatures, tileFeaturesGeometries, tileFeaturesSpatialIndex, trajectoryQuerySource, trajectoryTableSource, transformToTileCoords, vectorQuerySource, vectorTableSource, vectorTilesetSource };
2402
+ export { type APIErrorContext, type APIRequestType, AUDIT_TAGS, type AddFilterOptions, type AggregationFunction, type AggregationType, AggregationTypes, type AggregationsRequestOptions, type AggregationsResponse, ApiVersion, type Attribute, type AuthMode, type AuthOptions, _default as BASEMAP, type BaseRequestOptions, type Basemap, type BoundaryQuerySourceOptions, type BoundaryQuerySourceResponse, type BoundaryTableSourceOptions, type BoundaryTableSourceResponse, CARTO_SOURCES, CartoAPIError, type CategoryOrderBy, type CategoryRequestOptions, type CategoryResponse, type CategoryResponseEntry, type CategoryResponseRaw, CellSet, type ColumnsOption, type D3Scale, DEFAULT_API_BASE_URL, type ExtentRequestOptions, type ExtentResponse, FEATURE_GEOM_PROPERTY, type FeaturesRequestOptions, type FeaturesResponse, type FetchMapOptions, type FetchMapResult, type Filter, type FilterFunction, type FilterInterval, type FilterIntervalComplete, type FilterIntervalExtremum, type FilterLogicalOperator, type FilterOptions, FilterType, type Filters, type Format, type FormulaRequestOptions, type FormulaResponse, type GeometrySpatialFilter, type GetFilterOptions, type GoogleBasemap, type GroupByFeature, type GroupDateType, type H3QuerySourceOptions, type H3QuerySourceResponse, type H3TableSourceOptions, type H3TableSourceResponse, type H3TilesetSourceOptions, type H3TilesetSourceResponse, type HasFilterOptions, type HistogramRequestOptions, type HistogramResponse, type KeplerMapConfig, type Layer, type LayerDescriptor, type LayerType, type MapLibreBasemap, type MapType, type NamedQueryParameter, OPACITY_MAP, OTHERS_CATEGORY_NAME, type ParseMapResult, type PositionalQueryParameter, Provider, type ProviderType, type QuadbinQuerySourceOptions, type QuadbinQuerySourceResponse, type QuadbinTableSourceOptions, type QuadbinTableSourceResponse, type QuadbinTilesetSourceOptions, type QuadbinTilesetSourceResponse, type QueryOptions, type QueryParameterValue, type QueryParameters, type QueryResult, type QuerySourceOptions, type RangeRequestOptions, type RangeResponse, type Raster, RasterBandColorinterp, type RasterBandType, type RasterMetadata, type RasterMetadataBand, type RasterMetadataBandStats, type RasterSourceOptions, type RasterTile, type RemoveFilterOptions, SOURCE_DEFAULTS, type Scale, type ScaleKey, type ScaleType, type Scales, type ScatterPlotFeature, type ScatterRequestOptions, type ScatterResponse, type SchemaField, SchemaFieldType, type SortColumnType, type SortDirection, type SourceOptionalOptions, type SourceOptions, type SourceRequiredOptions, type SpatialDataType, type SpatialFilter, type SpatialFilterPolyfillMode, SpatialIndex, SpatialIndexColumn, type SpatialIndexFilter, type SpatialIndexTile, type StringSearchOptions, TEXT_LABEL_INDEX, TEXT_NUMBER_FORMATTER, TEXT_OUTLINE_OPACITY, type TableRequestOptions, type TableResponse, type TableSourceOptions, type Tile, type TileFeatureExtractOptions, type TileFeatures, type TileFeaturesSpatialIndexOptions, TileFormat, type TileResolution, type Tilejson, type TilejsonResult, type TilesetSourceOptions, type Tilestats, type TimeSeriesRequestOptions, type TimeSeriesResponse, type TrajectoryQuerySourceOptions, type TrajectoryQuerySourceResponse, type TrajectoryTableSourceOptions, type TrajectoryTableSourceResponse, type VectorLayer, type VectorQuerySourceOptions, type VectorQuerySourceResponse, type VectorTableSourceOptions, type VectorTableSourceResponse, type VectorTilesetSourceOptions, type VectorTilesetSourceResponse, type ViewState, type Viewport, type WidgetFeatureGeometryType, WidgetQuerySource, type WidgetQuerySourceResult, WidgetRasterSource, type WidgetRasterSourceProps, type WidgetRasterSourceResult, WidgetRemoteSource, type WidgetRemoteSourceProps, WidgetSource, type WidgetSourceProps, WidgetTableSource, type WidgetTableSourceResult, WidgetTilesetSource, type WidgetTilesetSourceProps, type WidgetTilesetSourceResult, type _DataFilterExtensionProps, ErrorCode as _ErrorCode, type VecExprResult as _VecExprResult, applyLayerGroupFilters as _applyLayerGroupFilters, _buildFeatureFilter, createVecExprEvaluator as _createVecExprEvaluator, domainFromValues as _domainFromValues, evaluateVecExpr as _evaluateVecExpr, fillInMapDatasets as _fillInMapDatasets, fillInTileStats as _fillInTileStats, _getHexagonResolution, getLog10ScaleSteps as _getLog10ScaleSteps, getPointsAggregationLevel as _getPointsAggregationLevel, getRasterTileLayerStyleProps as _getRasterTileLayerStyleProps, validateVecExprSyntax as _validateVecExprSyntax, addFilter, aggregate, aggregationFunctions, applyFilters, applySorting, boundaryQuerySource, boundaryTableSource, buildAuthHeaders, buildBinaryFeatureFilter, buildPublicMapUrl, buildStatsUrl, calculateClusterRadius, calculateClusterTextFontSize, calculateLayerScale, clearDefaultRequestCache, clearFilters, compileCustomAggregation, configureSource, createColorScale, createPolygonSpatialFilter, createViewportSpatialFilter, fetchBasemapProps, fetchMap, filterFunctions, geojsonFeatures, getApplicableFilters, getAuthCredentials, getClient, getColorAccessor, getColumnNameFromGeoColumn, getDataFilterExtensionProps, getDefaultAggregationExpColumnAliasForLayerType, getFillPatternAccessor, getFilter, getIconUrlAccessor, getLayerDescriptor, getLayerProps, getLineStyleAccessor, getMaxMarkerSize, getSizeAccessor, getSorter, getSpatialIndexFromGeoColumn, getTextAccessor, groupValuesByColumn, groupValuesByDateColumn, h3QuerySource, h3TableSource, h3TilesetSource, hasFilter, histogram, isSpatialIndexFilter, makeIntervalComplete, negateAccessor, opacityToAlpha, parseMap, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, query, rasterSource, removeFilter, requestWithParameters, rewriteUrlForSessionMode, scaleAggregationResLevel, scatterPlot, setClient, tileFeatures, tileFeaturesGeometries, tileFeaturesSpatialIndex, trajectoryQuerySource, trajectoryTableSource, transformToTileCoords, vectorQuerySource, vectorTableSource, vectorTilesetSource };
@@ -1,5 +1,5 @@
1
- import { Feature, Polygon, MultiPolygon, BBox, FeatureCollection, Geometry } from 'geojson';
2
- import { BinaryFeatureCollection, BinaryFeature } from '@loaders.gl/schema';
1
+ import { Polygon, MultiPolygon, Feature, BBox, FeatureCollection, Geometry } from 'geojson';
2
+ import { BinaryFeature, BinaryFeatureCollection } from '@loaders.gl/schema';
3
3
  import jsep from 'jsep';
4
4
 
5
5
  /**
@@ -863,6 +863,16 @@ declare function getIconUrlAccessor(field: VisualChannelField | null | undefined
863
863
  maxIconSize: number;
864
864
  useMaskedIcons?: boolean;
865
865
  }, data: any): any;
866
+ declare function getLineStyleAccessor(field: VisualChannelField, range: LineStyleRange, data: any): {
867
+ accessor: any;
868
+ domain: string[];
869
+ range: [number, number][];
870
+ };
871
+ declare function getFillPatternAccessor(field: VisualChannelField, range: FillPatternRange, density: 'small' | 'medium' | 'large' | undefined, data: any): {
872
+ accessor: any;
873
+ domain: string[];
874
+ range: string[];
875
+ };
866
876
  declare function getMaxMarkerSize(visConfig: VisConfig, visualChannels: VisualChannels): number;
867
877
  type Accessor = number | ((d: any, i: any) => number);
868
878
  declare function negateAccessor(accessor: Accessor): Accessor;
@@ -908,6 +918,10 @@ type VisualChannels = {
908
918
  sizeScale?: ScaleType;
909
919
  strokeColorField?: VisualChannelField;
910
920
  strokeColorScale?: ScaleType;
921
+ lineStyleField?: VisualChannelField;
922
+ lineStyleScale?: ScaleType;
923
+ fillPatternField?: VisualChannelField;
924
+ fillPatternScale?: ScaleType;
911
925
  heightField?: VisualChannelField;
912
926
  heightScale?: ScaleType;
913
927
  weightField?: VisualChannelField;
@@ -928,6 +942,20 @@ type CustomMarkersRange = {
928
942
  }[];
929
943
  othersMarker?: string;
930
944
  };
945
+ type LineStyleRange = {
946
+ dashArrayMap: {
947
+ value: string;
948
+ dashArray: [number, number];
949
+ }[];
950
+ othersDashArray?: [number, number];
951
+ };
952
+ type FillPatternRange = {
953
+ patternMap: {
954
+ value: string;
955
+ pattern: string;
956
+ }[];
957
+ othersPattern?: string;
958
+ };
931
959
  type ColorBand = 'red' | 'green' | 'blue' | 'alpha';
932
960
  type RasterLayerConfigColorBand = {
933
961
  band: ColorBand;
@@ -963,6 +991,15 @@ type VisConfig = {
963
991
  strokeColorAggregationDomain?: [number, number];
964
992
  strokeOpacity?: number;
965
993
  strokeColorRange?: ColorRange;
994
+ stroked?: boolean;
995
+ lineStyle?: 'solid' | 'dashed' | 'dotted';
996
+ dashArray?: [number, number];
997
+ lineStyleRange?: LineStyleRange | null;
998
+ fillPatternEnabled?: boolean;
999
+ fillPattern?: string;
1000
+ fillPatternDensity?: 'small' | 'medium' | 'large';
1001
+ fillPatternSize?: number;
1002
+ fillPatternRange?: FillPatternRange | null;
966
1003
  heightRange?: number[];
967
1004
  heightAggregation?: string;
968
1005
  heightAggregationExp?: string;
@@ -1149,9 +1186,9 @@ type Scale = {
1149
1186
  domain?: string[] | number[];
1150
1187
  /** Domain of the user to construct d3 scale */
1151
1188
  scaleDomain?: string[] | number[];
1152
- range?: string[] | number[];
1189
+ range?: string[] | number[] | number[][];
1153
1190
  };
1154
- type ScaleKey = 'fillColor' | 'pointRadius' | 'lineColor' | 'lineWidth' | 'elevation' | 'weight';
1191
+ type ScaleKey = 'fillColor' | 'pointRadius' | 'lineColor' | 'lineWidth' | 'elevation' | 'weight' | 'lineStyle' | 'fillPattern';
1155
1192
  type Scales = Partial<Record<ScaleKey, Scale>>;
1156
1193
  type LayerDescriptor = {
1157
1194
  type: LayerType;
@@ -2362,4 +2399,4 @@ declare function getColumnNameFromGeoColumn(geoColumn: string | null | undefined
2362
2399
  */
2363
2400
  declare function getSpatialIndexFromGeoColumn(geoColumn: string): SpatialIndex | null;
2364
2401
 
2365
- export { type APIErrorContext, type APIRequestType, AUDIT_TAGS, type AddFilterOptions, type AggregationFunction, type AggregationType, AggregationTypes, type AggregationsRequestOptions, type AggregationsResponse, ApiVersion, type Attribute, type AuthMode, type AuthOptions, _default as BASEMAP, type BaseRequestOptions, type Basemap, type BoundaryQuerySourceOptions, type BoundaryQuerySourceResponse, type BoundaryTableSourceOptions, type BoundaryTableSourceResponse, CARTO_SOURCES, CartoAPIError, type CategoryOrderBy, type CategoryRequestOptions, type CategoryResponse, type CategoryResponseEntry, type CategoryResponseRaw, CellSet, type ColumnsOption, type D3Scale, DEFAULT_API_BASE_URL, type ExtentRequestOptions, type ExtentResponse, FEATURE_GEOM_PROPERTY, type FeaturesRequestOptions, type FeaturesResponse, type FetchMapOptions, type FetchMapResult, type Filter, type FilterFunction, type FilterInterval, type FilterIntervalComplete, type FilterIntervalExtremum, type FilterLogicalOperator, type FilterOptions, FilterType, type Filters, type Format, type FormulaRequestOptions, type FormulaResponse, type GeometrySpatialFilter, type GetFilterOptions, type GoogleBasemap, type GroupByFeature, type GroupDateType, type H3QuerySourceOptions, type H3QuerySourceResponse, type H3TableSourceOptions, type H3TableSourceResponse, type H3TilesetSourceOptions, type H3TilesetSourceResponse, type HasFilterOptions, type HistogramRequestOptions, type HistogramResponse, type KeplerMapConfig, type Layer, type LayerDescriptor, type LayerType, type MapLibreBasemap, type MapType, type NamedQueryParameter, OPACITY_MAP, OTHERS_CATEGORY_NAME, type ParseMapResult, type PositionalQueryParameter, Provider, type ProviderType, type QuadbinQuerySourceOptions, type QuadbinQuerySourceResponse, type QuadbinTableSourceOptions, type QuadbinTableSourceResponse, type QuadbinTilesetSourceOptions, type QuadbinTilesetSourceResponse, type QueryOptions, type QueryParameterValue, type QueryParameters, type QueryResult, type QuerySourceOptions, type RangeRequestOptions, type RangeResponse, type Raster, RasterBandColorinterp, type RasterBandType, type RasterMetadata, type RasterMetadataBand, type RasterMetadataBandStats, type RasterSourceOptions, type RasterTile, type RemoveFilterOptions, SOURCE_DEFAULTS, type Scale, type ScaleKey, type ScaleType, type Scales, type ScatterPlotFeature, type ScatterRequestOptions, type ScatterResponse, type SchemaField, SchemaFieldType, type SortColumnType, type SortDirection, type SourceOptionalOptions, type SourceOptions, type SourceRequiredOptions, type SpatialDataType, type SpatialFilter, type SpatialFilterPolyfillMode, SpatialIndex, SpatialIndexColumn, type SpatialIndexFilter, type SpatialIndexTile, type StringSearchOptions, TEXT_LABEL_INDEX, TEXT_NUMBER_FORMATTER, TEXT_OUTLINE_OPACITY, type TableRequestOptions, type TableResponse, type TableSourceOptions, type Tile, type TileFeatureExtractOptions, type TileFeatures, type TileFeaturesSpatialIndexOptions, TileFormat, type TileResolution, type Tilejson, type TilejsonResult, type TilesetSourceOptions, type Tilestats, type TimeSeriesRequestOptions, type TimeSeriesResponse, type TrajectoryQuerySourceOptions, type TrajectoryQuerySourceResponse, type TrajectoryTableSourceOptions, type TrajectoryTableSourceResponse, type VectorLayer, type VectorQuerySourceOptions, type VectorQuerySourceResponse, type VectorTableSourceOptions, type VectorTableSourceResponse, type VectorTilesetSourceOptions, type VectorTilesetSourceResponse, type ViewState, type Viewport, type WidgetFeatureGeometryType, WidgetQuerySource, type WidgetQuerySourceResult, WidgetRasterSource, type WidgetRasterSourceProps, type WidgetRasterSourceResult, WidgetRemoteSource, type WidgetRemoteSourceProps, WidgetSource, type WidgetSourceProps, WidgetTableSource, type WidgetTableSourceResult, WidgetTilesetSource, type WidgetTilesetSourceProps, type WidgetTilesetSourceResult, type _DataFilterExtensionProps, ErrorCode as _ErrorCode, type VecExprResult as _VecExprResult, applyLayerGroupFilters as _applyLayerGroupFilters, _buildFeatureFilter, createVecExprEvaluator as _createVecExprEvaluator, domainFromValues as _domainFromValues, evaluateVecExpr as _evaluateVecExpr, fillInMapDatasets as _fillInMapDatasets, fillInTileStats as _fillInTileStats, _getHexagonResolution, getLog10ScaleSteps as _getLog10ScaleSteps, getPointsAggregationLevel as _getPointsAggregationLevel, getRasterTileLayerStyleProps as _getRasterTileLayerStyleProps, validateVecExprSyntax as _validateVecExprSyntax, addFilter, aggregate, aggregationFunctions, applyFilters, applySorting, boundaryQuerySource, boundaryTableSource, buildAuthHeaders, buildBinaryFeatureFilter, buildPublicMapUrl, buildStatsUrl, calculateClusterRadius, calculateClusterTextFontSize, calculateLayerScale, clearDefaultRequestCache, clearFilters, compileCustomAggregation, configureSource, createColorScale, createPolygonSpatialFilter, createViewportSpatialFilter, fetchBasemapProps, fetchMap, filterFunctions, geojsonFeatures, getApplicableFilters, getAuthCredentials, getClient, getColorAccessor, getColumnNameFromGeoColumn, getDataFilterExtensionProps, getDefaultAggregationExpColumnAliasForLayerType, getFilter, getIconUrlAccessor, getLayerDescriptor, getLayerProps, getMaxMarkerSize, getSizeAccessor, getSorter, getSpatialIndexFromGeoColumn, getTextAccessor, groupValuesByColumn, groupValuesByDateColumn, h3QuerySource, h3TableSource, h3TilesetSource, hasFilter, histogram, isSpatialIndexFilter, makeIntervalComplete, negateAccessor, opacityToAlpha, parseMap, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, query, rasterSource, removeFilter, requestWithParameters, rewriteUrlForSessionMode, scaleAggregationResLevel, scatterPlot, setClient, tileFeatures, tileFeaturesGeometries, tileFeaturesSpatialIndex, trajectoryQuerySource, trajectoryTableSource, transformToTileCoords, vectorQuerySource, vectorTableSource, vectorTilesetSource };
2402
+ export { type APIErrorContext, type APIRequestType, AUDIT_TAGS, type AddFilterOptions, type AggregationFunction, type AggregationType, AggregationTypes, type AggregationsRequestOptions, type AggregationsResponse, ApiVersion, type Attribute, type AuthMode, type AuthOptions, _default as BASEMAP, type BaseRequestOptions, type Basemap, type BoundaryQuerySourceOptions, type BoundaryQuerySourceResponse, type BoundaryTableSourceOptions, type BoundaryTableSourceResponse, CARTO_SOURCES, CartoAPIError, type CategoryOrderBy, type CategoryRequestOptions, type CategoryResponse, type CategoryResponseEntry, type CategoryResponseRaw, CellSet, type ColumnsOption, type D3Scale, DEFAULT_API_BASE_URL, type ExtentRequestOptions, type ExtentResponse, FEATURE_GEOM_PROPERTY, type FeaturesRequestOptions, type FeaturesResponse, type FetchMapOptions, type FetchMapResult, type Filter, type FilterFunction, type FilterInterval, type FilterIntervalComplete, type FilterIntervalExtremum, type FilterLogicalOperator, type FilterOptions, FilterType, type Filters, type Format, type FormulaRequestOptions, type FormulaResponse, type GeometrySpatialFilter, type GetFilterOptions, type GoogleBasemap, type GroupByFeature, type GroupDateType, type H3QuerySourceOptions, type H3QuerySourceResponse, type H3TableSourceOptions, type H3TableSourceResponse, type H3TilesetSourceOptions, type H3TilesetSourceResponse, type HasFilterOptions, type HistogramRequestOptions, type HistogramResponse, type KeplerMapConfig, type Layer, type LayerDescriptor, type LayerType, type MapLibreBasemap, type MapType, type NamedQueryParameter, OPACITY_MAP, OTHERS_CATEGORY_NAME, type ParseMapResult, type PositionalQueryParameter, Provider, type ProviderType, type QuadbinQuerySourceOptions, type QuadbinQuerySourceResponse, type QuadbinTableSourceOptions, type QuadbinTableSourceResponse, type QuadbinTilesetSourceOptions, type QuadbinTilesetSourceResponse, type QueryOptions, type QueryParameterValue, type QueryParameters, type QueryResult, type QuerySourceOptions, type RangeRequestOptions, type RangeResponse, type Raster, RasterBandColorinterp, type RasterBandType, type RasterMetadata, type RasterMetadataBand, type RasterMetadataBandStats, type RasterSourceOptions, type RasterTile, type RemoveFilterOptions, SOURCE_DEFAULTS, type Scale, type ScaleKey, type ScaleType, type Scales, type ScatterPlotFeature, type ScatterRequestOptions, type ScatterResponse, type SchemaField, SchemaFieldType, type SortColumnType, type SortDirection, type SourceOptionalOptions, type SourceOptions, type SourceRequiredOptions, type SpatialDataType, type SpatialFilter, type SpatialFilterPolyfillMode, SpatialIndex, SpatialIndexColumn, type SpatialIndexFilter, type SpatialIndexTile, type StringSearchOptions, TEXT_LABEL_INDEX, TEXT_NUMBER_FORMATTER, TEXT_OUTLINE_OPACITY, type TableRequestOptions, type TableResponse, type TableSourceOptions, type Tile, type TileFeatureExtractOptions, type TileFeatures, type TileFeaturesSpatialIndexOptions, TileFormat, type TileResolution, type Tilejson, type TilejsonResult, type TilesetSourceOptions, type Tilestats, type TimeSeriesRequestOptions, type TimeSeriesResponse, type TrajectoryQuerySourceOptions, type TrajectoryQuerySourceResponse, type TrajectoryTableSourceOptions, type TrajectoryTableSourceResponse, type VectorLayer, type VectorQuerySourceOptions, type VectorQuerySourceResponse, type VectorTableSourceOptions, type VectorTableSourceResponse, type VectorTilesetSourceOptions, type VectorTilesetSourceResponse, type ViewState, type Viewport, type WidgetFeatureGeometryType, WidgetQuerySource, type WidgetQuerySourceResult, WidgetRasterSource, type WidgetRasterSourceProps, type WidgetRasterSourceResult, WidgetRemoteSource, type WidgetRemoteSourceProps, WidgetSource, type WidgetSourceProps, WidgetTableSource, type WidgetTableSourceResult, WidgetTilesetSource, type WidgetTilesetSourceProps, type WidgetTilesetSourceResult, type _DataFilterExtensionProps, ErrorCode as _ErrorCode, type VecExprResult as _VecExprResult, applyLayerGroupFilters as _applyLayerGroupFilters, _buildFeatureFilter, createVecExprEvaluator as _createVecExprEvaluator, domainFromValues as _domainFromValues, evaluateVecExpr as _evaluateVecExpr, fillInMapDatasets as _fillInMapDatasets, fillInTileStats as _fillInTileStats, _getHexagonResolution, getLog10ScaleSteps as _getLog10ScaleSteps, getPointsAggregationLevel as _getPointsAggregationLevel, getRasterTileLayerStyleProps as _getRasterTileLayerStyleProps, validateVecExprSyntax as _validateVecExprSyntax, addFilter, aggregate, aggregationFunctions, applyFilters, applySorting, boundaryQuerySource, boundaryTableSource, buildAuthHeaders, buildBinaryFeatureFilter, buildPublicMapUrl, buildStatsUrl, calculateClusterRadius, calculateClusterTextFontSize, calculateLayerScale, clearDefaultRequestCache, clearFilters, compileCustomAggregation, configureSource, createColorScale, createPolygonSpatialFilter, createViewportSpatialFilter, fetchBasemapProps, fetchMap, filterFunctions, geojsonFeatures, getApplicableFilters, getAuthCredentials, getClient, getColorAccessor, getColumnNameFromGeoColumn, getDataFilterExtensionProps, getDefaultAggregationExpColumnAliasForLayerType, getFillPatternAccessor, getFilter, getIconUrlAccessor, getLayerDescriptor, getLayerProps, getLineStyleAccessor, getMaxMarkerSize, getSizeAccessor, getSorter, getSpatialIndexFromGeoColumn, getTextAccessor, groupValuesByColumn, groupValuesByDateColumn, h3QuerySource, h3TableSource, h3TilesetSource, hasFilter, histogram, isSpatialIndexFilter, makeIntervalComplete, negateAccessor, opacityToAlpha, parseMap, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, query, rasterSource, removeFilter, requestWithParameters, rewriteUrlForSessionMode, scaleAggregationResLevel, scatterPlot, setClient, tileFeatures, tileFeaturesGeometries, tileFeaturesSpatialIndex, trajectoryQuerySource, trajectoryTableSource, transformToTileCoords, vectorQuerySource, vectorTableSource, vectorTilesetSource };
@@ -9796,6 +9796,34 @@ function getIconUrlAccessor(field, range, {
9796
9796
  };
9797
9797
  return normalizeAccessor(accessor, data);
9798
9798
  }
9799
+ function getLineStyleAccessor(field, range, data) {
9800
+ const fallback = range.othersDashArray ?? [0, 0];
9801
+ const mapping = {};
9802
+ for (const { value, dashArray } of range.dashArrayMap) {
9803
+ mapping[value] = dashArray;
9804
+ }
9805
+ const accessor = (properties) => mapping[properties[field.name]] ?? fallback;
9806
+ return {
9807
+ accessor: normalizeAccessor(accessor, data),
9808
+ domain: range.dashArrayMap.map(({ value }) => value),
9809
+ range: range.dashArrayMap.map(({ dashArray }) => dashArray)
9810
+ };
9811
+ }
9812
+ function getFillPatternAccessor(field, range, density, data) {
9813
+ const d = density ?? "medium";
9814
+ const toKey = (pattern) => pattern === "solid" || pattern === "none" ? pattern : `${pattern}-${d}`;
9815
+ const fallback = toKey(range.othersPattern ?? "none");
9816
+ const mapping = {};
9817
+ for (const { value, pattern } of range.patternMap) {
9818
+ mapping[value] = toKey(pattern);
9819
+ }
9820
+ const accessor = (properties) => mapping[properties[field.name]] ?? fallback;
9821
+ return {
9822
+ accessor: normalizeAccessor(accessor, data),
9823
+ domain: range.patternMap.map(({ value }) => value),
9824
+ range: range.patternMap.map(({ pattern }) => pattern)
9825
+ };
9826
+ }
9799
9827
  function getMaxMarkerSize(visConfig, visualChannels) {
9800
9828
  const { radiusRange, radius, sizeMaxPixels } = visConfig;
9801
9829
  const { radiusField, sizeField } = visualChannels;
@@ -10282,6 +10310,194 @@ function hexToRGB2(hexColor) {
10282
10310
  return [r, g, b];
10283
10311
  }
10284
10312
 
10313
+ // src/fetch-map/pattern-atlas-baked.ts
10314
+ var BAKED_ATLAS_URL = "data:image/png;base64,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";
10315
+ var PATTERN_ATLAS_MAPPING = {
10316
+ "hlines-large": { x: 0, y: 0, width: 64, height: 64, mask: true },
10317
+ "hlines-medium": { x: 64, y: 0, width: 64, height: 64, mask: true },
10318
+ "hlines-small": { x: 128, y: 0, width: 64, height: 64, mask: true },
10319
+ "vlines-large": { x: 0, y: 64, width: 64, height: 64, mask: true },
10320
+ "vlines-medium": { x: 64, y: 64, width: 64, height: 64, mask: true },
10321
+ "vlines-small": { x: 128, y: 64, width: 64, height: 64, mask: true },
10322
+ "diag-left-large": { x: 0, y: 128, width: 64, height: 64, mask: true },
10323
+ "diag-left-medium": { x: 64, y: 128, width: 64, height: 64, mask: true },
10324
+ "diag-left-small": { x: 128, y: 128, width: 64, height: 64, mask: true },
10325
+ "diag-right-large": { x: 0, y: 192, width: 64, height: 64, mask: true },
10326
+ "diag-right-medium": { x: 64, y: 192, width: 64, height: 64, mask: true },
10327
+ "diag-right-small": { x: 128, y: 192, width: 64, height: 64, mask: true },
10328
+ "cross-hatch-large": { x: 0, y: 256, width: 64, height: 64, mask: true },
10329
+ "cross-hatch-medium": { x: 64, y: 256, width: 64, height: 64, mask: true },
10330
+ "cross-hatch-small": { x: 128, y: 256, width: 64, height: 64, mask: true },
10331
+ "dots-large": { x: 0, y: 320, width: 64, height: 64, mask: true },
10332
+ "dots-medium": { x: 64, y: 320, width: 64, height: 64, mask: true },
10333
+ "dots-small": { x: 128, y: 320, width: 64, height: 64, mask: true },
10334
+ "checker-large": { x: 0, y: 384, width: 64, height: 64, mask: true },
10335
+ "checker-medium": { x: 64, y: 384, width: 64, height: 64, mask: true },
10336
+ "checker-small": { x: 128, y: 384, width: 64, height: 64, mask: true },
10337
+ solid: { x: 64, y: 448, width: 64, height: 64, mask: true },
10338
+ none: { x: 0, y: 448, width: 64, height: 64, mask: true }
10339
+ };
10340
+ var CELL = 64;
10341
+ var ATLAS_W = CELL * 3;
10342
+ var ATLAS_H = CELL * 8;
10343
+
10344
+ // src/fetch-map/patterns/hlines-large.png
10345
+ var hlines_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABBSURBVHic7dixAQAgDMOwwP8/wxfNUOkCz04AYK2T5LUjmm47AAAAAOb5Ae0AAAAAmOcHtAMAAABgnh/QDgAAaj69GwQJx6ek3QAAAABJRU5ErkJggg==";
10346
+
10347
+ // src/fetch-map/patterns/hlines-medium.png
10348
+ var hlines_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABOSURBVHic7daxAQAgDMOwwv8/wxkeKl3gLTkz8wYAVjrbZ/DWAQDQ8QPqAADo+AF1AAB0/IA6AAA6fkAdAAAdP6AOAICOH1AHAEBn/Q/4F6kJD4qx2asAAAAASUVORK5CYII=";
10349
+
10350
+ // src/fetch-map/patterns/hlines-small.png
10351
+ var hlines_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABrSURBVHic7dSxAQAgDMOwwv8/wxkeKl3gJTkz8wbWOtsncOsAaPmAOgBaPqAOgJYPqAOg5QPqAGj5gDoAWj6gDoCWD6gDoOUD6gBo+YA6AFo+oA6Alg+oA6DlA+oAaPmAOgBaPqAOgNb6D/gRbhEfmYiEGgAAAABJRU5ErkJggg==";
10352
+
10353
+ // src/fetch-map/patterns/vlines-large.png
10354
+ var vlines_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACkSURBVHic7dAxCsAwEMRAk///2W5Sp7CLMUGCK28RGuOb+d4u1/8/B+O/oABaQFMALaApgBbQFEALaAqgBTQF0AKaAmgBTQG0gKYAWkBTAC2gKYAW0BRAC2gKoAU0BdACmgJoAU0BtICmAFpAUwAtoCmAFtAUQAtoCqAFNAXQApoCaAFNAbSApgBaQFMALaApgBbQFEALaAqgBTQF0AKaAmgBzQIgxAh3o/Zl8AAAAABJRU5ErkJggg==";
10355
+
10356
+ // src/fetch-map/patterns/vlines-medium.png
10357
+ var vlines_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACfSURBVHic7dCxDYBQAITQi/vv/J1A25cotDSEbTt75nzdXy/yFzRAB2gaoAM0DdABmgboAE0DdICmATpA0wAdoGmADtA0QAdoGqADNA3QAZoG6ABNA3SApgE6QNMAHaBpgA7QNEAHaBqgAzQN0AGaBugATQN0gKYBOkDTAB2gaYAO0DRAB2gaoAM0DdABmgboAE0DdICmATpA0wAdoLkBMJgQb6A8qDAAAAAASUVORK5CYII=";
10358
+
10359
+ // src/fetch-map/patterns/vlines-small.png
10360
+ var vlines_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACcSURBVHic7dCxDcAwAMMwo///nIw9gUPEzZuhbTv7ndf2t8cVQB/QCqAPaAXQB7QC6ANaAfQBrQD6gFYAfUArgD6gFUAf0AqgD2gF0Ae0AugDWgH0Aa0A+oBWAH1AK4A+oBVAH9AKoA9oBdAHtALoA1oB9AGtAPqAVgB9QCuAPqAVQB/QCqAPaAXQB7QC6ANaAfQBrQD6gFYAfUC7UEAgXxU1dpkAAAAASUVORK5CYII=";
10361
+
10362
+ // src/fetch-map/patterns/diag-left-large.png
10363
+ var diag_left_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACtSURBVHic7dkxCsMwEETRuf/lfKSkmBCiflUseR/cDuYhN3KSvD7PVM+FzfxsPsOb3+F/RTiGIUCAACEQzmEIECBACIRzGAIECBAC4RyGAGEpwvQd2zaE8eOwDeHKN7EJIYHQIEBoECA0CBAaBAgNAoQGAUKDAKFBgNAgbEWYltiGcOU4bEJY9QfmBkICoUGA0CBAaBAgNAgQGgQIDQKEBgFCgwChrUWYfOF1CG/KcyXf7pwUyQAAAABJRU5ErkJggg==";
10364
+
10365
+ // src/fetch-map/patterns/diag-left-medium.png
10366
+ var diag_left_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAD+SURBVHic7dqxDYAwDADB7L9cRoIGaiQk81cQKZ3l+wG81lrH9Z/ePbcf5vaLnaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRn/hEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMRtU9EjPtEROgTEaVPRJQ+EVH7RETtExG1T0TUPhFR+0RE7RMR/33Afx8w7xMRpU9E1D4RUftERO0TEbVPRNQ+EVH7RETtExHjPhFR+SdUtUu99aAoTAAAAABJRU5ErkJggg==";
10367
+
10368
+ // src/fetch-map/patterns/diag-left-small.png
10369
+ var diag_left_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADqSURBVHic7dgxCsMwAARB/f9zflLS2JDC/U7gDG4EA4s63TnnfO7/+a6Xs/Nzdr2c/bMnIkpPRNSeiMg8ERF6IqL0RETpiYjaExG1JyIST0SEnogoPRFReiKi9kRE5omI0BMRpSciSk9E1J6IyDwREXoiYnvAXoG7hNwTEYknIkJPRJSeiCg9EVF7ImJ7wPaAxhMRpSciak9EZJ6ICD0RsT1gr8BdQu6JiMQTEaEnIkpPRJSeiKg9EbE9YHtA44mI0hMRtSciMk9EhJ6I2B6wV+AuIfdEROKJiNATEaUnIkpPRNSeiNgeUPgvaSqXeT0fItoAAAAASUVORK5CYII=";
10370
+
10371
+ // src/fetch-map/patterns/diag-right-large.png
10372
+ var diag_right_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAClSURBVHic7djBCQMgFAXB339zlmQuOaSAFSLOFvBwEC/OzOzpWt+9cnN+NteBzawb8dlZ4eHb4OH7TfgiePg2ePh+E74IHr4NHr7fhK9HT2z+O37N4/jafh3+yFOCjzfho+Dhw+Dh+034KHj4MHj4fhM+Ch4+DP5V/DyO3/M4/shTugmfXT48fBc8fBs8fDwIHwUP3wYPHw/CR8HDt8HH33hP4/cHynMl31YK/QUAAAAASUVORK5CYII=";
10373
+
10374
+ // src/fetch-map/patterns/diag-right-medium.png
10375
+ var diag_right_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADKSURBVHic7doxCsMwEAXRf//L6UhKkyJVVmkyRn8M6pYdHhg3VpLszM9+nzXMrY/Z0510H43T+HFWvHggTvfFiwfidF98Kz7l+J1y/Dh3O/5rX7x4IE73xYsH4nS/Gp9y/Eo5/mTf1fhxp3jxQJzuixcPxOm++FZ8yvE75fif3pAb8cffB/H/jtN98eKBON0XLx6IP6Bfjd8px49zt+P9Y/TION0XLx6I033xrfiU470fcLDvavy4U7x4IE73xYsH4nRffCs+5fj9AlS1S72cv9TCAAAAAElFTkSuQmCC";
10376
+
10377
+ // src/fetch-map/patterns/diag-right-small.png
10378
+ var diag_right_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAADbSURBVHic7dgxCsNAEMXQuf/lfCSnCdiFqx01AqXLwgP90jMzc8/zu/7/32/zers+3uxeHY95dXzjd14dT3h1POHV8ahXxze+8cdeHU94dTzh1fGYV8c3fufV8YRXxxNeHY95dXzjd14d3z0A8Op41KvjG9/47gGnXh1PeHV8n8SN33t1POHV8YRXx2NeHd/4nVfHdw8AvDoe9er4xje+e8CpV8cTXh3fJ3Hj914dT3h1POHV8ZhXxzd+59Xx3QMAr45HvTq+8Y3vHnDq1fGEV8f3Sdz4vVfHr/0PaSqXeV716iAAAAAASUVORK5CYII=";
10379
+
10380
+ // src/fetch-map/patterns/cross-hatch-large.png
10381
+ var cross_hatch_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAALoSURBVHic1ZpdUiwxCIUpV3D3/zJL0qXcHeiLsVokCT8fPRmq5kErnOGcTgMKIiKf3x/CHhc8ClMU5juMiQX8UEFSIliYVRH+cK6KcCX/7/t3hAgW4aoIU65ZESzywyoirIhmRdhyjIqwIj8sI4KHYFQENzfvQQ/5YRERIsS8Z8O3e+cQIT/MI0Lmau980vlt5pghP2wlQiW5zXzLFU4DVMgPs0QgypvGwPqRT+OTJT/s3cAkGhwrVsRI8sPIxuZqOHnd3lLAd2CWhdXvPBXwNUCqbdaxlUWYJbyqCFZgVRFmMaVF2GX7rAirgLIi7GIJi+AtdVERPIFERfDG4BYhWufxAAIi4A8g2+TgV9AhAv4KVjs8PAktRMCTMNHeWoERtViL0FGGEfIaGGtEJm0zYT9YVKAamAq0C/NxFYASQT8pIuAOzIfGIkTQGETAGoNom6c5ryLCzLciwsy3IsI24WdE2PlkRNj5ZERwV7uICN6zERG8ZyMihEu9h1j0tniIRW+LR4R0n7MimM0XK4LZfLESodzkWUSrFcMiWq0YlghUh/uLMNUzWLW9Wt+v8WHkrYDp8TTV3IjRNm/Jv0FffIp9qJ//E6Cv8gq07Ce8ShJs2U94lTLYsp/wKo1Qy35ChJj3bISY92zLfkLmau98Mld759Oyn1BJbjPfSnKb+bbsJxDlTWMQ5U1jtOwnkB0eXdtnmOR+AkZ+GEnewqT3E9Bg9ZMihO3eTzh3Pn/TfoLIifP5m/cTRE6azz9pP0HkhPn8k/cTRJ45nz9kP0HkGfP5w/YTRO6czx+6nyBy03z+5P0EkRvm8wT5GSbW4dLkxfgfHmV4rFpVAthqb4/8Y0wDdc3nCRE0RlmEGUDXfL4iwsw3LcLOsWs+nxFh5xMWwevQNZ+PiOA96xYhqlbXfN5DLHpbttyy70vXfH5FMJsvphyrGbNrPm8RrVaMP1ypmtk1n78SpnqGX5zJrik8n3ca3TD9YH4B52HxPNYfWfcAAAAASUVORK5CYII=";
10382
+
10383
+ // src/fetch-map/patterns/cross-hatch-medium.png
10384
+ var cross_hatch_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAKASURBVHic7ZpNbgMxCIWtnqD33+RI7VF6g2STSg4/D2zTAaIiZVEb8zEeG/WhGWOM+/OH7D79voDfjfh6Y2byzQUzGCVxU3ytB8rmywMCHI3N8M/nmJaExIrk/9oKX5xAuz3PSQ+vJYHedgSf2gqfOVj3jfrSh5eSsO7mCV+zFT4LjIzeuYiY6XxvYaLVFiXhjZnOp4G0BdKd15KgMVB1TuV7A6CC530AKYlU/s4R0gqe97hJhSmLv1xENLjki8z6x+YqvuksFRwP3Howb8y/5sPCRO8cSoLOoSTmuWz+0DZBKzhSElpiUhLSWDafJYGqLQVaR3MGoreSzWdJWAXHey+pL7qXl/M/iOM3+fvHCBxtqfyuej6EX0nPX86vpOcz+GbBuUrPZ/FNRxrYMq9vlX6CmYS32Kz4VuonvCxsq+cP+UsByun5ID5bgI5QJT0fyWcLkFXR86F8765Kvpq16SdQB5TEPJet50P42oSUhDSWreeP+NbRmIHorWTr+V2+q+B472W7fgLtB5xay35C1BHs2k+Am+AtQt37CeIE2u15LlvPR/GZg1VwqO879BNYYGRV9Hwo31uYKun5MD4NpC2oqOeP+d4AlfX8Nn/nCFXV8zv85SJSWs9v8E3nNnp+k/8eev6AP7RNaKPnA/gsiU56PorPkrAKjvdeUt9S/YT/7wMm66rnQ/in39ufFqEy3wdQ66Tnd/lmEemk53f4piMNbJnXt0o/wUzCW2xWfCv1E14WttXzh/ylAOX0fBCfLUBHqJKej+SzBciq6PlQvndXJV/N2vQTqANKYp7L1vMhfG1CSkIay9bzR3zraMxA9Fay9fwu31VwvPeyXT/hAZMuKfjIf3HUAAAAAElFTkSuQmCC";
10385
+
10386
+ // src/fetch-map/patterns/cross-hatch-small.png
10387
+ var cross_hatch_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAHqSURBVHic7ZhRagMxDERFT5D7/+RI26PkBu5PFipZirqmE41aB/wRR89LhoG3WERkPJeIyP3b93NPzN7h7HXmp4POoZ/sRasTPyV0e+4dBvZmGXm5ytvaDGcw2jv+AK+S9wa86niHVfPRH8z45YrdzYO68uoQm1S0vNp15aeEXmnGPuTWnJcPufb5NN8fzXmRxQp18nzGq9qIGfT2qj3/2+8J6gcvqWpPo/k2nke9J4QVYfE0nLepDDJPo3mVBpun4bx9D2Dz9Ft4rxZMnkbzUwjVnn47z+5pNK+S8wa6eH6Vv1wxrzmdeXWITSpanTyf8VNCVJ5G8//9PuAhixXq5PmMV7URM+jttfN8wqthL6lqT+/7ADAf1obF03DepjLIPI3mVRp0nkbz+z4gqAWTp9H8FAKbp+E8u6fRvErOG6j29L4PAPPqEJtUtDp5PuOnhKg8jeb3fcBihTp5PuNVbcQMenvtPJ/wathLqtrT+z4AzIe1YfE0nLepDDJPo3mVBp2n0fy+DwhqweRpND+FcH5YPA3n2T2N5tOBak/v+wAwrw6xSUWrk+czfkqIytNoft8HLFaok+czXtVGzOCrvTaeT3g17CVV7Wma+4DoAeyez/iwNiyehvM2lUHmaTSv0rBDXkitPJ/xX9QhcjSKhBtGAAAAAElFTkSuQmCC";
10388
+
10389
+ // src/fetch-map/patterns/dots-large.png
10390
+ var dots_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABJSURBVHic7dixEQAgDAMxH/vvDDskBReQ+h/ATpKduv1ADwAAwJduz9Gr/WrEAAAAMNjoPe8PAAAAgJLRe94fAAAAACWj93y3PwvzJ98DYTY6AAAAAElFTkSuQmCC";
10391
+
10392
+ // src/fetch-map/patterns/dots-medium.png
10393
+ var dots_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAABdSURBVHic7daxDcBADAMxI/vv/Jkg6YQXYLLVAKeZmTPfzoIdgNVuZ+jq/vyMALBAdaf9AACIqu60HwAAUdWd9gMAIKq6034AAERVd9oPAICo6k77AQAQVd3p9P4CKgaPf9S3g48AAAAASUVORK5CYII=";
10394
+
10395
+ // src/fetch-map/patterns/dots-small.png
10396
+ var dots_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAB8SURBVHic7dSxDQAxDAMx4/ffOSl/A0WAyc69TzMzZ35n4c16r1/w6f0NrFfVpA2AuKombQDEVTVpAyCuqkkbAHFVTdoAiKtq0gZAXFWTNgDiqpq0ARBX1aQNgLiqJm0AxFU1aQMgrqpJGwBxVU3aAIiratIGQFxVk+n7ApyMHh3vKZDHAAAAAElFTkSuQmCC";
10397
+
10398
+ // src/fetch-map/patterns/checker-large.png
10399
+ var checker_large_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAAC7SURBVHic7dhRCsJQEMXQV/e/57oD56scHZPfciGEFnGuc859PnMNz396/xrG6ymAFtBM39fR3+jT+79/AwqgBTQF0AKaAmgBzfXtv9P9F3iYAmgBTQG0gKYAWkDTPWAYr6cAWkBTAC2gKYAW0HQPGMbrKYAW0BRAC2gKoAU03QOG8XoKoAU0BdACmgJoAU33gGG8ngJoAU0BtICmAFpA0z1gGK+nAFpAUwAtoCmAFtB0DxjG6ymAFtC8AfltJHRjA+VQAAAAAElFTkSuQmCC";
10400
+
10401
+ // src/fetch-map/patterns/checker-medium.png
10402
+ var checker_medium_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACpSURBVHic7dYxDoNAAAPBvfz/z6EOD2AjvNOhayzDCR/gy69ze371+Ydx97aw38jT5/NfQAXYAWzn3+5kf4GHVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGVYAdwNYOYFwF2AFs7QDGXajSiGiQ1/fcAAAAAElFTkSuQmCC";
10403
+
10404
+ // src/fetch-map/patterns/checker-small.png
10405
+ var checker_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACgSURBVHic7dRBCoNQFEPR1P3vuZ1UEBcQAv8ccPB0am6SfP/P7aj78/rwfHfEfYWtX7J9H/8HaEDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjapAaUaUDY2qQGlGlA2NqkBpRpQNjaZPv+AQpgHkxA3R9BAAAAAElFTkSuQmCC";
10406
+
10407
+ // src/fetch-map/patterns/solid.png
10408
+ var solid_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACWSURBVHic7dBBEcAwAMOwrPw5dzD0qIXA52/b3cOODtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QPsBULQBfwAqZPkAAAAASUVORK5CYII=";
10409
+
10410
+ // src/fetch-map/pattern-atlas-runtime.ts
10411
+ var CELL_URLS = {
10412
+ "hlines-large": hlines_large_default,
10413
+ "hlines-medium": hlines_medium_default,
10414
+ "hlines-small": hlines_small_default,
10415
+ "vlines-large": vlines_large_default,
10416
+ "vlines-medium": vlines_medium_default,
10417
+ "vlines-small": vlines_small_default,
10418
+ "diag-left-large": diag_left_large_default,
10419
+ "diag-left-medium": diag_left_medium_default,
10420
+ "diag-left-small": diag_left_small_default,
10421
+ "diag-right-large": diag_right_large_default,
10422
+ "diag-right-medium": diag_right_medium_default,
10423
+ "diag-right-small": diag_right_small_default,
10424
+ "cross-hatch-large": cross_hatch_large_default,
10425
+ "cross-hatch-medium": cross_hatch_medium_default,
10426
+ "cross-hatch-small": cross_hatch_small_default,
10427
+ "dots-large": dots_large_default,
10428
+ "dots-medium": dots_medium_default,
10429
+ "dots-small": dots_small_default,
10430
+ "checker-large": checker_large_default,
10431
+ "checker-medium": checker_medium_default,
10432
+ "checker-small": checker_small_default,
10433
+ solid: solid_default
10434
+ };
10435
+ function createCanvas(w, h) {
10436
+ if (typeof OffscreenCanvas !== "undefined") return new OffscreenCanvas(w, h);
10437
+ if (typeof document !== "undefined") {
10438
+ const c = document.createElement("canvas");
10439
+ c.width = w;
10440
+ c.height = h;
10441
+ return c;
10442
+ }
10443
+ throw new Error(
10444
+ "carto-api-client: no Canvas available to assemble the pattern atlas"
10445
+ );
10446
+ }
10447
+ async function loadImage(dataUrl) {
10448
+ if (typeof createImageBitmap !== "undefined" && typeof fetch !== "undefined") {
10449
+ const blob = await (await fetch(dataUrl)).blob();
10450
+ return createImageBitmap(blob);
10451
+ }
10452
+ return new Promise((resolve, reject) => {
10453
+ const img = new Image();
10454
+ img.onload = () => resolve(img);
10455
+ img.onerror = reject;
10456
+ img.src = dataUrl;
10457
+ });
10458
+ }
10459
+ async function toDataURL(canvas) {
10460
+ if ("convertToBlob" in canvas) {
10461
+ const blob = await canvas.convertToBlob({ type: "image/png" });
10462
+ return new Promise((resolve) => {
10463
+ const reader = new FileReader();
10464
+ reader.onload = () => resolve(reader.result);
10465
+ reader.readAsDataURL(blob);
10466
+ });
10467
+ }
10468
+ return canvas.toDataURL("image/png");
10469
+ }
10470
+ var atlasPromise;
10471
+ function assemblePatternAtlas() {
10472
+ if (!atlasPromise) atlasPromise = build();
10473
+ return atlasPromise;
10474
+ }
10475
+ async function build() {
10476
+ const canvas = createCanvas(ATLAS_W, ATLAS_H);
10477
+ const ctx = canvas.getContext("2d");
10478
+ if (!ctx)
10479
+ throw new Error(
10480
+ "carto-api-client: 2D context unavailable for pattern atlas"
10481
+ );
10482
+ const images = {};
10483
+ await Promise.all(
10484
+ Object.entries(CELL_URLS).map(async ([key, url]) => {
10485
+ images[key] = await loadImage(url);
10486
+ })
10487
+ );
10488
+ for (const [key, frame] of Object.entries(PATTERN_ATLAS_MAPPING)) {
10489
+ const img = images[key];
10490
+ if (img) ctx.drawImage(img, frame.x, frame.y, CELL, CELL);
10491
+ }
10492
+ return toDataURL(canvas);
10493
+ }
10494
+
10495
+ // src/fetch-map/pattern-atlas.ts
10496
+ function getPatternAtlas() {
10497
+ const runtime = globalThis.__CARTO_RUNTIME_ATLAS__ === true;
10498
+ return runtime ? assemblePatternAtlas() : BAKED_ATLAS_URL;
10499
+ }
10500
+
10285
10501
  // src/fetch-map/parse-map.ts
10286
10502
  function getLayerDescriptor({
10287
10503
  mapConfig,
@@ -10505,6 +10721,10 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10505
10721
  const result = {};
10506
10722
  const updateTriggers = {};
10507
10723
  const scales = {};
10724
+ const isVectorTile = layerType === "mvt" || layerType === "tileset";
10725
+ const geometry = data.tilestats?.layers?.[0]?.geometry;
10726
+ const isLine = geometry === "Line" || geometry === "LineString" || geometry === "MultiLineString";
10727
+ const isPolygon = geometry === "Polygon" || geometry === "MultiPolygon";
10508
10728
  {
10509
10729
  const { colorField, colorScale } = visualChannels;
10510
10730
  const { colorRange } = visConfig;
@@ -10665,6 +10885,72 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10665
10885
  };
10666
10886
  }
10667
10887
  }
10888
+ {
10889
+ const strokeVisible = isLine || isPolygon && Boolean(visConfig.stroked);
10890
+ if (isVectorTile && strokeVisible) {
10891
+ const { lineStyleField, lineStyleScale } = visualChannels;
10892
+ const { lineStyleRange } = visConfig;
10893
+ if (visConfig.lineStyle && visConfig.lineStyle !== "solid") {
10894
+ if (visConfig.lineStyle === "dotted") {
10895
+ result.lineCapRounded = true;
10896
+ }
10897
+ result.lineStyle = visConfig.lineStyle;
10898
+ if (visConfig.dashArray) {
10899
+ result.dashArray = visConfig.dashArray;
10900
+ result.getDashArray = visConfig.dashArray;
10901
+ }
10902
+ }
10903
+ if (lineStyleField && lineStyleScale && lineStyleRange) {
10904
+ const { accessor, ...scaleProps } = getLineStyleAccessor(
10905
+ lineStyleField,
10906
+ lineStyleRange,
10907
+ data
10908
+ );
10909
+ result.getDashArray = accessor;
10910
+ scales.lineStyle = updateTriggers.getDashArray = {
10911
+ field: lineStyleField,
10912
+ type: lineStyleScale,
10913
+ ...scaleProps
10914
+ };
10915
+ const dashArrays = [
10916
+ ...lineStyleRange.dashArrayMap.map(({ dashArray }) => dashArray),
10917
+ ...lineStyleRange.othersDashArray ? [lineStyleRange.othersDashArray] : []
10918
+ ];
10919
+ if (dashArrays.some(([dash]) => dash === 0)) {
10920
+ result.lineCapRounded = true;
10921
+ }
10922
+ }
10923
+ }
10924
+ }
10925
+ {
10926
+ result.fillPatternEnabled = Boolean(visConfig.fillPatternEnabled);
10927
+ if (visConfig.filled && visConfig.fillPatternEnabled) {
10928
+ result.fillPatternAtlas = getPatternAtlas();
10929
+ result.fillPatternMapping = PATTERN_ATLAS_MAPPING;
10930
+ result.fillPatternMask = true;
10931
+ result.getFillPatternScale = visConfig.fillPatternSize ?? 1;
10932
+ result.fillPattern = visConfig.fillPattern;
10933
+ const { fillPatternField, fillPatternScale } = visualChannels;
10934
+ const { fillPatternRange, fillPatternDensity } = visConfig;
10935
+ if (fillPatternField && fillPatternScale && fillPatternRange) {
10936
+ const { accessor, ...scaleProps } = getFillPatternAccessor(
10937
+ fillPatternField,
10938
+ fillPatternRange,
10939
+ fillPatternDensity,
10940
+ data
10941
+ );
10942
+ result.getFillPattern = accessor;
10943
+ scales.fillPattern = updateTriggers.getFillPattern = {
10944
+ field: fillPatternField,
10945
+ type: fillPatternScale,
10946
+ ...scaleProps
10947
+ };
10948
+ } else {
10949
+ const key = `${visConfig.fillPattern}-${fillPatternDensity ?? "medium"}`;
10950
+ result.getFillPattern = () => key;
10951
+ }
10952
+ }
10953
+ }
10668
10954
  {
10669
10955
  const { heightField, heightScale } = visualChannels;
10670
10956
  const { enable3d, heightRange } = visConfig;
@@ -10793,9 +11079,7 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
10793
11079
  } = secondaryLabel || {};
10794
11080
  result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);
10795
11081
  const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);
10796
- const geometry = data.tilestats?.layers?.[0]?.geometry;
10797
- const isLineOrPolygon = geometry === "Polygon" || geometry === "MultiPolygon" || geometry === "Line" || geometry === "LineString" || geometry === "MultiLineString";
10798
- if (isLineOrPolygon && (layerType === "tileset" || layerType === "mvt")) {
11082
+ if ((isLine || isPolygon) && isVectorTile) {
10799
11083
  const uniqueIdProperty = visConfig.textLabelUniqueIdField;
10800
11084
  result.autoLabels = uniqueIdProperty ? { uniqueIdProperty } : true;
10801
11085
  result.pointType = "text";
@@ -11568,10 +11852,12 @@ export {
11568
11852
  getColumnNameFromGeoColumn,
11569
11853
  getDataFilterExtensionProps,
11570
11854
  getDefaultAggregationExpColumnAliasForLayerType,
11855
+ getFillPatternAccessor,
11571
11856
  getFilter,
11572
11857
  getIconUrlAccessor,
11573
11858
  getLayerDescriptor,
11574
11859
  getLayerProps,
11860
+ getLineStyleAccessor,
11575
11861
  getMaxMarkerSize,
11576
11862
  getSizeAccessor,
11577
11863
  getSorter,