@mapbox/mapbox-gl-style-spec 14.20.0 → 14.21.0

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.
@@ -67,7 +67,7 @@ class CompoundExpression implements Expression {
67
67
  const type = Array.isArray(definition) ?
68
68
  definition[0] : definition.type;
69
69
 
70
- const availableOverloads = Array.isArray(definition) ?
70
+ const availableOverloads: Array<[Signature, Evaluate]> = Array.isArray(definition) ?
71
71
  [[definition[1], definition[2]]] :
72
72
  definition.overloads;
73
73
 
@@ -93,13 +93,10 @@ class CompoundExpression implements Expression {
93
93
  let argParseFailed = false;
94
94
  for (let i = 1; i < args.length; i++) {
95
95
  const arg = args[i];
96
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
97
96
  const expectedType = Array.isArray(params) ?
98
97
  params[i - 1] :
99
- // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'Varargs | Evaluate'.
100
98
  params.type;
101
99
 
102
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
103
100
  const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);
104
101
  if (!parsed) {
105
102
  argParseFailed = true;
@@ -121,16 +118,12 @@ class CompoundExpression implements Expression {
121
118
  }
122
119
 
123
120
  for (let i = 0; i < parsedArgs.length; i++) {
124
- // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'Varargs | Evaluate'.
125
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
126
121
  const expected = Array.isArray(params) ? params[i] : params.type;
127
122
  const arg = parsedArgs[i];
128
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
129
123
  signatureContext.concat(i + 1).checkSubtype(expected, arg.type);
130
124
  }
131
125
 
132
126
  if (signatureContext.errors.length === 0) {
133
- // @ts-expect-error - TS2345 - Argument of type 'Signature | Evaluate' is not assignable to parameter of type 'Evaluate'.
134
127
  return new CompoundExpression(op, type, evaluate, parsedArgs, overloadIndex);
135
128
  }
136
129
  }
@@ -115,7 +115,7 @@ class Assertion implements Expression {
115
115
 
116
116
  serialize(): SerializedExpression {
117
117
  const type = this.type;
118
- const serialized = [type.kind];
118
+ const serialized: Array<SerializedExpression> = [type.kind];
119
119
  if (type.kind === 'array') {
120
120
  const itemType = type.itemType;
121
121
  if (itemType.kind === 'string' ||
@@ -124,12 +124,10 @@ class Assertion implements Expression {
124
124
  serialized.push(itemType.kind);
125
125
  const N = type.N;
126
126
  if (typeof N === 'number' || this.args.length > 1) {
127
- // @ts-expect-error - TS2345 - Argument of type 'number' is not assignable to parameter of type '"string" | "number" | "boolean" | "object" | "error" | "color" | "value" | "null" | "collator" | "formatted" | "resolvedImage" | "array"'.
128
127
  serialized.push(N);
129
128
  }
130
129
  }
131
130
  }
132
- // @ts-expect-error - TS2769 - No overload matches this call.
133
131
  return serialized.concat(this.args.map(arg => arg.serialize()));
134
132
  }
135
133
  }
@@ -21,12 +21,14 @@ class Case implements Expression {
21
21
  }
22
22
 
23
23
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Case | null | undefined {
24
- if (args.length < 4)
25
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Case'.
26
- return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);
27
- if (args.length % 2 !== 0)
28
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Case'.
29
- return context.error(`Expected an odd number of arguments.`);
24
+ if (args.length < 4) {
25
+ context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);
26
+ return null;
27
+ }
28
+ if (args.length % 2 !== 0) {
29
+ context.error(`Expected an odd number of arguments.`);
30
+ return null;
31
+ }
30
32
 
31
33
  let outputType: Type | null | undefined;
32
34
  if (context.expectedType && context.expectedType.kind !== 'value') {
@@ -77,8 +79,7 @@ class Case implements Expression {
77
79
  }
78
80
 
79
81
  serialize(): SerializedExpression {
80
- const serialized = ["case"];
81
- // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.
82
+ const serialized: Array<SerializedExpression> = ["case"];
82
83
  this.eachChild(child => { serialized.push(child.serialize()); });
83
84
  return serialized;
84
85
  }
@@ -18,8 +18,8 @@ class Coalesce implements Expression {
18
18
 
19
19
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Coalesce | null | undefined {
20
20
  if (args.length < 2) {
21
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Coalesce'.
22
- return context.error("Expectected at least one argument.");
21
+ context.error("Expectected at least one argument.");
22
+ return null;
23
23
  }
24
24
  let outputType: Type = null;
25
25
  const expectedType = context.expectedType;
@@ -86,8 +86,7 @@ class Coalesce implements Expression {
86
86
  }
87
87
 
88
88
  serialize(): SerializedExpression {
89
- const serialized = ["coalesce"];
90
- // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.
89
+ const serialized: Array<SerializedExpression> = ["coalesce"];
91
90
  this.eachChild(child => { serialized.push(child.serialize()); });
92
91
  return serialized;
93
92
  }
@@ -20,14 +20,16 @@ export default class CollatorExpression implements Expression {
20
20
  }
21
21
 
22
22
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Expression | null | undefined {
23
- if (args.length !== 2)
24
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Expression'.
25
- return context.error(`Expected one argument.`);
23
+ if (args.length !== 2) {
24
+ context.error(`Expected one argument.`);
25
+ return null;
26
+ }
26
27
 
27
28
  const options = args[1];
28
- if (typeof options !== "object" || Array.isArray(options))
29
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Expression'.
30
- return context.error(`Collator options argument must be an object.`);
29
+ if (typeof options !== "object" || Array.isArray(options)) {
30
+ context.error(`Collator options argument must be an object.`);
31
+ return null;
32
+ }
31
33
 
32
34
  const caseSensitive = options['case-sensitive'] === undefined ?
33
35
  context.parse(false, 1, BooleanType) :
@@ -29,8 +29,8 @@ class In implements Expression {
29
29
 
30
30
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): In | null | undefined {
31
31
  if (args.length !== 3) {
32
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'In'.
33
- return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);
32
+ context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);
33
+ return null;
34
34
  }
35
35
 
36
36
  const needle = context.parse(args[1], 1, ValueType);
@@ -40,8 +40,8 @@ class In implements Expression {
40
40
  if (!needle || !haystack) return null;
41
41
 
42
42
  if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {
43
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'In'.
44
- return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);
43
+ context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);
44
+ return null;
45
45
  }
46
46
 
47
47
  return new In(needle, haystack);
@@ -31,8 +31,8 @@ class IndexOf implements Expression {
31
31
 
32
32
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): IndexOf | null | undefined {
33
33
  if (args.length <= 2 || args.length >= 5) {
34
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'IndexOf'.
35
- return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);
34
+ context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);
35
+ return null;
36
36
  }
37
37
 
38
38
  const needle = context.parse(args[1], 1, ValueType);
@@ -41,8 +41,8 @@ class IndexOf implements Expression {
41
41
 
42
42
  if (!needle || !haystack) return null;
43
43
  if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {
44
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'IndexOf'.
45
- return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);
44
+ context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);
45
+ return null;
46
46
  }
47
47
 
48
48
  if (args.length === 4) {
@@ -17,16 +17,18 @@ class Length implements Expression {
17
17
  }
18
18
 
19
19
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Length | null | undefined {
20
- if (args.length !== 2)
21
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Length'.
22
- return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);
20
+ if (args.length !== 2) {
21
+ context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);
22
+ return null;
23
+ }
23
24
 
24
25
  const input = context.parse(args[1], 1);
25
26
  if (!input) return null;
26
27
 
27
- if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')
28
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Length'.
29
- return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);
28
+ if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value') {
29
+ context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);
30
+ return null;
31
+ }
30
32
 
