@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.cjs CHANGED
@@ -7700,6 +7700,16 @@ var S52_DRAW_ORDER = [
7700
7700
  // the visual-coherence fix for hard charcoal-vs-vector-blue seams at
7701
7701
  // scale-band boundaries — see `s52-lookup.ts`'s SEAARE entry for the
7702
7702
  // paired paint-spec change (fill-opacity 0 → 1, color → DEPDW).
7703
+ //
7704
+ // ⚠ 2026-08-23: within-band ordering alone was NOT enough. Under the
7705
+ // band-major interleave, band-N's SEAARE painted ABOVE band-(N-1)'s
7706
+ // DEPARE, and NOAA's named-bay SEAARE polygons outrun (and out-survive,
7707
+ // through tile simplification) their own band's DEPARE — the live
7708
+ // "white blobs" over Narragansett/Quincy/Hingham Bays. The style
7709
+ // generator now hoists every band's SEAARE fill below the whole
7710
+ // cascade (BOTTOM_STACK_WATER_BASE_CLASSES in style-generator.ts);
7711
+ // this within-band slot remains for the label layer and as the record
7712
+ // of the original intent.
7703
7713
  "SEAARE",
7704
7714
  "DEPARE",
7705
7715
  // 2a. Unsurveyed area — opaque grey wash painted ON TOP of any DEPARE
@@ -28241,7 +28251,13 @@ var LAND_THEMES = {
28241
28251
  halo: "#f2ead6",
28242
28252
  shadow: "#6b5a3e",
28243
28253
  highlight: "#fffaf0",
28244
- fade: "#e8f2f8"
28254
+ fade: "#e8f2f8",
28255
+ // Raised from 0.45 on 2026-08-23. ⚠ Above the ~0.5 that
28256
+ // hillshade-style.mjs warns "starts competing with depth areas" — a
28257
+ // deliberate, sighted choice made against rendered evidence, not a
28258
+ // default. If soundings or DEPARE ever read as fighting the terrain,
28259
+ // this number is the first thing to walk back.
28260
+ exaggeration: 0.8
28245
28261
  },
28246
28262
  DUSK: {
28247
28263
  base: "#4a4433",
@@ -28254,7 +28270,9 @@ var LAND_THEMES = {
28254
28270
  halo: "#2b2820",
28255
28271
  shadow: "#2e2a20",
28256
28272
  highlight: "#8a8068",
28257
- fade: "#16202a"
28273
+ fade: "#16202a",
28274
+ // Unchanged. DUSK was not the palette the 0.8 decision was made against.
28275
+ exaggeration: 0.45
28258
28276
  },
28259
28277
  NIGHT: {
28260
28278
  base: "#2a2620",
@@ -28267,7 +28285,12 @@ var LAND_THEMES = {
28267
28285
  halo: "#15130f",
28268
28286
  shadow: "#1a1712",
28269
28287
  highlight: "#4a4436",
28270
- fade: "#07090b"
28288
+ fade: "#07090b",
28289
+ // ⚠ DELIBERATELY NOT RAISED. See the type's note: a strong hillshade
28290
+ // under red night vision is a grey haze over exactly the contrast a
28291
+ // skipper is navigating by. Left at the shipped value rather than
28292
+ // lowered, because lowering it is a separate decision from this one.
28293
+ exaggeration: 0.45
28271
28294
  }
28272
28295
  };
28273
28296
  var FITS = ["<=", ["coalesce", ["get", "min_z"], 0], ["zoom"]];
@@ -28330,7 +28353,7 @@ function landLayers(opts = {}) {
28330
28353
  type: "hillshade",
28331
28354
  source: demSrc,
28332
28355
  paint: {
28333
- "hillshade-exaggeration": 0.45,
28356
+ "hillshade-exaggeration": T.exaggeration,
28334
28357
  "hillshade-shadow-color": T.shadow,
28335
28358
  "hillshade-highlight-color": T.highlight,
28336
28359
  "hillshade-accent-color": T.shadow
@@ -28748,6 +28771,7 @@ function isDominanceExempt(layer) {
28748
28771
  return false;
28749
28772
  }
28750
28773
  var TOP_STACK_LIGHT_CLASSES = /* @__PURE__ */ new Set(["LIGHTS"]);
28774
+ var BOTTOM_STACK_WATER_BASE_CLASSES = /* @__PURE__ */ new Set(["SEAARE"]);
28751
28775
  function makeBandVariants(layer, B) {
28752
28776
  const range = BAND_PRIORITY_RANGES[B];
28753
28777
  const minzoom = bandVariantMinzoom(layer, B);
@@ -28947,8 +28971,13 @@ function generateStyle(palette = "DAY", opts = {}) {
28947
28971
  })
28948
28972
  });
28949
28973
  }
28950
- const regularBundles = bundles.filter((b) => !TOP_STACK_LIGHT_CLASSES.has(b.objectClass));
28974
+ const regularBundles = bundles.filter(
28975
+ (b) => !TOP_STACK_LIGHT_CLASSES.has(b.objectClass) && !BOTTOM_STACK_WATER_BASE_CLASSES.has(b.objectClass)
28976
+ );
28951
28977
  const topLightBundles = bundles.filter((b) => TOP_STACK_LIGHT_CLASSES.has(b.objectClass));
28978
+ const waterBaseBundles = bundles.filter(
28979
+ (b) => BOTTOM_STACK_WATER_BASE_CLASSES.has(b.objectClass)
28980
+ );
28952
28981
  if (chartCascade && chartRequestedCodes) {
28953
28982
  const requestedSet = new Set(chartRequestedCodes);
28954
28983
  const emitChartFeatureVariants = (bundleSet) => {
@@ -28976,6 +29005,7 @@ function generateStyle(palette = "DAY", opts = {}) {
28976
29005
  }
28977
29006
  }
28978
29007
  };
29008
+ emitChartFeatureVariants(waterBaseBundles);
28979
29009
  emitChartFeatureVariants(regularBundles);
28980
29010
  emitChartFeatureVariants(topLightBundles);
28981
29011
  const chartLabelBundles = byLabelPriorityBottomUp(
@@ -29016,6 +29046,13 @@ function generateStyle(palette = "DAY", opts = {}) {
29016
29046
  layers.push(...labelLayers);
29017
29047
  } else {
29018
29048
  const emitBand = (base, code) => bandFan === "legacy" ? makeBandVariants(base, code) : makeCollapsedBandVariant(base, code, isDominanceExempt(base));
29049
+ for (const code of BAND_DRAW_ORDER) {
29050
+ for (const { featureLayers } of waterBaseBundles) {
29051
+ for (const base of featureLayers) {
29052
+ layers.push(...emitBand(base, code));
29053
+ }
29054
+ }
29055
+ }
29019
29056
  for (const code of BAND_DRAW_ORDER) {
29020
29057
  for (const { featureLayers } of regularBundles) {
29021
29058
  for (const base of featureLayers) {