@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,14 +1,138 @@
1
- import type { CalendarConfig } from './calendar.js';
1
+ import type { CalendarConfig, CalendarMode } from './calendar.js';
2
2
  import type { ScaleUnit } from './view-preset.js';
3
+ /**
4
+ * One `non-working` (or working-exception) declaration. Kinds:
5
+ * `dates`, or `start` + `end` without `every`, is a dated rule; `every` with
6
+ * `start` and/or `end` is a bounded recurrence (open on an omitted side);
7
+ * `every` alone is the open-ended week. All dates are UTC midnight.
8
+ */
9
+ export interface CalendarRule {
10
+ /** False: weekend, holiday, closure. True: a working exception. */
11
+ working: boolean;
12
+ /** Recurring UTC weekdays (0 = Sunday … 6 = Saturday). */
13
+ every?: ReadonlySet<number>;
14
+ /** Specific dates (`date:` single or list); excludes `every` / `start` / `end`. */
15
+ dates?: ReadonlyArray<Date>;
16
+ /** Range start, or recurrence window start; inclusive. */
17
+ start?: Date;
18
+ /** Range end, or recurrence window end; inclusive. */
19
+ end?: Date;
20
+ id?: string;
21
+ title?: string;
22
+ }
23
+ /** A maximal run of consecutive non-working dates. */
24
+ export interface NonWorkingRun {
25
+ /** First non-working date of the run (UTC midnight). */
26
+ from: Date;
27
+ /** Last non-working date of the run, inclusive. */
28
+ through: Date;
29
+ /** Titles of the dated non-working rules inside it; empty for a plain weekend. */
30
+ titles: string[];
31
+ }
32
+ /**
33
+ * A maximal run of consecutive days that titled dated `working` rules turn
34
+ * from non-working to working (specs/working-calendar.md §7.4): days a
35
+ * dated closure, a bounded recurrence or the open-ended week would close.
36
+ */
37
+ export interface WorkingExceptionRun {
38
+ /** First day of the run (UTC midnight). */
39
+ from: Date;
40
+ /** Last day of the run (UTC midnight), inclusive. */
41
+ through: Date;
42
+ /** Titles of the titled dated working rules that turn a day of it, never empty. */
43
+ titles: string[];
44
+ }
3
45
  export interface WorkingCalendar {
4
46
  /** Days per `1<unit>` literal (e.g. `1w` → 5 for business). */
5
47
  daysPerUnit(unit: ScaleUnit): number;
6
- /** Move forward by N units (e.g. `addUnits(d, 2, 'weeks')`). */
48
+ /** `dateAtWorkingIndex(date, count × daysPerUnit(unit))`. */
7
49
  addUnits(date: Date, count: number, unit: ScaleUnit): Date;
8
- /** True when the given date is a working day in this calendar. */
50
+ /** False: every function below is plain calendar-day math. */
51
+ readonly hasNonWorkingDays: boolean;
52
+ /** True when the given date is a working day; an invalid date counts as working. */
9
53
  isWorkingDay(date: Date): boolean;
54
+ /**
55
+ * Working days in [base, date), signed. A non-working `date` counts as the
56
+ * next working day. `base` must be UTC midnight.
57
+ */
58
+ workingIndexOf(base: Date, date: Date): number;
59
+ /**
60
+ * UTC midnight of the working day with this index from `base` (fractions
61
+ * floor). Index 0 is the first working day at or after `base`, which must
62
+ * be UTC midnight.
63
+ */
64
+ dateAtWorkingIndex(base: Date, index: number): Date;
65
+ /** Maximal non-working runs intersecting [from, to), extended past both ends. */
66
+ nonWorkingRuns(from: Date, to: Date): NonWorkingRun[];
67
+ /** Working-exception runs intersecting [from, to), with their real dates. */
68
+ workingExceptionRuns(from: Date, to: Date): WorkingExceptionRun[];
69
+ /**
70
+ * First working weekday after the longest recurring non-working run of the
71
+ * open-ended week (Sat–Sun → Monday); undefined without one.
72
+ */
73
+ readonly weekStart: number | undefined;
74
+ /**
75
+ * Weekdays the open-ended week works (0 = Sunday … 6 = Saturday): the
76
+ * weekly pattern an exporter writes as its base calendar. Dated rules and
77
+ * bounded recurrences are exceptions to it and never change it.
78
+ */
79
+ readonly workingWeekdays: ReadonlySet<number>;
80
+ /** Normalized copies of the valid rules, in input order. */
81
+ readonly rules: ReadonlyArray<CalendarRule>;
10
82
  }