31
33
  return new Length(input);
32
34
  }
@@ -53,8 +55,7 @@ class Length implements Expression {
53
55
  }
54
56
 
55
57
  serialize(): SerializedExpression {
56
- const serialized = ["length"];
57
- // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.
58
+ const serialized: Array<SerializedExpression> = ["length"];
58
59
  this.eachChild(child => { serialized.push(child.serialize()); });
59
60
  return serialized;
60
61
  }
@@ -31,8 +31,8 @@ class Slice implements Expression {
31
31
 
32
32
  static parse(args: ReadonlyArray<unknown>, context: ParsingContext): Slice | null | undefined {
33
33
  if (args.length <= 2 || args.length >= 5) {
34
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Slice'.
35
- return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);
34
+ context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);
35
+ return null;
36
36
  }
37
37
 
38
38
  const input = context.parse(args[1], 1, ValueType);
@@ -41,8 +41,8 @@ class Slice implements Expression {
41
41
  if (!input || !beginIndex) return null;
42
42
 
43
43
  if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {
44
- // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Slice'.
45
- return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`);
44
+ context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`);
45
+ return null;
46
46
  }
47
47
 
48
48
  if (args.length === 4) {
@@ -41,7 +41,7 @@ export class ImageId {
41
41
  }
42
42
 
43
43
  static parse(str: StringifiedImageId): ImageId | null {
44
- const [name, iconsetId] = str.split(separator);
44
+ const [name, iconsetId] = str.split(separator) as [string, string | undefined];
45
45
  return new ImageId({name, iconsetId});
46
46
  }
47
47
 
@@ -347,10 +347,8 @@ function convertFilter(filter?: Array<any> | null): unknown {
347
347
  op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :
348
348
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
349
349
  op === 'any' ? convertDisjunctionOp(filter.slice(1)) :
350
- // @ts-expect-error - TS2769 - No overload matches this call.
351
- op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :
352
- // @ts-expect-error - TS2769 - No overload matches this call.
353
- op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :
350
+ op === 'all' ? (['all'] as unknown[]).concat(filter.slice(1).map(convertFilter)) :
351
+ op === 'none' ? (['all'] as unknown[]).concat(filter.slice(1).map(convertFilter).map(convertNegation)) :
354
352
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
355
353
  op === 'in' ? convertInOp(filter[1], filter.slice(2)) :
356
354
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
@@ -380,8 +378,7 @@ function convertComparisonOp(property: string, value: any, op: string) {
380
378
 
381
379
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
380
  function convertDisjunctionOp(filters: Array<Array<any>>) {
383
- // @ts-expect-error - TS2769 - No overload matches this call.
384
- return ['any'].concat(filters.map(convertFilter));
381
+ return (['any'] as unknown[]).concat(filters.map(convertFilter));
385
382
  }
386
383
 
387
384
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapbox/mapbox-gl-style-spec",
3
- "version": "14.20.0",
3
+ "version": "14.21.0",
4
4
  "description": "a specification for mapbox gl styles",
5
5
  "author": "Mapbox",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
package/reference/v8.json CHANGED
@@ -2207,6 +2207,22 @@
2207
2207
  "interpolated": false
2208
2208
  },
2209
2209
  "property-type": "constant"
2210
+ },
2211
+ "source-max-zoom": {
2212
+ "type": "number",
2213
+ "minimum": 0,
2214
+ "maximum": 24,
2215
+ "private": true,
2216
+ "experimental": true,
2217
+ "doc": "The maximum zoom level at which to load and parse source tiles for this layer. When set, tiles are never loaded or re-parsed above this zoom level. At higher zoom levels, the renderer reuses tiles from this zoom level without creating overscaled variants. This reduces the number of tiles parsed and prevents tile-border artifacts for layers like fill-extrusion.",
2218
+ "sdk-support": {
2219
+ "basic functionality": {
2220
+ "js": "3.21.0",
2221
+ "android": "11.21.0",
2222
+ "ios": "11.21.0"
2223
+ }
2224
+ },
2225
+ "property-type": "constant"
2210
2226
  }
2211
2227
  },
