@deck.gl-community/basemap-layers 9.3.0-beta.2
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.
- package/LICENSE +19 -0
- package/README.md +14 -0
- package/dist/atmosphere-layer.d.ts +11 -0
- package/dist/atmosphere-layer.d.ts.map +1 -0
- package/dist/atmosphere-layer.js +15 -0
- package/dist/atmosphere-layer.js.map +1 -0
- package/dist/basemap-layer.d.ts +67 -0
- package/dist/basemap-layer.d.ts.map +1 -0
- package/dist/basemap-layer.js +115 -0
- package/dist/basemap-layer.js.map +1 -0
- package/dist/globe-layers.d.ts +22 -0
- package/dist/globe-layers.d.ts.map +1 -0
- package/dist/globe-layers.js +451 -0
- package/dist/globe-layers.js.map +1 -0
- package/dist/index.cjs +947 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/map-style-loader.d.ts +49 -0
- package/dist/map-style-loader.d.ts.map +1 -0
- package/dist/map-style-loader.js +35 -0
- package/dist/map-style-loader.js.map +1 -0
- package/dist/map-style-schema.d.ts +71 -0
- package/dist/map-style-schema.d.ts.map +1 -0
- package/dist/map-style-schema.js +45 -0
- package/dist/map-style-schema.js.map +1 -0
- package/dist/map-style.cjs +250 -0
- package/dist/map-style.cjs.map +7 -0
- package/dist/map-style.d.ts +7 -0
- package/dist/map-style.d.ts.map +1 -0
- package/dist/map-style.js +6 -0
- package/dist/map-style.js.map +1 -0
- package/dist/mapbox-style.d.ts +41 -0
- package/dist/mapbox-style.d.ts.map +1 -0
- package/dist/mapbox-style.js +113 -0
- package/dist/mapbox-style.js.map +1 -0
- package/dist/mvt-label-layer.d.ts +8142 -0
- package/dist/mvt-label-layer.d.ts.map +1 -0
- package/dist/mvt-label-layer.js +175 -0
- package/dist/mvt-label-layer.js.map +1 -0
- package/dist/style-resolver.d.ts +88 -0
- package/dist/style-resolver.d.ts.map +1 -0
- package/dist/style-resolver.js +63 -0
- package/dist/style-resolver.js.map +1 -0
- package/dist/util.d.ts +21 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +18 -0
- package/dist/util.js.map +1 -0
- package/package.json +60 -0
- package/src/atmosphere-layer.ts +15 -0
- package/src/basemap-layer.ts +183 -0
- package/src/globe-layers.ts +780 -0
- package/src/index.ts +3 -0
- package/src/map-style-loader.ts +52 -0
- package/src/map-style-schema.ts +54 -0
- package/src/map-style.ts +18 -0
- package/src/mapbox-style.ts +196 -0
- package/src/mvt-label-layer.ts +269 -0
- package/src/style-resolver.ts +173 -0
- package/src/util.ts +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mvt-label-layer.d.ts","sourceRoot":"","sources":["../src/mvt-label-layer.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKW,CAAC;;;;sBAAD,CAAC;;;;;;sBAAD,CAAC;;;sBAAD,CAAC;;;;;;;sBAAD,CAAC;;;;;;sBAAD,CAAC;;;sBAAD,CAAC;;;;;;;;;;sBAAD,CAAC;;;;;;sBAAD,CAAC;;;sBAAD,CAAC;;;;;;;;;;sBAAD,CAAC;;;;;;sBAAD,CAAC;;;sBAAD,CAAC;;;;;;;sBAAD,CAAC;;;;;;sBAAD,CAAC;;;sBAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAa1B,CAAC;uBAA+B,CAAC;kBAAqB,CAAC;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;uBAAvD,CAAC;2BAA+B,CAAC;sBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAX1D;IAEF,+BAA+B;IAC/B,KAAK,EAAE,kBAAkB,CAAc;IAEvC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAOlD;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM;IAK3C;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,EAAE;IAI9C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,EAAE;IAoBjD;;OAEG;IACH,WAAW,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAaxD;;OAEG;IACH,YAAY,IAAI,GAAG;CAmDpB"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { CompositeLayer } from '@deck.gl/core';
|
|
2
|
+
import { CollisionFilterExtension } from '@deck.gl/extensions';
|
|
3
|
+
import { GeoJsonLayer, TextLayer } from '@deck.gl/layers';
|
|
4
|
+
/**
|
|
5
|
+
* Evaluates a style value that may contain stop definitions.
|
|
6
|
+
*/
|
|
7
|
+
function evaluateStyleValue(value, zoom) {
|
|
8
|
+
if (typeof value === 'number' || typeof value === 'string') {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
if (value && typeof value === 'object' && Array.isArray(value.stops)) {
|
|
12
|
+
let resolved = value.stops[0]?.[1];
|
|
13
|
+
for (const stop of value.stops) {
|
|
14
|
+
if (zoom >= stop[0]) {
|
|
15
|
+
resolved = stop[1];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return resolved;
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Replaces style-spec token placeholders in a label template.
|
|
24
|
+
*/
|
|
25
|
+
function resolveTokenString(template, properties) {
|
|
26
|
+
if (typeof template !== 'string') {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return template.replace(/\{([^}]+)\}/g, (_, token) => {
|
|
30
|
+
const value = properties?.[token];
|
|
31
|
+
return value === null || value === undefined ? '' : String(value);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns a midpoint for a line geometry.
|
|
36
|
+
*/
|
|
37
|
+
function getLineMidpoint(coordinates) {
|
|
38
|
+
if (!Array.isArray(coordinates) || coordinates.length === 0) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return coordinates[Math.floor(coordinates.length / 2)] || coordinates[0] || null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns a coarse collision priority for a label feature.
|
|
45
|
+
*/
|
|
46
|
+
function getCollisionPriority(feature) {
|
|
47
|
+
const properties = feature?.properties || {};
|
|
48
|
+
if (properties.capital > 0 || properties.class === 'country') {
|
|
49
|
+
return 1000;
|
|
50
|
+
}
|
|
51
|
+
if (properties.class === 'state' || properties.class === 'city') {
|
|
52
|
+
return 750;
|
|
53
|
+
}
|
|
54
|
+
if (properties.layerName === 'water_name' || properties.layerName === 'waterway') {
|
|
55
|
+
return 400;
|
|
56
|
+
}
|
|
57
|
+
return 100;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Renders label text for decoded vector-tile features, with optional geometry
|
|
61
|
+
* passthrough for debugging.
|
|
62
|
+
*/
|
|
63
|
+
export class MVTLabelLayer extends CompositeLayer {
|
|
64
|
+
/** Deck.gl layer name. */
|
|
65
|
+
static layerName = 'MVTLabelLayer';
|
|
66
|
+
/** Default props for {@link MVTLabelLayer}. */
|
|
67
|
+
static defaultProps = {
|
|
68
|
+
...GeoJsonLayer.defaultProps,
|
|
69
|
+
billboard: true,
|
|
70
|
+
renderGeometry: false,
|
|
71
|
+
labelSizeUnits: 'pixels',
|
|
72
|
+
labelBackground: { type: 'color', value: null, optional: true },
|
|
73
|
+
fontFamily: 'Monaco, monospace'
|
|
74
|
+
};
|
|
75
|
+
/** Current label-row state. */
|
|
76
|
+
state = undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Extracts the visible label text for a decoded feature.
|
|
79
|
+
*/
|
|
80
|
+
getLabel(feature) {
|
|
81
|
+
const { styleLayer, zoom = 0 } = this.props;
|
|
82
|
+
const textField = evaluateStyleValue(styleLayer?.layout?.['text-field'], zoom);
|
|
83
|
+
const label = resolveTokenString(textField, feature.properties)?.trim();
|
|
84
|
+
return label || undefined;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns the font size for a decoded feature label.
|
|
88
|
+
*/
|
|
89
|
+
getLabelSize(_feature) {
|
|
90
|
+
const { styleLayer, zoom = 0 } = this.props;
|
|
91
|
+
return Number(evaluateStyleValue(styleLayer?.layout?.['text-size'], zoom) || 14);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns the text color for a decoded feature label.
|
|
95
|
+
*/
|
|
96
|
+
getLabelColor(_feature) {
|
|
97
|
+
return this.props.textColor || [255, 255, 255];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Extracts candidate label anchor positions from a feature geometry.
|
|
101
|
+
*/
|
|
102
|
+
getLabelAnchors(feature) {
|
|
103
|
+
const { type, coordinates } = feature.geometry;
|
|
104
|
+
switch (type) {
|
|
105
|
+
case 'Point':
|
|
106
|
+
return [coordinates];
|
|
107
|
+
case 'MultiPoint':
|
|
108
|
+
return coordinates;
|
|
109
|
+
case 'LineString': {
|
|
110
|
+
const midpoint = getLineMidpoint(coordinates);
|
|
111
|
+
return midpoint ? [midpoint] : [];
|
|
112
|
+
}
|
|
113
|
+
case 'MultiLineString': {
|
|
114
|
+
const midpoint = getLineMidpoint(coordinates[0]);
|
|
115
|
+
return midpoint ? [midpoint] : [];
|
|
116
|
+
}
|
|
117
|
+
default:
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Recomputes label anchor rows when the source tile data changes.
|
|
123
|
+
*/
|
|
124
|
+
updateState({ changeFlags }) {
|
|
125
|
+
const { data } = this.props;
|
|
126
|
+
if (changeFlags.dataChanged && data) {
|
|
127
|
+
const features = Array.isArray(data) ? data : data.features || [];
|
|
128
|
+
const labelData = features.flatMap((feature, index) => {
|
|
129
|
+
const labelAnchors = this.getLabelAnchors(feature);
|
|
130
|
+
return labelAnchors.map((position) => this.getSubLayerRow({ position }, feature, index));
|
|
131
|
+
});
|
|
132
|
+
this.setState({ labelData });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Renders the optional debug geometry and the text labels.
|
|
137
|
+
*/
|
|
138
|
+
renderLayers() {
|
|
139
|
+
const { config, labelSizeUnits, labelBackground, billboard, renderGeometry } = this.props;
|
|
140
|
+
const layers = [];
|
|
141
|
+
if (renderGeometry) {
|
|
142
|
+
layers.push(new GeoJsonLayer({
|
|
143
|
+
...this.props,
|
|
144
|
+
...this.getSubLayerProps({ id: 'geojson' }),
|
|
145
|
+
data: this.props.data
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
if (config.labels) {
|
|
149
|
+
const hasBackground = Array.isArray(labelBackground) && labelBackground.length >= 3;
|
|
150
|
+
layers.push(new TextLayer({
|
|
151
|
+
...this.getSubLayerProps({ id: 'text' }),
|
|
152
|
+
data: this.state.labelData,
|
|
153
|
+
extensions: [...(this.props.extensions || []), new CollisionFilterExtension()],
|
|
154
|
+
parameters: {
|
|
155
|
+
depthTest: false
|
|
156
|
+
},
|
|
157
|
+
billboard,
|
|
158
|
+
characterSet: 'auto',
|
|
159
|
+
collisionEnabled: true,
|
|
160
|
+
collisionGroup: 'basemap-labels',
|
|
161
|
+
getCollisionPriority: this.getSubLayerAccessor((feature) => getCollisionPriority(feature)),
|
|
162
|
+
fontFamily: this.props.fontFamily,
|
|
163
|
+
sizeUnits: labelSizeUnits,
|
|
164
|
+
background: hasBackground,
|
|
165
|
+
getBackgroundColor: (hasBackground ? labelBackground : [0, 0, 0, 0]),
|
|
166
|
+
getPosition: (d) => d.position,
|
|
167
|
+
getText: this.getSubLayerAccessor((feature) => this.getLabel(feature)),
|
|
168
|
+
getSize: this.getSubLayerAccessor((feature) => this.getLabelSize(feature)),
|
|
169
|
+
getColor: this.getSubLayerAccessor((feature) => this.getLabelColor(feature))
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
return layers;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=mvt-label-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mvt-label-layer.js","sourceRoot":"","sources":["../src/mvt-label-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A basemap source entry from a style document.
|
|
3
|
+
*/
|
|
4
|
+
export type BasemapSource = {
|
|
5
|
+
/** Source kind such as `vector` or `raster`. */
|
|
6
|
+
type?: string;
|
|
7
|
+
/** Optional TileJSON URL used to resolve the source metadata. */
|
|
8
|
+
url?: string;
|
|
9
|
+
/** Inline tile templates for the source. */
|
|
10
|
+
tiles?: string[];
|
|
11
|
+
/** Minimum source zoom, when supplied by the style or TileJSON. */
|
|
12
|
+
minzoom?: number;
|
|
13
|
+
/** Maximum source zoom, when supplied by the style or TileJSON. */
|
|
14
|
+
maxzoom?: number;
|
|
15
|
+
/** Tile size in pixels. */
|
|
16
|
+
tileSize?: number;
|
|
17
|
+
/** Additional source properties are preserved verbatim. */
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* A style layer entry used by the basemap runtime.
|
|
22
|
+
*/
|
|
23
|
+
export type BasemapStyleLayer = {
|
|
24
|
+
/** Unique layer identifier. */
|
|
25
|
+
id: string;
|
|
26
|
+
/** Style layer type such as `background`, `fill`, `line`, `symbol`, or `raster`. */
|
|
27
|
+
type: string;
|
|
28
|
+
/** Referenced source identifier. */
|
|
29
|
+
source?: string;
|
|
30
|
+
/** Referenced vector source-layer identifier. */
|
|
31
|
+
'source-layer'?: string;
|
|
32
|
+
/** Optional minimum zoom. */
|
|
33
|
+
minzoom?: number;
|
|
34
|
+
/** Optional maximum zoom. */
|
|
35
|
+
maxzoom?: number;
|
|
36
|
+
/** Optional style-spec filter expression. */
|
|
37
|
+
filter?: unknown[];
|
|
38
|
+
/** Paint properties from the source style layer. */
|
|
39
|
+
paint?: Record<string, unknown>;
|
|
40
|
+
/** Layout properties from the source style layer. */
|
|
41
|
+
layout?: Record<string, unknown>;
|
|
42
|
+
/** Additional layer properties are preserved verbatim. */
|
|
43
|
+
[key: string]: unknown;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* A MapLibre or Mapbox style document consumed by the basemap runtime.
|
|
47
|
+
*/
|
|
48
|
+
export type BasemapStyle = {
|
|
49
|
+
/** Style-spec version number. */
|
|
50
|
+
version?: number;
|
|
51
|
+
/** Optional style metadata bag. */
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
53
|
+
/** Named source definitions used by the style. */
|
|
54
|
+
sources?: Record<string, BasemapSource>;
|
|
55
|
+
/** Ordered list of style layers. */
|
|
56
|
+
layers?: BasemapStyleLayer[];
|
|
57
|
+
/** Additional style properties are preserved verbatim. */
|
|
58
|
+
[key: string]: unknown;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* A style document after all sources have been normalized and TileJSON-backed
|
|
62
|
+
* sources have been resolved.
|
|
63
|
+
*/
|
|
64
|
+
export type ResolvedBasemapStyle = BasemapStyle & {
|
|
65
|
+
/** Fully resolved source definitions. */
|
|
66
|
+
sources: Record<string, BasemapSource>;
|
|
67
|
+
/** Style layers copied into a mutable array. */
|
|
68
|
+
layers: BasemapStyleLayer[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Load options accepted by {@link resolveBasemapStyle}.
|
|
72
|
+
*/
|
|
73
|
+
export type BasemapLoadOptions = {
|
|
74
|
+
/** Base URL used to resolve relative source or tile URLs for in-memory styles. */
|
|
75
|
+
baseUrl?: string;
|
|
76
|
+
/** Optional custom fetch implementation. */
|
|
77
|
+
fetch?: typeof fetch;
|
|
78
|
+
/** Optional init object passed to the selected fetch implementation. */
|
|
79
|
+
fetchOptions?: RequestInit;
|
|
80
|
+
/** Additional loader options are accepted for forward compatibility. */
|
|
81
|
+
[key: string]: unknown;
|
|
82
|
+
} | null;
|
|
83
|
+
/**
|
|
84
|
+
* Resolves a basemap style input into a style object whose sources contain
|
|
85
|
+
* directly consumable tile templates and source metadata.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolveBasemapStyle(style: string | BasemapStyle, loadOptions?: BasemapLoadOptions): Promise<ResolvedBasemapStyle>;
|
|
88
|
+
//# sourceMappingURL=style-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-resolver.d.ts","sourceRoot":"","sources":["../src/style-resolver.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,0DAA0D;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,oCAAoC;IACpC,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,0DAA0D;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACvC,gDAAgD;IAChD,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,wEAAwE;IACxE,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,wEAAwE;IACxE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GAAG,IAAI,CAAC;AA4DT;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,GAAG,YAAY,EAC5B,WAAW,CAAC,EAAE,kBAAkB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAkB/B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BasemapStyleSchema, ResolvedBasemapStyleSchema } from "./map-style-schema.js";
|
|
2
|
+
/** Resolves a possibly relative URL against the provided base URL. */
|
|
3
|
+
function normalizeUrl(url, baseUrl) {
|
|
4
|
+
if (!url) {
|
|
5
|
+
return url;
|
|
6
|
+
}
|
|
7
|
+
try {
|
|
8
|
+
return decodeURI(new URL(url, baseUrl).toString());
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return url;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Resolves all tile templates in a source against the source base URL. */
|
|
15
|
+
function normalizeTiles(tiles, baseUrl) {
|
|
16
|
+
return Array.isArray(tiles) ? tiles.map((tile) => normalizeUrl(tile, baseUrl) || tile) : tiles;
|
|
17
|
+
}
|
|
18
|
+
/** Fetches and parses a JSON resource. */
|
|
19
|
+
async function fetchJson(url, loadOptions) {
|
|
20
|
+
const fetchFn = loadOptions?.fetch || fetch;
|
|
21
|
+
const response = await fetchFn(url, loadOptions?.fetchOptions);
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
throw new Error(`Failed to load basemap resource: ${url} (${response.status})`);
|
|
24
|
+
}
|
|
25
|
+
return await response.json();
|
|
26
|
+
}
|
|
27
|
+
/** Resolves a single source, including optional TileJSON indirection. */
|
|
28
|
+
async function resolveSource(source, baseUrl, loadOptions) {
|
|
29
|
+
if (!source) {
|
|
30
|
+
return source;
|
|
31
|
+
}
|
|
32
|
+
const resolvedSource = { ...source };
|
|
33
|
+
let sourceBaseUrl = baseUrl;
|
|
34
|
+
if (resolvedSource.url) {
|
|
35
|
+
const tileJsonUrl = normalizeUrl(resolvedSource.url, baseUrl);
|
|
36
|
+
const tileJson = await fetchJson(tileJsonUrl || resolvedSource.url, loadOptions);
|
|
37
|
+
Object.assign(resolvedSource, tileJson);
|
|
38
|
+
resolvedSource.url = tileJsonUrl;
|
|
39
|
+
sourceBaseUrl = tileJsonUrl;
|
|
40
|
+
}
|
|
41
|
+
if (resolvedSource.tiles) {
|
|
42
|
+
resolvedSource.tiles = normalizeTiles(resolvedSource.tiles, sourceBaseUrl);
|
|
43
|
+
}
|
|
44
|
+
return resolvedSource;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolves a basemap style input into a style object whose sources contain
|
|
48
|
+
* directly consumable tile templates and source metadata.
|
|
49
|
+
*/
|
|
50
|
+
export async function resolveBasemapStyle(style, loadOptions) {
|
|
51
|
+
const styleDefinition = BasemapStyleSchema.parse(typeof style === 'string' ? await fetchJson(style, loadOptions) : structuredClone(style));
|
|
52
|
+
const baseUrl = typeof style === 'string' ? style : loadOptions?.baseUrl;
|
|
53
|
+
const resolvedSources = {};
|
|
54
|
+
await Promise.all(Object.entries(styleDefinition.sources || {}).map(async ([sourceId, source]) => {
|
|
55
|
+
resolvedSources[sourceId] = (await resolveSource(source, baseUrl, loadOptions)) || {};
|
|
56
|
+
}));
|
|
57
|
+
return ResolvedBasemapStyleSchema.parse({
|
|
58
|
+
...styleDefinition,
|
|
59
|
+
sources: resolvedSources,
|
|
60
|
+
layers: [...(styleDefinition.layers || [])]
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=style-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-resolver.js","sourceRoot":"","sources":["../src/style-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAC,8BAA2B;AAyFlF,sEAAsE;AACtE,SAAS,YAAY,CAAC,GAAuB,EAAE,OAAgB;IAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,cAAc,CAAC,KAA2B,EAAE,OAAgB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjG,CAAC;AAED,0CAA0C;AAC1C,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,WAAgC;IACpE,MAAM,OAAO,GAAG,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,aAAa,CAC1B,MAAiC,EACjC,OAA2B,EAC3B,WAAgC;IAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAkB,EAAC,GAAG,MAAM,EAAC,CAAC;IAClD,IAAI,aAAa,GAAG,OAAO,CAAC;IAE5B,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,IAAI,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACxC,cAAc,CAAC,GAAG,GAAG,WAAW,CAAC;QACjC,aAAa,GAAG,WAAW,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA4B,EAC5B,WAAgC;IAEhC,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAC9C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CACzF,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC;IACzE,MAAM,eAAe,GAAkC,EAAE,CAAC;IAE1D,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;QAC7E,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,0BAA0B,CAAC,KAAK,CAAC;QACtC,GAAG,eAAe;QAClB,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC"}
|
package/dist/util.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type FeatureLike = {
|
|
2
|
+
properties?: Record<string, unknown>;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Options for {@link featuresArrayToObject}.
|
|
6
|
+
*/
|
|
7
|
+
export type FeaturesArrayToObjectOptions = {
|
|
8
|
+
/** Features to group by the requested layer-name property. */
|
|
9
|
+
features?: FeatureLike[];
|
|
10
|
+
/** Feature property name that contains the source-layer identifier. */
|
|
11
|
+
layerName?: string;
|
|
12
|
+
/** Optional source name wrapper for the returned object. */
|
|
13
|
+
sourceName?: string | null;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Converts an array of GeoJSON-like features into an object keyed by layer
|
|
17
|
+
* name, optionally wrapped by a source identifier.
|
|
18
|
+
*/
|
|
19
|
+
export declare function featuresArrayToObject(options?: FeaturesArrayToObjectOptions): Record<string, FeatureLike[] | Record<string, FeatureLike[]>>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,4BAAiC,GACzC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAe/D"}
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts an array of GeoJSON-like features into an object keyed by layer
|
|
3
|
+
* name, optionally wrapped by a source identifier.
|
|
4
|
+
*/
|
|
5
|
+
export function featuresArrayToObject(options = {}) {
|
|
6
|
+
const { features = [], layerName = 'layerName', sourceName = null } = options;
|
|
7
|
+
const featuresByLayer = {};
|
|
8
|
+
for (const feature of features) {
|
|
9
|
+
const featureLayerName = String(feature.properties?.[layerName] ?? '');
|
|
10
|
+
featuresByLayer[featureLayerName] = featuresByLayer[featureLayerName] || [];
|
|
11
|
+
featuresByLayer[featureLayerName].push(feature);
|
|
12
|
+
}
|
|
13
|
+
if (!sourceName) {
|
|
14
|
+
return featuresByLayer;
|
|
15
|
+
}
|
|
16
|
+
return { [sourceName]: featuresByLayer };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAwC,EAAE;IAE1C,MAAM,EAAC,QAAQ,GAAG,EAAE,EAAE,SAAS,GAAG,WAAW,EAAE,UAAU,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC;IAE5E,MAAM,eAAe,GAAkC,EAAE,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,eAAe,CAAC,gBAAgB,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAC5E,eAAe,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,EAAC,CAAC,UAAU,CAAC,EAAE,eAAe,EAAC,CAAC;AACzC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@deck.gl-community/basemap-layers",
|
|
3
|
+
"version": "9.3.0-beta.2",
|
|
4
|
+
"description": "Basemap layer and map-style helpers for deck.gl.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"deck.gl",
|
|
8
|
+
"mapbox",
|
|
9
|
+
"basemap"
|
|
10
|
+
],
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/visgl/deck.gl-community"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"type": "module",
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"main": "./dist/index.cjs",
|
|
22
|
+
"module": "./dist/index.js",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"require": "./dist/index.cjs",
|
|
27
|
+
"import": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./map-style": {
|
|
30
|
+
"types": "./dist/map-style.d.ts",
|
|
31
|
+
"require": "./dist/map-style.cjs",
|
|
32
|
+
"import": "./dist/map-style.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"src"
|
|
38
|
+
],
|
|
39
|
+
"scripts": {
|
|
40
|
+
"test": "yarn --cwd ../.. vitest run --config modules/basemap-layers/vitest.config.ts",
|
|
41
|
+
"test-watch": "yarn --cwd ../.. vitest --config modules/basemap-layers/vitest.config.ts"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"vitest": "^4.0.18"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@deck.gl/core": "~9.3.0",
|
|
48
|
+
"@deck.gl/geo-layers": "~9.3.0",
|
|
49
|
+
"@deck.gl/layers": "~9.3.0",
|
|
50
|
+
"@loaders.gl/core": "^4.4.1",
|
|
51
|
+
"@loaders.gl/loader-utils": "^4.4.1",
|
|
52
|
+
"@loaders.gl/mvt": "^4.4.1",
|
|
53
|
+
"@luma.gl/core": "~9.3.2",
|
|
54
|
+
"@luma.gl/engine": "~9.3.2",
|
|
55
|
+
"@mapbox/mapbox-gl-style-spec": "^13.12.0",
|
|
56
|
+
"@turf/polygon-to-line": "^6.0.3",
|
|
57
|
+
"zod": "^4.0.0"
|
|
58
|
+
},
|
|
59
|
+
"gitHead": "82660b8a29be0958c81acd00669b3034375186ea"
|
|
60
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the top-of-globe atmosphere overlay layer when atmosphere rendering
|
|
3
|
+
* is enabled.
|
|
4
|
+
*/
|
|
5
|
+
export function getGlobeAtmosphereLayer() {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Returns the background sky layer rendered behind the globe when atmosphere
|
|
11
|
+
* rendering is enabled.
|
|
12
|
+
*/
|
|
13
|
+
export function getGlobeAtmosphereSkyLayer() {
|
|
14
|
+
return null;
|
|
15
|
+
}
|