@mapbox/mapbox-gl-style-spec 14.5.0-beta.1 → 14.5.1

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/dist/index.cjs CHANGED
@@ -4991,6 +4991,7 @@
4991
4991
  "paint_fill-extrusion",
4992
4992
  "paint_symbol",
4993
4993
  "paint_raster",
4994
+ "paint_raster-particle",
4994
4995
  "paint_hillshade",
4995
4996
  "paint_background",
4996
4997
  "paint_sky",
@@ -5573,7 +5574,7 @@
5573
5574
  "line-trim-offset": {
5574
5575
  type: "array",
5575
5576
  value: "number",
5576
- doc: "The line part between [trim-start, trim-end] will be marked as transparent to make a route vanishing effect. The line trim-off offset is based on the whole line range [0.0, 1.0].",
5577
+ doc: "The line part between [trim-start, trim-end] will be painted using `line-trim-color,` which is transparent by default to produce a route vanishing effect. The line trim-off offset is based on the whole line range [0.0, 1.0].",
5577
5578
  length: 2,
5578
5579
  "default": [
5579
5580
  0,
@@ -5605,6 +5606,81 @@
5605
5606
  },
5606
5607
  "property-type": "constant"
5607
5608
  },
5609
+ "line-trim-fade-range": {
5610
+ type: "array",
5611
+ value: "number",
5612
+ doc: "The fade range for the trim-start and trim-end points is defined by the `line-trim-offset` property. The first element of the array represents the fade range from the trim-start point toward the end of the line, while the second element defines the fade range from the trim-end point toward the beginning of the line. The fade result is achieved by interpolating between `line-trim-color` and the color specified by the `line-color` or the `line-gradient` property.",
5613
+ experimental: true,
5614
+ length: 2,
5615
+ "default": [
5616
+ 0,
5617
+ 0
5618
+ ],
5619
+ minimum: [
5620
+ 0,
5621
+ 0
5622
+ ],
5623
+ maximum: [
5624
+ 1,
5625
+ 1
5626
+ ],
5627
+ transition: false,
5628
+ requires: [
5629
+ "line-trim-offset",
5630
+ {
5631
+ source: "geojson",
5632
+ has: {
5633
+ lineMetrics: true
5634
+ }
5635
+ }
5636
+ ],
5637
+ expression: {
5638
+ interpolated: true,
5639
+ parameters: [
5640
+ "zoom",
5641
+ "measure-light"
5642
+ ]
5643
+ },
5644
+ "sdk-support": {
5645
+ "basic functionality": {
5646
+ js: "3.6.0",
5647
+ android: "11.6.0",
5648
+ ios: "11.6.0"
5649
+ }
5650
+ },
5651
+ "property-type": "data-constant"
5652
+ },
5653
+ "line-trim-color": {
5654
+ type: "color",
5655
+ doc: "The color to be used for rendering the trimmed line section that is defined by the `line-trim-offset` property.",
5656
+ experimental: true,
5657
+ "default": "transparent",
5658
+ transition: true,
5659
+ requires: [
5660
+ "line-trim-offset",
5661
+ {
5662
+ source: "geojson",
5663
+ has: {
5664
+ lineMetrics: true
5665
+ }
5666
+ }
5667
+ ],
5668
+ "sdk-support": {
5669
+ "basic functionality": {
5670
+ js: "3.6.0",
5671
+ android: "11.6.0",
5672
+ ios: "11.6.0"
5673
+ }
5674
+ },
5675
+ expression: {
5676
+ interpolated: true,
5677
+ parameters: [
5678
+ "zoom",
5679
+ "measure-light"
5680
+ ]
5681
+ },
5682
+ "property-type": "data-constant"
5683
+ },
5608
5684
  "line-emissive-strength": {
5609
5685
  type: "number",
5610
5686
  "default": 0,
@@ -6235,11 +6311,11 @@
6235
6311
  "property-type": "data-driven"
6236
6312
  },