2212
2228
  "layout_building": {
@@ -2222,7 +2238,7 @@
2222
2238
  },
2223
2239
  "default": "visible",
2224
2240
  "doc": "Whether this layer is displayed.",
2225
- "private": true,
2241
+ "private": true,
2226
2242
  "sdk-support": {
2227
2243
  "basic functionality": {
2228
2244
  "js": "3.16.0",
@@ -7908,6 +7924,30 @@
7908
7924
  },
7909
7925
  "property-type": "data-constant"
7910
7926
  },
7927
+ "fill-extrusion-front-cutoff": {
7928
+ "type": "array",
7929
+ "private": true,
7930
+ "experimental": true,
7931
+ "value": "number",
7932
+ "property-type": "data-constant",
7933
+ "transition": false,
7934
+ "expression": {
7935
+ "interpolated": true,
7936
+ "parameters": ["zoom"]
7937
+ },
7938
+ "length": 3,
7939
+ "default": [0.0, 0.0, 1.0],
7940
+ "minimum": [0.0, 0.0, 0.0],
7941
+ "maximum": [1.0, 1.0, 1.0],
7942
+ "doc": "An array for configuring the fade-out effect for the front cutoff of content on pitched map views. It contains three values: start, range and final opacity. The start parameter defines the point at which the fade-out effect begins, with smaller values causing the effect to start earlier. The range parameter specifies how long the fade-out effect will last. A value of 0.0 for range makes content disappear immediately without a fade-out effect. The final opacity determines content opacity at the end of the fade-out effect. A value of 1.0 for final opacity means that the cutoff is completely disabled. Note: The property has no effect on the map if terrain or globe projection is enabled.",
7943
+ "sdk-support": {
7944
+ "basic functionality": {
7945
+ "js": "3.21.0",
7946
+ "android": "11.21.0",
7947
+ "ios": "11.21.0"
7948
+ }
7949
+ }
7950
+ },
7911
7951
  "fill-extrusion-emissive-strength": {
7912
7952
  "type": "number",
7913
7953
  "default": 0,
@@ -8222,7 +8262,7 @@
8222
8262
  },
