@tileflow/core 0.1.0-alpha.34 → 0.1.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,7 +60,7 @@ Omitted fields inherit, but declaring a field does not imply a recursive merge:
60
60
  - `modules` merges by domain. Declaring `roads(...)` replaces that domain's inherited request and
61
61
  render contributions. Use `refine(...)` to patch it, `disable()` to remove it, and `reset()` for
62
62
  an explicit reset inside a supported patch.
63
- - `themes` replaces the complete collection and clears an inherited `systemThemes` mapping.
63
+ - `themes` replaces the complete collection and clears inherited `systemThemes` and `timeOfDay` mappings.
64
64
  `defaultTheme` can select an inherited concrete theme; `systemThemes` replaces its complete mapping.
65
65
  - `icons` replaces the ordered contributor list. Omission inherits it; `[]` disables it. Local and
66
66
  package directories can be combined with explicit locked `iconSet('@team/set')` descriptors.
@@ -141,7 +141,7 @@ receipts must use a concrete theme such as `light` or `dark`.
141
141
 
142
142
  Because every theme of a map shares one structure, a browser map can cross-fade between themes or
143
143
  show a continuous blend of them on the same MapLibre instance, with no extra requests. See
144
- [theme transitions and blends](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/theme-transitions-and-blends.md).
144
+ [theme transitions, time-of-day presets and blends](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/theme-transitions-and-blends.md).
145
145
  The same controller can make chosen modules recede and the map's labels fade so an application's
146
146
  own content reads first; see [map emphasis](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/map-emphasis.md).
147
147
  It also sets the style-wide states that themes read with `expr.globalState`, easing numbers so the
@@ -158,15 +158,15 @@ A theme can describe its sun and sky light (`lighting.sun`, `lighting.ambient`);
158
158
  returns the sun the map shows with `getSun()`, mixed during a blend, for an application's own 3D
159
159
  layers, and `setSun()` places it by direction or by the real sun of a date and place; see
160
160
  [sun and light](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/sun-and-light.md).
161
- `createTileflowBuildings3D` raises the map's buildings round the camera and lights them from that
162
- sun, with shadows on the buildings and the flat map, contact shadow and night light from the places
163
- they hold; it shows, hides and grows them without laying out any source; see
161
+ `createTileflowBuildings3D` raises the map's buildings with their authored colours and native
162
+ extrusion lighting. Height changes are immediate by default; scene sun lighting, shadows,
163
+ illuminated edges, colour variation, night lights and animation are explicit options; see
164
164
  [3D buildings](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/buildings-3d.md).
165
165
  `createTileflowStreetLights` lights the streets as the sun sets, from the lamps and lit streets the
166
166
  map's data holds; see
167
167
  [street lights](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/street-lights.md).
168
- `createTileflowTrees3D` stands the map's trees in 3D in the same light; see
169
- [3D trees](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/trees-3d.md).
168
+ `createTileflowVegetation` controls all trees using the map's `3d`, `flat` or `auto` policy; see
169
+ [vegetation controls and 3D trees](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/trees-3d.md).
170
170
 
171
171
  The semantic domains are `land`, `water`, `nautical`, `roads`, `buildings`, `boundaries`, `labels`,
172
172
  `poi`, `aeroways`, `transit`, `vegetation`, `addresses`, and `landforms`. Style stable geographic
@@ -238,10 +238,12 @@ package uses this contract for its mounted Map; it is not yet published.
238
238
 
239
239
  ## Data, terrain, and browser resources
240
240
 
241
- Tileflow World is the hosted primary-data path. `vectorTiles()` with `openMapTiles()` supports
242
- compatible externally supplied vector data for local/self-hosted use; it does not make that source
243
- eligible for hosted deployment. `hostedTileset()` and semantic overlay placement add named data
244
- sources. Local PMTiles inputs are for local tooling, not implicit production data publication.
241
+ Tileflow World is the hosted primary source. `vectorTiles()` with `openMapTiles()` supports
242
+ external local/self-hosted data; hosted eligibility is separate. `hostedTileset()` and semantic
243
+ overlays add named sources. Local PMTiles inputs are tooling-only.
244
+
245
+ `bathymetry({vectorLayers: {...}})` declares compatible contour/name layers; omission retains
246
+ legacy band geometry.
245
247
 
246
248
  World attribution links to Tileflow's source notice, OpenMapTiles, and OpenStreetMap. External
247
249
  vector data retains the attribution supplied by its owner.
@@ -1,7 +1,9 @@
1
1
  # Third-party notices
2
2
 
3
- `@tileflow/core/browser` embeds `maplibre-contour` 0.1.0, `PMTiles` 4.4.0, `fflate` 0.8.3, and
4
- `earcut` 3.2.4 so contour, local archive, and 3D building rendering remain self-contained. The complete upstream licenses follow.
3
+ `@tileflow/core/browser` embeds `maplibre-contour` 0.1.0, `PMTiles` 4.5.0, `fflate` 0.8.3, and
4
+ `earcut` 3.2.4 so contour, local archive, and 3D building rendering remain self-contained.
5
+ `@tileflow/core` and `@tileflow/core/browser` embed the decoder of `meshoptimizer` 1.3.0, loaded
6
+ only to read a compressed 3D model file. The complete upstream licenses follow.
5
7
 
6
8
  ## maplibre-contour 0.1.0
7
9
 
@@ -168,7 +170,7 @@ See <https://github.com/nodejs/node/blob/main/LICENSE> for more information.
168
170
 
169
171
  ---
170
172
 
171
- ## PMTiles 4.4.0
173
+ ## PMTiles 4.5.0
172
174
 
173
175
  The below license (BSD-3) applies to the reference implementations in this repository.
174
176
 
@@ -249,6 +251,32 @@ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWA
249
251
 
250
252
  ---
251
253
 
