@nowline/layout 0.8.6 → 0.10.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.
Files changed (338) hide show
  1. package/dist/axis-columns.d.ts +70 -0
  2. package/dist/axis-columns.d.ts.map +1 -0
  3. package/dist/axis-columns.js +104 -0
  4. package/dist/axis-columns.js.map +1 -0
  5. package/dist/calendar-resolver.d.ts +27 -0
  6. package/dist/calendar-resolver.d.ts.map +1 -0
  7. package/dist/calendar-resolver.js +132 -0
  8. package/dist/calendar-resolver.js.map +1 -0
  9. package/dist/calendar.d.ts +0 -19
  10. package/dist/calendar.d.ts.map +1 -1
  11. package/dist/calendar.js +4 -44
  12. package/dist/calendar.js.map +1 -1
  13. package/dist/canvas-width.d.ts +23 -0
  14. package/dist/canvas-width.d.ts.map +1 -0
  15. package/dist/canvas-width.js +26 -0
  16. package/dist/canvas-width.js.map +1 -0
  17. package/dist/capacity.d.ts +28 -0
  18. package/dist/capacity.d.ts.map +1 -1
  19. package/dist/capacity.js +64 -29
  20. package/dist/capacity.js.map +1 -1
  21. package/dist/chart-translation.d.ts +22 -0
  22. package/dist/chart-translation.d.ts.map +1 -0
  23. package/dist/chart-translation.js +83 -0
  24. package/dist/chart-translation.js.map +1 -0
  25. package/dist/container-header-geometry.d.ts +64 -0
  26. package/dist/container-header-geometry.d.ts.map +1 -0
  27. package/dist/container-header-geometry.js +89 -0
  28. package/dist/container-header-geometry.js.map +1 -0
  29. package/dist/dsl-utils.d.ts +3 -4
  30. package/dist/dsl-utils.d.ts.map +1 -1
  31. package/dist/dsl-utils.js +8 -25
  32. package/dist/dsl-utils.js.map +1 -1
  33. package/dist/edge-routing.d.ts +69 -78
  34. package/dist/edge-routing.d.ts.map +1 -1
  35. package/dist/edge-routing.js +271 -401
  36. package/dist/edge-routing.js.map +1 -1
  37. package/dist/frame-tab-geometry.d.ts +24 -14
  38. package/dist/frame-tab-geometry.d.ts.map +1 -1
  39. package/dist/frame-tab-geometry.js +69 -23
  40. package/dist/frame-tab-geometry.js.map +1 -1
  41. package/dist/header-card-geometry.d.ts +12 -0
  42. package/dist/header-card-geometry.d.ts.map +1 -1
  43. package/dist/header-card-geometry.js +14 -2
  44. package/dist/header-card-geometry.js.map +1 -1
  45. package/dist/header-logo.d.ts +28 -0
  46. package/dist/header-logo.d.ts.map +1 -0
  47. package/dist/header-logo.js +51 -0
  48. package/dist/header-logo.js.map +1 -0
  49. package/dist/i18n.d.ts +11 -0
  50. package/dist/i18n.d.ts.map +1 -1
  51. package/dist/i18n.js +11 -1
  52. package/dist/i18n.js.map +1 -1
  53. package/dist/index.d.ts +20 -8
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +17 -7
  56. package/dist/index.js.map +1 -1
  57. package/dist/inline-date-pin-geometry.d.ts +19 -11
  58. package/dist/inline-date-pin-geometry.d.ts.map +1 -1
  59. package/dist/inline-date-pin-geometry.js +45 -46
  60. package/dist/inline-date-pin-geometry.js.map +1 -1
  61. package/dist/item-bar-geometry.d.ts +192 -4
  62. package/dist/item-bar-geometry.d.ts.map +1 -1
  63. package/dist/item-bar-geometry.js +258 -5
  64. package/dist/item-bar-geometry.js.map +1 -1
  65. package/dist/item-port-geometry.d.ts +13 -0
  66. package/dist/item-port-geometry.d.ts.map +1 -0
  67. package/dist/item-port-geometry.js +63 -0
  68. package/dist/item-port-geometry.js.map +1 -0
  69. package/dist/layout-context.d.ts +115 -51
  70. package/dist/layout-context.d.ts.map +1 -1
  71. package/dist/layout-context.js +96 -5
  72. package/dist/layout-context.js.map +1 -1
  73. package/dist/layout-insights.d.ts.map +1 -1
  74. package/dist/layout-insights.js +73 -1
  75. package/dist/layout-insights.js.map +1 -1
  76. package/dist/layout.d.ts +35 -0
  77. package/dist/layout.d.ts.map +1 -1
  78. package/dist/layout.js +18 -1315
  79. package/dist/layout.js.map +1 -1
  80. package/dist/nodes/anchor-node.d.ts.map +1 -1
  81. package/dist/nodes/anchor-node.js +11 -4
  82. package/dist/nodes/anchor-node.js.map +1 -1
  83. package/dist/nodes/content-extent.d.ts +24 -0
  84. package/dist/nodes/content-extent.d.ts.map +1 -0
  85. package/dist/nodes/content-extent.js +100 -0
  86. package/dist/nodes/content-extent.js.map +1 -0
  87. package/dist/nodes/dependency-edges.d.ts +6 -0
  88. package/dist/nodes/dependency-edges.d.ts.map +1 -0
  89. package/dist/nodes/dependency-edges.js +148 -0
  90. package/dist/nodes/dependency-edges.js.map +1 -0
  91. package/dist/nodes/footnote-node.d.ts +24 -3
  92. package/dist/nodes/footnote-node.d.ts.map +1 -1
  93. package/dist/nodes/footnote-node.js +129 -25
  94. package/dist/nodes/footnote-node.js.map +1 -1
  95. package/dist/nodes/group-node.d.ts +10 -21
  96. package/dist/nodes/group-node.d.ts.map +1 -1
  97. package/dist/nodes/group-node.js +79 -152
  98. package/dist/nodes/group-node.js.map +1 -1
  99. package/dist/nodes/header-node.d.ts +56 -0
  100. package/dist/nodes/header-node.d.ts.map +1 -0
  101. package/dist/nodes/header-node.js +163 -0
  102. package/dist/nodes/header-node.js.map +1 -0
  103. package/dist/nodes/include-node.d.ts +22 -12
  104. package/dist/nodes/include-node.d.ts.map +1 -1
  105. package/dist/nodes/include-node.js +95 -62
  106. package/dist/nodes/include-node.js.map +1 -1
  107. package/dist/nodes/item-measure.d.ts +135 -0
  108. package/dist/nodes/item-measure.d.ts.map +1 -0
  109. package/dist/nodes/item-measure.js +514 -0
  110. package/dist/nodes/item-measure.js.map +1 -0
  111. package/dist/nodes/item-node.d.ts +162 -9
  112. package/dist/nodes/item-node.d.ts.map +1 -1
  113. package/dist/nodes/item-node.js +256 -69
  114. package/dist/nodes/item-node.js.map +1 -1
  115. package/dist/nodes/marker-band.d.ts +118 -0
  116. package/dist/nodes/marker-band.d.ts.map +1 -0
  117. package/dist/nodes/marker-band.js +303 -0
  118. package/dist/nodes/marker-band.js.map +1 -0
  119. package/dist/nodes/marker-geometry.js +1 -1
  120. package/dist/nodes/marker-geometry.js.map +1 -1
  121. package/dist/nodes/milestone-node.d.ts +112 -15
  122. package/dist/nodes/milestone-node.d.ts.map +1 -1
  123. package/dist/nodes/milestone-node.js +246 -95
  124. package/dist/nodes/milestone-node.js.map +1 -1
  125. package/dist/nodes/nowline-node.d.ts +8 -0
  126. package/dist/nodes/nowline-node.d.ts.map +1 -0
  127. package/dist/nodes/nowline-node.js +74 -0
  128. package/dist/nodes/nowline-node.js.map +1 -0
  129. package/dist/nodes/parallel-node.d.ts +7 -12
  130. package/dist/nodes/parallel-node.d.ts.map +1 -1
  131. package/dist/nodes/parallel-node.js +66 -30
  132. package/dist/nodes/parallel-node.js.map +1 -1
  133. package/dist/nodes/region-markers.d.ts +41 -0
  134. package/dist/nodes/region-markers.d.ts.map +1 -0
  135. package/dist/nodes/region-markers.js +130 -0
  136. package/dist/nodes/region-markers.js.map +1 -0
  137. package/dist/nodes/roadmap-node.d.ts +9 -72
  138. package/dist/nodes/roadmap-node.d.ts.map +1 -1
  139. package/dist/nodes/roadmap-node.js +38 -788
  140. package/dist/nodes/roadmap-node.js.map +1 -1
  141. package/dist/nodes/row-track.d.ts +33 -0
  142. package/dist/nodes/row-track.d.ts.map +1 -0
  143. package/dist/nodes/row-track.js +170 -0
  144. package/dist/nodes/row-track.js.map +1 -0
  145. package/dist/nodes/sequence-item.d.ts +25 -0
  146. package/dist/nodes/sequence-item.d.ts.map +1 -0
  147. package/dist/nodes/sequence-item.js +396 -0
  148. package/dist/nodes/sequence-item.js.map +1 -0
  149. package/dist/nodes/sequence-one.d.ts +5 -0
  150. package/dist/nodes/sequence-one.d.ts.map +1 -0
  151. package/dist/nodes/sequence-one.js +26 -0
  152. package/dist/nodes/sequence-one.js.map +1 -0
  153. package/dist/nodes/swimlane-node.d.ts +5 -17
  154. package/dist/nodes/swimlane-node.d.ts.map +1 -1
  155. package/dist/nodes/swimlane-node.js +62 -145
  156. package/dist/nodes/swimlane-node.js.map +1 -1
  157. package/dist/nodes/wave-node.d.ts +52 -0
  158. package/dist/nodes/wave-node.d.ts.map +1 -0
  159. package/dist/nodes/wave-node.js +483 -0
  160. package/dist/nodes/wave-node.js.map +1 -0
  161. package/dist/non-working-display.d.ts +14 -0
  162. package/dist/non-working-display.d.ts.map +1 -0
  163. package/dist/non-working-display.js +28 -0
  164. package/dist/non-working-display.js.map +1 -0
  165. package/dist/phases/date-window.d.ts +48 -0
  166. package/dist/phases/date-window.d.ts.map +1 -0
  167. package/dist/phases/date-window.js +130 -0
  168. package/dist/phases/date-window.js.map +1 -0
  169. package/dist/phases/finalize.d.ts +198 -0
  170. package/dist/phases/finalize.d.ts.map +1 -0
  171. package/dist/phases/finalize.js +1058 -0
  172. package/dist/phases/finalize.js.map +1 -0
  173. package/dist/phases/measure.d.ts +77 -0
  174. package/dist/phases/measure.d.ts.map +1 -0
  175. package/dist/phases/measure.js +222 -0
  176. package/dist/phases/measure.js.map +1 -0
  177. package/dist/phases/place.d.ts +28 -0
  178. package/dist/phases/place.d.ts.map +1 -0
  179. package/dist/phases/place.js +225 -0
  180. package/dist/phases/place.js.map +1 -0
  181. package/dist/renderable.d.ts.map +1 -1
  182. package/dist/renderable.js +23 -3
  183. package/dist/renderable.js.map +1 -1
  184. package/dist/resolve-today.d.ts +11 -1
  185. package/dist/resolve-today.d.ts.map +1 -1
  186. package/dist/resolve-today.js +26 -12
  187. package/dist/resolve-today.js.map +1 -1
  188. package/dist/row-packer.d.ts +42 -16
  189. package/dist/row-packer.d.ts.map +1 -1
  190. package/dist/row-packer.js +51 -78
  191. package/dist/row-packer.js.map +1 -1
  192. package/dist/schedule.d.ts +58 -1
  193. package/dist/schedule.d.ts.map +1 -1
  194. package/dist/schedule.js +280 -106
  195. package/dist/schedule.js.map +1 -1
  196. package/dist/start-rules.d.ts +27 -0
  197. package/dist/start-rules.d.ts.map +1 -0
  198. package/dist/start-rules.js +91 -0
  199. package/dist/start-rules.js.map +1 -0
  200. package/dist/start-terms.d.ts +23 -0
  201. package/dist/start-terms.d.ts.map +1 -0
  202. package/dist/start-terms.js +27 -0
  203. package/dist/start-terms.js.map +1 -0
  204. package/dist/status-dot.d.ts +46 -0
  205. package/dist/status-dot.d.ts.map +1 -0
  206. package/dist/status-dot.js +78 -0
  207. package/dist/status-dot.js.map +1 -0
  208. package/dist/style-resolution.d.ts.map +1 -1
  209. package/dist/style-resolution.js +23 -43
  210. package/dist/style-resolution.js.map +1 -1
  211. package/dist/text-measure.d.ts +28 -0
  212. package/dist/text-measure.d.ts.map +1 -0
  213. package/dist/text-measure.js +70 -0
  214. package/dist/text-measure.js.map +1 -0
  215. package/dist/themes/contrast.d.ts +4 -0
  216. package/dist/themes/contrast.d.ts.map +1 -0
  217. package/dist/themes/contrast.js +32 -0
  218. package/dist/themes/contrast.js.map +1 -0
  219. package/dist/themes/dark.d.ts.map +1 -1
  220. package/dist/themes/dark.js +28 -1
  221. package/dist/themes/dark.js.map +1 -1
  222. package/dist/themes/grayscale.d.ts.map +1 -1
  223. package/dist/themes/grayscale.js +28 -1
  224. package/dist/themes/grayscale.js.map +1 -1
  225. package/dist/themes/index.d.ts +4 -11
  226. package/dist/themes/index.d.ts.map +1 -1
  227. package/dist/themes/index.js +6 -4
  228. package/dist/themes/index.js.map +1 -1
  229. package/dist/themes/light.d.ts.map +1 -1
  230. package/dist/themes/light.js +28 -1
  231. package/dist/themes/light.js.map +1 -1
  232. package/dist/themes/shape.d.ts +31 -0
  233. package/dist/themes/shape.d.ts.map +1 -1
  234. package/dist/themes/shared.d.ts +44 -50
  235. package/dist/themes/shared.d.ts.map +1 -1
  236. package/dist/themes/shared.js +79 -83
  237. package/dist/themes/shared.js.map +1 -1
  238. package/dist/time-scale.d.ts +42 -6
  239. package/dist/time-scale.d.ts.map +1 -1
  240. package/dist/time-scale.js +109 -17
  241. package/dist/time-scale.js.map +1 -1
  242. package/dist/types.d.ts +528 -11
  243. package/dist/types.d.ts.map +1 -1
  244. package/dist/view-preset.d.ts +61 -6
  245. package/dist/view-preset.d.ts.map +1 -1
  246. package/dist/view-preset.js +439 -24
  247. package/dist/view-preset.js.map +1 -1
  248. package/dist/wave-barrier.d.ts +107 -0
  249. package/dist/wave-barrier.d.ts.map +1 -0
  250. package/dist/wave-barrier.js +174 -0
  251. package/dist/wave-barrier.js.map +1 -0
  252. package/dist/wave-hatch.d.ts +4 -0
  253. package/dist/wave-hatch.d.ts.map +1 -0
  254. package/dist/wave-hatch.js +21 -0
  255. package/dist/wave-hatch.js.map +1 -0
  256. package/dist/wave-layout.d.ts +99 -0
  257. package/dist/wave-layout.d.ts.map +1 -0
  258. package/dist/wave-layout.js +130 -0
  259. package/dist/wave-layout.js.map +1 -0
  260. package/dist/working-calendar.d.ts +128 -4
  261. package/dist/working-calendar.d.ts.map +1 -1
  262. package/dist/working-calendar.js +725 -51
  263. package/dist/working-calendar.js.map +1 -1
  264. package/dist/working-span.d.ts +11 -0
  265. package/dist/working-span.d.ts.map +1 -0
  266. package/dist/working-span.js +18 -0
  267. package/dist/working-span.js.map +1 -0
  268. package/package.json +4 -4
  269. package/src/axis-columns.ts +140 -0
  270. package/src/calendar-resolver.ts +161 -0
  271. package/src/calendar.ts +4 -45
  272. package/src/canvas-width.ts +36 -0
  273. package/src/capacity.ts +71 -30
  274. package/src/chart-translation.ts +88 -0
  275. package/src/container-header-geometry.ts +116 -0
  276. package/src/dsl-utils.ts +8 -26
  277. package/src/edge-routing.ts +347 -491
  278. package/src/frame-tab-geometry.ts +78 -25
  279. package/src/header-card-geometry.ts +17 -2
  280. package/src/header-logo.ts +67 -0
  281. package/src/i18n.ts +22 -1
  282. package/src/index.ts +97 -12
  283. package/src/inline-date-pin-geometry.ts +55 -58
  284. package/src/item-bar-geometry.ts +341 -5
  285. package/src/item-port-geometry.ts +69 -0
  286. package/src/layout-context.ts +210 -72
  287. package/src/layout-insights.ts +109 -2
  288. package/src/layout.ts +57 -1530
  289. package/src/nodes/anchor-node.ts +11 -4
  290. package/src/nodes/content-extent.ts +107 -0
  291. package/src/nodes/dependency-edges.ts +171 -0
  292. package/src/nodes/footnote-node.ts +171 -31
  293. package/src/nodes/group-node.ts +92 -214
  294. package/src/nodes/header-node.ts +255 -0
  295. package/src/nodes/include-node.ts +124 -110
  296. package/src/nodes/item-measure.ts +723 -0
  297. package/src/nodes/item-node.ts +358 -80
  298. package/src/nodes/marker-band.ts +406 -0
  299. package/src/nodes/marker-geometry.ts +1 -1
  300. package/src/nodes/milestone-node.ts +321 -136
  301. package/src/nodes/nowline-node.ts +87 -0
  302. package/src/nodes/parallel-node.ts +69 -38
  303. package/src/nodes/region-markers.ts +194 -0
  304. package/src/nodes/roadmap-node.ts +46 -950
  305. package/src/nodes/row-track.ts +217 -0
  306. package/src/nodes/sequence-item.ts +433 -0
  307. package/src/nodes/sequence-one.ts +40 -0
  308. package/src/nodes/swimlane-node.ts +66 -205
  309. package/src/nodes/wave-node.ts +609 -0
  310. package/src/non-working-display.ts +32 -0
  311. package/src/phases/date-window.ts +191 -0
  312. package/src/phases/finalize.ts +1303 -0
  313. package/src/phases/measure.ts +329 -0
  314. package/src/phases/place.ts +318 -0
  315. package/src/renderable.ts +23 -3
  316. package/src/resolve-today.ts +28 -25
  317. package/src/row-packer.ts +85 -84
  318. package/src/schedule.ts +362 -114
  319. package/src/start-rules.ts +113 -0
  320. package/src/start-terms.ts +38 -0
  321. package/src/status-dot.ts +81 -0
  322. package/src/style-resolution.ts +27 -57
  323. package/src/text-measure.ts +71 -0
  324. package/src/themes/contrast.ts +34 -0
  325. package/src/themes/dark.ts +28 -1
  326. package/src/themes/grayscale.ts +28 -1
  327. package/src/themes/index.ts +10 -7
  328. package/src/themes/light.ts +28 -1
  329. package/src/themes/shape.ts +38 -0
  330. package/src/themes/shared.ts +85 -93
  331. package/src/time-scale.ts +117 -19
  332. package/src/types.ts +529 -20
  333. package/src/view-preset.ts +520 -27
  334. package/src/wave-barrier.ts +242 -0
  335. package/src/wave-hatch.ts +25 -0
  336. package/src/wave-layout.ts +203 -0
  337. package/src/working-calendar.ts +875 -57
  338. package/src/working-span.ts +19 -0