8223
8263
  "building-cutoff-fade-range": {
8224
8264
  "type": "number",
8225
- "private": true,
8265
+ "private": true,
8226
8266
  "default": 0.0,
8227
8267
  "minimum": 0.0,
8228
8268
  "maximum": 1.0,
@@ -8240,6 +8280,30 @@
8240
8280
  },
8241
8281
  "property-type": "data-constant"
8242
8282
  },
8283
+ "building-front-cutoff": {
8284
+ "type": "array",
8285
+ "private": true,
8286
+ "experimental": true,
8287
+ "value": "number",
8288
+ "property-type": "data-constant",
8289
+ "transition": false,
8290
+ "expression": {
8291
+ "interpolated": true,
8292
+ "parameters": ["zoom"]
8293
+ },
8294
+ "length": 3,
8295
+ "default": [0.0, 0.0, 1.0],
8296
+ "minimum": [0.0, 0.0, 0.0],
8297
+ "maximum": [1.0, 1.0, 1.0],
8298
+ "doc": "An array for configuring the fade-out effect for the front cutoff of content on pitched map views. It contains three values: start, range and final opacity. The start parameter defines the point at which the fade-out effect begins, with smaller values causing the effect to start earlier. The range parameter specifies how long the fade-out effect will last. A value of 0.0 for range makes content disappear immediately without a fade-out effect. The final opacity determines content opacity at the end of the fade-out effect. A value of 1.0 for final opacity means that the cutoff is completely disabled. Note: The property has no effect on the map if terrain or globe projection is enabled.",
8299
+ "sdk-support": {
8300
+ "basic functionality": {
8301
+ "js": "3.21.0",
8302
+ "android": "11.21.0",
8303
+ "ios": "11.21.0"
8304
+ }
8305
+ }
8306
+ },
8243
8307
  "building-flood-light-color": {
8244
8308
  "property-type": "data-constant",
8245
8309
  "type": "color",
@@ -8894,6 +8958,30 @@
8894
8958
  },
8895
8959
  "transition": true,