254
+ ## meshoptimizer 1.3.0
255
+
256
+ MIT License
257
+
258
+ Copyright (c) 2016-2026 Arseny Kapoulkine
259
+
260
+ Permission is hereby granted, free of charge, to any person obtaining a copy
261
+ of this software and associated documentation files (the "Software"), to deal
262
+ in the Software without restriction, including without limitation the rights
263
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
264
+ copies of the Software, and to permit persons to whom the Software is
265
+ furnished to do so, subject to the following conditions:
266
+
267
+ The above copyright notice and this permission notice shall be included in all
268
+ copies or substantial portions of the Software.
269
+
270
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
271
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
272
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
273
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
274
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
275
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
276
+ SOFTWARE.
277
+
278
+ ---
279
+
252
280
  ## TypeScript helper code
253
281
 
254
282
  The bundled browser entry retains TypeScript helper code and its complete upstream notice:
@@ -267,11 +295,11 @@ OF THIS SOFTWARE.
267
295
 
268
296
  ---
269
297
 
270
- ## whatwg-url 15.1.0 and tr46 6.0.0
298
+ ## whatwg-url 17.2.0 and tr46 7.0.0
271
299
 
272
300
  The native entry embeds the low-level `whatwg-url` parser and `tr46` IDNA processing. During the
273
- native build only, the parser's relative encoding module is replaced by Tileflow's private UTF-8
274
- codec. No upstream package is patched on disk and no global codec is installed. Both components
301
+ native build only, the parser's encoding and query-encoding imports use Tileflow's private UTF-8
302
+ codec; the legacy encoding bootstrap is replaced by that side-effect-free module. No upstream package is patched on disk and no global codec is installed. Both components
275
303
  are MIT-licensed:
276
304
 
277
305
  The MIT License (MIT)
@@ -348,3 +376,69 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
348
376
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
349
377
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
350
378
  SOFTWARE.
