@nowline/layout 0.2.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/LICENSE +190 -0
- package/README.md +103 -0
- package/dist/band-scale.d.ts +56 -0
- package/dist/band-scale.d.ts.map +1 -0
- package/dist/band-scale.js +86 -0
- package/dist/band-scale.js.map +1 -0
- package/dist/calendar.d.ts +79 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +210 -0
- package/dist/calendar.js.map +1 -0
- package/dist/capacity.d.ts +72 -0
- package/dist/capacity.d.ts.map +1 -0
- package/dist/capacity.js +163 -0
- package/dist/capacity.js.map +1 -0
- package/dist/dsl-utils.d.ts +5 -0
- package/dist/dsl-utils.d.ts.map +1 -0
- package/dist/dsl-utils.js +28 -0
- package/dist/dsl-utils.js.map +1 -0
- package/dist/edge-routing.d.ts +89 -0
- package/dist/edge-routing.d.ts.map +1 -0
- package/dist/edge-routing.js +435 -0
- package/dist/edge-routing.js.map +1 -0
- package/dist/frame-tab-geometry.d.ts +78 -0
- package/dist/frame-tab-geometry.d.ts.map +1 -0
- package/dist/frame-tab-geometry.js +115 -0
- package/dist/frame-tab-geometry.js.map +1 -0
- package/dist/header-card-geometry.d.ts +29 -0
- package/dist/header-card-geometry.d.ts.map +1 -0
- package/dist/header-card-geometry.js +41 -0
- package/dist/header-card-geometry.js.map +1 -0
- package/dist/i18n.d.ts +48 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +114 -0
- package/dist/i18n.js.map +1 -0
- package/dist/include-chrome-geometry.d.ts +86 -0
- package/dist/include-chrome-geometry.d.ts.map +1 -0
- package/dist/include-chrome-geometry.js +104 -0
- package/dist/include-chrome-geometry.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/item-bar-geometry.d.ts +127 -0
- package/dist/item-bar-geometry.d.ts.map +1 -0
- package/dist/item-bar-geometry.js +173 -0
- package/dist/item-bar-geometry.js.map +1 -0
- package/dist/lane-utilization.d.ts +90 -0
- package/dist/lane-utilization.d.ts.map +1 -0
- package/dist/lane-utilization.js +206 -0
- package/dist/lane-utilization.js.map +1 -0
- package/dist/layout-context.d.ts +143 -0
- package/dist/layout-context.d.ts.map +1 -0
- package/dist/layout-context.js +8 -0
- package/dist/layout-context.js.map +1 -0
- package/dist/layout.d.ts +18 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +1213 -0
- package/dist/layout.js.map +1 -0
- package/dist/nodes/anchor-node.d.ts +16 -0
- package/dist/nodes/anchor-node.d.ts.map +1 -0
- package/dist/nodes/anchor-node.js +68 -0
- package/dist/nodes/anchor-node.js.map +1 -0
- package/dist/nodes/footnote-node.d.ts +10 -0
- package/dist/nodes/footnote-node.d.ts.map +1 -0
- package/dist/nodes/footnote-node.js +41 -0
- package/dist/nodes/footnote-node.js.map +1 -0
- package/dist/nodes/group-node.d.ts +29 -0
- package/dist/nodes/group-node.d.ts.map +1 -0
- package/dist/nodes/group-node.js +187 -0
- package/dist/nodes/group-node.js.map +1 -0
- package/dist/nodes/include-node.d.ts +16 -0
- package/dist/nodes/include-node.d.ts.map +1 -0
- package/dist/nodes/include-node.js +117 -0
- package/dist/nodes/include-node.js.map +1 -0
- package/dist/nodes/item-node.d.ts +51 -0
- package/dist/nodes/item-node.d.ts.map +1 -0
- package/dist/nodes/item-node.js +108 -0
- package/dist/nodes/item-node.js.map +1 -0
- package/dist/nodes/marker-geometry.d.ts +22 -0
- package/dist/nodes/marker-geometry.d.ts.map +1 -0
- package/dist/nodes/marker-geometry.js +38 -0
- package/dist/nodes/marker-geometry.js.map +1 -0
- package/dist/nodes/milestone-node.d.ts +48 -0
- package/dist/nodes/milestone-node.d.ts.map +1 -0
- package/dist/nodes/milestone-node.js +210 -0
- package/dist/nodes/milestone-node.js.map +1 -0
- package/dist/nodes/parallel-node.d.ts +21 -0
- package/dist/nodes/parallel-node.d.ts.map +1 -0
- package/dist/nodes/parallel-node.js +80 -0
- package/dist/nodes/parallel-node.js.map +1 -0
- package/dist/nodes/roadmap-node.d.ts +76 -0
- package/dist/nodes/roadmap-node.d.ts.map +1 -0
- package/dist/nodes/roadmap-node.js +788 -0
- package/dist/nodes/roadmap-node.js.map +1 -0
- package/dist/nodes/swimlane-node.d.ts +38 -0
- package/dist/nodes/swimlane-node.d.ts.map +1 -0
- package/dist/nodes/swimlane-node.js +308 -0
- package/dist/nodes/swimlane-node.js.map +1 -0
- package/dist/renderable.d.ts +44 -0
- package/dist/renderable.d.ts.map +1 -0
- package/dist/renderable.js +21 -0
- package/dist/renderable.js.map +1 -0
- package/dist/row-packer.d.ts +125 -0
- package/dist/row-packer.d.ts.map +1 -0
- package/dist/row-packer.js +169 -0
- package/dist/row-packer.js.map +1 -0
- package/dist/style-resolution.d.ts +14 -0
- package/dist/style-resolution.d.ts.map +1 -0
- package/dist/style-resolution.js +191 -0
- package/dist/style-resolution.js.map +1 -0
- package/dist/themes/dark.d.ts +4 -0
- package/dist/themes/dark.d.ts.map +1 -0
- package/dist/themes/dark.js +241 -0
- package/dist/themes/dark.js.map +1 -0
- package/dist/themes/index.d.ts +15 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +30 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/light.d.ts +4 -0
- package/dist/themes/light.d.ts.map +1 -0
- package/dist/themes/light.js +248 -0
- package/dist/themes/light.js.map +1 -0
- package/dist/themes/shape.d.ts +194 -0
- package/dist/themes/shape.d.ts.map +1 -0
- package/dist/themes/shape.js +6 -0
- package/dist/themes/shape.js.map +1 -0
- package/dist/themes/shared.d.ts +145 -0
- package/dist/themes/shared.d.ts.map +1 -0
- package/dist/themes/shared.js +310 -0
- package/dist/themes/shared.js.map +1 -0
- package/dist/time-scale.d.ts +39 -0
- package/dist/time-scale.d.ts.map +1 -0
- package/dist/time-scale.js +62 -0
- package/dist/time-scale.js.map +1 -0
- package/dist/types.d.ts +483 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/view-preset.d.ts +23 -0
- package/dist/view-preset.d.ts.map +1 -0
- package/dist/view-preset.js +146 -0
- package/dist/view-preset.js.map +1 -0
- package/dist/working-calendar.d.ts +14 -0
- package/dist/working-calendar.d.ts.map +1 -0
- package/dist/working-calendar.js +74 -0
- package/dist/working-calendar.js.map +1 -0
- package/package.json +37 -0
- package/src/band-scale.ts +115 -0
- package/src/calendar.ts +244 -0
- package/src/capacity.ts +191 -0
- package/src/dsl-utils.ts +30 -0
- package/src/edge-routing.ts +550 -0
- package/src/frame-tab-geometry.ts +165 -0
- package/src/header-card-geometry.ts +48 -0
- package/src/i18n.ts +124 -0
- package/src/include-chrome-geometry.ts +156 -0
- package/src/index.ts +116 -0
- package/src/item-bar-geometry.ts +222 -0
- package/src/lane-utilization.ts +259 -0
- package/src/layout-context.ts +182 -0
- package/src/layout.ts +1446 -0
- package/src/nodes/anchor-node.ts +77 -0
- package/src/nodes/footnote-node.ts +60 -0
- package/src/nodes/group-node.ts +252 -0
- package/src/nodes/include-node.ts +168 -0
- package/src/nodes/item-node.ts +171 -0
- package/src/nodes/marker-geometry.ts +43 -0
- package/src/nodes/milestone-node.ts +263 -0
- package/src/nodes/parallel-node.ts +101 -0
- package/src/nodes/roadmap-node.ts +957 -0
- package/src/nodes/swimlane-node.ts +423 -0
- package/src/renderable.ts +68 -0
- package/src/row-packer.ts +271 -0
- package/src/style-resolution.ts +243 -0
- package/src/themes/dark.ts +244 -0
- package/src/themes/index.ts +36 -0
- package/src/themes/light.ts +251 -0
- package/src/themes/shape.ts +230 -0
- package/src/themes/shared.ts +369 -0
- package/src/time-scale.ts +78 -0
- package/src/types.ts +607 -0
- package/src/view-preset.ts +180 -0
- package/src/working-calendar.ts +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnchorDeclaration } from '@nowline/core';
|
|
2
|
+
import type { LayoutContext } from '../layout-context.js';
|
|
3
|
+
import type { PositionedAnchor } from '../types.js';
|
|
4
|
+
export declare class AnchorNode {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly anchor: AnchorDeclaration;
|
|
7
|
+
constructor(id: string, anchor: AnchorDeclaration);
|
|
8
|
+
/**
|
|
9
|
+
* Returns null when the anchor has no `date:` or its date falls
|
|
10
|
+
* outside the chart's domain (skipped silently — same as the legacy
|
|
11
|
+
* `buildAnchors` continue-paths).
|
|
12
|
+
*/
|
|
13
|
+
place(ctx: LayoutContext, _milestoneXs: Set<number>): PositionedAnchor | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function buildAnchors(anchors: Map<string, AnchorDeclaration>, ctx: LayoutContext, milestoneXs: Set<number>): PositionedAnchor[];
|
|
16
|
+
//# sourceMappingURL=anchor-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-node.d.ts","sourceRoot":"","sources":["../../src/nodes/anchor-node.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAS,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO3D,qBAAa,UAAU;aAEC,EAAE,EAAE,MAAM;aACV,MAAM,EAAE,iBAAiB;gBADzB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,iBAAiB;IAG7C;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,gBAAgB,GAAG,IAAI;CAkChF;AAED,wBAAgB,YAAY,CACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACvC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,gBAAgB,EAAE,CAOpB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// AnchorNode — Renderable for a single anchor + a `buildAnchors` loop
|
|
2
|
+
// helper. Each anchor sits in the marker row of the timeline and emits
|
|
3
|
+
// a downward cut line through the chart. Marker-row placement (row +
|
|
4
|
+
// label box + left/right label side) is decided up-front in
|
|
5
|
+
// `roadmap-node.ts` (`packMarkerRow`) so anchors and milestones share
|
|
6
|
+
// the same row stack — see `LayoutContext.markerRowPlacements`.
|
|
7
|
+
import { parseDate, propValue } from '../dsl-utils.js';
|
|
8
|
+
import { resolveStyle } from '../style-resolution.js';
|
|
9
|
+
import { MARKER_DIAMOND_RADIUS_PX, MARKER_LABEL_GAP_PX, MARKER_LABEL_HEIGHT_PX, } from './marker-geometry.js';
|
|
10
|
+
export class AnchorNode {
|
|
11
|
+
id;
|
|
12
|
+
anchor;
|
|
13
|
+
constructor(id, anchor) {
|
|
14
|
+
this.id = id;
|
|
15
|
+
this.anchor = anchor;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns null when the anchor has no `date:` or its date falls
|
|
19
|
+
* outside the chart's domain (skipped silently — same as the legacy
|
|
20
|
+
* `buildAnchors` continue-paths).
|
|
21
|
+
*/
|
|
22
|
+
place(ctx, _milestoneXs) {
|
|
23
|
+
const dateRaw = propValue(this.anchor.properties, 'date');
|
|
24
|
+
const date = parseDate(dateRaw);
|
|
25
|
+
if (!date)
|
|
26
|
+
return null;
|
|
27
|
+
const x = ctx.scale.forwardWithinDomain(date);
|
|
28
|
+
if (x === null)
|
|
29
|
+
return null;
|
|
30
|
+
const style = resolveStyle('anchor', this.anchor.properties, ctx.styleCtx);
|
|
31
|
+
const placement = ctx.markerRowPlacements.get(this.id);
|
|
32
|
+
const y = placement?.centerY ?? ctx.timeline.markerRow.y;
|
|
33
|
+
const center = { x, y };
|
|
34
|
+
const labelBox = placement?.labelBox ?? {
|
|
35
|
+
x: x + MARKER_DIAMOND_RADIUS_PX + MARKER_LABEL_GAP_PX,
|
|
36
|
+
y: y - 4,
|
|
37
|
+
width: 0,
|
|
38
|
+
height: MARKER_LABEL_HEIGHT_PX,
|
|
39
|
+
};
|
|
40
|
+
const labelSide = placement?.labelSide ?? 'right';
|
|
41
|
+
ctx.entityLeftEdges.set(this.id, x);
|
|
42
|
+
ctx.entityRightEdges.set(this.id, x);
|
|
43
|
+
ctx.entityMidpoints.set(this.id, center);
|
|
44
|
+
return {
|
|
45
|
+
id: this.id,
|
|
46
|
+
title: this.anchor.title ?? this.id,
|
|
47
|
+
center,
|
|
48
|
+
radius: MARKER_DIAMOND_RADIUS_PX,
|
|
49
|
+
style,
|
|
50
|
+
predecessorPoints: [],
|
|
51
|
+
cutTopY: ctx.chartTopY,
|
|
52
|
+
cutBottomY: ctx.swimlaneBottomY,
|
|
53
|
+
bumpedUp: (placement?.rowIndex ?? 0) > 0,
|
|
54
|
+
labelBox,
|
|
55
|
+
labelSide,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function buildAnchors(anchors, ctx, milestoneXs) {
|
|
60
|
+
const out = [];
|
|
61
|
+
for (const [id, a] of anchors) {
|
|
62
|
+
const positioned = new AnchorNode(id, a).place(ctx, milestoneXs);
|
|
63
|
+
if (positioned)
|
|
64
|
+
out.push(positioned);
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=anchor-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-node.js","sourceRoot":"","sources":["../../src/nodes/anchor-node.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,4DAA4D;AAC5D,sEAAsE;AACtE,gEAAgE;AAGhE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACH,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,UAAU;IAEC;IACA;IAFpB,YACoB,EAAU,EACV,MAAyB;QADzB,OAAE,GAAF,EAAE,CAAQ;QACV,WAAM,GAAN,MAAM,CAAmB;IAC1C,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,GAAkB,EAAE,YAAyB;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI;YACpC,CAAC,EAAE,CAAC,GAAG,wBAAwB,GAAG,mBAAmB;YACrD,CAAC,EAAE,CAAC,GAAG,CAAC;YACR,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,sBAAsB;SACjC,CAAC;QACF,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,OAAO,CAAC;QAClD,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE;YACnC,MAAM;YACN,MAAM,EAAE,wBAAwB;YAChC,KAAK;YACL,iBAAiB,EAAE,EAAE;YACrB,OAAO,EAAE,GAAG,CAAC,SAAS;YACtB,UAAU,EAAE,GAAG,CAAC,eAAe;YAC/B,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;YACxC,QAAQ;YACR,SAAS;SACZ,CAAC;IACN,CAAC;CACJ;AAED,MAAM,UAAU,YAAY,CACxB,OAAuC,EACvC,GAAkB,EAClB,WAAwB;IAExB,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FootnoteDeclaration } from '@nowline/core';
|
|
2
|
+
import type { LayoutContext } from '../layout-context.js';
|
|
3
|
+
import type { PositionedFootnoteArea } from '../types.js';
|
|
4
|
+
export interface BuiltFootnotes {
|
|
5
|
+
area: PositionedFootnoteArea;
|
|
6
|
+
index: Map<string, number>;
|
|
7
|
+
hosts: Map<string, string[]>;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildFootnotes(footnotes: Map<string, FootnoteDeclaration>, ctx: LayoutContext, chartBottomY: number): BuiltFootnotes;
|
|
10
|
+
//# sourceMappingURL=footnote-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnote-node.d.ts","sourceRoot":"","sources":["../../src/nodes/footnote-node.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAO1D,OAAO,KAAK,EAAe,sBAAsB,EAA2B,MAAM,aAAa,CAAC;AAEhG,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC;AAED,wBAAgB,cAAc,CAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC3C,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,GACrB,cAAc,CAgChB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// FootnoteNode + buildFootnotes — footnote area at the bottom of the
|
|
2
|
+
// chart. Each footnote gets a stable index (1-based, sorted by id) and
|
|
3
|
+
// records its `on:` host references so item / swimlane sequencing can
|
|
4
|
+
// emit the matching superscript indicators. The panel grows to fit:
|
|
5
|
+
// 28 px header + (entries × FOOTNOTE_ROW_HEIGHT) + 16 px padding.
|
|
6
|
+
import { propValues } from '../dsl-utils.js';
|
|
7
|
+
import { resolveStyle } from '../style-resolution.js';
|
|
8
|
+
import { FOOTNOTE_HEADER_HEIGHT_PX, FOOTNOTE_PANEL_PADDING_PX, FOOTNOTE_ROW_HEIGHT, } from '../themes/shared.js';
|
|
9
|
+
export function buildFootnotes(footnotes, ctx, chartBottomY) {
|
|
10
|
+
const entries = [];
|
|
11
|
+
const index = new Map();
|
|
12
|
+
const hosts = new Map();
|
|
13
|
+
const ordered = [...footnotes.entries()].sort(([a], [b]) => a.localeCompare(b));
|
|
14
|
+
ordered.forEach(([id, f], i) => {
|
|
15
|
+
const n = i + 1;
|
|
16
|
+
index.set(id, n);
|
|
17
|
+
hosts.set(id, propValues(f.properties, 'on'));
|
|
18
|
+
entries.push({
|
|
19
|
+
number: n,
|
|
20
|
+
title: f.title ?? id,
|
|
21
|
+
description: f.description?.text,
|
|
22
|
+
style: resolveStyle('footnote', f.properties, ctx.styleCtx),
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
const box = {
|
|
26
|
+
x: FOOTNOTE_PANEL_PADDING_PX,
|
|
27
|
+
y: chartBottomY + FOOTNOTE_PANEL_PADDING_PX,
|
|
28
|
+
width: ctx.chartRightX - 2 * FOOTNOTE_PANEL_PADDING_PX,
|
|
29
|
+
height: entries.length === 0
|
|
30
|
+
? 0
|
|
31
|
+
: FOOTNOTE_HEADER_HEIGHT_PX +
|
|
32
|
+
entries.length * FOOTNOTE_ROW_HEIGHT +
|
|
33
|
+
FOOTNOTE_PANEL_PADDING_PX,
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
area: { box, entries },
|
|
37
|
+
index,
|
|
38
|
+
hosts,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=footnote-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footnote-node.js","sourceRoot":"","sources":["../../src/nodes/footnote-node.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,oEAAoE;AACpE,kEAAkE;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACH,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,GACtB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,UAAU,cAAc,CAC1B,SAA2C,EAC3C,GAAkB,EAClB,YAAoB;IAEpB,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;YACpB,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI;YAChC,KAAK,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC;SAC9D,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAgB;QACrB,CAAC,EAAE,yBAAyB;QAC5B,CAAC,EAAE,YAAY,GAAG,yBAAyB;QAC3C,KAAK,EAAE,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,yBAAyB;QACtD,MAAM,EACF,OAAO,CAAC,MAAM,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,yBAAyB;gBACzB,OAAO,CAAC,MAAM,GAAG,mBAAmB;gBACpC,yBAAyB;KACtC,CAAC;IACF,OAAO;QACH,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;QACtB,KAAK;QACL,KAAK;KACR,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { EntityProperty, GroupBlock, ItemDeclaration, ParallelBlock } from '@nowline/core';
|
|
2
|
+
import type { LayoutContext, TrackCursor } from '../layout-context.js';
|
|
3
|
+
import type { PositionedGroup, PositionedItem, PositionedTrackChild } from '../types.js';
|
|
4
|
+
export interface GroupNodeDeps {
|
|
5
|
+
sequenceItem: (child: ItemDeclaration, cursor: TrackCursor, ctx: LayoutContext, ownerOverride?: string) => PositionedItem;
|
|
6
|
+
sequenceOne: (child: ItemDeclaration | GroupBlock | ParallelBlock, cursor: TrackCursor, ctx: LayoutContext) => PositionedTrackChild;
|
|
7
|
+
resolveChildStart: (props: EntityProperty[], seqDefault: number, laneLeftX: number, ctx: LayoutContext) => number;
|
|
8
|
+
newCursor: (x: number, y: number) => TrackCursor;
|
|
9
|
+
estimateTextWidth: (text: string, fontSize: number) => number;
|
|
10
|
+
/** Predict the extra vertical height an item's wrapped label-chip
|
|
11
|
+
* rows will add to its bar; used to size the row-packer's row
|
|
12
|
+
* pitch ahead of the call to `sequenceItem`. */
|
|
13
|
+
predictItemChipExtraHeight: (item: ItemDeclaration, ctx: LayoutContext) => number;
|
|
14
|
+
}
|
|
15
|
+
export declare class GroupNode {
|
|
16
|
+
readonly node: GroupBlock;
|
|
17
|
+
private readonly deps;
|
|
18
|
+
constructor(node: GroupBlock, deps: GroupNodeDeps);
|
|
19
|
+
get id(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Sequence children inside the group's content area, advance the
|
|
22
|
+
* parent `cursor` past the group's right edge plus
|
|
23
|
+
* `TRACK_BLOCK_TAIL_GUTTER_PX` of breathing room, and return a
|
|
24
|
+
* `PositionedGroup` whose `box.height` covers the chiclet pad,
|
|
25
|
+
* every row-packed child row, and the bottom pad.
|
|
26
|
+
*/
|
|
27
|
+
place(cursor: TrackCursor, ctx: LayoutContext): PositionedGroup;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=group-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-node.d.ts","sourceRoot":"","sources":["../../src/nodes/group-node.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhG,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAYvE,OAAO,KAAK,EAER,eAAe,EACf,cAAc,EACd,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,CACV,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,aAAa,EAClB,aAAa,CAAC,EAAE,MAAM,KACrB,cAAc,CAAC;IACpB,WAAW,EAAE,CACT,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,aAAa,EACnD,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,aAAa,KACjB,oBAAoB,CAAC;IAC1B,iBAAiB,EAAE,CACf,KAAK,EAAE,cAAc,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,KACjB,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;IACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D;;qDAEiD;IACjD,0BAA0B,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;CACrF;AAED,qBAAa,SAAS;aAEE,IAAI,EAAE,UAAU;IAEhC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFL,IAAI,EAAE,UAAU,EAEf,IAAI,EAAE,aAAa;IAGxC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,GAAG,eAAe;CA4KlE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// GroupNode — Renderable for a `group { ... }` block. Sequences
|
|
2
|
+
// children inside the group's content area using the same row-pack
|
|
3
|
+
// engine `SwimlaneNode` uses, so an item whose desired start collides
|
|
4
|
+
// with a sibling's `rightEdge`, caption `spillX`, or a slack-arrow
|
|
5
|
+
// corridor bumps to a new row inside the group. The group's reported
|
|
6
|
+
// `box.height` grows with the row stack so parent containers stack
|
|
7
|
+
// against the actual painted extent.
|
|
8
|
+
//
|
|
9
|
+
// Filled-style groups paint a title chiclet flush in the upper-left
|
|
10
|
+
// corner of the box; the layout reserves vertical top padding equal
|
|
11
|
+
// to the chiclet height plus a small gutter before the first inner
|
|
12
|
+
// row begins.
|
|
13
|
+
import { isItemDeclaration } from '@nowline/core';
|
|
14
|
+
import { deriveItemDurationDays } from '../calendar.js';
|
|
15
|
+
import { RowPacker } from '../row-packer.js';
|
|
16
|
+
import { resolveStyle } from '../style-resolution.js';
|
|
17
|
+
import { GROUP_BOTTOM_PAD_PX, GROUP_BRACKET_LABEL_OVERHANG_PX, GROUP_TITLE_TAB_GUTTER_PX, GROUP_TITLE_TAB_HEIGHT_PX, ITEM_INSET_PX, MIN_ITEM_WIDTH, TRACK_BLOCK_TAIL_GUTTER_PX, } from '../themes/shared.js';
|
|
18
|
+
export class GroupNode {
|
|
19
|
+
node;
|
|
20
|
+
deps;
|
|
21
|
+
constructor(node,
|
|
22
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: accessed via `const { deps } = this` destructuring inside methods, which the analyzer does not detect.
|
|
23
|
+
deps) {
|
|
24
|
+
this.node = node;
|
|
25
|
+
this.deps = deps;
|
|
26
|
+
}
|
|
27
|
+
get id() {
|
|
28
|
+
return this.node.name ?? '';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Sequence children inside the group's content area, advance the
|
|
32
|
+
* parent `cursor` past the group's right edge plus
|
|
33
|
+
* `TRACK_BLOCK_TAIL_GUTTER_PX` of breathing room, and return a
|
|
34
|
+
* `PositionedGroup` whose `box.height` covers the chiclet pad,
|
|
35
|
+
* every row-packed child row, and the bottom pad.
|
|
36
|
+
*/
|
|
37
|
+
place(cursor, ctx) {
|
|
38
|
+
const { node } = this;
|
|
39
|
+
const { deps } = this;
|
|
40
|
+
const style = resolveStyle('group', node.properties, ctx.styleCtx);
|
|
41
|
+
const startX = cursor.x;
|
|
42
|
+
const title = node.title ?? node.name;
|
|
43
|
+
// Group children chain in time inside the group, so they
|
|
44
|
+
// form one sub-flow under the parent's flow path. See
|
|
45
|
+
// `LayoutContext.currentFlowKey`.
|
|
46
|
+
const previousFlowKey = ctx.currentFlowKey;
|
|
47
|
+
ctx.currentFlowKey = `${previousFlowKey}/group:${node.name ?? 'g'}`;
|
|
48
|
+
// Mirrors `renderGroup`'s `hasFill` decision so the painted box
|
|
49
|
+
// and the layout's reservation agree on whether a chiclet exists.
|
|
50
|
+
const hasChiclet = style.bg !== 'none' && style.bg !== '#ffffff' && Boolean(title);
|
|
51
|
+
const topPad = hasChiclet ? GROUP_TITLE_TAB_HEIGHT_PX + GROUP_TITLE_TAB_GUTTER_PX : 0;
|
|
52
|
+
const bottomPad = hasChiclet ? GROUP_BOTTOM_PAD_PX : 0;
|
|
53
|
+
// Bracket-style groups paint their label at `box.y - 2`, so the
|
|
54
|
+
// label glyph overhangs ABOVE box.y. Without an explicit
|
|
55
|
+
// reservation, two bracket-titled groups stacked in a parallel
|
|
56
|
+
// collide: the previous sibling's bracket-foot ends at its
|
|
57
|
+
// box.bottom, and the next sibling's label visual top sits just
|
|
58
|
+
// above box.y — they touch in the gap. Shift `box.y` down by
|
|
59
|
+
// the overhang amount so the glyph lands in space we own.
|
|
60
|
+
const bracketLabelOverhang = !hasChiclet && title ? GROUP_BRACKET_LABEL_OVERHANG_PX : 0;
|
|
61
|
+
const startY = cursor.y + bracketLabelOverhang;
|
|
62
|
+
const step = ctx.bandScale.step();
|
|
63
|
+
const groupContentLeftX = startX;
|
|
64
|
+
const packer = new RowPacker({
|
|
65
|
+
laneLeftX: groupContentLeftX,
|
|
66
|
+
originY: startY + topPad,
|
|
67
|
+
minRowHeight: step,
|
|
68
|
+
slackCorridors: ctx.slackCorridors,
|
|
69
|
+
});
|
|
70
|
+
let timeCursorX = groupContentLeftX;
|
|
71
|
+
const children = [];
|
|
72
|
+
for (const child of node.content) {
|
|
73
|
+
if (child.$type === 'DescriptionDirective')
|
|
74
|
+
continue;
|
|
75
|
+
if (!isItemDeclaration(child)) {
|
|
76
|
+
const blockProps = child.properties ?? [];
|
|
77
|
+
const blockStart = deps.resolveChildStart(blockProps, timeCursorX, groupContentLeftX, ctx);
|
|
78
|
+
const { rowIndex, y: blockY } = packer.placeBlock();
|
|
79
|
+
const innerCursor = deps.newCursor(blockStart, blockY);
|
|
80
|
+
const positioned = deps.sequenceOne(child, innerCursor, ctx);
|
|
81
|
+
children.push(positioned);
|
|
82
|
+
const blockEnd = positioned.box.x + positioned.box.width;
|
|
83
|
+
const blockHeight = Math.max(step, innerCursor.height);
|
|
84
|
+
packer.commitBlock({
|
|
85
|
+
rowIndex,
|
|
86
|
+
placed: positioned,
|
|
87
|
+
blockHeight,
|
|
88
|
+
blockEnd,
|
|
89
|
+
});
|
|
90
|
+
timeCursorX = Math.max(timeCursorX, blockEnd);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const props = child.properties;
|
|
94
|
+
const desiredStart = deps.resolveChildStart(props, timeCursorX, groupContentLeftX, ctx);
|
|
95
|
+
// Predict logical extent so the row-packer can bump on
|
|
96
|
+
// collision before we hand off to `sequenceItem`. Mirrors
|
|
97
|
+
// SwimlaneNode's pre-flight width math.
|
|
98
|
+
const durationDays = deriveItemDurationDays(props, ctx.sizes, ctx.cal);
|
|
99
|
+
const naturalWidth = Math.max(MIN_ITEM_WIDTH, durationDays * ctx.timeline.pixelsPerDay);
|
|
100
|
+
const desiredEnd = desiredStart + naturalWidth;
|
|
101
|
+
const childId = child.name ?? '';
|
|
102
|
+
const chipExtra = deps.predictItemChipExtraHeight(child, ctx);
|
|
103
|
+
const predictedHeight = step + chipExtra;
|
|
104
|
+
const { rowIndex, y: rowY } = packer.placeItem({
|
|
105
|
+
childId,
|
|
106
|
+
desiredStart,
|
|
107
|
+
desiredEnd,
|
|
108
|
+
// Row pitch = `step()` + extra chip-row height. Keeps
|
|
109
|
+
// the inter-row visible gap (= step - bandwidth) intact
|
|
110
|
+
// when an item's labels wrap and grow the bar.
|
|
111
|
+
predictedHeight,
|
|
112
|
+
});
|
|
113
|
+
const innerCursor = deps.newCursor(desiredStart, rowY);
|
|
114
|
+
const positioned = deps.sequenceItem(child, innerCursor, ctx);
|
|
115
|
+
children.push(positioned);
|
|
116
|
+
const itemLogicalEnd = positioned.box.x + positioned.box.width + ITEM_INSET_PX;
|
|
117
|
+
timeCursorX = Math.max(timeCursorX, itemLogicalEnd);
|
|
118
|
+
let spillReservation = null;
|
|
119
|
+
const hasAnySpill = positioned.textSpills ||
|
|
120
|
+
positioned.chipsOutside ||
|
|
121
|
+
positioned.dotSpills ||
|
|
122
|
+
positioned.iconSpills ||
|
|
123
|
+
positioned.footnoteSpills;
|
|
124
|
+
if (hasAnySpill) {
|
|
125
|
+
const farRight = Math.max(positioned.decorationsRightX, positioned.chipsOutside ? positioned.chipsRightX : 0);
|
|
126
|
+
spillReservation = farRight + 6;
|
|
127
|
+
}
|
|
128
|
+
packer.commitItem({
|
|
129
|
+
rowIndex,
|
|
130
|
+
placed: positioned,
|
|
131
|
+
logicalEnd: itemLogicalEnd,
|
|
132
|
+
spillReservation,
|
|
133
|
+
rowHeight: predictedHeight,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const innerHeight = Math.max(step, packer.usedHeight());
|
|
137
|
+
// The group's painted box hugs everything its children put on
|
|
138
|
+
// screen, including caption text that spills past a bar's right
|
|
139
|
+
// edge. `usedRightX` is the rightmost extent any row reached —
|
|
140
|
+
// either a bar's logical right or a caption's reserved spill —
|
|
141
|
+
// so the orange tint visually "owns" the spilled title/meta.
|
|
142
|
+
//
|
|
143
|
+
// The cursor channel (`cursor.x` / `cursor.maxX`) stays on the
|
|
144
|
+
// COMPACT `timeCursorX` (bar logical ends only). Bubbling the
|
|
145
|
+
// wide `visualRightX` upward would propagate through
|
|
146
|
+
// `ParallelNode.maxRight → parallel.box.width → swimlane
|
|
147
|
+
// blockEnd → timeCursorX`, pushing every subsequent sibling
|
|
148
|
+
// right by the spill width — including siblings on entirely
|
|
149
|
+
// different rows of the parent swimlane. The painted box and
|
|
150
|
+
// the logical cursor advance are intentionally decoupled here.
|
|
151
|
+
const visualRightX = Math.max(timeCursorX, packer.usedRightX());
|
|
152
|
+
const box = {
|
|
153
|
+
x: startX,
|
|
154
|
+
y: startY,
|
|
155
|
+
width: visualRightX - startX,
|
|
156
|
+
height: topPad + innerHeight + bottomPad,
|
|
157
|
+
};
|
|
158
|
+
cursor.x = timeCursorX + TRACK_BLOCK_TAIL_GUTTER_PX;
|
|
159
|
+
cursor.maxX = Math.max(cursor.maxX, cursor.x);
|
|
160
|
+
// The painted `box.height` is the group's tight visual
|
|
161
|
+
// footprint (chiclet + content + bottomPad). The cursor
|
|
162
|
+
// advance, however, must include one inter-row gap
|
|
163
|
+
// (`step - bandwidth`) so a sibling stacked below in a
|
|
164
|
+
// `parallel` (or any track-pack consumer) doesn't butt
|
|
165
|
+
// right up against the group's bottom edge. Items naturally
|
|
166
|
+
// include that gap because they report `cursor.height = step`
|
|
167
|
+
// (bandwidth + gap); groups need to add it explicitly since
|
|
168
|
+
// their painted height is gap-less.
|
|
169
|
+
const interRowGap = ctx.bandScale.step() - ctx.bandScale.bandwidth();
|
|
170
|
+
cursor.height = Math.max(cursor.height, bracketLabelOverhang + box.height + interRowGap);
|
|
171
|
+
const id = node.name;
|
|
172
|
+
if (id) {
|
|
173
|
+
ctx.entityLeftEdges.set(id, box.x);
|
|
174
|
+
ctx.entityRightEdges.set(id, box.x + box.width);
|
|
175
|
+
}
|
|
176
|
+
ctx.currentFlowKey = previousFlowKey;
|
|
177
|
+
return {
|
|
178
|
+
kind: 'group',
|
|
179
|
+
id,
|
|
180
|
+
title,
|
|
181
|
+
box,
|
|
182
|
+
children,
|
|
183
|
+
style,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=group-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-node.js","sourceRoot":"","sources":["../../src/nodes/group-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { EntityProperty, GroupBlock, IsolatedRegion, ItemDeclaration, ParallelBlock } from '@nowline/core';
|
|
2
|
+
import type { LayoutContext, TrackCursor } from '../layout-context.js';
|
|
3
|
+
import type { PositionedIncludeRegion, PositionedItem, PositionedTrackChild } from '../types.js';
|
|
4
|
+
export interface IncludeNodeDeps {
|
|
5
|
+
sequenceItem: (child: ItemDeclaration, cursor: TrackCursor, ctx: LayoutContext, ownerOverride?: string) => PositionedItem;
|
|
6
|
+
sequenceOne: (child: ItemDeclaration | GroupBlock | ParallelBlock, cursor: TrackCursor, ctx: LayoutContext) => PositionedTrackChild;
|
|
7
|
+
resolveChildStart: (props: EntityProperty[], seqDefault: number, laneLeftX: number, ctx: LayoutContext) => number;
|
|
8
|
+
newCursor: (x: number, y: number) => TrackCursor;
|
|
9
|
+
estimateTextWidth: (text: string, fontSize: number) => number;
|
|
10
|
+
predictItemChipExtraHeight: (item: ItemDeclaration, ctx: LayoutContext) => number;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildIncludeRegions(regions: IsolatedRegion[], ctx: LayoutContext, startY: number, deps: IncludeNodeDeps): {
|
|
13
|
+
regions: PositionedIncludeRegion[];
|
|
14
|
+
endY: number;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=include-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"include-node.d.ts","sourceRoot":"","sources":["../../src/nodes/include-node.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,cAAc,EACd,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,KAAK,EAER,uBAAuB,EACvB,cAAc,EAEd,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAcrB,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,CACV,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,aAAa,EAClB,aAAa,CAAC,EAAE,MAAM,KACrB,cAAc,CAAC;IACpB,WAAW,EAAE,CACT,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,aAAa,EACnD,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,aAAa,KACjB,oBAAoB,CAAC;IAC1B,iBAAiB,EAAE,CACf,KAAK,EAAE,cAAc,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,KACjB,MAAM,CAAC;IACZ,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;IACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,0BAA0B,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;CACrF;AAED,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,GACtB;IAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqGtD"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// IncludeNode + buildIncludeRegions — render isolated `include {}`
|
|
2
|
+
// regions stacked under the main swimlanes. Each region runs its own
|
|
3
|
+
// SwimlaneNode pass against the parent's TimeScale so dates align
|
|
4
|
+
// vertically with the tick row above the region. The label tab is
|
|
5
|
+
// reserved 18 px above the first region; subsequent regions are
|
|
6
|
+
// separated by GAP_BETWEEN_REGIONS px.
|
|
7
|
+
import { resolveSizes } from '../calendar.js';
|
|
8
|
+
import { includeChromeGeometry } from '../include-chrome-geometry.js';
|
|
9
|
+
import { resolveStyle } from '../style-resolution.js';
|
|
10
|
+
import { SwimlaneNode } from './swimlane-node.js';
|
|
11
|
+
const TAB_RESERVE = 18;
|
|
12
|
+
const REGION_INSET_TOP = 14;
|
|
13
|
+
const REGION_INSET_BOTTOM = 14;
|
|
14
|
+
const GAP_BETWEEN_REGIONS = 16;
|
|
15
|
+
// Visual breathing room added past the rightmost element when sizing
|
|
16
|
+
// the include's bounding box. Keeps the dashed bracket from butting up
|
|
17
|
+
// against an item's right edge while still trimming the wide
|
|
18
|
+
// chart-width whitespace left over from full-width sizing.
|
|
19
|
+
const INCLUDE_CONTENT_RIGHT_PAD_PX = 32;
|
|
20
|
+
export function buildIncludeRegions(regions, ctx, startY, deps) {
|
|
21
|
+
let y = startY + TAB_RESERVE;
|
|
22
|
+
const out = [];
|
|
23
|
+
let isFirst = true;
|
|
24
|
+
for (const region of regions) {
|
|
25
|
+
if (!isFirst)
|
|
26
|
+
y += GAP_BETWEEN_REGIONS;
|
|
27
|
+
isFirst = false;
|
|
28
|
+
const label = region.content.roadmap?.title ?? region.sourcePath;
|
|
29
|
+
const innerStartY = y + REGION_INSET_TOP;
|
|
30
|
+
const childCtx = {
|
|
31
|
+
cal: ctx.cal,
|
|
32
|
+
styleCtx: {
|
|
33
|
+
theme: ctx.styleCtx.theme,
|
|
34
|
+
styles: region.config.styles,
|
|
35
|
+
defaults: region.config.defaults,
|
|
36
|
+
labels: region.content.labels,
|
|
37
|
+
},
|
|
38
|
+
// Each include region declares its own sizes; resolve them under
|
|
39
|
+
// the parent's calendar so child sized items render at the same
|
|
40
|
+
// pixels-per-day scale as the host roadmap.
|
|
41
|
+
sizes: resolveSizes(region.content.sizes, ctx.cal),
|
|
42
|
+
labels: region.content.labels,
|
|
43
|
+
teams: region.content.teams,
|
|
44
|
+
persons: region.content.persons,
|
|
45
|
+
symbols: region.config.symbols,
|
|
46
|
+
footnoteIndex: new Map(),
|
|
47
|
+
footnoteHosts: new Map(),
|
|
48
|
+
timeline: ctx.timeline,
|
|
49
|
+
scale: ctx.scale,
|
|
50
|
+
calendar: ctx.calendar,
|
|
51
|
+
bandScale: ctx.bandScale,
|
|
52
|
+
entityLeftEdges: new Map(),
|
|
53
|
+
entityRightEdges: new Map(),
|
|
54
|
+
entityMidpoints: new Map(),
|
|
55
|
+
entityVisualLeftX: new Map(),
|
|
56
|
+
entityVisualRightX: new Map(),
|
|
57
|
+
itemArrowSource: new Map(),
|
|
58
|
+
itemFlowKey: new Map(),
|
|
59
|
+
currentFlowKey: '',
|
|
60
|
+
itemSlackAttachY: new Map(),
|
|
61
|
+
slackCorridors: [],
|
|
62
|
+
markerRowPlacements: new Map(),
|
|
63
|
+
chartTopY: innerStartY,
|
|
64
|
+
chartBottomY: innerStartY,
|
|
65
|
+
swimlaneBottomY: innerStartY,
|
|
66
|
+
chartRightX: ctx.chartRightX,
|
|
67
|
+
};
|
|
68
|
+
const nestedSwimlanes = [];
|
|
69
|
+
let cursorY = innerStartY;
|
|
70
|
+
let bandIndex = 0;
|
|
71
|
+
let nestedContentRightX = childCtx.timeline.originX;
|
|
72
|
+
for (const lane of region.content.swimlanes.values()) {
|
|
73
|
+
const { positioned, usedHeight, usedRightX } = new SwimlaneNode({ lane, bandIndex }, deps).place({ x: childCtx.timeline.originX, y: cursorY }, childCtx);
|
|
74
|
+
nestedSwimlanes.push(positioned);
|
|
75
|
+
cursorY += usedHeight;
|
|
76
|
+
bandIndex++;
|
|
77
|
+
if (usedRightX > nestedContentRightX)
|
|
78
|
+
nestedContentRightX = usedRightX;
|
|
79
|
+
}
|
|
80
|
+
const innerEndY = cursorY;
|
|
81
|
+
// Floor the region height to one row's bandwidth so an empty or
|
|
82
|
+
// tiny include still presents as a visible band — `bandwidth()`
|
|
83
|
+
// tracks whatever the host theme uses for swimlane row height.
|
|
84
|
+
const regionHeight = Math.max(ctx.bandScale.bandwidth(), innerEndY - y + REGION_INSET_BOTTOM);
|
|
85
|
+
// Shrink-wrap the include's bounding box to fit chrome + content
|
|
86
|
+
// (with a small right pad) instead of stretching to the full
|
|
87
|
+
// chart width. An include that reaches past the timeline still
|
|
88
|
+
// gets clamped to the chart's natural right edge so it never
|
|
89
|
+
// extends into the attribution / right-margin area.
|
|
90
|
+
const boxX = 0;
|
|
91
|
+
const { chromeRightX } = includeChromeGeometry(boxX, label, region.sourcePath);
|
|
92
|
+
const naturalRightX = Math.max(chromeRightX, nestedContentRightX) + INCLUDE_CONTENT_RIGHT_PAD_PX;
|
|
93
|
+
const boxWidth = Math.min(ctx.chartRightX - boxX, naturalRightX - boxX);
|
|
94
|
+
const box = {
|
|
95
|
+
x: boxX,
|
|
96
|
+
y,
|
|
97
|
+
width: boxWidth,
|
|
98
|
+
height: regionHeight,
|
|
99
|
+
};
|
|
100
|
+
// Mirror the shrunk width onto each nested swimlane band so the
|
|
101
|
+
// tinted background fits inside the dashed bracket instead of
|
|
102
|
+
// bleeding past it on the right.
|
|
103
|
+
for (const lane of nestedSwimlanes) {
|
|
104
|
+
lane.box.width = boxWidth;
|
|
105
|
+
}
|
|
106
|
+
out.push({
|
|
107
|
+
sourcePath: region.sourcePath,
|
|
108
|
+
label,
|
|
109
|
+
box,
|
|
110
|
+
nestedSwimlanes,
|
|
111
|
+
style: resolveStyle('swimlane', [], ctx.styleCtx),
|
|
112
|
+
});
|
|
113
|
+
y += regionHeight;
|
|
114
|
+
}
|
|
115
|
+
return { regions: out, endY: y };
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=include-node.js.map
|