@mapbox/mapbox-gl-style-spec 14.15.0-beta.2 → 14.15.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.
Files changed (74) hide show
  1. package/deref.ts +3 -0
  2. package/diff.ts +63 -0
  3. package/dist/index.cjs +722 -47
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.ts +85 -6
  6. package/dist/index.es.js +722 -47
  7. package/dist/index.es.js.map +1 -1
  8. package/expression/compound_expression.ts +4 -0
  9. package/expression/definitions/assertion.ts +7 -0
  10. package/expression/definitions/case.ts +2 -1
  11. package/expression/definitions/coalesce.ts +4 -0
  12. package/expression/definitions/coercion.ts +12 -0
  13. package/expression/definitions/collator.ts +8 -5
  14. package/expression/definitions/comparison.ts +12 -5
  15. package/expression/definitions/config.ts +12 -0
  16. package/expression/definitions/distance.ts +13 -2
  17. package/expression/definitions/format.ts +10 -0
  18. package/expression/definitions/image.ts +3 -0
  19. package/expression/definitions/in.ts +5 -0
  20. package/expression/definitions/index.ts +62 -10
  21. package/expression/definitions/index_of.ts +6 -0
  22. package/expression/definitions/interpolate.ts +5 -1
  23. package/expression/definitions/length.ts +2 -0
  24. package/expression/definitions/let.ts +1 -0
  25. package/expression/definitions/match.ts +5 -0
  26. package/expression/definitions/number_format.ts +7 -0
  27. package/expression/definitions/slice.ts +4 -0
  28. package/expression/definitions/within.ts +1 -0
  29. package/expression/index.ts +28 -19
  30. package/expression/parsing_context.ts +2 -0
  31. package/expression/types/image_variant.ts +3 -0
  32. package/expression/types.ts +1 -2
  33. package/expression/values.ts +1 -0
  34. package/feature_filter/convert.ts +9 -1
  35. package/feature_filter/index.ts +41 -1
  36. package/format.ts +5 -0
  37. package/function/convert.ts +5 -0
  38. package/function/index.ts +79 -25
  39. package/group_by_layout.ts +4 -5
  40. package/migrate/v8.ts +42 -3
  41. package/migrate/v9.ts +5 -0
  42. package/migrate.ts +1 -0
  43. package/package.json +1 -1
  44. package/read_style.ts +2 -0
  45. package/reference/v8.json +457 -12
  46. package/rollup.config.js +1 -0
  47. package/test.js +4 -0
  48. package/types.ts +74 -5
  49. package/util/geometry_util.ts +4 -0
  50. package/validate/validate.ts +1 -0
  51. package/validate/validate_appearance.ts +101 -0
  52. package/validate/validate_array.ts +1 -0
  53. package/validate/validate_expression.ts +48 -3
  54. package/validate/validate_filter.ts +5 -3
  55. package/validate/validate_fog.ts +6 -0
  56. package/validate/validate_function.ts +2 -0
  57. package/validate/validate_iconset.ts +1 -0
  58. package/validate/validate_import.ts +2 -2
  59. package/validate/validate_layer.ts +37 -4
  60. package/validate/validate_light.ts +6 -0
  61. package/validate/validate_lights.ts +9 -0
  62. package/validate/validate_model.ts +1 -2
  63. package/validate/validate_number.ts +2 -0
  64. package/validate/validate_object.ts +7 -0
  65. package/validate/validate_projection.ts +2 -0
  66. package/validate/validate_property.ts +15 -4
  67. package/validate/validate_rain.ts +5 -0
  68. package/validate/validate_snow.ts +5 -0
  69. package/validate/validate_source.ts +12 -0
  70. package/validate/validate_style.ts +1 -0
  71. package/validate/validate_terrain.ts +6 -0
  72. package/validate_mapbox_api_supported.ts +1 -0
  73. package/visit.ts +2 -0
  74. package/util/extend.ts +0 -9
package/dist/index.es.js CHANGED
@@ -1269,6 +1269,125 @@ var source_image = {
1269
1269
  }
1270
1270
  }
1271
1271
  };
