@diagrammo/dgmo 0.21.0 → 0.22.0
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 +16 -6
- package/dist/advanced.cjs +2521 -623
- package/dist/advanced.d.cts +917 -534
- package/dist/advanced.d.ts +917 -534
- package/dist/advanced.js +2516 -623
- package/dist/auto.cjs +2333 -608
- package/dist/auto.js +119 -119
- package/dist/auto.mjs +2335 -609
- package/dist/cli.cjs +168 -168
- package/dist/editor.cjs +13 -15
- package/dist/editor.js +13 -15
- package/dist/highlight.cjs +15 -12
- package/dist/highlight.js +15 -12
- package/dist/index.cjs +2317 -595
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2319 -596
- package/dist/internal.cjs +2521 -623
- package/dist/internal.d.cts +917 -534
- package/dist/internal.d.ts +917 -534
- package/dist/internal.js +2516 -623
- package/dist/map-data/PROVENANCE.json +1 -1
- package/dist/map-data/mountain-ranges.json +1 -0
- package/dist/map-data/water-bodies.json +1 -0
- package/docs/language-reference.md +44 -31
- package/gallery/fixtures/map-categorical-world.dgmo +16 -0
- package/gallery/fixtures/map-categorical.dgmo +0 -1
- package/gallery/fixtures/map-choropleth.dgmo +0 -1
- package/gallery/fixtures/map-coastline.dgmo +7 -0
- package/gallery/fixtures/map-colorize.dgmo +11 -0
- package/gallery/fixtures/map-direct-color.dgmo +9 -0
- package/gallery/fixtures/map-reference-world.dgmo +11 -0
- package/gallery/fixtures/map-region-scope.dgmo +0 -3
- package/gallery/fixtures/map-route.dgmo +0 -1
- package/package.json +1 -1
- package/src/advanced.ts +26 -1
- package/src/boxes-and-lines/renderer.ts +39 -12
- package/src/cli.ts +1 -1
- package/src/completion.ts +32 -24
- package/src/cycle/renderer.ts +14 -1
- package/src/d3.ts +23 -11
- package/src/editor/highlight-api.ts +4 -0
- package/src/editor/keywords.ts +13 -15
- package/src/infra/renderer.ts +35 -7
- package/src/map/colorize.ts +54 -0
- package/src/map/context-labels.ts +429 -0
- package/src/map/data/PROVENANCE.json +1 -1
- package/src/map/data/mountain-ranges.json +1 -0
- package/src/map/data/types.ts +34 -0
- package/src/map/data/water-bodies.json +1 -0
- package/src/map/dimensions.ts +117 -0
- package/src/map/geo-query.ts +295 -0
- package/src/map/geo.ts +305 -2
- package/src/map/invert.ts +111 -0
- package/src/map/layout.ts +1504 -335
- package/src/map/load-data.ts +16 -2
- package/src/map/parser.ts +57 -111
- package/src/map/renderer.ts +556 -13
- package/src/map/resolved-types.ts +24 -2
- package/src/map/resolver.ts +237 -67
- package/src/map/types.ts +39 -23
- package/src/mindmap/renderer.ts +10 -1
- package/src/palettes/atlas.ts +77 -0
- package/src/palettes/blueprint.ts +73 -0
- package/src/palettes/color-utils.ts +58 -1
- package/src/palettes/index.ts +12 -3
- package/src/palettes/slate.ts +73 -0
- package/src/palettes/tidewater.ts +73 -0
- package/src/render.ts +8 -1
- package/src/tech-radar/renderer.ts +3 -0
- package/src/tech-radar/types.ts +3 -0
- package/src/utils/d3-types.ts +5 -0
- package/src/utils/legend-layout.ts +21 -4
- package/src/utils/legend-types.ts +7 -0
- package/src/utils/reserved-key-registry.ts +3 -0
- package/src/palettes/bold.ts +0 -67
package/dist/internal.d.cts
CHANGED
|
@@ -2,6 +2,7 @@ import { EChartsOption } from 'echarts';
|
|
|
2
2
|
import * as d3Selection from 'd3-selection';
|
|
3
3
|
import { Selection } from 'd3-selection';
|
|
4
4
|
import * as d3Scale from 'd3-scale';
|
|
5
|
+
import { GeoProjection } from 'd3-geo';
|
|
5
6
|
|
|
6
7
|
type DgmoSeverity = 'error' | 'warning';
|
|
7
8
|
interface DgmoError {
|
|
@@ -78,6 +79,380 @@ interface ParseInArrowLabelResult {
|
|
|
78
79
|
*/
|
|
79
80
|
declare function parseInArrowLabel(rawLabel: string, lineNumber: number): ParseInArrowLabelResult;
|
|
80
81
|
|
|
82
|
+
/** A single entry inside a tag group: `Value color` */
|
|
83
|
+
interface TagEntry {
|
|
84
|
+
readonly value: string;
|
|
85
|
+
readonly color: string;
|
|
86
|
+
readonly lineNumber: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A tag group block: heading + entries.
|
|
90
|
+
*
|
|
91
|
+
* Parser internals build via `Writable<TagGroup>` from `utils/brand.ts`;
|
|
92
|
+
* once returned to a chart-type parser, consumers see the readonly view.
|
|
93
|
+
*/
|
|
94
|
+
interface TagGroup {
|
|
95
|
+
readonly name: string;
|
|
96
|
+
readonly alias?: string;
|
|
97
|
+
readonly entries: readonly TagEntry[];
|
|
98
|
+
/** Default value for nodes without explicit metadata. First entry unless another is marked `default`. */
|
|
99
|
+
readonly defaultValue?: string;
|
|
100
|
+
readonly lineNumber: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** A POI / route-stop position: gazetteer name (+ optional ISO scope) or coords. */
|
|
104
|
+
type PoiPos = {
|
|
105
|
+
readonly kind: 'coords';
|
|
106
|
+
readonly lat: number;
|
|
107
|
+
readonly lon: number;
|
|
108
|
+
} | {
|
|
109
|
+
readonly kind: 'name';
|
|
110
|
+
readonly name: string;
|
|
111
|
+
readonly scope?: string;
|
|
112
|
+
};
|
|
113
|
+
/** One-shot directives (§24B.2/.7). Values are raw strings unless typed.
|
|
114
|
+
*
|
|
115
|
+
* COSMETIC DEFAULTS ARE ON. Every basemap feature renders by default; the only
|
|
116
|
+
* control is a bare `no-*` opt-out flag that sets the matching `noXxx` boolean.
|
|
117
|
+
* Absent (undefined) = feature ON — so render gates test `!== true`, never
|
|
118
|
+
* `=== true`. There are NO positive opt-in cosmetic flags (§24B.2). */
|
|
119
|
+
interface MapDirectives {
|
|
120
|
+
/** Legend label for the region value ramp (`region-metric <label>`). */
|
|
121
|
+
regionMetric?: string;
|
|
122
|
+
/** Recognized color NAME for the choropleth ramp hue, peeled off the
|
|
123
|
+
* `region-metric` trailing token (§24B.3). Defaults to red when absent. */
|
|
124
|
+
regionMetricColor?: string;
|
|
125
|
+
/** Legend label for the POI value (marker size) channel (`poi-metric`). */
|
|
126
|
+
poiMetric?: string;
|
|
127
|
+
/** Legend label for the edge/leg value (thickness) channel (`flow-metric`). */
|
|
128
|
+
flowMetric?: string;
|
|
129
|
+
/** Default ISO scope for bare-name resolution (§24B.8): a 3166-1 country
|
|
130
|
+
* (`locale US`) or 3166-2 subdivision (`locale US-GA`). The country part
|
|
131
|
+
* biases ambiguous bare cities to that nation; the subdivision part further
|
|
132
|
+
* prefers that state. Inferred from content; explicit only to steer a guess. */
|
|
133
|
+
locale?: string;
|
|
134
|
+
activeTag?: string;
|
|
135
|
+
caption?: string;
|
|
136
|
+
/** `no-legend` — suppress the legend (default-on). */
|
|
137
|
+
noLegend?: boolean;
|
|
138
|
+
/** `no-coastline` — suppress the faint nautical-chart water-lines along
|
|
139
|
+
* coasts/shorelines (default-on; geometry derived from drawn region paths). */
|
|
140
|
+
noCoastline?: boolean;
|
|
141
|
+
/** `no-relief` — suppress mountain-range relief hachures. Relief is default-on
|
|
142
|
+
* but auto-gated to dataless reference maps at continent/world zoom (§24B.2). */
|
|
143
|
+
noRelief?: boolean;
|
|
144
|
+
/** `no-context-labels` — suppress the orientation backdrop (water-body names +
|
|
145
|
+
* unreferenced notable country names), distinct from `region-labels`. */
|
|
146
|
+
noContextLabels?: boolean;
|
|
147
|
+
/** `no-region-labels` — suppress region labels (default-on, full→abbrev→hide). */
|
|
148
|
+
noRegionLabels?: boolean;
|
|
149
|
+
/** `no-poi-labels` — suppress POI labels (default-on, collision-managed auto). */
|
|
150
|
+
noPoiLabels?: boolean;
|
|
151
|
+
/** `no-colorize` — force the plain green-land reference dress even when regions
|
|
152
|
+
* are referenced (regions are auto-coloured by default; §24B colorize). A
|
|
153
|
+
* no-op under data — the basemap is already gray there. */
|
|
154
|
+
noColorize?: boolean;
|
|
155
|
+
}
|
|
156
|
+
/** A region-fill: a subdivision name with an optional score and/or tag values
|
|
157
|
+
* (§24B.3/.4 — BOTH may be present; bivariate seam). */
|
|
158
|
+
interface MapRegion {
|
|
159
|
+
readonly name: string;
|
|
160
|
+
/** Optional trailing ISO scope qualifier (§24B.8) — a 3166-1 country code
|
|
161
|
+
* (`Georgia US` → US context) or 3166-2 subdivision (`Georgia US-GA`).
|
|
162
|
+
* Forces the country-vs-state interpretation and silences the ambiguity warning. */
|
|
163
|
+
readonly scope?: string;
|
|
164
|
+
/** Numeric value → choropleth shade (§24B.3). Lifted out of `meta`. */
|
|
165
|
+
readonly value?: number;
|
|
166
|
+
/** §1.5 trailing-token color NAME → flat categorical override fill (§24B.4);
|
|
167
|
+
* painted regardless of the active colouring dimension, no legend entry. */
|
|
168
|
+
readonly color?: string;
|
|
169
|
+
/** Tag values keyed by lowercased tag GROUP name (alias is resolved away). */
|
|
170
|
+
readonly tags: Readonly<Record<string, string>>;
|
|
171
|
+
/** Any remaining reserved keys captured verbatim (`label`/`style`/…). */
|
|
172
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
173
|
+
readonly lineNumber: number;
|
|
174
|
+
}
|
|
175
|
+
/** A point of interest (§24B.5). `meta` holds the numeric `value` (→ marker
|
|
176
|
+
* size) and `style` verbatim; `label` is lifted out. */
|
|
177
|
+
interface MapPoi {
|
|
178
|
+
readonly pos: PoiPos;
|
|
179
|
+
readonly alias?: string;
|
|
180
|
+
readonly label?: string;
|
|
181
|
+
/** §1.5 trailing-token color NAME → flat marker fill (§24B.5); wins over a
|
|
182
|
+
* tag color and the default orange. */
|
|
183
|
+
readonly color?: string;
|
|
184
|
+
readonly tags: Readonly<Record<string, string>>;
|
|
185
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
186
|
+
readonly lineNumber: number;
|
|
187
|
+
}
|
|
188
|
+
/** One leg of a route (§24B.6): an edge from the previous stop to `dest`. Reuses
|
|
189
|
+
* the edge arrow idiom — in-arrow text = leg label, `value:` = leg thickness,
|
|
190
|
+
* `->`/`~>` (or the header `style: arc`) = shape. Stop-targeted keys on the leg
|
|
191
|
+
* line (`tag`, `label:`) decorate the DESTINATION point. */
|
|
192
|
+
interface MapRouteLeg {
|
|
193
|
+
readonly label?: string;
|
|
194
|
+
readonly style: 'straight' | 'arc';
|
|
195
|
+
readonly value?: string;
|
|
196
|
+
readonly dest: PoiPos;
|
|
197
|
+
readonly destAlias?: string;
|
|
198
|
+
readonly destLabel?: string;
|
|
199
|
+
readonly destTags: Readonly<Record<string, string>>;
|
|
200
|
+
readonly lineNumber: number;
|
|
201
|
+
}
|
|
202
|
+
/** An ordered, auto-numbered route (§24B.6): `route <origin> [style: arc]` + a
|
|
203
|
+
* sequence of indented arrow legs, each continuing from the previous stop.
|
|
204
|
+
* Repeat the origin as a leg's destination to close a loop. */
|
|
205
|
+
interface MapRoute {
|
|
206
|
+
readonly origin: PoiPos;
|
|
207
|
+
readonly originAlias?: string;
|
|
208
|
+
readonly originLabel?: string;
|
|
209
|
+
readonly originValue?: string;
|
|
210
|
+
readonly originTags: Readonly<Record<string, string>>;
|
|
211
|
+
readonly style: 'straight' | 'arc';
|
|
212
|
+
readonly legs: readonly MapRouteLeg[];
|
|
213
|
+
readonly lineNumber: number;
|
|
214
|
+
}
|
|
215
|
+
/** A connector (§24B.6). Endpoints are RAW identifier strings (name or alias);
|
|
216
|
+
* binding to POIs/regions is the resolver's job. `~>`→arc; `--`→directed:false. */
|
|
217
|
+
interface MapEdge {
|
|
218
|
+
readonly from: string;
|
|
219
|
+
readonly to: string;
|
|
220
|
+
readonly label?: string;
|
|
221
|
+
readonly directed: boolean;
|
|
222
|
+
readonly style: 'straight' | 'arc';
|
|
223
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
224
|
+
readonly lineNumber: number;
|
|
225
|
+
}
|
|
226
|
+
interface ParsedMap {
|
|
227
|
+
readonly title: string | null;
|
|
228
|
+
readonly titleLineNumber: number | null;
|
|
229
|
+
readonly directives: MapDirectives;
|
|
230
|
+
readonly tagGroups: readonly TagGroup[];
|
|
231
|
+
readonly regions: readonly MapRegion[];
|
|
232
|
+
readonly pois: readonly MapPoi[];
|
|
233
|
+
readonly routes: readonly MapRoute[];
|
|
234
|
+
readonly edges: readonly MapEdge[];
|
|
235
|
+
readonly options: Readonly<Record<string, string>>;
|
|
236
|
+
readonly diagnostics: readonly DgmoError[];
|
|
237
|
+
readonly error: string | null;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/** A TopoJSON topology (world-coarse/world-detail keyed by ISO 3166-1 alpha-2;
|
|
241
|
+
* us-states keyed by ISO 3166-2). Geometry feature `id` is the ISO code;
|
|
242
|
+
* `properties.name` is the display string. Kept loose to avoid a topojson dep. */
|
|
243
|
+
interface BoundaryTopology {
|
|
244
|
+
type: 'Topology';
|
|
245
|
+
objects: Record<string, {
|
|
246
|
+
type: string;
|
|
247
|
+
geometries: BoundaryGeometry[];
|
|
248
|
+
}>;
|
|
249
|
+
arcs: number[][][];
|
|
250
|
+
transform?: {
|
|
251
|
+
scale: [number, number];
|
|
252
|
+
translate: [number, number];
|
|
253
|
+
};
|
|
254
|
+
bbox?: number[];
|
|
255
|
+
}
|
|
256
|
+
interface BoundaryGeometry {
|
|
257
|
+
type: string;
|
|
258
|
+
/** ISO code: alpha-2 (countries) or 3166-2 `US-XX` (states). */
|
|
259
|
+
id: string;
|
|
260
|
+
properties: {
|
|
261
|
+
name: string;
|
|
262
|
+
};
|
|
263
|
+
arcs?: unknown;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* A gazetteer city entry: `[lat, lon, iso, pop, name, sub?]`.
|
|
267
|
+
* - `lat`/`lon` — rounded to 3 decimals.
|
|
268
|
+
* - `iso` — ISO 3166-1 alpha-2 country code.
|
|
269
|
+
* - `pop` — population.
|
|
270
|
+
* - `name` — canonical display name (case/accents preserved).
|
|
271
|
+
* - `sub` — ISO 3166-2 subdivision (US cities only in v1, e.g. `US-OR`); absent otherwise.
|
|
272
|
+
*/
|
|
273
|
+
type GazetteerEntry = [
|
|
274
|
+
lat: number,
|
|
275
|
+
lon: number,
|
|
276
|
+
iso: string,
|
|
277
|
+
pop: number,
|
|
278
|
+
name: string,
|
|
279
|
+
sub?: string
|
|
280
|
+
];
|
|
281
|
+
interface Gazetteer {
|
|
282
|
+
/** Every city, stored once. `byName`/`alt` reference cities by array index
|
|
283
|
+
* (normalized — no tuple duplication; geonameid is a build-time-only linker). */
|
|
284
|
+
cities: GazetteerEntry[];
|
|
285
|
+
/** Folded (NFD, diacritic-stripped, lowercased) name → indices into `cities`.
|
|
286
|
+
* Always an array; length > 1 for same-named cities (Portland US-OR / US-ME). */
|
|
287
|
+
byName: Record<string, number[]>;
|
|
288
|
+
/** Folded alias → index into `cities`. Never collides with a `byName` key. */
|
|
289
|
+
alt: Record<string, number>;
|
|
290
|
+
}
|
|
291
|
+
/** Water-feature class (Natural Earth `featurecla`, rivers/reefs excluded). */
|
|
292
|
+
type WaterKind = 'ocean' | 'sea' | 'gulf' | 'bay' | 'strait' | 'channel' | 'sound';
|
|
293
|
+
/**
|
|
294
|
+
* A water-body label entry: `[lat, lon, name, tier, kind, alt?]`.
|
|
295
|
+
* - `lat`/`lon` — label anchor (Natural Earth inner point), rounded to 3 decimals.
|
|
296
|
+
* - `name` — full display name (no abbreviation exists for water bodies).
|
|
297
|
+
* - `tier` — Natural Earth `scalerank` (0 = most prominent → orientation priority).
|
|
298
|
+
* - `kind` — feature class (drives styling/priority bucketing).
|
|
299
|
+
* - `alt` — optional extra anchor points `[lat, lon][]`; the layout picks the
|
|
300
|
+
* one nearest the viewport center (Decision 5 multi-anchor seam). Absent today.
|
|
301
|
+
*/
|
|
302
|
+
type WaterBodyEntry = [
|
|
303
|
+
lat: number,
|
|
304
|
+
lon: number,
|
|
305
|
+
name: string,
|
|
306
|
+
tier: number,
|
|
307
|
+
kind: WaterKind,
|
|
308
|
+
alt?: ReadonlyArray<readonly [number, number]>
|
|
309
|
+
];
|
|
310
|
+
interface WaterBodies {
|
|
311
|
+
/** Deterministically ordered (tier, then name). Generated from Natural Earth
|
|
312
|
+
* marine polys by scripts/build-map-data.mjs into `water-bodies.json`. */
|
|
313
|
+
readonly entries: readonly WaterBodyEntry[];
|
|
314
|
+
}
|
|
315
|
+
/** A fill-able region (country or US state) — the display name + its ISO id +
|
|
316
|
+
* layer. Powers region-name autocomplete (completion-only; the renderer derives
|
|
317
|
+
* names from the topology directly). Extracted from the topologies by
|
|
318
|
+
* scripts/build-map-data.mjs into `region-names.json`. */
|
|
319
|
+
interface RegionName {
|
|
320
|
+
/** Display name (original casing), e.g. `California` / `Germany`. */
|
|
321
|
+
readonly name: string;
|
|
322
|
+
/** ISO 3166-1 alpha-2 (country) or 3166-2 `US-XX` (state). */
|
|
323
|
+
readonly iso: string;
|
|
324
|
+
readonly layer: 'country' | 'us-state';
|
|
325
|
+
}
|
|
326
|
+
interface RegionNames {
|
|
327
|
+
/** Deterministically ordered (layer, then name). */
|
|
328
|
+
readonly regions: readonly RegionName[];
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/** The four static assets, injected into the pure resolver (DI). */
|
|
332
|
+
interface MapData {
|
|
333
|
+
worldCoarse: BoundaryTopology;
|
|
334
|
+
worldDetail: BoundaryTopology;
|
|
335
|
+
usStates: BoundaryTopology;
|
|
336
|
+
/** Major lakes (Natural Earth 110m) drawn as water over land — e.g. the Great
|
|
337
|
+
* Lakes. Optional so hand-built test fixtures need not supply it. */
|
|
338
|
+
lakes?: BoundaryTopology;
|
|
339
|
+
/** Major river centerlines (Natural Earth 110m) drawn as thin water lines over
|
|
340
|
+
* land — e.g. the Amazon, Nile, Mississippi. Optional, like `lakes`. */
|
|
341
|
+
rivers?: BoundaryTopology;
|
|
342
|
+
/** Notable mountain-range polygons (Natural Earth 50m geography regions) drawn
|
|
343
|
+
* as a subtle gradient relief cue over base land when the `relief` directive
|
|
344
|
+
* is on — e.g. the Rockies, Andes, Himalayas. Optional, like `lakes`. */
|
|
345
|
+
mountainRanges?: BoundaryTopology;
|
|
346
|
+
/** North-America-clipped 10m country land, used as crisp neighbour context
|
|
347
|
+
* under the albers-usa US view so Canada/Mexico match the 10m states instead
|
|
348
|
+
* of the coarser world tiers. Optional, like `lakes`. */
|
|
349
|
+
naLand?: BoundaryTopology;
|
|
350
|
+
/** North-America-clipped 10m major lakes (Great Lakes etc.), used in place of
|
|
351
|
+
* the coarse `lakes` under the albers-usa US view. Optional. */
|
|
352
|
+
naLakes?: BoundaryTopology;
|
|
353
|
+
/** Water-body orientation labels (Natural Earth marine polys) drawn when the
|
|
354
|
+
* `context-labels` directive is on — oceans/seas/gulfs/bays/etc. Optional, so
|
|
355
|
+
* hand-built test fixtures and older bundles need not supply it. */
|
|
356
|
+
waterBodies?: WaterBodies;
|
|
357
|
+
gazetteer: Gazetteer;
|
|
358
|
+
}
|
|
359
|
+
type ProjectionFamily = 'equal-earth' | 'natural-earth' | 'equirectangular' | 'albers-usa' | 'mercator';
|
|
360
|
+
/** Which geometry layers the renderer draws. */
|
|
361
|
+
interface Basemaps {
|
|
362
|
+
/** World country tier: coarse (world-scale) | detail (regional/zoom). */
|
|
363
|
+
world: 'coarse' | 'detail';
|
|
364
|
+
/** Loaded subdivision layers (v1: only 'us-states'). */
|
|
365
|
+
subdivisions: Array<'us-states'>;
|
|
366
|
+
}
|
|
367
|
+
interface ResolvedRegion {
|
|
368
|
+
/** ISO code: alpha-2 (country) or 3166-2 `US-XX` (state) — the geometry id. */
|
|
369
|
+
readonly iso: string;
|
|
370
|
+
readonly name: string;
|
|
371
|
+
readonly layer: 'country' | 'us-state';
|
|
372
|
+
readonly value?: number;
|
|
373
|
+
/** §1.5 trailing-token color NAME → flat override fill (§24B.4). */
|
|
374
|
+
readonly color?: string;
|
|
375
|
+
readonly tags: Readonly<Record<string, string>>;
|
|
376
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
377
|
+
readonly lineNumber: number;
|
|
378
|
+
}
|
|
379
|
+
interface ResolvedPoi {
|
|
380
|
+
/** Folded registry id (alias|name folded, or `@lat,lon` for coord POIs). */
|
|
381
|
+
readonly id: string;
|
|
382
|
+
/** Display name (original casing): the city/place name, alias, or endpoint
|
|
383
|
+
* string. The on-map label falls back to this when `label` is absent (the
|
|
384
|
+
* folded `id` is for binding, not display). */
|
|
385
|
+
readonly name?: string;
|
|
386
|
+
readonly lat: number;
|
|
387
|
+
readonly lon: number;
|
|
388
|
+
readonly label?: string;
|
|
389
|
+
/** §1.5 trailing-token color NAME → flat marker fill (§24B.5). */
|
|
390
|
+
readonly color?: string;
|
|
391
|
+
readonly tags: Readonly<Record<string, string>>;
|
|
392
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
393
|
+
readonly lineNumber: number;
|
|
394
|
+
/** True when created from an undeclared edge/route endpoint (§24B.10). */
|
|
395
|
+
readonly implicit?: boolean;
|
|
396
|
+
}
|
|
397
|
+
interface ResolvedEdge {
|
|
398
|
+
readonly fromId: string;
|
|
399
|
+
readonly toId: string;
|
|
400
|
+
readonly label?: string;
|
|
401
|
+
readonly directed: boolean;
|
|
402
|
+
readonly style: 'straight' | 'arc';
|
|
403
|
+
readonly meta: Readonly<Record<string, string>>;
|
|
404
|
+
readonly lineNumber: number;
|
|
405
|
+
}
|
|
406
|
+
interface ResolvedRouteLeg {
|
|
407
|
+
readonly fromId: string;
|
|
408
|
+
readonly toId: string;
|
|
409
|
+
readonly label?: string;
|
|
410
|
+
readonly style: 'straight' | 'arc';
|
|
411
|
+
readonly value?: string;
|
|
412
|
+
readonly lineNumber: number;
|
|
413
|
+
}
|
|
414
|
+
interface ResolvedRoute {
|
|
415
|
+
/** Ordered UNIQUE stop ids (for numbering + the origin marker). A loop-closing
|
|
416
|
+
* leg whose destination is an earlier stop adds a leg but no duplicate stop. */
|
|
417
|
+
readonly stopIds: readonly string[];
|
|
418
|
+
readonly legs: readonly ResolvedRouteLeg[];
|
|
419
|
+
readonly lineNumber: number;
|
|
420
|
+
}
|
|
421
|
+
/** Geographic bounding box `[[west, south], [east, north]]` in degrees.
|
|
422
|
+
*
|
|
423
|
+
* WRAP CONVENTION (#12): for an antimeridian-crossing extent the resolver keeps
|
|
424
|
+
* `west` in [−180, 180] and returns `east` UNWRAPPED in (180, 540] (i.e.
|
|
425
|
+
* `east = west + span`, span ≤ 360). So `east > 180` signals a dateline-crossing
|
|
426
|
+
* extent; the renderer (step 4) must mod `east` back into [−180, 180] (or shift
|
|
427
|
+
* the projection's center) rather than assume `east ≤ 180`. `south`/`north` are
|
|
428
|
+
* always plain degrees in [−90, 90]. */
|
|
429
|
+
type GeoExtent = [[number, number], [number, number]];
|
|
430
|
+
interface ResolvedMap {
|
|
431
|
+
readonly title: string | null;
|
|
432
|
+
/** DEAD — the `subtitle` directive was removed (2026-06-02 defaults-on review).
|
|
433
|
+
* Never populated; the renderer's subtitle branch is now unreachable. Left for
|
|
434
|
+
* a later cleanup pass. */
|
|
435
|
+
readonly subtitle?: string;
|
|
436
|
+
readonly caption?: string;
|
|
437
|
+
readonly tagGroups: readonly TagGroup[];
|
|
438
|
+
readonly directives: MapDirectives;
|
|
439
|
+
readonly basemaps: Basemaps;
|
|
440
|
+
readonly regions: readonly ResolvedRegion[];
|
|
441
|
+
readonly pois: readonly ResolvedPoi[];
|
|
442
|
+
readonly edges: readonly ResolvedEdge[];
|
|
443
|
+
readonly routes: readonly ResolvedRoute[];
|
|
444
|
+
readonly extent: GeoExtent;
|
|
445
|
+
readonly projection: ProjectionFamily;
|
|
446
|
+
/** POI-only region framing: the region(s) that CONTAIN the POIs — us-state ids
|
|
447
|
+
* (`US-CA`) or country isos (`FR`). The frame is snapped to the union of their
|
|
448
|
+
* bboxes, and the layout labels them prominently (vs. muted neighbours). Empty
|
|
449
|
+
* for non-POI-only maps or when POIs fall outside every polygon. Optional so
|
|
450
|
+
* older/foreign ResolvedMap literals need not supply it. */
|
|
451
|
+
readonly poiFrameContainers?: readonly string[];
|
|
452
|
+
readonly diagnostics: readonly DgmoError[];
|
|
453
|
+
readonly error: string | null;
|
|
454
|
+
}
|
|
455
|
+
|
|
81
456
|
/**
|
|
82
457
|
* Compact view state schema (ADR-6).
|
|
83
458
|
* All fields optional. Only non-default values are encoded.
|
|
@@ -192,6 +567,9 @@ declare function render(content: string, options?: {
|
|
|
192
567
|
};
|
|
193
568
|
/** View state for export — controls interactive state (collapse, swimlanes, etc.) */
|
|
194
569
|
viewState?: CompactViewState;
|
|
570
|
+
/** Bundled map data for `map` charts in the browser, where the Node fs
|
|
571
|
+
* `loadMapData()` seam can't run. CLI/SSR omit this and fall back to fs. */
|
|
572
|
+
mapData?: MapData;
|
|
195
573
|
}): Promise<{
|
|
196
574
|
svg: string;
|
|
197
575
|
diagnostics: DgmoError[];
|
|
@@ -496,7 +874,9 @@ declare function shapeFill(palette: PaletteColors, intent: string, isDark: boole
|
|
|
496
874
|
/** Derive the 8-color series rotation from a palette's named colors. */
|
|
497
875
|
declare function getSeriesColors(palette: PaletteColors): string[];
|
|
498
876
|
|
|
499
|
-
declare const
|
|
877
|
+
declare const atlasPalette: PaletteConfig;
|
|
878
|
+
|
|
879
|
+
declare const blueprintPalette: PaletteConfig;
|
|
500
880
|
|
|
501
881
|
declare const catppuccinPalette: PaletteConfig;
|
|
502
882
|
|
|
@@ -508,8 +888,12 @@ declare const oneDarkPalette: PaletteConfig;
|
|
|
508
888
|
|
|
509
889
|
declare const rosePinePalette: PaletteConfig;
|
|
510
890
|
|
|
891
|
+
declare const slatePalette: PaletteConfig;
|
|
892
|
+
|
|
511
893
|
declare const solarizedPalette: PaletteConfig;
|
|
512
894
|
|
|
895
|
+
declare const tidewaterPalette: PaletteConfig;
|
|
896
|
+
|
|
513
897
|
declare const tokyoNightPalette: PaletteConfig;
|
|
514
898
|
|
|
515
899
|
declare const draculaPalette: PaletteConfig;
|
|
@@ -526,6 +910,10 @@ declare const monokaiPalette: PaletteConfig;
|
|
|
526
910
|
* used by share URLs and the CLI `--palette` flag.
|
|
527
911
|
*/
|
|
528
912
|
declare const palettes: {
|
|
913
|
+
readonly atlas: PaletteConfig;
|
|
914
|
+
readonly blueprint: PaletteConfig;
|
|
915
|
+
readonly slate: PaletteConfig;
|
|
916
|
+
readonly tidewater: PaletteConfig;
|
|
529
917
|
readonly nord: PaletteConfig;
|
|
530
918
|
readonly catppuccin: PaletteConfig;
|
|
531
919
|
readonly solarized: PaletteConfig;
|
|
@@ -535,7 +923,6 @@ declare const palettes: {
|
|
|
535
923
|
readonly rosePine: PaletteConfig;
|
|
536
924
|
readonly dracula: PaletteConfig;
|
|
537
925
|
readonly monokai: PaletteConfig;
|
|
538
|
-
readonly bold: PaletteConfig;
|
|
539
926
|
};
|
|
540
927
|
|
|
541
928
|
type ChartType$1 = 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'polar-area' | 'radar' | 'bar-stacked';
|
|
@@ -704,6 +1091,13 @@ interface LegendConfig {
|
|
|
704
1091
|
* group). Lets the user click a sibling to switch the active group. Default
|
|
705
1092
|
* false (legacy: when one group is active the others are hidden). */
|
|
706
1093
|
showInactivePills?: boolean;
|
|
1094
|
+
/** Where the controlsGroup is hosted. Default (undefined / 'inline') renders
|
|
1095
|
+
* the in-SVG gear exactly as before — every non-app consumer (Obsidian,
|
|
1096
|
+
* site, remark-family, CLI) is unaffected. When 'app', the controlsGroup is
|
|
1097
|
+
* dropped entirely (no gear, no reserved row): the app overlay strip owns the
|
|
1098
|
+
* controls, pinned to the top edge of the preview. App preview only; never
|
|
1099
|
+
* set on the export path. */
|
|
1100
|
+
controlsHost?: 'app' | 'inline';
|
|
707
1101
|
}
|
|
708
1102
|
interface LegendPalette {
|
|
709
1103
|
bg: string;
|
|
@@ -983,6 +1377,11 @@ declare function renderExtendedChartForExport(content: string, theme: 'light' |
|
|
|
983
1377
|
interface D3ExportDimensions {
|
|
984
1378
|
width?: number;
|
|
985
1379
|
height?: number;
|
|
1380
|
+
/** Map-only: when true, the map renderer suppresses its global stretch-fill and
|
|
1381
|
+
* contain-fits (letterbox) instead. Set by `mapExportDimensions` when the export
|
|
1382
|
+
* canvas was clamped/floored away from the map's content aspect, so the
|
|
1383
|
+
* off-aspect canvas doesn't re-distort. Ignored by all non-map renderers. */
|
|
1384
|
+
preferContain?: boolean;
|
|
986
1385
|
}
|
|
987
1386
|
|
|
988
1387
|
type TimelineSort = 'time' | 'group' | 'tag';
|
|
@@ -1019,27 +1418,6 @@ type TimelineDurationUnit = 'd' | 'w' | 'm' | 'y' | 'h' | 'min';
|
|
|
1019
1418
|
declare function addDurationToDate(startDate: string, amount: number, unit: TimelineDurationUnit): string;
|
|
1020
1419
|
declare function parseTimelineDate(s: string): number;
|
|
1021
1420
|
|
|
1022
|
-
/** A single entry inside a tag group: `Value color` */
|
|
1023
|
-
interface TagEntry {
|
|
1024
|
-
readonly value: string;
|
|
1025
|
-
readonly color: string;
|
|
1026
|
-
readonly lineNumber: number;
|
|
1027
|
-
}
|
|
1028
|
-
/**
|
|
1029
|
-
* A tag group block: heading + entries.
|
|
1030
|
-
*
|
|
1031
|
-
* Parser internals build via `Writable<TagGroup>` from `utils/brand.ts`;
|
|
1032
|
-
* once returned to a chart-type parser, consumers see the readonly view.
|
|
1033
|
-
*/
|
|
1034
|
-
interface TagGroup {
|
|
1035
|
-
readonly name: string;
|
|
1036
|
-
readonly alias?: string;
|
|
1037
|
-
readonly entries: readonly TagEntry[];
|
|
1038
|
-
/** Default value for nodes without explicit metadata. First entry unless another is marked `default`. */
|
|
1039
|
-
readonly defaultValue?: string;
|
|
1040
|
-
readonly lineNumber: number;
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
1421
|
type VisualizationType = 'slope' | 'wordcloud' | 'arc' | 'timeline' | 'venn' | 'quadrant' | 'sequence' | 'tech-radar' | 'cycle' | 'pyramid' | 'ring';
|
|
1044
1422
|
interface D3DataItem {
|
|
1045
1423
|
label: string;
|
|
@@ -1189,6 +1567,7 @@ declare function renderForExport(content: string, theme: 'light' | 'dark' | 'tra
|
|
|
1189
1567
|
c4Container?: string;
|
|
1190
1568
|
tagGroup?: string;
|
|
1191
1569
|
exportMode?: boolean;
|
|
1570
|
+
mapData?: MapData;
|
|
1192
1571
|
}): Promise<string>;
|
|
1193
1572
|
|
|
1194
1573
|
/**
|
|
@@ -2217,6 +2596,9 @@ interface BLRenderOptions {
|
|
|
2217
2596
|
onToggleDescriptions?: (active: boolean) => void;
|
|
2218
2597
|
onToggleControlsExpand?: () => void;
|
|
2219
2598
|
exportMode?: boolean;
|
|
2599
|
+
/** When 'app', the description toggle is hosted by the app overlay strip
|
|
2600
|
+
* (inline gear suppressed, controls row + anchor reserved). */
|
|
2601
|
+
controlsHost?: 'app' | 'inline';
|
|
2220
2602
|
}
|
|
2221
2603
|
declare function renderBoxesAndLines(container: HTMLDivElement, parsed: ParsedBoxesAndLines, layout: BLLayoutResult, palette: PaletteColors, isDark: boolean, options?: BLRenderOptions): void;
|
|
2222
2604
|
declare function renderBoxesAndLinesForExport(container: HTMLDivElement, parsed: ParsedBoxesAndLines, layout: BLLayoutResult, palette: PaletteColors, isDark: boolean, options?: {
|
|
@@ -2644,7 +3026,10 @@ interface InfraPlaybackState {
|
|
|
2644
3026
|
speed: number;
|
|
2645
3027
|
speedOptions: readonly number[];
|
|
2646
3028
|
}
|
|
2647
|
-
declare function renderInfra(container: HTMLDivElement, layout: InfraLayoutResult, palette: PaletteColors, isDark: boolean, title: string | null, titleLineNumber: number | null, tagGroups?: readonly InfraTagGroup[], activeGroup?: string | null, animate?: boolean, playback?: InfraPlaybackState | null, expandedNodeIds?: Set<string> | null, exportMode?: boolean, collapsedNodes?: Set<string> | null
|
|
3029
|
+
declare function renderInfra(container: HTMLDivElement, layout: InfraLayoutResult, palette: PaletteColors, isDark: boolean, title: string | null, titleLineNumber: number | null, tagGroups?: readonly InfraTagGroup[], activeGroup?: string | null, animate?: boolean, playback?: InfraPlaybackState | null, expandedNodeIds?: Set<string> | null, exportMode?: boolean, collapsedNodes?: Set<string> | null,
|
|
3030
|
+
/** When 'app', the playback pill is suppressed and a controls row + anchor are
|
|
3031
|
+
* reserved for the app overlay strip (play/pause + speed live there). */
|
|
3032
|
+
controlsHost?: 'app' | 'inline'): void;
|
|
2648
3033
|
declare function parseAndLayoutInfra(content: string): {
|
|
2649
3034
|
parsed: ParsedInfra;
|
|
2650
3035
|
computed: null;
|
|
@@ -3697,6 +4082,9 @@ declare function renderMindmap(container: HTMLDivElement, parsed: ParsedMindmap,
|
|
|
3697
4082
|
controlsExpanded?: boolean;
|
|
3698
4083
|
onToggleControlsExpand?: () => void;
|
|
3699
4084
|
exportMode?: boolean;
|
|
4085
|
+
/** When 'app', controls (Descriptions / Depth Colors) are hosted by the app
|
|
4086
|
+
* overlay strip — inline gear suppressed, controls row + anchor reserved. */
|
|
4087
|
+
controlsHost?: 'app' | 'inline';
|
|
3700
4088
|
}): void;
|
|
3701
4089
|
declare function renderMindmapForExport(content: string, theme: 'light' | 'dark' | 'transparent', palette: PaletteColors): string;
|
|
3702
4090
|
|
|
@@ -3886,6 +4274,9 @@ interface TechRadarRenderOptions {
|
|
|
3886
4274
|
activeLine?: number | null;
|
|
3887
4275
|
/** True when rendering for export (PNG/SVG/PDF) — controls whether collapsed legend pills and cog are stripped. */
|
|
3888
4276
|
exportMode?: boolean;
|
|
4277
|
+
/** When 'app', the Blip Legend toggle is hosted by the app overlay strip
|
|
4278
|
+
* (inline gear suppressed, controls row + anchor reserved). */
|
|
4279
|
+
controlsHost?: 'app' | 'inline';
|
|
3889
4280
|
}
|
|
3890
4281
|
|
|
3891
4282
|
declare function parseTechRadar(content: string): ParsedTechRadar;
|
|
@@ -4002,547 +4393,260 @@ interface CycleLayoutResult {
|
|
|
4002
4393
|
|
|
4003
4394
|
/**
|
|
4004
4395
|
* Parse a `.dgmo` cycle diagram document.
|
|
4005
|
-
*
|
|
4006
|
-
* Syntax (§1.4 unified metadata grammar):
|
|
4007
|
-
* ```
|
|
4008
|
-
* cycle Title
|
|
4009
|
-
*
|
|
4010
|
-
* direction-counterclockwise
|
|
4011
|
-
*
|
|
4012
|
-
* NodeLabel color: blue, span: 3
|
|
4013
|
-
* Description line (indented under node)
|
|
4014
|
-
* -Label-> color: red, width: 6
|
|
4015
|
-
* Edge description (indented under edge)
|
|
4016
|
-
* ```
|
|
4017
|
-
*/
|
|
4018
|
-
declare function parseCycle(content: string): ParsedCycle;
|
|
4019
|
-
|
|
4020
|
-
/**
|
|
4021
|
-
* Compute cycle diagram layout: positions nodes equidistant (or span-weighted)
|
|
4022
|
-
* on a circle, and generates curved edge paths between consecutive nodes.
|
|
4023
|
-
*/
|
|
4024
|
-
declare function computeCycleLayout(parsed: ParsedCycle, options?: {
|
|
4025
|
-
width?: number;
|
|
4026
|
-
height?: number;
|
|
4027
|
-
hideDescriptions?: boolean;
|
|
4028
|
-
}): CycleLayoutResult;
|
|
4029
|
-
|
|
4030
|
-
interface CycleRenderOptions {
|
|
4031
|
-
onClickItem?: (lineNumber: number) => void;
|
|
4032
|
-
exportDims?: D3ExportDimensions;
|
|
4033
|
-
viewState?: CompactViewState;
|
|
4034
|
-
hideDescriptions?: boolean;
|
|
4035
|
-
controlsExpanded?: boolean;
|
|
4036
|
-
onToggleDescriptions?: (active: boolean) => void;
|
|
4037
|
-
onToggleControlsExpand?: () => void;
|
|
4038
|
-
exportMode?: boolean;
|
|
4039
|
-
}
|
|
4040
|
-
/**
|
|
4041
|
-
* Render a cycle diagram into the given container.
|
|
4042
|
-
*/
|
|
4043
|
-
declare function renderCycle(container: HTMLDivElement, parsed: ParsedCycle, palette: PaletteColors, isDark: boolean, onClickItem?: (lineNumber: number) => void, exportDims?: D3ExportDimensions, viewState?: CompactViewState, renderOptions?: CycleRenderOptions): void;
|
|
4044
|
-
/**
|
|
4045
|
-
* Render for CLI/export (no click handlers).
|
|
4046
|
-
*/
|
|
4047
|
-
declare function renderCycleForExport(container: HTMLDivElement, parsed: ParsedCycle, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions, viewState?: CompactViewState, exportMode?: boolean): void;
|
|
4048
|
-
|
|
4049
|
-
interface JourneyMapAnnotation {
|
|
4050
|
-
readonly type: 'pain' | 'opportunity' | 'thought';
|
|
4051
|
-
readonly text: string;
|
|
4052
|
-
}
|
|
4053
|
-
interface JourneyMapStep {
|
|
4054
|
-
readonly id: string;
|
|
4055
|
-
readonly title: string;
|
|
4056
|
-
readonly score?: number;
|
|
4057
|
-
readonly emotionLabel?: string;
|
|
4058
|
-
readonly tags: Readonly<Record<string, string>>;
|
|
4059
|
-
readonly annotations: readonly JourneyMapAnnotation[];
|
|
4060
|
-
readonly description?: string;
|
|
4061
|
-
readonly lineNumber: number;
|
|
4062
|
-
readonly endLineNumber: number;
|
|
4063
|
-
}
|
|
4064
|
-
interface JourneyMapPhase {
|
|
4065
|
-
readonly id: string;
|
|
4066
|
-
readonly name: string;
|
|
4067
|
-
readonly steps: readonly JourneyMapStep[];
|
|
4068
|
-
readonly lineNumber: number;
|
|
4069
|
-
}
|
|
4070
|
-
interface JourneyMapPersona {
|
|
4071
|
-
readonly name: string;
|
|
4072
|
-
readonly description?: string;
|
|
4073
|
-
readonly color?: string;
|
|
4074
|
-
readonly lineNumber: number;
|
|
4075
|
-
}
|
|
4076
|
-
interface ParsedJourneyMap {
|
|
4077
|
-
readonly type: 'journey-map';
|
|
4078
|
-
readonly title?: string;
|
|
4079
|
-
readonly titleLineNumber?: number;
|
|
4080
|
-
readonly persona?: JourneyMapPersona;
|
|
4081
|
-
readonly phases: readonly JourneyMapPhase[];
|
|
4082
|
-
/** Flat-mode steps (not inside any phase) */
|
|
4083
|
-
readonly steps: readonly JourneyMapStep[];
|
|
4084
|
-
readonly tagGroups: readonly TagGroup[];
|
|
4085
|
-
readonly options: Readonly<Record<string, string>>;
|
|
4086
|
-
readonly diagnostics: readonly DgmoError[];
|
|
4087
|
-
readonly error: string | null;
|
|
4088
|
-
}
|
|
4089
|
-
|
|
4090
|
-
declare function parseJourneyMap(content: string, palette?: PaletteColors): ParsedJourneyMap;
|
|
4091
|
-
|
|
4092
|
-
interface CurvePoint {
|
|
4093
|
-
x: number;
|
|
4094
|
-
y: number;
|
|
4095
|
-
score: number;
|
|
4096
|
-
emotionLabel?: string;
|
|
4097
|
-
stepIndex: number;
|
|
4098
|
-
}
|
|
4099
|
-
interface StepLayout {
|
|
4100
|
-
x: number;
|
|
4101
|
-
y: number;
|
|
4102
|
-
width: number;
|
|
4103
|
-
height: number;
|
|
4104
|
-
step: JourneyMapStep;
|
|
4105
|
-
color: string;
|
|
4106
|
-
}
|
|
4107
|
-
interface PhaseLayout {
|
|
4108
|
-
x: number;
|
|
4109
|
-
y: number;
|
|
4110
|
-
width: number;
|
|
4111
|
-
height: number;
|
|
4112
|
-
phase: JourneyMapPhase;
|
|
4113
|
-
headerColor: string;
|
|
4114
|
-
stepLayouts: StepLayout[];
|
|
4115
|
-
}
|
|
4116
|
-
interface JourneyMapLayout {
|
|
4117
|
-
phases: PhaseLayout[];
|
|
4118
|
-
flatStepLayouts: StepLayout[];
|
|
4119
|
-
curvePoints: CurvePoint[];
|
|
4120
|
-
totalWidth: number;
|
|
4121
|
-
totalHeight: number;
|
|
4122
|
-
curveAreaTop: number;
|
|
4123
|
-
curveAreaBottom: number;
|
|
4124
|
-
cardAreaTop: number;
|
|
4125
|
-
personaHeight: number;
|
|
4126
|
-
titleHeight: number;
|
|
4127
|
-
/** Whether any step has thought annotations */
|
|
4128
|
-
hasThoughts: boolean;
|
|
4129
|
-
}
|
|
4130
|
-
declare function layoutJourneyMap(parsed: ParsedJourneyMap, palette: PaletteColors, options?: {
|
|
4131
|
-
exportDims?: {
|
|
4132
|
-
width: number;
|
|
4133
|
-
height: number;
|
|
4134
|
-
};
|
|
4135
|
-
collapsedPhases?: Set<string>;
|
|
4136
|
-
isDark?: boolean;
|
|
4137
|
-
}): JourneyMapLayout;
|
|
4138
|
-
|
|
4139
|
-
interface JourneyMapInteractiveOptions {
|
|
4140
|
-
onNavigateToLine?: (line: number) => void;
|
|
4141
|
-
exportDims?: {
|
|
4142
|
-
width: number;
|
|
4143
|
-
height: number;
|
|
4144
|
-
};
|
|
4145
|
-
activeTagGroup?: string | null;
|
|
4146
|
-
onActiveTagGroupChange?: (group: string | null) => void;
|
|
4147
|
-
/** Current editor cursor line — highlights the matching face + card, dims the rest */
|
|
4148
|
-
currentLine?: number | null;
|
|
4149
|
-
/** Set of collapsed phase names */
|
|
4150
|
-
collapsedPhases?: Set<string>;
|
|
4151
|
-
/** Called when a phase is toggled */
|
|
4152
|
-
onPhaseToggle?: (phaseName: string) => void;
|
|
4153
|
-
exportMode?: boolean;
|
|
4154
|
-
}
|
|
4155
|
-
declare function renderJourneyMap(container: HTMLElement, parsed: ParsedJourneyMap, palette: PaletteColors, isDark: boolean, options?: JourneyMapInteractiveOptions): void;
|
|
4156
|
-
declare function renderJourneyMapForExport(content: string, theme: 'light' | 'dark' | 'transparent', palette: PaletteColors): string;
|
|
4157
|
-
|
|
4158
|
-
interface PyramidLayer {
|
|
4159
|
-
readonly label: string;
|
|
4160
|
-
readonly lineNumber: number;
|
|
4161
|
-
/** Optional palette color name (red/green/blue/…). */
|
|
4162
|
-
readonly color?: string;
|
|
4163
|
-
/** Description lines — from bare pipe shorthand or indented body. */
|
|
4164
|
-
readonly description: readonly string[];
|
|
4165
|
-
/** Unconsumed pipe metadata (reserved for future use). */
|
|
4166
|
-
readonly metadata: Readonly<Record<string, string>>;
|
|
4167
|
-
}
|
|
4168
|
-
interface ParsedPyramid {
|
|
4169
|
-
readonly type: 'pyramid';
|
|
4170
|
-
readonly title: string;
|
|
4171
|
-
readonly titleLineNumber: number;
|
|
4172
|
-
readonly layers: readonly PyramidLayer[];
|
|
4173
|
-
/** When true, apex points down instead of up. */
|
|
4174
|
-
readonly inverted: boolean;
|
|
4175
|
-
readonly options: Readonly<Record<string, string>>;
|
|
4176
|
-
readonly diagnostics: readonly DgmoError[];
|
|
4177
|
-
readonly error: string | null;
|
|
4178
|
-
}
|
|
4179
|
-
|
|
4180
|
-
/**
|
|
4181
|
-
* Parse a `.dgmo` pyramid diagram document.
|
|
4182
|
-
*
|
|
4183
|
-
* Top of file = apex of pyramid (reads top-down).
|
|
4184
|
-
*
|
|
4185
|
-
* Syntax:
|
|
4186
|
-
* ```
|
|
4187
|
-
* pyramid Maslow's Hierarchy of Needs
|
|
4188
|
-
*
|
|
4189
|
-
* inverted // optional — flips apex to bottom
|
|
4190
|
-
*
|
|
4191
|
-
* Self-Actualization // indented body = description
|
|
4192
|
-
* Achieving one's full potential.
|
|
4193
|
-
*
|
|
4194
|
-
* Esteem | Respect, recognition // bare pipe shorthand = description
|
|
4195
|
-
*
|
|
4196
|
-
* Love & Belonging | color: blue // structured metadata
|
|
4197
|
-
* Friendship, intimacy, family.
|
|
4198
|
-
*
|
|
4199
|
-
* Physiological | Food, water, rest
|
|
4200
|
-
* ```
|
|
4201
|
-
*/
|
|
4202
|
-
declare function parsePyramid(content: string): ParsedPyramid;
|
|
4203
|
-
|
|
4204
|
-
/**
|
|
4205
|
-
* Render a pyramid diagram into the given container.
|
|
4206
|
-
*/
|
|
4207
|
-
declare function renderPyramid(container: HTMLDivElement, parsed: ParsedPyramid, palette: PaletteColors, isDark: boolean, onClickItem?: (lineNumber: number) => void, exportDims?: D3ExportDimensions): void;
|
|
4208
|
-
/**
|
|
4209
|
-
* Render for CLI/export (no click handlers).
|
|
4210
|
-
*/
|
|
4211
|
-
declare function renderPyramidForExport(container: HTMLDivElement, parsed: ParsedPyramid, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions): void;
|
|
4212
|
-
|
|
4213
|
-
interface RingLayer {
|
|
4214
|
-
readonly label: string;
|
|
4215
|
-
readonly lineNumber: number;
|
|
4216
|
-
/** Optional palette color name (red/green/blue/…). */
|
|
4217
|
-
readonly color?: string;
|
|
4218
|
-
/** Description lines — from bare pipe shorthand or indented body. */
|
|
4219
|
-
readonly description: readonly string[];
|
|
4220
|
-
/** Unconsumed pipe metadata (reserved for future use). */
|
|
4221
|
-
readonly metadata: Readonly<Record<string, string>>;
|
|
4222
|
-
}
|
|
4223
|
-
interface ParsedRing {
|
|
4224
|
-
readonly type: 'ring';
|
|
4225
|
-
readonly title: string;
|
|
4226
|
-
readonly titleLineNumber: number;
|
|
4227
|
-
/** Source order: layers[0] = innermost (filled disc); last = outermost ring. */
|
|
4228
|
-
readonly layers: readonly RingLayer[];
|
|
4229
|
-
readonly options: Readonly<Record<string, string>>;
|
|
4230
|
-
readonly diagnostics: readonly DgmoError[];
|
|
4231
|
-
readonly error: string | null;
|
|
4232
|
-
}
|
|
4396
|
+
*
|
|
4397
|
+
* Syntax (§1.4 unified metadata grammar):
|
|
4398
|
+
* ```
|
|
4399
|
+
* cycle Title
|
|
4400
|
+
*
|
|
4401
|
+
* direction-counterclockwise
|
|
4402
|
+
*
|
|
4403
|
+
* NodeLabel color: blue, span: 3
|
|
4404
|
+
* Description line (indented under node)
|
|
4405
|
+
* -Label-> color: red, width: 6
|
|
4406
|
+
* Edge description (indented under edge)
|
|
4407
|
+
* ```
|
|
4408
|
+
*/
|
|
4409
|
+
declare function parseCycle(content: string): ParsedCycle;
|
|
4233
4410
|
|
|
4234
4411
|
/**
|
|
4235
|
-
*
|
|
4236
|
-
*
|
|
4237
|
-
* Top of file = innermost ring (rendered as a filled disc).
|
|
4238
|
-
* Last layer in source = outermost ring.
|
|
4412
|
+
* Compute cycle diagram layout: positions nodes equidistant (or span-weighted)
|
|
4413
|
+
* on a circle, and generates curved edge paths between consecutive nodes.
|
|
4239
4414
|
*/
|
|
4240
|
-
declare function
|
|
4415
|
+
declare function computeCycleLayout(parsed: ParsedCycle, options?: {
|
|
4416
|
+
width?: number;
|
|
4417
|
+
height?: number;
|
|
4418
|
+
hideDescriptions?: boolean;
|
|
4419
|
+
}): CycleLayoutResult;
|
|
4241
4420
|
|
|
4421
|
+
interface CycleRenderOptions {
|
|
4422
|
+
onClickItem?: (lineNumber: number) => void;
|
|
4423
|
+
exportDims?: D3ExportDimensions;
|
|
4424
|
+
viewState?: CompactViewState;
|
|
4425
|
+
hideDescriptions?: boolean;
|
|
4426
|
+
controlsExpanded?: boolean;
|
|
4427
|
+
onToggleDescriptions?: (active: boolean) => void;
|
|
4428
|
+
onToggleControlsExpand?: () => void;
|
|
4429
|
+
exportMode?: boolean;
|
|
4430
|
+
/** When 'app', the description toggle is hosted by the app overlay strip:
|
|
4431
|
+
* the inline gear is suppressed and a controls row + anchor are reserved.
|
|
4432
|
+
* Default (inline) renders the gear as before. */
|
|
4433
|
+
controlsHost?: 'app' | 'inline';
|
|
4434
|
+
}
|
|
4242
4435
|
/**
|
|
4243
|
-
* Render a
|
|
4436
|
+
* Render a cycle diagram into the given container.
|
|
4244
4437
|
*/
|
|
4245
|
-
declare function
|
|
4438
|
+
declare function renderCycle(container: HTMLDivElement, parsed: ParsedCycle, palette: PaletteColors, isDark: boolean, onClickItem?: (lineNumber: number) => void, exportDims?: D3ExportDimensions, viewState?: CompactViewState, renderOptions?: CycleRenderOptions): void;
|
|
4246
4439
|
/**
|
|
4247
4440
|
* Render for CLI/export (no click handlers).
|
|
4248
4441
|
*/
|
|
4249
|
-
declare function
|
|
4442
|
+
declare function renderCycleForExport(container: HTMLDivElement, parsed: ParsedCycle, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions, viewState?: CompactViewState, exportMode?: boolean): void;
|
|
4250
4443
|
|
|
4251
|
-
|
|
4252
|
-
type
|
|
4253
|
-
readonly
|
|
4254
|
-
readonly lat: number;
|
|
4255
|
-
readonly lon: number;
|
|
4256
|
-
} | {
|
|
4257
|
-
readonly kind: 'name';
|
|
4258
|
-
readonly name: string;
|
|
4259
|
-
readonly scope?: string;
|
|
4260
|
-
};
|
|
4261
|
-
/** `scale <min> <max> [center <n>]` (center reserved for the diverging seam, §24B.12). */
|
|
4262
|
-
interface MapScale {
|
|
4263
|
-
readonly min: number;
|
|
4264
|
-
readonly max: number;
|
|
4265
|
-
readonly center?: number;
|
|
4266
|
-
}
|
|
4267
|
-
/** One-shot directives (§24B.2/.7). Values are raw strings unless typed. */
|
|
4268
|
-
interface MapDirectives {
|
|
4269
|
-
region?: string;
|
|
4270
|
-
projection?: string;
|
|
4271
|
-
/** Legend label for the region value ramp (`region-metric <label>`). */
|
|
4272
|
-
regionMetric?: string;
|
|
4273
|
-
/** Legend label for the POI value (marker size) channel (`poi-metric`). */
|
|
4274
|
-
poiMetric?: string;
|
|
4275
|
-
/** Legend label for the edge/leg value (thickness) channel (`flow-metric`). */
|
|
4276
|
-
flowMetric?: string;
|
|
4277
|
-
scale?: MapScale;
|
|
4278
|
-
regionLabels?: string;
|
|
4279
|
-
poiLabels?: string;
|
|
4280
|
-
defaultCountry?: string;
|
|
4281
|
-
defaultState?: string;
|
|
4282
|
-
activeTag?: string;
|
|
4283
|
-
noLegend?: boolean;
|
|
4284
|
-
subtitle?: string;
|
|
4285
|
-
caption?: string;
|
|
4286
|
-
/** Basemap dress override (bare flags `muted` / `natural`). Forces the
|
|
4287
|
-
* land/water styling regardless of whether a colouring dimension is active —
|
|
4288
|
-
* `muted` recedes to neutral grays, `natural` keeps the green/blue reference
|
|
4289
|
-
* dress. Absent → auto (muted iff a score/tag dimension is active). Lets two
|
|
4290
|
-
* maps in one deck share a look. */
|
|
4291
|
-
basemapStyle?: 'muted' | 'natural';
|
|
4292
|
-
}
|
|
4293
|
-
/** A region-fill: a subdivision name with an optional score and/or tag values
|
|
4294
|
-
* (§24B.3/.4 — BOTH may be present; bivariate seam). */
|
|
4295
|
-
interface MapRegion {
|
|
4296
|
-
readonly name: string;
|
|
4297
|
-
/** Optional trailing ISO scope qualifier (§24B.8) — a 3166-1 country code
|
|
4298
|
-
* (`Georgia US` → US context) or 3166-2 subdivision (`Georgia US-GA`).
|
|
4299
|
-
* Forces the country-vs-state interpretation and silences the ambiguity warning. */
|
|
4300
|
-
readonly scope?: string;
|
|
4301
|
-
/** Numeric value → choropleth shade (§24B.3). Lifted out of `meta`. */
|
|
4302
|
-
readonly value?: number;
|
|
4303
|
-
/** Tag values keyed by lowercased tag GROUP name (alias is resolved away). */
|
|
4304
|
-
readonly tags: Readonly<Record<string, string>>;
|
|
4305
|
-
/** Any remaining reserved keys captured verbatim (`label`/`style`/…). */
|
|
4306
|
-
readonly meta: Readonly<Record<string, string>>;
|
|
4307
|
-
readonly lineNumber: number;
|
|
4444
|
+
interface JourneyMapAnnotation {
|
|
4445
|
+
readonly type: 'pain' | 'opportunity' | 'thought';
|
|
4446
|
+
readonly text: string;
|
|
4308
4447
|
}
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
readonly
|
|
4313
|
-
readonly
|
|
4314
|
-
readonly label?: string;
|
|
4448
|
+
interface JourneyMapStep {
|
|
4449
|
+
readonly id: string;
|
|
4450
|
+
readonly title: string;
|
|
4451
|
+
readonly score?: number;
|
|
4452
|
+
readonly emotionLabel?: string;
|
|
4315
4453
|
readonly tags: Readonly<Record<string, string>>;
|
|
4316
|
-
readonly
|
|
4317
|
-
readonly
|
|
4318
|
-
}
|
|
4319
|
-
/** One leg of a route (§24B.6): an edge from the previous stop to `dest`. Reuses
|
|
4320
|
-
* the edge arrow idiom — in-arrow text = leg label, `value:` = leg thickness,
|
|
4321
|
-
* `->`/`~>` (or the header `style: arc`) = shape. Stop-targeted keys on the leg
|
|
4322
|
-
* line (`tag`, `label:`) decorate the DESTINATION point. */
|
|
4323
|
-
interface MapRouteLeg {
|
|
4324
|
-
readonly label?: string;
|
|
4325
|
-
readonly style: 'straight' | 'arc';
|
|
4326
|
-
readonly value?: string;
|
|
4327
|
-
readonly dest: PoiPos;
|
|
4328
|
-
readonly destAlias?: string;
|
|
4329
|
-
readonly destLabel?: string;
|
|
4330
|
-
readonly destTags: Readonly<Record<string, string>>;
|
|
4454
|
+
readonly annotations: readonly JourneyMapAnnotation[];
|
|
4455
|
+
readonly description?: string;
|
|
4331
4456
|
readonly lineNumber: number;
|
|
4457
|
+
readonly endLineNumber: number;
|
|
4332
4458
|
}
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
readonly origin: PoiPos;
|
|
4338
|
-
readonly originAlias?: string;
|
|
4339
|
-
readonly originLabel?: string;
|
|
4340
|
-
readonly originValue?: string;
|
|
4341
|
-
readonly originTags: Readonly<Record<string, string>>;
|
|
4342
|
-
readonly style: 'straight' | 'arc';
|
|
4343
|
-
readonly legs: readonly MapRouteLeg[];
|
|
4459
|
+
interface JourneyMapPhase {
|
|
4460
|
+
readonly id: string;
|
|
4461
|
+
readonly name: string;
|
|
4462
|
+
readonly steps: readonly JourneyMapStep[];
|
|
4344
4463
|
readonly lineNumber: number;
|
|
4345
4464
|
}
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
readonly
|
|
4350
|
-
readonly to: string;
|
|
4351
|
-
readonly label?: string;
|
|
4352
|
-
readonly directed: boolean;
|
|
4353
|
-
readonly style: 'straight' | 'arc';
|
|
4354
|
-
readonly meta: Readonly<Record<string, string>>;
|
|
4465
|
+
interface JourneyMapPersona {
|
|
4466
|
+
readonly name: string;
|
|
4467
|
+
readonly description?: string;
|
|
4468
|
+
readonly color?: string;
|
|
4355
4469
|
readonly lineNumber: number;
|
|
4356
4470
|
}
|
|
4357
|
-
interface
|
|
4358
|
-
readonly
|
|
4359
|
-
readonly
|
|
4360
|
-
readonly
|
|
4471
|
+
interface ParsedJourneyMap {
|
|
4472
|
+
readonly type: 'journey-map';
|
|
4473
|
+
readonly title?: string;
|
|
4474
|
+
readonly titleLineNumber?: number;
|
|
4475
|
+
readonly persona?: JourneyMapPersona;
|
|
4476
|
+
readonly phases: readonly JourneyMapPhase[];
|
|
4477
|
+
/** Flat-mode steps (not inside any phase) */
|
|
4478
|
+
readonly steps: readonly JourneyMapStep[];
|
|
4361
4479
|
readonly tagGroups: readonly TagGroup[];
|
|
4362
|
-
readonly regions: readonly MapRegion[];
|
|
4363
|
-
readonly pois: readonly MapPoi[];
|
|
4364
|
-
readonly routes: readonly MapRoute[];
|
|
4365
|
-
readonly edges: readonly MapEdge[];
|
|
4366
4480
|
readonly options: Readonly<Record<string, string>>;
|
|
4367
4481
|
readonly diagnostics: readonly DgmoError[];
|
|
4368
4482
|
readonly error: string | null;
|
|
4369
4483
|
}
|
|
4370
4484
|
|
|
4371
|
-
|
|
4372
|
-
declare function looksLikeMap(content: string): boolean;
|
|
4373
|
-
declare function parseMap(content: string): ParsedMap;
|
|
4485
|
+
declare function parseJourneyMap(content: string, palette?: PaletteColors): ParsedJourneyMap;
|
|
4374
4486
|
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
type: string;
|
|
4382
|
-
geometries: BoundaryGeometry[];
|
|
4383
|
-
}>;
|
|
4384
|
-
arcs: number[][][];
|
|
4385
|
-
transform?: {
|
|
4386
|
-
scale: [number, number];
|
|
4387
|
-
translate: [number, number];
|
|
4388
|
-
};
|
|
4389
|
-
bbox?: number[];
|
|
4390
|
-
}
|
|
4391
|
-
interface BoundaryGeometry {
|
|
4392
|
-
type: string;
|
|
4393
|
-
/** ISO code: alpha-2 (countries) or 3166-2 `US-XX` (states). */
|
|
4394
|
-
id: string;
|
|
4395
|
-
properties: {
|
|
4396
|
-
name: string;
|
|
4397
|
-
};
|
|
4398
|
-
arcs?: unknown;
|
|
4399
|
-
}
|
|
4400
|
-
/**
|
|
4401
|
-
* A gazetteer city entry: `[lat, lon, iso, pop, name, sub?]`.
|
|
4402
|
-
* - `lat`/`lon` — rounded to 3 decimals.
|
|
4403
|
-
* - `iso` — ISO 3166-1 alpha-2 country code.
|
|
4404
|
-
* - `pop` — population.
|
|
4405
|
-
* - `name` — canonical display name (case/accents preserved).
|
|
4406
|
-
* - `sub` — ISO 3166-2 subdivision (US cities only in v1, e.g. `US-OR`); absent otherwise.
|
|
4407
|
-
*/
|
|
4408
|
-
type GazetteerEntry = [
|
|
4409
|
-
lat: number,
|
|
4410
|
-
lon: number,
|
|
4411
|
-
iso: string,
|
|
4412
|
-
pop: number,
|
|
4413
|
-
name: string,
|
|
4414
|
-
sub?: string
|
|
4415
|
-
];
|
|
4416
|
-
interface Gazetteer {
|
|
4417
|
-
/** Every city, stored once. `byName`/`alt` reference cities by array index
|
|
4418
|
-
* (normalized — no tuple duplication; geonameid is a build-time-only linker). */
|
|
4419
|
-
cities: GazetteerEntry[];
|
|
4420
|
-
/** Folded (NFD, diacritic-stripped, lowercased) name → indices into `cities`.
|
|
4421
|
-
* Always an array; length > 1 for same-named cities (Portland US-OR / US-ME). */
|
|
4422
|
-
byName: Record<string, number[]>;
|
|
4423
|
-
/** Folded alias → index into `cities`. Never collides with a `byName` key. */
|
|
4424
|
-
alt: Record<string, number>;
|
|
4425
|
-
}
|
|
4426
|
-
/** A fill-able region (country or US state) — the display name + its ISO id +
|
|
4427
|
-
* layer. Powers region-name autocomplete (completion-only; the renderer derives
|
|
4428
|
-
* names from the topology directly). Extracted from the topologies by
|
|
4429
|
-
* scripts/build-map-data.mjs into `region-names.json`. */
|
|
4430
|
-
interface RegionName {
|
|
4431
|
-
/** Display name (original casing), e.g. `California` / `Germany`. */
|
|
4432
|
-
readonly name: string;
|
|
4433
|
-
/** ISO 3166-1 alpha-2 (country) or 3166-2 `US-XX` (state). */
|
|
4434
|
-
readonly iso: string;
|
|
4435
|
-
readonly layer: 'country' | 'us-state';
|
|
4436
|
-
}
|
|
4437
|
-
interface RegionNames {
|
|
4438
|
-
/** Deterministically ordered (layer, then name). */
|
|
4439
|
-
readonly regions: readonly RegionName[];
|
|
4487
|
+
interface CurvePoint {
|
|
4488
|
+
x: number;
|
|
4489
|
+
y: number;
|
|
4490
|
+
score: number;
|
|
4491
|
+
emotionLabel?: string;
|
|
4492
|
+
stepIndex: number;
|
|
4440
4493
|
}
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
* Lakes. Optional so hand-built test fixtures need not supply it. */
|
|
4449
|
-
lakes?: BoundaryTopology;
|
|
4450
|
-
/** Major river centerlines (Natural Earth 110m) drawn as thin water lines over
|
|
4451
|
-
* land — e.g. the Amazon, Nile, Mississippi. Optional, like `lakes`. */
|
|
4452
|
-
rivers?: BoundaryTopology;
|
|
4453
|
-
/** North-America-clipped 10m country land, used as crisp neighbour context
|
|
4454
|
-
* under the albers-usa US view so Canada/Mexico match the 10m states instead
|
|
4455
|
-
* of the coarser world tiers. Optional, like `lakes`. */
|
|
4456
|
-
naLand?: BoundaryTopology;
|
|
4457
|
-
/** North-America-clipped 10m major lakes (Great Lakes etc.), used in place of
|
|
4458
|
-
* the coarse `lakes` under the albers-usa US view. Optional. */
|
|
4459
|
-
naLakes?: BoundaryTopology;
|
|
4460
|
-
gazetteer: Gazetteer;
|
|
4494
|
+
interface StepLayout {
|
|
4495
|
+
x: number;
|
|
4496
|
+
y: number;
|
|
4497
|
+
width: number;
|
|
4498
|
+
height: number;
|
|
4499
|
+
step: JourneyMapStep;
|
|
4500
|
+
color: string;
|
|
4461
4501
|
}
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4502
|
+
interface PhaseLayout {
|
|
4503
|
+
x: number;
|
|
4504
|
+
y: number;
|
|
4505
|
+
width: number;
|
|
4506
|
+
height: number;
|
|
4507
|
+
phase: JourneyMapPhase;
|
|
4508
|
+
headerColor: string;
|
|
4509
|
+
stepLayouts: StepLayout[];
|
|
4469
4510
|
}
|
|
4470
|
-
interface
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4511
|
+
interface JourneyMapLayout {
|
|
4512
|
+
phases: PhaseLayout[];
|
|
4513
|
+
flatStepLayouts: StepLayout[];
|
|
4514
|
+
curvePoints: CurvePoint[];
|
|
4515
|
+
totalWidth: number;
|
|
4516
|
+
totalHeight: number;
|
|
4517
|
+
curveAreaTop: number;
|
|
4518
|
+
curveAreaBottom: number;
|
|
4519
|
+
cardAreaTop: number;
|
|
4520
|
+
personaHeight: number;
|
|
4521
|
+
titleHeight: number;
|
|
4522
|
+
/** Whether any step has thought annotations */
|
|
4523
|
+
hasThoughts: boolean;
|
|
4479
4524
|
}
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4525
|
+
declare function layoutJourneyMap(parsed: ParsedJourneyMap, palette: PaletteColors, options?: {
|
|
4526
|
+
exportDims?: {
|
|
4527
|
+
width: number;
|
|
4528
|
+
height: number;
|
|
4529
|
+
};
|
|
4530
|
+
collapsedPhases?: Set<string>;
|
|
4531
|
+
isDark?: boolean;
|
|
4532
|
+
}): JourneyMapLayout;
|
|
4533
|
+
|
|
4534
|
+
interface JourneyMapInteractiveOptions {
|
|
4535
|
+
onNavigateToLine?: (line: number) => void;
|
|
4536
|
+
exportDims?: {
|
|
4537
|
+
width: number;
|
|
4538
|
+
height: number;
|
|
4539
|
+
};
|
|
4540
|
+
activeTagGroup?: string | null;
|
|
4541
|
+
onActiveTagGroupChange?: (group: string | null) => void;
|
|
4542
|
+
/** Current editor cursor line — highlights the matching face + card, dims the rest */
|
|
4543
|
+
currentLine?: number | null;
|
|
4544
|
+
/** Set of collapsed phase names */
|
|
4545
|
+
collapsedPhases?: Set<string>;
|
|
4546
|
+
/** Called when a phase is toggled */
|
|
4547
|
+
onPhaseToggle?: (phaseName: string) => void;
|
|
4548
|
+
exportMode?: boolean;
|
|
4495
4549
|
}
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
readonly
|
|
4501
|
-
readonly style: 'straight' | 'arc';
|
|
4502
|
-
readonly meta: Readonly<Record<string, string>>;
|
|
4550
|
+
declare function renderJourneyMap(container: HTMLElement, parsed: ParsedJourneyMap, palette: PaletteColors, isDark: boolean, options?: JourneyMapInteractiveOptions): void;
|
|
4551
|
+
declare function renderJourneyMapForExport(content: string, theme: 'light' | 'dark' | 'transparent', palette: PaletteColors): string;
|
|
4552
|
+
|
|
4553
|
+
interface PyramidLayer {
|
|
4554
|
+
readonly label: string;
|
|
4503
4555
|
readonly lineNumber: number;
|
|
4556
|
+
/** Optional palette color name (red/green/blue/…). */
|
|
4557
|
+
readonly color?: string;
|
|
4558
|
+
/** Description lines — from bare pipe shorthand or indented body. */
|
|
4559
|
+
readonly description: readonly string[];
|
|
4560
|
+
/** Unconsumed pipe metadata (reserved for future use). */
|
|
4561
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
4504
4562
|
}
|
|
4505
|
-
interface
|
|
4506
|
-
readonly
|
|
4507
|
-
readonly
|
|
4508
|
-
readonly
|
|
4509
|
-
readonly
|
|
4510
|
-
|
|
4511
|
-
readonly
|
|
4563
|
+
interface ParsedPyramid {
|
|
4564
|
+
readonly type: 'pyramid';
|
|
4565
|
+
readonly title: string;
|
|
4566
|
+
readonly titleLineNumber: number;
|
|
4567
|
+
readonly layers: readonly PyramidLayer[];
|
|
4568
|
+
/** When true, apex points down instead of up. */
|
|
4569
|
+
readonly inverted: boolean;
|
|
4570
|
+
readonly options: Readonly<Record<string, string>>;
|
|
4571
|
+
readonly diagnostics: readonly DgmoError[];
|
|
4572
|
+
readonly error: string | null;
|
|
4512
4573
|
}
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4574
|
+
|
|
4575
|
+
/**
|
|
4576
|
+
* Parse a `.dgmo` pyramid diagram document.
|
|
4577
|
+
*
|
|
4578
|
+
* Top of file = apex of pyramid (reads top-down).
|
|
4579
|
+
*
|
|
4580
|
+
* Syntax:
|
|
4581
|
+
* ```
|
|
4582
|
+
* pyramid Maslow's Hierarchy of Needs
|
|
4583
|
+
*
|
|
4584
|
+
* inverted // optional — flips apex to bottom
|
|
4585
|
+
*
|
|
4586
|
+
* Self-Actualization // indented body = description
|
|
4587
|
+
* Achieving one's full potential.
|
|
4588
|
+
*
|
|
4589
|
+
* Esteem | Respect, recognition // bare pipe shorthand = description
|
|
4590
|
+
*
|
|
4591
|
+
* Love & Belonging | color: blue // structured metadata
|
|
4592
|
+
* Friendship, intimacy, family.
|
|
4593
|
+
*
|
|
4594
|
+
* Physiological | Food, water, rest
|
|
4595
|
+
* ```
|
|
4596
|
+
*/
|
|
4597
|
+
declare function parsePyramid(content: string): ParsedPyramid;
|
|
4598
|
+
|
|
4599
|
+
/**
|
|
4600
|
+
* Render a pyramid diagram into the given container.
|
|
4601
|
+
*/
|
|
4602
|
+
declare function renderPyramid(container: HTMLDivElement, parsed: ParsedPyramid, palette: PaletteColors, isDark: boolean, onClickItem?: (lineNumber: number) => void, exportDims?: D3ExportDimensions): void;
|
|
4603
|
+
/**
|
|
4604
|
+
* Render for CLI/export (no click handlers).
|
|
4605
|
+
*/
|
|
4606
|
+
declare function renderPyramidForExport(container: HTMLDivElement, parsed: ParsedPyramid, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions): void;
|
|
4607
|
+
|
|
4608
|
+
interface RingLayer {
|
|
4609
|
+
readonly label: string;
|
|
4518
4610
|
readonly lineNumber: number;
|
|
4611
|
+
/** Optional palette color name (red/green/blue/…). */
|
|
4612
|
+
readonly color?: string;
|
|
4613
|
+
/** Description lines — from bare pipe shorthand or indented body. */
|
|
4614
|
+
readonly description: readonly string[];
|
|
4615
|
+
/** Unconsumed pipe metadata (reserved for future use). */
|
|
4616
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
4519
4617
|
}
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
* always plain degrees in [−90, 90]. */
|
|
4528
|
-
type GeoExtent = [[number, number], [number, number]];
|
|
4529
|
-
interface ResolvedMap {
|
|
4530
|
-
readonly title: string | null;
|
|
4531
|
-
readonly subtitle?: string;
|
|
4532
|
-
readonly caption?: string;
|
|
4533
|
-
readonly tagGroups: readonly TagGroup[];
|
|
4534
|
-
readonly directives: MapDirectives;
|
|
4535
|
-
readonly basemaps: Basemaps;
|
|
4536
|
-
readonly regions: readonly ResolvedRegion[];
|
|
4537
|
-
readonly pois: readonly ResolvedPoi[];
|
|
4538
|
-
readonly edges: readonly ResolvedEdge[];
|
|
4539
|
-
readonly routes: readonly ResolvedRoute[];
|
|
4540
|
-
readonly extent: GeoExtent;
|
|
4541
|
-
readonly projection: ProjectionFamily;
|
|
4618
|
+
interface ParsedRing {
|
|
4619
|
+
readonly type: 'ring';
|
|
4620
|
+
readonly title: string;
|
|
4621
|
+
readonly titleLineNumber: number;
|
|
4622
|
+
/** Source order: layers[0] = innermost (filled disc); last = outermost ring. */
|
|
4623
|
+
readonly layers: readonly RingLayer[];
|
|
4624
|
+
readonly options: Readonly<Record<string, string>>;
|
|
4542
4625
|
readonly diagnostics: readonly DgmoError[];
|
|
4543
4626
|
readonly error: string | null;
|
|
4544
4627
|
}
|
|
4545
4628
|
|
|
4629
|
+
/**
|
|
4630
|
+
* Parse a `.dgmo` ring diagram document.
|
|
4631
|
+
*
|
|
4632
|
+
* Top of file = innermost ring (rendered as a filled disc).
|
|
4633
|
+
* Last layer in source = outermost ring.
|
|
4634
|
+
*/
|
|
4635
|
+
declare function parseRing(content: string): ParsedRing;
|
|
4636
|
+
|
|
4637
|
+
/**
|
|
4638
|
+
* Render a ring diagram into the given container.
|
|
4639
|
+
*/
|
|
4640
|
+
declare function renderRing(container: HTMLDivElement, parsed: ParsedRing, palette: PaletteColors, isDark: boolean, onClickItem?: (lineNumber: number) => void, exportDims?: D3ExportDimensions): void;
|
|
4641
|
+
/**
|
|
4642
|
+
* Render for CLI/export (no click handlers).
|
|
4643
|
+
*/
|
|
4644
|
+
declare function renderRingForExport(container: HTMLDivElement, parsed: ParsedRing, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions): void;
|
|
4645
|
+
|
|
4646
|
+
/** True when the first non-blank/non-comment line declares `map`. */
|
|
4647
|
+
declare function looksLikeMap(content: string): boolean;
|
|
4648
|
+
declare function parseMap(content: string): ParsedMap;
|
|
4649
|
+
|
|
4546
4650
|
declare function resolveMap(parsed: ParsedMap, data: MapData): ResolvedMap;
|
|
4547
4651
|
|
|
4548
4652
|
/** Load + memoize the four map assets (Node). Throws if none of the candidate
|
|
@@ -4556,6 +4660,9 @@ interface MapLayoutRegion {
|
|
|
4556
4660
|
readonly d: string;
|
|
4557
4661
|
readonly fill: string;
|
|
4558
4662
|
readonly stroke: string;
|
|
4663
|
+
/** Human-readable display name (e.g. "France", "California"). Set for EVERY
|
|
4664
|
+
* region — authored and base/context alike — and emitted as
|
|
4665
|
+
* `data-region-name` so the app can show it on hover. */
|
|
4559
4666
|
readonly label?: string;
|
|
4560
4667
|
readonly lineNumber: number;
|
|
4561
4668
|
readonly layer: 'base' | 'country' | 'us-state';
|
|
@@ -4578,6 +4685,32 @@ interface MapLayoutInset {
|
|
|
4578
4685
|
readonly w: number;
|
|
4579
4686
|
readonly h: number;
|
|
4580
4687
|
readonly points: ReadonlyArray<readonly [number, number]>;
|
|
4688
|
+
/** The FITTED inset projection (fit to this frame's screen box inside
|
|
4689
|
+
* `placeInset`). Load-bearing for pixel↔lonLat over the AK/HI insets: the
|
|
4690
|
+
* un-fitted `alaskaProjection()`/`hawaiiProjection()` factories would invert
|
|
4691
|
+
* to garbage, so the geo-query inverts against THIS instance. */
|
|
4692
|
+
readonly projection: GeoProjection;
|
|
4693
|
+
/** Neighbour land (e.g. Canada beside Alaska) projected with this inset's
|
|
4694
|
+
* fitted projection and clipped to the box — drawn BEHIND the state so a land
|
|
4695
|
+
* border reads as land, not coast. Without it the state's outer ring buffers
|
|
4696
|
+
* outward over open box-ocean and the land border sprouts coastline rings.
|
|
4697
|
+
* `undefined` when no neighbour land falls inside the box. */
|
|
4698
|
+
readonly contextLand?: {
|
|
4699
|
+
readonly d: string;
|
|
4700
|
+
readonly fill: string;
|
|
4701
|
+
};
|
|
4702
|
+
}
|
|
4703
|
+
/** Post-projection non-uniform stretch applied to GLOBAL fits (fill-the-canvas).
|
|
4704
|
+
* `null` for regional fits. The geo-query applies the forward form when
|
|
4705
|
+
* projecting and the inverse before `projection.invert`. Mirrors the `stretch`
|
|
4706
|
+
* closure used for the path stream: px = ox + (x - bx0) * sx. */
|
|
4707
|
+
interface MapLayoutStretch {
|
|
4708
|
+
readonly sx: number;
|
|
4709
|
+
readonly sy: number;
|
|
4710
|
+
readonly ox: number;
|
|
4711
|
+
readonly oy: number;
|
|
4712
|
+
readonly bx0: number;
|
|
4713
|
+
readonly by0: number;
|
|
4581
4714
|
}
|
|
4582
4715
|
interface MapLayoutPoi {
|
|
4583
4716
|
readonly id: string;
|
|
@@ -4593,6 +4726,37 @@ interface MapLayoutPoi {
|
|
|
4593
4726
|
/** Tag values keyed by lowercased group name — emitted as `data-tag-<group>`
|
|
4594
4727
|
* so the app can spotlight markers on legend-entry hover (mirrors regions). */
|
|
4595
4728
|
readonly tags?: Readonly<Record<string, string>>;
|
|
4729
|
+
/** Set when this marker is a member of a coincident stack (spiderfy). Its
|
|
4730
|
+
* `cx/cy` is the EXPANDED ring position (the source-of-truth used by export +
|
|
4731
|
+
* the no-JS default); the app collapses the stack to a single badge at rest
|
|
4732
|
+
* via `data-cluster-member`. */
|
|
4733
|
+
readonly clusterId?: string;
|
|
4734
|
+
}
|
|
4735
|
+
/** A coincident POI stack (≥2 markers whose dots overlap). Laid out EXPANDED
|
|
4736
|
+
* (members fanned onto a ring/spiral with legs to the centroid) — that geometry
|
|
4737
|
+
* is the source of truth: a static export shows every member + label with no
|
|
4738
|
+
* special-casing. The renderer ALSO emits a collapsed `+N`-style badge (a neutral
|
|
4739
|
+
* dot ringed with the bare count) at the centroid, hidden by default; the app
|
|
4740
|
+
* collapses each stack at rest (hide members, show badge) and expands on click. */
|
|
4741
|
+
interface MapLayoutCluster {
|
|
4742
|
+
/** Stable id (the first member's POI id). Mirrored on member dots/labels/legs as
|
|
4743
|
+
* `data-cluster-member` and on the badge as `data-cluster`. */
|
|
4744
|
+
readonly id: string;
|
|
4745
|
+
/** Centroid (collapsed badge position + spider-leg hub). */
|
|
4746
|
+
readonly cx: number;
|
|
4747
|
+
readonly cy: number;
|
|
4748
|
+
/** Member count = badge text (bare `N`, RQ1). */
|
|
4749
|
+
readonly count: number;
|
|
4750
|
+
/** Radius of the transparent pointer hit-area centred on the centroid — covers
|
|
4751
|
+
* the collapsed badge AND the expanded dot ring so a hover/click anywhere over
|
|
4752
|
+
* the stack drives the spiderfy controller. */
|
|
4753
|
+
readonly hitR: number;
|
|
4754
|
+
/** Spider legs: centroid → each expanded member dot (member's own colour). */
|
|
4755
|
+
readonly legs: ReadonlyArray<{
|
|
4756
|
+
readonly x2: number;
|
|
4757
|
+
readonly y2: number;
|
|
4758
|
+
readonly color: string;
|
|
4759
|
+
}>;
|
|
4596
4760
|
}
|
|
4597
4761
|
/** A drawn connector -- an edge or a route leg (same geometry contract). */
|
|
4598
4762
|
interface MapLayoutLeg {
|
|
@@ -4603,6 +4767,17 @@ interface MapLayoutLeg {
|
|
|
4603
4767
|
readonly label?: string;
|
|
4604
4768
|
readonly labelX?: number;
|
|
4605
4769
|
readonly labelY?: number;
|
|
4770
|
+
/** Text colour for the label — contrast-picked against the background fill the
|
|
4771
|
+
* label sits on (the choropleth/tag region under it, or land/water), so a
|
|
4772
|
+
* freight tag over a dark scored country reads light, over pale land reads
|
|
4773
|
+
* dark. Absent ⇒ renderer falls back to the muted default. */
|
|
4774
|
+
readonly labelColor?: string;
|
|
4775
|
+
/** Whether the label needs a halo. Only set when the chosen text colour's
|
|
4776
|
+
* contrast against the underlying fill is marginal (mid-tone fills); clear
|
|
4777
|
+
* fills get no ghost. */
|
|
4778
|
+
readonly labelHalo?: boolean;
|
|
4779
|
+
/** Halo colour (opposite lightness of `labelColor`) when {@link labelHalo}. */
|
|
4780
|
+
readonly labelHaloColor?: string;
|
|
4606
4781
|
readonly lineNumber: number;
|
|
4607
4782
|
}
|
|
4608
4783
|
interface PlacedLabel {
|
|
@@ -4627,6 +4802,24 @@ interface PlacedLabel {
|
|
|
4627
4802
|
/** The POI this label belongs to (POI labels only) — emitted as `data-poi` on
|
|
4628
4803
|
* the label + leader so the app can spotlight the dot on label hover. */
|
|
4629
4804
|
readonly poiId?: string;
|
|
4805
|
+
/** Cartographic italic (context-label water names, §24B). Default upright. */
|
|
4806
|
+
readonly italic?: boolean;
|
|
4807
|
+
/** Cartographic letter-spacing in px (context-label water names). Default 0. */
|
|
4808
|
+
readonly letterSpacing?: number;
|
|
4809
|
+
/** Pre-wrapped display lines (context-label water names — §24B). When present
|
|
4810
|
+
* the renderer stacks these as centred tspans instead of `text`; `text` keeps
|
|
4811
|
+
* the single-string form for hit-testing/measurement. Absent ⇒ single line. */
|
|
4812
|
+
readonly lines?: readonly string[];
|
|
4813
|
+
/** Hover-only label: emitted invisible (opacity 0 + `data-poi-hidden`) in the
|
|
4814
|
+
* preview and revealed on POI/label hover; OMITTED entirely from static
|
|
4815
|
+
* export. Set when a POI cluster can't place its labels cleanly (see the
|
|
4816
|
+
* extent/count/clean gate in the POI-label block). Default-undefined =
|
|
4817
|
+
* visible. Hidden labels are NOT pushed into `obstacles`. */
|
|
4818
|
+
readonly hidden?: boolean;
|
|
4819
|
+
/** Set when this label belongs to a coincident-stack member (spiderfy). Emitted
|
|
4820
|
+
* visible (export + expanded view) but tagged `data-cluster-member` so the app
|
|
4821
|
+
* hides it when the stack is collapsed to its badge. */
|
|
4822
|
+
readonly clusterMember?: string;
|
|
4630
4823
|
readonly lineNumber: number;
|
|
4631
4824
|
}
|
|
4632
4825
|
interface MapLayoutLegend {
|
|
@@ -4653,6 +4846,41 @@ interface MapLayoutRiver {
|
|
|
4653
4846
|
readonly color: string;
|
|
4654
4847
|
readonly width: number;
|
|
4655
4848
|
}
|
|
4849
|
+
/** A drawn mountain-range relief shape — a projected polygon path. The renderer
|
|
4850
|
+
* unions these into one clip and rules horizontal hachure lines through them. */
|
|
4851
|
+
interface MapLayoutRelief {
|
|
4852
|
+
readonly d: string;
|
|
4853
|
+
}
|
|
4854
|
+
/** The shared hachure style for the relief lines. `null` when relief is off or
|
|
4855
|
+
* no range survives the gates. */
|
|
4856
|
+
interface MapLayoutReliefHatch {
|
|
4857
|
+
/** Line stroke — palette.text mixed into the land colour (so it's dark-on-
|
|
4858
|
+
* light and light-on-dark automatically as palette.text flips with theme). */
|
|
4859
|
+
readonly color: string;
|
|
4860
|
+
/** Vertical gap between lines in SCREEN px (constant density, zoom-stable). */
|
|
4861
|
+
readonly spacing: number;
|
|
4862
|
+
readonly width: number;
|
|
4863
|
+
}
|
|
4864
|
+
/** Style object for the opt-in coastline water-lines (`coastline`, §24B.2).
|
|
4865
|
+
* `null` when the flag is off. Carries only STYLE — no geometry; the renderer
|
|
4866
|
+
* buffers the existing region paths (`layout.regions[].d`) and masks them to the
|
|
4867
|
+
* water side. `d`/`thickness` are absolute SCREEN px (already resolved from a
|
|
4868
|
+
* fraction of the fitted canvas, so they stay proportional across export sizes —
|
|
4869
|
+
* ADR-3). */
|
|
4870
|
+
interface MapLayoutCoastlineStyle {
|
|
4871
|
+
/** Water-toned line colour (a touch more contrast than `lakeStroke`). */
|
|
4872
|
+
readonly color: string;
|
|
4873
|
+
/** The 2 coast-parallel lines, inner→outer. `d` = offshore distance,
|
|
4874
|
+
* `thickness` = ring width (both screen px), `opacity` fades seaward. */
|
|
4875
|
+
readonly lines: ReadonlyArray<{
|
|
4876
|
+
readonly d: number;
|
|
4877
|
+
readonly thickness: number;
|
|
4878
|
+
readonly opacity: number;
|
|
4879
|
+
}>;
|
|
4880
|
+
/** Per-subpath bbox-extent floor (screen px): rings smaller than this are
|
|
4881
|
+
* dropped (de-noise tiny islands, bound the stroke cost — R5/R11). */
|
|
4882
|
+
readonly minExtent: number;
|
|
4883
|
+
}
|
|
4656
4884
|
interface MapLayout {
|
|
4657
4885
|
readonly width: number;
|
|
4658
4886
|
readonly height: number;
|
|
@@ -4663,8 +4891,21 @@ interface MapLayout {
|
|
|
4663
4891
|
readonly regions: readonly MapLayoutRegion[];
|
|
4664
4892
|
/** Major river centerlines, drawn over land/lakes and under POIs/edges. */
|
|
4665
4893
|
readonly rivers: readonly MapLayoutRiver[];
|
|
4894
|
+
/** Mountain-range relief shapes (empty unless `relief` is on + the asset is
|
|
4895
|
+
* present); the renderer clips horizontal hachure lines to their union,
|
|
4896
|
+
* drawn over base land, under rivers/POIs/data fills. */
|
|
4897
|
+
readonly relief: readonly MapLayoutRelief[];
|
|
4898
|
+
/** Hachure style for the relief lines (null = relief off / none survived). */
|
|
4899
|
+
readonly reliefHatch: MapLayoutReliefHatch | null;
|
|
4900
|
+
/** Style for the opt-in coastline water-lines (null = `coastline` off). The
|
|
4901
|
+
* renderer buffers `regions[]`/`insetRegions[]` paths against this style and
|
|
4902
|
+
* masks them to the water side. */
|
|
4903
|
+
readonly coastlineStyle: MapLayoutCoastlineStyle | null;
|
|
4666
4904
|
readonly legs: readonly MapLayoutLeg[];
|
|
4667
4905
|
readonly pois: readonly MapLayoutPoi[];
|
|
4906
|
+
/** Coincident POI stacks (spiderfy). Empty when no ≥2-member overlap exists.
|
|
4907
|
+
* The renderer draws a collapsed badge per stack; the app collapses/expands. */
|
|
4908
|
+
readonly clusters: readonly MapLayoutCluster[];
|
|
4668
4909
|
readonly labels: readonly PlacedLabel[];
|
|
4669
4910
|
readonly legend: MapLayoutLegend | null;
|
|
4670
4911
|
/** Framed AK/HI inset cutouts (albers-usa only; empty otherwise). */
|
|
@@ -4672,6 +4913,16 @@ interface MapLayout {
|
|
|
4672
4913
|
/** AK/HI region paths drawn inside the inset boxes (foreground, over an
|
|
4673
4914
|
* opaque ocean fill). Paired positionally with `insets`. */
|
|
4674
4915
|
readonly insetRegions: readonly MapLayoutRegion[];
|
|
4916
|
+
/** The fitted MAIN projection (the conus conic for albers-usa). Exposed for
|
|
4917
|
+
* the geo-query's pixel↔lonLat inversion — the app NEVER reconstructs it from
|
|
4918
|
+
* metadata; it binds to this exact instance. */
|
|
4919
|
+
readonly projection: GeoProjection;
|
|
4920
|
+
/** Non-uniform stretch applied for GLOBAL fits (null for regional fits). */
|
|
4921
|
+
readonly stretch: MapLayoutStretch | null;
|
|
4922
|
+
/** Generic layout-time diagnostics channel — currently has no producers, so it
|
|
4923
|
+
* is always empty. Kept wired up because callers merge it with the resolver's
|
|
4924
|
+
* diagnostics for the editor lint channel. */
|
|
4925
|
+
readonly diagnostics: readonly DgmoError[];
|
|
4675
4926
|
}
|
|
4676
4927
|
interface LayoutOptions {
|
|
4677
4928
|
readonly palette: PaletteColors;
|
|
@@ -4682,6 +4933,11 @@ interface LayoutOptions {
|
|
|
4682
4933
|
* selects the choropleth ramp, a tag-group name selects that group, `'none'`
|
|
4683
4934
|
* / `null` clears it. `undefined` = not provided (use the directive/default). */
|
|
4684
4935
|
readonly activeGroup?: string | null;
|
|
4936
|
+
/** Export-only: when true, suppress the global stretch-fill and contain-fit
|
|
4937
|
+
* (letterbox) instead. Set by `mapExportDimensions` when it clamps/floors the
|
|
4938
|
+
* canvas away from the content aspect, so the off-aspect canvas doesn't
|
|
4939
|
+
* re-distort. The in-app preview pane leaves this unset (keeps stretch-fill). */
|
|
4940
|
+
readonly preferContain?: boolean;
|
|
4685
4941
|
}
|
|
4686
4942
|
interface Size {
|
|
4687
4943
|
readonly width: number;
|
|
@@ -4689,16 +4945,19 @@ interface Size {
|
|
|
4689
4945
|
}
|
|
4690
4946
|
/** The map's water / backdrop colour for a palette — the single source of truth
|
|
4691
4947
|
* shared by the renderer's `<rect>` fill and any host wrapper that needs to
|
|
4692
|
-
* match it (so letterbox gaps around the SVG don't show a stray band).
|
|
4693
|
-
*
|
|
4694
|
-
*
|
|
4695
|
-
|
|
4948
|
+
* match it (so letterbox gaps around the SVG don't show a stray band). Always a
|
|
4949
|
+
* VERY faded blue — uniform whether or not a colouring dimension is active — so
|
|
4950
|
+
* it reads as water without competing with saturated blue/green data hues.
|
|
4951
|
+
* `_dataActive` is retained for signature stability (the sea no longer changes
|
|
4952
|
+
* with data; only neighbour land recedes — see layout's `foreignFill`). */
|
|
4953
|
+
declare function mapBackgroundColor(palette: PaletteColors, isDark?: boolean, _dataActive?: boolean): string;
|
|
4696
4954
|
/** The map's neutral (unscored/untagged) LAND colour — the base every region
|
|
4697
4955
|
* blends from. Exported so a host can DIM a region to plain land (rather than
|
|
4698
4956
|
* lowering opacity, which would let the water show through and make the shape
|
|
4699
|
-
* read as ocean). Matches the layout's `neutralFill`.
|
|
4700
|
-
*
|
|
4701
|
-
|
|
4957
|
+
* read as ocean). Matches the layout's `neutralFill`. Always a VERY faded green
|
|
4958
|
+
* — uniform whether or not data is active — so saturated tag/score tints read
|
|
4959
|
+
* clearly against it. `_dataActive` is retained for signature stability. */
|
|
4960
|
+
declare function mapNeutralLandColor(palette: PaletteColors, isDark: boolean, _dataActive?: boolean): string;
|
|
4702
4961
|
declare function layoutMap(resolved: ResolvedMap, data: MapData, size: Size, opts: LayoutOptions): MapLayout;
|
|
4703
4962
|
|
|
4704
4963
|
/** Render a resolved map into `container` (d3-selection appends an `<svg>`). */
|
|
@@ -4708,6 +4967,130 @@ activeGroupOverride?: string | null): void;
|
|
|
4708
4967
|
/** Export wrapper (no click handler) — matches the structured-renderer contract. */
|
|
4709
4968
|
declare function renderMapForExport(container: HTMLDivElement, resolved: ResolvedMap, data: MapData, palette: PaletteColors, isDark: boolean, exportDims?: D3ExportDimensions): void;
|
|
4710
4969
|
|
|
4970
|
+
/** The map's intrinsic projected aspect (width / height) for a resolved map.
|
|
4971
|
+
*
|
|
4972
|
+
* Measured by fitting the projection + fit target (the SAME `buildMapProjection`
|
|
4973
|
+
* output the renderer draws with) into a square reference box and reading the
|
|
4974
|
+
* projected bounds of the fit target. `fitSize` scales uniformly, so the ratio is
|
|
4975
|
+
* independent of the box size (see the reference-box invariance test).
|
|
4976
|
+
*
|
|
4977
|
+
* Returns {@link FALLBACK_ASPECT} (3:2) if the result is non-finite or ≤ 0 — the
|
|
4978
|
+
* helper never emits a NaN/0/Infinity aspect. */
|
|
4979
|
+
declare function mapContentAspect(resolved: ResolvedMap, data: MapData,
|
|
4980
|
+
/** Square reference box for the measurement. Uniform `fitSize` scaling makes the
|
|
4981
|
+
* result invariant to this value; exposed only so tests can assert that. */
|
|
4982
|
+
ref?: number): number;
|
|
4983
|
+
/** Content-aware export dimensions for a map: `width` fixed at `baseWidth`,
|
|
4984
|
+
* `height` derived from the clamped intrinsic aspect, with a minimum-map-band
|
|
4985
|
+
* floor for very wide extents. `preferContain` is true when the clamp or floor
|
|
4986
|
+
* forced the canvas off the content aspect — the renderer then contain-fits
|
|
4987
|
+
* (letterbox) instead of stretching, so the off-aspect canvas doesn't re-distort. */
|
|
4988
|
+
interface MapExportDimensions {
|
|
4989
|
+
readonly width: number;
|
|
4990
|
+
readonly height: number;
|
|
4991
|
+
readonly preferContain: boolean;
|
|
4992
|
+
}
|
|
4993
|
+
declare function mapExportDimensions(resolved: ResolvedMap, data: MapData, baseWidth?: number): MapExportDimensions;
|
|
4994
|
+
|
|
4995
|
+
/** Nearest gazetteer city to a point: the real haversine distance, plus the
|
|
4996
|
+
* canonical name + ISO + (US-only) subdivision for token shaping. `lon`/`lat`
|
|
4997
|
+
* are the city's own gazetteer coordinates (so callers can mark it on the map,
|
|
4998
|
+
* distinct from the inspected point). */
|
|
4999
|
+
interface NearestCity {
|
|
5000
|
+
readonly name: string;
|
|
5001
|
+
readonly iso: string;
|
|
5002
|
+
readonly sub?: string;
|
|
5003
|
+
readonly distanceKm: number;
|
|
5004
|
+
readonly lon: number;
|
|
5005
|
+
readonly lat: number;
|
|
5006
|
+
}
|
|
5007
|
+
/** A region declaration with its canonical/primary form plus bare alternates
|
|
5008
|
+
* (behind the card's "other forms" expander). */
|
|
5009
|
+
interface RegionToken {
|
|
5010
|
+
/** Explicit scoped form, shown first (`Florida US-FL` / `France FR`). */
|
|
5011
|
+
readonly primary: string;
|
|
5012
|
+
/** Bare forms (bare ISO, bare code, bare name). */
|
|
5013
|
+
readonly alternates: string[];
|
|
5014
|
+
}
|
|
5015
|
+
/** Paste-ready DGMO tokens for one inspected point — each round-trips through the
|
|
5016
|
+
* map parser with zero diagnostics (the app inserts verbatim, never synthesizes
|
|
5017
|
+
* syntax). */
|
|
5018
|
+
interface ResultTokens {
|
|
5019
|
+
/** Positional POI line, e.g. `poi 40.7608 -111.891` (NEVER `@lat,lon`). */
|
|
5020
|
+
readonly coordPoiLine: string;
|
|
5021
|
+
/** US-state region tokens — null when the click isn't in a US state. */
|
|
5022
|
+
readonly state: RegionToken | null;
|
|
5023
|
+
/** Country region tokens — null over open ocean (no country). */
|
|
5024
|
+
readonly country: RegionToken | null;
|
|
5025
|
+
/** Scoped city token (`New York US-NY` / `Paris FR`), or a bare ambiguous name. */
|
|
5026
|
+
readonly city: {
|
|
5027
|
+
readonly token: string;
|
|
5028
|
+
readonly ambiguous: boolean;
|
|
5029
|
+
} | null;
|
|
5030
|
+
}
|
|
5031
|
+
/** The single unified Inspect result. */
|
|
5032
|
+
interface ResultCard {
|
|
5033
|
+
readonly lonLat: [number, number];
|
|
5034
|
+
readonly country: {
|
|
5035
|
+
iso: string;
|
|
5036
|
+
name: string;
|
|
5037
|
+
} | null;
|
|
5038
|
+
readonly state: {
|
|
5039
|
+
iso: string;
|
|
5040
|
+
name: string;
|
|
5041
|
+
} | null;
|
|
5042
|
+
readonly nearestCity: NearestCity | null;
|
|
5043
|
+
readonly tokens: ResultTokens;
|
|
5044
|
+
}
|
|
5045
|
+
/** A gazetteer city projected to screen pixels for the all-cities overlay. */
|
|
5046
|
+
interface ProjectedCity {
|
|
5047
|
+
readonly name: string;
|
|
5048
|
+
readonly iso: string;
|
|
5049
|
+
readonly sub?: string;
|
|
5050
|
+
readonly lon: number;
|
|
5051
|
+
readonly lat: number;
|
|
5052
|
+
readonly px: number;
|
|
5053
|
+
readonly py: number;
|
|
5054
|
+
readonly pop: number;
|
|
5055
|
+
}
|
|
5056
|
+
interface MapGeoQuery {
|
|
5057
|
+
/** Pixel → `[lon,lat]`, or null for an out-of-domain pixel. */
|
|
5058
|
+
invert(px: number, py: number): [number, number] | null;
|
|
5059
|
+
/** `[lon,lat]` → pixel, or null if it projects nowhere. */
|
|
5060
|
+
project(lonLat: readonly [number, number]): [number, number] | null;
|
|
5061
|
+
/** One click → the unified result card, or null if the pixel inverts to
|
|
5062
|
+
* nothing (graceful "no location"). */
|
|
5063
|
+
locate(px: number, py: number): ResultCard | null;
|
|
5064
|
+
/** Culled + projected cities for the all-cities layer (population-primary). */
|
|
5065
|
+
cities(extent?: GeoExtent): ProjectedCity[];
|
|
5066
|
+
/** Layout-time, dimension-dependent diagnostics. They live on the geo-query
|
|
5067
|
+
* (bound to the rendered layout) rather than the resolver. Callers merge them
|
|
5068
|
+
* with `resolved.diagnostics`. (No producers currently — always empty.) */
|
|
5069
|
+
readonly diagnostics: readonly DgmoError[];
|
|
5070
|
+
}
|
|
5071
|
+
interface CreateMapGeoQueryOptions {
|
|
5072
|
+
readonly content: string;
|
|
5073
|
+
readonly width: number;
|
|
5074
|
+
readonly height: number;
|
|
5075
|
+
/** Injected map assets — same `MapData` the app passes to `renderMap`. */
|
|
5076
|
+
readonly data: MapData;
|
|
5077
|
+
/** Same palette/isDark the app renders with (geometry is palette-independent,
|
|
5078
|
+
* but `layoutMap` mandates them). */
|
|
5079
|
+
readonly palette: PaletteColors;
|
|
5080
|
+
readonly isDark: boolean;
|
|
5081
|
+
}
|
|
5082
|
+
/** Construct a geo-query handle bound to the layout for `(content, width,
|
|
5083
|
+
* height, data, palette, isDark)`. Deterministic: identical inputs ⇒ the same
|
|
5084
|
+
* fitted projection the rendered SVG used, so inverted clicks align.
|
|
5085
|
+
*
|
|
5086
|
+
* INVARIANT: this is the PREVIEW path — it never passes `preferContain`, so its
|
|
5087
|
+
* layout matches the in-app preview (stretch-fill), where geo-query is used. It is
|
|
5088
|
+
* NOT valid against a content-aware EXPORT canvas (which may set `preferContain` →
|
|
5089
|
+
* contain-fit): the inverted positions would not match that export's pixels. If
|
|
5090
|
+
* geo-query is ever pointed at an export canvas, thread `preferContain` through
|
|
5091
|
+
* `CreateMapGeoQueryOptions` to keep the projection in sync. */
|
|
5092
|
+
declare function createMapGeoQuery(opts: CreateMapGeoQueryOptions): MapGeoQuery;
|
|
5093
|
+
|
|
4711
5094
|
interface MapPlaceCompletion {
|
|
4712
5095
|
/** Canonical display name (original casing), e.g. `Portland`. */
|
|
4713
5096
|
readonly name: string;
|
|
@@ -5328,4 +5711,4 @@ declare function migrateContent(source: string): ContentMigration;
|
|
|
5328
5711
|
*/
|
|
5329
5712
|
declare function formatLineDiff(path: string, original: string, migrated: string): string;
|
|
5330
5713
|
|
|
5331
|
-
export { ALL_CHART_TYPES, AMBIGUITY_THRESHOLD, ARROW_DIAGNOSTIC_CODES, type Activation, type AncestorInfo, type ArcLink, type ArcNodeGroup, type BLCollapseResult, type BLEdge, type BLGroup, type BLLayoutEdge, type BLLayoutGroup, type BLLayoutNode, type BLLayoutResult, type BLNode, type BlipTrend, type BoundaryTopology, type C4ArrowType, type C4DeploymentNode, type C4Element, type C4ElementType, type C4Group, type C4LayoutBoundary, type C4LayoutEdge, type C4LayoutNode, type C4LayoutResult, type C4LegendEntry, type C4LegendGroup, type C4Relationship, type C4Shape, type C4TagEntry, type C4TagGroup, CHART_TYPES, CHART_TYPE_DESCRIPTIONS, COMPLETION_REGISTRY, type ChartDataPoint, type ChartEra, type ChartType$1 as ChartType, type Confidence as ChartTypeConfidence, type ChartTypeMeta, type ChartTypeScore, type SuggestionResult as ChartTypeSuggestionResult, type ClassLayoutEdge, type ClassLayoutNode, type ClassLayoutResult, type ClassMember, type ClassModifier, type ClassNode, type ClassRelationship, type CollapsedMindmapResult, type CollapsedOrgResult, type CollapsedSitemapResult, type CollapsedView, type CompactViewState, type ComputedInfraEdge, type ComputedInfraModel, type ComputedInfraNode, type ContentMigration, type ContextRelationship, type CycleEdge, type CycleLayoutEdge, type CycleLayoutNode, type CycleLayoutResult, type CycleNode, type CycleRenderOptions, type D3ExportDimensions, type DecodedDiagramUrl, type DgmoError, type DgmoSeverity, type DiagramSymbols, type DirectiveSpec, type DirectiveValueSpec, type Duration, type DurationUnit, ECHART_EXPORT_WIDTH, ENTITY_TYPES, type ERCardinality, type ERColumn, type ERConstraint, type ERLayoutEdge, type ERLayoutNode, type ERLayoutResult, type ERRelationship, type ERTable, type ElseIfBranch, type EncodeDiagramUrlOptions, type EncodeDiagramUrlResult, type ExpandedActivity, type ExtendedChartType, type ExtractFn, type FocusOrgResult, type GanttDependency, type GanttEra, type GanttGroup, type GroupRow as GanttGroupRow, type GanttHolidays, type GanttInteractiveOptions, type LaneHeaderRow as GanttLaneHeaderRow, type GanttMarker, type GanttNode, type GanttOptions, type Row as GanttRow, type GanttTask, type TaskRow as GanttTaskRow, type Gazetteer, type GazetteerEntry, type GeoExtent, type GetOrCreateNameResult, type GraphDirection, type GraphEdge, type GraphGroup, type GraphNode, type GraphShape, INFRA_BEHAVIOR_KEYS, type ImportSource, type InfraAvailabilityPercentiles, type InfraBehaviorKey, type InfraCbState, type InfraComputeParams, type InfraDiagnostic, type InfraEdge, type InfraGroup, type InfraLatencyPercentiles, type InfraLayoutEdge, type InfraLayoutGroup, type InfraLayoutNode, type InfraLayoutResult, type InfraLegendGroup, type InfraNode, type InfraPlaybackState, type InfraProperty, type InfraRole, type InfraTagGroup, type InlineSpan, type JourneyMapAnnotation, type JourneyMapInteractiveOptions, type JourneyMapLayout, type JourneyMapPersona, type JourneyMapPhase, type JourneyMapStep, type KanbanCard, type KanbanColumn, type KanbanTagEntry, type KanbanTagGroup, LEGEND_GEAR_PILL_W, LEGEND_HEIGHT, type LayoutEdge, type LayoutGroup, type LayoutNode, type LayoutOptions$1 as LayoutOptions, type LayoutResult$1 as LayoutResult, type LegendCallbacks, type LegendConfig, type LegendControl, type LegendGroupData, type LegendHandle, type LegendLayout, type LegendMode, type LegendPalette, type LegendPosition, type LegendState, METADATA_KEY_SET, MIN_PRIMARY_SCORE, type MapCompletionOptions, type MapData, type MapDirectives, type MapEdge, type MapLayout, type MapLayoutLeg, type MapLayoutLegend, type MapLayoutPoi, type MapLayoutRegion, type MapPlaceCompletion, type MapPoi, type MapRegion, type MapRegionCompletion, type MapRoute, type MemberVisibility, type MindmapLayoutEdge, type MindmapLayoutNode, type MindmapLayoutResult, type MindmapNode, type MonteCarloResult, type NameEntry, type NodeDetail, type OrgContainerBounds, type OrgLayoutEdge, type OrgLayoutNode, type OrgLayoutResult, type OrgNode, PERT_LEGEND_PILL_HEIGHT, PIPE_METADATA, type PaletteColors, type PaletteConfig, type ParseInArrowLabelResult, type ParsedBoxesAndLines, type ParsedC4, type ParsedChart, type ParsedClassDiagram, type ParsedCycle, type ParsedERDiagram, type ParsedExtendedChart, type ParsedGantt, type ParsedGraph, type ParsedInfra, type ParsedJourneyMap, type ParsedKanban, type ParsedMap, type ParsedMindmap, type ParsedOrg, type ParsedPert, type ParsedPyramid, type ParsedRaci, type ParsedRing, type ParsedSequenceDgmo, type ParsedSitemap, type ParsedTechRadar, type ParsedVisualization, type ParsedWireframe, type ParticipantType, type PertActivity, type Anchor as PertAnchor, type PertDirection, type PertEdge, type PertGroup, type PertLayoutEdge, type PertLayoutGroup, type PertLayoutNode, type LayoutOverrides as PertLayoutOverrides, type LayoutResult as PertLayoutResult, type PertMilestone, type PertOptions, type PertRenderOptions, type PipeKeySpec, type PlacedLabel, type PoiPos, type ProjectionFamily, type PyramidLayer, type QuadrantPosition, RACI_ERROR_CODES, VARIANTS as RACI_VARIANTS, RACI_WARNING_CODES, RECOGNIZED_COLOR_NAMES, RULE_COUNT, type RaciDragSource, type RaciInteractionHandlers, type RaciMarker, type RaciPhase, type RaciRoleAssignment, type RaciTask, type RaciVariant, type ReadFileFn, type RegionName, type RegionNames, type RelationshipType, type RenderCategory, type RenderStep, type ResolveImportsResult, type ResolvedActivity, type ResolvedEdge, type ResolvedGroup$1 as ResolvedGroup, type ResolvedMap, type ResolvedPert, type ResolvedGroup as ResolvedPertGroup, type ResolvedPoi, type ResolvedRegion, type ResolvedRoute, type ResolvedSchedule, type ResolvedTask, type RingLayer, ScaleContext, type ScatterLabelPoint, type SectionMessageGroup, type SequenceBlock, type SequenceElement, type SequenceGroup, type SequenceMessage, type SequenceNote, type SequenceParticipant, type SequenceRenderOptions, type SequenceSection, type SimulateOptions, type SitemapContainerBounds, type SitemapDirection, type SitemapEdge, type SitemapLayoutEdge, type SitemapLayoutNode, type SitemapLayoutResult, type SitemapLegendEntry, type SitemapLegendGroup, type SitemapNode, type StateCollapseResult, type TagEntry, type TagGroup, type TechRadarBlip, type TechRadarLayoutPoint, type TechRadarQuadrant, type TechRadarRing, type Theme, type TransformResult, type VisualizationType, type WireframeElement, type WireframeElementType, type WireframeFormFactor, type WireframeLayout, type WireframeLayoutNode, addDurationToDate, analyzePert, applyCollapseProjection, applyGroupOrdering, applyPositionOverrides, boldPalette, buildExtendedChartOption, buildNoteMessageMap, buildRenderSequence, buildSimpleChartOption, buildSimulationContext, buildTagLaneRowList, calculateSchedule, catppuccinPalette, confidence as chartTypeConfidence, chartTypeParsers, chartTypes, collapseBoxesAndLines, collapseMindmapTree, collapseOrgTree, collapseSitemapTree, collapseStateGroups, collectDiagramRoles, collectTasks, colorNames, completeMapPlaces, completeMapRegions, computeActivations, computeCardArchive, computeCardMove, computeCycleLayout, computeInfra, computeInfraLegendGroups, computeLegendLayout, computeRadarLayout, computeScatterLabelGraphics, computeTimeTicks, contrastText, controlsGroupCapsuleWidth, decodeDiagramUrl, decodeViewState, displayName, draculaPalette, encodeDiagramUrl, encodeViewState, extractDiagramSymbols, extractPertSymbols, extractTagDeclarations, findUnsafePipePositions, focusOrgTree, formatDateLabel, formatDgmoError, formatLineDiff, getAllChartTypes, getAvailablePalettes, getExtendedChartLegendGroups, getLegendReservedHeight, getOrCreateName, getPalette, getRadarGeometry, getRenderCategory, getSeriesColors, getSimpleChartLegendGroups, groupMessagesBySection, gruvboxPalette, hexToHSL, hexToHSLString, highlightPertCriticalPath, highlightPertSet, hslToHex, inferParticipantType, inferRoles, isArchiveColumn, isExtendedChartType, isLegacyMetadataLine, isRecognizedColorName, isSequenceBlock, isSequenceNote, isValidHex, knownChartTypeIds, layoutBoxesAndLines, layoutC4Components, layoutC4Containers, layoutC4Context, layoutC4Deployment, layoutClassDiagram, layoutERDiagram, layoutGraph, layoutInfra, layoutJourneyMap, layoutMap, layoutMindmap, layoutOrg, layoutPert, layoutSitemap, layoutWireframe, loadMapData, looksLikeClassDiagram, looksLikeERDiagram, looksLikeFlowchart, looksLikeMap, looksLikePert, looksLikeSequence, looksLikeSitemap, looksLikeState, makeDgmoError, mapBackgroundColor, mapNeutralLandColor, matchesContiguously, measurePertAnalysisBlock, migrateContent, mix, monokaiPalette, mulberry32, nord, nordPalette, normalize as normalizeChartTypePrompt, normalizeName, normalizePertSourceForShare, oneDarkPalette, orderArcNodes, palettes, parseAndLayoutInfra, parseBoxesAndLines, parseC4, parseChart, parseClassDiagram, parseCycle, parseDataRowValues, parseDgmo, parseDgmoChartType, parseERDiagram, parseExtendedChart, parseFirstLine, parseFlowchart, parseGantt, parseInArrowLabel, parseInfra, parseInlineMarkdown, parseJourneyMap, parseKanban, parseMap, parseMindmap, parseOrg, parsePert, parsePyramid, parseRaci, parseRing, parseSequenceDgmo, parseSequenceDgmo as parseSequenceDiagram, parseSitemap, parseState, parseTechRadar, parseTimelineDate, parseVisualization, parseWireframe, pertLegendBlockWidth, pertLegendEntries, cellAppendMarker as raciCellAppendMarker, cellCycle as raciCellCycle, cellRemove as raciCellRemove, cellReplace as raciCellReplace, registerExtractor, registerPalette, relayoutPert, render, renderArcDiagram, renderBoxesAndLines, renderBoxesAndLinesForExport, renderC4ComponentsForExport, renderC4Containers, renderC4ContainersForExport, renderC4Context, renderC4ContextForExport, renderC4Deployment, renderC4DeploymentForExport, renderClassDiagram, renderClassDiagramForExport, renderCycle, renderCycleForExport, renderERDiagram, renderERDiagramForExport, renderExtendedChartForExport, renderFlowchart, renderFlowchartForExport, renderForExport, renderGantt, renderInfra, renderJourneyMap, renderJourneyMapForExport, renderKanban, renderKanbanForExport, renderLegendD3, renderLegendSvg, renderLegendSvgFromConfig, renderMap, renderMapForExport, renderMindmap, renderMindmapForExport, renderOrg, renderOrgForExport, renderPert, renderPertAnalysisBlock, renderPertForExport, renderLegendBlock as renderPertLegendBlock, renderPyramid, renderPyramidForExport, renderQuadrant, renderQuadrantFocus, renderQuadrantFocusForExport, renderRaci, renderRaciForExport, renderRing, renderRingForExport, renderSequenceDiagram, renderSitemap, renderSitemapForExport, renderSlopeChart, renderState, renderStateForExport, renderTechRadar, renderTechRadarForExport, renderTimeline, renderVenn, renderWireframe, renderWordCloud, resetPertCriticalPath, resetPertHighlight, resolveColor, resolveColorWithDiagnostic, resolveMap, resolveOrgImports, resolveTaskName, rollUpContextRelationships, rosePinePalette, sampleBetaPert, scoreChartType, seriesColors, shade, shapeFill, simulateCanonical, simulateFast, solarizedPalette, suggestChartTypes, themes, tint, tokyoNightPalette, transformLine, truncateBareUrl, parseDgmo as validate, validateComputed, validateInfra, validateLabelCharacters };
|
|
5714
|
+
export { ALL_CHART_TYPES, AMBIGUITY_THRESHOLD, ARROW_DIAGNOSTIC_CODES, type Activation, type AncestorInfo, type ArcLink, type ArcNodeGroup, type BLCollapseResult, type BLEdge, type BLGroup, type BLLayoutEdge, type BLLayoutGroup, type BLLayoutNode, type BLLayoutResult, type BLNode, type BlipTrend, type BoundaryTopology, type C4ArrowType, type C4DeploymentNode, type C4Element, type C4ElementType, type C4Group, type C4LayoutBoundary, type C4LayoutEdge, type C4LayoutNode, type C4LayoutResult, type C4LegendEntry, type C4LegendGroup, type C4Relationship, type C4Shape, type C4TagEntry, type C4TagGroup, CHART_TYPES, CHART_TYPE_DESCRIPTIONS, COMPLETION_REGISTRY, type ChartDataPoint, type ChartEra, type ChartType$1 as ChartType, type Confidence as ChartTypeConfidence, type ChartTypeMeta, type ChartTypeScore, type SuggestionResult as ChartTypeSuggestionResult, type ClassLayoutEdge, type ClassLayoutNode, type ClassLayoutResult, type ClassMember, type ClassModifier, type ClassNode, type ClassRelationship, type CollapsedMindmapResult, type CollapsedOrgResult, type CollapsedSitemapResult, type CollapsedView, type CompactViewState, type ComputedInfraEdge, type ComputedInfraModel, type ComputedInfraNode, type ContentMigration, type ContextRelationship, type CreateMapGeoQueryOptions, type CycleEdge, type CycleLayoutEdge, type CycleLayoutNode, type CycleLayoutResult, type CycleNode, type CycleRenderOptions, type D3ExportDimensions, type DecodedDiagramUrl, type DgmoError, type DgmoSeverity, type DiagramSymbols, type DirectiveSpec, type DirectiveValueSpec, type Duration, type DurationUnit, ECHART_EXPORT_WIDTH, ENTITY_TYPES, type ERCardinality, type ERColumn, type ERConstraint, type ERLayoutEdge, type ERLayoutNode, type ERLayoutResult, type ERRelationship, type ERTable, type ElseIfBranch, type EncodeDiagramUrlOptions, type EncodeDiagramUrlResult, type ExpandedActivity, type ExtendedChartType, type ExtractFn, type FocusOrgResult, type GanttDependency, type GanttEra, type GanttGroup, type GroupRow as GanttGroupRow, type GanttHolidays, type GanttInteractiveOptions, type LaneHeaderRow as GanttLaneHeaderRow, type GanttMarker, type GanttNode, type GanttOptions, type Row as GanttRow, type GanttTask, type TaskRow as GanttTaskRow, type Gazetteer, type GazetteerEntry, type GeoExtent, type GetOrCreateNameResult, type GraphDirection, type GraphEdge, type GraphGroup, type GraphNode, type GraphShape, INFRA_BEHAVIOR_KEYS, type ImportSource, type InfraAvailabilityPercentiles, type InfraBehaviorKey, type InfraCbState, type InfraComputeParams, type InfraDiagnostic, type InfraEdge, type InfraGroup, type InfraLatencyPercentiles, type InfraLayoutEdge, type InfraLayoutGroup, type InfraLayoutNode, type InfraLayoutResult, type InfraLegendGroup, type InfraNode, type InfraPlaybackState, type InfraProperty, type InfraRole, type InfraTagGroup, type InlineSpan, type JourneyMapAnnotation, type JourneyMapInteractiveOptions, type JourneyMapLayout, type JourneyMapPersona, type JourneyMapPhase, type JourneyMapStep, type KanbanCard, type KanbanColumn, type KanbanTagEntry, type KanbanTagGroup, LEGEND_GEAR_PILL_W, LEGEND_HEIGHT, type LayoutEdge, type LayoutGroup, type LayoutNode, type LayoutOptions$1 as LayoutOptions, type LayoutResult$1 as LayoutResult, type LegendCallbacks, type LegendConfig, type LegendControl, type LegendGroupData, type LegendHandle, type LegendLayout, type LegendMode, type LegendPalette, type LegendPosition, type LegendState, METADATA_KEY_SET, MIN_PRIMARY_SCORE, type MapCompletionOptions, type MapData, type MapDirectives, type MapEdge, type MapExportDimensions, type MapGeoQuery, type MapLayout, type MapLayoutInset, type MapLayoutLeg, type MapLayoutLegend, type MapLayoutPoi, type MapLayoutRegion, type MapLayoutStretch, type MapPlaceCompletion, type MapPoi, type MapRegion, type MapRegionCompletion, type MapRoute, type MemberVisibility, type MindmapLayoutEdge, type MindmapLayoutNode, type MindmapLayoutResult, type MindmapNode, type MonteCarloResult, type NameEntry, type NearestCity, type NodeDetail, type OrgContainerBounds, type OrgLayoutEdge, type OrgLayoutNode, type OrgLayoutResult, type OrgNode, PERT_LEGEND_PILL_HEIGHT, PIPE_METADATA, type PaletteColors, type PaletteConfig, type ParseInArrowLabelResult, type ParsedBoxesAndLines, type ParsedC4, type ParsedChart, type ParsedClassDiagram, type ParsedCycle, type ParsedERDiagram, type ParsedExtendedChart, type ParsedGantt, type ParsedGraph, type ParsedInfra, type ParsedJourneyMap, type ParsedKanban, type ParsedMap, type ParsedMindmap, type ParsedOrg, type ParsedPert, type ParsedPyramid, type ParsedRaci, type ParsedRing, type ParsedSequenceDgmo, type ParsedSitemap, type ParsedTechRadar, type ParsedVisualization, type ParsedWireframe, type ParticipantType, type PertActivity, type Anchor as PertAnchor, type PertDirection, type PertEdge, type PertGroup, type PertLayoutEdge, type PertLayoutGroup, type PertLayoutNode, type LayoutOverrides as PertLayoutOverrides, type LayoutResult as PertLayoutResult, type PertMilestone, type PertOptions, type PertRenderOptions, type PipeKeySpec, type PlacedLabel, type PoiPos, type ProjectedCity, type ProjectionFamily, type PyramidLayer, type QuadrantPosition, RACI_ERROR_CODES, VARIANTS as RACI_VARIANTS, RACI_WARNING_CODES, RECOGNIZED_COLOR_NAMES, RULE_COUNT, type RaciDragSource, type RaciInteractionHandlers, type RaciMarker, type RaciPhase, type RaciRoleAssignment, type RaciTask, type RaciVariant, type ReadFileFn, type RegionName, type RegionNames, type RegionToken, type RelationshipType, type RenderCategory, type RenderStep, type ResolveImportsResult, type ResolvedActivity, type ResolvedEdge, type ResolvedGroup$1 as ResolvedGroup, type ResolvedMap, type ResolvedPert, type ResolvedGroup as ResolvedPertGroup, type ResolvedPoi, type ResolvedRegion, type ResolvedRoute, type ResolvedSchedule, type ResolvedTask, type ResultCard, type ResultTokens, type RingLayer, ScaleContext, type ScatterLabelPoint, type SectionMessageGroup, type SequenceBlock, type SequenceElement, type SequenceGroup, type SequenceMessage, type SequenceNote, type SequenceParticipant, type SequenceRenderOptions, type SequenceSection, type SimulateOptions, type SitemapContainerBounds, type SitemapDirection, type SitemapEdge, type SitemapLayoutEdge, type SitemapLayoutNode, type SitemapLayoutResult, type SitemapLegendEntry, type SitemapLegendGroup, type SitemapNode, type StateCollapseResult, type TagEntry, type TagGroup, type TechRadarBlip, type TechRadarLayoutPoint, type TechRadarQuadrant, type TechRadarRing, type Theme, type TransformResult, type VisualizationType, type WireframeElement, type WireframeElementType, type WireframeFormFactor, type WireframeLayout, type WireframeLayoutNode, addDurationToDate, analyzePert, applyCollapseProjection, applyGroupOrdering, applyPositionOverrides, atlasPalette, blueprintPalette, buildExtendedChartOption, buildNoteMessageMap, buildRenderSequence, buildSimpleChartOption, buildSimulationContext, buildTagLaneRowList, calculateSchedule, catppuccinPalette, confidence as chartTypeConfidence, chartTypeParsers, chartTypes, collapseBoxesAndLines, collapseMindmapTree, collapseOrgTree, collapseSitemapTree, collapseStateGroups, collectDiagramRoles, collectTasks, colorNames, completeMapPlaces, completeMapRegions, computeActivations, computeCardArchive, computeCardMove, computeCycleLayout, computeInfra, computeInfraLegendGroups, computeLegendLayout, computeRadarLayout, computeScatterLabelGraphics, computeTimeTicks, contrastText, controlsGroupCapsuleWidth, createMapGeoQuery, decodeDiagramUrl, decodeViewState, displayName, draculaPalette, encodeDiagramUrl, encodeViewState, extractDiagramSymbols, extractPertSymbols, extractTagDeclarations, findUnsafePipePositions, focusOrgTree, formatDateLabel, formatDgmoError, formatLineDiff, getAllChartTypes, getAvailablePalettes, getExtendedChartLegendGroups, getLegendReservedHeight, getOrCreateName, getPalette, getRadarGeometry, getRenderCategory, getSeriesColors, getSimpleChartLegendGroups, groupMessagesBySection, gruvboxPalette, hexToHSL, hexToHSLString, highlightPertCriticalPath, highlightPertSet, hslToHex, inferParticipantType, inferRoles, isArchiveColumn, isExtendedChartType, isLegacyMetadataLine, isRecognizedColorName, isSequenceBlock, isSequenceNote, isValidHex, knownChartTypeIds, layoutBoxesAndLines, layoutC4Components, layoutC4Containers, layoutC4Context, layoutC4Deployment, layoutClassDiagram, layoutERDiagram, layoutGraph, layoutInfra, layoutJourneyMap, layoutMap, layoutMindmap, layoutOrg, layoutPert, layoutSitemap, layoutWireframe, loadMapData, looksLikeClassDiagram, looksLikeERDiagram, looksLikeFlowchart, looksLikeMap, looksLikePert, looksLikeSequence, looksLikeSitemap, looksLikeState, makeDgmoError, mapBackgroundColor, mapContentAspect, mapExportDimensions, mapNeutralLandColor, matchesContiguously, measurePertAnalysisBlock, migrateContent, mix, monokaiPalette, mulberry32, nord, nordPalette, normalize as normalizeChartTypePrompt, normalizeName, normalizePertSourceForShare, oneDarkPalette, orderArcNodes, palettes, parseAndLayoutInfra, parseBoxesAndLines, parseC4, parseChart, parseClassDiagram, parseCycle, parseDataRowValues, parseDgmo, parseDgmoChartType, parseERDiagram, parseExtendedChart, parseFirstLine, parseFlowchart, parseGantt, parseInArrowLabel, parseInfra, parseInlineMarkdown, parseJourneyMap, parseKanban, parseMap, parseMindmap, parseOrg, parsePert, parsePyramid, parseRaci, parseRing, parseSequenceDgmo, parseSequenceDgmo as parseSequenceDiagram, parseSitemap, parseState, parseTechRadar, parseTimelineDate, parseVisualization, parseWireframe, pertLegendBlockWidth, pertLegendEntries, cellAppendMarker as raciCellAppendMarker, cellCycle as raciCellCycle, cellRemove as raciCellRemove, cellReplace as raciCellReplace, registerExtractor, registerPalette, relayoutPert, render, renderArcDiagram, renderBoxesAndLines, renderBoxesAndLinesForExport, renderC4ComponentsForExport, renderC4Containers, renderC4ContainersForExport, renderC4Context, renderC4ContextForExport, renderC4Deployment, renderC4DeploymentForExport, renderClassDiagram, renderClassDiagramForExport, renderCycle, renderCycleForExport, renderERDiagram, renderERDiagramForExport, renderExtendedChartForExport, renderFlowchart, renderFlowchartForExport, renderForExport, renderGantt, renderInfra, renderJourneyMap, renderJourneyMapForExport, renderKanban, renderKanbanForExport, renderLegendD3, renderLegendSvg, renderLegendSvgFromConfig, renderMap, renderMapForExport, renderMindmap, renderMindmapForExport, renderOrg, renderOrgForExport, renderPert, renderPertAnalysisBlock, renderPertForExport, renderLegendBlock as renderPertLegendBlock, renderPyramid, renderPyramidForExport, renderQuadrant, renderQuadrantFocus, renderQuadrantFocusForExport, renderRaci, renderRaciForExport, renderRing, renderRingForExport, renderSequenceDiagram, renderSitemap, renderSitemapForExport, renderSlopeChart, renderState, renderStateForExport, renderTechRadar, renderTechRadarForExport, renderTimeline, renderVenn, renderWireframe, renderWordCloud, resetPertCriticalPath, resetPertHighlight, resolveColor, resolveColorWithDiagnostic, resolveMap, resolveOrgImports, resolveTaskName, rollUpContextRelationships, rosePinePalette, sampleBetaPert, scoreChartType, seriesColors, shade, shapeFill, simulateCanonical, simulateFast, slatePalette, solarizedPalette, suggestChartTypes, themes, tidewaterPalette, tint, tokyoNightPalette, transformLine, truncateBareUrl, parseDgmo as validate, validateComputed, validateInfra, validateLabelCharacters };
|