379
+
380
+ ---
381
+
382
+ ## MapLibre GL JS 6.13.0 extrusion lighting
383
+
384
+ The style-lighting shader in `buildings-3d-shaders.ts` adapts the native fill-extrusion
385
+ lighting equations. The applicable upstream notices follow.
386
+
387
+ Copyright (c) 2023, MapLibre contributors
388
+
389
+ All rights reserved.
390
+
391
+ Redistribution and use in source and binary forms, with or without modification,
392
+ are permitted provided that the following conditions are met:
393
+
394
+ * Redistributions of source code must retain the above copyright notice,
395
+ this list of conditions and the following disclaimer.
396
+ * Redistributions in binary form must reproduce the above copyright notice,
397
+ this list of conditions and the following disclaimer in the documentation
398
+ and/or other materials provided with the distribution.
399
+ * Neither the name of MapLibre GL JS nor the names of its contributors
400
+ may be used to endorse or promote products derived from this software
401
+ without specific prior written permission.
402
+
403
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
404
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
405
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
406
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
407
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
408
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
409
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
410
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
411
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
412
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
413
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
414
+
415
+ ---
416
+
417
+ Contains code from mapbox-gl-js v1.13 and earlier
418
+
419
+ Version v1.13 of mapbox-gl-js and earlier are licensed under a BSD-3-Clause license
420
+
421
+ Copyright (c) 2020, Mapbox
422
+ Redistribution and use in source and binary forms, with or without modification,
423
+ are permitted provided that the following conditions are met:
424
+
425
+ - Redistributions of source code must retain the above copyright notice,
426
+ this list of conditions and the following disclaimer.
427
+ - Redistributions in binary form must reproduce the above copyright notice,
428
+ this list of conditions and the following disclaimer in the documentation
429
+ and/or other materials provided with the distribution.
430
+ - Neither the name of Mapbox GL JS nor the names of its contributors
431
+ may be used to endorse or promote products derived from this software
432
+ without specific prior written permission.
433
+
434
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
435
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
436
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
437
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
438
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
439
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
440
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
441
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
442
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
443
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
444
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/dist/browser.d.ts CHANGED
@@ -509,21 +509,50 @@ declare const tileflowPoiCategories: readonly ["arts-entertainment", "education"
509
509
  type TileflowPoiCategory = (typeof tileflowPoiCategories)[number];
510
510
  type TileflowPoiDensity = 1 | 2 | 3 | 4 | 5;
511
511
  type TileflowPoiColorMode = 'uniform' | 'category';
512
- type TileflowPoiCategoryStyle = Omit<TileflowMarkerSymbolStyle, 'priority'> & {
513
- /** Optional category-local cap within the module's canonical density tiers. */
514
- density?: TileflowPoiDensity;
515
- };
512
+ /**
513
+ * How POI categories are placed against each other. `importance` places every category in one
514
+ * order, by World's ranks. `categories` gives each category its own layer and places the
515
+ * categories in the order they are listed, the first on top; ranks order each category only.
516
+ */
517
+ type TileflowPoiPlacementOrder = 'categories' | 'importance';
518
+ /**
519
+ * The appearance of one POI category. With the default `importance` order every category shares
520
+ * one placement layer, so categories may differ only in properties MapLibre evaluates per feature
521
+ * (image, size, colors, font, offsets); layer-wide properties such as zoom ranges, padding,
522
+ * overlap or `optional` must match, or the module uses `placement.order: 'categories'`.
523
+ */
524
+ type TileflowPoiCategoryStyle = Omit<TileflowMarkerSymbolStyle, 'priority'>;
516
525
  type TileflowPoiModuleConfig = {
517
526
  type: 'poi';
518
527
  categories?: readonly TileflowPoiCategory[];
519
528
  color?: TileflowPoiColorMode;
529
+ /** One density for the whole module: World's ranks decide what each category shows. */
520
530
  density?: TileflowPoiDensity;
521
531
  icons?: boolean;
522
532
  labels?: boolean;
523
533
  minZoom?: number;
524
534
  placement?: {
535
+ /**
536
+ * Places each pictogram with its name as one unit that needs room for both. Defaults to
537
+ * `false`.
538
+ */
525
539
  coupleIconAndLabel?: boolean;
526
540
  iconPadding?: number;
541
+ /**
542
+ * World POI `type` values whose pictogram explains them. When pictograms and names are both
543
+ * drawn, every other POI needs a name, and these types are drawn as a pictogram alone.
544
+ * Defaults to parking and public toilets.
545
+ */
546
+ iconOnlyTypes?: readonly string[];
547
+ /** Defaults to `importance`. */
548
+ order?: TileflowPoiPlacementOrder;
549
+ /**
550
+ * With the `importance` order, POIs whose World `filter_rank` is at most this value are placed
551
+ * before the map's road and place labels, and the others after them. A map that gives street
552
+ * names priority over POIs (labels `collisionPriority: 'navigation'`) keeps its landmarks this
553
+ * way. Unset, every POI is placed at the module's own position.
554
+ */
555
+ prominentRank?: 0 | 1 | 2 | 3 | 4 | 5;
527
556
  textPadding?: number;
528
557
  };
529
558
  styles?: Partial<Record<TileflowPoiCategory, TileflowPoiCategoryStyle>>;
@@ -765,18 +794,57 @@ type TileflowBuildingMode = '3d' | 'flat';
765
794
  * building colour (its extrusion), else its roofs'.
766
795
  */
767
796
  type TileflowBuildingsThreeDimensionalStyle = {
768
- /** How strongly roof outlines and outer corners catch the light, from 0 (none) to 1, the default. */
797
+ /** Use the style's extrusion light (default), or the theme controller's scene sun. */
798
+ lighting?: 'style' | 'sun';
799
+ /** Per-building brightness variation, from 0 to 1; defaults to 0 (authored colour). */
800
+ colorVariation?: TileflowThemeNumberValue;
801
+ /** How strongly roof outlines and outer corners catch the light, from 0 (default) to 1. */
769
802
  edges?: TileflowThemeNumberValue;
770
803
  /** Their own colour, drawn unlit; without it they take the building's colour, lightened. */
771
804
  edgeColor?: TileflowThemeColorValue;
772
- /** How bright the buildings light the street at night, from 0 (none) to 2; defaults to 1. */
805
+ /** How bright the buildings light the street at night, from 0 (none) to 2; defaults to 0. */
773
806
  nightLight?: TileflowThemeNumberValue;
774
- /** Contact shadow at the foot of the walls and in tight corners; defaults to true. */
807
+ /** Contact shadow at the foot of the walls and in tight corners; defaults to false. */
775
808
  occlusion?: boolean;
776
- /** Shadows from the sun, on the buildings and the flat map; defaults to true. */
809
+ /** Shadows from the sun, on the buildings and the flat map; defaults to false. */
777
810
  shadows?: boolean;
778
- /** Invented night windows, lit by rooms: decoration, not data. Defaults to false. */
811
+ /**
812
+ * Invented night windows, lit by rooms: decoration, not data. With World's `class`, none on sheds,
813
+ * barns, factories and churches, and homes lit apart from offices. Defaults to false.
814
+ */
779
815
  windows?: boolean;
816
+ /**
817
+ * Building models the map places in its city, from the glTF binaries in its `models`
818
+ * directories. Each stands in for the buildings under its footprint.
819
+ */
820
+ models?: readonly TileflowBuildingModelPlacementConfig[];
821
+ /** The colours of the models' parts; a part without one takes it from the building colour. */
822
+ modelColors?: Partial<Record<TileflowBuildingModelPart, TileflowThemeColorValue>>;
823
+ /**
824
+ * Tileflow's landmarks, such as the Eiffel Tower, drawn as models in place of the buildings
825
+ * under them. On by default with Tileflow World data; `false` switches them off, and `url` names
826
+ * the TileJSON of another landmarks tileset. The map's own `models` come first: a landmark with
827
+ * the same id as one, or whose footprint meets one's, is not drawn.
828
+ */
829
+ landmarks?: boolean | {
830
+ url: string;
831
+ };
832
+ };
833
+ /** The parts of a building model, as its materials name them. */
834
+ type TileflowBuildingModelPart = 'surface' | 'secondary' | 'glass' | 'accent' | 'roof';
835
+ /** Where a building model stands. */
836
+ type TileflowBuildingModelPlacementConfig = {
837
+ /** The model's id: the name of its `.glb` file in the map's `models` directories. */
838
+ model: string;
839
+ /**
840
+ * The HTTPS address of the model's prepared file when it is served elsewhere, such as a model
841
+ * Tileflow hosts for its own maps; the map then needs no `.glb` of its own for it.
842
+ */
843
+ url?: string;
844
+ /** Longitude and latitude of the model's origin, where it stands on the ground. */
845
+ at: readonly [number, number];
846
+ /** Degrees clockwise from north that the model's own north (its +y) is turned to; defaults to 0. */
847
+ heading?: number;
780
848
  };
781
849
  type TileflowBuildingsModuleOptions = {
782
850
  businessCorridor?: TileflowAreaStyle;
@@ -1026,7 +1094,7 @@ type TileflowVegetation3D = Readonly<{
1026
1094
  */
1027
1095
  declare function readTileflowVegetation3D(metadata: unknown): TileflowVegetation3D | undefined;
1028
1096
 
1029
- type TileflowVegetationMode = '3d' | 'flat';
1097
+ type TileflowVegetationMode = '3d' | 'flat' | 'auto';
1030
1098
  type TileflowVegetationThreeDimensionalStyle = {
1031
1099
  barkColor?: TileflowThemeColorValue;
1032
1100
  /** Sunlit leaf colours of broadleaf trees, from darkest to lightest; up to four are used. */
@@ -1074,7 +1142,12 @@ type TileflowVegetationThreeDimensionalStyle = {
1074
1142
  };
1075
1143
  type TileflowVegetationModuleOptions = {
1076
1144
  flat?: TileflowCircleStyle;
1145
+ /** `3d` uses models at every pitch; `auto` follows the runtime's explicit 2D/3D view mode. */
1077
1146
  mode?: TileflowVegetationMode;
1147
+ /** Representation when a renderer cannot draw models. Defaults to `flat`. */
1148
+ fallback?: 'flat' | 'none';
1149
+ /** Initial visibility; a runtime control may override it. Defaults to true. */
1150
+ visible?: boolean;
1078
1151
  threeDimensional?: TileflowVegetationThreeDimensionalStyle;
1079
1152
  };
1080
1153
  type TileflowVegetationModuleConfig = TileflowVegetationModuleOptions & {
@@ -1084,10 +1157,14 @@ type TileflowVegetationModuleConfig = TileflowVegetationModuleOptions & {
1084
1157
  type TileflowWaterwayClass = 'canal' | 'other' | 'river' | 'stream';
1085
1158
  type TileflowWaterModuleOptions = {
1086
1159
  bathymetry?: TileflowFillStyle;
1087
- /** Opt-in approximate contours traced from discrete bathymetry polygon band edges. */
1160
+ /** Contour lines when declared by Bathymetry; otherwise approximate polygon band edges. */
1088
1161
  bathymetryContours?: TileflowLineStyle;
1089
- /** Opt-in labels for bathymetry polygon band floors, not measured survey soundings. */
1162
+ /** Contour-depth or legacy band-floor labels, not measured survey soundings. */
1090
1163
  bathymetryLabels?: TileflowSymbolStyle;
1164
+ /** Names from an explicitly declared seafloor_landform layer. */
1165
+ bathymetryLandforms?: TileflowSymbolStyle;
1166
+ /** Names from an explicitly declared water_name layer. */
1167
+ bathymetryWaterNames?: TileflowSymbolStyle;
1091
1168
  bodies?: TileflowAreaStyle;
1092
1169
  intermittent?: {
1093
1170
  bodies?: TileflowAreaStyle;
@@ -1310,6 +1387,21 @@ type TileflowLineProgressController = {
1310
1387
  */
1311
1388
  declare function createTileflowLineProgress(map: TileflowLineProgressMap, options: TileflowLineProgressOptions): TileflowLineProgressController;
1312
1389
 
1390
+ /** Bounded, read-only mesh snapshot for developer tooling. Positions are x east, y north, z up. */
1391
+ type TileflowModelInspection = Readonly<{
1392
+ id: string;
1393
+ module: string;
1394
+ format: string;
1395
+ vertices: number;
1396
+ triangles: number;
1397
+ bytes: number;
1398
+ lods: number;
1399
+ instances?: number;
1400
+ positions: number[];
1401
+ indices: number[];
1402
+ colors?: string[];
1403
+ }>;
1404
+
1313
1405
  type TileflowTileAddress = Readonly<{
1314
1406
  z: number;
1315
1407
  x: number;
@@ -1320,7 +1412,11 @@ type TileflowTile = TileflowTileAddress & Readonly<{
1320
1412
  layers: Readonly<Record<string, TileflowTileLayer>>;
1321
1413
  }>;
1322
1414
  /** Rewrites a tile request as a MapLibre map's `transformRequest` does. */
1323
- type TileflowTileRequestTransform = (url: string, resourceType: 'Tile') => Readonly<{
1415
+ type TileflowTileRequestTransform = (url: string, resourceType: 'Tile') => Promise<Readonly<{
1416
+ url: string;
1417
+ headers?: Readonly<Record<string, string>>;
1418
+ credentials?: RequestCredentials;
1419
+ }> | undefined> | Readonly<{
1324
1420
  url: string;
1325
1421
  headers?: Readonly<Record<string, string>>;
1326
1422
  credentials?: RequestCredentials;
@@ -1411,6 +1507,7 @@ type TileflowBuildings3DMap = {
1411
1507
  lng: number;
1412
1508
  };
1413
1509
  getBearing(): number;
1510
+ getLight?(): unknown;
1414
1511
  getLayer(id: string): unknown;
1415
1512
  getPaintProperty(layer: string, name: string): unknown;
1416
1513
  getPitch(): number;
@@ -1447,26 +1544,31 @@ type TileflowBuildings3DOptions = Readonly<{
1447
1544
  type TileflowBuildings3DChange = Readonly<{
1448
1545
  transition?: Readonly<{
1449
1546
  duration?: number;
1547
+ mode?: 'grow' | 'fade';
1450
1548
  }>;
1451
1549
  }>;
1452
1550
  type TileflowBuildings3D = {
1453
- /** Raises the buildings out of the ground; resolves once they stand. */
1551
+ /** Read-only, bounded snapshots of resident prepared model meshes. */
1552
+ inspectModels(): TileflowModelInspection[];
1553
+ /** Shows buildings immediately; pass a transition duration to animate their rise. */
1454
1554
  show(options?: TileflowBuildings3DChange): Promise<void>;
1455
- /** Sinks the buildings back into the flat map; resolves once they are gone. */
1555
+ /** Hides buildings immediately; pass a transition duration to animate their descent. */
1456
1556
  hide(options?: TileflowBuildings3DChange): Promise<void>;
1457
- /** Eases the buildings to `scale` of their height, from 0 (flat) to 1. */
1557
+ /** Sets the height scale, from 0 (flat) to 1; animation requires a transition duration. */
1458
1558
  grow(scale: number, options?: TileflowBuildings3DChange): Promise<void>;
1459
1559
  /** The height scale shown now. */
1460
1560
  readonly scale: number;
1461
1561
  /**
1462
1562
  * Whether the map's style describes its 3D buildings (the buildings module's
1463
- * `threeDimensional`), tiles raised, buildings and vertices, for diagnostics.
1563
+ * `threeDimensional`), tiles raised, buildings and vertices, and the placed models standing, for
1564
+ * diagnostics.
1464
1565
  */
1465
1566
  readonly stats: Readonly<{
1466
1567
  declared: boolean;
1467
1568
  tiles: number;
1468
1569
  buildings: number;
1469
1570
  vertices: number;
1571
+ models: number;
1470
1572
  }>;
1471
1573
  /** Takes the layer off the map and lets go of its buffers. */
1472
1574
  dispose(): void;
@@ -1493,6 +1595,12 @@ type TileflowBuildingMeshOptions = Readonly<{
1493
1595
  * the building its use.
1494
1596
  */
1495
1597
  places?: TileflowTileLayer;
1598
+ /**
1599
+ * Footprints of the building models standing here, as rings of tile units (0 to 8192): a
1600
+ * building whose centre falls inside one, or that reaches more than half a metre into one, is not
1601
+ * raised, since the model stands in for it.
1602
+ */
1603
+ masks?: readonly (readonly number[])[];
1496
1604
  }>;
1497
1605
  /** One tile's buildings, ready to upload. */
1498
1606
  type TileflowBuildingMesh = Readonly<{
@@ -1507,12 +1615,13 @@ type TileflowBuildingMesh = Readonly<{
1507
1615
  }>;
1508
1616
  /**
1509
1617
  * Meshes the buildings of one decoded tile layer, or returns undefined when it has none. It reads
1510
- * World's `render_height`, `render_min_height`, `hide_3d`, `building_tone` and `night_use`. Vertex layout:
1618
+ * World's `render_height`, `render_min_height`, `hide_3d`, `building_tone`, `class` and `night_use`.
1619
+ * Vertex layout:
1511
1620
  * 0 position in the tile, 0 to 8192 (uint16 ×2); 4 base and top in decimetres (uint16 ×2); 8 the
1512
1621
  * wall's outward normal (int8 ×2, normalised); 10 raised to the top, part of a wall (uint8 ×2);
1513
1622
  * 12 decimetres along the wall (uint16); 14 a per-building jitter and seed (uint8 ×2, normalised);
1514
- * 16 the building's centre in the tile (uint16 ×2); 20 tone and night use (uint8 ×2: none, dining,
1515
- * entertainment, nightlife); 22 the wall's
1623
+ * 16 the building's centre in the tile (uint16 ×2); 20 tone plus four times its class group, and
1624
+ * night use (uint8 ×2: none, dining, entertainment, nightlife); 22 the wall's
1516
1625
  * tight corners, bit 0 at its start and bit 1 at its end, and bit 2 when it faces a courtyard, and
1517
1626
  * its length in metres up to 255
1518
1627
  * (uint8 ×2); 24 the building's feature index (uint16); 26 on a roof, the vertex's corner of its
@@ -1590,6 +1699,16 @@ declare const tileflowStreetLightsLayerId = "tileflow-street-lights";
1590
1699
  */
1591
1700
  declare function createTileflowStreetLights(options: TileflowStreetLightsOptions): TileflowStreetLights;
1592
1701
 
1702
+ /** The parts of a model, each coloured by the theme: the model's materials name them. */
1703
+ declare const tileflowModelParts: Readonly<{
1704
+ surface: 0;
1705
+ secondary: 1;
1706
+ glass: 2;
1707
+ accent: 3;
1708
+ roof: 4;
1709
+ }>;
1710
+ type TileflowModelPart = keyof typeof tileflowModelParts;
1711
+
1593
1712
  /** The style metadata key under which a compiled map describes its 3D buildings. */
1594
1713
  declare const tileflowBuildingsMetadataKey = "tileflow:buildings";
1595
1714
  /** A compiled map's 3D buildings, resolved for one theme. */
@@ -1607,6 +1726,12 @@ type TileflowBuildings3DDesign = Readonly<{
1607
1726
  color: string | readonly unknown[];
1608
1727
  /** How strongly roof outlines and outer corners catch the light, from 0 to 1. */
1609
1728
  edges: number;
1729
+ /** Style extrusion light by default; scene sun lighting is opt-in. */
1730
+ lighting: 'style' | 'sun';
1731
+ /** Per-building brightness variation, from 0 to 1; 0 preserves the authored colour. */
1732
+ colorVariation: number;
1733
+ /** The authored extrusion's vertical wall gradient. */
1734
+ verticalGradient: boolean;
1610
1735
  /** Their own colour, drawn unlit; without it they take the building's colour, lightened. */
1611
1736
  edgeColor?: string;
1612
1737
  /** How bright the buildings light the street at night, from 0 to 2. */
@@ -1616,12 +1741,36 @@ type TileflowBuildings3DDesign = Readonly<{
1616
1741
  /** Shadows from the sun, and contact shadow at the foot of the walls. */
1617
1742
  shadows: boolean;
1618
1743
  occlusion: boolean;
1744
+ /** Building models the map places in its city, each replacing the buildings under it. */
1745
+ models?: readonly TileflowBuildingModelPlacement[];
1746
+ /** The colours of the models' parts; a part without one takes it from the building colour. */
1747
+ modelColors?: Readonly<Partial<Record<TileflowModelPart, string>>>;
1748
+ /**
1749
+ * Tileflow's landmarks, drawn as models in place of the buildings under them: the TileJSON of
1750
+ * their tileset. Without it, the map shows none.
1751
+ */
1752
+ landmarks?: Readonly<{
1753
+ url: string;
1754
+ }>;
1755
+ }>;
1756
+ /** A building model standing in the map's city. */
1757
+ type TileflowBuildingModelPlacement = Readonly<{
1758
+ /** The model's id, its file's name in the map's `models` directories. */
1759
+ model: string;
1760
+ /** Where the prepared model file is served, absolute or relative to the page. */
1761
+ url: string;
1762
+ /** Longitude and latitude of the model's origin, where it stands on the ground. */
1763
+ at: readonly [number, number];
1764
+ /** Degrees clockwise from north that the model's own north is turned to. */
1765
+ heading: number;
1619
1766
  }>;
1620
1767
  /**
1621
1768
  * Reads the 3D buildings a compiled style describes, or undefined when its metadata has none or a
1622
1769
  * version or shape this Core does not know.
1623
1770
  */
1624
1771
  declare function readTileflowBuildings3D(metadata: unknown): TileflowBuildings3DDesign | undefined;
1772
+ /** The most models one map places. */
1773
+ declare const tileflowBuildingModelPlacementLimit = 256;
1625
1774
 
1626
1775
  /** The MapLibre GL JS map capabilities the trees use. */
1627
1776
  type TileflowTrees3DMap = {
@@ -1666,6 +1815,8 @@ type TileflowTrees3DOptions = Readonly<{
1666
1815
  beforeId?: string;
1667
1816
  /** The map's request rules, for the tiles the layer reads. */
1668
1817
  transformRequest?: TileflowTileRequestTransform;
1818
+ /** Let a vegetation controller own flat-layer visibility. Defaults to true. */
1819
+ manageFlatLayers?: boolean;
1669
1820
  }>;
1670
1821
  type TileflowTrees3DChange = Readonly<{
1671
1822
  transition?: Readonly<{
@@ -1673,6 +1824,8 @@ type TileflowTrees3DChange = Readonly<{
1673
1824
  }>;
1674
1825
  }>;
1675
1826
  type TileflowTrees3D = {
1827
+ /** Read-only snapshots of the meshes used by the active vegetation palette. */
1828
+ inspectModels(): TileflowModelInspection[];
1676
1829
  /** Grows the trees out of the ground; resolves once they stand. */
1677
1830
  show(options?: TileflowTrees3DChange): Promise<void>;
1678
1831
  /** Sinks the trees back into the ground; resolves once they are gone. */
@@ -2042,6 +2195,50 @@ declare const tileflowPmtilesProtocol: "tileflow-pmtiles";
2042
2195
  /** Register only Tileflow's managed PMTiles namespace. Third-party `pmtiles://` remains untouched. */
2043
2196
  declare function registerTileflowPmtilesProtocol(registry: TileflowPmtilesProtocolRegistry, options?: TileflowPmtilesProtocolRegistrationOptions): void;
2044
2197
 
2198
+ type TileflowViewMode = '2d' | '3d';
2199
+ type TileflowVegetationRepresentation = 'none' | 'flat' | '3d';
2200
+ declare const tileflowVegetationDisplayMetadataKey = "tileflow:vegetation-display";
2201
+ /** Display policy, separate from the models' design and the camera's pitch. */
2202
+ type TileflowVegetationDisplay = Readonly<{
2203
+ version: 1;
2204
+ mode: TileflowVegetationMode;
2205
+ fallback: 'flat' | 'none';
2206
+ visible: boolean;
2207
+ /** Authored visibility before the compiler applies the static fallback. */
2208
+ flatLayers: readonly Readonly<{
2209
+ id: string;
2210
+ visible: boolean;
2211
+ }>[];
2212
+ }>;
2213
+ declare function readTileflowVegetationDisplay(metadata: unknown): TileflowVegetationDisplay | undefined;
2214
+ declare function resolveTileflowVegetationRepresentation(policy: TileflowVegetationDisplay | undefined, options: {
2215
+ visible?: boolean | undefined;
2216
+ viewMode?: TileflowViewMode;
2217
+ supports3D: boolean;
2218
+ }): TileflowVegetationRepresentation;
2219
+
2220
+ type TileflowVegetationOptions = Omit<TileflowTrees3DOptions, 'manageFlatLayers' | 'map'> & {
2221
+ map: TileflowTrees3DOptions['map'] & {
2222
+ getCanvas?(): HTMLCanvasElement;
2223
+ };
2224
+ /** Overrides the map's visibility. Undefined restores the authored default. */
2225
+ visible?: boolean | undefined;
2226
+ /** Explicit application view mode, independent of pitch and building visibility. Defaults to 2d. */
2227
+ viewMode?: TileflowViewMode;
2228
+ };
2229
+ type TileflowVegetationController = {
2230
+ inspectModels: TileflowTrees3D['inspectModels'];
2231
+ setVisible(visible: boolean | undefined): void;
2232
+ setViewMode(mode: TileflowViewMode): void;
2233
+ /** Reapplies the policy after application layer controls change. */
2234
+ refresh(): void;
2235
+ readonly representation: TileflowVegetationRepresentation;
2236
+ readonly stats: TileflowTrees3D['stats'] | undefined;
2237
+ dispose(): void;
2238
+ };
2239
+ /** Mount once per map. OFF hides every representation; mode selects how enabled trees are drawn. */
2240
+ declare function createTileflowVegetation(options: TileflowVegetationOptions): TileflowVegetationController;
2241
+
2045
2242
  type TileflowMapReadinessState = 'error' | 'idle' | 'loading';
2046
2243
  /** Read the browser preference without persisting or mutating user state. */
2047
2244
  declare function getTileflowSystemColorScheme(): TileflowRuntimeColorScheme;
@@ -2279,4 +2476,4 @@ declare function createTileflowTransformRequest<TRequest extends TileflowTransfo
2279
2476
  worldRequestBridge?: TileflowWorldRequestBridge;
2280
2477
  }): TileflowTransformRequest<TRequest, TResourceType>;
2281
2478
 
2282
- export { type TileflowAtmosphereMap, type TileflowBrowserThemeBlendSelection, type TileflowBuildingMesh, type TileflowBuildingMeshOptions, type TileflowBuildings3D, type TileflowBuildings3DChange, type TileflowBuildings3DDesign, type TileflowBuildings3DMap, type TileflowBuildings3DOptions, type TileflowBuildings3DThemes, type TileflowComposedRequest, type TileflowContourProtocolHandler, type TileflowContourProtocolRegistrationOptions, type TileflowContourProtocolRegistry, type TileflowContourProtocolRequest, type TileflowContourProtocolResponse, type TileflowDepthMarker, type TileflowDepthMarkerHandle, type TileflowDepthMarkerMap, type TileflowDepthMarkers, type TileflowDepthMarkersOptions, type TileflowDynamicImage, type TileflowDynamicImageContext, type TileflowDynamicImageHandle, type TileflowEmphasis, type TileflowEmphasisArea, type TileflowEmphasisModule, type TileflowFairUseNotice, type TileflowFairUseNoticeController, type TileflowFairUseNoticeState, type TileflowFrameScheduler, type TileflowGroundLayer, type TileflowGroundLayers, type TileflowGroundLayersMap, type TileflowGroundLayersOptions, type TileflowGroundOrderMap, type TileflowLineProgressAnimation, type TileflowLineProgressController, type TileflowLineProgressGradientOptions, type TileflowLineProgressLayer, type TileflowLineProgressMap, type TileflowLineProgressOptions, type TileflowLineProgressShown, type TileflowLineProgressState, type TileflowMapLifecycleAttachment, type TileflowMapLifecycleEvent, type TileflowMapLifecycleSubscriber, type TileflowMapReadinessState, type TileflowPmtilesProtocolHandler, type TileflowPmtilesProtocolRegistrationOptions, type TileflowPmtilesProtocolRegistry, type TileflowRouteInks, type TileflowSessionSender, type TileflowSessionStarter, type TileflowShotCamera, type TileflowShotCue, type TileflowShotKeyframe, type TileflowShotMotion, type TileflowShotPlayback, type TileflowShotPlaybackOptions, type TileflowShotPlayerMap, type TileflowShotState, type TileflowStreetLightEstimate, type TileflowStreetLightLayers, type TileflowStreetLightPlacement, type TileflowStreetLightPlacementOptions, type TileflowStreetLights, type TileflowStreetLightsDesign, type TileflowStreetLightsMap, type TileflowStreetLightsOptions, type TileflowStyleFontLoadOptions, type TileflowStyleStateValue, type TileflowStyleSwitchMap, type TileflowSun, type TileflowSunPreset, type TileflowSunRequest, type TileflowThemeBlendRequest, type TileflowThemeBlendState, type TileflowThemeChangeOptions, type TileflowThemeController, type TileflowThemeTransition, type TileflowThemeTransitionOptions, type TileflowThemeTransitionPhase, type TileflowThemeTransitionResult, type TileflowTile, type TileflowTileAddress, type TileflowTileAreaRequest, type TileflowTileFeature, type TileflowTileGeometryType, type TileflowTileLayer, type TileflowTileReader, type TileflowTileReaderOptions, type TileflowTileRequestTransform, type TileflowTileSourceMap, type TileflowTransformRequest, type TileflowTransformRequestParameters, type TileflowTreeFields, type TileflowTreeForm, type TileflowTreeFormMix, type TileflowTreeFormRange, type TileflowTreeLayers, type TileflowTreePlacement, type TileflowTreePlacementOptions, type TileflowTreeRange, type TileflowTreeRegion, type TileflowTrees3D, type TileflowTrees3DChange, type TileflowTrees3DMap, type TileflowTrees3DOptions, type TileflowTrees3DThemes, type TileflowUserTransformRequest, type TileflowVectorTileDecodeOptions, type TileflowVegetation3D, type TileflowWorldProtocolHandler, type TileflowWorldProtocolRequest, type TileflowWorldProtocolResponse, type TileflowWorldRequestBridge, attachTileflowAtmosphere, attachTileflowFairUseNotice, attachTileflowMapLifecycle, createTileflowBuildings3D, createTileflowDepthMarkers, createTileflowGroundLayers, createTileflowLineProgress, createTileflowSessionStarter, createTileflowStreetLights, createTileflowThemeController, createTileflowTileReader, createTileflowTransformRequest, createTileflowTrees3D, decodeTileflowVectorTile, getTileflowSystemColorScheme, loadTileflowStyleFonts, meshTileflowBuildings, mixTileflowRouteInks, mixTileflowSunPresets, placeTileflowStreetLights, placeTileflowTrees, playTileflowShot, readTileflowBuildings3D, readTileflowMapTileSource, readTileflowRouteInks, readTileflowStreetLights, readTileflowSunPreset, readTileflowVegetation3D, registerTileflowContourProtocol, registerTileflowPmtilesProtocol, registerTileflowWorldRequestBridge, resolveTileflowSun, subscribeTileflowSystemColorScheme, tileflowBuildingExtent, tileflowBuildingVertexBytes, tileflowBuildings3DLayerId, tileflowBuildingsMetadataKey, tileflowDefaultRouteInks, tileflowDefaultSunPreset, tileflowDepthMarkerPlacement, tileflowFairUseNoticeMessage, tileflowGroundBeforeId, tileflowLayerDomainMetadataKey, tileflowLineProgressGradient, tileflowMaplibreContourVersion, tileflowPmtilesMaximumDirectoryDepth, tileflowPmtilesProtocol, tileflowRouteMetadataKey, tileflowShotStateAt, tileflowStreetLightBytes, tileflowStreetLightsLayerId, tileflowStreetLightsMetadataKey, tileflowStyleRouteInks, tileflowStyleSunPreset, tileflowSunDirection, tileflowSunLightMatrix, tileflowSunMetadataKey, tileflowSunPosition, tileflowTilePointToLngLat, tileflowTilesForBounds, tileflowTreeBytes, tileflowTreeFormOf, tileflowTreeForms, tileflowTrees3DLayerId, tileflowVegetationMetadataKey, validateTileflowBrowserThemeBlendSelection, validateTileflowEmphasis };
2479
+ export { type TileflowAtmosphereMap, type TileflowBrowserThemeBlendSelection, type TileflowBuildingMesh, type TileflowBuildingMeshOptions, type TileflowBuildingModelPlacement, type TileflowBuildings3D, type TileflowBuildings3DChange, type TileflowBuildings3DDesign, type TileflowBuildings3DMap, type TileflowBuildings3DOptions, type TileflowBuildings3DThemes, type TileflowComposedRequest, type TileflowContourProtocolHandler, type TileflowContourProtocolRegistrationOptions, type TileflowContourProtocolRegistry, type TileflowContourProtocolRequest, type TileflowContourProtocolResponse, type TileflowDepthMarker, type TileflowDepthMarkerHandle, type TileflowDepthMarkerMap, type TileflowDepthMarkers, type TileflowDepthMarkersOptions, type TileflowDynamicImage, type TileflowDynamicImageContext, type TileflowDynamicImageHandle, type TileflowEmphasis, type TileflowEmphasisArea, type TileflowEmphasisModule, type TileflowFairUseNotice, type TileflowFairUseNoticeController, type TileflowFairUseNoticeState, type TileflowFrameScheduler, type TileflowGroundLayer, type TileflowGroundLayers, type TileflowGroundLayersMap, type TileflowGroundLayersOptions, type TileflowGroundOrderMap, type TileflowLineProgressAnimation, type TileflowLineProgressController, type TileflowLineProgressGradientOptions, type TileflowLineProgressLayer, type TileflowLineProgressMap, type TileflowLineProgressOptions, type TileflowLineProgressShown, type TileflowLineProgressState, type TileflowMapLifecycleAttachment, type TileflowMapLifecycleEvent, type TileflowMapLifecycleSubscriber, type TileflowMapReadinessState, type TileflowPmtilesProtocolHandler, type TileflowPmtilesProtocolRegistrationOptions, type TileflowPmtilesProtocolRegistry, type TileflowRouteInks, type TileflowSessionSender, type TileflowSessionStarter, type TileflowShotCamera, type TileflowShotCue, type TileflowShotKeyframe, type TileflowShotMotion, type TileflowShotPlayback, type TileflowShotPlaybackOptions, type TileflowShotPlayerMap, type TileflowShotState, type TileflowStreetLightEstimate, type TileflowStreetLightLayers, type TileflowStreetLightPlacement, type TileflowStreetLightPlacementOptions, type TileflowStreetLights, type TileflowStreetLightsDesign, type TileflowStreetLightsMap, type TileflowStreetLightsOptions, type TileflowStyleFontLoadOptions, type TileflowStyleStateValue, type TileflowStyleSwitchMap, type TileflowSun, type TileflowSunPreset, type TileflowSunRequest, type TileflowThemeBlendRequest, type TileflowThemeBlendState, type TileflowThemeChangeOptions, type TileflowThemeController, type TileflowThemeTransition, type TileflowThemeTransitionOptions, type TileflowThemeTransitionPhase, type TileflowThemeTransitionResult, type TileflowTile, type TileflowTileAddress, type TileflowTileAreaRequest, type TileflowTileFeature, type TileflowTileGeometryType, type TileflowTileLayer, type TileflowTileReader, type TileflowTileReaderOptions, type TileflowTileRequestTransform, type TileflowTileSourceMap, type TileflowTransformRequest, type TileflowTransformRequestParameters, type TileflowTreeFields, type TileflowTreeForm, type TileflowTreeFormMix, type TileflowTreeFormRange, type TileflowTreeLayers, type TileflowTreePlacement, type TileflowTreePlacementOptions, type TileflowTreeRange, type TileflowTreeRegion, type TileflowTrees3D, type TileflowTrees3DChange, type TileflowTrees3DMap, type TileflowTrees3DOptions, type TileflowTrees3DThemes, type TileflowUserTransformRequest, type TileflowVectorTileDecodeOptions, type TileflowVegetation3D, type TileflowVegetationController, type TileflowVegetationDisplay, type TileflowVegetationOptions, type TileflowVegetationRepresentation, type TileflowViewMode, type TileflowWorldProtocolHandler, type TileflowWorldProtocolRequest, type TileflowWorldProtocolResponse, type TileflowWorldRequestBridge, attachTileflowAtmosphere, attachTileflowFairUseNotice, attachTileflowMapLifecycle, createTileflowBuildings3D, createTileflowDepthMarkers, createTileflowGroundLayers, createTileflowLineProgress, createTileflowSessionStarter, createTileflowStreetLights, createTileflowThemeController, createTileflowTileReader, createTileflowTransformRequest, createTileflowTrees3D, createTileflowVegetation, decodeTileflowVectorTile, getTileflowSystemColorScheme, loadTileflowStyleFonts, meshTileflowBuildings, mixTileflowRouteInks, mixTileflowSunPresets, placeTileflowStreetLights, placeTileflowTrees, playTileflowShot, readTileflowBuildings3D, readTileflowMapTileSource, readTileflowRouteInks, readTileflowStreetLights, readTileflowSunPreset, readTileflowVegetation3D, readTileflowVegetationDisplay, registerTileflowContourProtocol, registerTileflowPmtilesProtocol, registerTileflowWorldRequestBridge, resolveTileflowSun, resolveTileflowVegetationRepresentation, subscribeTileflowSystemColorScheme, tileflowBuildingExtent, tileflowBuildingModelPlacementLimit, tileflowBuildingVertexBytes, tileflowBuildings3DLayerId, tileflowBuildingsMetadataKey, tileflowDefaultRouteInks, tileflowDefaultSunPreset, tileflowDepthMarkerPlacement, tileflowFairUseNoticeMessage, tileflowGroundBeforeId, tileflowLayerDomainMetadataKey, tileflowLineProgressGradient, tileflowMaplibreContourVersion, tileflowPmtilesMaximumDirectoryDepth, tileflowPmtilesProtocol, tileflowRouteMetadataKey, tileflowShotStateAt, tileflowStreetLightBytes, tileflowStreetLightsLayerId, tileflowStreetLightsMetadataKey, tileflowStyleRouteInks, tileflowStyleSunPreset, tileflowSunDirection, tileflowSunLightMatrix, tileflowSunMetadataKey, tileflowSunPosition, tileflowTilePointToLngLat, tileflowTilesForBounds, tileflowTreeBytes, tileflowTreeFormOf, tileflowTreeForms, tileflowTrees3DLayerId, tileflowVegetationDisplayMetadataKey, tileflowVegetationMetadataKey, validateTileflowBrowserThemeBlendSelection, validateTileflowEmphasis };