11
- export declare function fromCalendarConfig(cal: CalendarConfig): WorkingCalendar;
83
+ /** The rules a calendar preset implies: the weekend for business, nothing otherwise. */
84
+ export declare function presetRules(mode: CalendarMode): CalendarRule[];
85
+ /**
86
+ * Build the working calendar for a resolved `CalendarConfig`. `rules`
87
+ * defaults to the preset's (the weekend for business). Malformed rules are
88
+ * dropped silently because included files are parsed without validation;
89
+ * throws `RangeError` for a weekday outside 0..6 or an unbounded stretch
90
+ * with no working weekday.
91
+ */
92
+ export declare function fromCalendarConfig(cal: CalendarConfig, rules?: ReadonlyArray<CalendarRule>): WorkingCalendar;
93
+ /** Every day is a working day; units use the full-calendar day counts. */
12
94
  export declare function continuousCalendar(): WorkingCalendar;
95
+ /**
96
+ * The exclusive end date of a span of working-day indices [s, e) from
97
+ * `base` (specs/working-calendar.md §5.2): the day after the last whole
98
+ * working day the span covers, so a Mon–Fri item ends on Saturday. A span
99
+ * covering no whole working day ends on its start date. Indices floor, as
100
+ * in `dateAtWorkingIndex`.
101
+ *
102
+ * On the identity path it is `addDays(base, e)`, truncation included, so
103
+ * calendar-day spans keep their exact dates.
104
+ */
105
+ export declare function spanEndDate(calendar: WorkingCalendar, base: Date, s: number, e: number): Date;
106
+ /**
107
+ * A maximal run of consecutive days on which the calendar differs from its
108
+ * open-ended week (specs/working-calendar.md §8): a holiday, a closure, a
109
+ * bounded recurrence's closed days, or a working day inside a closed weekend.
110
+ * The MS Project `<Exceptions>` and the Mermaid dated `excludes` both read it.
111
+ */
112
+ export interface CalendarException {
113
+ /** First day of the run (UTC midnight). */
114
+ from: Date;
115
+ /** Last day of the run (UTC midnight), inclusive. */
116
+ through: Date;
117
+ /** True: a working day the open week closes. False: a closure the open week works. */
118
+ working: boolean;
119
+ /** Titles of the dated or ranged rules behind it; omitted when there are none. */
120
+ titles?: string[];
121
+ }
122
+ /**
123
+ * The days in the horizon whose working state differs from the open-ended
124
+ * week (`workingWeekdays`), as maximal runs split wherever the state flips.
125
+ *
126
+ * The horizon is [from, to) together with every finite bound of every rule:
127
+ * its `dates`, and its `start` / `end` when set. A half-open bounded
128
+ * recurrence is therefore expanded only inside that horizon, so a declared
129
+ * holiday outside the roadmap window is still listed and nothing iterates
130
+ * forever. Titles come from the dated or ranged rules (no `every`) whose
131
+ * `working` equals the run's state and that cover a day of it, in
132
+ * `working.rules` order, de-duplicated.
133
+ */
134
+ export declare function calendarExceptions(working: WorkingCalendar, from: Date, to: Date): CalendarException[];
13
135
  export declare function daysPerUnit(unit: ScaleUnit, cal: CalendarConfig): number;
136
+ /** Calendar days per `1<unit>` when every day counts (`calendar:full`). */
137
+ export declare function continuousDaysPerUnit(unit: ScaleUnit): number;
14
138
  //# sourceMappingURL=working-calendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"working-calendar.d.ts","sourceRoot":"","sources":["../src/working-calendar.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC5B,+DAA+D;IAC/D,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3D,kEAAkE;IAClE,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;CACrC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAUvE;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAgCpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAExE"}
1
+ {"version":3,"file":"working-calendar.d.ts","sourceRoot":"","sources":["../src/working-calendar.ts"],"names":[],"mappings":"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"}