@nowline/layout 0.0.0-dev.20261022060258.ga2b58c7 → 0.0.0-dev.20261023021135.ga07dccb
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/i18n.d.ts +1 -16
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +0 -14
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout-insights.d.ts.map +1 -1
- package/dist/layout-insights.js +3 -6
- package/dist/layout-insights.js.map +1 -1
- package/dist/nodes/wave-node.d.ts +9 -22
- package/dist/nodes/wave-node.d.ts.map +1 -1
- package/dist/nodes/wave-node.js +37 -146
- package/dist/nodes/wave-node.js.map +1 -1
- package/dist/phases/finalize.d.ts.map +1 -1
- package/dist/phases/finalize.js +1 -6
- package/dist/phases/finalize.js.map +1 -1
- package/dist/phases/measure.d.ts.map +1 -1
- package/dist/phases/measure.js +3 -1
- package/dist/phases/measure.js.map +1 -1
- package/dist/phases/place.d.ts.map +1 -1
- package/dist/phases/place.js +2 -1
- package/dist/phases/place.js.map +1 -1
- package/dist/schedule.d.ts +6 -0
- package/dist/schedule.d.ts.map +1 -1
- package/dist/schedule.js +12 -0
- package/dist/schedule.js.map +1 -1
- package/dist/themes/shared.d.ts +1 -6
- package/dist/themes/shared.d.ts.map +1 -1
- package/dist/themes/shared.js +1 -6
- package/dist/themes/shared.js.map +1 -1
- package/dist/types.d.ts +12 -37
- package/dist/types.d.ts.map +1 -1
- package/dist/wave-layout.d.ts +10 -4
- package/dist/wave-layout.d.ts.map +1 -1
- package/dist/wave-layout.js +7 -5
- package/dist/wave-layout.js.map +1 -1
- package/package.json +2 -2
- package/src/i18n.ts +1 -27
- package/src/index.ts +0 -3
- package/src/layout-insights.ts +3 -7
- package/src/nodes/wave-node.ts +36 -165
- package/src/phases/finalize.ts +0 -6
- package/src/phases/measure.ts +3 -1
- package/src/phases/place.ts +2 -1
- package/src/schedule.ts +12 -0
- package/src/themes/shared.ts +1 -6
- package/src/types.ts +12 -34
- package/src/wave-layout.ts +12 -4
package/dist/i18n.d.ts
CHANGED
|
@@ -9,22 +9,12 @@ export interface LocaleStrings {
|
|
|
9
9
|
* (`Launch · 2026-02-02 – 2026-02-23 · held by i2`; specs/waves.md §9.1).
|
|
10
10
|
*/
|
|
11
11
|
waveHeldBy: string;
|
|
12
|
-
/** Marks an empty wave in its tooltip
|
|
12
|
+
/** Marks an empty wave in its tooltip (`Hardening (TBD) · 2026-01-19 · no items`). */
|
|
13
13
|
waveNoItems: string;
|
|
14
14
|
/** Added to a background item's hover tooltip (specs/waves.md §9.3). */
|
|
15
15
|
waveBackgroundItem: string;
|
|
16
16
|
/** Legend entry beside the hatch swatch (specs/waves.md §9.5). */
|
|
17
17
|
waveLegendBackground: string;
|
|
18
|
-
/** Legend entry beside the boundary swatch. */
|
|
19
|
-
waveLegendBoundary: string;
|
|
20
|
-
/** Prefix of the legend's wave-name list (`Waves: #1 Discover · #2 Build`). */
|
|
21
|
-
waveLegendPrefix: string;
|
|
22
|
-
/**
|
|
23
|
-
* Wave strip placeholder when every wave is empty (specs/waves.md
|
|
24
|
-
* §9.1). `{names}` is replaced by the wave titles; see
|
|
25
|
-
* `wavesDeclaredPlaceholder`.
|
|
26
|
-
*/
|
|
27
|
-
wavesDeclaredPlaceholder: string;
|
|
28
18
|
}
|
|
29
19
|
/**
|
|
30
20
|
* Resolve the effective locale for the rendered artifact.
|
|
@@ -59,11 +49,6 @@ export declare function resolveLocale(override: string | undefined, directiveLoc
|
|
|
59
49
|
* root has every key.
|
|
60
50
|
*/
|
|
61
51
|
export declare function localeStrings(locale: string): LocaleStrings;
|
|
62
|
-
/**
|
|
63
|
-
* The all-empty wave strip placeholder (specs/waves.md §9.1), e.g.
|
|
64
|
-
* `Waves declared: Discover, Build — no items assigned yet`.
|
|
65
|
-
*/
|
|
66
|
-
export declare function wavesDeclaredPlaceholder(strings: LocaleStrings, names: readonly string[]): string;
|
|
67
52
|
/**
|
|
68
53
|
* BCP-47 fallback chain for a locale tag. Strips trailing `-SUBTAG`s
|
|
69
54
|
* one at a time until a primary subtag remains, then appends the root
|
package/dist/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC1B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC1B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAmCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,GAAG,SAAS,GACpC,MAAM,CAER;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAa3D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWtD"}
|
package/dist/i18n.js
CHANGED
|
@@ -24,9 +24,6 @@ const BUNDLES = {
|
|
|
24
24
|
waveNoItems: 'no items',
|
|
25
25
|
waveBackgroundItem: 'Background (no wave)',
|
|
26
26
|
waveLegendBackground: 'Background work (not in a wave)',
|
|
27
|
-
waveLegendBoundary: 'Wave boundary',
|
|
28
|
-
waveLegendPrefix: 'Waves:',
|
|
29
|
-
wavesDeclaredPlaceholder: 'Waves declared: {names} — no items assigned yet',
|
|
30
27
|
},
|
|
31
28
|
fr: {
|
|
32
29
|
// Short form of "maintenant"; keeps the pill compact while staying
|
|
@@ -41,9 +38,6 @@ const BUNDLES = {
|
|
|
41
38
|
waveNoItems: 'aucun élément',
|
|
42
39
|
waveBackgroundItem: 'Travail de fond (hors vague)',
|
|
43
40
|
waveLegendBackground: 'Travail de fond (dans aucune vague)',
|
|
44
|
-
waveLegendBoundary: 'Limite de vague',
|
|
45
|
-
waveLegendPrefix: 'Vagues\u00A0:',
|
|
46
|
-
wavesDeclaredPlaceholder: 'Vagues déclarées\u00A0: {names} — aucun élément affecté pour l’instant',
|
|
47
41
|
},
|
|
48
42
|
};
|
|
49
43
|
/**
|
|
@@ -95,14 +89,6 @@ export function localeStrings(locale) {
|
|
|
95
89
|
// The root bundle (`en-US`) is always populated, so this cast is safe.
|
|
96
90
|
return result;
|
|
97
91
|
}
|
|
98
|
-
/**
|
|
99
|
-
* The all-empty wave strip placeholder (specs/waves.md §9.1), e.g.
|
|
100
|
-
* `Waves declared: Discover, Build — no items assigned yet`.
|
|
101
|
-
*/
|
|
102
|
-
export function wavesDeclaredPlaceholder(strings, names) {
|
|
103
|
-
// A replacer function, so a `$` in a title is never read as a pattern.
|
|
104
|
-
return strings.wavesDeclaredPlaceholder.replace('{names}', () => names.join(', '));
|
|
105
|
-
}
|
|
106
92
|
/**
|
|
107
93
|
* BCP-47 fallback chain for a locale tag. Strips trailing `-SUBTAG`s
|
|
108
94
|
* one at a time until a primary subtag remains, then appends the root
|
package/dist/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wDAAwD;AACxD,mEAAmE;AACnE,2EAA2E;AAC3E,wEAAwE;AACxE,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AACvE,iEAAiE;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export { scheduleRoadmap } from './schedule.js';
|
|
|
20
20
|
export { estimateTextWidth } from './text-measure.js';
|
|
21
21
|
export { contrastRatio, relativeLuminance } from './themes/contrast.js';
|
|
22
22
|
export { darkTheme, grayscaleTheme, lightTheme, normalizeThemeName, THEME_NAMES, type Theme, type ThemeName, themes, } from './themes/index.js';
|
|
23
|
-
export { ACCENT_DASH_PATTERN, ATTRIBUTION_BAR_LOGICAL_WIDTH, ATTRIBUTION_BAR_LOGICAL_X, ATTRIBUTION_INE_LOGICAL_X, ATTRIBUTION_LINK, ATTRIBUTION_NOW_LOGICAL_X, ATTRIBUTION_PREFIX_FONT_SIZE, ATTRIBUTION_SCALE, ATTRIBUTION_TEXT, ATTRIBUTION_WORDMARK_FONT_SIZE, CORNER_RADIUS_PX, EDGE_CORNER_RADIUS, FONT_STACK, FOOTNOTE_HEADER_BASELINE_OFFSET_PX, FOOTNOTE_HEADER_HEIGHT_PX, FOOTNOTE_PANEL_PADDING_PX, FOOTNOTE_ROW_HEIGHT, FRAME_TAB_HEIGHT_PX, FRAME_TAB_LABEL_BASELINE_OFFSET_PX, HEADER_HEIGHT_PX, NON_WORKING_FILL_OPACITY, NOW_PILL_CORNER_RADIUS_PX, NOW_PILL_HEIGHT_PX, NOW_PILL_LABEL_BASELINE_OFFSET_PX, NOW_PILL_LABEL_FONT_SIZE_PX, NOW_PILL_LABEL_INSET_X_PX, NOW_PILL_WIDTH_PX, NOWLINE_STROKE_WIDTH_PX, PROGRESS_STRIP_HEIGHT_PX, TEXT_SIZE_PX, TIMELINE_TICK_LABEL_BASELINE_OFFSET_PX, TIMELINE_TICK_LABEL_FONT_SIZE_PX, TIMELINE_TICK_PANEL_HEIGHT_PX, timelineTickLabelBaselineOffsetPx, WAVE_BOUNDARY_WIDTH_PX, WAVE_CELL_INSET_PX, WAVE_CROSS_DASH,
|
|
23
|
+
export { ACCENT_DASH_PATTERN, ATTRIBUTION_BAR_LOGICAL_WIDTH, ATTRIBUTION_BAR_LOGICAL_X, ATTRIBUTION_INE_LOGICAL_X, ATTRIBUTION_LINK, ATTRIBUTION_NOW_LOGICAL_X, ATTRIBUTION_PREFIX_FONT_SIZE, ATTRIBUTION_SCALE, ATTRIBUTION_TEXT, ATTRIBUTION_WORDMARK_FONT_SIZE, CORNER_RADIUS_PX, EDGE_CORNER_RADIUS, FONT_STACK, FOOTNOTE_HEADER_BASELINE_OFFSET_PX, FOOTNOTE_HEADER_HEIGHT_PX, FOOTNOTE_PANEL_PADDING_PX, FOOTNOTE_ROW_HEIGHT, FRAME_TAB_HEIGHT_PX, FRAME_TAB_LABEL_BASELINE_OFFSET_PX, HEADER_HEIGHT_PX, NON_WORKING_FILL_OPACITY, NOW_PILL_CORNER_RADIUS_PX, NOW_PILL_HEIGHT_PX, NOW_PILL_LABEL_BASELINE_OFFSET_PX, NOW_PILL_LABEL_FONT_SIZE_PX, NOW_PILL_LABEL_INSET_X_PX, NOW_PILL_WIDTH_PX, NOWLINE_STROKE_WIDTH_PX, PROGRESS_STRIP_HEIGHT_PX, TEXT_SIZE_PX, TIMELINE_TICK_LABEL_BASELINE_OFFSET_PX, TIMELINE_TICK_LABEL_FONT_SIZE_PX, TIMELINE_TICK_PANEL_HEIGHT_PX, timelineTickLabelBaselineOffsetPx, WAVE_BOUNDARY_WIDTH_PX, WAVE_CELL_INSET_PX, WAVE_CROSS_DASH, WAVE_HATCH_OPACITY, WAVE_HATCH_STROKE_PX, WAVE_HATCH_TILE_PX, WAVE_LABEL_HALO_INSET_Y_PX, WAVE_LABEL_HALO_PAD_PX, WAVE_LEGEND_BASELINE_OFFSET_PX, WAVE_LEGEND_GAP_PX, WAVE_LEGEND_LINE_PX, WAVE_LEGEND_SWATCH_GAP_PX, WAVE_LEGEND_SWATCH_HEIGHT_PX, WAVE_LEGEND_SWATCH_WIDTH_PX, WAVE_STRIP_HEIGHT_PX, WAVE_STRIP_LABEL_FONT_SIZE_PX, WAVE_STRIP_LABEL_PAD_PX, WAVE_STYLED_STRIP_MIX_OPACITY, WAVE_STYLED_TINT_OPACITY, } from './themes/shared.js';
|
|
24
24
|
export * from './types.js';
|
|
25
25
|
export type { CalendarException, WorkingCalendar, WorkingExceptionRun, } from './working-calendar.js';
|
|
26
26
|
export { calendarExceptions } from './working-calendar.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { scheduleRoadmap } from './schedule.js';
|
|
|
17
17
|
export { estimateTextWidth } from './text-measure.js';
|
|
18
18
|
export { contrastRatio, relativeLuminance } from './themes/contrast.js';
|
|
19
19
|
export { darkTheme, grayscaleTheme, lightTheme, normalizeThemeName, THEME_NAMES, themes, } from './themes/index.js';
|
|
20
|
-
export { ACCENT_DASH_PATTERN, ATTRIBUTION_BAR_LOGICAL_WIDTH, ATTRIBUTION_BAR_LOGICAL_X, ATTRIBUTION_INE_LOGICAL_X, ATTRIBUTION_LINK, ATTRIBUTION_NOW_LOGICAL_X, ATTRIBUTION_PREFIX_FONT_SIZE, ATTRIBUTION_SCALE, ATTRIBUTION_TEXT, ATTRIBUTION_WORDMARK_FONT_SIZE, CORNER_RADIUS_PX, EDGE_CORNER_RADIUS, FONT_STACK, FOOTNOTE_HEADER_BASELINE_OFFSET_PX, FOOTNOTE_HEADER_HEIGHT_PX, FOOTNOTE_PANEL_PADDING_PX, FOOTNOTE_ROW_HEIGHT, FRAME_TAB_HEIGHT_PX, FRAME_TAB_LABEL_BASELINE_OFFSET_PX, HEADER_HEIGHT_PX, NON_WORKING_FILL_OPACITY, NOW_PILL_CORNER_RADIUS_PX, NOW_PILL_HEIGHT_PX, NOW_PILL_LABEL_BASELINE_OFFSET_PX, NOW_PILL_LABEL_FONT_SIZE_PX, NOW_PILL_LABEL_INSET_X_PX, NOW_PILL_WIDTH_PX, NOWLINE_STROKE_WIDTH_PX, PROGRESS_STRIP_HEIGHT_PX, TEXT_SIZE_PX, TIMELINE_TICK_LABEL_BASELINE_OFFSET_PX, TIMELINE_TICK_LABEL_FONT_SIZE_PX, TIMELINE_TICK_PANEL_HEIGHT_PX, timelineTickLabelBaselineOffsetPx, WAVE_BOUNDARY_WIDTH_PX, WAVE_CELL_INSET_PX, WAVE_CROSS_DASH,
|
|
20
|
+
export { ACCENT_DASH_PATTERN, ATTRIBUTION_BAR_LOGICAL_WIDTH, ATTRIBUTION_BAR_LOGICAL_X, ATTRIBUTION_INE_LOGICAL_X, ATTRIBUTION_LINK, ATTRIBUTION_NOW_LOGICAL_X, ATTRIBUTION_PREFIX_FONT_SIZE, ATTRIBUTION_SCALE, ATTRIBUTION_TEXT, ATTRIBUTION_WORDMARK_FONT_SIZE, CORNER_RADIUS_PX, EDGE_CORNER_RADIUS, FONT_STACK, FOOTNOTE_HEADER_BASELINE_OFFSET_PX, FOOTNOTE_HEADER_HEIGHT_PX, FOOTNOTE_PANEL_PADDING_PX, FOOTNOTE_ROW_HEIGHT, FRAME_TAB_HEIGHT_PX, FRAME_TAB_LABEL_BASELINE_OFFSET_PX, HEADER_HEIGHT_PX, NON_WORKING_FILL_OPACITY, NOW_PILL_CORNER_RADIUS_PX, NOW_PILL_HEIGHT_PX, NOW_PILL_LABEL_BASELINE_OFFSET_PX, NOW_PILL_LABEL_FONT_SIZE_PX, NOW_PILL_LABEL_INSET_X_PX, NOW_PILL_WIDTH_PX, NOWLINE_STROKE_WIDTH_PX, PROGRESS_STRIP_HEIGHT_PX, TEXT_SIZE_PX, TIMELINE_TICK_LABEL_BASELINE_OFFSET_PX, TIMELINE_TICK_LABEL_FONT_SIZE_PX, TIMELINE_TICK_PANEL_HEIGHT_PX, timelineTickLabelBaselineOffsetPx, WAVE_BOUNDARY_WIDTH_PX, WAVE_CELL_INSET_PX, WAVE_CROSS_DASH, WAVE_HATCH_OPACITY, WAVE_HATCH_STROKE_PX, WAVE_HATCH_TILE_PX, WAVE_LABEL_HALO_INSET_Y_PX, WAVE_LABEL_HALO_PAD_PX, WAVE_LEGEND_BASELINE_OFFSET_PX, WAVE_LEGEND_GAP_PX, WAVE_LEGEND_LINE_PX, WAVE_LEGEND_SWATCH_GAP_PX, WAVE_LEGEND_SWATCH_HEIGHT_PX, WAVE_LEGEND_SWATCH_WIDTH_PX, WAVE_STRIP_HEIGHT_PX, WAVE_STRIP_LABEL_FONT_SIZE_PX, WAVE_STRIP_LABEL_PAD_PX, WAVE_STYLED_STRIP_MIX_OPACITY, WAVE_STYLED_TINT_OPACITY, } from './themes/shared.js';
|
|
21
21
|
export * from './types.js';
|
|
22
22
|
export { calendarExceptions } from './working-calendar.js';
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-insights.d.ts","sourceRoot":"","sources":["../src/layout-insights.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,WAAW,EAAM,MAAM,eAAe,CAAC;AAErE,OAAO,KAAK,EAER,iBAAiB,EAGpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"layout-insights.d.ts","sourceRoot":"","sources":["../src/layout-insights.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,WAAW,EAAM,MAAM,eAAe,CAAC;AAErE,OAAO,KAAK,EAER,iBAAiB,EAGpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAwMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,oBAAyB,GACnC,aAAa,EAAE,CA8BjB"}
|
package/dist/layout-insights.js
CHANGED
|
@@ -116,12 +116,9 @@ function collectWaveInsights(layout, locale, out) {
|
|
|
116
116
|
const waves = layout.waves ?? [];
|
|
117
117
|
const empty = waves.filter((w) => w.empty).map((w) => w.id);
|
|
118
118
|
if (empty.length > 0) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
? { reason: 'one', name: empty[0] }
|
|
123
|
-
: { reason: 'many', names: empty };
|
|
124
|
-
out.push(makeInsight(locale, 'NL.I1006', 'info', args, args.reason === 'one' ? args.name : undefined));
|
|
119
|
+
// One consolidated message: the empty waves are not drawn (§9.1).
|
|
120
|
+
const args = { names: empty };
|
|
121
|
+
out.push(makeInsight(locale, 'NL.I1006', 'info', args, empty.length === 1 ? empty[0] : undefined));
|
|
125
122
|
}
|
|
126
123
|
for (const m of layout.milestones) {
|
|
127
124
|
// Only dated milestones get `overrunByWave`, and each carries its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-insights.js","sourceRoot":"","sources":["../src/layout-insights.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"layout-insights.js","sourceRoot":"","sources":["../src/layout-insights.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { LocaleStrings } from '../i18n.js';
|
|
2
2
|
import type { LayoutContext } from '../layout-context.js';
|
|
3
3
|
import type { Theme } from '../themes/shape.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { PositionedIncludeRegion, PositionedSwimlane, PositionedWave, PositionedWaveBoundary, PositionedWaveCrossing, PositionedWaveLegend } from '../types.js';
|
|
5
5
|
import { type WaveLayoutState } from '../wave-layout.js';
|
|
6
6
|
/** Everything `buildWaves` produces; the caller attaches it to the model. */
|
|
7
7
|
export interface BuiltWaves {
|
|
@@ -14,22 +14,14 @@ export interface BuiltWaves {
|
|
|
14
14
|
regionCrossings: PositionedWaveCrossing[][];
|
|
15
15
|
/** True when any placed item (main lanes or regions) is background work. */
|
|
16
16
|
hasBackground: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* The strip placeholder, set only when every wave is empty: its text,
|
|
19
|
-
* centred on the timeline at `x`, on `halo` in the backing panel's fill.
|
|
20
|
-
*/
|
|
21
|
-
placeholder?: {
|
|
22
|
-
text: string;
|
|
23
|
-
x: number;
|
|
24
|
-
halo: BoundingBox;
|
|
25
|
-
};
|
|
26
17
|
}
|
|
27
18
|
/**
|
|
28
19
|
* Build the positioned waves, boundaries and crossings. `state` must be
|
|
29
20
|
* frozen: its `pass` is the pass that ran with the solved `S`/`E`, so its
|
|
30
21
|
* member counts cover the main lanes and the first-level regions exactly
|
|
31
|
-
* once (later placements never accumulate). `ctx.timeline.waveStrip`
|
|
32
|
-
*
|
|
22
|
+
* once (later placements never accumulate). `ctx.timeline.waveStrip` is
|
|
23
|
+
* set whenever some wave has items; when none does, nothing is drawn and the
|
|
24
|
+
* waves carry their spans only (specs/waves.md §9.1).
|
|
33
25
|
*/
|
|
34
26
|
export declare function buildWaves(state: WaveLayoutState, ctx: LayoutContext, strings: LocaleStrings, swimlanes: PositionedSwimlane[], includes: PositionedIncludeRegion[]): BuiltWaves;
|
|
35
27
|
interface LabelFit {
|
|
@@ -51,15 +43,10 @@ export declare function fitStripLabel(title: string, id: string, ordinal: number
|
|
|
51
43
|
*/
|
|
52
44
|
export declare function readableLabelText(wave: Pick<Theme['wave'], 'labelText' | 'hatch' | 'hatchOnDark'>, fill: string): string;
|
|
53
45
|
/**
|
|
54
|
-
* The wave legend (§9.5), or undefined
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* work), the boundary swatch (when any boundary is drawn), and the wave
|
|
58
|
-
* names (when a label is abbreviated, a wave is empty, or a wave's
|
|
59
|
-
* footnotes moved here). Lines are `WAVE_LEGEND_LINE_PX` high from `topY`
|
|
60
|
-
* at the chart origin, wrapped at entry boundaries (the wave list also
|
|
61
|
-
* between waves) to the canvas width (`chartRightX`, final) less the gutter.
|
|
46
|
+
* The wave legend (§9.5), or undefined without background work (which there
|
|
47
|
+
* is only when some wave is drawn): one hatch swatch, `Background work (not
|
|
48
|
+
* in a wave)`, `WAVE_LEGEND_LINE_PX` high from `topY` at the chart origin.
|
|
62
49
|
*/
|
|
63
|
-
export declare function buildWaveLegend(built: BuiltWaves, ctx: LayoutContext, strings: LocaleStrings, topY: number
|
|
50
|
+
export declare function buildWaveLegend(built: BuiltWaves, ctx: LayoutContext, strings: LocaleStrings, topY: number): PositionedWaveLegend | undefined;
|
|
64
51
|
export {};
|
|
65
52
|
//# sourceMappingURL=wave-node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wave-node.d.ts","sourceRoot":"","sources":["../../src/nodes/wave-node.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wave-node.d.ts","sourceRoot":"","sources":["../../src/nodes/wave-node.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAchD,OAAO,KAAK,EAGR,uBAAuB,EAEvB,kBAAkB,EAElB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EAGvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAM3B,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,sEAAsE;IACtE,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,sDAAsD;IACtD,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,qFAAqF;IACrF,eAAe,EAAE,sBAAsB,EAAE,EAAE,CAAC;IAC5C,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACtB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,QAAQ,EAAE,uBAAuB,EAAE,GACpC,UAAU,CA4OZ;AA6BD,UAAU,QAAQ;IACd,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACnB,QAAQ,GAAG,SAAS,CActB;AAuED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC,EAChE,IAAI,EAAE,MAAM,GACb,MAAM,CAOR;AAyFD;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,GACb,oBAAoB,GAAG,SAAS,CAuBlC"}
|
package/dist/nodes/wave-node.js
CHANGED
|
@@ -10,13 +10,12 @@
|
|
|
10
10
|
// pixels-per-day are unchanged), so the spans' x never move.
|
|
11
11
|
import { propKey } from '@nowline/core/internal';
|
|
12
12
|
import { propValue } from '../dsl-utils.js';
|
|
13
|
-
import { wavesDeclaredPlaceholder } from '../i18n.js';
|
|
14
13
|
import { pickInlineDate } from '../inline-date-pin-geometry.js';
|
|
15
14
|
import { INLINE_DATE_GLYPH_GAP_PX, INLINE_DATE_GLYPH_INSET_LEFT_PX, INLINE_DATE_GLYPH_TILE_SIZE_PX, ITEM_FOOTNOTE_INDICATOR_STEP_PX, } from '../item-bar-geometry.js';
|
|
16
15
|
import { estimateTextWidth } from '../text-measure.js';
|
|
17
16
|
import { contrastRatio, hexToRgb } from '../themes/contrast.js';
|
|
18
17
|
import { resolveColor } from '../themes/index.js';
|
|
19
|
-
import {
|
|
18
|
+
import { WAVE_CELL_INSET_PX, WAVE_LABEL_HALO_INSET_Y_PX, WAVE_LABEL_HALO_PAD_PX, WAVE_LEGEND_BASELINE_OFFSET_PX, WAVE_LEGEND_LINE_PX, WAVE_LEGEND_SWATCH_GAP_PX, WAVE_LEGEND_SWATCH_HEIGHT_PX, WAVE_LEGEND_SWATCH_WIDTH_PX, WAVE_STRIP_LABEL_FONT_SIZE_PX, WAVE_STRIP_LABEL_PAD_PX, WAVE_STYLED_STRIP_MIX_OPACITY, } from '../themes/shared.js';
|
|
20
19
|
import { summarizeWaves } from '../wave-barrier.js';
|
|
21
20
|
import { waveHatchKind } from '../wave-hatch.js';
|
|
22
21
|
import { dateAtX, spanEndDateAtX, WAVE_EDGE_TOLERANCE_PX, } from '../wave-layout.js';
|
|
@@ -27,27 +26,31 @@ const WAVE_LABEL_MIN_CONTRAST = 4.5;
|
|
|
27
26
|
* Build the positioned waves, boundaries and crossings. `state` must be
|
|
28
27
|
* frozen: its `pass` is the pass that ran with the solved `S`/`E`, so its
|
|
29
28
|
* member counts cover the main lanes and the first-level regions exactly
|
|
30
|
-
* once (later placements never accumulate). `ctx.timeline.waveStrip`
|
|
31
|
-
*
|
|
29
|
+
* once (later placements never accumulate). `ctx.timeline.waveStrip` is
|
|
30
|
+
* set whenever some wave has items; when none does, nothing is drawn and the
|
|
31
|
+
* waves carry their spans only (specs/waves.md §9.1).
|
|
32
32
|
*/
|
|
33
33
|
export function buildWaves(state, ctx, strings, swimlanes, includes) {
|
|
34
34
|
if (!state.frozen || !state.solve) {
|
|
35
35
|
throw new Error('buildWaves: the wave barrier has not settled');
|
|
36
36
|
}
|
|
37
|
-
const strip = ctx.timeline.waveStrip;
|
|
38
|
-
if (!strip)
|
|
39
|
-
throw new Error('buildWaves: the timeline has no wave strip');
|
|
40
37
|
const spans = summarizeWaves(state.plan, state.solve, state.pass, state.origin, state.floors, WAVE_EDGE_TOLERANCE_PX);
|
|
41
38
|
const allEmpty = spans.every((s) => s.memberCount === 0);
|
|
39
|
+
// With every wave empty the roadmap draws no strip: the waves keep a
|
|
40
|
+
// zero-height one under the tick panel, for their boxes only.
|
|
41
|
+
const strip = ctx.timeline.waveStrip ?? {
|
|
42
|
+
y: ctx.timeline.tickPanelY + ctx.timeline.tickPanelHeight,
|
|
43
|
+
height: 0,
|
|
44
|
+
};
|
|
45
|
+
if (!ctx.timeline.waveStrip && !allEmpty) {
|
|
46
|
+
throw new Error('buildWaves: the timeline has no wave strip');
|
|
47
|
+
}
|
|
42
48
|
// The visible part of a span is its overlap with the timeline.
|
|
43
49
|
const visLeft = ctx.timeline.box.x;
|
|
44
50
|
const visRight = visLeft + ctx.timeline.box.width;
|
|
45
|
-
const stripMidY = strip.y + strip.height / 2;
|
|
46
51
|
// Every strip halo spans the strip less a vertical inset.
|
|
47
52
|
const haloY = strip.y + WAVE_LABEL_HALO_INSET_Y_PX;
|
|
48
53
|
const haloHeight = strip.height - 2 * WAVE_LABEL_HALO_INSET_Y_PX;
|
|
49
|
-
// Empty-wave diamonds placed so far, by their unstepped x.
|
|
50
|
-
const emptyXs = [];
|
|
51
54
|
let ordinal = 0;
|
|
52
55
|
const waves = spans.map((span, i) => {
|
|
53
56
|
const decl = state.plan.waves[i];
|
|
@@ -86,17 +89,8 @@ export function buildWaves(state, ctx, strings, swimlanes, includes) {
|
|
|
86
89
|
}
|
|
87
90
|
fit ??= fitStripLabel(title, span.id, i + 1, visibleWidth, glyphReserve);
|
|
88
91
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (empty) {
|
|
92
|
-
labelX = span.start;
|
|
93
|
-
if (!allEmpty) {
|
|
94
|
-
const sameX = emptyXs.filter((x) => Math.abs(x - span.start) < WAVE_EDGE_TOLERANCE_PX).length;
|
|
95
|
-
emptyXs.push(span.start);
|
|
96
|
-
labelX = span.start + sameX * WAVE_EMPTY_MARKER_STEP_PX;
|
|
97
|
-
marker = { x: labelX, y: stripMidY };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
92
|
+
// An empty wave is not drawn (§9.1); the NL.I1006 insight names it.
|
|
93
|
+
const labelX = empty ? span.start : (cellLeft + cellRight) / 2;
|
|
100
94
|
const range = empty ? isoDay(startDate) : `${isoDay(startDate)} – ${isoDay(endDate)}`;
|
|
101
95
|
const tooltipParts = [title, range];
|
|
102
96
|
if (empty)
|
|
@@ -218,7 +212,6 @@ export function buildWaves(state, ctx, strings, swimlanes, includes) {
|
|
|
218
212
|
...(superscripts ? { superscripts } : {}),
|
|
219
213
|
tooltip: tooltipParts.join(' · '),
|
|
220
214
|
footnotesShown,
|
|
221
|
-
...(marker ? { marker } : {}),
|
|
222
215
|
...(gapLabel ? { gapLabel } : {}),
|
|
223
216
|
},
|
|
224
217
|
style,
|
|
@@ -237,16 +230,6 @@ export function buildWaves(state, ctx, strings, swimlanes, includes) {
|
|
|
237
230
|
regionCrossings: regionBackground.map((items) => crossingsOver(items, boundaries)),
|
|
238
231
|
hasBackground: mainBackground.length + regionBackground.flat().length > 0,
|
|
239
232
|
};
|
|
240
|
-
if (allEmpty) {
|
|
241
|
-
const text = wavesDeclaredPlaceholder(strings, waves.map((w) => w.title));
|
|
242
|
-
const x = visLeft + ctx.timeline.box.width / 2;
|
|
243
|
-
const haloWidth = estimateTextWidth(text, WAVE_STRIP_LABEL_FONT_SIZE_PX) + 2 * WAVE_LABEL_HALO_PAD_PX;
|
|
244
|
-
built.placeholder = {
|
|
245
|
-
text,
|
|
246
|
-
x,
|
|
247
|
-
halo: { x: x - haloWidth / 2, y: haloY, width: haloWidth, height: haloHeight },
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
233
|
return built;
|
|
251
234
|
}
|
|
252
235
|
/**
|
|
@@ -464,126 +447,34 @@ function crossingsOver(items, boundaries) {
|
|
|
464
447
|
}
|
|
465
448
|
return out;
|
|
466
449
|
}
|
|
467
|
-
const SUPERSCRIPT_DIGITS = '⁰¹²³⁴⁵⁶⁷⁸⁹';
|
|
468
|
-
function superscript(n) {
|
|
469
|
-
return String(n).replace(/[0-9]/g, (d) => SUPERSCRIPT_DIGITS[Number(d)]);
|
|
470
|
-
}
|
|
471
450
|
/**
|
|
472
|
-
* The wave legend (§9.5), or undefined
|
|
473
|
-
*
|
|
474
|
-
*
|
|
475
|
-
* work), the boundary swatch (when any boundary is drawn), and the wave
|
|
476
|
-
* names (when a label is abbreviated, a wave is empty, or a wave's
|
|
477
|
-
* footnotes moved here). Lines are `WAVE_LEGEND_LINE_PX` high from `topY`
|
|
478
|
-
* at the chart origin, wrapped at entry boundaries (the wave list also
|
|
479
|
-
* between waves) to the canvas width (`chartRightX`, final) less the gutter.
|
|
451
|
+
* The wave legend (§9.5), or undefined without background work (which there
|
|
452
|
+
* is only when some wave is drawn): one hatch swatch, `Background work (not
|
|
453
|
+
* in a wave)`, `WAVE_LEGEND_LINE_PX` high from `topY` at the chart origin.
|
|
480
454
|
*/
|
|
481
|
-
export function buildWaveLegend(built, ctx, strings, topY
|
|
482
|
-
|
|
483
|
-
const abbreviated = waves.some((w) => !w.empty && w.strip.labelKind !== 'title');
|
|
484
|
-
const anyEmpty = waves.some((w) => w.empty);
|
|
485
|
-
const dropped = waves.some((w) => w.footnoteIndicators.length > 0 && !w.strip.footnotesShown);
|
|
486
|
-
if (!built.hasBackground && !abbreviated && !anyEmpty && !dropped)
|
|
455
|
+
export function buildWaveLegend(built, ctx, strings, topY) {
|
|
456
|
+
if (!built.hasBackground)
|
|
487
457
|
return undefined;
|
|
488
|
-
const fontSize = WAVE_STRIP_LABEL_FONT_SIZE_PX;
|
|
489
|
-
const textWidth = (text) => estimateTextWidth(text, fontSize);
|
|
490
458
|
const left = ctx.timeline.originX;
|
|
491
|
-
const
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
// fresh line when it would overflow (a first unit never wraps).
|
|
499
|
-
const startUnit = (width) => {
|
|
500
|
-
if (lineUsed && cursor + WAVE_LEGEND_ENTRY_GAP_PX + width > maxRight) {
|
|
501
|
-
line++;
|
|
502
|
-
cursor = left;
|
|
503
|
-
lineUsed = false;
|
|
504
|
-
}
|
|
505
|
-
const x = lineUsed ? cursor + WAVE_LEGEND_ENTRY_GAP_PX : cursor;
|
|
506
|
-
cursor = x + width;
|
|
507
|
-
lineUsed = true;
|
|
508
|
-
widest = Math.max(widest, cursor - left);
|
|
509
|
-
return x;
|
|
510
|
-
};
|
|
511
|
-
const entries = [];
|
|
512
|
-
const swatchEntry = (kind, text) => {
|
|
513
|
-
const textX0 = WAVE_LEGEND_SWATCH_WIDTH_PX + WAVE_LEGEND_SWATCH_GAP_PX;
|
|
514
|
-
const x = startUnit(textX0 + textWidth(text));
|
|
515
|
-
const y = baseline(line);
|
|
516
|
-
entries.push({
|
|
517
|
-
kind,
|
|
518
|
-
text,
|
|
519
|
-
swatch: {
|
|
520
|
-
x,
|
|
521
|
-
y: y -
|
|
522
|
-
WAVE_LEGEND_BASELINE_OFFSET_PX +
|
|
523
|
-
(WAVE_LEGEND_LINE_PX - WAVE_LEGEND_SWATCH_HEIGHT_PX) / 2,
|
|
524
|
-
width: WAVE_LEGEND_SWATCH_WIDTH_PX,
|
|
525
|
-
height: WAVE_LEGEND_SWATCH_HEIGHT_PX,
|
|
526
|
-
},
|
|
527
|
-
// The hatched swatch is a default item bar.
|
|
528
|
-
...(kind === 'background'
|
|
529
|
-
? { hatch: waveHatchKind(ctx.styleCtx.theme.entities.item.bg) }
|
|
530
|
-
: {}),
|
|
531
|
-
runs: [{ text, x: x + textX0, y }],
|
|
532
|
-
});
|
|
533
|
-
};
|
|
534
|
-
if (built.hasBackground)
|
|
535
|
-
swatchEntry('background', strings.waveLegendBackground);
|
|
536
|
-
if (built.boundaries.length > 0)
|
|
537
|
-
swatchEntry('boundary', strings.waveLegendBoundary);
|
|
538
|
-
if (abbreviated || anyEmpty || dropped) {
|
|
539
|
-
// Only the waves the strip doesn't name in full: an empty one, an
|
|
540
|
-
// abbreviated label, or footnotes it dropped. The `#k` numbering stays
|
|
541
|
-
// the wave's own, so the legend still reads against the bands.
|
|
542
|
-
const unnamed = waves.filter((w) => w.empty ||
|
|
543
|
-
w.strip.labelKind !== 'title' ||
|
|
544
|
-
(w.footnoteIndicators.length > 0 && !w.strip.footnotesShown));
|
|
545
|
-
const names = unnamed.map((w) => {
|
|
546
|
-
let name = `#${w.index + 1} ${w.title}`;
|
|
547
|
-
if (w.footnoteIndicators.length > 0 && !w.strip.footnotesShown) {
|
|
548
|
-
name += ` ${w.footnoteIndicators.map(superscript).join(',')}`;
|
|
549
|
-
}
|
|
550
|
-
if (w.empty)
|
|
551
|
-
name += ` (${strings.waveNoItems})`;
|
|
552
|
-
return name;
|
|
553
|
-
});
|
|
554
|
-
const sep = ' · ';
|
|
555
|
-
const first = `${strings.waveLegendPrefix} ${names[0]}`;
|
|
556
|
-
const runs = [
|
|
557
|
-
{ text: first, x: startUnit(textWidth(first)), y: baseline(line) },
|
|
558
|
-
];
|
|
559
|
-
for (const name of names.slice(1)) {
|
|
560
|
-
const run = runs[runs.length - 1];
|
|
561
|
-
if (cursor + textWidth(sep + name) <= maxRight) {
|
|
562
|
-
run.text += sep + name;
|
|
563
|
-
cursor += textWidth(sep + name);
|
|
564
|
-
widest = Math.max(widest, cursor - left);
|
|
565
|
-
}
|
|
566
|
-
else {
|
|
567
|
-
line++;
|
|
568
|
-
cursor = left;
|
|
569
|
-
lineUsed = false;
|
|
570
|
-
runs.push({ text: name, x: startUnit(textWidth(name)), y: baseline(line) });
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
entries.push({
|
|
574
|
-
kind: 'waves',
|
|
575
|
-
text: `${strings.waveLegendPrefix} ${names.join(sep)}`,
|
|
576
|
-
runs,
|
|
577
|
-
});
|
|
578
|
-
}
|
|
579
|
-
return {
|
|
580
|
-
box: {
|
|
459
|
+
const text = strings.waveLegendBackground;
|
|
460
|
+
const textX0 = WAVE_LEGEND_SWATCH_WIDTH_PX + WAVE_LEGEND_SWATCH_GAP_PX;
|
|
461
|
+
const width = textX0 + estimateTextWidth(text, WAVE_STRIP_LABEL_FONT_SIZE_PX);
|
|
462
|
+
const entry = {
|
|
463
|
+
kind: 'background',
|
|
464
|
+
text,
|
|
465
|
+
swatch: {
|
|
581
466
|
x: left,
|
|
582
|
-
y: topY,
|
|
583
|
-
width:
|
|
584
|
-
height:
|
|
467
|
+
y: topY + (WAVE_LEGEND_LINE_PX - WAVE_LEGEND_SWATCH_HEIGHT_PX) / 2,
|
|
468
|
+
width: WAVE_LEGEND_SWATCH_WIDTH_PX,
|
|
469
|
+
height: WAVE_LEGEND_SWATCH_HEIGHT_PX,
|
|
585
470
|
},
|
|
586
|
-
|
|
471
|
+
// The hatched swatch is a default item bar.
|
|
472
|
+
hatch: waveHatchKind(ctx.styleCtx.theme.entities.item.bg),
|
|
473
|
+
runs: [{ text, x: left + textX0, y: topY + WAVE_LEGEND_BASELINE_OFFSET_PX }],
|
|
474
|
+
};
|
|
475
|
+
return {
|
|
476
|
+
box: { x: left, y: topY, width, height: WAVE_LEGEND_LINE_PX },
|
|
477
|
+
entries: [entry],
|
|
587
478
|
};
|
|
588
479
|
}
|
|
589
480
|
function isoDay(d) {
|