1272
+ var modelNodeOverride = {
1273
+ orientation: {
1274
+ type: "array",
1275
+ value: "number",
1276
+ length: 3,
1277
+ "default": [
1278
+ 0,
1279
+ 0,
1280
+ 0
1281
+ ],
1282
+ period: 360,
1283
+ units: "degrees",
1284
+ doc: "Override the orientation of the model node in euler angles [x, y, z]."
1285
+ }
1286
+ };
1287
+ var modelNodeOverrides = {
1288
+ "*": {
1289
+ type: "modelNodeOverride",
1290
+ doc: "An object defining model node properties to override. Object key is the node name as defined in the model."
1291
+ }
1292
+ };
1293
+ var modelMaterialOverride = {
1294
+ "model-color": {
1295
+ type: "color",
1296
+ doc: "Override the tint color of the material."
1297
+ },
1298
+ "model-color-mix-intensity": {
1299
+ type: "number",
1300
+ doc: "Override the intensity of model-color (on a scale from 0 to 1) in color mix with original 3D model's colors."
1301
+ },
1302
+ "model-opacity": {
1303
+ type: "number",
1304
+ doc: "Override the opacity of the material."
1305
+ },
1306
+ "model-emissive-strength": {
1307
+ type: "number",
1308
+ units: "intensity",
1309
+ doc: "Override strength of the emission of material."
1310
+ }
1311
+ };
1312
+ var modelMaterialOverrides = {
1313
+ "*": {
1314
+ type: "modelMaterialOverride",
1315
+ doc: "An object defining material properties to override. Object key is the material name as defined in the model."
1316
+ }
1317
+ };
1318
+ var modelSourceModel = {
1319
+ uri: {
1320
+ type: "string",
1321
+ required: true,
1322
+ doc: "A URL to a model resource. Supported protocols are `http:`, `https:`, and `mapbox://<Model ID>`."
1323
+ },
1324
+ position: {
1325
+ type: "array",
1326
+ value: "number",
1327
+ length: 2,
1328
+ required: false,
1329
+ "default": [
1330
+ 0,
1331
+ 0
1332
+ ],
1333
+ minimum: [
1334
+ -180,
1335
+ -90
1336
+ ],
1337
+ maximum: [
1338
+ 180,
1339
+ 90
1340
+ ],
1341
+ doc: "Position of the model in longitude and latitude [lng, lat]."
1342
+ },
1343
+ orientation: {
1344
+ type: "array",
1345
+ value: "number",
1346
+ length: 3,
1347
+ required: false,
1348
+ "default": [
1349
+ 0,
1350
+ 0,
1351
+ 0
1352
+ ],
1353
+ period: 360,
1354
+ units: "degrees",
1355
+ doc: "Orientation of the model in euler angles [x, y, z]."
1356
+ },
1357
+ nodeOverrides: {
1358
+ type: "modelNodeOverrides",
1359
+ required: false,
1360
+ doc: "A collection of node overrides."
1361
+ },
1362
+ materialOverrides: {
1363
+ type: "modelMaterialOverrides",
1364
+ required: false,
1365
+ doc: "A collection of material overrides."
1366
+ },
1367
+ nodeOverrideNames: {
1368
+ type: "array",
1369
+ value: "string",
1370
+ doc: "An array of one or more model node names whose transform will be overridden from model layer paint properties.",
1371
+ required: false
1372
+ },
1373
+ materialOverrideNames: {
1374
+ type: "array",
1375
+ value: "string",
1376
+ doc: "An array of one or more model material names whose properties will be overridden from model layer paint properties.",
1377
+ required: false
1378
+ },
1379
+ featureProperties: {
1380
+ type: "*",
1381
+ doc: "An object defining custom properties of the model. Properties are accessible as feature properties in expressions.",
1382
+ required: false
1383
+ }
1384
+ };
1385
+ var modelSourceModels = {
1386
+ "*": {
1387
+ type: "modelSourceModel",
1388
+ doc: "A 3D model and its properties."
1389
+ }
1390
+ };
1272
1391
  var source_model = {
1273
1392
  type: {
1274
1393
  required: true,
@@ -1296,7 +1415,11 @@ var source_model = {
1296
1415
  tiles: {
1297
1416
  type: "array",
1298
1417
  value: "string",
1299
- doc: "An array of one or more tile source URLs, as in the TileJSON spec."
1418
+ doc: "An array of one or more tile source URLs, as in the TileJSON spec. Requires `batched-model` source type."
1419
+ },
1420
+ models: {
1421
+ type: "modelSourceModels",
1422
+ doc: "Defines properties of 3D models in collection. Requires `model` source type."
1300
1423
  }
1301
1424
  };
1302
1425
  var layer = {
@@ -1371,6 +1494,9 @@ var layer = {
1371
1494
  building: {
1372
1495
  doc: "A procedural 3D building.",
1373
1496
  "sdk-support": {
1497
+ js: "3.16.0",
1498
+ android: "11.16.0",
1499
+ ios: "11.16.0"
1374
1500
  },
1375
1501
  experimental: true,
1376
1502
  "private": true
@@ -1520,12 +1646,25 @@ var layer = {
1520
1646
  };
1521
1647
  var appearance = {
1522
1648
  condition: {
1523
- type: "expression",
1524
- doc: "A boolean expression that determines when this appearance should be applied."
1649
+ type: "boolean",
1650
+ doc: "A boolean expression that determines when this appearance should be applied.",
1651
+ expression: {
1652
+ interpolated: false,
1653
+ parameters: [
1654
+ "zoom",
1655
+ "pitch",
1656
+ "feature",
1657
+ "feature-state",
1658
+ "measure-light",
1659
+ "distance-from-center"
1660
+ ]
1661
+ },
1662
+ "property-type": "data-driven"
1525
1663
  },
1526
1664
  name: {
1527
1665
  type: "string",
1528
- doc: "Optional name for this appearance. Non-empty names should be unique within a layer."
1666
+ doc: "Optional name for this appearance. Non-empty names should be unique within a layer.",
1667
+ "property-type": "constant"
1529
1668
  },
1530
1669
  properties: {
1531
1670
  type: "*",
@@ -1955,6 +2094,9 @@ var layout_building = {
1955
2094
  doc: "Whether this layer is displayed.",
1956
2095
  "sdk-support": {
1957
2096
  "basic functionality": {
2097
+ js: "3.16.0",
2098
+ android: "11.16.0",
2099
+ ios: "11.16.0"
1958
2100
  }
1959
2101
  },
1960
2102
  expression: {
@@ -1970,8 +2112,14 @@ var layout_building = {
1970
2112
  "private": true,
1971
2113
  "sdk-support": {
1972
2114
  "basic functionality": {
2115
+ js: "3.16.0",
2116
+ android: "11.16.0",
2117
+ ios: "11.16.0"
1973
2118
  },
1974
2119
  "data-driven styling": {
2120
+ js: "3.16.0",
2121
+ android: "11.16.0",
2122
+ ios: "11.16.0"
1975
2123
  }
1976
2124
  },
1977
2125
  expression: {
@@ -1992,8 +2140,44 @@ var layout_building = {
1992
2140
  "property-type": "data-driven",
1993
2141
  "sdk-support": {
1994
2142
  "basic functionality": {
2143
+ js: "3.16.0",
2144
+ android: "11.16.0",
2145
+ ios: "11.16.0"
2146
+ },
2147
+ "data-driven styling": {
2148
+ js: "3.16.0",
2149
+ android: "11.16.0",
2150
+ ios: "11.16.0"
2151
+ }
2152
+ },
2153
+ expression: {
2154
+ interpolated: false,
2155
+ parameters: [
2156
+ "feature"
2157
+ ]
2158
+ },
2159
+ requires: [
2160
+ "building-facade"
2161
+ ]
2162
+ },
2163
+ "building-facade-unit-width": {
2164
+ type: "number",
2165
+ minimum: 1,
2166
+ maximum: 20,
2167
+ "default": 3.1,
2168
+ doc: "Width of a floor. Think of this as measure how wide each unit should be. This effectively determines the number of units per each floor. Note that this does not affect the ground level facades (i.e. number of windows).",
2169
+ experimental: true,
2170
+ "property-type": "data-driven",
2171
+ "sdk-support": {
2172
+ "basic functionality": {
2173
+ js: "3.16.0",
2174
+ android: "11.16.0",
2175
+ ios: "11.16.0"
1995
2176
  },
1996
2177
  "data-driven styling": {
2178
+ js: "3.16.0",
2179
+ android: "11.16.0",
2180
+ ios: "11.16.0"
1997
2181
  }
1998
2182
  },
1999
2183
  expression: {
@@ -2016,13 +2200,19 @@ var layout_building = {
2016
2200
  0.9,
2017
2201
  0.9
2018
2202
  ],
2019
- doc: "Given as fractions, specifies the percentage of floor area covered by windows when building-facade is enabled",
2203
+ doc: "Given as fractions, specifies the percentage of unit area covered by windows when building-facade is enabled. Note that the area of a unit is ultimately determined by `building-facade-unit-width` and `building-facade-floors`.",
2020
2204
  experimental: true,
2021
2205
  "property-type": "data-driven",
2022
2206
  "sdk-support": {
2023
2207
  "basic functionality": {
2208
+ js: "3.16.0",
2209
+ android: "11.16.0",
2210
+ ios: "11.16.0"
2024
2211
  },
2025
2212
  "data-driven styling": {
2213
+ js: "3.16.0",
2214
+ android: "11.16.0",
2215
+ ios: "11.16.0"
2026
2216
  }
2027
2217
  },
2028
2218
  expression: {
@@ -2066,8 +2256,14 @@ var layout_building = {
2066
2256
  "private": true,
2067
2257
  "sdk-support": {
2068
2258
  "basic functionality": {
2259
+ js: "3.16.0",
2260
+ android: "11.16.0",
2261
+ ios: "11.16.0"
2069
2262
  },
2070
2263
  "data-driven styling": {
2264
+ js: "3.16.0",
2265
+ android: "11.16.0",
2266
+ ios: "11.16.0"
2071
2267
  }
2072
2268
  },
2073
2269
  expression: {
@@ -2089,8 +2285,14 @@ var layout_building = {
2089
2285
  "private": true,
2090
2286
  "sdk-support": {
2091
2287
  "basic functionality": {
2288
+ js: "3.16.0",
2289
+ android: "11.16.0",
2290
+ ios: "11.16.0"
2092
2291
  },
2093
2292
  "data-driven styling": {
2293
+ js: "3.16.0",
2294
+ android: "11.16.0",
2295
+ ios: "11.16.0"
2094
2296
  }
2095
2297
  },
2096
2298
  expression: {
@@ -2112,14 +2314,114 @@ var layout_building = {
2112
2314
  "private": true,
2113
2315
  "sdk-support": {
2114
2316
  "basic functionality": {
2317
+ js: "3.16.0",
2318
+ android: "11.16.0",
2319
+ ios: "11.16.0"
2115
2320
  },
2116
2321
  "data-driven styling": {
2322
+ js: "3.16.0",
2323
+ android: "11.16.0",
2324
+ ios: "11.16.0"
2117
2325
  }
2118
2326
  },
2119
2327
  expression: {
2120
2328
  interpolated: false
2121
2329
  },
2122
2330
  "property-type": "data-driven"
2331
+ },
2332
+ "building-flood-light-wall-radius": {
2333
+ "property-type": "data-driven",
2334
+ type: "number",
2335
+ experimental: true,
2336
+ units: "meters",
2337
+ "default": 0,
2338
+ minimum: 0,
2339
+ doc: "The extent of the flood light effect on the walls of the buildings in meters.",
2340
+ requires: [
2341
+ "lights"
2342
+ ],
2343
+ transition: true,
2344
+ expression: {
2345
+ interpolated: true,
2346
+ parameters: [
2347
+ "feature",
2348
+ "feature-state"
2349
+ ]
2350
+ },
2351
+ "sdk-support": {
2352
+ "basic functionality": {
2353
+ js: "3.16.0",
2354
+ android: "11.16.0",
2355
+ ios: "11.16.0"
2356
+ },
2357
+ "data-driven styling": {
2358
+ js: "3.16.0",
2359
+ android: "11.16.0",
2360
+ ios: "11.16.0"
2361
+ }
2362
+ }
2363
+ },
2364
+ "building-flood-light-ground-radius": {
2365
+ "property-type": "data-driven",
2366
+ type: "number",
2367
+ experimental: true,
2368
+ units: "meters",
2369
+ "default": 0,
2370
+ doc: "The extent of the flood light effect on the ground beneath the buildings in meters.",
2371
+ requires: [
2372
+ "lights"
2373
+ ],
2374
+ transition: true,
2375
+ expression: {
2376
+ interpolated: true,
2377
+ parameters: [
2378
+ "feature",
2379
+ "feature-state"
2380
+ ]
2381
+ },
2382
+ "sdk-support": {
2383
+ "basic functionality": {
2384
+ js: "3.16.0",
2385
+ android: "11.16.0",
2386
+ ios: "11.16.0"
2387
+ },
2388
+ "data-driven styling": {
2389
+ js: "3.16.0",
2390
+ android: "11.16.0",
2391
+ ios: "11.16.0"
2392
+ }
2393
+ }
2394
+ },
2395
+ "building-flip-roof-orientation": {
2396
+ "property-type": "data-driven",
2397
+ type: "boolean",
2398
+ experimental: true,
2399
+ units: "meters",
2400
+ "default": false,
2401
+ doc: "Flips the orientation of the roofs for the buildings. This only affects simple geometries. Namely buildings whose footprints form a quadrilateral. By default (false), the roof ridge takes the direction of the longer edge of the quadrilateral.",
2402
+ transition: true,
2403
+ requires: [
2404
+ "building-roof-shape"
2405
+ ],
2406
+ expression: {
2407
+ interpolated: true,
2408
+ parameters: [
2409
+ "feature",
2410
+ "feature-state"
2411
+ ]
2412
+ },
2413
+ "sdk-support": {
2414
+ "basic functionality": {
2415
+ js: "3.16.0",
2416
+ android: "11.16.0",
2417
+ ios: "11.16.0"
2418
+ },
2419
+ "data-driven styling": {
2420
+ js: "3.16.0",
2421
+ android: "11.16.0",
2422
+ ios: "11.16.0"
2423
+ }
2424
+ }
2123
2425
  }
2124
2426
  };
2125
2427
  var layout_line = {
@@ -2602,6 +2904,11 @@ var layout_symbol = {
2602
2904
  ios: "11.9.0"
2603
2905
  }
2604
2906
  },
2907
+ requires: [
2908
+ {
2909
+ "symbol-z-elevate": true
2910
+ }
2911
+ ],
2605
2912
  expression: {
2606
2913
  interpolated: false,
2607
2914
  parameters: [
@@ -6776,6 +7083,9 @@ var paint_building = {
6776
7083
  "private": true,
6777
7084
  "sdk-support": {
6778
7085
  "basic functionality": {
7086
+ js: "3.16.0",
7087
+ android: "11.16.0",
7088
+ ios: "11.16.0"
6779
7089
  }
6780
7090
  },
6781
7091
  expression: {
@@ -6803,6 +7113,9 @@ var paint_building = {
6803
7113
  doc: "Controls the intensity of ambient occlusion when shading concave angles between walls and roof crevices and windows.",
6804
7114
  "sdk-support": {
6805
7115
  "basic functionality": {
7116
+ js: "3.16.0",
7117
+ android: "11.16.0",
7118
+ ios: "11.16.0"
6806
7119
  }
6807
7120
  }
6808
7121
  },
@@ -6824,6 +7137,9 @@ var paint_building = {
6824
7137
  doc: "Controls the intensity of shading near ground",
6825
7138
  "sdk-support": {
6826
7139
  "basic functionality": {
7140
+ js: "3.16.0",
7141
+ android: "11.16.0",
7142
+ ios: "11.16.0"
6827
7143
  }
6828
7144
  }
6829
7145
  },
@@ -6844,6 +7160,9 @@ var paint_building = {
6844
7160
  doc: "The extent of the ambient occlusion effect on the ground beneath the procedural buildings in meters.",
6845
7161
  "sdk-support": {
6846
7162
  "basic functionality": {
7163
+ js: "3.16.0",
7164
+ android: "11.16.0",
7165
+ ios: "11.16.0"
6847
7166
  }
6848
7167
  }
6849
7168
  },
@@ -6865,6 +7184,9 @@ var paint_building = {
6865
7184
  },
6866
7185
  "sdk-support": {
6867
7186
  "basic functionality": {
7187
+ js: "3.16.0",
7188
+ android: "11.16.0",
7189
+ ios: "11.16.0"
6868
7190
  }
6869
7191
  }
6870
7192
  },
@@ -6885,6 +7207,9 @@ var paint_building = {
6885
7207
  },
6886
7208
  "sdk-support": {
6887
7209
  "basic functionality": {
7210
+ js: "3.16.0",
7211
+ android: "11.16.0",
7212
+ ios: "11.16.0"
6888
7213
  }
6889
7214
  }
6890
7215
  },
@@ -6897,6 +7222,9 @@ var paint_building = {
6897
7222
  "private": true,
6898
7223
  "sdk-support": {
6899
7224
  "basic functionality": {
7225
+ js: "3.16.0",
7226
+ android: "11.16.0",
7227
+ ios: "11.16.0"
6900
7228
  }
6901
7229
  },
6902
7230
  "property-type": "data-constant"
@@ -6911,8 +7239,14 @@ var paint_building = {
6911
7239
  transition: false,
6912
7240
  "sdk-support": {
6913
7241
  "basic functionality": {
7242
+ js: "3.16.0",
7243
+ android: "11.16.0",
7244
+ ios: "11.16.0"
6914
7245
  },
6915
7246
  "data-driven styling": {
7247
+ js: "3.16.0",
7248
+ android: "11.16.0",
7249
+ ios: "11.16.0"
6916
7250
  }
6917
7251
  },
6918
7252
  expression: {
@@ -6936,8 +7270,14 @@ var paint_building = {
6936
7270
  "private": true,
6937
7271
  "sdk-support": {
6938
7272
  "basic functionality": {
7273
+ js: "3.16.0",
7274
+ android: "11.16.0",
7275
+ ios: "11.16.0"
6939
7276
  },
6940
7277
  "data-driven styling": {
7278
+ js: "3.16.0",
7279
+ android: "11.16.0",
7280
+ ios: "11.16.0"
6941
7281
  }
6942
7282
  },
6943
7283
  expression: {
@@ -6960,6 +7300,9 @@ var paint_building = {
6960
7300
  "property-type": "data-constant",
6961
7301
  "sdk-support": {
6962
7302
  "basic functionality": {
7303
+ js: "3.16.0",
7304
+ android: "11.16.0",
7305
+ ios: "11.16.0"
6963
7306
  }
6964
7307
  },
6965
7308
  expression: {
@@ -6982,9 +7325,91 @@ var paint_building = {
6982
7325
  },
6983
7326
  "sdk-support": {
6984
7327
  "basic functionality": {
7328
+ js: "3.16.0",
7329
+ android: "11.16.0",
7330
+ ios: "11.16.0"
6985
7331
  }
6986
7332
  },
6987
7333
  "property-type": "data-constant"
7334
+ },
7335
+ "building-flood-light-color": {
7336
+ "property-type": "data-constant",
7337
+ type: "color",
7338
+ experimental: true,
7339
+ "default": "#ffffff",
7340
+ doc: "The color of the flood light effect on the walls of the buildings.",
7341
+ requires: [
7342
+ "lights"
7343
+ ],
7344
+ "use-theme": true,
7345
+ transition: true,
7346
+ expression: {
7347
+ interpolated: true,
7348
+ parameters: [
7349
+ "zoom",
7350
+ "measure-light"
7351
+ ]
7352
+ },
7353
+ "sdk-support": {
7354
+ "basic functionality": {
7355
+ js: "3.16.0",
7356
+ android: "11.16.0",
7357
+ ios: "11.16.0"
7358
+ }
7359
+ }
7360
+ },
7361
+ "building-flood-light-intensity": {
7362
+ "property-type": "data-constant",
7363
+ type: "number",
7364
+ experimental: true,
7365
+ "default": 0,
7366
+ minimum: 0,
7367
+ maximum: 1,
7368
+ doc: "The intensity of the flood light color.",
7369
+ requires: [
7370
+ "lights"
7371
+ ],
7372
+ transition: true,
7373
+ expression: {
7374
+ interpolated: true,
7375
+ parameters: [
7376
+ "zoom",
7377
+ "measure-light"
7378
+ ]
7379
+ },
7380
+ "sdk-support": {
7381
+ "basic functionality": {
7382
+ js: "3.16.0",
7383
+ android: "11.16.0",
7384
+ ios: "11.16.0"
7385
+ }
7386
+ }
7387
+ },
7388
+ "building-flood-light-ground-attenuation": {
7389
+ "property-type": "data-constant",
7390
+ type: "number",
7391
+ experimental: true,
7392
+ "default": 0.69,
7393
+ minimum: 0,
7394
+ maximum: 1,
7395
+ doc: "Provides a control to futher fine-tune the look of the flood light on the ground beneath the buildings. Lower values give the effect a more solid look while higher values make it smoother.",
7396
+ requires: [
7397
+ "lights"
7398
+ ],
7399
+ transition: true,
7400
+ expression: {
7401
+ interpolated: true,
7402
+ parameters: [
7403
+ "zoom"
7404
+ ]
7405
+ },
7406
+ "sdk-support": {
7407
+ "basic functionality": {
7408
+ js: "3.16.0",
7409
+ android: "11.16.0",
7410
+ ios: "11.16.0"
7411
+ }
7412
+ }
6988
7413
  }
6989
7414
  };
6990
7415
  var paint_line = {
@@ -8770,6 +9195,11 @@ var paint_symbol = {
8770
9195
  ios: "11.7.0"
8771
9196
  }
8772
9197
  },
9198
+ requires: [
9199
+ {
9200
+ "symbol-z-elevate": true
9201
+ }
9202
+ ],
8773
9203
  expression: {
8774
9204
  interpolated: true,
8775
9205
  parameters: [
@@ -10064,6 +10494,32 @@ var paint_model = {
10064
10494
  js: "3.5.0"
10065
10495
  }
10066
10496
  }
10497
+ },
10498
+ "model-elevation-reference": {
10499
+ type: "enum",
10500
+ doc: "Selects the base of the model. Some modes might require precomputed elevation data in the tileset.",
10501
+ values: {
10502
+ sea: {
10503
+ doc: "Elevated rendering is enabled. Use this mode to elevate models relative to the sea level."
10504
+ },
10505
+ ground: {
10506
+ doc: "Elevated rendering is enabled. Use this mode to elevate models relative to the ground's height below them."
10507
+ },
10508
+ "hd-road-markup": {
10509
+ doc: "Elevated rendering is enabled. Use this mode to describe additive and stackable features that should exist only on top of road polygons."
10510
+ }
10511
+ },
10512
+ "default": "ground",
10513
+ transition: false,
10514
+ expression: {
10515
+ interpolated: false
10516
+ },
10517
+ "property-type": "data-constant",
10518
+ experimental: true,
10519
+ "sdk-support": {
10520
+ "basic functionality": {
10521
+ }
10522
+ }
10067
10523
  }
10068
10524
  };
10069
10525
  var transition = {
@@ -10208,6 +10664,12 @@ var v8 = {
10208
10664
  source_geojson: source_geojson,
10209
10665
  source_video: source_video,
10210
10666
  source_image: source_image,
10667
+ modelNodeOverride: modelNodeOverride,
10668
+ modelNodeOverrides: modelNodeOverrides,
10669
+ modelMaterialOverride: modelMaterialOverride,
10670
+ modelMaterialOverrides: modelMaterialOverrides,
10671
+ modelSourceModel: modelSourceModel,
10672
+ modelSourceModels: modelSourceModels,
10211
10673
  source_model: source_model,
10212
10674
  layer: layer,
10213
10675
  appearance: appearance,
@@ -11617,15 +12079,6 @@ function migrateToV8 (style) {
11617
12079
  return style;
11618
12080
  }
11619
12081
 
11620
- function extend (output, ...inputs) {
11621
- for (const input of inputs) {
11622
- for (const k in input) {
11623
- output[k] = input[k];
11624
- }
11625
- }
11626
- return output;
11627
- }
11628
-
11629
12082
  let ParsingError$1 = class ParsingError extends Error {
11630
12083
  constructor(key, message) {
11631
12084
  super(message);
@@ -13638,7 +14091,11 @@ class FormatExpression {
13638
14091
  if (typeEquals(typeOf(evaluatedContent), ResolvedImageType)) {
13639
14092
  return new FormattedSection('', evaluatedContent, null, null, null);
13640
14093
  }
13641
- return new FormattedSection(toString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);
14094
+ return new FormattedSection(// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
14095
+ toString(evaluatedContent), null, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
14096
+ section.scale ? section.scale.evaluate(ctx) : null, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
14097
+ section.font ? section.font.evaluate(ctx).join(',') : null, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
14098
+ section.textColor ? section.textColor.evaluate(ctx) : null);
13642
14099
  };
13643
14100
  return new Formatted(this.sections.map(evaluateSection));
13644
14101
  }
@@ -13796,10 +14253,12 @@ class ImageExpression {
13796
14253
  }
13797
14254
  evaluate(ctx) {
13798
14255
  const primaryId = {
14256
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13799
14257
  name: this.namePrimary.evaluate(ctx),
13800
14258
  iconsetId: this.iconsetIdPrimary
13801
14259
  };
13802
14260
  const secondaryId = this.nameSecondary ? {
14261
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13803
14262
  name: this.nameSecondary.evaluate(ctx),
13804
14263
  iconsetId: this.iconsetIdSecondary
13805
14264
  } : void 0;
@@ -15944,7 +16403,8 @@ function linesToGeometryDistance(originGeometry, canonical, geometry) {
15944
16403
  }
15945
16404
  const ruler = new CheapRuler(lngLatLines[0][0][1], 'meters');
15946
16405
  if (geometry.type === 'Point' || geometry.type === 'MultiPoint' || geometry.type === 'LineString') {
15947
- return pointSetToLinesDistance(geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates, geometry.type === 'LineString', lngLatLines, ruler);
16406
+ return pointSetToLinesDistance(geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
16407
+ geometry.type === 'LineString', lngLatLines, ruler);
15948
16408
  }
15949
16409
  if (geometry.type === 'MultiLineString') {
15950
16410
  let dist = Infinity;
@@ -15981,7 +16441,8 @@ function polygonsToGeometryDistance(originGeometry, canonical, geometry) {
15981
16441
  }
15982
16442
  const ruler = new CheapRuler(lngLatPolygons[0][0][0][1], 'meters');
15983
16443
  if (geometry.type === 'Point' || geometry.type === 'MultiPoint' || geometry.type === 'LineString') {
15984
- return pointSetToPolygonsDistance(geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates, geometry.type === 'LineString', lngLatPolygons, ruler);
16444
+ return pointSetToPolygonsDistance(geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
16445
+ geometry.type === 'LineString', lngLatPolygons, ruler);
15985
16446
  }
15986
16447
  if (geometry.type === 'MultiLineString') {
15987
16448
  let dist = Infinity;
@@ -15995,7 +16456,8 @@ function polygonsToGeometryDistance(originGeometry, canonical, geometry) {
15995
16456
  return dist;
15996
16457
  }
15997
16458
  if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {
15998
- return polygonsToPolygonsDistance(geometry.type === 'Polygon' ? [geometry.coordinates] : geometry.coordinates, lngLatPolygons, ruler);
16459
+ return polygonsToPolygonsDistance(geometry.type === 'Polygon' ? [geometry.coordinates] : geometry.coordinates, // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
16460
+ lngLatPolygons, ruler);
15999
16461
  }
16000
16462
  return null;
16001
16463
  }
@@ -16147,12 +16609,14 @@ function makeConfigFQID(id, ownScope, contextScope) {
16147
16609
  }
16148
16610
  function coerceValue(type, value) {
16149
16611
  switch (type) {
16612
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
16150
16613
  case 'string':
16151
16614
  return toString(value);
16152
16615
  case 'number':
16153
16616
  return +value;
16154
16617
  case 'boolean':
16155
16618
  return !!value;
16619
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
16156
16620
  case 'color':
16157
16621
  return Color.parse(value);
16158
16622
  case 'formatted': {
@@ -16949,8 +17413,11 @@ class Coalesce {
16949
17413
  outputType = outputType || parsed.type;
16950
17414
  parsedArgs.push(parsed);
16951
17415
  }
16952
- const needsAnnotation = expectedType && parsedArgs.some(arg => checkSubtype(expectedType, arg.type));
16953
- return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);
17416
+ const needsAnnotation = expectedType && // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
17417
+ parsedArgs.some(arg => checkSubtype(expectedType, arg.type));
17418
+ return needsAnnotation ? // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17419
+ new Coalesce(ValueType, parsedArgs) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17420
+ new Coalesce(outputType, parsedArgs);
16954
17421
  }
16955
17422
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16956
17423
  evaluate(ctx) {
@@ -17767,10 +18234,14 @@ class NumberFormat {
17767
18234
  evaluate(ctx) {
17768
18235
  return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {
17769
18236
  style: this.currency && 'currency' || this.unit && 'unit' || 'decimal',
18237
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
17770
18238
  currency: this.currency ? this.currency.evaluate(ctx) : void 0,
18239
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
17771
18240
  unit: this.unit ? this.unit.evaluate(ctx) : void 0,
18241
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
17772
18242
  minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : void 0,
17773
- maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : void 0
18243
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18244
+ maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : void 0 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17774
18245
  }).format(this.number.evaluate(ctx));
17775
18246
  }
17776
18247
  eachChild(fn) {
@@ -17973,6 +18444,7 @@ CompoundExpression.register(expressions, {
17973
18444
  'error': [
17974
18445
  ErrorType,
17975
18446
  [StringType],
18447
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17976
18448
  (ctx, [v]) => {
17977
18449
  throw new RuntimeError(v.evaluate(ctx));
17978
18450
  }
@@ -17980,6 +18452,7 @@ CompoundExpression.register(expressions, {
17980
18452
  'typeof': [
17981
18453
  StringType,
17982
18454
  [ValueType],
18455
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
17983
18456
  (ctx, [v]) => toString$1(typeOf(v.evaluate(ctx)))
17984
18457
  ],
17985
18458
  'to-rgba': [
@@ -18039,6 +18512,7 @@ CompoundExpression.register(expressions, {
18039
18512
  overloads: [
18040
18513
  [
18041
18514
  [StringType],
18515
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18042
18516
  (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())
18043
18517
  ],
18044
18518
  [
@@ -18046,6 +18520,7 @@ CompoundExpression.register(expressions, {
18046
18520
  StringType,
18047
18521
  ObjectType
18048
18522
  ],
18523
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18049
18524
  (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))
18050
18525
  ]
18051
18526
  ]
@@ -18055,6 +18530,7 @@ CompoundExpression.register(expressions, {
18055
18530
  overloads: [
18056
18531
  [
18057
18532
  [StringType],
18533
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18058
18534
  (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())
18059
18535
  ],
18060
18536
  [
@@ -18062,7 +18538,7 @@ CompoundExpression.register(expressions, {
18062
18538
  StringType,
18063
18539
  ObjectType
18064
18540
  ],
18065
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
18541
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
18066
18542
  (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))
18067
18543
  ]
18068
18544
  ]
@@ -18070,6 +18546,7 @@ CompoundExpression.register(expressions, {
18070
18546
  'feature-state': [
18071
18547
  ValueType,
18072
18548
  [StringType],
18549
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18073
18550
  (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})
18074
18551
  ],
18075
18552
  'properties': [
@@ -18110,6 +18587,7 @@ CompoundExpression.register(expressions, {
18110
18587
  'measure-light': [
18111
18588
  NumberType,
18112
18589
  [StringType],
18590
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18113
18591
  (ctx, [s]) => ctx.measureLight(s.evaluate(ctx))
18114
18592
  ],
18115
18593
  'heatmap-density': [
@@ -18217,73 +18695,85 @@ CompoundExpression.register(expressions, {
18217
18695
  NumberType,
18218
18696
  NumberType
18219
18697
  ],
18698
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18220
18699
  (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))
18221
18700
  ],
18222
18701
  'sqrt': [
18223
18702
  NumberType,
18224
18703
  [NumberType],
18704
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18225
18705
  (ctx, [x]) => Math.sqrt(x.evaluate(ctx))
18226
18706
  ],
18227
18707
  'log10': [
18228
18708
  NumberType,
18229
18709
  [NumberType],
18710
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18230
18711
  (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10
18231
18712
  ],
18232
18713
  'ln': [
18233
18714
  NumberType,
18234
18715
  [NumberType],
18716
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18235
18717
  (ctx, [n]) => Math.log(n.evaluate(ctx))
18236
18718
  ],
18237
18719
  'log2': [
18238
18720
  NumberType,
18239
18721
  [NumberType],
18240
- (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2
18722
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18723
+ (ctx, [n]) => Math.log2(n.evaluate(ctx))
18241
18724
  ],
18242
18725
  'sin': [
18243
18726
  NumberType,
18244
18727
  [NumberType],
18728
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18245
18729
  (ctx, [n]) => Math.sin(n.evaluate(ctx))
18246
18730
  ],
18247
18731
  'cos': [
18248
18732
  NumberType,
18249
18733
  [NumberType],
18734
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18250
18735
  (ctx, [n]) => Math.cos(n.evaluate(ctx))
18251
18736
  ],
18252
18737
  'tan': [
18253
18738
  NumberType,
18254
18739
  [NumberType],
18740
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18255
18741
  (ctx, [n]) => Math.tan(n.evaluate(ctx))
18256
18742
  ],
18257
18743
  'asin': [
18258
18744
  NumberType,
18259
18745
  [NumberType],
18746
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18260
18747
  (ctx, [n]) => Math.asin(n.evaluate(ctx))
18261
18748
  ],
18262
18749
  'acos': [
18263
18750
  NumberType,
18264
18751
  [NumberType],
18752
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18265
18753
  (ctx, [n]) => Math.acos(n.evaluate(ctx))
18266
18754
  ],
18267
18755
  'atan': [
18268
18756
  NumberType,
18269
18757
  [NumberType],
18758
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18270
18759
  (ctx, [n]) => Math.atan(n.evaluate(ctx))
18271
18760
  ],
18272
18761
  'min': [
18273
18762
  NumberType,
18274
18763
  varargs(NumberType),
18275
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
18764
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
18276
18765
  (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))
18277
18766
  ],
18278
18767
  'max': [
18279
18768
  NumberType,
18280
18769
  varargs(NumberType),
18281
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
18770
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
18282
18771
  (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))
18283
18772
  ],
18284
18773
  'abs': [
18285
18774
  NumberType,
18286
18775
  [NumberType],
18776
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18287
18777
  (ctx, [n]) => Math.abs(n.evaluate(ctx))
18288
18778
  ],
18289
18779
  'round': [
@@ -18297,11 +18787,13 @@ CompoundExpression.register(expressions, {
18297
18787
  'floor': [
18298
18788
  NumberType,
18299
18789
  [NumberType],
18790
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18300
18791
  (ctx, [n]) => Math.floor(n.evaluate(ctx))
18301
18792
  ],
18302
18793
  'ceil': [
18303
18794
  NumberType,
18304
18795
  [NumberType],
18796
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18305
18797
  (ctx, [n]) => Math.ceil(n.evaluate(ctx))
18306
18798
  ],
18307
18799
  'filter-==': [
@@ -18310,6 +18802,7 @@ CompoundExpression.register(expressions, {
18310
18802
  StringType,
18311
18803
  ValueType
18312
18804
  ],
18805
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
18313
18806
  (ctx, [k, v]) => ctx.properties()[k.value] === v.value
18314
18807
  ],
18315
18808
  'filter-id-==': [
@@ -18419,11 +18912,13 @@ CompoundExpression.register(expressions, {
18419
18912
  'filter-type-in': [
18420
18913
  BooleanType,
18421
18914
  [array$1(StringType)],
18915
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18422
18916
  (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0
18423
18917
  ],
18424
18918
  'filter-id-in': [
18425
18919
  BooleanType,
18426
18920
  [array$1(ValueType)],
18921
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18427
18922
  (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0
18428
18923
  ],
18429
18924
  'filter-in-small': [
@@ -18433,6 +18928,7 @@ CompoundExpression.register(expressions, {
18433
18928
  array$1(ValueType)
18434
18929
  ],
18435
18930
  // assumes v is an array literal
18931
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18436
18932
  (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0
18437
18933
  ],
18438
18934
  'filter-in-large': [
@@ -18442,6 +18938,7 @@ CompoundExpression.register(expressions, {
18442
18938
  array$1(ValueType)
18443
18939
  ],
18444
18940
  // assumes v is a array literal with values sorted in ascending order and of a single type
18941
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument
18445
18942
  (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)
18446
18943
  ],
18447
18944
  'all': {
@@ -18510,24 +19007,25 @@ CompoundExpression.register(expressions, {
18510
19007
  'upcase': [
18511
19008
  StringType,
18512
19009
  [StringType],
18513
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19010
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18514
19011
  (ctx, [s]) => s.evaluate(ctx).toUpperCase()
18515
19012
  ],
18516
19013
  'downcase': [
18517
19014
  StringType,
18518
19015
  [StringType],
18519
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19016
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18520
19017
  (ctx, [s]) => s.evaluate(ctx).toLowerCase()
18521
19018
  ],
18522
19019
  'concat': [
18523
19020
  StringType,
18524
19021
  varargs(ValueType),
19022
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
18525
19023
  (ctx, args) => args.map(arg => toString(arg.evaluate(ctx))).join('')
18526
19024
  ],
18527
19025
  'resolved-locale': [
18528
19026
  StringType,
18529
19027
  [CollatorType],
18530
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19028
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18531
19029
  (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()
18532
19030
  ],
18533
19031
  'random': [
@@ -18604,7 +19102,7 @@ function createFunction(parameters, propertySpec) {
18604
19102
  const zoomDependent = zoomAndFeatureDependent || !featureDependent;
18605
19103
  const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');
18606
19104
  if (isColor) {
18607
- parameters = extend({}, parameters);
19105
+ parameters = Object.assign({}, parameters);
18608
19106
  if (parameters.stops) {
18609
19107
  parameters.stops = parameters.stops.map(stop => {
18610
19108
  return [
@@ -18650,9 +19148,13 @@ function createFunction(parameters, propertySpec) {
18650
19148
  const zoom = stop[0].zoom;
18651
19149
  if (featureFunctions[zoom] === void 0) {
18652
19150
  featureFunctions[zoom] = {
19151
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18653
19152
  zoom,
19153
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
18654
19154
  type: parameters.type,
19155
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
18655
19156
  property: parameters.property,
19157
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
18656
19158
  default: parameters.default,
18657
19159
  stops: []
18658
19160
  };
@@ -18674,28 +19176,32 @@ function createFunction(parameters, propertySpec) {
18674
19176
  return {
18675
19177
  kind: 'composite',
18676
19178
  interpolationType,
19179
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18677
19180
  interpolationFactor: Interpolate.interpolationFactor.bind(void 0, interpolationType),
18678
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19181
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
18679
19182
  zoomStops: featureFunctionStops.map(s => s[0]),
18680
19183
  evaluate({zoom}, properties) {
18681
19184
  return evaluateExponentialFunction({
18682
19185
  stops: featureFunctionStops,
19186
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
18683
19187
  base: parameters.base
18684
19188
  }, propertySpec, zoom).evaluate(zoom, properties);
18685
19189
  }
18686
19190
  };
18687
19191
  } else if (zoomDependent) {
18688
- const interpolationType = type === 'exponential' ? {
19192
+ const interpolationType = type === 'exponential' ? // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
19193
+ {
18689
19194
  name: 'exponential',
18690
19195
  base: parameters.base !== void 0 ? parameters.base : 1
18691
19196
  } : null;
18692
19197
  return {
18693
19198
  kind: 'camera',
18694
19199
  interpolationType,
19200
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
18695
19201
  interpolationFactor: Interpolate.interpolationFactor.bind(void 0, interpolationType),
18696
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19202
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
18697
19203
  zoomStops: parameters.stops.map(s => s[0]),
18698
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19204
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
18699
19205
  evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)
18700
19206
  };
18701
19207
  } else {
@@ -18748,7 +19254,9 @@ function evaluateExponentialFunction(parameters, propertySpec, input) {
18748
19254
  if (input >= parameters.stops[n - 1][0])
18749
19255
  return parameters.stops[n - 1][1];
18750
19256
  const index = findStopLessThanOrEqualTo(parameters.stops.map(stop => stop[0]), input);
18751
- const t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);
19257
+ const t = interpolationFactor(input, base, // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
19258
+ parameters.stops[index][0], // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
19259
+ parameters.stops[index + 1][0]);
18752
19260
  const outputLower = parameters.stops[index][1];
18753
19261
  const outputUpper = parameters.stops[index + 1][1];
18754
19262
  let interp = interpolate$1[propertySpec.type] || identityFunction;
@@ -18932,16 +19440,20 @@ function createPropertyExpression(expression, propertySpec, scope, options, icon
18932
19440
  return error([new ParsingError$1('', '"interpolate" expressions cannot be used with this property')]);
18933
19441
  }
18934
19442
  if (!zoomCurve) {
18935
- return success(isFeatureConstant$1 && isLineProgressConstant ? new ZoomConstantExpression('constant', expression.value, isLightConstant, isLineProgressConstant) : new ZoomConstantExpression('source', expression.value, isLightConstant, isLineProgressConstant));
19443
+ return success(isFeatureConstant$1 && isLineProgressConstant ? // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
19444
+ new ZoomConstantExpression('constant', expression.value, isLightConstant, isLineProgressConstant) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
19445
+ new ZoomConstantExpression('source', expression.value, isLightConstant, isLineProgressConstant));
18936
19446
  }
18937
19447
  const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : void 0;
18938
- return success(isFeatureConstant$1 && isLineProgressConstant ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant) : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant));
19448
+ return success(isFeatureConstant$1 && isLineProgressConstant ? // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
19449
+ new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
19450
+ new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant));
18939
19451
  }
18940
19452
  class StylePropertyFunction {
18941
19453
  constructor(parameters, specification) {
18942
19454
  this._parameters = parameters;
18943
19455
  this._specification = specification;
18944
- extend(this, createFunction(this._parameters, this._specification));
19456
+ Object.assign(this, createFunction(this._parameters, this._specification));
18945
19457
  }
18946
19458
  static deserialize(serialized) {
18947
19459
  return new StylePropertyFunction(serialized._parameters, serialized._specification);
@@ -19431,7 +19943,9 @@ ${ JSON.stringify(filterExp, null, 2) }
19431
19943
  filterFunc = filterFunc;
19432
19944
  const needGeometry = geometryNeeded(staticFilter);
19433
19945
  return {
19946
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
19434
19947
  filter: filterFunc,
19948
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
19435
19949
  dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : void 0,
19436
19950
  needGeometry,
19437
19951
  needFeature: !!needFeature
@@ -19546,9 +20060,17 @@ function convertFilter$1(filter) {
19546
20060
  const op = filter[0];
19547
20061
  if (filter.length <= 1)
19548
20062
  return op !== 'any';
19549
- const converted = op === '==' ? convertComparisonOp$1(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp$1(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp$1(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : // @ts-expect-error - TS2769 - No overload matches this call.
20063
+ const converted = // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20064
+ op === '==' ? convertComparisonOp$1(filter[1], filter[2], '==') : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20065
+ op === '!=' ? convertNegation(convertComparisonOp$1(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20066
+ op === '>=' ? convertComparisonOp$1(filter[1], filter[2], op) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20067
+ op === 'any' ? convertDisjunctionOp(filter.slice(1)) : // @ts-expect-error - TS2769 - No overload matches this call.
19550
20068
  op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter$1)) : // @ts-expect-error - TS2769 - No overload matches this call.
19551
- op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter$1).map(convertNegation)) : op === 'in' ? convertInOp$1(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp$1(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp$1(filter[1]) : op === '!has' ? convertNegation(convertHasOp$1(filter[1])) : true;
20069
+ op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter$1).map(convertNegation)) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20070
+ op === 'in' ? convertInOp$1(filter[1], filter.slice(2)) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20071
+ op === '!in' ? convertNegation(convertInOp$1(filter[1], filter.slice(2))) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20072
+ op === 'has' ? convertHasOp$1(filter[1]) : // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
20073
+ op === '!has' ? convertNegation(convertHasOp$1(filter[1])) : true;
19552
20074
  return converted;
19553
20075
  }
19554
20076
  function convertComparisonOp$1(property, value, op) {
@@ -20634,8 +21156,9 @@ function validateImport(options) {
20634
21156
  value: value.__line__,
20635
21157
  enumerable: false
20636
21158
  });
20637
- let errors = validateObject(extend({}, options, {
21159
+ let errors = validateObject(Object.assign({}, options, {
20638
21160
  value: importSpec,
21161
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
20639
21162
  valueSpec: styleSpec.import
20640
21163
  }));
20641
21164
  if (unbundle(importSpec.id) === '') {
@@ -20683,6 +21206,7 @@ function validateArray(options) {
20683
21206
  errors = errors.concat(validateArrayElement({
20684
21207
  array,
20685
21208
  arrayIndex: i,
21209
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
20686
21210
  value: array[i],
20687
21211
  valueSpec: arrayElementSpec,
20688
21212
  style,
@@ -20748,6 +21272,7 @@ function validateFunction(options) {
20748
21272
  const errors = validateObject({
20749
21273
  key: options.key,
20750
21274
  value: options.value,
21275
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
20751
21276
  valueSpec: options.styleSpec.function,
20752
21277
  style: options.style,
20753
21278
  styleSpec: options.styleSpec,
@@ -20911,15 +21436,20 @@ function validateExpression(options) {
20911
21436
  });
20912
21437
  }
20913
21438
  const expressionObj = expression.value.expression || expression.value._styleExpression.expression;
20914
- if (options.expressionContext === 'property' && options.propertyKey === 'text-font' && !expressionObj.outputDefined()) {
21439
+ if (options.expressionContext === 'property' && options.propertyKey === 'text-font' && // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
21440
+ !expressionObj.outputDefined()) {
20915
21441
  return [new ValidationError(options.key, options.value, `Invalid data expression for "${ options.propertyKey }". Output values must be contained as literals within the expression.`)];
20916
21442
  }
20917
- if (options.expressionContext === 'property' && options.propertyType === 'layout' && !isStateConstant(expressionObj)) {
21443
+ if (options.expressionContext === 'property' && options.propertyType === 'layout' && // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
21444
+ !isStateConstant(expressionObj)) {
20918
21445
  return [new ValidationError(options.key, options.value, '"feature-state" data expressions are not supported with layout properties.')];
20919
21446
  }
20920
21447
  if (options.expressionContext === 'filter') {
20921
21448
  return disallowedFilterParameters(expressionObj, options);
20922
21449
  }
21450
+ if (options.expressionContext === 'appearance') {
21451
+ return checkDisallowedParameters(expressionObj, options);
21452
+ }
20923
21453
  if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {
20924
21454
  if (!isGlobalPropertyConstant(expressionObj, [
20925
21455
  'zoom',
@@ -20960,6 +21490,28 @@ function disallowedFilterParameters(e, options) {
20960
21490
  });
20961
21491
  return errors;
20962
21492
  }
21493
+ function checkDisallowedParameters(e, options) {
21494
+ const allowedParameters = /* @__PURE__ */
21495
+ new Set();
21496
+ if (options.valueSpec && options.valueSpec.expression) {
21497
+ for (const param of options.valueSpec.expression.parameters) {
21498
+ allowedParameters.add(param);
21499
+ }
21500
+ }
21501
+ if (allowedParameters.size === 0) {
21502
+ return [];
21503
+ }
21504
+ const errors = [];
21505
+ if (e instanceof CompoundExpression) {
21506
+ if (!allowedParameters.has(e.name)) {
21507
+ return [new ValidationError(options.key, options.value, `["${ e.name }"] is not an allowed parameter`)];
21508
+ }
21509
+ }
21510
+ e.eachChild(arg => {
21511
+ errors.push(...checkDisallowedParameters(arg, options));
21512
+ });
21513
+ return errors;
21514
+ }
20963
21515
 
20964
21516
  function validateBoolean(options) {
20965
21517
  const value = options.value;
@@ -21000,8 +21552,9 @@ function validateEnum(options) {
21000
21552
  function validateFilter(options) {
21001
21553
  if (isExpressionFilter(deepUnbundle(options.value))) {
21002
21554
  const layerType = options.layerType || 'fill';
21003
- return validateExpression(extend({}, options, {
21555
+ return validateExpression(Object.assign({}, options, {
21004
21556
  expressionContext: 'filter',
21557
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21005
21558
  valueSpec: options.styleSpec[`filter_${ layerType }`]
21006
21559
  }));
21007
21560
  } else {
@@ -21021,6 +21574,7 @@ function validateNonExpressionFilter(options) {
21021
21574
  let errors = validateEnum({
21022
21575
  key: `${ key }[0]`,
21023
21576
  value: value[0],
21577
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21024
21578
  valueSpec: styleSpec.filter_operator
21025
21579
  });
21026
21580
  switch (unbundle(value[0])) {
@@ -21052,6 +21606,7 @@ function validateNonExpressionFilter(options) {
21052
21606
  errors = errors.concat(validateEnum({
21053
21607
  key: `${ key }[${ i }]`,
21054
21608
  value: value[i],
21609
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21055
21610
  valueSpec: styleSpec.geometry_type
21056
21611
  }));
21057
21612
  } else if (!isString(value[i]) && !isNumber(value[i]) && !isBoolean(value[i])) {
@@ -21131,6 +21686,7 @@ function validateProperty(options, propertyType) {
21131
21686
  return validate({
21132
21687
  key,
21133
21688
  value,
21689
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21134
21690
  valueSpec: styleSpec.transition,
21135
21691
  style,
21136
21692
  styleSpec
@@ -21168,6 +21724,7 @@ Use an identity property function instead: ${ example }.`)];
21168
21724
  return errors.concat(validate({
21169
21725
  key: options.key,
21170
21726
  value,
21727
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21171
21728
  valueSpec,
21172
21729
  style,
21173
21730
  styleSpec,
@@ -21177,6 +21734,73 @@ Use an identity property function instead: ${ example }.`)];
21177
21734
  }));
21178
21735
  }
21179
21736
 
21737
+ function validateAppearance(options) {
21738
+ const {key, layer, layerType} = options;
21739
+ const value = unbundle(options.value);
21740
+ const name = unbundle(value.name);
21741
+ const condition = unbundle(value.condition);
21742
+ const errors = validateObject({
21743
+ key,
21744
+ value,
21745
+ valueSpec: options.styleSpec.appearance,
21746
+ style: options.style,
21747
+ styleSpec: options.styleSpec,
21748
+ objectElementValidators: {
21749
+ condition: options2 => validateCondition(Object.assign({
21750
+ layer,
21751
+ layerType
21752
+ }, options2)),
21753
+ properties: options2 => validateProperties(Object.assign({
21754
+ layer,
21755
+ layerType
21756
+ }, options2))
21757
+ }
21758
+ });
21759
+ if (name !== 'hidden' && !condition) {
21760
+ errors.push(new ValidationError(options.key, 'name', `Appearance with name different than "hidden" must have a condition`));
21761
+ }
21762
+ return errors;
21763
+ }
21764
+ function validateProperties(options) {
21765
+ const errors = [];
21766
+ const {styleSpec, layer, layerType} = options;
21767
+ const paintProperties = styleSpec[`paint_${ layerType }`];
21768
+ const layoutProperties = styleSpec[`layout_${ layerType }`];
21769
+ const properties = options.object[options.objectKey];
21770
+ for (const propertyKey in properties) {
21771
+ const propertyType = propertyKey in paintProperties ? 'paint' : propertyKey in layoutProperties ? 'layout' : void 0;
21772
+ if (!propertyType) {
21773
+ errors.push(new ValidationError(options.key, propertyKey, `unknown property "${ propertyKey }" for layer type "${ layerType }"`));
21774
+ continue;
21775
+ }
21776
+ const propertyValidationOptions = Object.assign({}, options, {
21777
+ key: `${ options.key }.${ propertyKey }`,
21778
+ object: properties,
21779
+ objectKey: propertyKey,
21780
+ layer,
21781
+ layerType,
21782
+ value: properties[propertyKey],
21783
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
21784
+ valueSpec: propertyType === 'paint' ? paintProperties[propertyKey] : layoutProperties[propertyKey]
21785
+ });
21786
+ errors.push(...validateProperty(propertyValidationOptions, propertyType));
21787
+ }
21788
+ return errors;
21789
+ }
21790
+ function validateCondition(options) {
21791
+ const errors = [];
21792
+ const appearance = options.object;
21793
+ const condition = appearance.condition;
21794
+ errors.push(...validateExpression({
21795
+ key: options.key,
21796
+ value: condition,
21797
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21798
+ valueSpec: v8['appearance']['condition'],
21799
+ expressionContext: 'appearance'
21800
+ }));
21801
+ return errors;
21802
+ }
21803
+
21180
21804
  function validatePaintProperty(options) {
21181
21805
  return validateProperty(options, 'paint');
21182
21806
  }
@@ -21266,6 +21890,7 @@ function validateLayer(options) {
21266
21890
  errors = errors.concat(validateObject({
21267
21891
  key,
21268
21892
  value: layer,
21893
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21269
21894
  valueSpec: styleSpec.layer,
21270
21895
  style: options.style,
21271
21896
  styleSpec: options.styleSpec,
@@ -21279,6 +21904,7 @@ function validateLayer(options) {
21279
21904
  return validate({
21280
21905
  key: `${ key }.type`,
21281
21906
  value: layer.type,
21907
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21282
21908
  valueSpec: styleSpec.layer.type,
21283
21909
  style: options.style,
21284
21910
  styleSpec: options.styleSpec,
@@ -21287,7 +21913,7 @@ function validateLayer(options) {
21287
21913
  });
21288
21914
  },
21289
21915
  filter(options2) {
21290
- return validateFilter(extend({ layerType: type }, options2));
21916
+ return validateFilter(Object.assign({ layerType: type }, options2));
21291
21917
  },
21292
21918
  layout(options2) {
21293
21919
  return validateObject({
@@ -21299,7 +21925,7 @@ function validateLayer(options) {
21299
21925
  styleSpec: options2.styleSpec,
21300
21926
  objectElementValidators: {
21301
21927
  '*'(options3) {
21302
- return validateLayoutProperty(extend({ layerType: type }, options3));
21928
+ return validateLayoutProperty(Object.assign({ layerType: type }, options3));
21303
21929
  }
21304
21930
  }
21305
21931
  });
@@ -21314,13 +21940,42 @@ function validateLayer(options) {
21314
21940
  styleSpec: options2.styleSpec,
21315
21941
  objectElementValidators: {
21316
21942
  '*'(options3) {
21317
- return validatePaintProperty(extend({
21943
+ return validatePaintProperty(Object.assign({
21318
21944
  layerType: type,
21319
21945
  layer
21320
21946
  }, options3));
21321
21947
  }
21322
21948
  }
21323
21949
  });
21950
+ },
21951
+ appearances(options2) {
21952
+ const validationErrors = validateArray({
21953
+ key: options2.key,
21954
+ value: options2.value,
21955
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21956
+ valueSpec: options2.valueSpec,
21957
+ style: options2.style,
21958
+ styleSpec: options2.styleSpec,
21959
+ arrayElementValidator: options3 => validateAppearance(Object.assign({
21960
+ layerType: type,
21961
+ layer
21962
+ }, options3))
21963
+ });
21964
+ const appearances = Array.isArray(options2.value) ? options2.value : [];
21965
+ const dedupedNames = /* @__PURE__ */
21966
+ new Set();
21967
+ appearances.forEach((a, index) => {
21968
+ const name = unbundle(a.name);
21969
+ if (name) {
21970
+ if (dedupedNames.has(name)) {
21971
+ const layerId = unbundle(layer.id);
21972
+ validationErrors.push(new ValidationError(options2.key, name, `Duplicated appearance name "${ name }" for layer "${ layerId }"`));
21973
+ } else {
21974
+ dedupedNames.add(name);
21975
+ }
21976
+ }
21977
+ });
21978
+ return validationErrors;
21324
21979
  }
21325
21980
  }
21326
21981
  }));
@@ -21366,6 +22021,7 @@ function validateSource(options) {
21366
22021
  errors = errors.concat(validateObject({
21367
22022
  key,
21368
22023
  value,
22024
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21369
22025
  valueSpec: styleSpec[`source_${ type.replace('-', '_') }`],
21370
22026
  style: options.style,
21371
22027
  styleSpec,
@@ -21376,6 +22032,7 @@ function validateSource(options) {
21376
22032
  errors = validateObject({
21377
22033
  key,
21378
22034
  value,
22035
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21379
22036
  valueSpec: styleSpec.source_geojson,
21380
22037
  style,
21381
22038
  styleSpec,
@@ -21416,6 +22073,7 @@ function validateSource(options) {
21416
22073
  return validateObject({
21417
22074
  key,
21418
22075
  value,
22076
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21419
22077
  valueSpec: styleSpec.source_video,
21420
22078
  style,
21421
22079
  styleSpec
@@ -21424,6 +22082,7 @@ function validateSource(options) {
21424
22082
  return validateObject({
21425
22083
  key,
21426
22084
  value,
22085
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21427
22086
  valueSpec: styleSpec.source_image,
21428
22087
  style,
21429
22088
  styleSpec
@@ -21544,6 +22203,7 @@ function validateLight(options) {
21544
22203
  errors = errors.concat(validate({
21545
22204
  key,
21546
22205
  value: light[key],
22206
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21547
22207
  valueSpec: styleSpec.transition,
21548
22208
  style,
21549
22209
  styleSpec
@@ -21552,6 +22212,7 @@ function validateLight(options) {
21552
22212
  errors = errors.concat(validate({
21553
22213
  key,
21554
22214
  value: light[key],
22215
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21555
22216
  valueSpec: lightSpec[key],
21556
22217
  style,
21557
22218
  styleSpec
@@ -21627,6 +22288,7 @@ function validateLights(options) {
21627
22288
  errors = errors.concat(validate({
21628
22289
  key: key2,
21629
22290
  value: light[key2],
22291
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21630
22292
  valueSpec: styleSpec.transition,
21631
22293
  style,
21632
22294
  styleSpec
@@ -21637,6 +22299,7 @@ function validateLights(options) {
21637
22299
  errors = errors.concat(validate({
21638
22300
  key: propertyKey,
21639
22301
  value: properties[propertyKey],
22302
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21640
22303
  valueSpec: lightPropertySpec[propertyKey],
21641
22304
  style,
21642
22305
  styleSpec
@@ -21648,6 +22311,7 @@ function validateLights(options) {
21648
22311
  errors = errors.concat(validate({
21649
22312
  key: key2,
21650
22313
  value: light[key2],
22314
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21651
22315
  valueSpec: lightSpec[key2],
21652
22316
  style,
21653
22317
  styleSpec
@@ -21688,6 +22352,7 @@ function validateTerrain(options) {
21688
22352
  errors = errors.concat(validate({
21689
22353
  key: key2,
21690
22354
  value: terrain[key2],
22355
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21691
22356
  valueSpec: styleSpec.transition,
21692
22357
  style,
21693
22358
  styleSpec
@@ -21696,6 +22361,7 @@ function validateTerrain(options) {
21696
22361
  errors = errors.concat(validate({
21697
22362
  key: key2,
21698
22363
  value: terrain[key2],
22364
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21699
22365
  valueSpec: terrainSpec[key2],
21700
22366
  style,
21701
22367
  styleSpec
@@ -21747,6 +22413,7 @@ function validateFog(options) {
21747
22413
  errors = errors.concat(validate({
21748
22414
  key,
21749
22415
  value: fog[key],
22416
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21750
22417
  valueSpec: styleSpec.transition,
21751
22418
  style,
21752
22419
  styleSpec
@@ -21755,6 +22422,7 @@ function validateFog(options) {
21755
22422
  errors = errors.concat(validate({
21756
22423
  key,
21757
22424
  value: fog[key],
22425
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21758
22426
  valueSpec: fogSpec[key],
21759
22427
  style,
21760
22428
  styleSpec
@@ -21793,6 +22461,7 @@ function validateProjection(options) {
21793
22461
  errors = errors.concat(validate({
21794
22462
  key,
21795
22463
  value: projection[key],
22464
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
21796
22465
  valueSpec: projectionSpec[key],
21797
22466
  style,
21798
22467
  styleSpec
@@ -21825,6 +22494,7 @@ function validateIconset(options) {
21825
22494
  errors = errors.concat(validateObject({
21826
22495
  key,
21827
22496
  value: iconset,
22497
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21828
22498
  valueSpec: styleSpec[`iconset_${ type }`],
21829
22499
  style,
21830
22500
  styleSpec
@@ -21882,7 +22552,10 @@ function validate(options, arrayAsExpression = false) {
21882
22552
  }
21883
22553
  return errors2;
21884
22554
  }
21885
- const errors = validateObject(Object.assign({}, options, { valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec }));
22555
+ const errors = validateObject(Object.assign({}, options, {
22556
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
22557
+ valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec
22558
+ }));
21886
22559
  return errors;
21887
22560
  }
21888
22561
 
@@ -21917,6 +22590,7 @@ function validateObject(options) {
21917
22590
  errors = errors.concat(validateElement({
21918
22591
  key: (key ? `${ key }.` : key) + objectKey,
21919
22592
  value: object[objectKey],
22593
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21920
22594
  valueSpec: elementSpec,
21921
22595
  style,
21922
22596
  styleSpec,
@@ -21956,6 +22630,7 @@ function validateStyle$2(style, styleSpec = v8, options = {}) {
21956
22630
  const errors = validateObject({
21957
22631
  key: options.key || '',
21958
22632
  value: style,
22633
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
21959
22634
  valueSpec: Object.assign(styleSpec.$root, // Skip validation of the root properties that are not defined in the style spec (e.g. 'owner').
21960
22635
  { '*': { type: '*' } }),
21961
22636
  styleSpec,