@chrtco/sdk 0.10.14 → 0.10.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7483,6 +7483,16 @@ var S52_DRAW_ORDER = [
7483
7483
  // the visual-coherence fix for hard charcoal-vs-vector-blue seams at
7484
7484
  // scale-band boundaries — see `s52-lookup.ts`'s SEAARE entry for the
7485
7485
  // paired paint-spec change (fill-opacity 0 → 1, color → DEPDW).
7486
+ //
7487
+ // ⚠ 2026-08-23: within-band ordering alone was NOT enough. Under the
7488
+ // band-major interleave, band-N's SEAARE painted ABOVE band-(N-1)'s
7489
+ // DEPARE, and NOAA's named-bay SEAARE polygons outrun (and out-survive,
7490
+ // through tile simplification) their own band's DEPARE — the live
7491
+ // "white blobs" over Narragansett/Quincy/Hingham Bays. The style
7492
+ // generator now hoists every band's SEAARE fill below the whole
7493
+ // cascade (BOTTOM_STACK_WATER_BASE_CLASSES in style-generator.ts);
7494
+ // this within-band slot remains for the label layer and as the record
7495
+ // of the original intent.
7486
7496
  "SEAARE",
7487
7497
  "DEPARE",
7488
7498
  // 2a. Unsurveyed area — opaque grey wash painted ON TOP of any DEPARE
@@ -28024,7 +28034,13 @@ var LAND_THEMES = {
28024
28034
  halo: "#f2ead6",
28025
28035
  shadow: "#6b5a3e",
28026
28036
  highlight: "#fffaf0",
28027
- fade: "#e8f2f8"
28037
+ fade: "#e8f2f8",
28038
+ // Raised from 0.45 on 2026-08-23. ⚠ Above the ~0.5 that
28039
+ // hillshade-style.mjs warns "starts competing with depth areas" — a
28040
+ // deliberate, sighted choice made against rendered evidence, not a
28041
+ // default. If soundings or DEPARE ever read as fighting the terrain,
28042
+ // this number is the first thing to walk back.
28043
+ exaggeration: 0.8
28028
28044
  },
28029
28045
  DUSK: {
28030
28046
  base: "#4a4433",
@@ -28037,7 +28053,9 @@ var LAND_THEMES = {
28037
28053
  halo: "#2b2820",
28038
28054
  shadow: "#2e2a20",
28039
28055
  highlight: "#8a8068",
28040
- fade: "#16202a"
28056
+ fade: "#16202a",
28057
+ // Unchanged. DUSK was not the palette the 0.8 decision was made against.
28058
+ exaggeration: 0.45
28041
28059
  },
28042
28060
  NIGHT: {
28043
28061
  base: "#2a2620",
@@ -28050,7 +28068,12 @@ var LAND_THEMES = {
28050
28068
  halo: "#15130f",
28051
28069
  shadow: "#1a1712",
28052
28070
  highlight: "#4a4436",
28053
- fade: "#07090b"
28071
+ fade: "#07090b",
28072
+ // ⚠ DELIBERATELY NOT RAISED. See the type's note: a strong hillshade
28073
+ // under red night vision is a grey haze over exactly the contrast a
28074
+ // skipper is navigating by. Left at the shipped value rather than
28075
+ // lowered, because lowering it is a separate decision from this one.
28076
+ exaggeration: 0.45
28054
28077
  }
28055
28078
  };
28056
28079
  var FITS = ["<=", ["coalesce", ["get", "min_z"], 0], ["zoom"]];
@@ -28113,7 +28136,7 @@ function landLayers(opts = {}) {
28113
28136
  type: "hillshade",
28114
28137
  source: demSrc,
28115
28138
  paint: {
28116
- "hillshade-exaggeration": 0.45,
28139
+ "hillshade-exaggeration": T.exaggeration,
28117
28140
  "hillshade-shadow-color": T.shadow,
28118
28141
  "hillshade-highlight-color": T.highlight,
28119
28142
  "hillshade-accent-color": T.shadow
@@ -28531,6 +28554,7 @@ function isDominanceExempt(layer) {
28531
28554
  return false;
28532
28555
  }
28533
28556
  var TOP_STACK_LIGHT_CLASSES = /* @__PURE__ */ new Set(["LIGHTS"]);
28557
+ var BOTTOM_STACK_WATER_BASE_CLASSES = /* @__PURE__ */ new Set(["SEAARE"]);
28534
28558
  function makeBandVariants(layer, B) {
28535
28559
  const range = BAND_PRIORITY_RANGES[B];
28536
28560
  const minzoom = bandVariantMinzoom(layer, B);
@@ -28730,8 +28754,13 @@ function generateStyle(palette = "DAY", opts = {}) {
28730
28754
  })
28731
28755
  });
28732
28756
  }
28733
- const regularBundles = bundles.filter((b) => !TOP_STACK_LIGHT_CLASSES.has(b.objectClass));
28757
+ const regularBundles = bundles.filter(
28758
+ (b) => !TOP_STACK_LIGHT_CLASSES.has(b.objectClass) && !BOTTOM_STACK_WATER_BASE_CLASSES.has(b.objectClass)
28759
+ );
28734
28760
  const topLightBundles = bundles.filter((b) => TOP_STACK_LIGHT_CLASSES.has(b.objectClass));
28761
+ const waterBaseBundles = bundles.filter(
28762
+ (b) => BOTTOM_STACK_WATER_BASE_CLASSES.has(b.objectClass)
28763
+ );
28735
28764
  if (chartCascade && chartRequestedCodes) {
28736
28765
  const requestedSet = new Set(chartRequestedCodes);
28737
28766
  const emitChartFeatureVariants = (bundleSet) => {
@@ -28759,6 +28788,7 @@ function generateStyle(palette = "DAY", opts = {}) {
28759
28788
  }
28760
28789
  }
28761
28790
  };
28791
+ emitChartFeatureVariants(waterBaseBundles);
28762
28792
  emitChartFeatureVariants(regularBundles);
28763
28793
  emitChartFeatureVariants(topLightBundles);
28764
28794
  const chartLabelBundles = byLabelPriorityBottomUp(
@@ -28799,6 +28829,13 @@ function generateStyle(palette = "DAY", opts = {}) {
28799
28829
  layers.push(...labelLayers);
28800
28830
  } else {
28801
28831
  const emitBand = (base, code) => bandFan === "legacy" ? makeBandVariants(base, code) : makeCollapsedBandVariant(base, code, isDominanceExempt(base));
28832
+ for (const code of BAND_DRAW_ORDER) {
28833
+ for (const { featureLayers } of waterBaseBundles) {
28834
+ for (const base of featureLayers) {
28835
+ layers.push(...emitBand(base, code));
28836
+ }
28837
+ }
28838
+ }
28802
28839
  for (const code of BAND_DRAW_ORDER) {
28803
28840
  for (const { featureLayers } of regularBundles) {
28804
28841
  for (const base of featureLayers) {