8896
8960
  "property-type": "data-constant"
8961
+ },
8962
+ "line-blend-mode": {
8963
+ "type": "enum",
8964
+ "values": {
8965
+ "default": { "doc": "Normal non-blended rendering mode." },
8966
+ "multiply": { "doc": "Line features are composited using multiply blending." },
8967
+ "additive": { "doc": "Line features are composited using additive density accumulation with tone mapping." }
8968
+ },
8969
+ "doc": "Controls the blend mode used for rendering line features.",
8970
+ "default": "default",
8971
+ "experimental": true,
8972
+ "private": true,
8973
+ "sdk-support": {
8974
+ "basic functionality": {
8975
+ "js": "3.21.0"
8976
+ }
8977
+ },
8978
+ "expression": {
8979
+ "interpolated": false,
8980
+ "parameters": [
8981
+ "zoom"
8982
+ ]
8983
+ },
8984
+ "property-type": "data-constant"
8897
8985
  }
8898
8986
  },
8899
8987
  "paint_circle": {
@@ -9418,6 +9506,7 @@
9418
9506
  "measure-light"
9419
9507
  ]
9420
9508
  },
9509
+ "appearance": true,
9421
9510
  "property-type": "data-driven"
9422
9511
  },
9423
9512
  "icon-occlusion-opacity": {
@@ -9451,6 +9540,7 @@
9451
9540
  "measure-light"
9452
9541
  ]
9453
9542
  },
9543
+ "appearance": true,
9454
9544
  "property-type": "data-driven"
9455
9545
  },
9456
9546
  "icon-emissive-strength": {
@@ -9483,6 +9573,7 @@
9483
9573
  "feature-state"
9484
9574
  ]
9485
9575
  },
9576
+ "appearance": true,
9486
9577
  "property-type": "data-driven"
9487
9578
  },
9488
9579
  "text-emissive-strength": {
@@ -9515,6 +9606,7 @@
9515
9606
  "feature-state"
9516
9607
  ]
9517
9608
  },
9609
+ "appearance": true,
9518
9610
  "property-type": "data-driven"
9519
9611
  },
9520
9612
  "icon-color": {
@@ -9547,6 +9639,7 @@
9547
9639
  "measure-light"
9548
9640
  ]
9549
9641
  },
9642
+ "appearance": true,
9550
9643
  "property-type": "data-driven"
9551
9644
  },
9552
9645
  "icon-halo-color": {
@@ -9579,6 +9672,7 @@
9579
9672
  "measure-light"
9580
9673
  ]
9581
9674
  },
9675
+ "appearance": true,
9582
9676
  "property-type": "data-driven"
9583
9677
  },
9584
9678
  "icon-halo-width": {
@@ -9612,6 +9706,7 @@
9612
9706
  "measure-light"
9613
9707
  ]
9614
9708
  },
9709
+ "appearance": true,
9615
9710
  "property-type": "data-driven"
9616
9711
  },
9617
9712
  "icon-halo-blur": {
@@ -9645,6 +9740,7 @@
9645
9740
  "measure-light"
9646
9741
  ]
9647
9742
  },
9743
+ "appearance": true,
9648
9744
  "property-type": "data-driven"
9649
9745
  },
9650
9746
  "icon-translate": {
@@ -9656,6 +9752,7 @@
9656
9752
  0
9657
9753
  ],
9658
9754
  "transition": true,
9755
+ "appearance": true,
9659
9756
  "units": "pixels",
9660
9757
  "doc": "Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",
9661
9758
  "requires": [
@@ -9763,6 +9860,7 @@
9763
9860
  "measure-light"
9764
9861
  ]
9765
9862
  },
9863
+ "appearance": true,
9766
9864
  "property-type": "data-driven"
9767
9865
  },
9768
9866
  "text-occlusion-opacity": {
@@ -9796,6 +9894,7 @@
9796
9894
  "measure-light"
9797
9895
  ]
9798
9896
  },
9897
+ "appearance": true,
9799
9898
  "property-type": "data-driven"