@@ -1 +1 @@
1
- {"version":3,"file":"view-preset.js","sourceRoot":"","sources":["../src/view-preset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view-preset.js","sourceRoot":"","sources":["../src/view-preset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import type { GroupBlock, ItemDeclaration, ParallelBlock, WavePlan } from '@nowline/core';
2
+ import type { WorkingCalendar } from './working-calendar.js';
3
+ /** A node the walkers floor: a leaf item or a container. */
4
+ export type WaveNode = ItemDeclaration | GroupBlock | ParallelBlock;
5
+ /** What one pass reports back to the driver. */
6
+ export interface WavePassResult {
7
+ /** Latest member end per wave (0-based); `-Infinity` when the wave has no member. */
8
+ memberEnd: readonly number[];
9
+ }
10
+ export interface WaveBarrierResult {
11
+ /** Wave starts `S_k` at index `k - 1`. */
12
+ S: number[];
13
+ /** Wave ends `E_k` at index `k - 1`. */
14
+ E: number[];
15
+ /** Passes the solve ran (at most `n + 1`). */
16
+ passes: number;
17
+ /** True when the solve hit the `n + 1` cap without settling (invalid input). */
18
+ capped: boolean;
19
+ }
20
+ /** A warm start for `solveWaveBarriers`: estimates of `S_k` / `E_k` from below (0-based, null: none). */
21
+ export interface WaveBarrierSeed {
22
+ S: ReadonlyArray<number | null>;
23
+ E: ReadonlyArray<number | null>;
24
+ }
25
+ /**
26
+ * Solve the barrier recurrence (§8.2). `floors[k - 1]` is `A_k` in the
27
+ * caller's units, or null for no floor; `origin` is the axis origin (0 days,
28
+ * or the timeline's origin x).
29
+ *
30
+ * `runPass` must be pure in `(S, E)`: the caller resets its entity maps every
31
+ * pass. On convergence the last `runPass` call ran with the returned `S`/`E`,
32
+ * so the caller can keep that pass's placements. When the cap is hit, the
33
+ * driver calls `runPass` once more with the returned `S`/`E` for the same
34
+ * reason; that extra call is not counted in `passes`.
35
+ *
36
+ * `tolerance` is how far a floor must pass the prior edge (`E_{k-1}`, or
37
+ * the origin for `S_1`) to set `S_k`; a floor within it is a tie and the
38
+ * prior edge wins. The day engines use 0 (exact `max`). Engine A passes its
39
+ * sub-pixel edge tolerance: its floors are `origin + days * ppd` while
40
+ * `E_{k-1}` is a sum of item widths, so a same-day floor can exceed the
41
+ * prior end by an ulp and would otherwise open a phantom gap.
42
+ *
43
+ * `seed` warm-starts the solve (specs/scheduler-unification.md §5, F4):
44
+ * `seed.S[k - 1]` and `seed.E[k - 1]` are an estimate of `S_k` and `E_k`
45
+ * from below (engine A passes engine C's, projected), or null for none. The
46
+ * first pass starts each `S_k` (k > 1) and `E_k` at no less than its seed
47
+ * instead of at the floor chain alone, so the passes settle sooner on the
48
+ * same fixpoint: Kleene iteration from any lower bound of the least
49
+ * fixpoint reaches it, and for valid input (WV10) the fixpoint is unique
50
+ * (`S_1` is fixed, and each `E_k` then follows from `S_1..S_k` and
51
+ * `E_1..E_{k-1}`), so a pass can only confirm the right one. `S_1` is never
52
+ * seeded: the driver keeps the first pass's `S_1` to the end.
53
+ */
54
+ export declare function solveWaveBarriers(n: number, origin: number, floors: ReadonlyArray<number | null>, runPass: (S: readonly number[], E: readonly number[]) => WavePassResult, tolerance?: number, seed?: WaveBarrierSeed): WaveBarrierResult;
55
+ /**
56
+ * Floor offsets `A_k` in working days from `startDate`, from the plan's
57
+ * unclamped declaration dates (§5.1). A floor on a non-working day counts
58
+ * as the next working day. A floor before the start yields a negative
59
+ * offset; `S_1 = max(0, A_1)` absorbs it.
60
+ */
61
+ export declare function waveFloorDays(plan: WavePlan, startDate: Date, calendar: WorkingCalendar): Array<number | null>;
62
+ /**
63
+ * Per-pass wave state, in the caller's units (days for engine C, px for engine
64
+ * A): the floor of a node and the member-end accumulator. One instance per pass.
65
+ */
66
+ export declare class WavePass {
67
+ readonly plan: WavePlan;
68
+ readonly S: readonly number[];
69
+ /** Latest member end per wave (0-based); `-Infinity` when the wave has no member. */
70
+ readonly memberEnd: number[];
71
+ /** The member that set `memberEnd` (latest end; ties keep the first placed). */
72
+ readonly binding: Array<ItemDeclaration | undefined>;
73
+ /** Members placed per wave. */
74
+ readonly memberCount: number[];
75
+ constructor(plan: WavePlan, S: readonly number[]);
76
+ /**
77
+ * The barrier floor of `node`: `S[ew]` for an item, and
78
+ * `max(S[ew(C)], S[lw(C)])` for a container (§5.1 start rule). Undefined
79
+ * for background work with no lead wave.
80
+ */
81
+ floor(node: WaveNode): number | undefined;
82
+ /** `max(start, floor(node))`, or `start` unchanged when there is no floor. */
83
+ apply(node: WaveNode, start: number): number;
84
+ /** Record a placed item's end; a no-op for background work. */
85
+ accumulate(item: ItemDeclaration, end: number): void;
86
+ }
87
+ /** One wave's solved span, in the caller's units. */
88
+ export interface WaveSpan {
89
+ id: string;
90
+ /** 1-based declaration order. */
91
+ index: number;
92
+ start: number;
93
+ end: number;
94
+ memberCount: number;
95
+ /** The binding member's id ?? title; omitted when no member sets `E_k > S_k`. */
96
+ heldBy?: string;
97
+ /** The `after:` element that set `S_k`, when it beat `E_{k-1}` (or the origin). */
98
+ floorRef?: string;
99
+ }
100
+ /**
101
+ * Summarise the solved waves from the driver's result and the final pass
102
+ * (the pass that ran with `result.S` / `result.E`). `tolerance` must be
103
+ * the one the solve ran with, so `floorRef` is set exactly when the floor
104
+ * set `S_k`.
105
+ */
106
+ export declare function summarizeWaves(plan: WavePlan, result: WaveBarrierResult, finalPass: WavePass, origin: number, floors: ReadonlyArray<number | null>, tolerance?: number): WaveSpan[];
107
+ //# sourceMappingURL=wave-barrier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-barrier.d.ts","sourceRoot":"","sources":["../src/wave-barrier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ // Wave barriers (specs/waves.md §5.1, §8.2-§8.5).
2
+ //
3
+ // One unit-agnostic driver serves both schedulers: engine A (pixel layout)
4
+ // and engine C (`scheduleRoadmap`, days). Each wraps its lane walk in a
5
+ // `runPass(S, E)` callback that floors starts by the barrier and reports the
6
+ // latest member end per wave; the driver iterates to the least fixpoint.
7
+ //
8
+ // Arrays are **0-based** throughout this module: wave k (1-based, as in
9
+ // `WavePlan` and the spec's `w_1 … w_n`) lives at index `k - 1` of `S`, `E`,
10
+ // `floors` and `memberEnd`.
11
+ import { waveFloorDates } from './start-terms.js';
12
+ /**
13
+ * Solve the barrier recurrence (§8.2). `floors[k - 1]` is `A_k` in the
14
+ * caller's units, or null for no floor; `origin` is the axis origin (0 days,
15
+ * or the timeline's origin x).
16
+ *
17
+ * `runPass` must be pure in `(S, E)`: the caller resets its entity maps every
18
+ * pass. On convergence the last `runPass` call ran with the returned `S`/`E`,
19
+ * so the caller can keep that pass's placements. When the cap is hit, the
20
+ * driver calls `runPass` once more with the returned `S`/`E` for the same
21
+ * reason; that extra call is not counted in `passes`.
22
+ *
23
+ * `tolerance` is how far a floor must pass the prior edge (`E_{k-1}`, or
24
+ * the origin for `S_1`) to set `S_k`; a floor within it is a tie and the
25
+ * prior edge wins. The day engines use 0 (exact `max`). Engine A passes its
26
+ * sub-pixel edge tolerance: its floors are `origin + days * ppd` while
27
+ * `E_{k-1}` is a sum of item widths, so a same-day floor can exceed the
28
+ * prior end by an ulp and would otherwise open a phantom gap.
29
+ *
30
+ * `seed` warm-starts the solve (specs/scheduler-unification.md §5, F4):
31
+ * `seed.S[k - 1]` and `seed.E[k - 1]` are an estimate of `S_k` and `E_k`
32
+ * from below (engine A passes engine C's, projected), or null for none. The
33
+ * first pass starts each `S_k` (k > 1) and `E_k` at no less than its seed
34
+ * instead of at the floor chain alone, so the passes settle sooner on the
35
+ * same fixpoint: Kleene iteration from any lower bound of the least
36
+ * fixpoint reaches it, and for valid input (WV10) the fixpoint is unique
37
+ * (`S_1` is fixed, and each `E_k` then follows from `S_1..S_k` and
38
+ * `E_1..E_{k-1}`), so a pass can only confirm the right one. `S_1` is never
39
+ * seeded: the driver keeps the first pass's `S_1` to the end.
40
+ */
41
+ export function solveWaveBarriers(n, origin, floors, runPass, tolerance = 0, seed) {
42
+ const A = floors.map((f) => f ?? -Infinity);
43
+ let S = [];
44
+ for (let i = 0; i < n; i++) {
45
+ const chained = floorPast(i === 0 ? origin : S[i - 1], A[i], tolerance);
46
+ S.push(i === 0 ? chained : Math.max(chained, seed?.S[i] ?? -Infinity));
47
+ }
48
+ let E = S.map((s, i) => Math.max(s, seed?.E[i] ?? -Infinity));
49
+ for (let pass = 1; pass <= n + 1; pass++) {
50
+ const m = runPass(S, E).memberEnd;
51
+ const S2 = [];
52
+ const E2 = [];
53
+ for (let i = 0; i < n; i++) {
54
+ S2.push(i === 0 ? S[0] : floorPast(E2[i - 1], A[i], tolerance));
55
+ E2.push(Math.max(S2[i], m[i] ?? -Infinity));
56
+ }
57
+ if (sameArray(S, S2) && sameArray(E, E2)) {
58
+ return { S, E, passes: pass, capped: false };
59
+ }
60
+ S = S2;
61
+ E = E2;
62
+ }
63
+ runPass(S, E);
64
+ return { S, E, passes: n + 1, capped: true };
65
+ }
66
+ /** `max(prior, floor)`, except a floor within `tolerance` of `prior` is a tie: `prior`. */
67
+ function floorPast(prior, floor, tolerance) {
68
+ return floor - prior > tolerance ? floor : prior;
69
+ }
70
+ function sameArray(a, b) {
71
+ for (let i = 0; i < a.length; i++) {
72
+ if (a[i] !== b[i])
73
+ return false;
74
+ }
75
+ return true;
76
+ }
77
+ /**
78
+ * Floor offsets `A_k` in working days from `startDate`, from the plan's
79
+ * unclamped declaration dates (§5.1). A floor on a non-working day counts
80
+ * as the next working day. A floor before the start yields a negative
81
+ * offset; `S_1 = max(0, A_1)` absorbs it.
82
+ */
83
+ export function waveFloorDays(plan, startDate, calendar) {
84
+ return waveFloorDates(plan).map((d) => (d ? calendar.workingIndexOf(startDate, d) : null));
85
+ }
86
+ /**
87
+ * Per-pass wave state, in the caller's units (days for engine C, px for engine
88
+ * A): the floor of a node and the member-end accumulator. One instance per pass.
89
+ */
90
+ export class WavePass {
91
+ plan;
92
+ S;
93
+ /** Latest member end per wave (0-based); `-Infinity` when the wave has no member. */
94
+ memberEnd;
95
+ /** The member that set `memberEnd` (latest end; ties keep the first placed). */
96
+ binding;
97
+ /** Members placed per wave. */
98
+ memberCount;
99
+ constructor(plan, S) {
100
+ this.plan = plan;
101
+ this.S = S;
102
+ const n = plan.waves.length;
103
+ this.memberEnd = new Array(n).fill(-Infinity);
104
+ this.binding = new Array(n).fill(undefined);
105
+ this.memberCount = new Array(n).fill(0);
106
+ }
107
+ /**
108
+ * The barrier floor of `node`: `S[ew]` for an item, and
109
+ * `max(S[ew(C)], S[lw(C)])` for a container (§5.1 start rule). Undefined
110
+ * for background work with no lead wave.
111
+ */
112
+ floor(node) {
113
+ const ew = this.plan.waveOf.get(node);
114
+ const lw = node.$type === 'ItemDeclaration' ? undefined : this.plan.leadOf.get(node);
115
+ let f;
116
+ if (ew !== undefined)
117
+ f = this.S[ew - 1];
118
+ if (lw !== undefined)
119
+ f = Math.max(f ?? -Infinity, this.S[lw - 1]);
120
+ return f;
121
+ }
122
+ /** `max(start, floor(node))`, or `start` unchanged when there is no floor. */
123
+ apply(node, start) {
124
+ const f = this.floor(node);
125
+ return f === undefined ? start : Math.max(start, f);
126
+ }
127
+ /** Record a placed item's end; a no-op for background work. */
128
+ accumulate(item, end) {
129
+ const k = this.plan.memberWave(item);
130
+ if (k === undefined)
131
+ return;
132
+ this.memberCount[k - 1]++;
133
+ if (end > this.memberEnd[k - 1]) {
134
+ this.memberEnd[k - 1] = end;
135
+ this.binding[k - 1] = item;
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Summarise the solved waves from the driver's result and the final pass
141
+ * (the pass that ran with `result.S` / `result.E`). `tolerance` must be
142
+ * the one the solve ran with, so `floorRef` is set exactly when the floor
143
+ * set `S_k`.
144
+ */
145
+ export function summarizeWaves(plan, result, finalPass, origin, floors, tolerance = 0) {
146
+ return plan.waves.map((w, i) => {
147
+ const span = {
148
+ id: w.name,
149
+ index: i + 1,
150
+ start: result.S[i],
151
+ end: result.E[i],
152
+ memberCount: finalPass.memberCount[i],
153
+ };
154
+ const binding = finalPass.binding[i];
155
+ if (binding !== undefined &&
156
+ finalPass.memberEnd[i] === result.E[i] &&
157
+ result.E[i] > result.S[i]) {
158
+ const label = binding.name ?? binding.title;
159
+ if (label !== undefined)
160
+ span.heldBy = label;
161
+ }
162
+ const floor = floors[i];
163
+ const floorRef = plan.floors[i]?.ref;
164
+ const prior = i === 0 ? origin : result.E[i - 1];
165
+ if (floor !== null &&
166
+ floor !== undefined &&
167
+ floorRef !== undefined &&
168
+ floor - prior > tolerance) {
169
+ span.floorRef = floorRef;
170
+ }
171
+ return span;
172
+ });
173
+ }
174
+ //# sourceMappingURL=wave-barrier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-barrier.js","sourceRoot":"","sources":["../src/wave-barrier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ResolvedStyle, WaveHatchKind } from './types.js';
2
+ /** The hatch kind for a bar (or legend swatch) whose resolved `bg` is `bg`. */
3
+ export declare function waveHatchKind(bg: ResolvedStyle['bg']): WaveHatchKind;
4
+ //# sourceMappingURL=wave-hatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-hatch.d.ts","sourceRoot":"","sources":["../src/wave-hatch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAe/D,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAEpE"}
@@ -0,0 +1,21 @@
1
+ // Wave hatch kind: which of the theme's two hatch strokes marks background
2
+ // work on a bar (specs/waves.md §9.3), picked by the bar fill's luminance.
3
+ // Moved from the SVG renderer (R5) so each background item and the legend's
4
+ // hatch swatch carry their kind and the renderer only draws the pattern.
5
+ import { fillLuminance } from './status-dot.js';
6
+ /**
7
+ * Bar-fill luminance at or above which background work gets the dark hatch
8
+ * (`wave.hatch`); below it, the light one (`wave.hatchOnDark`). The same
9
+ * crossover the status dot picks its palette by (`pickStatusDotPalette`), so
10
+ * the hatch and the dot agree on which bars read as dark.
11
+ */
12
+ const WAVE_HATCH_LIGHT_FILL_MIN_LUMINANCE = 0.24;
13
+ /** The painted fill of a bar, as the renderer's `rectFrame` paints it. */
14
+ function barFill(bg) {
15
+ return bg === 'none' ? 'transparent' : bg;
16
+ }
17
+ /** The hatch kind for a bar (or legend swatch) whose resolved `bg` is `bg`. */
18
+ export function waveHatchKind(bg) {
19
+ return fillLuminance(barFill(bg)) >= WAVE_HATCH_LIGHT_FILL_MIN_LUMINANCE ? 'dark' : 'light';
20
+ }
21
+ //# sourceMappingURL=wave-hatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-hatch.js","sourceRoot":"","sources":["../src/wave-hatch.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,yEAAyE;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAEjD,0EAA0E;AAC1E,SAAS,OAAO,CAAC,EAAuB;IACpC,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,EAAuB;IACjD,OAAO,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,mCAAmC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAChG,CAAC"}
@@ -0,0 +1,99 @@
1
+ import type { ItemDeclaration, WavePlan } from '@nowline/core';
2
+ import type { LayoutContext } from './layout-context.js';
3
+ import type { TimeScale } from './time-scale.js';
4
+ import type { PositionedItem } from './types.js';
5
+ import { type WaveBarrierResult, type WaveNode, WavePass } from './wave-barrier.js';
6
+ /**
7
+ * Sub-pixel tolerance for wave edges: a milestone whose center is closer
8
+ * than this to a boundary sits on it (specs/waves.md §9.2), a wave must
9
+ * move past a date by at least this much to count as an overrun, and an
10
+ * item must start this close to its `after:` date for that date to have
11
+ * set its start (NL.I1008). Pixel ends are float sums, so exact
12
+ * comparisons would flip on rounding noise.
13
+ */
14
+ export declare const WAVE_EDGE_TOLERANCE_PX = 0.5;
15
+ /** Engine A's barrier state, shared by the main lanes and the regions. */
16
+ export interface WaveLayoutState {
17
+ readonly plan: WavePlan;
18
+ /** Wave ids in declaration order (wave k at index `k - 1`). */
19
+ readonly ids: readonly string[];
20
+ /** The axis origin in px (`S_1 >= origin`). */
21
+ readonly origin: number;
22
+ /**
23
+ * `A_k` in px from the unclamped `scale.forward` of each floor date
24
+ * (never `forwardWithinDomain` or the edge maps), or null: no floor.
25
+ */
26
+ readonly floors: ReadonlyArray<number | null>;
27
+ /** `S_k` / `E_k` in px (0-based) that the current pass floors with and seeds. */
28
+ S: readonly number[];
29
+ E: readonly number[];
30
+ /** The current pass: floors from `S`, plus the member-end accumulator. */
31
+ pass: WavePass;
32
+ /**
33
+ * Set once the driver settles: `S`/`E` are the solved values, `pass` is
34
+ * the pass that ran with them, and later placements (the slack rerun,
35
+ * the final region placement) floor without accumulating. The spans
36
+ * then come from `summarizeWaves(plan, solve, pass, origin, floors)`.
37
+ */
38
+ frozen: boolean;
39
+ /** The driver's result, set with `frozen`. */
40
+ solve?: WaveBarrierResult;
41
+ /**
42
+ * The localized hover line of a background item
43
+ * (`PositionedItem.waveTooltip`), set where the item is placed: the
44
+ * renderer has no locale table (specs/waves.md §9.3).
45
+ */
46
+ readonly backgroundTooltip: string;
47
+ /**
48
+ * Some wave has a member (`hasVisibleWaves`). When none does, the
49
+ * barrier still runs but nothing is drawn: no item is background work.
50
+ */
51
+ readonly visible: boolean;
52
+ }
53
+ /**
54
+ * Fresh state for a roadmap with waves; `scale` maps the floor dates,
55
+ * `backgroundTooltip` is the locale's background-item line, and `visible`
56
+ * says whether any wave has a member.
57
+ */
58
+ export declare function createWaveLayoutState(plan: WavePlan, scale: TimeScale, origin: number, backgroundTooltip: string, visible: boolean): WaveLayoutState;
59
+ /** Start a barrier pass with the driver's `S`/`E`. */
60
+ export declare function beginWavePass(state: WaveLayoutState, S: readonly number[], E: readonly number[]): void;
61
+ /**
62
+ * Freeze the state on the driver's result. The last pass the driver ran
63
+ * used exactly `result.S` / `result.E` (on convergence and when capped),
64
+ * so `state.pass` already floors with the solved starts.
65
+ */
66
+ export declare function freezeWaves(state: WaveLayoutState, result: WaveBarrierResult): void;
67
+ /**
68
+ * Seed the wave edges into a pair of entity-edge maps (specs/waves.md
69
+ * §8.4): `entityRightEdges[w_k] = E_k`, `entityLeftEdges[w_k] = S_k`, so
70
+ * `after:<wave>`, `before:<wave>` and a floating `milestone after:<wave>`
71
+ * resolve through the existing lookups. Wave ids get no midpoint, so a
72
+ * wave reference draws no dependency arrow.
73
+ */
74
+ export declare function seedWaveEdges(state: WaveLayoutState, left: Map<string, number>, right: Map<string, number>): void;
75
+ /**
76
+ * The barrier floor applied to a start: `max(x, S[ew(node)], S[lw(node)])`
77
+ * (specs/waves.md §5.1 start rule). `x` unchanged without waves and for
78
+ * background work with no lead wave.
79
+ */
80
+ export declare function waveFloorX(node: WaveNode, x: number, ctx: LayoutContext): number;
81
+ /** Record a placed item's logical end (members only; never while frozen). */
82
+ export declare function accumulateWaveMember(node: ItemDeclaration, logicalEnd: number, ctx: LayoutContext): void;
83
+ /** `PositionedItem.waveRole`, or undefined when the roadmap draws no waves. */
84
+ export declare function waveRoleOf(node: ItemDeclaration, ctx: LayoutContext): PositionedItem['waveRole'];
85
+ /** True when `x` sits on a wave boundary: any `S_k` or `E_k` except the origin. */
86
+ export declare function isOnWaveBoundary(state: WaveLayoutState, x: number): boolean;
87
+ /**
88
+ * The working day whose start is nearest `x` on the timeline: a point,
89
+ * such as a start (UTC midnight). Extent growth never moves the origin or
90
+ * the pixels-per-day, so this is stable across it.
91
+ */
92
+ export declare function dateAtX(x: number, ctx: LayoutContext): Date;
93
+ /**
94
+ * The exclusive end date of the span [startX, endX] on the timeline
95
+ * (`spanEndDate` over the nearest whole working days): a Mon–Fri span
96
+ * ends on Saturday.
97
+ */
98
+ export declare function spanEndDateAtX(startX: number, endX: number, ctx: LayoutContext): Date;
99
+ //# sourceMappingURL=wave-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-layout.d.ts","sourceRoot":"","sources":["../src/wave-layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ // Engine A (pixel layout) wave state: specs/waves.md §8.4.
2
+ //
3
+ // The place phase (`phases/place.ts`) runs its lane loop (plus a region pass) inside the
4
+ // unit-agnostic barrier driver (`solveWaveBarriers`). Every pass floors
5
+ // starts with the pass's `S` (in px) and accumulates member ends; this
6
+ // module holds that state and the small helpers the sequencers and
7
+ // container nodes call. Without waves `LayoutContext.waves` is undefined
8
+ // and every helper here is a no-op, so wave-free output is unchanged.
9
+ import { addDays } from './calendar.js';
10
+ import { waveFloorDates } from './start-terms.js';
11
+ import { WavePass } from './wave-barrier.js';
12
+ import { spanEndDate } from './working-calendar.js';
13
+ /**
14
+ * Sub-pixel tolerance for wave edges: a milestone whose center is closer
15
+ * than this to a boundary sits on it (specs/waves.md §9.2), a wave must
16
+ * move past a date by at least this much to count as an overrun, and an
17
+ * item must start this close to its `after:` date for that date to have
18
+ * set its start (NL.I1008). Pixel ends are float sums, so exact
19
+ * comparisons would flip on rounding noise.
20
+ */
21
+ export const WAVE_EDGE_TOLERANCE_PX = 0.5;
22
+ /**
23
+ * Fresh state for a roadmap with waves; `scale` maps the floor dates,
24
+ * `backgroundTooltip` is the locale's background-item line, and `visible`
25
+ * says whether any wave has a member.
26
+ */
27
+ export function createWaveLayoutState(plan, scale, origin, backgroundTooltip, visible) {
28
+ const S = plan.waves.map(() => origin);
29
+ return {
30
+ plan,
31
+ ids: plan.waves.map((w) => w.name),
32
+ origin,
33
+ floors: waveFloorDates(plan).map((d) => (d ? scale.forward(d) : null)),
34
+ S,
35
+ E: S,
36
+ pass: new WavePass(plan, S),
37
+ frozen: false,
38
+ backgroundTooltip,
39
+ visible,
40
+ };
41
+ }
42
+ /** Start a barrier pass with the driver's `S`/`E`. */
43
+ export function beginWavePass(state, S, E) {
44
+ state.S = S;
45
+ state.E = E;
46
+ state.pass = new WavePass(state.plan, S);
47
+ }
48
+ /**
49
+ * Freeze the state on the driver's result. The last pass the driver ran
50
+ * used exactly `result.S` / `result.E` (on convergence and when capped),
51
+ * so `state.pass` already floors with the solved starts.
52
+ */
53
+ export function freezeWaves(state, result) {
54
+ state.S = result.S;
55
+ state.E = result.E;
56
+ state.frozen = true;
57
+ state.solve = result;
58
+ }
59
+ /**
60
+ * Seed the wave edges into a pair of entity-edge maps (specs/waves.md
61
+ * §8.4): `entityRightEdges[w_k] = E_k`, `entityLeftEdges[w_k] = S_k`, so
62
+ * `after:<wave>`, `before:<wave>` and a floating `milestone after:<wave>`
63
+ * resolve through the existing lookups. Wave ids get no midpoint, so a
64
+ * wave reference draws no dependency arrow.
65
+ */
66
+ export function seedWaveEdges(state, left, right) {
67
+ state.ids.forEach((id, i) => {
68
+ left.set(id, state.S[i]);
69
+ right.set(id, state.E[i]);
70
+ });
71
+ }
72
+ /**
73
+ * The barrier floor applied to a start: `max(x, S[ew(node)], S[lw(node)])`
74
+ * (specs/waves.md §5.1 start rule). `x` unchanged without waves and for
75
+ * background work with no lead wave.
76
+ */
77
+ export function waveFloorX(node, x, ctx) {
78
+ return ctx.waves ? ctx.waves.pass.apply(node, x) : x;
79
+ }
80
+ /** Record a placed item's logical end (members only; never while frozen). */
81
+ export function accumulateWaveMember(node, logicalEnd, ctx) {
82
+ if (ctx.waves && !ctx.waves.frozen)
83
+ ctx.waves.pass.accumulate(node, logicalEnd);
84
+ }
85
+ /** `PositionedItem.waveRole`, or undefined when the roadmap draws no waves. */
86
+ export function waveRoleOf(node, ctx) {
87
+ if (!ctx.waves?.visible)
88
+ return undefined;
89
+ return ctx.waves.plan.memberWave(node) !== undefined ? 'member' : 'background';
90
+ }
91
+ /** True when `x` sits on a wave boundary: any `S_k` or `E_k` except the origin. */
92
+ export function isOnWaveBoundary(state, x) {
93
+ for (const b of [...state.S, ...state.E]) {
94
+ if (Math.abs(b - state.origin) < WAVE_EDGE_TOLERANCE_PX)
95
+ continue;
96
+ if (Math.abs(x - b) < WAVE_EDGE_TOLERANCE_PX)
97
+ return true;
98
+ }
99
+ return false;
100
+ }
101
+ /**
102
+ * The whole working-day index nearest to `x` on the timeline. Under `show`
103
+ * x is linear in calendar days, so the nearest calendar day is read first
104
+ * and then counted in working days (a non-working day counts as the next
105
+ * working day), which keeps the dates engine A reports equal to engine C's.
106
+ */
107
+ function dayAtX(x, ctx) {
108
+ const days = Math.round((x - ctx.timeline.originX) / ctx.timeline.pixelsPerDay);
109
+ if (!ctx.scale.showsNonWorking)
110
+ return days;
111
+ const start = ctx.timeline.startDate;
112
+ return ctx.calendar.workingIndexOf(start, addDays(start, days));
113
+ }
114
+ /**
115
+ * The working day whose start is nearest `x` on the timeline: a point,
116
+ * such as a start (UTC midnight). Extent growth never moves the origin or
117
+ * the pixels-per-day, so this is stable across it.
118
+ */
119
+ export function dateAtX(x, ctx) {
120
+ return ctx.calendar.dateAtWorkingIndex(ctx.timeline.startDate, dayAtX(x, ctx));
121
+ }
122
+ /**
123
+ * The exclusive end date of the span [startX, endX] on the timeline
124
+ * (`spanEndDate` over the nearest whole working days): a Mon–Fri span
125
+ * ends on Saturday.
126
+ */
127
+ export function spanEndDateAtX(startX, endX, ctx) {
128
+ return spanEndDate(ctx.calendar, ctx.timeline.startDate, dayAtX(startX, ctx), dayAtX(endX, ctx));
129
+ }
130
+ //# sourceMappingURL=wave-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wave-layout.js","sourceRoot":"","sources":["../src/wave-layout.ts"],"names":[],"mappings":"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"}