@xylabs/geo 6.0.4 → 6.0.6

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.
@@ -1,6 +1,6 @@
1
- import MapBox from 'mapbox-gl';
2
- import type { Feature, FeatureCollection, Geometry, Point, Polygon } from './GeoJsonModel.ts';
3
- /** Provides GeoJSON geometry and MapBox source generation from a quadkey. */
1
+ import type { Feature, FeatureCollection, GeoJsonSourceSpecification, Geometry, Point, Polygon } from './GeoJsonModel.ts';
2
+ import { MercatorLngLat } from './mercator/index.ts';
3
+ /** Provides GeoJSON geometry and source generation from a quadkey. */
4
4
  declare class GeoJson {
5
5
  private _lngLat?;
6
6
  private _point?;
@@ -15,35 +15,35 @@ declare class GeoJson {
15
15
  */
16
16
  static featureCollection(features: Feature[]): FeatureCollection;
17
17
  /**
18
- * Creates a MapBox GeoJSON source specification from a FeatureCollection.
18
+ * Creates a GeoJSON source specification from a FeatureCollection.
19
19
  * @param data - The FeatureCollection to use as the source data
20
- * @returns A MapBox GeoJSON source specification
20
+ * @returns A GeoJSON source specification
21
21
  */
22
- static featuresSource(data: FeatureCollection): MapBox.GeoJSONSourceSpecification;
22
+ static featuresSource(data: FeatureCollection): GeoJsonSourceSpecification;
23
23
  /**
24
24
  * Wraps a geometry object in a GeoJSON Feature.
25
25
  * @param geometry - The geometry to wrap
26
26
  * @returns A GeoJSON Feature containing the geometry
27
27
  */
28
28
  static geometryFeature(geometry: Geometry): Feature;
29
- /** Computes and caches the center point of the quadkey's bounding box as a MapBox LngLat. */
30
- center(): MapBox.LngLat;
29
+ /** Computes and caches the center point of the quadkey's bounding box. */
30
+ center(): MercatorLngLat;
31
31
  /** Returns a GeoJSON Point geometry at the center of the quadkey's bounding box. */
32
32
  point(): Point;
33
33
  /** Returns a GeoJSON Feature containing the center point geometry. */
34
34
  pointFeature(): Feature;
35
35
  /** Returns a GeoJSON FeatureCollection containing the center point feature. */
36
36
  pointFeatureCollection(): FeatureCollection;
37
- /** Returns a MapBox GeoJSON source specification for the center point. */
38
- pointSource(): MapBox.GeoJSONSourceSpecification;
37
+ /** Returns a GeoJSON source specification for the center point. */
38
+ pointSource(): GeoJsonSourceSpecification;
39
39
  /** Returns a GeoJSON Polygon geometry representing the quadkey's bounding box. */
40
40
  polygon(): Polygon;
41
41
  /** Returns a GeoJSON Feature containing the polygon geometry. */
42
42
  polygonFeature(): Feature;
43
43
  /** Returns a GeoJSON FeatureCollection containing the polygon feature. */
44
44
  polygonFeatureCollection(): FeatureCollection;
45
- /** Returns a MapBox GeoJSON source specification for the polygon. */
46
- polygonSource(): MapBox.GeoJSONSourceSpecification;
45
+ /** Returns a GeoJSON source specification for the polygon. */
46
+ polygonSource(): GeoJsonSourceSpecification;
47
47
  /** Returns the zoom level derived from the quadkey length. */
48
48
  zoom(): number;
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GeoJson.d.ts","sourceRoot":"","sources":["../../src/GeoJson.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAA;AAE9B,OAAO,KAAK,EACV,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EACrD,MAAM,mBAAmB,CAAA;AAK1B,6EAA6E;AAC7E,cAAM,OAAO;IACX,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAO;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAQ;IAEtB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,MAAM;IAI3B;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB;IAOhE;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,0BAA0B;IAOjF;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAQnD,6FAA6F;IAC7F,MAAM,IAAI,MAAM,CAAC,MAAM;IAUvB,oFAAoF;IACpF,KAAK,IAAI,KAAK;IAQd,sEAAsE;IACtE,YAAY,IAAI,OAAO;IAIvB,+EAA+E;IAC/E,sBAAsB,IAAI,iBAAiB;IAI3C,0EAA0E;IAC1E,WAAW,IAAI,MAAM,CAAC,0BAA0B;IAOhD,kFAAkF;IAClF,OAAO,IAAI,OAAO;IAKlB,iEAAiE;IACjE,cAAc,IAAI,OAAO;IAIzB,0EAA0E;IAC1E,wBAAwB,IAAI,iBAAiB;IAI7C,qEAAqE;IACrE,aAAa,IAAI,MAAM,CAAC,0BAA0B;IAIlD,8DAA8D;IAC9D,IAAI,IAAI,MAAM;CAIf;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"GeoJson.d.ts","sourceRoot":"","sources":["../../src/GeoJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EACjF,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACsC,cAAc,EAC1D,MAAM,qBAAqB,CAAA;AAE5B,sEAAsE;AACtE,cAAM,OAAO;IACX,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAC,CAAO;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAQ;IAEtB,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,MAAM;IAI3B;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,iBAAiB;IAOhE;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,0BAA0B;IAO1E;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAQnD,0EAA0E;IAC1E,MAAM,IAAI,cAAc;IAUxB,oFAAoF;IACpF,KAAK,IAAI,KAAK;IAQd,sEAAsE;IACtE,YAAY,IAAI,OAAO;IAIvB,+EAA+E;IAC/E,sBAAsB,IAAI,iBAAiB;IAI3C,mEAAmE;IACnE,WAAW,IAAI,0BAA0B;IAOzC,kFAAkF;IAClF,OAAO,IAAI,OAAO;IAKlB,iEAAiE;IACjE,cAAc,IAAI,OAAO;IAIzB,0EAA0E;IAC1E,wBAAwB,IAAI,iBAAiB;IAI7C,8DAA8D;IAC9D,aAAa,IAAI,0BAA0B;IAI3C,8DAA8D;IAC9D,IAAI,IAAI,MAAM;CAIf;AAED,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -17,4 +17,8 @@ export interface FeatureCollection<TFeature extends Feature = Feature> {
17
17
  features: TFeature[];
18
18
  type: 'FeatureCollection';
19
19
  }
20
+ export interface GeoJsonSourceSpecification<TFeature extends Feature = Feature> {
21
+ data: FeatureCollection<TFeature>;
22
+ type: 'geojson';
23
+ }
20
24
  //# sourceMappingURL=GeoJsonModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeoJsonModel.d.ts","sourceRoot":"","sources":["../../src/GeoJsonModel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAA;AAE/B,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,QAAQ,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAA;IACzB,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;AAEtC,MAAM,WAAW,OAAO,CAAC,SAAS,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,EAAE,SAAS,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IACnE,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,IAAI,EAAE,mBAAmB,CAAA;CAC1B"}
1
+ {"version":3,"file":"GeoJsonModel.d.ts","sourceRoot":"","sources":["../../src/GeoJsonModel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAA;AAE/B,MAAM,WAAW,KAAK;IACpB,WAAW,EAAE,QAAQ,CAAA;IACrB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAA;IACzB,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAA;AAEtC,MAAM,WAAW,OAAO,CAAC,SAAS,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,EAAE,SAAS,CAAA;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IACnE,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,IAAI,EAAE,mBAAmB,CAAA;CAC1B;AAED,MAAM,WAAW,0BAA0B,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IAC5E,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACjC,IAAI,EAAE,SAAS,CAAA;CAChB"}
@@ -1,16 +1,26 @@
1
- import type MapBox from 'mapbox-gl';
2
- /** Abstract base class for managing MapBox map layers with add/remove lifecycle. */
3
- export declare abstract class LayerBase<T extends MapBox.Layer> {
1
+ interface MapLayer {
2
+ id: string;
3
+ source?: string | Record<string, unknown>;
4
+ type?: string;
5
+ }
6
+ interface LayerMap<TLayer extends MapLayer = MapLayer> {
7
+ addLayer(layer: TLayer): void;
8
+ getLayer(id: string): TLayer | undefined;
9
+ removeLayer(id: string): void;
10
+ }
11
+ /** Abstract base class for managing map layers with add/remove lifecycle. */
12
+ export declare abstract class LayerBase<T extends MapLayer> {
4
13
  id: string;
5
14
  source: string;
6
15
  constructor(id: string, source: string);
7
16
  /**
8
17
  * Removes and re-adds the layer on the map, optionally hiding it.
9
- * @param map - The MapBox map instance
18
+ * @param map - The map instance
10
19
  * @param show - Whether to show the layer after updating (default true)
11
20
  */
12
- update(map: MapBox.Map, show?: boolean): void;
13
- /** Builds the MapBox layer configuration object. */
21
+ update(map: LayerMap<T>, show?: boolean): void;
22
+ /** Builds the layer configuration object. */
14
23
  abstract buildLayer(): T;
15
24
  }
25
+ export type { LayerMap, MapLayer };
16
26
  //# sourceMappingURL=LayerBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayerBase.d.ts","sourceRoot":"","sources":["../../src/LayerBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AAEnC,oFAAoF;AACpF,8BAAsB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;gBAEF,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKtC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,UAAO;IASnC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"LayerBase.d.ts","sourceRoot":"","sources":["../../src/LayerBase.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,QAAQ,CAAC,MAAM,SAAS,QAAQ,GAAG,QAAQ;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,6EAA6E;AAC7E,8BAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ;IAChD,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;gBAEF,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKtC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,UAAO,GAAG,IAAI;IAS3C,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,IAAI,CAAC;CACzB;AAED,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,6 +1,3 @@
1
- // src/GeoJson.ts
2
- import MapBox3 from "mapbox-gl";
3
-
4
1
  // src/mercator/boundingbox/to/boundary.ts
5
2
  var boundingBoxToBoundary = (box) => {
6
3
  return [box.getNorthWest(), box.getNorthEast(), box.getSouthEast(), box.getSouthWest(), box.getNorthWest()];
@@ -69,14 +66,68 @@ var tileFromQuadkey = (quadkey) => {
69
66
  return [x, y, z];
70
67
  };
71
68
 
72
- // src/mercator/tile/to/boundingbox.ts
73
- import MapBox2 from "mapbox-gl";
74
-
75
69
  // src/mercator/types.ts
76
- import MapBox from "mapbox-gl";
77
- var MercatorBoundingBox = class extends MapBox.LngLatBounds {
70
+ function toMercatorLngLat(value) {
71
+ if (value instanceof MercatorLngLat) return value;
72
+ if (!value) return new MercatorLngLat(0, 0);
73
+ if ("lng" in value) return new MercatorLngLat(value.lng, value.lat);
74
+ return new MercatorLngLat(value[0], value[1]);
75
+ }
76
+ var MercatorLngLat = class {
77
+ lat;
78
+ lng;
79
+ constructor(lng, lat) {
80
+ this.lng = lng;
81
+ this.lat = lat;
82
+ }
83
+ toArray() {
84
+ return [this.lng, this.lat];
85
+ }
78
86
  };
79
- var MercatorLngLat = class extends MapBox.LngLat {
87
+ var MercatorBoundingBox = class {
88
+ ne;
89
+ sw;
90
+ constructor(sw, ne) {
91
+ this.sw = toMercatorLngLat(sw);
92
+ this.ne = toMercatorLngLat(ne);
93
+ }
94
+ contains(point) {
95
+ const { lat, lng } = toMercatorLngLat(point);
96
+ const containsLatitude = this.getSouth() <= lat && lat <= this.getNorth();
97
+ const wrapsAntimeridian = this.getWest() > this.getEast();
98
+ const containsLongitude = wrapsAntimeridian ? this.getWest() >= lng && lng >= this.getEast() : this.getWest() <= lng && lng <= this.getEast();
99
+ return containsLatitude && containsLongitude;
100
+ }
101
+ getCenter() {
102
+ return new MercatorLngLat(
103
+ (this.getWest() + this.getEast()) / 2,
104
+ (this.getSouth() + this.getNorth()) / 2
105
+ );
106
+ }
107
+ getEast() {
108
+ return this.ne.lng;
109
+ }
110
+ getNorth() {
111
+ return this.ne.lat;
112
+ }
113
+ getNorthEast() {
114
+ return this.ne;
115
+ }
116
+ getNorthWest() {
117
+ return new MercatorLngLat(this.sw.lng, this.ne.lat);
118
+ }
119
+ getSouth() {
120
+ return this.sw.lat;
121
+ }
122
+ getSouthEast() {
123
+ return new MercatorLngLat(this.ne.lng, this.sw.lat);
124
+ }
125
+ getSouthWest() {
126
+ return this.sw;
127
+ }
128
+ getWest() {
129
+ return this.sw.lng;
130
+ }
80
131
  };
81
132
 
82
133
  // src/mercator/tile/to/boundingbox.ts
@@ -92,7 +143,7 @@ var tileToBoundingBox = (tile) => {
92
143
  const w = toLongitude(tile[0], tile[2]);
93
144
  const s = toLatitude(tile[1] + 1, tile[2]);
94
145
  const n = toLatitude(tile[1], tile[2]);
95
- return new MercatorBoundingBox(new MapBox2.LngLat(w, s), new MapBox2.LngLat(e, n));
146
+ return new MercatorBoundingBox(new MercatorLngLat(w, s), new MercatorLngLat(e, n));
96
147
  };
97
148
 
98
149
  // src/mercator/tile/to/children.ts
@@ -224,9 +275,9 @@ var GeoJson = class _GeoJson {
224
275
  };
225
276
  }
226
277
  /**
227
- * Creates a MapBox GeoJSON source specification from a FeatureCollection.
278
+ * Creates a GeoJSON source specification from a FeatureCollection.
228
279
  * @param data - The FeatureCollection to use as the source data
229
- * @returns A MapBox GeoJSON source specification
280
+ * @returns A GeoJSON source specification
230
281
  */
231
282
  static featuresSource(data) {
232
283
  return {
@@ -246,13 +297,13 @@ var GeoJson = class _GeoJson {
246
297
  type: "Feature"
247
298
  };
248
299
  }
249
- /** Computes and caches the center point of the quadkey's bounding box as a MapBox LngLat. */
300
+ /** Computes and caches the center point of the quadkey's bounding box. */
250
301
  center() {
251
302
  if (!this._lngLat) {
252
303
  const tile = tileFromQuadkey(this.quadkey);
253
304
  const bb = tileToBoundingBox(tile);
254
305
  const point = boundingBoxToCenter(bb);
255
- this._lngLat = new MapBox3.LngLat(point[0], point[1]);
306
+ this._lngLat = new MercatorLngLat(point[0], point[1]);
256
307
  }
257
308
  return this._lngLat;
258
309
  }
@@ -272,7 +323,7 @@ var GeoJson = class _GeoJson {
272
323
  pointFeatureCollection() {
273
324
  return _GeoJson.featureCollection([this.pointFeature()]);
274
325
  }
275
- /** Returns a MapBox GeoJSON source specification for the center point. */
326
+ /** Returns a GeoJSON source specification for the center point. */
276
327
  pointSource() {
277
328
  return {
278
329
  data: this.pointFeatureCollection(),
@@ -292,7 +343,7 @@ var GeoJson = class _GeoJson {
292
343
  polygonFeatureCollection() {
293
344
  return _GeoJson.featureCollection([this.polygonFeature()]);
294
345
  }
295
- /** Returns a MapBox GeoJSON source specification for the polygon. */
346
+ /** Returns a GeoJSON source specification for the polygon. */
296
347
  polygonSource() {
297
348
  return _GeoJson.featuresSource(this.polygonFeatureCollection());
298
349
  }
@@ -313,7 +364,7 @@ var LayerBase = class {
313
364
  }
314
365
  /**
315
366
  * Removes and re-adds the layer on the map, optionally hiding it.
316
- * @param map - The MapBox map instance
367
+ * @param map - The map instance
317
368
  * @param show - Whether to show the layer after updating (default true)
318
369
  */
319
370
  update(map, show = true) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/GeoJson.ts", "../../src/mercator/boundingbox/to/boundary.ts", "../../src/mercator/boundingbox/to/center.ts", "../../src/mercator/boundingbox/to/polygon.ts", "../../src/mercator/constants.ts", "../../src/mercator/tile/from/point.ts", "../../src/mercator/tile/from/quadkey.ts", "../../src/mercator/tile/to/boundingbox.ts", "../../src/mercator/types.ts", "../../src/mercator/tile/to/children.ts", "../../src/mercator/tile/to/geoJson.ts", "../../src/mercator/tile/to/parent.ts", "../../src/mercator/tile/to/point.ts", "../../src/mercator/tile/to/quadkey.ts", "../../src/mercator/tile/to/siblings.ts", "../../src/mercator/tiles/equal.ts", "../../src/mercator/tiles/from/boundingbox.ts", "../../src/mercator/tiles/hasTile.ts", "../../src/mercator/tiles/hasSiblings.ts", "../../src/LayerBase.ts"],
4
- "sourcesContent": ["import MapBox from 'mapbox-gl'\n\nimport type {\n Feature, FeatureCollection, Geometry, Point, Polygon,\n} from './GeoJsonModel.ts'\nimport {\n boundingBoxToCenter, boundingBoxToPolygon, tileFromQuadkey, tileToBoundingBox,\n} from './mercator/index.ts'\n\n/** Provides GeoJSON geometry and MapBox source generation from a quadkey. */\nclass GeoJson {\n private _lngLat?: MapBox.LngLat\n private _point?: Point\n private _polygon?: Polygon\n private _zoom?: number\n\n private quadkey: string\n\n constructor(quadkey: string) {\n this.quadkey = quadkey\n }\n\n /**\n * Creates a GeoJSON FeatureCollection from an array of features.\n * @param features - The features to include\n * @returns A GeoJSON FeatureCollection\n */\n static featureCollection(features: Feature[]): FeatureCollection {\n return {\n features,\n type: 'FeatureCollection',\n }\n }\n\n /**\n * Creates a MapBox GeoJSON source specification from a FeatureCollection.\n * @param data - The FeatureCollection to use as the source data\n * @returns A MapBox GeoJSON source specification\n */\n static featuresSource(data: FeatureCollection): MapBox.GeoJSONSourceSpecification {\n return {\n data,\n type: 'geojson',\n }\n }\n\n /**\n * Wraps a geometry object in a GeoJSON Feature.\n * @param geometry - The geometry to wrap\n * @returns A GeoJSON Feature containing the geometry\n */\n static geometryFeature(geometry: Geometry): Feature {\n return {\n geometry,\n properties: {},\n type: 'Feature',\n }\n }\n\n /** Computes and caches the center point of the quadkey's bounding box as a MapBox LngLat. */\n center(): MapBox.LngLat {\n if (!this._lngLat) {\n const tile = tileFromQuadkey(this.quadkey)\n const bb = tileToBoundingBox(tile)\n const point = boundingBoxToCenter(bb)\n this._lngLat = new MapBox.LngLat(point[0], point[1])\n }\n return this._lngLat\n }\n\n /** Returns a GeoJSON Point geometry at the center of the quadkey's bounding box. */\n point(): Point {\n this._point ??= {\n coordinates: this.center().toArray(),\n type: 'Point',\n }\n return this._point\n }\n\n /** Returns a GeoJSON Feature containing the center point geometry. */\n pointFeature(): Feature {\n return GeoJson.geometryFeature(this.point())\n }\n\n /** Returns a GeoJSON FeatureCollection containing the center point feature. */\n pointFeatureCollection(): FeatureCollection {\n return GeoJson.featureCollection([this.pointFeature()])\n }\n\n /** Returns a MapBox GeoJSON source specification for the center point. */\n pointSource(): MapBox.GeoJSONSourceSpecification {\n return {\n data: this.pointFeatureCollection(),\n type: 'geojson',\n }\n }\n\n /** Returns a GeoJSON Polygon geometry representing the quadkey's bounding box. */\n polygon(): Polygon {\n this._polygon ??= boundingBoxToPolygon(tileToBoundingBox(tileFromQuadkey(this.quadkey)))\n return this._polygon\n }\n\n /** Returns a GeoJSON Feature containing the polygon geometry. */\n polygonFeature(): Feature {\n return GeoJson.geometryFeature(this.polygon())\n }\n\n /** Returns a GeoJSON FeatureCollection containing the polygon feature. */\n polygonFeatureCollection(): FeatureCollection {\n return GeoJson.featureCollection([this.polygonFeature()])\n }\n\n /** Returns a MapBox GeoJSON source specification for the polygon. */\n polygonSource(): MapBox.GeoJSONSourceSpecification {\n return GeoJson.featuresSource(this.polygonFeatureCollection())\n }\n\n /** Returns the zoom level derived from the quadkey length. */\n zoom(): number {\n this._zoom = this._zoom ?? tileFromQuadkey(this.quadkey)[2]\n return this._zoom\n }\n}\n\nexport { GeoJson }\n", "import type { MercatorBoundary, MercatorBoundingBox } from '../../types.ts'\n\n/**\n * Converts a bounding box to an ordered boundary polygon (closed ring of corner points).\n * @param box - The bounding box to convert\n * @returns An array of corner points forming a closed boundary\n */\nexport const boundingBoxToBoundary = (box: MercatorBoundingBox): MercatorBoundary => {\n return [box.getNorthWest(), box.getNorthEast(), box.getSouthEast(), box.getSouthWest(), box.getNorthWest()]\n}\n", "import type { MercatorBoundingBox } from '../../types.ts'\n\n/**\n * Computes the center point of a bounding box as [lng, lat], rounded to the specified decimal places.\n * @param boundingBox - The bounding box to find the center of\n * @param decimal - Number of decimal places for rounding (default 6)\n * @returns A [longitude, latitude] tuple representing the center\n */\nexport const boundingBoxToCenter = (boundingBox: MercatorBoundingBox, decimal = 6) => {\n const west = boundingBox.getWest()\n const south = boundingBox.getSouth()\n const east = boundingBox.getEast()\n const north = boundingBox.getNorth()\n let lng = (west - east) / 2 + east\n let lat = (south - north) / 2 + north\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n", "import type { Polygon } from '../../../GeoJsonModel.ts'\nimport type { MercatorBoundingBox, MercatorLngLat } from '../../types.ts'\nimport { boundingBoxToBoundary } from './boundary.ts'\n\n/**\n * Converts a bounding box to a GeoJSON Polygon geometry.\n * @param box - The bounding box to convert\n * @returns A GeoJSON Polygon representing the bounding box\n */\nexport const boundingBoxToPolygon = (box: MercatorBoundingBox): Polygon => {\n const boundry = boundingBoxToBoundary(box)\n return {\n coordinates: [boundry.map((lnglng: MercatorLngLat) => lnglng.toArray())],\n type: 'Polygon',\n }\n}\n", "/** Conversion factor from degrees to radians. */\nconst d2r = Math.PI / 180\n/** Conversion factor from radians to degrees. */\nconst r2d = 180 / Math.PI\n\nexport { d2r, r2d }\n", "import { d2r } from '../../constants.ts'\nimport type { MercatorLngLat, MercatorTile } from '../../types.ts'\n\n/**\n * Converts a geographic point to fractional tile coordinates at the given zoom level.\n * @param point - The geographic coordinate\n * @param z - The zoom level\n * @returns A tile with fractional x and y values\n */\nconst pointToTileFraction = (point: MercatorLngLat, z: number): MercatorTile => {\n const sin = Math.sin(point.lat * d2r)\n const z2 = Math.pow(2, z)\n let x = z2 * (point.lng / 360 + 0.5)\n const y = z2 * (0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI)\n\n // Wrap Tile X\n x = x % z2\n if (x < 0) x = x + z2\n return [x, y, z]\n}\n\n/**\n * Converts a geographic point to the integer Mercator tile containing it at the given zoom level.\n * @param point - The geographic coordinate\n * @param z - The zoom level\n * @returns The tile as [x, y, zoom]\n */\nconst tileFromPoint = (point: MercatorLngLat, z: number): MercatorTile => {\n const [tileX, tileY, tileZoom] = pointToTileFraction(point, z)\n const x = Math.max(Math.floor(tileX), 0)\n const y = Math.max(Math.floor(tileY), 0)\n return [x, y, tileZoom]\n}\n\nexport { tileFromPoint }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Converts a quadkey string to a Mercator tile [x, y, zoom].\n * @param quadkey - The quadkey string to decode\n * @returns The tile as [x, y, zoom]\n */\nconst tileFromQuadkey = (quadkey: string): MercatorTile => {\n let x = 0\n let y = 0\n const z = quadkey.length\n\n for (let i = z; i > 0; i--) {\n const mask = 1 << (i - 1)\n const q = +quadkey[z - i]\n if (q === 1) x |= mask\n if (q === 2) y |= mask\n if (q === 3) {\n x |= mask\n y |= mask\n }\n }\n return [x, y, z]\n}\n\nexport { tileFromQuadkey }\n", "import MapBox from 'mapbox-gl'\n\nimport { r2d } from '../../constants.ts'\nimport type { MercatorTile } from '../../types.ts'\nimport { MercatorBoundingBox } from '../../types.ts'\n\nconst toLongitude = (x: number, z: number): number => {\n return (x / Math.pow(2, z)) * 360 - 180\n}\n\nconst toLatitude = (y: number, z: number): number => {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z)\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))\n}\n\n/**\n * Converts a Mercator tile to its geographic bounding box.\n * @param tile - The tile as [x, y, zoom]\n * @returns The bounding box covering the tile's geographic extent\n */\nconst tileToBoundingBox = (tile: MercatorTile): MercatorBoundingBox => {\n const e = toLongitude(tile[0] + 1, tile[2])\n const w = toLongitude(tile[0], tile[2])\n const s = toLatitude(tile[1] + 1, tile[2])\n const n = toLatitude(tile[1], tile[2])\n return new MercatorBoundingBox(new MapBox.LngLat(w, s), new MapBox.LngLat(e, n))\n}\n\nexport { tileToBoundingBox }\n", "import MapBox from 'mapbox-gl'\n\n/** A Mercator tile represented as [x, y, zoom]. */\ntype MercatorTile = readonly [x: number, y: number, zoom: number]\n/** An ordered array of MercatorLngLat points forming a boundary. */\ntype MercatorBoundary = MercatorLngLat[]\n/** A Mercator bounding box extending MapBox LngLatBounds. */\nclass MercatorBoundingBox extends MapBox.LngLatBounds {}\n/** A Mercator coordinate extending MapBox LngLat. */\nclass MercatorLngLat extends MapBox.LngLat {}\n\nexport { MercatorBoundingBox, MercatorLngLat }\nexport type { MercatorBoundary, MercatorTile }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Returns the four child tiles at one zoom level higher.\n * @param tile - The parent tile as [x, y, zoom]\n * @returns An array of four child tiles at zoom + 1\n */\nconst tileToChildren = (tile: MercatorTile): MercatorTile[] => {\n return [\n [tile[0] * 2, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],\n [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1],\n ]\n}\n\nexport { tileToChildren }\n", "import type { Polygon } from '../../../GeoJsonModel.ts'\nimport type { MercatorTile } from '../../types.ts'\nimport { tileToBoundingBox } from './boundingbox.ts'\n\n/**\n * Converts a Mercator tile to a GeoJSON Polygon geometry.\n * @param tile - The tile as [x, y, zoom]\n * @returns A GeoJSON Polygon representing the tile's geographic extent\n */\nconst tileToGeoJson = (tile: MercatorTile): Polygon => {\n const box = tileToBoundingBox(tile)\n const poly: Polygon = {\n coordinates: [\n [\n box.getNorthWest().toArray(),\n box.getNorthEast().toArray(),\n box.getSouthEast().toArray(),\n box.getSouthWest().toArray(),\n box.getNorthWest().toArray(),\n ],\n ],\n type: 'Polygon',\n }\n return poly\n}\n\nexport { tileToGeoJson }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Returns the parent tile at one zoom level lower.\n * @param tile - The tile as [x, y, zoom]\n * @returns The parent tile at zoom - 1\n */\nconst tileToParent = (tile: MercatorTile): MercatorTile => {\n return [tile[0] >> 1, tile[1] >> 1, tile[2] - 1]\n}\n\nexport { tileToParent }\n", "import type { MercatorLngLat, MercatorTile } from '../../types.ts'\nimport { tileToBoundingBox } from './boundingbox.ts'\n\n/**\n * Returns the center point of a Mercator tile.\n * @param tile - The tile as [x, y, zoom]\n * @returns The center coordinate as a MercatorLngLat\n */\nconst tileToPoint = (tile: MercatorTile): MercatorLngLat => {\n const boundingBox = tileToBoundingBox(tile)\n boundingBox.getCenter()\n return boundingBox.getCenter()\n}\n\nexport { tileToPoint }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Converts a Mercator tile to its quadkey string representation.\n * @param param0 - The tile as [tileX, tileY, tileZoom]\n * @returns The quadkey string encoding the tile's position and zoom\n */\nconst tileToQuadkey = ([tileX, tileY, tileZoom]: MercatorTile): string => {\n let index = ''\n for (let z = tileZoom; z > 0; z--) {\n let b = 0\n const mask = 1 << (z - 1)\n if ((tileX & mask) !== 0) b++\n if ((tileY & mask) !== 0) b += 2\n index += b.toString()\n }\n return index\n}\n\nexport { tileToQuadkey }\n", "import type { MercatorTile } from '../../types.ts'\nimport { tileToChildren } from './children.ts'\nimport { tileToParent } from './parent.ts'\n\n/**\n * Returns the four sibling tiles (children of the parent tile) for the given tile.\n * @param tile - The tile as [x, y, zoom]\n * @returns An array of four sibling tiles at the same zoom level\n */\nconst tileToSiblings = (tile: MercatorTile): MercatorTile[] => {\n return tileToChildren(tileToParent(tile))\n}\n\nexport { tileToSiblings }\n", "import type { MercatorTile } from '../types.ts'\n\n/**\n * Checks whether two Mercator tiles are equal by comparing their x, y, and zoom values.\n * @param param0 - The first tile as [x, y, zoom]\n * @param param1 - The second tile as [x, y, zoom]\n * @returns True if both tiles have identical coordinates and zoom\n */\nexport const tilesEqual = /* @__PURE__ */ ([x1, y1, zoom1]: MercatorTile, [x2, y2, zoom2]: MercatorTile): boolean => {\n return x1 === x2 && y1 === y2 && zoom1 === zoom2\n}\n", "import { tileFromPoint } from '../../tile/index.ts'\nimport type { MercatorBoundingBox, MercatorTile } from '../../types.ts'\n\n/**\n * Returns all Mercator tiles that intersect the given bounding box at the specified zoom level.\n * @param box - The geographic bounding box\n * @param zoom - The zoom level\n * @returns An array of tiles covering the bounding box\n */\nconst tilesFromBoundingBox = (box: MercatorBoundingBox, zoom: number): MercatorTile[] => {\n const nw = tileFromPoint(box.getNorthWest(), zoom)\n const se = tileFromPoint(box.getSouthEast(), zoom)\n const size = Math.pow(2, zoom)\n\n let minX = nw[0]\n let maxX = se[0]\n let minY = nw[1]\n let maxY = se[1]\n\n // in case of horizontal wrapping\n if (minX >= maxX) {\n maxX = maxX + size\n }\n\n if (zoom < 4) {\n minX = 0\n maxX = size - 1\n minY = 0\n maxY = size - 1\n }\n\n const result: MercatorTile[] = []\n\n for (let x = minX; x <= maxX; x++) {\n for (let y = minY; y <= maxY; y++) {\n result.push([x % size, y, zoom])\n }\n }\n\n return result\n}\n\nexport { tilesFromBoundingBox }\n", "import type { MercatorTile } from '../types.ts'\nimport { tilesEqual } from './equal.ts'\n\n/**\n * Checks whether a specific tile exists in the given tile array.\n * @param tiles - The array of tiles to search\n * @param tile - The tile to look for\n * @returns True if the tile is found in the array\n */\nexport const tilesHasTile = (tiles: MercatorTile[], tile: MercatorTile) => {\n for (const tileToCheck of tiles) {\n if (tilesEqual(tileToCheck, tile)) return true\n }\n return false\n}\n", "import { tileToSiblings } from '../tile/index.ts'\nimport type { MercatorTile } from '../types.ts'\nimport { tilesHasTile } from './hasTile.ts'\n\n/**\n * Checks whether all four siblings of the given tile exist in the tile array.\n * @param tiles - The array of tiles to search\n * @param tile - The tile whose siblings to check for\n * @returns True if all siblings are present in the array\n */\nexport const hasSiblings = (tiles: MercatorTile[], tile: MercatorTile) => {\n const siblings = tileToSiblings(tile)\n for (const sibling of siblings) {\n if (!tilesHasTile(tiles, sibling)) return false\n }\n return true\n}\n", "import type MapBox from 'mapbox-gl'\n\n/** Abstract base class for managing MapBox map layers with add/remove lifecycle. */\nexport abstract class LayerBase<T extends MapBox.Layer> {\n id: string\n source: string\n\n constructor(id: string, source: string) {\n this.id = id\n this.source = source\n }\n\n /**\n * Removes and re-adds the layer on the map, optionally hiding it.\n * @param map - The MapBox map instance\n * @param show - Whether to show the layer after updating (default true)\n */\n update(map: MapBox.Map, show = true) {\n if (map.getLayer(this.id)) {\n map.removeLayer(this.id)\n }\n if (show) {\n map.addLayer(this.buildLayer())\n }\n }\n\n /** Builds the MapBox layer configuration object. */\n abstract buildLayer(): T\n}\n"],
5
- "mappings": "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",
6
- "names": ["MapBox", "MapBox", "MapBox", "MapBox"]
3
+ "sources": ["../../src/mercator/boundingbox/to/boundary.ts", "../../src/mercator/boundingbox/to/center.ts", "../../src/mercator/boundingbox/to/polygon.ts", "../../src/mercator/constants.ts", "../../src/mercator/tile/from/point.ts", "../../src/mercator/tile/from/quadkey.ts", "../../src/mercator/types.ts", "../../src/mercator/tile/to/boundingbox.ts", "../../src/mercator/tile/to/children.ts", "../../src/mercator/tile/to/geoJson.ts", "../../src/mercator/tile/to/parent.ts", "../../src/mercator/tile/to/point.ts", "../../src/mercator/tile/to/quadkey.ts", "../../src/mercator/tile/to/siblings.ts", "../../src/mercator/tiles/equal.ts", "../../src/mercator/tiles/from/boundingbox.ts", "../../src/mercator/tiles/hasTile.ts", "../../src/mercator/tiles/hasSiblings.ts", "../../src/GeoJson.ts", "../../src/LayerBase.ts"],
4
+ "sourcesContent": ["import type { MercatorBoundary, MercatorBoundingBox } from '../../types.ts'\n\n/**\n * Converts a bounding box to an ordered boundary polygon (closed ring of corner points).\n * @param box - The bounding box to convert\n * @returns An array of corner points forming a closed boundary\n */\nexport const boundingBoxToBoundary = (box: MercatorBoundingBox): MercatorBoundary => {\n return [box.getNorthWest(), box.getNorthEast(), box.getSouthEast(), box.getSouthWest(), box.getNorthWest()]\n}\n", "import type { MercatorBoundingBox } from '../../types.ts'\n\n/**\n * Computes the center point of a bounding box as [lng, lat], rounded to the specified decimal places.\n * @param boundingBox - The bounding box to find the center of\n * @param decimal - Number of decimal places for rounding (default 6)\n * @returns A [longitude, latitude] tuple representing the center\n */\nexport const boundingBoxToCenter = (boundingBox: MercatorBoundingBox, decimal = 6) => {\n const west = boundingBox.getWest()\n const south = boundingBox.getSouth()\n const east = boundingBox.getEast()\n const north = boundingBox.getNorth()\n let lng = (west - east) / 2 + east\n let lat = (south - north) / 2 + north\n if (decimal !== undefined && decimal !== null) {\n lng = Number(lng.toFixed(decimal))\n lat = Number(lat.toFixed(decimal))\n }\n return [lng, lat]\n}\n", "import type { Polygon } from '../../../GeoJsonModel.ts'\nimport type { MercatorBoundingBox, MercatorLngLat } from '../../types.ts'\nimport { boundingBoxToBoundary } from './boundary.ts'\n\n/**\n * Converts a bounding box to a GeoJSON Polygon geometry.\n * @param box - The bounding box to convert\n * @returns A GeoJSON Polygon representing the bounding box\n */\nexport const boundingBoxToPolygon = (box: MercatorBoundingBox): Polygon => {\n const boundry = boundingBoxToBoundary(box)\n return {\n coordinates: [boundry.map((lnglng: MercatorLngLat) => lnglng.toArray())],\n type: 'Polygon',\n }\n}\n", "/** Conversion factor from degrees to radians. */\nconst d2r = Math.PI / 180\n/** Conversion factor from radians to degrees. */\nconst r2d = 180 / Math.PI\n\nexport { d2r, r2d }\n", "import { d2r } from '../../constants.ts'\nimport type { MercatorLngLat, MercatorTile } from '../../types.ts'\n\n/**\n * Converts a geographic point to fractional tile coordinates at the given zoom level.\n * @param point - The geographic coordinate\n * @param z - The zoom level\n * @returns A tile with fractional x and y values\n */\nconst pointToTileFraction = (point: MercatorLngLat, z: number): MercatorTile => {\n const sin = Math.sin(point.lat * d2r)\n const z2 = Math.pow(2, z)\n let x = z2 * (point.lng / 360 + 0.5)\n const y = z2 * (0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI)\n\n // Wrap Tile X\n x = x % z2\n if (x < 0) x = x + z2\n return [x, y, z]\n}\n\n/**\n * Converts a geographic point to the integer Mercator tile containing it at the given zoom level.\n * @param point - The geographic coordinate\n * @param z - The zoom level\n * @returns The tile as [x, y, zoom]\n */\nconst tileFromPoint = (point: MercatorLngLat, z: number): MercatorTile => {\n const [tileX, tileY, tileZoom] = pointToTileFraction(point, z)\n const x = Math.max(Math.floor(tileX), 0)\n const y = Math.max(Math.floor(tileY), 0)\n return [x, y, tileZoom]\n}\n\nexport { tileFromPoint }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Converts a quadkey string to a Mercator tile [x, y, zoom].\n * @param quadkey - The quadkey string to decode\n * @returns The tile as [x, y, zoom]\n */\nconst tileFromQuadkey = (quadkey: string): MercatorTile => {\n let x = 0\n let y = 0\n const z = quadkey.length\n\n for (let i = z; i > 0; i--) {\n const mask = 1 << (i - 1)\n const q = +quadkey[z - i]\n if (q === 1) x |= mask\n if (q === 2) y |= mask\n if (q === 3) {\n x |= mask\n y |= mask\n }\n }\n return [x, y, z]\n}\n\nexport { tileFromQuadkey }\n", "/** A Mercator tile represented as [x, y, zoom]. */\ntype MercatorTile = readonly [x: number, y: number, zoom: number]\n/** An ordered array of MercatorLngLat points forming a boundary. */\ntype MercatorBoundary = MercatorLngLat[]\n\ntype MercatorLngLatLike = MercatorLngLat | readonly [lng: number, lat: number] | { lat: number; lng: number }\n\nfunction toMercatorLngLat(value: MercatorLngLatLike | undefined): MercatorLngLat {\n if (value instanceof MercatorLngLat) return value\n if (!value) return new MercatorLngLat(0, 0)\n if ('lng' in value) return new MercatorLngLat(value.lng, value.lat)\n return new MercatorLngLat(value[0], value[1])\n}\n\n/** A Mercator coordinate. */\nclass MercatorLngLat {\n lat: number\n lng: number\n\n constructor(lng: number, lat: number) {\n this.lng = lng\n this.lat = lat\n }\n\n toArray(): [lng: number, lat: number] {\n return [this.lng, this.lat]\n }\n}\n\n/** A Mercator bounding box. */\nclass MercatorBoundingBox {\n private readonly ne: MercatorLngLat\n private readonly sw: MercatorLngLat\n\n constructor(sw?: MercatorLngLatLike, ne?: MercatorLngLatLike) {\n this.sw = toMercatorLngLat(sw)\n this.ne = toMercatorLngLat(ne)\n }\n\n contains(point: MercatorLngLatLike): boolean {\n const { lat, lng } = toMercatorLngLat(point)\n const containsLatitude = this.getSouth() <= lat && lat <= this.getNorth()\n // a box whose west edge is greater than its east edge wraps the antimeridian\n const wrapsAntimeridian = this.getWest() > this.getEast()\n const containsLongitude = wrapsAntimeridian\n ? this.getWest() >= lng && lng >= this.getEast()\n : this.getWest() <= lng && lng <= this.getEast()\n return containsLatitude && containsLongitude\n }\n\n getCenter(): MercatorLngLat {\n return new MercatorLngLat(\n (this.getWest() + this.getEast()) / 2,\n (this.getSouth() + this.getNorth()) / 2,\n )\n }\n\n getEast(): number {\n return this.ne.lng\n }\n\n getNorth(): number {\n return this.ne.lat\n }\n\n getNorthEast(): MercatorLngLat {\n return this.ne\n }\n\n getNorthWest(): MercatorLngLat {\n return new MercatorLngLat(this.sw.lng, this.ne.lat)\n }\n\n getSouth(): number {\n return this.sw.lat\n }\n\n getSouthEast(): MercatorLngLat {\n return new MercatorLngLat(this.ne.lng, this.sw.lat)\n }\n\n getSouthWest(): MercatorLngLat {\n return this.sw\n }\n\n getWest(): number {\n return this.sw.lng\n }\n}\n\nexport { MercatorBoundingBox, MercatorLngLat }\nexport type {\n MercatorBoundary, MercatorLngLatLike, MercatorTile,\n}\n", "import { r2d } from '../../constants.ts'\nimport type { MercatorTile } from '../../types.ts'\nimport { MercatorBoundingBox, MercatorLngLat } from '../../types.ts'\n\nconst toLongitude = (x: number, z: number): number => {\n return (x / Math.pow(2, z)) * 360 - 180\n}\n\nconst toLatitude = (y: number, z: number): number => {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z)\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)))\n}\n\n/**\n * Converts a Mercator tile to its geographic bounding box.\n * @param tile - The tile as [x, y, zoom]\n * @returns The bounding box covering the tile's geographic extent\n */\nconst tileToBoundingBox = (tile: MercatorTile): MercatorBoundingBox => {\n const e = toLongitude(tile[0] + 1, tile[2])\n const w = toLongitude(tile[0], tile[2])\n const s = toLatitude(tile[1] + 1, tile[2])\n const n = toLatitude(tile[1], tile[2])\n return new MercatorBoundingBox(new MercatorLngLat(w, s), new MercatorLngLat(e, n))\n}\n\nexport { tileToBoundingBox }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Returns the four child tiles at one zoom level higher.\n * @param tile - The parent tile as [x, y, zoom]\n * @returns An array of four child tiles at zoom + 1\n */\nconst tileToChildren = (tile: MercatorTile): MercatorTile[] => {\n return [\n [tile[0] * 2, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],\n [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1],\n ]\n}\n\nexport { tileToChildren }\n", "import type { Polygon } from '../../../GeoJsonModel.ts'\nimport type { MercatorTile } from '../../types.ts'\nimport { tileToBoundingBox } from './boundingbox.ts'\n\n/**\n * Converts a Mercator tile to a GeoJSON Polygon geometry.\n * @param tile - The tile as [x, y, zoom]\n * @returns A GeoJSON Polygon representing the tile's geographic extent\n */\nconst tileToGeoJson = (tile: MercatorTile): Polygon => {\n const box = tileToBoundingBox(tile)\n const poly: Polygon = {\n coordinates: [\n [\n box.getNorthWest().toArray(),\n box.getNorthEast().toArray(),\n box.getSouthEast().toArray(),\n box.getSouthWest().toArray(),\n box.getNorthWest().toArray(),\n ],\n ],\n type: 'Polygon',\n }\n return poly\n}\n\nexport { tileToGeoJson }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Returns the parent tile at one zoom level lower.\n * @param tile - The tile as [x, y, zoom]\n * @returns The parent tile at zoom - 1\n */\nconst tileToParent = (tile: MercatorTile): MercatorTile => {\n return [tile[0] >> 1, tile[1] >> 1, tile[2] - 1]\n}\n\nexport { tileToParent }\n", "import type { MercatorLngLat, MercatorTile } from '../../types.ts'\nimport { tileToBoundingBox } from './boundingbox.ts'\n\n/**\n * Returns the center point of a Mercator tile.\n * @param tile - The tile as [x, y, zoom]\n * @returns The center coordinate as a MercatorLngLat\n */\nconst tileToPoint = (tile: MercatorTile): MercatorLngLat => {\n const boundingBox = tileToBoundingBox(tile)\n boundingBox.getCenter()\n return boundingBox.getCenter()\n}\n\nexport { tileToPoint }\n", "import type { MercatorTile } from '../../types.ts'\n\n/**\n * Converts a Mercator tile to its quadkey string representation.\n * @param param0 - The tile as [tileX, tileY, tileZoom]\n * @returns The quadkey string encoding the tile's position and zoom\n */\nconst tileToQuadkey = ([tileX, tileY, tileZoom]: MercatorTile): string => {\n let index = ''\n for (let z = tileZoom; z > 0; z--) {\n let b = 0\n const mask = 1 << (z - 1)\n if ((tileX & mask) !== 0) b++\n if ((tileY & mask) !== 0) b += 2\n index += b.toString()\n }\n return index\n}\n\nexport { tileToQuadkey }\n", "import type { MercatorTile } from '../../types.ts'\nimport { tileToChildren } from './children.ts'\nimport { tileToParent } from './parent.ts'\n\n/**\n * Returns the four sibling tiles (children of the parent tile) for the given tile.\n * @param tile - The tile as [x, y, zoom]\n * @returns An array of four sibling tiles at the same zoom level\n */\nconst tileToSiblings = (tile: MercatorTile): MercatorTile[] => {\n return tileToChildren(tileToParent(tile))\n}\n\nexport { tileToSiblings }\n", "import type { MercatorTile } from '../types.ts'\n\n/**\n * Checks whether two Mercator tiles are equal by comparing their x, y, and zoom values.\n * @param param0 - The first tile as [x, y, zoom]\n * @param param1 - The second tile as [x, y, zoom]\n * @returns True if both tiles have identical coordinates and zoom\n */\nexport const tilesEqual = /* @__PURE__ */ ([x1, y1, zoom1]: MercatorTile, [x2, y2, zoom2]: MercatorTile): boolean => {\n return x1 === x2 && y1 === y2 && zoom1 === zoom2\n}\n", "import { tileFromPoint } from '../../tile/index.ts'\nimport type { MercatorBoundingBox, MercatorTile } from '../../types.ts'\n\n/**\n * Returns all Mercator tiles that intersect the given bounding box at the specified zoom level.\n * @param box - The geographic bounding box\n * @param zoom - The zoom level\n * @returns An array of tiles covering the bounding box\n */\nconst tilesFromBoundingBox = (box: MercatorBoundingBox, zoom: number): MercatorTile[] => {\n const nw = tileFromPoint(box.getNorthWest(), zoom)\n const se = tileFromPoint(box.getSouthEast(), zoom)\n const size = Math.pow(2, zoom)\n\n let minX = nw[0]\n let maxX = se[0]\n let minY = nw[1]\n let maxY = se[1]\n\n // in case of horizontal wrapping\n if (minX >= maxX) {\n maxX = maxX + size\n }\n\n if (zoom < 4) {\n minX = 0\n maxX = size - 1\n minY = 0\n maxY = size - 1\n }\n\n const result: MercatorTile[] = []\n\n for (let x = minX; x <= maxX; x++) {\n for (let y = minY; y <= maxY; y++) {\n result.push([x % size, y, zoom])\n }\n }\n\n return result\n}\n\nexport { tilesFromBoundingBox }\n", "import type { MercatorTile } from '../types.ts'\nimport { tilesEqual } from './equal.ts'\n\n/**\n * Checks whether a specific tile exists in the given tile array.\n * @param tiles - The array of tiles to search\n * @param tile - The tile to look for\n * @returns True if the tile is found in the array\n */\nexport const tilesHasTile = (tiles: MercatorTile[], tile: MercatorTile) => {\n for (const tileToCheck of tiles) {\n if (tilesEqual(tileToCheck, tile)) return true\n }\n return false\n}\n", "import { tileToSiblings } from '../tile/index.ts'\nimport type { MercatorTile } from '../types.ts'\nimport { tilesHasTile } from './hasTile.ts'\n\n/**\n * Checks whether all four siblings of the given tile exist in the tile array.\n * @param tiles - The array of tiles to search\n * @param tile - The tile whose siblings to check for\n * @returns True if all siblings are present in the array\n */\nexport const hasSiblings = (tiles: MercatorTile[], tile: MercatorTile) => {\n const siblings = tileToSiblings(tile)\n for (const sibling of siblings) {\n if (!tilesHasTile(tiles, sibling)) return false\n }\n return true\n}\n", "import type {\n Feature, FeatureCollection, GeoJsonSourceSpecification, Geometry, Point, Polygon,\n} from './GeoJsonModel.ts'\nimport {\n boundingBoxToCenter, boundingBoxToPolygon, MercatorLngLat, tileFromQuadkey, tileToBoundingBox,\n} from './mercator/index.ts'\n\n/** Provides GeoJSON geometry and source generation from a quadkey. */\nclass GeoJson {\n private _lngLat?: MercatorLngLat\n private _point?: Point\n private _polygon?: Polygon\n private _zoom?: number\n\n private quadkey: string\n\n constructor(quadkey: string) {\n this.quadkey = quadkey\n }\n\n /**\n * Creates a GeoJSON FeatureCollection from an array of features.\n * @param features - The features to include\n * @returns A GeoJSON FeatureCollection\n */\n static featureCollection(features: Feature[]): FeatureCollection {\n return {\n features,\n type: 'FeatureCollection',\n }\n }\n\n /**\n * Creates a GeoJSON source specification from a FeatureCollection.\n * @param data - The FeatureCollection to use as the source data\n * @returns A GeoJSON source specification\n */\n static featuresSource(data: FeatureCollection): GeoJsonSourceSpecification {\n return {\n data,\n type: 'geojson',\n }\n }\n\n /**\n * Wraps a geometry object in a GeoJSON Feature.\n * @param geometry - The geometry to wrap\n * @returns A GeoJSON Feature containing the geometry\n */\n static geometryFeature(geometry: Geometry): Feature {\n return {\n geometry,\n properties: {},\n type: 'Feature',\n }\n }\n\n /** Computes and caches the center point of the quadkey's bounding box. */\n center(): MercatorLngLat {\n if (!this._lngLat) {\n const tile = tileFromQuadkey(this.quadkey)\n const bb = tileToBoundingBox(tile)\n const point = boundingBoxToCenter(bb)\n this._lngLat = new MercatorLngLat(point[0], point[1])\n }\n return this._lngLat\n }\n\n /** Returns a GeoJSON Point geometry at the center of the quadkey's bounding box. */\n point(): Point {\n this._point ??= {\n coordinates: this.center().toArray(),\n type: 'Point',\n }\n return this._point\n }\n\n /** Returns a GeoJSON Feature containing the center point geometry. */\n pointFeature(): Feature {\n return GeoJson.geometryFeature(this.point())\n }\n\n /** Returns a GeoJSON FeatureCollection containing the center point feature. */\n pointFeatureCollection(): FeatureCollection {\n return GeoJson.featureCollection([this.pointFeature()])\n }\n\n /** Returns a GeoJSON source specification for the center point. */\n pointSource(): GeoJsonSourceSpecification {\n return {\n data: this.pointFeatureCollection(),\n type: 'geojson',\n }\n }\n\n /** Returns a GeoJSON Polygon geometry representing the quadkey's bounding box. */\n polygon(): Polygon {\n this._polygon ??= boundingBoxToPolygon(tileToBoundingBox(tileFromQuadkey(this.quadkey)))\n return this._polygon\n }\n\n /** Returns a GeoJSON Feature containing the polygon geometry. */\n polygonFeature(): Feature {\n return GeoJson.geometryFeature(this.polygon())\n }\n\n /** Returns a GeoJSON FeatureCollection containing the polygon feature. */\n polygonFeatureCollection(): FeatureCollection {\n return GeoJson.featureCollection([this.polygonFeature()])\n }\n\n /** Returns a GeoJSON source specification for the polygon. */\n polygonSource(): GeoJsonSourceSpecification {\n return GeoJson.featuresSource(this.polygonFeatureCollection())\n }\n\n /** Returns the zoom level derived from the quadkey length. */\n zoom(): number {\n this._zoom = this._zoom ?? tileFromQuadkey(this.quadkey)[2]\n return this._zoom\n }\n}\n\nexport { GeoJson }\n", "interface MapLayer {\n id: string\n source?: string | Record<string, unknown>\n type?: string\n}\n\ninterface LayerMap<TLayer extends MapLayer = MapLayer> {\n addLayer(layer: TLayer): void\n getLayer(id: string): TLayer | undefined\n removeLayer(id: string): void\n}\n\n/** Abstract base class for managing map layers with add/remove lifecycle. */\nexport abstract class LayerBase<T extends MapLayer> {\n id: string\n source: string\n\n constructor(id: string, source: string) {\n this.id = id\n this.source = source\n }\n\n /**\n * Removes and re-adds the layer on the map, optionally hiding it.\n * @param map - The map instance\n * @param show - Whether to show the layer after updating (default true)\n */\n update(map: LayerMap<T>, show = true): void {\n if (map.getLayer(this.id)) {\n map.removeLayer(this.id)\n }\n if (show) {\n map.addLayer(this.buildLayer())\n }\n }\n\n /** Builds the layer configuration object. */\n abstract buildLayer(): T\n}\n\nexport type { LayerMap, MapLayer }\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"boundingbox.d.ts","sourceRoot":"","sources":["../../../../../src/mercator/tile/to/boundingbox.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAWpD;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,GAAI,MAAM,YAAY,KAAG,mBAM/C,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"boundingbox.d.ts","sourceRoot":"","sources":["../../../../../src/mercator/tile/to/boundingbox.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAkB,MAAM,gBAAgB,CAAA;AAWpE;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,GAAI,MAAM,YAAY,KAAG,mBAM/C,CAAA;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -1,14 +1,34 @@
1
- import MapBox from 'mapbox-gl';
2
1
  /** A Mercator tile represented as [x, y, zoom]. */
3
2
  type MercatorTile = readonly [x: number, y: number, zoom: number];
4
3
  /** An ordered array of MercatorLngLat points forming a boundary. */
5
4
  type MercatorBoundary = MercatorLngLat[];
6
- /** A Mercator bounding box extending MapBox LngLatBounds. */
7
- declare class MercatorBoundingBox extends MapBox.LngLatBounds {
5
+ type MercatorLngLatLike = MercatorLngLat | readonly [lng: number, lat: number] | {
6
+ lat: number;
7
+ lng: number;
8
+ };
9
+ /** A Mercator coordinate. */
10
+ declare class MercatorLngLat {
11
+ lat: number;
12
+ lng: number;
13
+ constructor(lng: number, lat: number);
14
+ toArray(): [lng: number, lat: number];
8
15
  }
9
- /** A Mercator coordinate extending MapBox LngLat. */
10
- declare class MercatorLngLat extends MapBox.LngLat {
16
+ /** A Mercator bounding box. */
17
+ declare class MercatorBoundingBox {
18
+ private readonly ne;
19
+ private readonly sw;
20
+ constructor(sw?: MercatorLngLatLike, ne?: MercatorLngLatLike);
21
+ contains(point: MercatorLngLatLike): boolean;
22
+ getCenter(): MercatorLngLat;
23
+ getEast(): number;
24
+ getNorth(): number;
25
+ getNorthEast(): MercatorLngLat;
26
+ getNorthWest(): MercatorLngLat;
27
+ getSouth(): number;
28
+ getSouthEast(): MercatorLngLat;
29
+ getSouthWest(): MercatorLngLat;
30
+ getWest(): number;
11
31
  }
12
32
  export { MercatorBoundingBox, MercatorLngLat };
13
- export type { MercatorBoundary, MercatorTile };
33
+ export type { MercatorBoundary, MercatorLngLatLike, MercatorTile, };
14
34
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mercator/types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAA;AAE9B,mDAAmD;AACnD,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACjE,oEAAoE;AACpE,KAAK,gBAAgB,GAAG,cAAc,EAAE,CAAA;AACxC,6DAA6D;AAC7D,cAAM,mBAAoB,SAAQ,MAAM,CAAC,YAAY;CAAG;AACxD,qDAAqD;AACrD,cAAM,cAAe,SAAQ,MAAM,CAAC,MAAM;CAAG;AAE7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mercator/types.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACjE,oEAAoE;AACpE,KAAK,gBAAgB,GAAG,cAAc,EAAE,CAAA;AAExC,KAAK,kBAAkB,GAAG,cAAc,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAS7G,6BAA6B;AAC7B,cAAM,cAAc;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;gBAEC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKpC,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;CAGtC;AAED,+BAA+B;AAC/B,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;gBAEvB,EAAE,CAAC,EAAE,kBAAkB,EAAE,EAAE,CAAC,EAAE,kBAAkB;IAK5D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO;IAW5C,SAAS,IAAI,cAAc;IAO3B,OAAO,IAAI,MAAM;IAIjB,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,cAAc;IAI9B,YAAY,IAAI,cAAc;IAI9B,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,cAAc;IAI9B,YAAY,IAAI,cAAc;IAI9B,OAAO,IAAI,MAAM;CAGlB;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA;AAC9C,YAAY,EACV,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,GACnD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/geo",
3
- "version": "6.0.4",
3
+ "version": "6.0.6",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "xylabs",
@@ -40,16 +40,12 @@
40
40
  "README.md"
41
41
  ],
42
42
  "devDependencies": {
43
- "@xylabs/toolchain": "^8.1.5",
44
- "@xylabs/tsconfig": "^8.1.5",
45
- "eslint": "^10.4.0",
46
- "mapbox-gl": "^3.24.0",
43
+ "@xylabs/toolchain": "^8.1.8",
44
+ "@xylabs/tsconfig": "^8.1.8",
45
+ "eslint": "^10.4.1",
47
46
  "typescript": "^6.0.3",
48
- "vite": "^8.0.14",
49
- "vitest": "^4.1.7"
50
- },
51
- "peerDependencies": {
52
- "mapbox-gl": "^3.23"
47
+ "vite": "^8.0.16",
48
+ "vitest": "^4.1.8"
53
49
  },
54
50
  "engines": {
55
51
  "node": ">=18"