9800
9899
  },
9801
9900
  "text-color": {
@@ -9829,6 +9928,7 @@
9829
9928
  "measure-light"
9830
9929
  ]
9831
9930
  },
9931
+ "appearance": true,
9832
9932
  "property-type": "data-driven"
9833
9933
  },
9834
9934
  "text-halo-color": {
@@ -9861,6 +9961,7 @@
9861
9961
  "measure-light"
9862
9962
  ]
9863
9963
  },
9964
+ "appearance": true,
9864
9965
  "property-type": "data-driven"
9865
9966
  },
9866
9967
  "text-halo-width": {
@@ -9894,6 +9995,7 @@
9894
9995
  "measure-light"
9895
9996
  ]
9896
9997
  },
9998
+ "appearance": true,
9897
9999
  "property-type": "data-driven"
9898
10000
  },
9899
10001
  "text-halo-blur": {
@@ -9927,6 +10029,7 @@
9927
10029
  "measure-light"
9928
10030
  ]
9929
10031
  },
10032
+ "appearance": true,
9930
10033
  "property-type": "data-driven"
9931
10034
  },
9932
10035
  "text-translate": {
@@ -9938,6 +10041,7 @@
9938
10041
  0
9939
10042
  ],
9940
10043
  "transition": true,
10044
+ "appearance": true,
9941
10045
  "units": "pixels",
9942
10046
  "doc": "Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",
