@diagrammo/dgmo 0.47.0 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced.js +11 -11
- package/dist/auto.js +16 -16
- package/dist/auto.mjs +41 -12
- package/dist/block.js +4 -4
- package/dist/{chunk-FNB3PNGF.js → chunk-7DTWEFUE.js} +3 -3
- package/dist/{chunk-2DXMZRWJ.js → chunk-B65G5DNL.js} +8 -1
- package/dist/{chunk-RZCF2VVM.js → chunk-B7JUCQUA.js} +3 -1
- package/dist/{chunk-DU7W62N5.js → chunk-FANX6UJR.js} +3 -3
- package/dist/{chunk-6FZYCKXB.js → chunk-HSH73DP6.js} +2 -2
- package/dist/{chunk-P4RH4OSP.js → chunk-ILKORZ3H.js} +2 -2
- package/dist/{chunk-Y5QGVTVC.js → chunk-JTSMEYIZ.js} +7 -3
- package/dist/{chunk-RCERWOJR.js → chunk-ODZVHU3R.js} +1 -2
- package/dist/{chunk-DZAQBW35.js → chunk-SGZYXELT.js} +3 -7
- package/dist/{chunk-CUVHQHZ7.js → chunk-THXCFRTU.js} +3 -3
- package/dist/{chunk-IH6ZMVQ5.js → chunk-UC7TFHUM.js} +29 -11
- package/dist/{chunk-EMS2SK26.js → chunk-ZBWMSD5N.js} +3 -1
- package/dist/cli.cjs +15 -15
- package/dist/{dgmo-router-DZCIDUO5.js → dgmo-router-X35VLZLM.js} +3 -3
- package/dist/element.js +16 -16
- package/dist/element.mjs +41 -12
- package/dist/{flowchart-renderer-ZAEOL4DX.js → flowchart-renderer-SNDSII4D.js} +2 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -4
- package/dist/{parser-FUSKFGZN.js → parser-2EWECDSA.js} +2 -2
- package/dist/{renderer-UWA5XS74.js → renderer-4JHRUBE6.js} +3 -3
- package/dist/{renderer-WZRREQ2P.js → renderer-5MYBMBYO.js} +2 -2
- package/dist/{renderer-TOCOVLHS.js → renderer-B2OMQIQG.js} +3 -3
- package/dist/{renderer-2XQQQ6QR.js → renderer-N43WR5GV.js} +3 -3
- package/dist/{renderer-T7YKC5VP.js → renderer-ZRNG54CW.js} +3 -3
- package/dist/{state-renderer-RFYHSP4K.js → state-renderer-B4DQBM6M.js} +2 -2
- package/package.json +23 -71
- package/dist/advanced.cjs +0 -71648
- package/dist/advanced.d.cts +0 -5719
- package/dist/auto.cjs +0 -70648
- package/dist/auto.d.cts +0 -54
- package/dist/block.cjs +0 -70208
- package/dist/block.d.cts +0 -115
- package/dist/editor.cjs +0 -526
- package/dist/editor.d.cts +0 -26
- package/dist/element.cjs +0 -70530
- package/dist/element.d.cts +0 -62
- package/dist/highlight.cjs +0 -852
- package/dist/highlight.d.cts +0 -49
- package/dist/index.cjs +0 -70491
- package/dist/index.d.cts +0 -160
- package/dist/pert.cjs +0 -325
- package/dist/pert.d.cts +0 -559
- package/dist/themes-1-CuKpeH.d.cts +0 -908
- package/src/advanced.ts +0 -873
- package/src/arc/parser.ts +0 -15
- package/src/arc/renderer.ts +0 -633
- package/src/auto/index.ts +0 -621
- package/src/auto/shared.ts +0 -370
- package/src/auto/styles.ts +0 -73
- package/src/block/layout.ts +0 -198
- package/src/block/parser.ts +0 -427
- package/src/block/renderer.ts +0 -484
- package/src/block/types.ts +0 -67
- package/src/boxes-and-lines/collapse.ts +0 -96
- package/src/boxes-and-lines/focus.ts +0 -257
- package/src/boxes-and-lines/label-placement.ts +0 -339
- package/src/boxes-and-lines/layout-grouped.ts +0 -912
- package/src/boxes-and-lines/layout-layered.ts +0 -722
- package/src/boxes-and-lines/layout-search.ts +0 -1678
- package/src/boxes-and-lines/layout.ts +0 -398
- package/src/boxes-and-lines/parser.ts +0 -1181
- package/src/boxes-and-lines/renderer.ts +0 -1465
- package/src/boxes-and-lines/types.ts +0 -66
- package/src/c4/layout.ts +0 -2441
- package/src/c4/parser.ts +0 -1158
- package/src/c4/renderer.ts +0 -2008
- package/src/c4/types.ts +0 -89
- package/src/chart-type-registry.ts +0 -529
- package/src/chart-types.ts +0 -225
- package/src/chart.ts +0 -685
- package/src/charts-d3/bar.ts +0 -338
- package/src/charts-d3/chord.ts +0 -140
- package/src/charts-d3/function.ts +0 -147
- package/src/charts-d3/funnel.ts +0 -104
- package/src/charts-d3/heatmap.ts +0 -145
- package/src/charts-d3/index.ts +0 -337
- package/src/charts-d3/interactions.ts +0 -477
- package/src/charts-d3/line.ts +0 -344
- package/src/charts-d3/mount.ts +0 -151
- package/src/charts-d3/pie.ts +0 -117
- package/src/charts-d3/polar.ts +0 -89
- package/src/charts-d3/radar.ts +0 -0
- package/src/charts-d3/sankey.ts +0 -0
- package/src/charts-d3/scatter.ts +0 -185
- package/src/charts-d3/shared.ts +0 -208
- package/src/class/layout.ts +0 -326
- package/src/class/parser.ts +0 -635
- package/src/class/renderer.ts +0 -793
- package/src/class/types.ts +0 -58
- package/src/cli-banner.ts +0 -106
- package/src/cli.ts +0 -1080
- package/src/colors-diagnostics.ts +0 -35
- package/src/colors.ts +0 -379
- package/src/completion-types.ts +0 -27
- package/src/completion.ts +0 -2668
- package/src/cycle/layout.ts +0 -1026
- package/src/cycle/parser.ts +0 -387
- package/src/cycle/renderer.ts +0 -653
- package/src/cycle/types.ts +0 -101
- package/src/d3.ts +0 -1434
- package/src/data-chart-parser.ts +0 -1007
- package/src/dgmo-router.ts +0 -296
- package/src/diagnostics-registry.ts +0 -108
- package/src/diagnostics.ts +0 -0
- package/src/dimensions.ts +0 -20
- package/src/directives-registry.ts +0 -396
- package/src/editor/dgmo.grammar +0 -76
- package/src/editor/dgmo.grammar.d.ts +0 -2
- package/src/editor/dgmo.grammar.js +0 -18
- package/src/editor/dgmo.grammar.terms.d.ts +0 -5
- package/src/editor/dgmo.grammar.terms.js +0 -35
- package/src/editor/highlight-api.ts +0 -596
- package/src/editor/highlight.ts +0 -36
- package/src/editor/index.ts +0 -27
- package/src/editor/keywords.ts +0 -128
- package/src/editor/tokens.ts +0 -30
- package/src/element/index.ts +0 -432
- package/src/embed/css.ts +0 -312
- package/src/embed/escape.ts +0 -15
- package/src/embed/index.ts +0 -280
- package/src/er/classify.ts +0 -228
- package/src/er/layout.ts +0 -530
- package/src/er/parser.ts +0 -750
- package/src/er/renderer.ts +0 -725
- package/src/er/types.ts +0 -52
- package/src/error-card.ts +0 -269
- package/src/event-line/diagnostics.ts +0 -117
- package/src/event-line/parser.ts +0 -643
- package/src/event-line/renderer.ts +0 -1742
- package/src/event-line/types.ts +0 -74
- package/src/fonts.ts +0 -3
- package/src/gantt/calculator.ts +0 -979
- package/src/gantt/parser.ts +0 -1641
- package/src/gantt/renderer.ts +0 -3787
- package/src/gantt/resolver.ts +0 -172
- package/src/gantt/types.ts +0 -206
- package/src/graph/diagnostics.ts +0 -64
- package/src/graph/edge-spline.ts +0 -29
- package/src/graph/flowchart-parser.ts +0 -759
- package/src/graph/flowchart-renderer.ts +0 -817
- package/src/graph/layout.ts +0 -472
- package/src/graph/notes.ts +0 -21
- package/src/graph/state-collapse.ts +0 -78
- package/src/graph/state-parser.ts +0 -574
- package/src/graph/state-renderer.ts +0 -653
- package/src/graph/types.ts +0 -65
- package/src/index.ts +0 -261
- package/src/infra/compute.ts +0 -1385
- package/src/infra/layout.ts +0 -888
- package/src/infra/parser.ts +0 -1234
- package/src/infra/renderer.ts +0 -2534
- package/src/infra/roles.ts +0 -75
- package/src/infra/types.ts +0 -216
- package/src/infra/validation.ts +0 -201
- package/src/journey-map/layout.ts +0 -490
- package/src/journey-map/parser.ts +0 -557
- package/src/journey-map/renderer.ts +0 -1580
- package/src/journey-map/types.ts +0 -47
- package/src/kanban/mutations.ts +0 -175
- package/src/kanban/parser.ts +0 -509
- package/src/kanban/renderer.ts +0 -1449
- package/src/kanban/types.ts +0 -39
- package/src/label-layout.ts +0 -368
- package/src/map/colorize.ts +0 -54
- package/src/map/completion.ts +0 -316
- package/src/map/context-labels.ts +0 -609
- package/src/map/data/PROVENANCE.json +0 -1
- package/src/map/data/README.md +0 -40
- package/src/map/data/airport-collisions.json +0 -1
- package/src/map/data/airports.json +0 -1
- package/src/map/data/gazetteer.json +0 -1
- package/src/map/data/lakes.json +0 -1
- package/src/map/data/mountain-ranges.json +0 -1
- package/src/map/data/na-lakes.json +0 -1
- package/src/map/data/na-land.json +0 -1
- package/src/map/data/region-names.json +0 -1
- package/src/map/data/rivers.json +0 -1
- package/src/map/data/types.ts +0 -121
- package/src/map/data/us-states.json +0 -1
- package/src/map/data/water-bodies.json +0 -1
- package/src/map/data/world-coarse.json +0 -1
- package/src/map/data/world-detail.json +0 -1
- package/src/map/diagnostics.ts +0 -134
- package/src/map/dimensions.ts +0 -150
- package/src/map/geo-query.ts +0 -295
- package/src/map/geo.ts +0 -438
- package/src/map/invert.ts +0 -111
- package/src/map/layout.ts +0 -5069
- package/src/map/legend-band.ts +0 -127
- package/src/map/load-data.ts +0 -186
- package/src/map/parser.ts +0 -783
- package/src/map/renderer.ts +0 -1445
- package/src/map/resolved-types.ts +0 -160
- package/src/map/resolver.ts +0 -1146
- package/src/map/types.ts +0 -194
- package/src/mindmap/collapse.ts +0 -67
- package/src/mindmap/layout.ts +0 -649
- package/src/mindmap/parser.ts +0 -430
- package/src/mindmap/renderer.ts +0 -637
- package/src/mindmap/text-wrap.ts +0 -218
- package/src/mindmap/types.ts +0 -56
- package/src/org/collapse.ts +0 -151
- package/src/org/layout.ts +0 -1262
- package/src/org/parser.ts +0 -519
- package/src/org/renderer.ts +0 -866
- package/src/org/resolver.ts +0 -636
- package/src/palettes/atlas.ts +0 -77
- package/src/palettes/blueprint.ts +0 -73
- package/src/palettes/catppuccin.ts +0 -84
- package/src/palettes/color-utils.ts +0 -443
- package/src/palettes/index.ts +0 -67
- package/src/palettes/nord.ts +0 -67
- package/src/palettes/registry.ts +0 -114
- package/src/palettes/slate.ts +0 -73
- package/src/palettes/tidewater.ts +0 -73
- package/src/palettes/tokyo-night.ts +0 -86
- package/src/palettes/types.ts +0 -88
- package/src/pert/analyzer.ts +0 -1183
- package/src/pert/diagnostics.ts +0 -110
- package/src/pert/index.ts +0 -43
- package/src/pert/internal.ts +0 -252
- package/src/pert/layout.ts +0 -971
- package/src/pert/monte-carlo.ts +0 -446
- package/src/pert/parser.ts +0 -1606
- package/src/pert/renderer.ts +0 -4009
- package/src/pert/share-normalize.ts +0 -62
- package/src/pert/types.ts +0 -604
- package/src/pyramid/parser.ts +0 -185
- package/src/pyramid/renderer.ts +0 -768
- package/src/pyramid/types.ts +0 -28
- package/src/quadrant/parser.ts +0 -18
- package/src/quadrant/renderer.ts +0 -638
- package/src/raci/diagnostics.ts +0 -213
- package/src/raci/index.ts +0 -23
- package/src/raci/mutations.ts +0 -321
- package/src/raci/parser.ts +0 -699
- package/src/raci/renderer.ts +0 -1627
- package/src/raci/types.ts +0 -82
- package/src/raci/variants.ts +0 -320
- package/src/render.ts +0 -268
- package/src/ring/parser.ts +0 -212
- package/src/ring/renderer.ts +0 -490
- package/src/ring/types.ts +0 -27
- package/src/sequence/collapse.ts +0 -174
- package/src/sequence/parser.ts +0 -1596
- package/src/sequence/participant-inference.ts +0 -152
- package/src/sequence/renderer.ts +0 -3168
- package/src/sequence/tag-resolution.ts +0 -164
- package/src/sharing.ts +0 -211
- package/src/sitemap/collapse.ts +0 -100
- package/src/sitemap/layout.ts +0 -925
- package/src/sitemap/parser.ts +0 -755
- package/src/sitemap/renderer.ts +0 -828
- package/src/sitemap/types.ts +0 -42
- package/src/slope/parser.ts +0 -18
- package/src/slope/renderer.ts +0 -378
- package/src/swimlane/diagnostics.ts +0 -94
- package/src/swimlane/layout.ts +0 -597
- package/src/swimlane/parser.ts +0 -613
- package/src/swimlane/renderer.ts +0 -681
- package/src/swimlane/types.ts +0 -151
- package/src/tech-radar/interactive.ts +0 -1129
- package/src/tech-radar/layout.ts +0 -197
- package/src/tech-radar/parser.ts +0 -436
- package/src/tech-radar/renderer.ts +0 -1239
- package/src/tech-radar/shared.ts +0 -151
- package/src/tech-radar/types.ts +0 -86
- package/src/themes.ts +0 -22
- package/src/timeline/parser.ts +0 -472
- package/src/timeline/renderer.ts +0 -3024
- package/src/timeline/types.ts +0 -33
- package/src/timeline/viz-parser.ts +0 -21
- package/src/treemap/diagnostics.ts +0 -62
- package/src/treemap/layout-radial.ts +0 -233
- package/src/treemap/layout.ts +0 -189
- package/src/treemap/parser.ts +0 -463
- package/src/treemap/renderer-radial.ts +0 -438
- package/src/treemap/renderer.ts +0 -572
- package/src/treemap/treemap-shared.ts +0 -309
- package/src/treemap/types.ts +0 -60
- package/src/utils/arrow-markers.ts +0 -51
- package/src/utils/arrows-diagnostics.ts +0 -62
- package/src/utils/arrows.ts +0 -227
- package/src/utils/brand.ts +0 -61
- package/src/utils/card.ts +0 -183
- package/src/utils/collapse-engine/tree-edges.ts +0 -115
- package/src/utils/collapse-engine/tree.ts +0 -117
- package/src/utils/d3-helpers.ts +0 -219
- package/src/utils/d3-types.ts +0 -9
- package/src/utils/description-helpers.ts +0 -38
- package/src/utils/duration.ts +0 -312
- package/src/utils/export-container.ts +0 -41
- package/src/utils/expr-eval.ts +0 -27
- package/src/utils/fit-canvas.ts +0 -64
- package/src/utils/hover-styles.ts +0 -673
- package/src/utils/inline-markdown.ts +0 -96
- package/src/utils/legend-constants.ts +0 -48
- package/src/utils/legend-d3.ts +0 -618
- package/src/utils/legend-integration.ts +0 -107
- package/src/utils/legend-layout.ts +0 -776
- package/src/utils/legend-svg.ts +0 -214
- package/src/utils/legend-types.ts +0 -272
- package/src/utils/name-normalize.ts +0 -163
- package/src/utils/note-box/constants.ts +0 -25
- package/src/utils/note-box/index.ts +0 -11
- package/src/utils/note-box/metrics.ts +0 -90
- package/src/utils/note-box/svg.ts +0 -331
- package/src/utils/notes/bounds.ts +0 -30
- package/src/utils/notes/build.ts +0 -131
- package/src/utils/notes/index.ts +0 -18
- package/src/utils/notes/model.ts +0 -19
- package/src/utils/notes/parse.ts +0 -131
- package/src/utils/notes/place.ts +0 -177
- package/src/utils/notes/resolve.ts +0 -88
- package/src/utils/number-format.ts +0 -36
- package/src/utils/parsing.ts +0 -953
- package/src/utils/reserved-key-registry.ts +0 -239
- package/src/utils/safe-href.ts +0 -38
- package/src/utils/scaling.ts +0 -97
- package/src/utils/svg-embed.ts +0 -251
- package/src/utils/tag-groups.ts +0 -607
- package/src/utils/text-measure.ts +0 -122
- package/src/utils/time-ticks.ts +0 -253
- package/src/utils/title-constants.ts +0 -24
- package/src/utils/visual-conventions.ts +0 -61
- package/src/utils/wrapped-desc.ts +0 -87
- package/src/venn/parser.ts +0 -18
- package/src/venn/renderer.ts +0 -1047
- package/src/version-control/diagnostics.ts +0 -67
- package/src/version-control/parser.ts +0 -544
- package/src/version-control/renderer.ts +0 -724
- package/src/version-control/types.ts +0 -100
- package/src/visualizations/parse.ts +0 -1560
- package/src/visualizations/types.ts +0 -262
- package/src/wireframe/layout.ts +0 -479
- package/src/wireframe/parser.ts +0 -1114
- package/src/wireframe/renderer.ts +0 -1318
- package/src/wireframe/types.ts +0 -110
- package/src/wordcloud/parser.ts +0 -18
- package/src/wordcloud/renderer.ts +0 -357
package/src/ring/types.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { DgmoError } from '../diagnostics';
|
|
2
|
-
|
|
3
|
-
// ============================================================
|
|
4
|
-
// Ring Diagram — Parsed Types
|
|
5
|
-
// ============================================================
|
|
6
|
-
|
|
7
|
-
export interface RingLayer {
|
|
8
|
-
readonly label: string;
|
|
9
|
-
readonly lineNumber: number;
|
|
10
|
-
/** Optional palette color name (red/green/blue/…). */
|
|
11
|
-
readonly color?: string;
|
|
12
|
-
/** Description lines — from bare pipe shorthand or indented body. */
|
|
13
|
-
readonly description: readonly string[];
|
|
14
|
-
/** Unconsumed pipe metadata (reserved for future use). */
|
|
15
|
-
readonly metadata: Readonly<Record<string, string>>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface ParsedRing {
|
|
19
|
-
readonly type: 'ring';
|
|
20
|
-
readonly title: string;
|
|
21
|
-
readonly titleLineNumber: number;
|
|
22
|
-
/** Source order: layers[0] = innermost (filled disc); last = outermost ring. */
|
|
23
|
-
readonly layers: readonly RingLayer[];
|
|
24
|
-
readonly options: Readonly<Record<string, string>>;
|
|
25
|
-
readonly diagnostics: readonly DgmoError[];
|
|
26
|
-
readonly error: string | null;
|
|
27
|
-
}
|
package/src/sequence/collapse.ts
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
// ============================================================
|
|
2
|
-
// Collapse Projection for Sequence Diagram Groups
|
|
3
|
-
// ============================================================
|
|
4
|
-
//
|
|
5
|
-
// Pure projection function that transforms a parsed sequence diagram
|
|
6
|
-
// by collapsing specified groups into single virtual participants.
|
|
7
|
-
// The parsed AST (ParsedSequenceDgmo) stays immutable.
|
|
8
|
-
|
|
9
|
-
import type {
|
|
10
|
-
ParsedSequenceDgmo,
|
|
11
|
-
ParticipantId,
|
|
12
|
-
SequenceElement,
|
|
13
|
-
SequenceGroup,
|
|
14
|
-
SequenceMessage,
|
|
15
|
-
SequenceParticipant,
|
|
16
|
-
} from './parser';
|
|
17
|
-
import { isSequenceBlock, isSequenceNote, isSequenceSection } from './parser';
|
|
18
|
-
|
|
19
|
-
export interface CollapsedView {
|
|
20
|
-
participants: readonly SequenceParticipant[];
|
|
21
|
-
messages: readonly SequenceMessage[];
|
|
22
|
-
elements: readonly SequenceElement[];
|
|
23
|
-
groups: readonly SequenceGroup[];
|
|
24
|
-
/** Maps member participant ID → collapsed group name (as a virtual ParticipantId). */
|
|
25
|
-
collapsedGroupIds: Map<ParticipantId, ParticipantId>;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Project a parsed sequence diagram into a collapsed view.
|
|
30
|
-
*
|
|
31
|
-
* @param parsed - The immutable parsed sequence diagram
|
|
32
|
-
* @param collapsedGroups - Set of group lineNumbers that should be collapsed
|
|
33
|
-
* @returns A new CollapsedView with remapped participants, messages, elements, and groups
|
|
34
|
-
*/
|
|
35
|
-
export function applyCollapseProjection(
|
|
36
|
-
parsed: ParsedSequenceDgmo,
|
|
37
|
-
collapsedGroups: Set<number>
|
|
38
|
-
): CollapsedView {
|
|
39
|
-
if (collapsedGroups.size === 0) {
|
|
40
|
-
return {
|
|
41
|
-
participants: parsed.participants,
|
|
42
|
-
messages: parsed.messages,
|
|
43
|
-
elements: parsed.elements,
|
|
44
|
-
groups: parsed.groups,
|
|
45
|
-
collapsedGroupIds: new Map(),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Build memberToGroup map: participantId → group name (as virtual ParticipantId).
|
|
50
|
-
// Group names become virtual participant IDs post-collapse — they're minted here
|
|
51
|
-
// and the rest of the pipeline treats them as bona fide ParticipantIds.
|
|
52
|
-
const memberToGroup = new Map<ParticipantId, ParticipantId>();
|
|
53
|
-
const collapsedGroupNames = new Set<string>();
|
|
54
|
-
for (const group of parsed.groups) {
|
|
55
|
-
if (collapsedGroups.has(group.lineNumber)) {
|
|
56
|
-
collapsedGroupNames.add(group.name);
|
|
57
|
-
for (const memberId of group.participantIds) {
|
|
58
|
-
memberToGroup.set(memberId, group.name as ParticipantId);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Participants: remove members of collapsed groups, insert virtual participant per group
|
|
64
|
-
// Skip non-member participants that collide with a collapsed group name
|
|
65
|
-
const participants: SequenceParticipant[] = [];
|
|
66
|
-
const insertedGroups = new Set<string>();
|
|
67
|
-
|
|
68
|
-
for (const p of parsed.participants) {
|
|
69
|
-
const groupName = memberToGroup.get(p.id);
|
|
70
|
-
if (groupName) {
|
|
71
|
-
// Replace first occurrence with virtual group participant
|
|
72
|
-
if (!insertedGroups.has(groupName)) {
|
|
73
|
-
insertedGroups.add(groupName);
|
|
74
|
-
const group = parsed.groups.find(
|
|
75
|
-
(g) => g.name === groupName && collapsedGroups.has(g.lineNumber)
|
|
76
|
-
)!;
|
|
77
|
-
participants.push({
|
|
78
|
-
id: groupName, // already ParticipantId from memberToGroup value type
|
|
79
|
-
label: groupName,
|
|
80
|
-
type: 'default',
|
|
81
|
-
lineNumber: group.lineNumber,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
// Skip member — it's absorbed into the group
|
|
85
|
-
} else if (collapsedGroupNames.has(p.id)) {
|
|
86
|
-
// Skip — participant name collides with a collapsed group name;
|
|
87
|
-
// the virtual group participant takes precedence
|
|
88
|
-
} else {
|
|
89
|
-
participants.push(p);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Remap helper — collapse member IDs to their group's virtual participant ID.
|
|
94
|
-
const remap = (id: ParticipantId): ParticipantId =>
|
|
95
|
-
memberToGroup.get(id) ?? id;
|
|
96
|
-
|
|
97
|
-
// Messages: remap from/to, preserving order
|
|
98
|
-
const messages: SequenceMessage[] = parsed.messages.map((msg) => ({
|
|
99
|
-
...msg,
|
|
100
|
-
from: remap(msg.from),
|
|
101
|
-
to: remap(msg.to),
|
|
102
|
-
}));
|
|
103
|
-
|
|
104
|
-
// Elements: deep clone with remapping and internal return suppression
|
|
105
|
-
const elements = remapElements(parsed.elements, memberToGroup);
|
|
106
|
-
|
|
107
|
-
// Groups: remove collapsed groups (they're now virtual participants)
|
|
108
|
-
const groups = parsed.groups.filter(
|
|
109
|
-
(g) => !collapsedGroups.has(g.lineNumber)
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
return {
|
|
113
|
-
participants,
|
|
114
|
-
messages,
|
|
115
|
-
elements,
|
|
116
|
-
groups,
|
|
117
|
-
collapsedGroupIds: memberToGroup,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Deep clone and remap elements, suppressing internal returns within collapsed groups.
|
|
123
|
-
*/
|
|
124
|
-
function remapElements(
|
|
125
|
-
elements: readonly SequenceElement[],
|
|
126
|
-
memberToGroup: Map<ParticipantId, ParticipantId>
|
|
127
|
-
): SequenceElement[] {
|
|
128
|
-
const remap = (id: ParticipantId): ParticipantId =>
|
|
129
|
-
memberToGroup.get(id) ?? id;
|
|
130
|
-
const result: SequenceElement[] = [];
|
|
131
|
-
|
|
132
|
-
for (const el of elements) {
|
|
133
|
-
if (isSequenceSection(el)) {
|
|
134
|
-
// Sections have no participant references — pass through unchanged
|
|
135
|
-
result.push(el);
|
|
136
|
-
} else if (isSequenceNote(el)) {
|
|
137
|
-
// Remap note participant
|
|
138
|
-
result.push({
|
|
139
|
-
...el,
|
|
140
|
-
participantId: remap(el.participantId),
|
|
141
|
-
});
|
|
142
|
-
} else if (isSequenceBlock(el)) {
|
|
143
|
-
// Recurse into block children
|
|
144
|
-
result.push({
|
|
145
|
-
...el,
|
|
146
|
-
children: remapElements(el.children, memberToGroup),
|
|
147
|
-
elseChildren: remapElements(el.elseChildren, memberToGroup),
|
|
148
|
-
...(el.elseIfBranches
|
|
149
|
-
? {
|
|
150
|
-
elseIfBranches: el.elseIfBranches.map((branch) => ({
|
|
151
|
-
...branch,
|
|
152
|
-
children: remapElements(branch.children, memberToGroup),
|
|
153
|
-
})),
|
|
154
|
-
}
|
|
155
|
-
: {}),
|
|
156
|
-
});
|
|
157
|
-
} else {
|
|
158
|
-
// Message element (narrowed by discriminator: kind === 'message')
|
|
159
|
-
const msg = el;
|
|
160
|
-
const from = remap(msg.from);
|
|
161
|
-
const to = remap(msg.to);
|
|
162
|
-
|
|
163
|
-
// Suppress internal return: both endpoints in same collapsed group
|
|
164
|
-
// and this is a return message (unlabeled response)
|
|
165
|
-
if (from === to && from !== msg.from && !msg.label) {
|
|
166
|
-
continue; // internal return suppressed
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
result.push({ ...msg, from, to });
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return result;
|
|
174
|
-
}
|