6237
6313
  "icon-occlusion-opacity": {
6238
- doc: "The opacity at which the icon will be drawn in case of being depth occluded. Not supported on globe zoom levels.",
6314
+ doc: "The opacity at which the icon will be drawn in case of being depth occluded. Not supported on globe zoom levels. Absent value means behavior prior to this property introduction.",
6239
6315
  type: "number",
6240
- "default": 1,
6241
6316
  minimum: 0,
6242
6317
  maximum: 1,
6318
+ "default": 1,
6243
6319
  transition: true,
6244
6320
  requires: [
6245
6321
  "icon-image"
@@ -6585,10 +6661,10 @@
6585
6661
  },
6586
6662
  "text-occlusion-opacity": {
6587
6663
  type: "number",
6588
- doc: "The opacity at which the text will be drawn in case of being depth occluded. Not supported on globe zoom levels.",
6589
- "default": 1,
6664
+ doc: "The opacity at which the text will be drawn in case of being depth occluded. Not supported on globe zoom levels. Absent value means behavior prior to this property introduction.",
6590
6665
  minimum: 0,
6591
6666
  maximum: 1,
6667
+ "default": 1,
6592
6668
  transition: true,
6593
6669
  requires: [
6594
6670
  "text-field"
@@ -12184,7 +12260,6 @@
12184
12260
  }
12185
12261
  }
12186
12262
 
12187
- /* @flow */
12188
12263
  const factors = {
12189
12264
  kilometers: 1,
12190
12265
  miles: 1000 / 1609.344,
@@ -12204,13 +12279,6 @@
12204
12279
  const RAD = Math.PI / 180;
12205
12280
  /**
12206
12281
  * A collection of very fast approximations to common geodesic measurements. Useful for performance-sensitive code that measures things on a city scale.
12207
- *
12208
- * @param {number} lat latitude
12209
- * @param {string} [units='kilometers']
12210
- * @returns {CheapRuler}
12211
- * @example
12212
- * const ruler = cheapRuler(35.05, 'miles');
12213
- * //=ruler
12214
12282
  */
12215
12283
  class CheapRuler {
12216
12284
  /**
@@ -12218,7 +12286,7 @@
12218
12286
  *
12219
12287
  * @param {number} y
12220
12288
  * @param {number} z
12221
- * @param {string} [units='kilometers']
12289
+ * @param {keyof typeof factors} [units='kilometers']
12222
12290
  * @returns {CheapRuler}
12223
12291
  * @example
12224
12292
  * const ruler = cheapRuler.fromTile(1567, 12);
@@ -12243,8 +12311,7 @@
12243
12311
  * Creates a ruler instance for very fast approximations to common geodesic measurements around a certain latitude.
12244
12312
  *
12245
12313
  * @param {number} lat latitude
12246
- * @param {string} [units='kilometers']
12247
- * @returns {CheapRuler}
12314
+ * @param {keyof typeof factors} [units='kilometers']
12248
12315
  * @example
12249
12316
  * const ruler = cheapRuler(35.05, 'miles');
12250
12317
  * //=ruler
@@ -12267,8 +12334,8 @@
12267
12334
  /**
12268
12335
  * Given two points of the form [longitude, latitude], returns the distance.
12269
12336
  *
12270
- * @param {Array<number>} a point [longitude, latitude]
12271
- * @param {Array<number>} b point [longitude, latitude]
12337
+ * @param {[number, number]} a point [longitude, latitude]
12338
+ * @param {[number, number]} b point [longitude, latitude]
12272
12339
  * @returns {number} distance
12273
12340
  * @example
12274
12341
  * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);
@@ -12282,8 +12349,8 @@
12282
12349
  /**
12283
12350
  * Returns the bearing between two points in angles.
12284
12351
  *
12285
- * @param {Array<number>} a point [longitude, latitude]
12286
- * @param {Array<number>} b point [longitude, latitude]
12352
+ * @param {[number, number]} a point [longitude, latitude]
12353
+ * @param {[number, number]} b point [longitude, latitude]
12287
12354
  * @returns {number} bearing
12288
12355
  * @example
12289
12356
  * const bearing = ruler.bearing([30.5, 50.5], [30.51, 50.49]);
@@ -12297,10 +12364,10 @@
12297
12364
  /**
12298
12365
  * Returns a new point given distance and bearing from the starting point.
12299
12366
  *
12300
- * @param {Array<number>} p point [longitude, latitude]
12367
+ * @param {[number, number]} p point [longitude, latitude]
12301
12368
  * @param {number} dist distance
12302
12369
  * @param {number} bearing
12303
- * @returns {Array<number>} point [longitude, latitude]
12370
+ * @returns {[number, number]} point [longitude, latitude]
12304
12371
  * @example
12305
12372
  * const point = ruler.destination([30.5, 50.5], 0.1, 90);
12306
12373
  * //=point
@@ -12312,10 +12379,10 @@
12312
12379
  /**
12313
12380
  * Returns a new point given easting and northing offsets (in ruler units) from the starting point.
12314
12381
  *
12315
- * @param {Array<number>} p point [longitude, latitude]
12382
+ * @param {[number, number]} p point [longitude, latitude]
12316
12383
  * @param {number} dx easting
12317
12384
  * @param {number} dy northing
12318
- * @returns {Array<number>} point [longitude, latitude]
12385
+ * @returns {[number, number]} point [longitude, latitude]
12319
12386
  * @example
12320
12387
  * const point = ruler.offset([30.5, 50.5], 10, 10);
12321
12388
  * //=point
@@ -12329,7 +12396,7 @@
12329
12396
  /**
12330
12397
  * Given a line (an array of points), returns the total line distance.
12331
12398
  *
12332
- * @param {Array<Array<number>>} points [longitude, latitude]
12399
+ * @param {[number, number][]} points [longitude, latitude]
12333
12400
  * @returns {number} total line distance
12334
12401
  * @example
12335
12402
  * const length = ruler.lineDistance([
@@ -12348,7 +12415,7 @@
12348
12415
  /**
12349
12416
  * Given a polygon (an array of rings, where each ring is an array of points), returns the area.
12350
12417
  *
12351
- * @param {Array<Array<Array<number>>>} polygon
12418
+ * @param {[number, number][][]} polygon
12352
12419
  * @returns {number} area value in the specified units (square kilometers by default)
12353
12420
  * @example
12354
12421
  * const area = ruler.area([[
@@ -12370,9 +12437,9 @@
12370
12437
  /**
12371
12438
  * Returns the point at a specified distance along the line.
12372
12439
  *
12373
- * @param {Array<Array<number>>} line
12440
+ * @param {[number, number][]} line
12374
12441
  * @param {number} dist distance
12375
- * @returns {Array<number>} point [longitude, latitude]
12442
+ * @returns {[number, number]} point [longitude, latitude]
12376
12443
  * @example
12377
12444
  * const point = ruler.along(line, 2.5);
12378
12445
  * //=point
@@ -12395,9 +12462,9 @@
12395
12462
  * Returns the distance from a point `p` to a line segment `a` to `b`.
12396
12463
  *
12397
12464
  * @pointToSegmentDistance
12398
- * @param {Array<number>} p point [longitude, latitude]
12399
- * @param {Array<number>} p1 segment point 1 [longitude, latitude]
12400
- * @param {Array<number>} p2 segment point 2 [longitude, latitude]
12465
+ * @param {[number, number]} p point [longitude, latitude]
12466
+ * @param {[number, number]} a segment point 1 [longitude, latitude]
12467
+ * @param {[number, number]} b segment point 2 [longitude, latitude]
12401
12468
  * @returns {number} distance
12402
12469
  * @example
12403
12470
  * const distance = ruler.pointToSegmentDistance([-67.04, 50.5], [-67.05, 50.57], [-67.03, 50.54]);
@@ -12407,9 +12474,8 @@
12407
12474
  let [x, y] = a;
12408
12475
  let dx = wrap(b[0] - x) * this.kx;
12409
12476
  let dy = (b[1] - y) * this.ky;
12410
- let t = 0;
12411
12477
  if (dx !== 0 || dy !== 0) {
12412
- t = (wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);
12478
+ const t = (wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);
12413
12479
  if (t > 1) {
12414
12480
  x = b[0];
12415
12481
  y = b[1];
@@ -12427,16 +12493,19 @@
12427
12493
  * from the given point, index is the start index of the segment with the closest point,
12428
12494
  * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.
12429
12495
  *
12430
- * @param {Array<Array<number>>} line
12431
- * @param {Array<number>} p point [longitude, latitude]
12432
- * @returns {Object} {point, index, t}
12496
+ * @param {[number, number][]} line
12497
+ * @param {[number, number]} p point [longitude, latitude]
12498
+ * @returns {{point: [number, number], index: number, t: number}} {point, index, t}
12433
12499
  * @example
12434
12500
  * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;
12435
12501
  * //=point
12436
12502
  */
12437
12503
  pointOnLine(line, p) {
12438
12504
  let minDist = Infinity;
12439
- let minX, minY, minI, minT;
12505
+ let minX = line[0][0];
12506
+ let minY = line[0][1];
12507
+ let minI = 0;
12508
+ let minT = 0;
12440
12509
  for (let i = 0; i < line.length - 1; i++) {
12441
12510
  let x = line[i][0];
12442
12511
  let y = line[i][1];
@@ -12476,10 +12545,10 @@
12476
12545
  /**
12477
12546
  * Returns a part of the given line between the start and the stop points (or their closest points on the line).
12478
12547
  *
12479
- * @param {Array<number>} start point [longitude, latitude]
12480
- * @param {Array<number>} stop point [longitude, latitude]
12481
- * @param {Array<Array<number>>} line
12482
- * @returns {Array<Array<number>>} line part of a line
12548
+ * @param {[number, number]} start point [longitude, latitude]
12549
+ * @param {[number, number]} stop point [longitude, latitude]
12550
+ * @param {[number, number][]} line
12551
+ * @returns {[number, number][]} line part of a line
12483
12552
  * @example
12484
12553
  * const line2 = ruler.lineSlice([-67.04, 50.5], [-67.05, 50.56], line1);
12485
12554
  * //=line2
@@ -12507,10 +12576,10 @@
12507
12576
  /**
12508
12577
  * Returns a part of the given line between the start and the stop points indicated by distance along the line.
12509
12578
  *
12510
- * @param {number} start distance
12511
- * @param {number} stop distance
12512
- * @param {Array<Array<number>>} line
12513
- * @returns {Array<Array<number>>} line part of a line
12579
+ * @param {number} start start distance
12580
+ * @param {number} stop stop distance
12581
+ * @param {[number, number][]} line
12582
+ * @returns {[number, number][]} part of a line
12514
12583
  * @example
12515
12584
  * const line2 = ruler.lineSliceAlong(10, 20, line1);
12516
12585
  * //=line2
@@ -12538,9 +12607,9 @@
12538
12607
  /**
12539
12608
  * Given a point, returns a bounding box object ([w, s, e, n]) created from the given point buffered by a given distance.
12540
12609
  *
12541
- * @param {Array<number>} p point [longitude, latitude]
12610
+ * @param {[number, number]} p point [longitude, latitude]
12542
12611
  * @param {number} buffer
12543
- * @returns {Array<number>} box object ([w, s, e, n])
12612
+ * @returns {[number, number, number, number]} bbox ([w, s, e, n])
12544
12613
  * @example
12545
12614
  * const bbox = ruler.bufferPoint([30.5, 50.5], 0.01);
12546
12615
  * //=bbox
@@ -12558,9 +12627,9 @@
12558
12627
  /**
12559
12628
  * Given a bounding box, returns the box buffered by a given distance.
12560
12629
  *
12561
- * @param {Array<number>} box object ([w, s, e, n])
12630
+ * @param {[number, number, number, number]} bbox ([w, s, e, n])
12562
12631
  * @param {number} buffer
12563
- * @returns {Array<number>} box object ([w, s, e, n])
12632
+ * @returns {[number, number, number, number]} bbox ([w, s, e, n])
12564
12633
  * @example
12565
12634
  * const bbox = ruler.bufferBBox([30.5, 50.5, 31, 51], 0.2);
12566
12635
  * //=bbox
@@ -12578,20 +12647,31 @@
12578
12647
  /**
12579
12648
  * Returns true if the given point is inside in the given bounding box, otherwise false.
12580
12649
  *
12581
- * @param {Array<number>} p point [longitude, latitude]
12582
- * @param {Array<number>} box object ([w, s, e, n])
12650
+ * @param {[number, number]} p point [longitude, latitude]
12651
+ * @param {[number, number, number, number]} bbox ([w, s, e, n])
12583
12652
  * @returns {boolean}
12584
12653
  * @example
12585
12654
  * const inside = ruler.insideBBox([30.5, 50.5], [30, 50, 31, 51]);
12586
12655
  * //=inside
12587
12656
  */
12588
12657
  insideBBox(p, bbox) {
12658
+ // eslint-disable-line
12589
12659
  return wrap(p[0] - bbox[0]) >= 0 && wrap(p[0] - bbox[2]) <= 0 && p[1] >= bbox[1] && p[1] <= bbox[3];
12590
12660
  }
12591
12661
  }
12662
+ /**
12663
+ * @param {[number, number]} a
12664
+ * @param {[number, number]} b
12665
+ */
12592
12666
  function equals(a, b) {
12593
12667
  return a[0] === b[0] && a[1] === b[1];
12594
12668
  }
12669
+ /**
12670
+ * @param {[number, number]} a
12671
+ * @param {[number, number]} b
12672
+ * @param {number} t
12673
+ * @returns {[number, number]}
12674
+ */
12595
12675
  function interpolate(a, b, t) {
12596
12676
  const dx = wrap(b[0] - a[0]);
12597
12677
  const dy = b[1] - a[1];
@@ -12600,7 +12680,10 @@
12600
12680
  a[1] + dy * t
12601
12681
  ];
12602
12682
  }
12603
- // normalize a degree value into [-180..180] range
12683
+ /**
12684
+ * normalize a degree value into [-180..180] range
12685
+ * @param {number} deg
12686
+ */
12604
12687
  function wrap(deg) {
12605
12688
  while (deg < -180)
12606
12689
  deg += 360;