9943
10047
  "requires": [
@@ -10072,6 +10176,7 @@
10072
10176
  "minimum": 0,
10073
10177
  "transition": true,
10074
10178
  "experimental": true,
10179
+ "appearance": true,
10075
10180
  "sdk-support": {
10076
10181
  "basic functionality": {
10077
10182
  "js": "3.7.0",
@@ -11474,7 +11579,7 @@
11474
11579
  "default": [0.0, 0.0, 1.0],
11475
11580
  "minimum": [0.0, 0.0, 0.0],
11476
11581
  "maximum": [1.0, 1.0, 1.0],
11477
- "doc": "An array for configuring the fade-out effect for the front cutoff of content on pitched map views. It contains three values: start, range and final opacity. The start parameter defines the point at which the fade-out effect begins, with smaller values causing the effect to start earlier. The range parameter specifies how long the fade-out effect will last. A value of 0.0 for range makes content disappear immediately without a fade-out effect. The final opacity determines content opacity at the end of the fade-out effect. A value of 1.0 for final opacity means that the cutoff is completely disabled.",
11582
+ "doc": "An array for configuring the fade-out effect for the front cutoff of content on pitched map views. It contains three values: start, range and final opacity. The start parameter defines the point at which the fade-out effect begins, with smaller values causing the effect to start earlier. The range parameter specifies how long the fade-out effect will last. A value of 0.0 for range makes content disappear immediately without a fade-out effect. The final opacity determines content opacity at the end of the fade-out effect. A value of 1.0 for final opacity means that the cutoff is completely disabled. Note: The property has no effect on the map if terrain or globe projection is enabled.",
11478
11583
  "sdk-support": {
11479
11584
  "basic functionality": {
11480
11585
  "js": "3.5.0"
@@ -11508,6 +11613,24 @@
11508
11613
  "ios": "11.10.0"
11509
11614
  }
11510
11615
  }
11616
+ },
11617
+ "model-ignore-line-cutout": {
11618
+ "type": "boolean",
11619
+ "doc": "When set to true, the layer is not going to be affected by the line cutout effect.",
11620
+ "default": false,
11621
+ "transition": false,
11622
+ "expression": {
11623
+ "interpolated": false
11624
+ },
11625
+ "property-type": "data-constant",
11626
+ "experimental": true,
11627
+ "private": true,
11628
+ "sdk-support": {
11629
+ "basic functionality": {
11630
+ "android": "11.21.0",
11631
+ "ios": "11.21.0"
11632
+ }
11633
+ }
11511
11634
  }
11512
11635
  },
11513
11636
  "transition": {
package/types.ts CHANGED
@@ -755,7 +755,11 @@ export type LineLayerSpecification = {
755
755
  "line-border-color-transition"?: TransitionSpecification,
756
756
  "line-border-color-use-theme"?: PropertyValueSpecification<string>,
757
757
  "line-occlusion-opacity"?: PropertyValueSpecification<number>,
758
- "line-occlusion-opacity-transition"?: TransitionSpecification
758
+ "line-occlusion-opacity-transition"?: TransitionSpecification,
759
+ /**
760
+ * @experimental This property is experimental and subject to change in future versions.
761
+ */
762
+ "line-blend-mode"?: PropertyValueSpecification<"default" | "multiply" | "additive">
759
763
  },
760
764
  /**
761
765
  * @experimental This property is experimental and subject to change in future versions.
@@ -1021,7 +1025,11 @@ export type FillExtrusionLayerSpecification = {
1021
1025
  /**
1022
1026
  * @experimental This property is experimental and subject to change in future versions.
1023
1027
  */
1024
- "fill-extrusion-edge-radius"?: number | ExpressionSpecification
1028
+ "fill-extrusion-edge-radius"?: number | ExpressionSpecification,
1029
+ /**
1030
+ * @experimental This property is experimental and subject to change in future versions.
1031
+ */
1032
+ "source-max-zoom"?: number
1025
1033
  },
1026
1034
  "paint"?: {
1027
1035
  "fill-extrusion-opacity"?: PropertyValueSpecification<number>,
@@ -1102,6 +1110,10 @@ export type FillExtrusionLayerSpecification = {
1102
1110
  */
1103
1111
  "fill-extrusion-rounded-roof"?: PropertyValueSpecification<boolean>,
1104
1112
  "fill-extrusion-cutoff-fade-range"?: number | ExpressionSpecification,
1113
+ /**
1114
+ * @experimental This property is experimental and subject to change in future versions.
1115
+ */
1116
+ "fill-extrusion-front-cutoff"?: PropertyValueSpecification<[number, number, number]>,
1105
1117
  "fill-extrusion-emissive-strength"?: DataDrivenPropertyValueSpecification<number>,
1106
1118
  "fill-extrusion-emissive-strength-transition"?: TransitionSpecification,
1107
1119
  /**
@@ -1174,6 +1186,10 @@ export type BuildingLayerSpecification = {
1174
1186
  "building-emissive-strength"?: DataDrivenPropertyValueSpecification<number>,
1175
1187
  "building-facade-emissive-chance"?: PropertyValueSpecification<number>,
1176
1188
  "building-cutoff-fade-range"?: number | ExpressionSpecification,
1189
+ /**
1190
+ * @experimental This property is experimental and subject to change in future versions.
1191
+ */
1192
+ "building-front-cutoff"?: PropertyValueSpecification<[number, number, number]>,
1177
1193
  "building-flood-light-color"?: PropertyValueSpecification<ColorSpecification>,
1178
1194
  "building-flood-light-color-transition"?: TransitionSpecification,
1179
1195
  "building-flood-light-color-use-theme"?: PropertyValueSpecification<string>,
@@ -1398,7 +1414,11 @@ export type ModelLayerSpecification = {
1398
1414
  "model-height-based-emissive-strength-multiplier-transition"?: TransitionSpecification,
1399
1415
  "model-cutoff-fade-range"?: number | ExpressionSpecification,
1400
1416
  "model-front-cutoff"?: PropertyValueSpecification<[number, number, number]>,
1401
- "model-elevation-reference"?: "sea" | "ground" | "hd-road-markup" | ExpressionSpecification
1417
+ "model-elevation-reference"?: "sea" | "ground" | "hd-road-markup" | ExpressionSpecification,
1418
+ /**
1419
+ * @experimental This property is experimental and subject to change in future versions.
1420
+ */
1421
+ "model-ignore-line-cutout"?: boolean | ExpressionSpecification
1402
1422
  },
1403
1423
  /**
1404
1424
  * @experimental This property is experimental and subject to change in future versions.