@chrtco/sdk 0.10.47 → 0.10.49
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 +465 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +316 -113
- package/dist/index.d.ts +316 -113
- package/dist/index.js +430 -70
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -44,6 +44,12 @@ __export(index_exports, {
|
|
|
44
44
|
CHART_BAND_CODES: () => CHART_BAND_CODES,
|
|
45
45
|
CHART_CASCADE_CODES: () => CHART_CASCADE_CODES,
|
|
46
46
|
CHART_SECTIONS: () => CHART_SECTIONS,
|
|
47
|
+
CHART_SOUNDINGS_RULE: () => CHART_SOUNDINGS_RULE,
|
|
48
|
+
CHART_SYMBOL_SCALE: () => CHART_SYMBOL_SCALE,
|
|
49
|
+
CHART_SYMBOL_SIZES: () => CHART_SYMBOL_SIZES,
|
|
50
|
+
CHART_SYMBOL_SIZE_LABELS: () => CHART_SYMBOL_SIZE_LABELS,
|
|
51
|
+
CHART_SYMBOL_SIZE_REACH: () => CHART_SYMBOL_SIZE_REACH,
|
|
52
|
+
CHART_SYMBOL_SIZE_WIRE: () => CHART_SYMBOL_SIZE_WIRE,
|
|
47
53
|
CHRTRASTER_REF_CROPS: () => CHRTRASTER_REF_CROPS,
|
|
48
54
|
CHRTRASTER_SVGS: () => CHRTRASTER_SVGS,
|
|
49
55
|
CHRT_ATON_COLORS: () => CHRT_ATON_COLORS,
|
|
@@ -57,7 +63,6 @@ __export(index_exports, {
|
|
|
57
63
|
ChrtError: () => ChrtError,
|
|
58
64
|
DEFAULT_CLICK_TOLERANCE: () => DEFAULT_CLICK_TOLERANCE,
|
|
59
65
|
DEFAULT_CUSTOM_STYLE_CONFIG: () => DEFAULT_CUSTOM_STYLE_CONFIG,
|
|
60
|
-
DEFAULT_DEPTH_LABEL_SIZE: () => DEFAULT_DEPTH_LABEL_SIZE,
|
|
61
66
|
DEFAULT_INSPECT_CLASS_RANK: () => DEFAULT_INSPECT_CLASS_RANK,
|
|
62
67
|
DEFAULT_LABEL_SETTINGS: () => DEFAULT_LABEL_SETTINGS,
|
|
63
68
|
DEFAULT_NAV_AID_SETTINGS: () => DEFAULT_NAV_AID_SETTINGS,
|
|
@@ -69,14 +74,14 @@ __export(index_exports, {
|
|
|
69
74
|
DEFAULT_WATER_BODY_SETTINGS: () => DEFAULT_WATER_BODY_SETTINGS,
|
|
70
75
|
DEPARE_FILL_BRANCH_TOKENS: () => DEPARE_FILL_BRANCH_TOKENS,
|
|
71
76
|
DEPARE_FILL_FALLBACK_TOKEN: () => DEPARE_FILL_FALLBACK_TOKEN,
|
|
72
|
-
|
|
73
|
-
DEPTH_LABEL_SIZES: () => DEPTH_LABEL_SIZES,
|
|
77
|
+
DEPTH_FIGURE_CLASSES: () => DEPTH_FIGURE_CLASSES,
|
|
74
78
|
DRAPEABLE_LAYER_TYPES: () => DRAPEABLE_LAYER_TYPES,
|
|
75
79
|
EINK_COLOR_TABLES: () => EINK_COLOR_TABLES,
|
|
76
80
|
EINK_DANGER_PATTERN: () => EINK_DANGER_PATTERN,
|
|
77
81
|
EINK_DOTS_PATTERN: () => EINK_DOTS_PATTERN,
|
|
78
82
|
EINK_HATCH_PATTERN: () => EINK_HATCH_PATTERN,
|
|
79
83
|
EINK_MONO_GREYS: () => EINK_MONO_GREYS,
|
|
84
|
+
HAZARD_LABEL_PRIORITY: () => HAZARD_LABEL_PRIORITY,
|
|
80
85
|
INSPECT_CLASS_RANK: () => INSPECT_CLASS_RANK,
|
|
81
86
|
INSPECT_RANK_DEVIATIONS: () => INSPECT_RANK_DEVIATIONS,
|
|
82
87
|
InteractClient: () => InteractClient,
|
|
@@ -92,7 +97,8 @@ __export(index_exports, {
|
|
|
92
97
|
LAND_ATTRIBUTION: () => LAND_ATTRIBUTION,
|
|
93
98
|
LAND_BUILD_MAXZOOM: () => LAND_BUILD_MAXZOOM,
|
|
94
99
|
LAND_REGION: () => LAND_REGION,
|
|
95
|
-
|
|
100
|
+
LAND_TEXT_CLASSES: () => LAND_TEXT_CLASSES,
|
|
101
|
+
MAPLIBRE_DEFAULT_TEXT_PADDING_PX: () => MAPLIBRE_DEFAULT_TEXT_PADDING_PX,
|
|
96
102
|
NAUTICAL_SYMBOLS: () => NAUTICAL_SYMBOLS,
|
|
97
103
|
NAV_AID_LAYER_GROUPS: () => NAV_AID_LAYER_GROUPS,
|
|
98
104
|
NAV_AID_QUERY_LAYERS: () => NAV_AID_QUERY_LAYERS,
|
|
@@ -101,6 +107,7 @@ __export(index_exports, {
|
|
|
101
107
|
NON_SOLAS_DISCLAIMER: () => NON_SOLAS_DISCLAIMER,
|
|
102
108
|
NON_SOLAS_DISCLAIMER_SHORT: () => NON_SOLAS_DISCLAIMER_SHORT,
|
|
103
109
|
OPAQUE_SPLIT_OF: () => OPAQUE_SPLIT_OF,
|
|
110
|
+
OUTRANK_LABELS: () => OUTRANK_LABELS,
|
|
104
111
|
OfflineError: () => OfflineError,
|
|
105
112
|
OfflineStyleError: () => OfflineStyleError,
|
|
106
113
|
PLACENAME_LAND_CLASSES: () => PLACENAME_LAND_CLASSES,
|
|
@@ -135,9 +142,14 @@ __export(index_exports, {
|
|
|
135
142
|
S52_LOOKUP: () => S52_LOOKUP,
|
|
136
143
|
S52_NIGHT: () => S52_NIGHT,
|
|
137
144
|
S52_PATTERN_SPRITE_PREFIX: () => S52_PATTERN_SPRITE_PREFIX,
|
|
145
|
+
SERVED_FONT_STACKS: () => SERVED_FONT_STACKS,
|
|
146
|
+
SERVED_SOUNDING_PADDING_PX: () => SERVED_SOUNDING_PADDING_PX,
|
|
138
147
|
SIGPER_TOLERANCE_SECONDS: () => SIGPER_TOLERANCE_SECONDS,
|
|
139
148
|
SIGSEQ_MAX_TERMS: () => SIGSEQ_MAX_TERMS,
|
|
140
149
|
SOUNDING_LAYERS: () => SOUNDING_LAYERS,
|
|
150
|
+
SOUNDING_PADDING_PER_FACTOR: () => SOUNDING_PADDING_PER_FACTOR,
|
|
151
|
+
STANDARD_CHART_SYMBOL_SCALES: () => STANDARD_CHART_SYMBOL_SCALES,
|
|
152
|
+
SYMBOL_ANNOTATION_TEXT_CLASSES: () => SYMBOL_ANNOTATION_TEXT_CLASSES,
|
|
141
153
|
SYMBOL_FAMILIES: () => SYMBOL_FAMILIES,
|
|
142
154
|
SYMBOL_FAMILY_META: () => SYMBOL_FAMILY_META,
|
|
143
155
|
SYMBOL_GROUPS: () => SYMBOL_GROUPS,
|
|
@@ -145,12 +157,14 @@ __export(index_exports, {
|
|
|
145
157
|
TileAuth: () => TileAuth,
|
|
146
158
|
TileTokenError: () => TileTokenError,
|
|
147
159
|
WATER_BODY_LAYER_GROUPS: () => WATER_BODY_LAYER_GROUPS,
|
|
160
|
+
WATER_TEXT_CLASSES: () => WATER_TEXT_CLASSES,
|
|
148
161
|
WeatherEndpoint: () => WeatherEndpoint,
|
|
149
162
|
applyBaseBundle: () => applyBaseBundle,
|
|
163
|
+
applyChartSymbolScales: () => applyChartSymbolScales,
|
|
164
|
+
applyChartSymbolScalesToLayer: () => applyChartSymbolScalesToLayer,
|
|
150
165
|
applyChrtSymbolSet: () => applyChrtSymbolSet,
|
|
151
166
|
applyColorTheme: () => applyColorTheme,
|
|
152
167
|
applyCustomStyleSettings: () => applyCustomStyleSettings,
|
|
153
|
-
applyDepthLabelSize: () => applyDepthLabelSize,
|
|
154
168
|
applyEinkPortrayal: () => applyEinkPortrayal,
|
|
155
169
|
applyRasterSymbolSet: () => applyRasterSymbolSet,
|
|
156
170
|
applyS101SymbolSet: () => applyS101SymbolSet,
|
|
@@ -177,19 +191,24 @@ __export(index_exports, {
|
|
|
177
191
|
capLuminance: () => capLuminance,
|
|
178
192
|
cellBandCharacters: () => cellBandCharacters,
|
|
179
193
|
cellBandMatch: () => cellBandMatch,
|
|
194
|
+
chartSymbolSizingCensus: () => chartSymbolSizingCensus,
|
|
180
195
|
chrtAtonTintExpression: () => chrtAtonTintExpression,
|
|
181
196
|
chrtHouseColor: () => chrtHouseColor,
|
|
182
197
|
chrtLightTintExpression: () => chrtLightTintExpression,
|
|
198
|
+
clampChartSymbolScale: () => clampChartSymbolScale,
|
|
183
199
|
collectCandidates: () => collectCandidates,
|
|
184
200
|
collectClickCandidates: () => collectClickCandidates,
|
|
185
201
|
combineWithBandFilter: () => combineWithBandFilter,
|
|
202
|
+
contourValueFactor: () => contourValueFactor,
|
|
186
203
|
contrastRatio: () => contrastRatio,
|
|
187
204
|
daymarkColor: () => daymarkColor,
|
|
188
205
|
decimateFeatures: () => decimateFeatures,
|
|
189
206
|
decodeAreaFeatureProps: () => decodeAreaFeatureProps,
|
|
190
207
|
decodeBridgeProps: () => decodeBridgeProps,
|
|
191
208
|
decodeCandidate: () => decodeCandidate,
|
|
209
|
+
decodeChartSymbolScale: () => decodeChartSymbolScale,
|
|
192
210
|
decodeNavAidProps: () => decodeNavAidProps,
|
|
211
|
+
demotedBelowSoundings: () => demotedBelowSoundings,
|
|
193
212
|
depareColor: () => depareColor,
|
|
194
213
|
depareFillExpression: () => depareFillExpression,
|
|
195
214
|
depthAreaClassLayerId: () => depthAreaClassLayerId,
|
|
@@ -199,6 +218,7 @@ __export(index_exports, {
|
|
|
199
218
|
drapedFirst: () => drapedFirst,
|
|
200
219
|
extractNavAidDesignation: () => extractNavAidDesignation,
|
|
201
220
|
featureIdentity: () => featureIdentity,
|
|
221
|
+
fromZoom: () => fromZoom,
|
|
202
222
|
generateCustomStyle: () => generateCustomStyle,
|
|
203
223
|
generateSpriteManifest: () => generateSpriteManifest,
|
|
204
224
|
generateSpriteSheet: () => generateSpriteSheet,
|
|
@@ -226,9 +246,11 @@ __export(index_exports, {
|
|
|
226
246
|
getThemedS101Svg: () => getThemedS101Svg,
|
|
227
247
|
getThemedS52Svg: () => getThemedS52Svg,
|
|
228
248
|
getTopmarkMeaning: () => getTopmarkMeaning,
|
|
249
|
+
haloFactor: () => haloFactor,
|
|
229
250
|
hazardColor: () => hazardColor,
|
|
230
251
|
hazardFillExpression: () => hazardFillExpression,
|
|
231
252
|
iconExpressionForFamily: () => iconExpressionForFamily,
|
|
253
|
+
iconSliderFor: () => iconSliderFor,
|
|
232
254
|
isDepthAreaClassLayerId: () => isDepthAreaClassLayerId,
|
|
233
255
|
isDrapeable: () => isDrapeable,
|
|
234
256
|
isEinkColorTable: () => isEinkColorTable,
|
|
@@ -240,6 +262,7 @@ __export(index_exports, {
|
|
|
240
262
|
isSoundingLayerVisible: () => isSoundingLayerVisible,
|
|
241
263
|
isVisibleInMode: () => isVisibleInMode,
|
|
242
264
|
isWaterBodyLayerVisible: () => isWaterBodyLayerVisible,
|
|
265
|
+
keptAboveSoundings: () => keptAboveSoundings,
|
|
243
266
|
labelSortKey: () => labelSortKey,
|
|
244
267
|
lampRhythmColour: () => lampRhythmColour,
|
|
245
268
|
lampRhythmOpacity: () => lampRhythmOpacity,
|
|
@@ -252,7 +275,6 @@ __export(index_exports, {
|
|
|
252
275
|
normalizeTheme: () => normalizeTheme,
|
|
253
276
|
opaqueSplitBaseOf: () => opaqueSplitBaseOf,
|
|
254
277
|
paginate: () => paginate,
|
|
255
|
-
parseDepthLabelSize: () => parseDepthLabelSize,
|
|
256
278
|
parseListCodes: () => parseListCodes,
|
|
257
279
|
parseSigseqTerms: () => parseSigseqTerms,
|
|
258
280
|
parseSymbolFamily: () => parseSymbolFamily,
|
|
@@ -275,12 +297,19 @@ __export(index_exports, {
|
|
|
275
297
|
safetyContourValues: () => safetyContourValues,
|
|
276
298
|
sanitizeCustomStyleConfig: () => sanitizeCustomStyleConfig,
|
|
277
299
|
scaleLinearLight: () => scaleLinearLight,
|
|
300
|
+
scaleSizeExpression: () => scaleSizeExpression,
|
|
278
301
|
scaleSizeValue: () => scaleSizeValue,
|
|
279
302
|
scaminToMinZoom: () => scaminToMinZoom,
|
|
280
303
|
sectorLimitToArcBearing: () => sectorLimitToArcBearing,
|
|
304
|
+
semiboldFontStack: () => semiboldFontStack,
|
|
305
|
+
snapChartSymbolScale: () => snapChartSymbolScale,
|
|
306
|
+
soundingPadding: () => soundingPadding,
|
|
307
|
+
soundingPaddingValue: () => soundingPaddingValue,
|
|
281
308
|
splitOpaqueDepthAreas: () => splitOpaqueDepthAreas,
|
|
309
|
+
stepChartSymbolScale: () => stepChartSymbolScale,
|
|
282
310
|
styleModeBand: () => styleModeBand,
|
|
283
311
|
terrainStackCount: () => terrainStackCount,
|
|
312
|
+
textSliderFor: () => textSliderFor,
|
|
284
313
|
themeChrtGlyph: () => themeChrtGlyph,
|
|
285
314
|
tileTemplate: () => tileTemplate,
|
|
286
315
|
uncoveredSectorArcs: () => uncoveredSectorArcs,
|
|
@@ -25677,15 +25706,46 @@ function getLabelConfig(layerName, opts = {}) {
|
|
|
25677
25706
|
// UWTROC/OBSTRN/WRECKS are dominance-PARTICIPATING classes —
|
|
25678
25707
|
// exactly one band's copy renders at any zoom, so anchor-shifting
|
|
25679
25708
|
// can't split a cross-band duplicate pair into two visible labels.
|
|
25680
|
-
// Shallowest (most dangerous) hazard wins within-class contests;
|
|
25681
|
-
// VALSOU-less hazards (awash / unsounded) rank first of all.
|
|
25682
25709
|
layout: {
|
|
25683
25710
|
"text-variable-anchor": ["top-left", "bottom-left", "top-right", "bottom-right"],
|
|
25684
25711
|
"text-radial-offset": 0.9,
|
|
25685
25712
|
"text-justify": "auto",
|
|
25686
|
-
|
|
25713
|
+
// ⚠ A DANGER DEPTH IS NEVER DROPPED (owner, 2026-10-06). Before,
|
|
25714
|
+
// a callout with no free corner was culled and the rock, wreck or
|
|
25715
|
+
// obstruction drew with no depth beside it: 15 of 136 at Boston
|
|
25716
|
+
// z12.3. ALLOW-OVERLAP ONLY, and that is the whole point:
|
|
25717
|
+
// - the variable anchors still fan out first — MapLibre 5.24
|
|
25718
|
+
// tries every corner without overlap and overlaps, at the
|
|
25719
|
+
// first corner, only when none is free (`placement.ts`,
|
|
25720
|
+
// `placementPasses`), so only the callouts that used to vanish
|
|
25721
|
+
// draw over something;
|
|
25722
|
+
// - `text-ignore-placement` stays false, so a callout keeps its
|
|
25723
|
+
// collision space and blocks what it blocked before. Ignoring
|
|
25724
|
+
// placement as well freed that space for buoy and place names,
|
|
25725
|
+
// which then pushed shallow soundings off: 11 shoals uncovered
|
|
25726
|
+
// at z12.3 on the bench. This form: 0.
|
|
25727
|
+
// The census and its numbers: `scripts/chart-bench/
|
|
25728
|
+
// danger-depth-census.ts` and `.chrt/standards/s-52.md` §8a.
|
|
25729
|
+
"text-allow-overlap": true,
|
|
25687
25730
|
"text-optional": true,
|
|
25688
25731
|
"text-padding": 2,
|
|
25732
|
+
// ⚠ THE DEPTH SORT KEY IS LOAD-BEARING — do not "optimise" it to a
|
|
25733
|
+
// constant. It costs draw calls: MapLibre 5.24 draws an overlapping
|
|
25734
|
+
// layer with a data-driven key one segment per distinct key, twice
|
|
25735
|
+
// with a halo over 1 px (`drawLayerSymbols`, `hasSortKey &&
|
|
25736
|
+
// bucket.canOverlap`), so at 100 % the chart issues +14 % draw calls
|
|
25737
|
+
// at z12.3 against 0.10.3 (R6's 0.10.4 gate). But the key is also
|
|
25738
|
+
// the PLACEMENT order, and a callout keeps its collision box, so the
|
|
25739
|
+
// order decides which corner each callout takes and therefore which
|
|
25740
|
+
// soundings and buoy names survive beneath it. Measured with each
|
|
25741
|
+
// form booted fresh (2026-10-06, Boston and Salem Sound, z11.5–16,
|
|
25742
|
+
// at 1280×800 and the Pi's 1920×1185): a constant key, 3/4/5 depth
|
|
25743
|
+
// bands and whole metres ALL uncover shoals that 0.10.3 drew (a
|
|
25744
|
+
// constant key: 5 at z12.3 on the Pi's canvas, a 0.6 m one at
|
|
25745
|
+
// 1280×800) and change buoy names; only this key matches 0.10.4's
|
|
25746
|
+
// census. `danger-depth-census.ts --form <json>` re-runs that gate
|
|
25747
|
+
// for any candidate. A 1 px halo (one pass, not two) halves the
|
|
25748
|
+
// cost with placement byte-identical — a portrayal call, not taken.
|
|
25689
25749
|
"symbol-sort-key": labelSortKey(100, ["*", 10, valsou])
|
|
25690
25750
|
}
|
|
25691
25751
|
};
|
|
@@ -28969,65 +29029,364 @@ function iconExpressionForFamily(objectClass2, family) {
|
|
|
28969
29029
|
}
|
|
28970
29030
|
}
|
|
28971
29031
|
|
|
28972
|
-
// src/atlas/
|
|
28973
|
-
var
|
|
28974
|
-
var
|
|
28975
|
-
|
|
28976
|
-
|
|
28977
|
-
|
|
28978
|
-
|
|
28979
|
-
|
|
28980
|
-
|
|
28981
|
-
"SOUNDG",
|
|
28982
|
-
"DEPCNT",
|
|
28983
|
-
"UWTROC",
|
|
28984
|
-
"OBSTRN",
|
|
28985
|
-
"WRECKS"
|
|
28986
|
-
]);
|
|
28987
|
-
var SEMIBOLD = ["Open Sans Semibold"];
|
|
28988
|
-
var HAZARD_DEPTH = {
|
|
28989
|
-
textSize: ["interpolate", ["linear"], ["zoom"], 12, 12, 16, 15],
|
|
28990
|
-
haloWidth: 1.4,
|
|
28991
|
-
font: SEMIBOLD
|
|
29032
|
+
// src/atlas/chart-symbol-sizing.ts
|
|
29033
|
+
var CHART_SYMBOL_SIZES = ["landLabels", "waterLabels", "depthNumbers", "waypoints", "chartIcons"];
|
|
29034
|
+
var CHART_SYMBOL_SIZE_WIRE = {
|
|
29035
|
+
landLabels: "chart.landLabelScale",
|
|
29036
|
+
waterLabels: "chart.waterLabelScale",
|
|
29037
|
+
/** Proposed for CHRTKit; aligned with sail's ChartSymbolSizing before release. */
|
|
29038
|
+
depthNumbers: "chart.depthNumberScale",
|
|
29039
|
+
waypoints: "chart.waypointScale",
|
|
29040
|
+
chartIcons: "chart.chartIconScale"
|
|
28992
29041
|
};
|
|
28993
|
-
var
|
|
28994
|
-
|
|
28995
|
-
|
|
28996
|
-
|
|
28997
|
-
|
|
28998
|
-
|
|
28999
|
-
},
|
|
29000
|
-
// Standard: 8 / 10 at z10 / 14, halo 1.2, Regular.
|
|
29001
|
-
//
|
|
29002
|
-
// ⚠ ~1.2x, NOT 1.4x, AND SEMIBOLD CARRIES THE REST. A contour value rides
|
|
29003
|
-
// its line (`symbol-placement: line`) and needs a straight-enough run to fit;
|
|
29004
|
-
// it also shares rank 300 with the soundings, which place first. At 1.4x the
|
|
29005
|
-
// Boston harbour view kept 15 of Standard's 20 contour labels; at 1.2x, 18.
|
|
29006
|
-
DEPCNT: {
|
|
29007
|
-
textSize: ["interpolate", ["linear"], ["zoom"], 10, 10, 14, 12],
|
|
29008
|
-
haloWidth: 1.2,
|
|
29009
|
-
font: SEMIBOLD
|
|
29010
|
-
},
|
|
29011
|
-
UWTROC: HAZARD_DEPTH,
|
|
29012
|
-
OBSTRN: HAZARD_DEPTH,
|
|
29013
|
-
WRECKS: HAZARD_DEPTH
|
|
29042
|
+
var CHART_SYMBOL_SIZE_LABELS = {
|
|
29043
|
+
landLabels: "Land labels",
|
|
29044
|
+
waterLabels: "Water labels",
|
|
29045
|
+
depthNumbers: "Depth numbers",
|
|
29046
|
+
waypoints: "Waypoints",
|
|
29047
|
+
chartIcons: "Chart icons"
|
|
29014
29048
|
};
|
|
29015
|
-
var
|
|
29016
|
-
|
|
29017
|
-
|
|
29018
|
-
|
|
29019
|
-
|
|
29020
|
-
|
|
29021
|
-
|
|
29022
|
-
|
|
29023
|
-
|
|
29024
|
-
|
|
29025
|
-
|
|
29026
|
-
|
|
29027
|
-
|
|
29028
|
-
|
|
29029
|
-
|
|
29030
|
-
|
|
29049
|
+
var CHART_SYMBOL_SIZE_REACH = {
|
|
29050
|
+
landLabels: "Towns, landmarks, buildings and land areas.",
|
|
29051
|
+
waterLabels: "Sea, channel, lake and river names, and clearances.",
|
|
29052
|
+
depthNumbers: "Soundings, contour values, and the depths beside rocks, wrecks and obstructions.",
|
|
29053
|
+
waypoints: "Your waypoints and route marks, and how far a tap reaches them.",
|
|
29054
|
+
chartIcons: "Buoys, beacons, lights, wrecks, rocks and their names."
|
|
29055
|
+
};
|
|
29056
|
+
var CHART_SYMBOL_SCALE = {
|
|
29057
|
+
min: 50,
|
|
29058
|
+
max: 200,
|
|
29059
|
+
standard: 100,
|
|
29060
|
+
/** The − / + step. */
|
|
29061
|
+
buttonStep: 10,
|
|
29062
|
+
/** The slider's snap. */
|
|
29063
|
+
sliderStep: 5
|
|
29064
|
+
};
|
|
29065
|
+
var STANDARD_CHART_SYMBOL_SCALES = {
|
|
29066
|
+
landLabels: 100,
|
|
29067
|
+
waterLabels: 100,
|
|
29068
|
+
depthNumbers: 100,
|
|
29069
|
+
waypoints: 100,
|
|
29070
|
+
chartIcons: 100
|
|
29071
|
+
};
|
|
29072
|
+
function clampChartSymbolScale(percent) {
|
|
29073
|
+
if (!Number.isFinite(percent)) return CHART_SYMBOL_SCALE.standard;
|
|
29074
|
+
return Math.min(Math.max(Math.round(percent), CHART_SYMBOL_SCALE.min), CHART_SYMBOL_SCALE.max);
|
|
29075
|
+
}
|
|
29076
|
+
function snapChartSymbolScale(value) {
|
|
29077
|
+
if (!Number.isFinite(value)) return CHART_SYMBOL_SCALE.standard;
|
|
29078
|
+
const step = CHART_SYMBOL_SCALE.sliderStep;
|
|
29079
|
+
return clampChartSymbolScale(Math.round(value / step) * step);
|
|
29080
|
+
}
|
|
29081
|
+
function stepChartSymbolScale(percent, presses) {
|
|
29082
|
+
return clampChartSymbolScale(percent + presses * CHART_SYMBOL_SCALE.buttonStep);
|
|
29083
|
+
}
|
|
29084
|
+
function decodeChartSymbolScale(raw) {
|
|
29085
|
+
if (typeof raw === "number") return Number.isFinite(raw) ? clampChartSymbolScale(raw) : null;
|
|
29086
|
+
if (typeof raw === "string" && /^\s*-?\d+(\.\d+)?\s*$/.test(raw)) return clampChartSymbolScale(Number(raw));
|
|
29087
|
+
return null;
|
|
29088
|
+
}
|
|
29089
|
+
var LAND_TEXT_CLASSES = /* @__PURE__ */ new Set([
|
|
29090
|
+
"BUAARE",
|
|
29091
|
+
"LNDARE",
|
|
29092
|
+
"LNDRGN",
|
|
29093
|
+
"AIRARE",
|
|
29094
|
+
"PRDARE",
|
|
29095
|
+
"LNDMRK",
|
|
29096
|
+
"BUISGL",
|
|
29097
|
+
"SLCONS",
|
|
29098
|
+
"HRBFAC",
|
|
29099
|
+
"BRIDGE"
|
|
29100
|
+
]);
|
|
29101
|
+
var WATER_TEXT_CLASSES = /* @__PURE__ */ new Set([
|
|
29102
|
+
"SEAARE",
|
|
29103
|
+
"DRGNOTE",
|
|
29104
|
+
"SBDARE",
|
|
29105
|
+
"WEDKLP",
|
|
29106
|
+
"ACHARE",
|
|
29107
|
+
"LAKARE",
|
|
29108
|
+
"RIVERS",
|
|
29109
|
+
"CANALS",
|
|
29110
|
+
"CBLOHD",
|
|
29111
|
+
"PIPOHD"
|
|
29112
|
+
]);
|
|
29113
|
+
var SYMBOL_ANNOTATION_TEXT_CLASSES = /* @__PURE__ */ new Set([
|
|
29114
|
+
"LIGHTS",
|
|
29115
|
+
"FOGSIG",
|
|
29116
|
+
"BOYCAR",
|
|
29117
|
+
"BOYINB",
|
|
29118
|
+
"BOYISD",
|
|
29119
|
+
"BOYLAT",
|
|
29120
|
+
"BOYSAW",
|
|
29121
|
+
"BOYSPP",
|
|
29122
|
+
"BCNCAR",
|
|
29123
|
+
"BCNISD",
|
|
29124
|
+
"BCNLAT",
|
|
29125
|
+
"BCNSAW",
|
|
29126
|
+
"BCNSPP",
|
|
29127
|
+
"MORFAC",
|
|
29128
|
+
"PILPNT"
|
|
29129
|
+
]);
|
|
29130
|
+
var BASEMAP_LAND_TEXT = /* @__PURE__ */ new Set([
|
|
29131
|
+
"CHRT_LAND/land_town",
|
|
29132
|
+
"CHRT_LAND/land_summit",
|
|
29133
|
+
"CHRT_LAND/land_poi",
|
|
29134
|
+
"CHRT_BASE/state_label"
|
|
29135
|
+
]);
|
|
29136
|
+
var BASEMAP_WATER_TEXT = /* @__PURE__ */ new Set([
|
|
29137
|
+
"CHRT_BASE/inland_water_label",
|
|
29138
|
+
"CHRT_BASE/inland_water_label_detail"
|
|
29139
|
+
]);
|
|
29140
|
+
var BASEMAP_SOURCES = /* @__PURE__ */ new Set(["CHRT_LAND", "CHRT_BASE"]);
|
|
29141
|
+
var HAZARD_LABEL_PRIORITY = 100;
|
|
29142
|
+
var DEPTH_FIGURE_CLASSES = /* @__PURE__ */ new Set(["SOUNDG", "DEPCNT", "UWTROC", "OBSTRN", "WRECKS"]);
|
|
29143
|
+
function contourValueFactor(depthNumbersFactor) {
|
|
29144
|
+
return 1 + (depthNumbersFactor - 1) / 2;
|
|
29145
|
+
}
|
|
29146
|
+
var SERVED_FONT_STACKS = ["Open Sans Regular", "Open Sans Italic", "Open Sans Semibold"];
|
|
29147
|
+
function semiboldFontStack(font) {
|
|
29148
|
+
if (!Array.isArray(font) || !font.every((face) => typeof face === "string")) return font;
|
|
29149
|
+
return font.map((face) => {
|
|
29150
|
+
const semibold = face.replace(/ Regular$/, " Semibold");
|
|
29151
|
+
return SERVED_FONT_STACKS.includes(semibold) ? semibold : face;
|
|
29152
|
+
});
|
|
29153
|
+
}
|
|
29154
|
+
function factsOf(layer) {
|
|
29155
|
+
const l = layer;
|
|
29156
|
+
const source = typeof l.source === "string" ? l.source : void 0;
|
|
29157
|
+
const sourceLayer = typeof l["source-layer"] === "string" ? l["source-layer"] : void 0;
|
|
29158
|
+
const meta = l.metadata ?? {};
|
|
29159
|
+
const isBasemap = source !== void 0 && BASEMAP_SOURCES.has(source);
|
|
29160
|
+
const cls = meta["s52:objectClass"];
|
|
29161
|
+
const objectClass2 = isBasemap ? void 0 : (typeof cls === "string" ? cls : sourceLayer)?.toUpperCase();
|
|
29162
|
+
const p = meta["chrt:labelPriority"];
|
|
29163
|
+
return { source, sourceLayer, objectClass: objectClass2, labelPriority: typeof p === "number" ? p : void 0 };
|
|
29164
|
+
}
|
|
29165
|
+
function textSliderFor(layer) {
|
|
29166
|
+
const f = factsOf(layer);
|
|
29167
|
+
if (f.source !== void 0 && BASEMAP_SOURCES.has(f.source)) {
|
|
29168
|
+
const key = `${f.source}/${f.sourceLayer ?? ""}`;
|
|
29169
|
+
if (BASEMAP_LAND_TEXT.has(key)) return "landLabels";
|
|
29170
|
+
if (BASEMAP_WATER_TEXT.has(key)) return "waterLabels";
|
|
29171
|
+
return null;
|
|
29172
|
+
}
|
|
29173
|
+
const cls = f.objectClass;
|
|
29174
|
+
if (cls === void 0) return null;
|
|
29175
|
+
if (DEPTH_FIGURE_CLASSES.has(cls)) return "depthNumbers";
|
|
29176
|
+
if (LAND_TEXT_CLASSES.has(cls)) return "landLabels";
|
|
29177
|
+
if (WATER_TEXT_CLASSES.has(cls)) return "waterLabels";
|
|
29178
|
+
if (SYMBOL_ANNOTATION_TEXT_CLASSES.has(cls)) return "chartIcons";
|
|
29179
|
+
return null;
|
|
29180
|
+
}
|
|
29181
|
+
function iconSliderFor(layer) {
|
|
29182
|
+
const f = factsOf(layer);
|
|
29183
|
+
if (f.source !== void 0 && BASEMAP_SOURCES.has(f.source)) return null;
|
|
29184
|
+
return f.objectClass === void 0 ? null : "chartIcons";
|
|
29185
|
+
}
|
|
29186
|
+
function mentionsZoom(v) {
|
|
29187
|
+
if (Array.isArray(v)) {
|
|
29188
|
+
if (v.length === 1 && v[0] === "zoom") return true;
|
|
29189
|
+
return v.some(mentionsZoom);
|
|
29190
|
+
}
|
|
29191
|
+
if (v !== null && typeof v === "object") return Object.values(v).some(mentionsZoom);
|
|
29192
|
+
return false;
|
|
29193
|
+
}
|
|
29194
|
+
function scaledOutput(v, factor) {
|
|
29195
|
+
return typeof v === "number" ? round(v * factor) : ["*", v, factor];
|
|
29196
|
+
}
|
|
29197
|
+
function round(n) {
|
|
29198
|
+
return Math.round(n * 1e3) / 1e3;
|
|
29199
|
+
}
|
|
29200
|
+
function scaleSizeExpression(value, factor, fallback) {
|
|
29201
|
+
if (!Number.isFinite(factor) || factor <= 0) return null;
|
|
29202
|
+
if (value === void 0) return round(fallback * factor);
|
|
29203
|
+
if (factor === 1) return value;
|
|
29204
|
+
if (typeof value === "number") return round(value * factor);
|
|
29205
|
+
if (Array.isArray(value)) {
|
|
29206
|
+
const op = value[0];
|
|
29207
|
+
if (typeof op !== "string") return null;
|
|
29208
|
+
if (op === "interpolate" || op === "interpolate-hcl" || op === "interpolate-lab") {
|
|
29209
|
+
if (value.length < 5 || value.length % 2 !== 1) return null;
|
|
29210
|
+
const out = [...value];
|
|
29211
|
+
for (let i = 4; i < out.length; i += 2) out[i] = scaledOutput(out[i], factor);
|
|
29212
|
+
return out;
|
|
29213
|
+
}
|
|
29214
|
+
if (op === "step") {
|
|
29215
|
+
if (value.length < 3 || value.length % 2 !== 1) return null;
|
|
29216
|
+
const out = [...value];
|
|
29217
|
+
for (let i = 2; i < out.length; i += 2) out[i] = scaledOutput(out[i], factor);
|
|
29218
|
+
return out;
|
|
29219
|
+
}
|
|
29220
|
+
return mentionsZoom(value) ? null : ["*", value, factor];
|
|
29221
|
+
}
|
|
29222
|
+
if (value !== null && typeof value === "object") {
|
|
29223
|
+
const stops = value.stops;
|
|
29224
|
+
if (!Array.isArray(stops)) return null;
|
|
29225
|
+
const outStops = [];
|
|
29226
|
+
for (const stop of stops) {
|
|
29227
|
+
if (!Array.isArray(stop) || stop.length !== 2 || typeof stop[1] !== "number") return null;
|
|
29228
|
+
outStops.push([stop[0], round(stop[1] * factor)]);
|
|
29229
|
+
}
|
|
29230
|
+
return { ...value, stops: outStops };
|
|
29231
|
+
}
|
|
29232
|
+
return null;
|
|
29233
|
+
}
|
|
29234
|
+
function haloFactor(factor) {
|
|
29235
|
+
return factor > 1 ? 1 + (factor - 1) / 2 : 1;
|
|
29236
|
+
}
|
|
29237
|
+
var SERVED_SOUNDING_PADDING_PX = 6;
|
|
29238
|
+
var SOUNDING_PADDING_PER_FACTOR = 6.25;
|
|
29239
|
+
function soundingPadding(factor, served = SERVED_SOUNDING_PADDING_PX) {
|
|
29240
|
+
if (factor <= 1) return served;
|
|
29241
|
+
return round(Math.max(0, served - SOUNDING_PADDING_PER_FACTOR * (factor - 1)));
|
|
29242
|
+
}
|
|
29243
|
+
var MAPLIBRE_DEFAULT_TEXT_PADDING_PX = 2;
|
|
29244
|
+
function soundingPaddingValue(served, factor) {
|
|
29245
|
+
if (factor <= 1) return served;
|
|
29246
|
+
if (served === void 0) return soundingPadding(factor, MAPLIBRE_DEFAULT_TEXT_PADDING_PX);
|
|
29247
|
+
if (typeof served === "number") return soundingPadding(factor, served);
|
|
29248
|
+
if (!Array.isArray(served) || typeof served[0] !== "string") return served;
|
|
29249
|
+
const first = served[0] === "interpolate" ? 4 : served[0] === "step" ? 2 : null;
|
|
29250
|
+
if (first === null) return served;
|
|
29251
|
+
const out = [...served];
|
|
29252
|
+
for (let i = first; i < out.length; i += 2) {
|
|
29253
|
+
if (typeof out[i] !== "number") return served;
|
|
29254
|
+
out[i] = soundingPadding(factor, out[i]);
|
|
29255
|
+
}
|
|
29256
|
+
return out;
|
|
29257
|
+
}
|
|
29258
|
+
function factorOf(scales, size) {
|
|
29259
|
+
return clampChartSymbolScale(scales[size]) / 100;
|
|
29260
|
+
}
|
|
29261
|
+
var OUTRANK_LABELS = { kind: "outrankLabels" };
|
|
29262
|
+
var CHART_SOUNDINGS_RULE = { kind: "zoomSplit", harbourFrom: 14 };
|
|
29263
|
+
var KEPT_ABOVE_SOUNDINGS_CLASSES = /* @__PURE__ */ new Set(["SEAARE", "LNDARE", "LNDRGN"]);
|
|
29264
|
+
function keptAboveSoundings(layer, splittingLights = false) {
|
|
29265
|
+
const facts = factsOf(layer);
|
|
29266
|
+
if (splittingLights && facts.objectClass === "LIGHTS") return false;
|
|
29267
|
+
if (facts.labelPriority === HAZARD_LABEL_PRIORITY) return true;
|
|
29268
|
+
if (facts.source !== void 0 && BASEMAP_SOURCES.has(facts.source)) return true;
|
|
29269
|
+
return KEPT_ABOVE_SOUNDINGS_CLASSES.has(facts.objectClass ?? "");
|
|
29270
|
+
}
|
|
29271
|
+
function fromZoom(z, value) {
|
|
29272
|
+
return ["step", ["zoom"], value ?? false, z, true];
|
|
29273
|
+
}
|
|
29274
|
+
function labelSlidersOffStandard(scales) {
|
|
29275
|
+
return ["landLabels", "waterLabels", "depthNumbers", "chartIcons"].some((s) => clampChartSymbolScale(scales[s]) !== 100);
|
|
29276
|
+
}
|
|
29277
|
+
function applyChartSymbolScalesToLayer(layer, scales, yieldText = false) {
|
|
29278
|
+
if (layer.type !== "symbol") return layer;
|
|
29279
|
+
const layout = layer.layout ?? {};
|
|
29280
|
+
const hasText = layout["text-field"] !== void 0;
|
|
29281
|
+
const hasIcon = layout["icon-image"] !== void 0;
|
|
29282
|
+
if (!hasText && !hasIcon) return layer;
|
|
29283
|
+
const facts = factsOf(layer);
|
|
29284
|
+
const nextLayout = { ...layout };
|
|
29285
|
+
let nextPaint = null;
|
|
29286
|
+
let touched = false;
|
|
29287
|
+
if (hasText) {
|
|
29288
|
+
const slider = textSliderFor(layer);
|
|
29289
|
+
const isDepthFigure = slider === "depthNumbers";
|
|
29290
|
+
const sliderFactor = slider === null ? 1 : factorOf(scales, slider);
|
|
29291
|
+
const f = isDepthFigure && facts.objectClass === "DEPCNT" ? contourValueFactor(sliderFactor) : sliderFactor;
|
|
29292
|
+
const size = f === 1 ? null : scaleSizeExpression(layout["text-size"], f, 16);
|
|
29293
|
+
if (size !== null) {
|
|
29294
|
+
touched = true;
|
|
29295
|
+
nextLayout["text-size"] = size;
|
|
29296
|
+
if (f > 1) {
|
|
29297
|
+
if (isDepthFigure) {
|
|
29298
|
+
const semibold = semiboldFontStack(layout["text-font"]);
|
|
29299
|
+
if (JSON.stringify(semibold) !== JSON.stringify(layout["text-font"])) nextLayout["text-font"] = semibold;
|
|
29300
|
+
if (facts.objectClass === "SOUNDG") {
|
|
29301
|
+
const padding = soundingPaddingValue(layout["text-padding"], f);
|
|
29302
|
+
if (padding !== void 0) nextLayout["text-padding"] = padding;
|
|
29303
|
+
} else if (facts.labelPriority === HAZARD_LABEL_PRIORITY) {
|
|
29304
|
+
nextLayout["text-ignore-placement"] = true;
|
|
29305
|
+
nextLayout["text-allow-overlap"] = true;
|
|
29306
|
+
}
|
|
29307
|
+
} else {
|
|
29308
|
+
nextLayout["text-ignore-placement"] = true;
|
|
29309
|
+
if (facts.labelPriority === HAZARD_LABEL_PRIORITY) nextLayout["text-allow-overlap"] = true;
|
|
29310
|
+
}
|
|
29311
|
+
const halo = layer.paint?.["text-halo-width"];
|
|
29312
|
+
if (isDepthFigure && halo !== void 0) {
|
|
29313
|
+
const wider = scaleSizeExpression(halo, haloFactor(sliderFactor), 0);
|
|
29314
|
+
if (wider !== null) nextPaint = { ...layer.paint ?? {}, "text-halo-width": wider };
|
|
29315
|
+
}
|
|
29316
|
+
}
|
|
29317
|
+
}
|
|
29318
|
+
if (yieldText && facts.objectClass !== "SOUNDG") {
|
|
29319
|
+
touched = true;
|
|
29320
|
+
nextLayout["text-ignore-placement"] = true;
|
|
29321
|
+
}
|
|
29322
|
+
}
|
|
29323
|
+
if (hasIcon) {
|
|
29324
|
+
const slider = iconSliderFor(layer);
|
|
29325
|
+
const f = slider === null ? 1 : factorOf(scales, slider);
|
|
29326
|
+
const size = f === 1 ? null : scaleSizeExpression(layout["icon-size"], f, 1);
|
|
29327
|
+
if (size !== null) {
|
|
29328
|
+
touched = true;
|
|
29329
|
+
nextLayout["icon-size"] = size;
|
|
29330
|
+
if (f > 1) nextLayout["icon-ignore-placement"] = true;
|
|
29331
|
+
}
|
|
29332
|
+
}
|
|
29333
|
+
if (!touched) return layer;
|
|
29334
|
+
return { ...layer, layout: nextLayout, ...nextPaint ? { paint: nextPaint } : {} };
|
|
29335
|
+
}
|
|
29336
|
+
var isSoundingText = (l) => l.type === "symbol" && l.layout?.["text-field"] !== void 0 && factsOf(l).objectClass === "SOUNDG";
|
|
29337
|
+
function applyChartSymbolScales(layers, scales, rule = CHART_SOUNDINGS_RULE) {
|
|
29338
|
+
if (scales === void 0 || ["landLabels", "waterLabels", "depthNumbers", "chartIcons"].every((s) => clampChartSymbolScale(scales[s]) === 100)) {
|
|
29339
|
+
return layers;
|
|
29340
|
+
}
|
|
29341
|
+
const outrank = labelSlidersOffStandard(scales);
|
|
29342
|
+
const soundingsAt = layers.findIndex(isSoundingText);
|
|
29343
|
+
const split = rule.kind === "zoomSplit" ? rule : null;
|
|
29344
|
+
const demoted = [];
|
|
29345
|
+
const kept = [];
|
|
29346
|
+
layers.forEach((l, i) => {
|
|
29347
|
+
const above = outrank && soundingsAt !== -1 && i > soundingsAt;
|
|
29348
|
+
const hasText = l.type === "symbol" && l.layout?.["text-field"] !== void 0;
|
|
29349
|
+
if (split !== null && above && hasText && !isSoundingText(l) && !keptAboveSoundings(l, split.splitLights === true)) {
|
|
29350
|
+
const own = applyChartSymbolScalesToLayer(l, scales, false);
|
|
29351
|
+
const layout = own.layout ?? {};
|
|
29352
|
+
demoted.push({
|
|
29353
|
+
...own,
|
|
29354
|
+
layout: {
|
|
29355
|
+
...layout,
|
|
29356
|
+
"text-allow-overlap": fromZoom(split.harbourFrom, layout["text-allow-overlap"]),
|
|
29357
|
+
"text-ignore-placement": fromZoom(split.harbourFrom, layout["text-ignore-placement"])
|
|
29358
|
+
}
|
|
29359
|
+
});
|
|
29360
|
+
return;
|
|
29361
|
+
}
|
|
29362
|
+
kept.push(applyChartSymbolScalesToLayer(l, scales, above));
|
|
29363
|
+
});
|
|
29364
|
+
if (demoted.length === 0) return kept;
|
|
29365
|
+
const at = kept.findIndex(isSoundingText);
|
|
29366
|
+
return [...kept.slice(0, at), ...demoted, ...kept.slice(at)];
|
|
29367
|
+
}
|
|
29368
|
+
function demotedBelowSoundings(layers, scales, rule = CHART_SOUNDINGS_RULE) {
|
|
29369
|
+
if (scales === void 0 || rule.kind !== "zoomSplit" || !labelSlidersOffStandard(scales)) return [];
|
|
29370
|
+
const soundingsAt = layers.findIndex(isSoundingText);
|
|
29371
|
+
if (soundingsAt === -1) return [];
|
|
29372
|
+
return layers.filter((l, i) => i > soundingsAt && l.type === "symbol" && l.layout?.["text-field"] !== void 0 && !isSoundingText(l) && !keptAboveSoundings(l, rule.splitLights === true)).map((l) => l.id);
|
|
29373
|
+
}
|
|
29374
|
+
function chartSymbolSizingCensus(layers) {
|
|
29375
|
+
const unclassified = [];
|
|
29376
|
+
const unscalable = [];
|
|
29377
|
+
for (const l of layers) {
|
|
29378
|
+
if (l.type !== "symbol") continue;
|
|
29379
|
+
const layout = l.layout ?? {};
|
|
29380
|
+
if (layout["text-field"] !== void 0) {
|
|
29381
|
+
if (textSliderFor(l) === null) unclassified.push(`${l.id} text`);
|
|
29382
|
+
else if (scaleSizeExpression(layout["text-size"], 2, 16) === null) unscalable.push(`${l.id} text`);
|
|
29383
|
+
}
|
|
29384
|
+
if (layout["icon-image"] !== void 0) {
|
|
29385
|
+
if (iconSliderFor(l) === null) unclassified.push(`${l.id} icon`);
|
|
29386
|
+
else if (scaleSizeExpression(layout["icon-size"], 2, 1) === null) unscalable.push(`${l.id} icon`);
|
|
29387
|
+
}
|
|
29388
|
+
}
|
|
29389
|
+
return { unclassified, unscalable };
|
|
29031
29390
|
}
|
|
29032
29391
|
|
|
29033
29392
|
// src/atlas/base-bundle.ts
|
|
@@ -30370,7 +30729,7 @@ function buildLabelLayer2(objectClass2, ct, sourceId = DEFAULT_REGION, depthUnit
|
|
|
30370
30729
|
if (getLabelBehavior(objectClass2) === "orientation-cross-band") {
|
|
30371
30730
|
layer.filter = LABEL_ANCHOR_FILTER;
|
|
30372
30731
|
}
|
|
30373
|
-
return
|
|
30732
|
+
return layer;
|
|
30374
30733
|
}
|
|
30375
30734
|
function getGeomTypesForClass(objectClass2, defaultType) {
|
|
30376
30735
|
if (SYMBOL_MAP[objectClass2] && defaultType === "symbol") {
|
|
@@ -31525,8 +31884,7 @@ function generateStyle(palette = "DAY", opts = {}) {
|
|
|
31525
31884
|
label: buildLabelLayer2(objectClass2, palette, sourceId, opts.depthUnits ?? "meters", {
|
|
31526
31885
|
safetyContour: opts.safetyContour,
|
|
31527
31886
|
twoShadeSoundings: opts.twoShadeSoundings,
|
|
31528
|
-
soundingFontWeight: opts.soundingFontWeight
|
|
31529
|
-
depthLabelSize: opts.depthLabelSize
|
|
31887
|
+
soundingFontWeight: opts.soundingFontWeight
|
|
31530
31888
|
})
|
|
31531
31889
|
});
|
|
31532
31890
|
}
|
|
@@ -31951,7 +32309,9 @@ function generateStyle(palette = "DAY", opts = {}) {
|
|
|
31951
32309
|
layers: finalLayers
|
|
31952
32310
|
};
|
|
31953
32311
|
const familyStyle = symbolSet === "s101" ? applyS101SymbolSet(style) : symbolSet === "chrt" ? applyChrtSymbolSet(style, palette) : symbolSet === "raster" ? applyRasterSymbolSet(style) : style;
|
|
31954
|
-
|
|
32312
|
+
const portrayed = applyEinkPortrayal(familyStyle, palette, { safetyContour: opts.safetyContour });
|
|
32313
|
+
const sized = applyChartSymbolScales(portrayed.layers, opts.symbolScales, opts.soundingsRule);
|
|
32314
|
+
return sized === portrayed.layers ? portrayed : { ...portrayed, layers: sized };
|
|
31955
32315
|
}
|
|
31956
32316
|
function generateStyleJSON(palette = "DAY", opts = {}) {
|
|
31957
32317
|
return JSON.stringify(generateStyle(palette, opts), null, 2);
|
|
@@ -32858,6 +33218,12 @@ var Chrt = class {
|
|
|
32858
33218
|
CHART_BAND_CODES,
|
|
32859
33219
|
CHART_CASCADE_CODES,
|
|
32860
33220
|
CHART_SECTIONS,
|
|
33221
|
+
CHART_SOUNDINGS_RULE,
|
|
33222
|
+
CHART_SYMBOL_SCALE,
|
|
33223
|
+
CHART_SYMBOL_SIZES,
|
|
33224
|
+
CHART_SYMBOL_SIZE_LABELS,
|
|
33225
|
+
CHART_SYMBOL_SIZE_REACH,
|
|
33226
|
+
CHART_SYMBOL_SIZE_WIRE,
|
|
32861
33227
|
CHRTRASTER_REF_CROPS,
|
|
32862
33228
|
CHRTRASTER_SVGS,
|
|
32863
33229
|
CHRT_ATON_COLORS,
|
|
@@ -32871,7 +33237,6 @@ var Chrt = class {
|
|
|
32871
33237
|
ChrtError,
|
|
32872
33238
|
DEFAULT_CLICK_TOLERANCE,
|
|
32873
33239
|
DEFAULT_CUSTOM_STYLE_CONFIG,
|
|
32874
|
-
DEFAULT_DEPTH_LABEL_SIZE,
|
|
32875
33240
|
DEFAULT_INSPECT_CLASS_RANK,
|
|
32876
33241
|
DEFAULT_LABEL_SETTINGS,
|
|
32877
33242
|
DEFAULT_NAV_AID_SETTINGS,
|
|
@@ -32883,14 +33248,14 @@ var Chrt = class {
|
|
|
32883
33248
|
DEFAULT_WATER_BODY_SETTINGS,
|
|
32884
33249
|
DEPARE_FILL_BRANCH_TOKENS,
|
|
32885
33250
|
DEPARE_FILL_FALLBACK_TOKEN,
|
|
32886
|
-
|
|
32887
|
-
DEPTH_LABEL_SIZES,
|
|
33251
|
+
DEPTH_FIGURE_CLASSES,
|
|
32888
33252
|
DRAPEABLE_LAYER_TYPES,
|
|
32889
33253
|
EINK_COLOR_TABLES,
|
|
32890
33254
|
EINK_DANGER_PATTERN,
|
|
32891
33255
|
EINK_DOTS_PATTERN,
|
|
32892
33256
|
EINK_HATCH_PATTERN,
|
|
32893
33257
|
EINK_MONO_GREYS,
|
|
33258
|
+
HAZARD_LABEL_PRIORITY,
|
|
32894
33259
|
INSPECT_CLASS_RANK,
|
|
32895
33260
|
INSPECT_RANK_DEVIATIONS,
|
|
32896
33261
|
InteractClient,
|
|
@@ -32906,7 +33271,8 @@ var Chrt = class {
|
|
|
32906
33271
|
LAND_ATTRIBUTION,
|
|
32907
33272
|
LAND_BUILD_MAXZOOM,
|
|
32908
33273
|
LAND_REGION,
|
|
32909
|
-
|
|
33274
|
+
LAND_TEXT_CLASSES,
|
|
33275
|
+
MAPLIBRE_DEFAULT_TEXT_PADDING_PX,
|
|
32910
33276
|
NAUTICAL_SYMBOLS,
|
|
32911
33277
|
NAV_AID_LAYER_GROUPS,
|
|
32912
33278
|
NAV_AID_QUERY_LAYERS,
|
|
@@ -32915,6 +33281,7 @@ var Chrt = class {
|
|
|
32915
33281
|
NON_SOLAS_DISCLAIMER,
|
|
32916
33282
|
NON_SOLAS_DISCLAIMER_SHORT,
|
|
32917
33283
|
OPAQUE_SPLIT_OF,
|
|
33284
|
+
OUTRANK_LABELS,
|
|
32918
33285
|
OfflineError,
|
|
32919
33286
|
OfflineStyleError,
|
|
32920
33287
|
PLACENAME_LAND_CLASSES,
|
|
@@ -32949,9 +33316,14 @@ var Chrt = class {
|
|
|
32949
33316
|
S52_LOOKUP,
|
|
32950
33317
|
S52_NIGHT,
|
|
32951
33318
|
S52_PATTERN_SPRITE_PREFIX,
|
|
33319
|
+
SERVED_FONT_STACKS,
|
|
33320
|
+
SERVED_SOUNDING_PADDING_PX,
|
|
32952
33321
|
SIGPER_TOLERANCE_SECONDS,
|
|
32953
33322
|
SIGSEQ_MAX_TERMS,
|
|
32954
33323
|
SOUNDING_LAYERS,
|
|
33324
|
+
SOUNDING_PADDING_PER_FACTOR,
|
|
33325
|
+
STANDARD_CHART_SYMBOL_SCALES,
|
|
33326
|
+
SYMBOL_ANNOTATION_TEXT_CLASSES,
|
|
32955
33327
|
SYMBOL_FAMILIES,
|
|
32956
33328
|
SYMBOL_FAMILY_META,
|
|
32957
33329
|
SYMBOL_GROUPS,
|
|
@@ -32959,12 +33331,14 @@ var Chrt = class {
|
|
|
32959
33331
|
TileAuth,
|
|
32960
33332
|
TileTokenError,
|
|
32961
33333
|
WATER_BODY_LAYER_GROUPS,
|
|
33334
|
+
WATER_TEXT_CLASSES,
|
|
32962
33335
|
WeatherEndpoint,
|
|
32963
33336
|
applyBaseBundle,
|
|
33337
|
+
applyChartSymbolScales,
|
|
33338
|
+
applyChartSymbolScalesToLayer,
|
|
32964
33339
|
applyChrtSymbolSet,
|
|
32965
33340
|
applyColorTheme,
|
|
32966
33341
|
applyCustomStyleSettings,
|
|
32967
|
-
applyDepthLabelSize,
|
|
32968
33342
|
applyEinkPortrayal,
|
|
32969
33343
|
applyRasterSymbolSet,
|
|
32970
33344
|
applyS101SymbolSet,
|
|
@@ -32991,19 +33365,24 @@ var Chrt = class {
|
|
|
32991
33365
|
capLuminance,
|
|
32992
33366
|
cellBandCharacters,
|
|
32993
33367
|
cellBandMatch,
|
|
33368
|
+
chartSymbolSizingCensus,
|
|
32994
33369
|
chrtAtonTintExpression,
|
|
32995
33370
|
chrtHouseColor,
|
|
32996
33371
|
chrtLightTintExpression,
|
|
33372
|
+
clampChartSymbolScale,
|
|
32997
33373
|
collectCandidates,
|
|
32998
33374
|
collectClickCandidates,
|
|
32999
33375
|
combineWithBandFilter,
|
|
33376
|
+
contourValueFactor,
|
|
33000
33377
|
contrastRatio,
|
|
33001
33378
|
daymarkColor,
|
|
33002
33379
|
decimateFeatures,
|
|
33003
33380
|
decodeAreaFeatureProps,
|
|
33004
33381
|
decodeBridgeProps,
|
|
33005
33382
|
decodeCandidate,
|
|
33383
|
+
decodeChartSymbolScale,
|
|
33006
33384
|
decodeNavAidProps,
|
|
33385
|
+
demotedBelowSoundings,
|
|
33007
33386
|
depareColor,
|
|
33008
33387
|
depareFillExpression,
|
|
33009
33388
|
depthAreaClassLayerId,
|
|
@@ -33013,6 +33392,7 @@ var Chrt = class {
|
|
|
33013
33392
|
drapedFirst,
|
|
33014
33393
|
extractNavAidDesignation,
|
|
33015
33394
|
featureIdentity,
|
|
33395
|
+
fromZoom,
|
|
33016
33396
|
generateCustomStyle,
|
|
33017
33397
|
generateSpriteManifest,
|
|
33018
33398
|
generateSpriteSheet,
|
|
@@ -33040,9 +33420,11 @@ var Chrt = class {
|
|
|
33040
33420
|
getThemedS101Svg,
|
|
33041
33421
|
getThemedS52Svg,
|
|
33042
33422
|
getTopmarkMeaning,
|
|
33423
|
+
haloFactor,
|
|
33043
33424
|
hazardColor,
|
|
33044
33425
|
hazardFillExpression,
|
|
33045
33426
|
iconExpressionForFamily,
|
|
33427
|
+
iconSliderFor,
|
|
33046
33428
|
isDepthAreaClassLayerId,
|
|
33047
33429
|
isDrapeable,
|
|
33048
33430
|
isEinkColorTable,
|
|
@@ -33054,6 +33436,7 @@ var Chrt = class {
|
|
|
33054
33436
|
isSoundingLayerVisible,
|
|
33055
33437
|
isVisibleInMode,
|
|
33056
33438
|
isWaterBodyLayerVisible,
|
|
33439
|
+
keptAboveSoundings,
|
|
33057
33440
|
labelSortKey,
|
|
33058
33441
|
lampRhythmColour,
|
|
33059
33442
|
lampRhythmOpacity,
|
|
@@ -33066,7 +33449,6 @@ var Chrt = class {
|
|
|
33066
33449
|
normalizeTheme,
|
|
33067
33450
|
opaqueSplitBaseOf,
|
|
33068
33451
|
paginate,
|
|
33069
|
-
parseDepthLabelSize,
|
|
33070
33452
|
parseListCodes,
|
|
33071
33453
|
parseSigseqTerms,
|
|
33072
33454
|
parseSymbolFamily,
|
|
@@ -33089,12 +33471,19 @@ var Chrt = class {
|
|
|
33089
33471
|
safetyContourValues,
|
|
33090
33472
|
sanitizeCustomStyleConfig,
|
|
33091
33473
|
scaleLinearLight,
|
|
33474
|
+
scaleSizeExpression,
|
|
33092
33475
|
scaleSizeValue,
|
|
33093
33476
|
scaminToMinZoom,
|
|
33094
33477
|
sectorLimitToArcBearing,
|
|
33478
|
+
semiboldFontStack,
|
|
33479
|
+
snapChartSymbolScale,
|
|
33480
|
+
soundingPadding,
|
|
33481
|
+
soundingPaddingValue,
|
|
33095
33482
|
splitOpaqueDepthAreas,
|
|
33483
|
+
stepChartSymbolScale,
|
|
33096
33484
|
styleModeBand,
|
|
33097
33485
|
terrainStackCount,
|
|
33486
|
+
textSliderFor,
|
|
33098
33487
|
themeChrtGlyph,
|
|
33099
33488
|
tileTemplate,
|
|
33100
33489
|
uncoveredSectorArcs,
|