@tileflow/maps 0.1.0-alpha.6 → 0.1.0-alpha.8

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 (3) hide show
  1. package/README.md +3 -10
  2. package/dist/index.js +54 -108
  3. package/package.json +4 -4
package/README.md CHANGED
@@ -66,9 +66,8 @@ to create an application-owned map.
66
66
  ### Blueprint naming
67
67
 
68
68
  Use `blueprint` and `blueprintIcons` for the architectural drawing map. Its map ID and
69
- asset directory are `blueprint`, its theme key is `blueprint`, and its theme ID is `blueprint-dark`.
70
- The earlier `sanFrancisto` and `sanFrancistoIcons` aliases have been removed. Migrate explicit
71
- `san-francisto` resource references to `blueprint`; the former grid ID is now `blueprint-grid`.
69
+ asset directory are `blueprint`, its theme key is `blueprint`, its theme ID is `blueprint-dark`,
70
+ and its grid artwork ID is `blueprint-grid`.
72
71
 
73
72
  <!-- docs:check -->
74
73
 
@@ -88,17 +87,11 @@ export default defineMap({
88
87
 
89
88
  Cyberpunk, Terminal, and Super Tile World are maintained in
90
89
  [Tileflow Community Maps](https://github.com/tileflow/community-maps), with editable source,
91
- assets, previews, and contribution instructions. They are no longer included in this package.
90
+ assets, previews, and contribution instructions. They are not part of this package.
92
91
  The GitHub-distributed `@tileflow/community-maps` package exports `cyberpunk`, `terminal`, and
93
92
  `superTileWorld`, plus each map's font and icon descriptors. Install an exact Git commit using
94
93
  the instructions and compatible Core version in that repository.
95
94
 
96
- For existing applications, move imports to `@tileflow/community-maps`, rename `matrix` to
97
- `terminal`, and update explicit map and asset IDs. Cyberpunk uses the `cyberpunk-` asset prefix;
98
- Terminal uses `terminal-`. Super Tile World retains `super-tile-world` and its `stw-` artwork IDs.
99
- The earlier community `neonGrid` export is now `cyberpunk`. This is an explicit catalog migration;
100
- there are no compatibility snapshots or aliases for the removed maps in the SDK.
101
-
102
95
  Soundings is not a navigation product. Its depth-band edges are approximate reference geometry,
103
96
  not surveyed isolines or vessel-specific safety contours. Experimental nautical aids and hazards
104
97
  are not enabled by that official map.
package/dist/index.js CHANGED
@@ -561,9 +561,8 @@ function landcoverPattern(target, pattern, classes, options = {}) {
561
561
  } : classSelector;
562
562
  const minZoom = options.minZoom ?? 9;
563
563
  return renderPass({
564
- attachTo: target,
564
+ placement: { above: target },
565
565
  feature: "landcover",
566
- phase: "overlay",
567
566
  renderer: "fill",
568
567
  selector,
569
568
  style: {
@@ -578,9 +577,8 @@ function landcoverPattern(target, pattern, classes, options = {}) {
578
577
  }
579
578
  function landusePattern(target, pattern, classes, minZoom, opacity) {
580
579
  return renderPass({
581
- attachTo: target,
580
+ placement: { above: target },
582
581
  feature: "landuse",
583
- phase: "overlay",
584
582
  renderer: "fill",
585
583
  selector: { field: "class", kind: "in", values: classes },
586
584
  style: {
@@ -872,9 +870,8 @@ var baedeker = bindOfficialMapTheme(
872
870
  }),
873
871
  {
874
872
  engravedBlocks: renderPass({
875
- attachTo: "buildings.flat.fill",
873
+ placement: { above: "buildings.flat.fill" },
876
874
  feature: "building",
877
- phase: "overlay",
878
875
  renderer: "fill",
879
876
  style: {
880
877
  minZoom: 14,
@@ -1503,7 +1500,6 @@ var baedeker = bindOfficialMapTheme(
1503
1500
  strokeOpacity: 0.78,
1504
1501
  strokeWidth: 0.8
1505
1502
  },
1506
- minZoom: 15,
1507
1503
  mode: "flat"
1508
1504
  }),
1509
1505
  water: withRenderStack(
@@ -1573,9 +1569,8 @@ var baedeker = bindOfficialMapTheme(
1573
1569
  }),
1574
1570
  {
1575
1571
  printLines: renderPass({
1576
- attachTo: "water.bodies.fill",
1572
+ placement: { above: "water.bodies.fill" },
1577
1573
  feature: "water",
1578
- phase: "overlay",
1579
1574
  renderer: "fill",
1580
1575
  selector: {
1581
1576
  coerce: "number",
@@ -1596,9 +1591,8 @@ var baedeker = bindOfficialMapTheme(
1596
1591
  }
1597
1592
  }),
1598
1593
  intermittentPrintLines: renderPass({
1599
- attachTo: "water.intermittent.bodies.fill",
1594
+ placement: { above: "water.intermittent.bodies.fill" },
1600
1595
  feature: "water",
1601
- phase: "overlay",
1602
1596
  renderer: "fill",
1603
1597
  selector: {
1604
1598
  coerce: "number",
@@ -1866,9 +1860,8 @@ var prominentBuildingSelector = {
1866
1860
  };
1867
1861
  function technicalLandPattern(target, feature, pattern, selector, minZoom, opacity) {
1868
1862
  return renderPass2({
1869
- attachTo: target,
1863
+ placement: { above: target },
1870
1864
  feature,
1871
- phase: "overlay",
1872
1865
  renderer: "fill",
1873
1866
  selector,
1874
1867
  style: {
@@ -2209,9 +2202,8 @@ var blueprint = bindOfficialMapTheme(
2209
2202
  }),
2210
2203
  {
2211
2204
  footprintHatch: renderPass2({
2212
- attachTo: "buildings.flat.fill",
2205
+ placement: { above: "buildings.flat.fill" },
2213
2206
  feature: "building",
2214
- phase: "overlay",
2215
2207
  renderer: "fill",
2216
2208
  // A section hatch is reserved for the few footprints that carry
2217
2209
  // architectural emphasis; ordinary building fills remain quiet.
@@ -2227,9 +2219,8 @@ var blueprint = bindOfficialMapTheme(
2227
2219
  }
2228
2220
  }),
2229
2221
  measuredEdge: renderPass2({
2230
- attachTo: "buildings.flat.outline",
2222
+ placement: { above: "buildings.flat.outline" },
2231
2223
  feature: "building",
2232
- phase: "overlay",
2233
2224
  renderer: "line",
2234
2225
  selector: { geometry: "polygon", kind: "geometry" },
2235
2226
  style: {
@@ -2248,9 +2239,8 @@ var blueprint = bindOfficialMapTheme(
2248
2239
  }
2249
2240
  }),
2250
2241
  prominentOutline: renderPass2({
2251
- attachTo: "buildings.render.measuredEdge",
2242
+ placement: { above: "buildings.render.measuredEdge" },
2252
2243
  feature: "building",
2253
- phase: "overlay",
2254
2244
  renderer: "line",
2255
2245
  selector: prominentBuildingSelector,
2256
2246
  style: {
@@ -2270,9 +2260,8 @@ var blueprint = bindOfficialMapTheme(
2270
2260
  }
2271
2261
  }),
2272
2262
  heightAnnotations: renderPass2({
2273
- attachTo: "buildings.render.prominentOutline",
2263
+ placement: { above: "buildings.render.prominentOutline" },
2274
2264
  feature: "building",
2275
- phase: "annotation",
2276
2265
  renderer: "symbol",
2277
2266
  selector: {
2278
2267
  kind: "all",
@@ -2828,9 +2817,8 @@ var blueprint = bindOfficialMapTheme(
2828
2817
  }),
2829
2818
  {
2830
2819
  architecturalCallouts: renderPass2({
2831
- attachTo: "poi.visitor-amenity.label",
2820
+ placement: { above: "poi.visitor-amenity.label" },
2832
2821
  feature: "poi",
2833
- phase: "annotation",
2834
2822
  renderer: "symbol",
2835
2823
  selector: {
2836
2824
  kind: "all",
@@ -3099,9 +3087,8 @@ var blueprint = bindOfficialMapTheme(
3099
3087
  }),
3100
3088
  {
3101
3089
  majorRoadCenterline: renderPass2({
3102
- attachTo: "roads.classes.motorway.surface.fill",
3090
+ placement: { above: "roads.classes.motorway.surface.fill" },
3103
3091
  feature: "road",
3104
- phase: "overlay",
3105
3092
  renderer: "line",
3106
3093
  selector: {
3107
3094
  kind: "all",
@@ -3238,7 +3225,6 @@ var blueprint = bindOfficialMapTheme(
3238
3225
  strokeOpacity: 0.58,
3239
3226
  strokeWidth: 0.55
3240
3227
  },
3241
- minZoom: 16,
3242
3228
  mode: "flat"
3243
3229
  }),
3244
3230
  water: withRenderStack2(
@@ -3311,9 +3297,8 @@ var blueprint = bindOfficialMapTheme(
3311
3297
  }),
3312
3298
  {
3313
3299
  waterHatch: renderPass2({
3314
- attachTo: "water.bodies.fill",
3300
+ placement: { above: "water.bodies.fill" },
3315
3301
  feature: "water",
3316
- phase: "overlay",
3317
3302
  renderer: "fill",
3318
3303
  selector: {
3319
3304
  coerce: "number",
@@ -3334,9 +3319,8 @@ var blueprint = bindOfficialMapTheme(
3334
3319
  }
3335
3320
  }),
3336
3321
  intermittentWaterHatch: renderPass2({
3337
- attachTo: "water.intermittent.bodies.fill",
3322
+ placement: { above: "water.intermittent.bodies.fill" },
3338
3323
  feature: "water",
3339
- phase: "overlay",
3340
3324
  renderer: "fill",
3341
3325
  selector: {
3342
3326
  coerce: "number",
@@ -3537,11 +3521,10 @@ function destination(image, minZoom, color, featured = false, role = "caption")
3537
3521
  }
3538
3522
  };
3539
3523
  }
3540
- function texture(attachTo, feature, selector, pattern, minZoom, opacity) {
3524
+ function texture(above, feature, selector, pattern, minZoom, opacity) {
3541
3525
  return renderPass3({
3542
- attachTo,
3543
3526
  feature,
3544
- phase: "overlay",
3527
+ placement: { above },
3545
3528
  renderer: "fill",
3546
3529
  selector,
3547
3530
  style: {
@@ -3862,8 +3845,7 @@ var civica = bindOfficialMapTheme(
3862
3845
  0.15
3863
3846
  ),
3864
3847
  paperGrain: renderPass3({
3865
- attachTo: "land.background",
3866
- phase: "overlay",
3848
+ placement: { above: "land.background" },
3867
3849
  renderer: "background",
3868
3850
  style: { pattern: "civica-paper-grain", opacity: 0.12 }
3869
3851
  })
@@ -3918,9 +3900,8 @@ var civica = bindOfficialMapTheme(
3918
3900
  }),
3919
3901
  {
3920
3902
  waterLines: renderPass3({
3921
- attachTo: "water.bodies.fill",
3903
+ placement: { above: "water.bodies.fill" },
3922
3904
  feature: "water",
3923
- phase: "overlay",
3924
3905
  renderer: "fill",
3925
3906
  style: {
3926
3907
  pattern: "civica-water-lines",
@@ -3949,9 +3930,8 @@ var civica = bindOfficialMapTheme(
3949
3930
  // Core's ordinary building deck begins at z15. This separate plate lets
3950
3931
  // available generalized footprints describe the city at district scales.
3951
3932
  districtFootprints: renderPass3({
3952
- attachTo: "buildings.flat.fill",
3933
+ placement: { below: "buildings.flat.fill" },
3953
3934
  feature: "building",
3954
- phase: "underlay",
3955
3935
  renderer: "fill",
3956
3936
  selector: { kind: "geometry", geometry: "polygon" },
3957
3937
  style: {
@@ -4375,9 +4355,9 @@ var civica = bindOfficialMapTheme(
4375
4355
  ),
4376
4356
  vegetation: vegetation3({
4377
4357
  mode: "flat",
4378
- minZoom: 19,
4379
4358
  flat: {
4380
4359
  color: ink.greenInk,
4360
+ minZoom: 19,
4381
4361
  opacity: 0.5,
4382
4362
  radius: zoom3.linear([
4383
4363
  [19, 1.2],
@@ -4587,9 +4567,8 @@ function landcoverPattern2(target, pattern, classes, options = {}) {
4587
4567
  } : classSelector;
4588
4568
  const minZoom = options.minZoom ?? 9;
4589
4569
  return renderPass4({
4590
- attachTo: target,
4570
+ placement: { above: target },
4591
4571
  feature: "landcover",
4592
- phase: "overlay",
4593
4572
  renderer: "fill",
4594
4573
  selector,
4595
4574
  style: {
@@ -4604,9 +4583,8 @@ function landcoverPattern2(target, pattern, classes, options = {}) {
4604
4583
  }
4605
4584
  function landusePattern2(target, pattern, classes, minZoom, opacity) {
4606
4585
  return renderPass4({
4607
- attachTo: target,
4586
+ placement: { above: target },
4608
4587
  feature: "landuse",
4609
- phase: "overlay",
4610
4588
  renderer: "fill",
4611
4589
  selector: { field: "class", kind: "in", values: classes },
4612
4590
  style: {
@@ -4870,9 +4848,8 @@ var ferraris = bindOfficialMapTheme(
4870
4848
  }),
4871
4849
  {
4872
4850
  printShadow: renderPass4({
4873
- attachTo: "buildings.flat.fill",
4851
+ placement: { below: "buildings.flat.fill" },
4874
4852
  feature: "building",
4875
- phase: "underlay",
4876
4853
  renderer: "fill",
4877
4854
  style: {
4878
4855
  color: ferrarisPalette.ink,
@@ -5365,7 +5342,6 @@ var ferraris = bindOfficialMapTheme(
5365
5342
  strokeOpacity: 0.62,
5366
5343
  strokeWidth: 0.7
5367
5344
  },
5368
- minZoom: 15,
5369
5345
  mode: "flat"
5370
5346
  }),
5371
5347
  water: withRenderStack4(
@@ -5453,9 +5429,8 @@ var ferraris = bindOfficialMapTheme(
5453
5429
  }),
5454
5430
  {
5455
5431
  ripples: renderPass4({
5456
- attachTo: "water.bodies.fill",
5432
+ placement: { above: "water.bodies.fill" },
5457
5433
  feature: "water",
5458
- phase: "overlay",
5459
5434
  renderer: "fill",
5460
5435
  selector: {
5461
5436
  coerce: "number",
@@ -5476,9 +5451,8 @@ var ferraris = bindOfficialMapTheme(
5476
5451
  }
5477
5452
  }),
5478
5453
  intermittentRipples: renderPass4({
5479
- attachTo: "water.intermittent.bodies.fill",
5454
+ placement: { above: "water.intermittent.bodies.fill" },
5480
5455
  feature: "water",
5481
- phase: "overlay",
5482
5456
  renderer: "fill",
5483
5457
  selector: {
5484
5458
  coerce: "number",
@@ -5662,9 +5636,8 @@ function landcoverPattern3(target, pattern, classes, options = {}) {
5662
5636
  opacityStops.push([options.highZoom, options.highZoomOpacity]);
5663
5637
  }
5664
5638
  return renderPass5({
5665
- attachTo: target,
5639
+ placement: { above: target },
5666
5640
  feature: "landcover",
5667
- phase: "overlay",
5668
5641
  renderer: "fill",
5669
5642
  selector,
5670
5643
  style: {
@@ -5683,9 +5656,8 @@ function landusePattern3(target, pattern, classes, minZoom, opacity, maxZoom) {
5683
5656
  opacityStops.push([maxZoom - 2, opacity * 0.5], [maxZoom, 0]);
5684
5657
  }
5685
5658
  return renderPass5({
5686
- attachTo: target,
5659
+ placement: { above: target },
5687
5660
  feature: "landuse",
5688
- phase: "overlay",
5689
5661
  renderer: "fill",
5690
5662
  selector: { field: "class", kind: "in", values: classes },
5691
5663
  style: {
@@ -6142,9 +6114,8 @@ var harad = bindOfficialMapTheme(
6142
6114
  }),
6143
6115
  {
6144
6116
  fieldBoundaries: renderPass5({
6145
- attachTo: "land.landcover.farmland.fill",
6117
+ placement: { above: "land.landcover.farmland.fill" },
6146
6118
  feature: "landcover",
6147
- phase: "overlay",
6148
6119
  renderer: "line",
6149
6120
  selector: { field: "class", kind: "in", values: ["farmland"] },
6150
6121
  style: {
@@ -6395,7 +6366,6 @@ var harad = bindOfficialMapTheme(
6395
6366
  strokeOpacity: 0.5,
6396
6367
  strokeWidth: 0.55
6397
6368
  },
6398
- minZoom: 15,
6399
6369
  mode: "flat"
6400
6370
  }),
6401
6371
  water: withRenderStack5(
@@ -6479,9 +6449,8 @@ var harad = bindOfficialMapTheme(
6479
6449
  }),
6480
6450
  {
6481
6451
  printLines: renderPass5({
6482
- attachTo: "water.bodies.fill",
6452
+ placement: { above: "water.bodies.fill" },
6483
6453
  feature: "water",
6484
- phase: "overlay",
6485
6454
  renderer: "fill",
6486
6455
  selector: {
6487
6456
  coerce: "number",
@@ -6502,9 +6471,8 @@ var harad = bindOfficialMapTheme(
6502
6471
  }
6503
6472
  }),
6504
6473
  intermittentPrintLines: renderPass5({
6505
- attachTo: "water.intermittent.bodies.fill",
6474
+ placement: { above: "water.intermittent.bodies.fill" },
6506
6475
  feature: "water",
6507
- phase: "overlay",
6508
6476
  renderer: "fill",
6509
6477
  selector: {
6510
6478
  coerce: "number",
@@ -6898,9 +6866,8 @@ function landcoverFilter(classes, options = {}) {
6898
6866
  function landcoverPattern4(target, pattern, classes, options = {}) {
6899
6867
  const minZoom = options.minZoom ?? 9;
6900
6868
  return renderPass6({
6901
- attachTo: target,
6869
+ placement: { above: target },
6902
6870
  feature: "landcover",
6903
- phase: "overlay",
6904
6871
  renderer: "fill",
6905
6872
  selector: landcoverFilter(classes, options),
6906
6873
  style: {
@@ -6915,9 +6882,8 @@ function landcoverPattern4(target, pattern, classes, options = {}) {
6915
6882
  }
6916
6883
  function postContourLandcoverPattern(target, pattern, classes, options) {
6917
6884
  return renderPass6({
6918
- attachTo: target,
6885
+ placement: { above: target },
6919
6886
  feature: "landcover",
6920
- phase: "postRelief",
6921
6887
  renderer: "fill",
6922
6888
  requirements: ["land"],
6923
6889
  selector: landcoverFilter(classes, options),
@@ -7580,9 +7546,8 @@ var siegfried = bindOfficialMapTheme(
7580
7546
  }),
7581
7547
  {
7582
7548
  rockMask: renderPass6({
7583
- attachTo: "water.bodies.fill",
7549
+ placement: { below: "water.bodies.fill" },
7584
7550
  feature: "landcover",
7585
- phase: "underlay",
7586
7551
  renderer: "fill",
7587
7552
  requirements: ["land"],
7588
7553
  selector: { field: "class", kind: "in", values: ["rock"] },
@@ -7613,18 +7578,16 @@ var siegfried = bindOfficialMapTheme(
7613
7578
  }
7614
7579
  ),
7615
7580
  glacierMask: renderPass6({
7616
- attachTo: "water.bodies.fill",
7581
+ placement: { below: "water.bodies.fill" },
7617
7582
  feature: "landcover",
7618
- phase: "underlay",
7619
7583
  renderer: "fill",
7620
7584
  requirements: ["land"],
7621
7585
  selector: { field: "class", kind: "in", values: ["ice", "glacier"] },
7622
7586
  style: { color: siegfriedPalette.paper, minZoom: 7, opacity: 0.98 }
7623
7587
  }),
7624
7588
  glacierPattern: renderPass6({
7625
- attachTo: "water.render.glacierMask",
7589
+ placement: { above: "water.render.glacierMask" },
7626
7590
  feature: "landcover",
7627
- phase: "postRelief",
7628
7591
  renderer: "fill",
7629
7592
  requirements: ["land"],
7630
7593
  selector: { field: "class", kind: "in", values: ["ice", "glacier"] },
@@ -7639,9 +7602,8 @@ var siegfried = bindOfficialMapTheme(
7639
7602
  }
7640
7603
  }),
7641
7604
  glacierOutline: renderPass6({
7642
- attachTo: "water.render.glacierPattern",
7605
+ placement: { above: "water.render.glacierPattern" },
7643
7606
  feature: "landcover",
7644
- phase: "postRelief",
7645
7607
  renderer: "line",
7646
7608
  requirements: ["land"],
7647
7609
  selector: { field: "class", kind: "in", values: ["ice", "glacier"] },
@@ -7655,9 +7617,8 @@ var siegfried = bindOfficialMapTheme(
7655
7617
  }
7656
7618
  }),
7657
7619
  waterLines: renderPass6({
7658
- attachTo: "water.bodies.outline",
7620
+ placement: { above: "water.bodies.outline" },
7659
7621
  feature: "water",
7660
- phase: "overlay",
7661
7622
  renderer: "fill",
7662
7623
  selector: {
7663
7624
  coerce: "number",
@@ -7678,9 +7639,8 @@ var siegfried = bindOfficialMapTheme(
7678
7639
  }
7679
7640
  }),
7680
7641
  intermittentWaterLines: renderPass6({
7681
- attachTo: "water.intermittent.bodies.fill",
7642
+ placement: { above: "water.intermittent.bodies.fill" },
7682
7643
  feature: "water",
7683
- phase: "overlay",
7684
7644
  renderer: "fill",
7685
7645
  selector: {
7686
7646
  coerce: "number",
@@ -8174,9 +8134,8 @@ var soundings = bindOfficialMapTheme(
8174
8134
  {
8175
8135
  // Ferry names are operational context, not a recommended track.
8176
8136
  ferryLabels: renderPass7({
8177
- attachTo: "transit.ferry",
8137
+ placement: { above: "transit.ferry" },
8178
8138
  feature: "roadName",
8179
- phase: "overlay",
8180
8139
  renderer: "symbol",
8181
8140
  selector: {
8182
8141
  kind: "all",
@@ -8364,9 +8323,8 @@ var soundings = bindOfficialMapTheme(
8364
8323
  // Piers remain visible even though the terrestrial road family is disabled.
8365
8324
  // A dark outer stroke and ivory deck read as charted shoreline structures.
8366
8325
  pierOutline: renderPass7({
8367
- attachTo: "water.bodies.outline",
8326
+ placement: { above: "water.bodies.outline" },
8368
8327
  feature: "road",
8369
- phase: "overlay",
8370
8328
  renderer: "line",
8371
8329
  selector: {
8372
8330
  kind: "any",
@@ -8393,9 +8351,8 @@ var soundings = bindOfficialMapTheme(
8393
8351
  }
8394
8352
  }),
8395
8353
  pierDeck: renderPass7({
8396
- attachTo: "water.render.pierOutline",
8354
+ placement: { above: "water.render.pierOutline" },
8397
8355
  feature: "road",
8398
- phase: "overlay",
8399
8356
  renderer: "line",
8400
8357
  selector: {
8401
8358
  kind: "any",
@@ -8421,9 +8378,8 @@ var soundings = bindOfficialMapTheme(
8421
8378
  }
8422
8379
  }),
8423
8380
  chartDots: renderPass7({
8424
- attachTo: "water.bodies.fill",
8381
+ placement: { above: "water.bodies.fill" },
8425
8382
  feature: "water",
8426
- phase: "overlay",
8427
8383
  renderer: "fill",
8428
8384
  selector: {
8429
8385
  coerce: "number",
@@ -8444,9 +8400,8 @@ var soundings = bindOfficialMapTheme(
8444
8400
  }
8445
8401
  }),
8446
8402
  intermittentChartDots: renderPass7({
8447
- attachTo: "water.intermittent.bodies.fill",
8403
+ placement: { above: "water.intermittent.bodies.fill" },
8448
8404
  feature: "water",
8449
- phase: "overlay",
8450
8405
  renderer: "fill",
8451
8406
  selector: {
8452
8407
  coerce: "number",
@@ -9377,13 +9332,13 @@ var circularRoadCasingWidth = circularRoadStrokeWidth(true);
9377
9332
  var expresswayWidthScale = 1.06;
9378
9333
  var tunnelBorderDash = [3, 3];
9379
9334
  var tunnelBorderWidth = 1;
9380
- function circularRoadLegacyScale(level) {
9335
+ function circularRoadFallbackScale(level) {
9381
9336
  const interpolationBase = 1.35;
9382
9337
  const progress = (interpolationBase ** (level - 15) - 1) / (interpolationBase ** (22 - 15) - 1);
9383
9338
  return 1 + progress * 1.2;
9384
9339
  }
9385
9340
  function circularRoadWidthAtLevel(level) {
9386
- const scale = circularRoadLegacyScale(level);
9341
+ const scale = circularRoadFallbackScale(level);
9387
9342
  return level === 15 ? circularRoadBaseWidth : expr9.multiply(circularRoadBaseWidth, scale);
9388
9343
  }
9389
9344
  function circularRoadCenterlineRadiusAtLevel(level) {
@@ -9631,9 +9586,8 @@ var namedCitySelector = {
9631
9586
  function streetsBoundaryRenderStack() {
9632
9587
  return {
9633
9588
  admin2Background: renderPass8({
9634
- attachTo: "boundaries.admin4",
9589
+ placement: { below: "boundaries.admin4" },
9635
9590
  feature: "boundary",
9636
- phase: "underlay",
9637
9591
  renderer: "line",
9638
9592
  selector: {
9639
9593
  kind: "all",
@@ -9674,9 +9628,8 @@ function streetsBoundaryRenderStack() {
9674
9628
  }
9675
9629
  }),
9676
9630
  admin4Background: renderPass8({
9677
- attachTo: "boundaries.admin4",
9631
+ placement: { below: "boundaries.admin4" },
9678
9632
  feature: "boundary",
9679
- phase: "underlay",
9680
9633
  renderer: "line",
9681
9634
  selector: {
9682
9635
  kind: "all",
@@ -9722,9 +9675,8 @@ function streetsBoundaryRenderStack() {
9722
9675
  // Standard uses the next tier as a restrained dotted municipal cue from
9723
9676
  // metro zooms onward, so Streets adds it as an explicit semantic pass.
9724
9677
  admin6: renderPass8({
9725
- attachTo: "boundaries.admin4",
9678
+ placement: { above: "boundaries.admin4" },
9726
9679
  feature: "boundary",
9727
- phase: "overlay",
9728
9680
  renderer: "line",
9729
9681
  selector: {
9730
9682
  kind: "all",
@@ -9768,9 +9720,8 @@ function streetsBoundaryRenderStack() {
9768
9720
  function streetsLandRenderStack() {
9769
9721
  return {
9770
9722
  businessArea: renderPass8({
9771
- attachTo: "land.landuse.residential.fill",
9723
+ placement: { above: "land.landuse.residential.fill" },
9772
9724
  feature: "landuse",
9773
- phase: "overlay",
9774
9725
  renderer: "fill",
9775
9726
  selector: { field: "class", kind: "compare", operator: "eq", value: "business_area" },
9776
9727
  style: {
@@ -9787,9 +9738,8 @@ function streetsBuildingRenderStack() {
9787
9738
  // fill and its close-colour outline carry the 2D building hierarchy; a
9788
9739
  // dark shadow at z15 would turn every footprint into a heavy sticker.
9789
9740
  flatShadow: renderPass8({
9790
- attachTo: "buildings.flat.fill",
9741
+ placement: { below: "buildings.flat.fill" },
9791
9742
  feature: "building",
9792
- phase: "underlay",
9793
9743
  renderer: "line",
9794
9744
  style: {
9795
9745
  blur: 2,
@@ -9812,9 +9762,8 @@ function streetsBuildingRenderStack() {
9812
9762
  }
9813
9763
  }),
9814
9764
  shadowSoft: renderPass8({
9815
- attachTo: "buildings.flat.fill",
9765
+ placement: { below: "buildings.flat.fill" },
9816
9766
  feature: "building",
9817
- phase: "underlay",
9818
9767
  renderer: "line",
9819
9768
  selector: visibleBuilding3dSelector,
9820
9769
  style: {
@@ -9829,9 +9778,8 @@ function streetsBuildingRenderStack() {
9829
9778
  }
9830
9779
  }),
9831
9780
  shadowCore: renderPass8({
9832
- attachTo: "buildings.flat.fill",
9781
+ placement: { below: "buildings.flat.fill" },
9833
9782
  feature: "building",
9834
- phase: "underlay",
9835
9783
  renderer: "fill",
9836
9784
  selector: visibleBuilding3dSelector,
9837
9785
  style: {
@@ -9845,9 +9793,8 @@ function streetsBuildingRenderStack() {
9845
9793
  }
9846
9794
  }),
9847
9795
  extrusion: renderPass8({
9848
- attachTo: "buildings.flat.outline",
9796
+ placement: { above: "buildings.flat.outline" },
9849
9797
  feature: "building",
9850
- phase: "overlay",
9851
9798
  renderer: "extrusion",
9852
9799
  selector: visibleBuilding3dSelector,
9853
9800
  style: {
@@ -9865,9 +9812,8 @@ function streetsBuildingRenderStack() {
9865
9812
  function streetsLabelRenderStack() {
9866
9813
  return {
9867
9814
  settlementMarker: renderPass8({
9868
- attachTo: "labels.places.city",
9815
+ placement: { below: "labels.places.city" },
9869
9816
  feature: "place",
9870
- phase: "underlay",
9871
9817
  renderer: "circle",
9872
9818
  selector: namedCitySelector,
9873
9819
  style: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tileflow/maps",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.1.0-alpha.8",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Official themed Streets, Baedeker, Cívica, Ferraris, Härad, Siegfried, Soundings, and Blueprint maps for Tileflow.",
6
6
  "type": "module",
@@ -53,12 +53,12 @@
53
53
  "access": "public"
54
54
  },
55
55
  "peerDependencies": {
56
- "@tileflow/core": ">=0.1.0-alpha.29 <0.1.0-beta.0"
56
+ "@tileflow/core": ">=0.1.0-alpha.32 <0.1.0-beta.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@maplibre/maplibre-gl-style-spec": "24.8.5",
60
- "@maplibre/maplibre-gl-style-spec-v6": "npm:@maplibre/maplibre-gl-style-spec@26.4.2",
61
- "@tileflow/core": "0.1.0-alpha.29"
60
+ "@maplibre/maplibre-gl-style-spec-v6": "npm:@maplibre/maplibre-gl-style-spec@26.4.4",
61
+ "@tileflow/core": "0.1.0-alpha.32"
62
62
  },
63
63
  "scripts": {
64
64
  "build": "tsup src/index.ts --format esm --dts --clean --no-splitting",