@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,89 +1,80 @@
1
- import type { BoundingBox, Point, PositionedIncludeRegion, PositionedSwimlane } from './types.js';
2
- /** A visible parallel or group bracket stroke. Used by the
3
- * bracket-clearance nudge: arrows whose chosen elbow X falls within
4
- * `BRACKET_NUDGE_PX` of one of these lines are shifted away. Brackets
5
- * are NOT obstacles — they're aesthetic preferences, not collisions. */
6
- export interface BracketLine {
7
- x: number;
8
- yTop: number;
9
- yBottom: number;
1
+ import type { BoundingBox, Point } from './types.js';
2
+ /** Spacing between the lanes of one gap (§3.4 "Channels"). */
3
+ export declare const CHANNEL_LANE_PX = 2.5;
4
+ /** A vertical leg keeps more than this from a bar's left or right edge over its height (§6). */
5
+ export declare const EDGE_CLEARANCE_PX = 1;
6
+ /** Full arrowhead width (and the length along the leg is `ARROW_HEAD_LENGTH_PX`). */
7
+ export declare const ARROW_HEAD_WIDTH_PX = 7;
8
+ /** Length of a full arrowhead along its leg. */
9
+ export declare const ARROW_HEAD_LENGTH_PX = 5;
10
+ /** The narrowest arrowhead; a target narrower than this gets a dot of this diameter (§8 O6). */
11
+ export declare const ARROW_HEAD_MIN_PX = 3;
12
+ /** One end of a dependency arrow: an item bar or a group / parallel. */
13
+ export interface ArrowEnd {
14
+ /** The entity's dates in x (an item's bar is drawn inside them, a seam in from each). */
15
+ startX: number;
16
+ endX: number;
17
+ /** Painted left edge and width (the bar, or the container's box). */
18
+ paintedX: number;
19
+ paintedWidth: number;
20
+ /** Painted top and bottom (a container's box runs from its header to its body's bottom). */
21
+ top: number;
22
+ bottom: number;
23
+ /** An item's row midline (`box.y + bandwidth / 2`); undefined for a container. */
24
+ rowY?: number;
25
+ /**
26
+ * Where a horizontal leg leaves this item on its own row: the row
27
+ * midline, or the progress strip's centre when its caption spills, so
28
+ * the leg runs under the caption. Undefined for a container.
29
+ */
30
+ exitY?: number;
10
31
  }
11
- /** Per-edge routing request. `from` and `to` are the (visualEdge, midY)
12
- * attach points the rest of the layout already computed; the router
13
- * produces the orthogonal polyline that connects them. */
14
- export interface EdgeRouteRequest {
32
+ export interface DependencyRouteRequest {
15
33
  fromId: string;
16
34
  toId: string;
17
- from: Point;
18
- to: Point;
19
- /** Marker → item edges (anchor / milestone source) skip the channel
20
- * router entirely — the cut line is the visible stem, the path is
21
- * always a short horizontal stub. Set true to bypass routing. */
22
- isMarkerSource: boolean;
35
+ source: ArrowEnd;
36
+ target: ArrowEnd;
37
+ }
38
+ /** A vertical stroke a vertical leg must keep clear of. */
39
+ export interface VerticalEdge {
40
+ x: number;
41
+ top: number;
42
+ bottom: number;
43
+ }
44
+ export interface RouteObstacles {
45
+ /**
46
+ * What a horizontal leg must stay out of: every bar with its spilled
47
+ * caption and decorations, every container header band, and every lane
48
+ * or region edge (zero-height boxes).
49
+ */
50
+ blocks: BoundingBox[];
51
+ /** The left and right edges of every bar and drawn container, over its height. */
52
+ edges: VerticalEdge[];
23
53
  }
24
- export interface EdgeRouteResult {
54
+ export interface RoutedDependency {
25
55
  fromId: string;
26
56
  toId: string;
57
+ /** First = source port, last = target port (the arrowhead's tip). */
27
58
  waypoints: Point[];
28
- /** True when the chosen channel intersected an item bar. The
29
- * renderer paints these edges BEFORE bar fills with a thinner
30
- * stroke so the bar still reads as the foreground. */
31
- underBar: boolean;
59
+ /** The target waits: its horizontal leg is dotted, its length the slack. */
60
+ slack: boolean;
61
+ headWidth: number;
62
+ head: 'arrow' | 'dot';
32
63
  }
33
- /** Distance (px) the elbow X must keep from any visible bracket. Picked
34
- * to leave a small visible gap between the arrow's vertical leg and
35
- * the bracket stroke without forcing the arrow far from its natural
36
- * mid-gutter line. */
37
- export declare const BRACKET_NUDGE_PX = 4;
38
- /** Minimum horizontal source stub (px) — distance from the source's
39
- * exit point to the vertical-leg elbow. Below this, the source-side
40
- * arrow body collapses into the bar's right edge with no visible
41
- * horizontal segment. Treated as a hard constraint when picking
42
- * the channel X for left-to-right edges. */
43
- export declare const MIN_SOURCE_STUB_PX = 6;
44
- /** Minimum horizontal target stub (px) — distance from the vertical-leg
45
- * elbow to the target's left edge. Below this, the arrowhead has no
46
- * horizontal lead-in: the leg appears to plunge directly into the bar
47
- * without a visible target-side stub. Treated as a hard constraint
48
- * when picking the channel X for left-to-right edges; conflicts with
49
- * obstacle / bracket clearance trigger the under-bar fallback. */
50
- export declare const MIN_TARGET_STUB_PX = 6;
51
- export interface ChannelGridInput {
52
- /** Every painted item box (visual edges, including chip-spill
53
- * growth). Treated as hard obstacles: a vertical leg crossing one
54
- * triggers under-bar fallback. */
55
- itemBars: BoundingBox[];
56
- /** Every visible bracket stroke (parallel `bracket:solid|dashed`,
57
- * filled-style group chiclets are NOT brackets). Used by the
58
- * clearance nudge only — not obstacles. */
59
- brackets: BracketLine[];
60
- }
61
- export declare class ChannelGrid {
62
- private readonly items;
63
- private readonly brackets;
64
- constructor(input: ChannelGridInput);
65
- /** True when a vertical line at `x` intersects any item bar within
66
- * the Y span `[yMin, yMax]`. */
67
- hasObstacle(x: number, yMin: number, yMax: number): boolean;
68
- /** Visible brackets within `radius` px of `x` whose Y span overlaps
69
- * `[yMin, yMax]`. The clearance nudge uses these to shift the
70
- * elbow X away from the bracket. */
71
- bracketsNear(x: number, yMin: number, yMax: number, radius: number): BracketLine[];
72
- }
73
- /**
74
- * Walk a positioned swimlane tree and collect every painted item bar
75
- * (visual edges) AND every visible bracket stroke. Output feeds
76
- * `ChannelGrid` so the router knows what to avoid.
77
- *
78
- * Swimlanes contained in include regions count too — items inside an
79
- * isolated region share the parent timeline so cross-region arrows
80
- * still need the obstacle/bracket data to route cleanly.
81
- */
82
- export declare function collectRoutingObstacles(swimlanes: PositionedSwimlane[], includes: PositionedIncludeRegion[]): ChannelGridInput;
64
+ /** Where an arrow leaves `end`: the middle of its last day, or its middle when shorter than a day. */
65
+ export declare function sourcePortX(end: ArrowEnd, pixelsPerDay: number): number;
66
+ /** Where an arrow lands on `end`: the middle of its first day, or its middle when shorter than a day. */
67
+ export declare function targetPortX(end: ArrowEnd, pixelsPerDay: number): number;
68
+ /** Arrowhead for a leg landing across a target `width` wide (§8 O6). */
69
+ export declare function arrowHead(width: number): {
70
+ headWidth: number;
71
+ head: 'arrow' | 'dot';
72
+ };
83
73
  /**
84
- * Route every dependency edge in one batch so slot assignment can
85
- * coordinate across edges that share a channel. Marker → item edges
86
- * route as direct stubs and bypass the channel router.
74
+ * Route every item dependency of one chart (the host, or one isolated
75
+ * region) in a batch, so arrows sharing a gap can take lanes. Returns one
76
+ * entry per request; `null` where position already says it (a target on
77
+ * its source's row that starts where the source ends).
87
78
  */
88
- export declare function routeChannelEdges(requests: EdgeRouteRequest[], grid: ChannelGrid): EdgeRouteResult[];
79
+ export declare function routeDependencies(requests: DependencyRouteRequest[], obstacles: RouteObstacles, pixelsPerDay: number): Array<RoutedDependency | null>;
89
80
  //# sourceMappingURL=edge-routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-routing.d.ts","sourceRoot":"","sources":["../src/edge-routing.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACR,WAAW,EACX,KAAK,EACL,uBAAuB,EACvB,kBAAkB,EAErB,MAAM,YAAY,CAAC;AAEpB;;;yEAGyE;AACzE,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;2DAE2D;AAC3D,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,KAAK,CAAC;IACV;;sEAEkE;IAClE,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB;;2DAEuD;IACvD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;;uBAGuB;AACvB,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;6CAI6C;AAC7C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;;mEAKmE;AACnE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAmBpC,MAAM,WAAW,gBAAgB;IAC7B;;uCAEmC;IACnC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB;;gDAE4C;IAC5C,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,YAAY,KAAK,EAAE,gBAAgB,EAGlC;IAED;qCACiC;IACjC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAS1D;IAED;;yCAEqC;IACrC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAUjF;CACJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,QAAQ,EAAE,uBAAuB,EAAE,GACpC,gBAAgB,CAqElB;AAyPD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,IAAI,EAAE,WAAW,GAClB,eAAe,EAAE,CAkDnB"}
1
+ {"version":3,"file":"edge-routing.d.ts","sourceRoot":"","sources":["../src/edge-routing.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAWnC,wEAAwE;AACxE,MAAM,WAAW,QAAQ;IACrB,yFAAyF;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B;;;;OAIG;IACH,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kFAAkF;IAClF,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;CACzB;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;CAAE,CAGrF;AAoLD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,sBAAsB,EAAE,EAClC,SAAS,EAAE,cAAc,EACzB,YAAY,EAAE,MAAM,GACrB,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA6FhC"}