@toclocoinc/lattice-grid 1.64.0 → 1.66.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 (177) hide show
  1. package/README.md +6 -3
  2. package/angular/LICENSE +111 -0
  3. package/angular/README.md +78 -0
  4. package/angular/fesm2022/toclocoinc-lattice-grid-angular.mjs +2843 -0
  5. package/angular/package.json +16 -0
  6. package/angular/types/toclocoinc-lattice-grid-angular.d.ts +1366 -0
  7. package/docs/API.html +791 -8
  8. package/docs/api-detail.html +172 -4
  9. package/lattice-grid.d.ts +241 -205
  10. package/lattice-grid.esm.min.js +19 -7
  11. package/lattice-grid.min.cjs +19 -7
  12. package/lattice-grid.min.css +1 -1
  13. package/lattice-grid.min.js +19 -7
  14. package/modules/ai.d.ts +10 -13
  15. package/modules/ai.esm.min.js +3 -3
  16. package/modules/ai.min.cjs +3 -3
  17. package/modules/ai.min.js +3 -3
  18. package/modules/angular.d.ts +2 -2
  19. package/modules/angular.esm.min.js +433 -7
  20. package/modules/angular.min.cjs +433 -7
  21. package/modules/angular.min.js +433 -7
  22. package/modules/chart-alluvial.d.ts +2 -2
  23. package/modules/chart-alluvial.esm.min.js +1 -1
  24. package/modules/chart-alluvial.min.cjs +1 -1
  25. package/modules/chart-alluvial.min.js +1 -1
  26. package/modules/chart-arc.d.ts +2 -2
  27. package/modules/chart-arc.esm.min.js +1 -1
  28. package/modules/chart-arc.min.cjs +1 -1
  29. package/modules/chart-arc.min.js +1 -1
  30. package/modules/chart-bubblemap.d.ts +2 -2
  31. package/modules/chart-bubblemap.esm.min.js +1 -1
  32. package/modules/chart-bubblemap.min.cjs +1 -1
  33. package/modules/chart-bubblemap.min.js +1 -1
  34. package/modules/chart-bump.d.ts +2 -2
  35. package/modules/chart-bump.esm.min.js +1 -1
  36. package/modules/chart-bump.min.cjs +1 -1
  37. package/modules/chart-bump.min.js +1 -1
  38. package/modules/chart-calendar.d.ts +2 -2
  39. package/modules/chart-calendar.esm.min.js +1 -1
  40. package/modules/chart-calendar.min.cjs +1 -1
  41. package/modules/chart-calendar.min.js +1 -1
  42. package/modules/chart-decomposition.d.ts +2 -2
  43. package/modules/chart-decomposition.esm.min.js +1 -1
  44. package/modules/chart-decomposition.min.cjs +1 -1
  45. package/modules/chart-decomposition.min.js +1 -1
  46. package/modules/chart-diverging.d.ts +2 -2
  47. package/modules/chart-diverging.esm.min.js +1 -1
  48. package/modules/chart-diverging.min.cjs +1 -1
  49. package/modules/chart-diverging.min.js +1 -1
  50. package/modules/chart-dumbbell.d.ts +2 -2
  51. package/modules/chart-dumbbell.esm.min.js +1 -1
  52. package/modules/chart-dumbbell.min.cjs +1 -1
  53. package/modules/chart-dumbbell.min.js +1 -1
  54. package/modules/chart-fan.d.ts +2 -2
  55. package/modules/chart-fan.esm.min.js +1 -1
  56. package/modules/chart-fan.min.cjs +1 -1
  57. package/modules/chart-fan.min.js +1 -1
  58. package/modules/chart-hexbin.d.ts +2 -2
  59. package/modules/chart-hexbin.esm.min.js +1 -1
  60. package/modules/chart-hexbin.min.cjs +1 -1
  61. package/modules/chart-hexbin.min.js +1 -1
  62. package/modules/chart-hexmap.d.ts +2 -2
  63. package/modules/chart-hexmap.esm.min.js +1 -1
  64. package/modules/chart-hexmap.min.cjs +1 -1
  65. package/modules/chart-hexmap.min.js +1 -1
  66. package/modules/chart-icicle.d.ts +2 -2
  67. package/modules/chart-icicle.esm.min.js +1 -1
  68. package/modules/chart-icicle.min.cjs +1 -1
  69. package/modules/chart-icicle.min.js +1 -1
  70. package/modules/chart-markermap.d.ts +1 -1
  71. package/modules/chart-markermap.esm.min.js +1 -1
  72. package/modules/chart-markermap.min.cjs +1 -1
  73. package/modules/chart-markermap.min.js +1 -1
  74. package/modules/chart-parallel.d.ts +2 -2
  75. package/modules/chart-parallel.esm.min.js +1 -1
  76. package/modules/chart-parallel.min.cjs +1 -1
  77. package/modules/chart-parallel.min.js +1 -1
  78. package/modules/chart-ridgeline.d.ts +2 -2
  79. package/modules/chart-ridgeline.esm.min.js +1 -1
  80. package/modules/chart-ridgeline.min.cjs +1 -1
  81. package/modules/chart-ridgeline.min.js +1 -1
  82. package/modules/chart-roc.d.ts +2 -2
  83. package/modules/chart-roc.esm.min.js +1 -1
  84. package/modules/chart-roc.min.cjs +1 -1
  85. package/modules/chart-roc.min.js +1 -1
  86. package/modules/chart-slope.d.ts +2 -2
  87. package/modules/chart-slope.esm.min.js +1 -1
  88. package/modules/chart-slope.min.cjs +1 -1
  89. package/modules/chart-slope.min.js +1 -1
  90. package/modules/chart-splom.d.ts +2 -2
  91. package/modules/chart-splom.esm.min.js +1 -1
  92. package/modules/chart-splom.min.cjs +1 -1
  93. package/modules/chart-splom.min.js +1 -1
  94. package/modules/chart-waffle.d.ts +2 -2
  95. package/modules/chart-waffle.esm.min.js +1 -1
  96. package/modules/chart-waffle.min.cjs +1 -1
  97. package/modules/chart-waffle.min.js +1 -1
  98. package/modules/charts.d.ts +4 -5
  99. package/modules/charts.esm.min.js +261 -48
  100. package/modules/charts.min.cjs +261 -48
  101. package/modules/charts.min.js +261 -48
  102. package/modules/data-router.d.ts +5 -6
  103. package/modules/data-router.esm.min.js +3 -3
  104. package/modules/data-router.min.cjs +3 -3
  105. package/modules/data-router.min.js +3 -3
  106. package/modules/devtools.d.ts +1 -1
  107. package/modules/devtools.esm.min.js +1 -1
  108. package/modules/devtools.min.cjs +1 -1
  109. package/modules/devtools.min.js +1 -1
  110. package/modules/dhtmlx-compat.d.ts +1 -1
  111. package/modules/dhtmlx-compat.esm.min.js +3 -3
  112. package/modules/dhtmlx-compat.min.cjs +3 -3
  113. package/modules/dhtmlx-compat.min.js +3 -3
  114. package/modules/gantt.d.ts +37 -43
  115. package/modules/gantt.esm.min.js +3 -3
  116. package/modules/gantt.min.cjs +3 -3
  117. package/modules/gantt.min.js +3 -3
  118. package/modules/geo-europe-nuts.d.ts +2 -2
  119. package/modules/geo-europe-nuts.esm.min.js +1 -1
  120. package/modules/geo-uk.d.ts +2 -2
  121. package/modules/geo-uk.esm.min.js +1 -1
  122. package/modules/geo-us-states.d.ts +2 -2
  123. package/modules/geo-us-states.esm.min.js +1 -1
  124. package/modules/geo-world-110m.d.ts +2 -2
  125. package/modules/geo-world-110m.esm.min.js +1 -1
  126. package/modules/geo-world-50m.d.ts +2 -2
  127. package/modules/geo-world-50m.esm.min.js +1 -1
  128. package/modules/htmx.d.ts +2 -2
  129. package/modules/htmx.esm.min.js +19 -7
  130. package/modules/htmx.min.cjs +19 -7
  131. package/modules/htmx.min.js +19 -7
  132. package/modules/kanban.d.ts +14 -14
  133. package/modules/kanban.esm.min.js +3 -3
  134. package/modules/kanban.min.cjs +3 -3
  135. package/modules/kanban.min.js +3 -3
  136. package/modules/kpi.d.ts +5 -5
  137. package/modules/kpi.esm.min.js +3 -3
  138. package/modules/kpi.min.cjs +3 -3
  139. package/modules/kpi.min.js +3 -3
  140. package/modules/layout.d.ts +2 -2
  141. package/modules/layout.esm.min.js +3 -3
  142. package/modules/layout.min.cjs +3 -3
  143. package/modules/layout.min.js +3 -3
  144. package/modules/mock-socket.d.ts +1 -1
  145. package/modules/mock-socket.esm.min.js +1 -1
  146. package/modules/mock-socket.min.cjs +1 -1
  147. package/modules/mock-socket.min.js +1 -1
  148. package/modules/react.d.ts +4 -5
  149. package/modules/react.esm.min.js +3 -3
  150. package/modules/react.min.cjs +3 -3
  151. package/modules/react.min.js +3 -3
  152. package/modules/svelte.d.ts +252 -4
  153. package/modules/svelte.esm.min.js +960 -6
  154. package/modules/svelte.min.cjs +942 -5
  155. package/modules/svelte.min.js +942 -5
  156. package/modules/tabs.d.ts +2 -3
  157. package/modules/tabs.esm.min.js +3 -3
  158. package/modules/tabs.min.cjs +3 -3
  159. package/modules/tabs.min.js +3 -3
  160. package/modules/vue.d.ts +398 -9
  161. package/modules/vue.esm.min.js +1163 -31
  162. package/modules/vue.min.cjs +1147 -30
  163. package/modules/vue.min.js +1147 -30
  164. package/modules/webcomponent.d.ts +234 -2
  165. package/modules/webcomponent.esm.min.js +1267 -38
  166. package/modules/webcomponent.min.cjs +1249 -38
  167. package/modules/webcomponent.min.js +1249 -38
  168. package/package.json +27 -2
  169. package/svelte/Chart.svelte +34 -0
  170. package/svelte/Gantt.svelte +34 -0
  171. package/svelte/Grid.svelte +30 -0
  172. package/svelte/GridProvider.svelte +13 -0
  173. package/svelte/KPI.svelte +34 -0
  174. package/svelte/Kanban.svelte +34 -0
  175. package/svelte/Layout.svelte +34 -0
  176. package/svelte/Router.svelte +16 -0
  177. package/svelte/Tabs.svelte +53 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, data-router module
2
+ * Lattice Grid 1.66.0, data-router module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.64.0";
57
+ const STAMPED_VERSION="1.66.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.64.0";
62
+ const VERSION="1.66.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, data-router module
2
+ * Lattice Grid 1.66.0, data-router module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.64.0";
57
+ const STAMPED_VERSION="1.66.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.64.0";
62
+ const VERSION="1.66.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, devtools module type declarations
2
+ * Lattice Grid 1.66.0, devtools module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, devtools module
2
+ * Lattice Grid 1.66.0, devtools module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, devtools module
2
+ * Lattice Grid 1.66.0, devtools module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, devtools module
2
+ * Lattice Grid 1.66.0, devtools module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, dhtmlx-compat module type declarations
2
+ * Lattice Grid 1.66.0, dhtmlx-compat module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, dhtmlx-compat module
2
+ * Lattice Grid 1.66.0, dhtmlx-compat module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -62,12 +62,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
62
62
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
63
63
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
64
64
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
65
- const STAMPED_VERSION="1.64.0";
65
+ const STAMPED_VERSION="1.66.0";
66
66
  async function resolveVersion(){
67
67
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
68
68
  return STAMPED_VERSION;
69
69
  }
70
- const VERSION="1.64.0";
70
+ const VERSION="1.66.0";
71
71
  const warned=new Set();
72
72
  const WARNED_LIMIT=2000;
73
73
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, dhtmlx-compat module
2
+ * Lattice Grid 1.66.0, dhtmlx-compat module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -63,12 +63,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
63
63
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
64
64
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
65
65
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
66
- const STAMPED_VERSION="1.64.0";
66
+ const STAMPED_VERSION="1.66.0";
67
67
  async function resolveVersion(){
68
68
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
69
69
  return STAMPED_VERSION;
70
70
  }
71
- const VERSION="1.64.0";
71
+ const VERSION="1.66.0";
72
72
  const warned=new Set();
73
73
  const WARNED_LIMIT=2000;
74
74
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, dhtmlx-compat module
2
+ * Lattice Grid 1.66.0, dhtmlx-compat module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -63,12 +63,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
63
63
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
64
64
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
65
65
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
66
- const STAMPED_VERSION="1.64.0";
66
+ const STAMPED_VERSION="1.66.0";
67
67
  async function resolveVersion(){
68
68
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
69
69
  return STAMPED_VERSION;
70
70
  }
71
- const VERSION="1.64.0";
71
+ const VERSION="1.66.0";
72
72
  const warned=new Set();
73
73
  const WARNED_LIMIT=2000;
74
74
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, gantt module type declarations
2
+ * Lattice Grid 1.66.0, gantt module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -42,14 +42,14 @@ export interface GanttTask {
42
42
  assignees?: string[];
43
43
  owner?: string;
44
44
  /**
45
- * Explicit resource assignments with fractional units (BACKLOG-0000948):
45
+ * Explicit resource assignments with fractional units:
46
46
  * `units` is a multiplier where 1 is a full-time booking. Use this when a
47
47
  * task books a resource at less (or more) than 100%; a bare `assignee` is
48
48
  * `units: 1`.
49
49
  */
50
50
  assignments?: Array<{ resource?: string; name?: string; id?: string; units?: number }>;
51
51
  /**
52
- * The task's effort, in one of two forms (BACKLOG-0001281/1282).
52
+ * The task's effort, in one of two forms.
53
53
  *
54
54
  * A **number** is the task's TOTAL hours; the workload band divides it
55
55
  * between the assignments in proportion to their units and spreads each
@@ -73,20 +73,18 @@ export interface GanttTask {
73
73
  /** An explicit row height (px) for the split view; applied to both panels. */
74
74
  height?: number;
75
75
  /**
76
- * The budgeted cost (BAC) for earned-value analysis (BACKLOG-0000958). When
76
+ * The budgeted cost (BAC) for earned-value analysis. When
77
77
  * omitted the task's duration is used as the budget, giving schedule-only EVM.
78
78
  */
79
79
  cost?: number;
80
80
  /**
81
- * The actual cost incurred (ACWP) for earned-value analysis
82
- * (BACKLOG-0000958). Left out, the task's cost variance/CPI are `null`.
81
+ * The actual cost incurred (ACWP) for earned-value analysis. Left out, the task's cost variance/CPI are `null`.
83
82
  */
84
83
  actualCost?: number;
85
84
  }
86
85
 
87
86
  /**
88
- * Resource capacities for over-allocation detection and leveling
89
- * (BACKLOG-0000948): either a list of resources with a capacity (max
87
+ * Resource capacities for over-allocation detection and leveling: either a list of resources with a capacity (max
90
88
  * concurrent units, default 1) or a name→capacity map.
91
89
  */
92
90
  export type GanttResourceSpec =
@@ -97,8 +95,7 @@ export type GanttResourceSpec =
97
95
  * A typed dependency between two tasks (by id), with optional lag/lead. `type`
98
96
  * defaults to `'FS'`; either endpoint may be a leaf or a summary.
99
97
  *
100
- * `type` also accepts the MS Project string shorthand — `'FS+2'`, `'SS-1'`
101
- * (BACKLOG-0001072). It is normalised to the structured form on the way in, so
98
+ * `type` also accepts the MS Project string shorthand — `'FS+2'`, `'SS-1'`. It is normalised to the structured form on the way in, so
102
99
  * `gantt.dependencies` always reads back `{ type, lag }` and there is no second
103
100
  * internal representation. Giving both a shorthand lag and a conflicting `lag`
104
101
  * field warns; the explicit field wins.
@@ -158,9 +155,9 @@ interface GanttSchedule {
158
155
  conflicts?: GanttConflict[];
159
156
  /** Whether a working-time calendar was applied. */
160
157
  calendar?: boolean;
161
- /** The resource over-allocations for this schedule (BACKLOG-0000948). */
158
+ /** The resource over-allocations for this schedule. */
162
159
  overAllocations?: GanttOverAllocation[];
163
- /** The full resource-load report for this schedule (BACKLOG-0000948). */
160
+ /** The full resource-load report for this schedule. */
164
161
  resourceLoad?: GanttResourceLoad;
165
162
  }
166
163
 
@@ -172,7 +169,7 @@ interface GanttResourceSegment {
172
169
  taskIds: string[];
173
170
  }
174
171
 
175
- /** A resource booked beyond its capacity across concurrent tasks (BACKLOG-0000948). */
172
+ /** A resource booked beyond its capacity across concurrent tasks. */
176
173
  interface GanttOverAllocation {
177
174
  resource: string;
178
175
  capacity: number;
@@ -182,7 +179,7 @@ interface GanttOverAllocation {
182
179
  taskIds: string[];
183
180
  }
184
181
 
185
- /** The per-resource load and the over-allocations across a schedule (BACKLOG-0000948). */
182
+ /** The per-resource load and the over-allocations across a schedule. */
186
183
  interface GanttResourceLoad {
187
184
  ok: boolean;
188
185
  resources: Array<{ resource: string; capacity: number; peak: number; segments: GanttResourceSegment[] }>;
@@ -190,7 +187,7 @@ interface GanttResourceLoad {
190
187
  byResource: Map<string, { capacity: number; peak: number; segments: GanttResourceSegment[] }>;
191
188
  }
192
189
 
193
- /** The result of resource leveling: the shifted tasks and what moved (BACKLOG-0000948). */
190
+ /** The result of resource leveling: the shifted tasks and what moved. */
194
191
  interface GanttLevelResult {
195
192
  ok: boolean;
196
193
  resolved?: boolean;
@@ -229,7 +226,7 @@ export function findViolations(tasks: GanttTask[], schedule: GanttSchedule): Gan
229
226
  /** Format an engine day-number as an ISO calendar date (`YYYY-MM-DD`, UTC). */
230
227
  export function toISODate(day: number): string | null;
231
228
 
232
- /** Earned-value metrics for one task or the whole project (BACKLOG-0000958). */
229
+ /** Earned-value metrics for one task or the whole project. */
233
230
  interface GanttEarnedValueRow {
234
231
  id: string;
235
232
  name: string;
@@ -258,7 +255,7 @@ interface GanttEarnedValueRow {
258
255
  cpi: number | null;
259
256
  }
260
257
 
261
- /** The earned-value result at a status date (BACKLOG-0000958). */
258
+ /** The earned-value result at a status date. */
262
259
  interface GanttEarnedValue {
263
260
  ok: boolean;
264
261
  error?: { code: string; message: string };
@@ -274,7 +271,7 @@ interface GanttEarnedValue {
274
271
 
275
272
  /**
276
273
  * Compute earned-value management (EVM) metrics for a scheduled plan at a
277
- * status date (BACKLOG-0000958): PV/BCWS from the baseline, EV/BCWP from
274
+ * status date: PV/BCWS from the baseline, EV/BCWP from
278
275
  * %complete, AC/ACWP from the per-task `actualCost`, and the derived SV/CV and
279
276
  * SPI/CPI — per leaf, rolled up to summaries and the project. The math is
280
277
  * implemented locally in the module (no core-compute dependency).
@@ -295,9 +292,9 @@ interface Gantt {
295
292
  readonly conflicts: GanttConflict[];
296
293
  readonly autoSchedule: boolean;
297
294
  readonly grid: unknown;
298
- /** The over-allocations from the latest schedule (BACKLOG-0000948). */
295
+ /** The over-allocations from the latest schedule. */
299
296
  readonly overAllocations: GanttOverAllocation[];
300
- /** The latest resource-load report, or null before a successful schedule (BACKLOG-0000948). */
297
+ /** The latest resource-load report, or null before a successful schedule. */
301
298
  readonly resourceLoad: GanttResourceLoad | null;
302
299
  setTasks(tasks: GanttTask[]): GanttSchedule;
303
300
  setDependencies(deps: GanttDependency[]): GanttSchedule;
@@ -305,7 +302,7 @@ interface Gantt {
305
302
  * Apply one task edit and recompute — the single gated choke point every
306
303
  * drag, keypress, table cell and workload cell commits through.
307
304
  *
308
- * A `work` ARRAY is the task's per-day contour (BACKLOG-0001282). Given
305
+ * A `work` ARRAY is the task's per-day contour. Given
309
306
  * without an explicit `start`/`end`/`duration` it SETS the span: the task
310
307
  * starts on the contour's first day and runs through its last, so booking
311
308
  * hours beyond the bar extends it and clearing an edge bucket pulls it
@@ -317,13 +314,13 @@ interface Gantt {
317
314
  compute(): GanttSchedule;
318
315
  findViolations(): GanttViolation[];
319
316
  /**
320
- * Compute the resource load and over-allocations on demand (BACKLOG-0000948),
317
+ * Compute the resource load and over-allocations on demand,
321
318
  * optionally overriding the capacities for this call.
322
319
  */
323
320
  resources(loadOpts?: { resources?: GanttResourceSpec; defaultCapacity?: number }): GanttResourceLoad;
324
321
  /**
325
322
  * Resolve resource over-allocation by shifting tasks later — resource
326
- * leveling (BACKLOG-0000948). Honours the CPM dependencies and the
323
+ * leveling. Honours the CPM dependencies and the
327
324
  * working-time calendar. Mutates the model unless `{ dryRun: true }`; with
328
325
  * `{ writeBack: true }` and a bound grid the moved tasks are pushed through
329
326
  * the grid's edit surface.
@@ -339,7 +336,7 @@ interface Gantt {
339
336
  /** Export the scheduled tasks as CSV; `{ dates: true }` writes ISO dates. */
340
337
  toCSV(csvOpts?: { dates?: boolean }): string;
341
338
  /**
342
- * Export the current plan as Microsoft Project (MSPDI) XML (BACKLOG-0000950):
339
+ * Export the current plan as Microsoft Project (MSPDI) XML:
343
340
  * tasks, dependencies, constraints, baseline, resources and assignments, plus
344
341
  * the working-time calendar, serialised with the computed schedule.
345
342
  */
@@ -365,7 +362,7 @@ interface Gantt {
365
362
  * The plot width. `'container'` (the default) measures the element it was
366
363
  * mounted into and keeps following it, so a plan in a tab, drawer,
367
364
  * accordion or split pane fits without the host writing a
368
- * `ResizeObserver` (BACKLOG-0001079); a container with no box yet holds a
365
+ * `ResizeObserver`; a container with no box yet holds a
369
366
  * 720px fallback rather than drawing at zero. A number is honoured
370
367
  * exactly and installs no observer. Ignored under `zoom`, which warns.
371
368
  */
@@ -379,12 +376,12 @@ interface Gantt {
379
376
  dateAxis?: boolean;
380
377
  /**
381
378
  * The today line, as a plan day-number or a calendar date. A date is
382
- * converted into plan space through `projectEpoch` (BACKLOG-0001079), so
379
+ * converted into plan space through `projectEpoch`, so
383
380
  * "put the line on the real today" is expressible for a relative plan.
384
381
  */
385
382
  today?: number | string | Date;
386
383
  /**
387
- * The calendar date plan day 0 stands for (BACKLOG-0001079).
384
+ * The calendar date plan day 0 stands for.
388
385
  *
389
386
  * Display-only: axis ticks, bar labels, tooltips, screen-reader text and
390
387
  * the built-in `'weekends'` shading move with it; the schedule, `getState`
@@ -414,15 +411,15 @@ interface Gantt {
414
411
  moveStep?: number;
415
412
  }): unknown;
416
413
  /**
417
- * Mount the JOINED split view (BACKLOG-0000938): one continuous, row-aligned
414
+ * Mount the JOINED split view: one continuous, row-aligned
418
415
  * surface with a left task-grid panel — by default the Task Name tree with
419
416
  * expand/collapse, start, finish, duration, assignee avatars and a circular
420
- * % ring (BACKLOG-0001285), plus any host columns — and the right timeline,
417
+ * % ring, plus any host columns — and the right timeline,
421
418
  * sharing a single vertical scroll so every grid row lines up exactly with
422
419
  * its bar row. The timeline scrolls horizontally on its own. Composes the
423
420
  * controller's schedule; makes no change to grid core.
424
421
  *
425
- * The plan is editable from BOTH panes (BACKLOG-0001280): every gesture
422
+ * The plan is editable from BOTH panes: every gesture
426
423
  * `mount` has — pointer drag to move, drag on the right edge to resize,
427
424
  * arrow-key move, Shift+arrow resize, `l` to link, Delete — works on the
428
425
  * timeline here, and a `start`/`end`/`duration`/`progress`/`name` column in
@@ -437,7 +434,7 @@ interface Gantt {
437
434
  * focusable bars, the arrow-key gestures and the ARIA announcements while
438
435
  * leaving pointer editing alone; and `resizeZone` (default 6) is how many
439
436
  * pixels in from a bar's right edge begin a resize rather than a move.
440
- * `workload` adds the resource band beneath the plan (BACKLOG-0001281),
437
+ * `workload` adds the resource band beneath the plan,
441
438
  * which is display-only — it reports hours, it does not accept them.
442
439
  */
443
440
  mountSplit(container: unknown, options?: {
@@ -455,7 +452,7 @@ interface Gantt {
455
452
  showBaseline?: boolean;
456
453
  barLabel?: 'name' | 'percent' | 'dates' | 'none' | ((task: GanttScheduledTask) => string);
457
454
  /**
458
- * Surface earned-value metrics in `kind: 'evm'` columns (BACKLOG-0000958).
455
+ * Surface earned-value metrics in `kind: 'evm'` columns.
459
456
  * `true` computes EVM at the today line (or the project finish); an object
460
457
  * overrides the status date and the cost field names.
461
458
  */
@@ -488,13 +485,12 @@ interface Gantt {
488
485
  * the avatars, `'progress'` the % ring (edits `percentComplete`), `'evm'`
489
486
  * an earned-value `metric`, and `'start'`/`'end'`/`'duration'` the
490
487
  * scheduled window — an ISO date, an ISO date, and a whole number of days,
491
- * each of which edits the plan through the same path a bar drag takes
492
- * (BACKLOG-0001280). A column with no `kind` shows the raw task's `key`
488
+ * each of which edits the plan through the same path a bar drag takes. A column with no `kind` shows the raw task's `key`
493
489
  * and edits it only with `editable: true`.
494
490
  */
495
491
  columns?: Array<{ key: string; title?: string; width?: number; kind?: 'name' | 'assignee' | 'progress' | 'evm' | 'start' | 'end' | 'duration' | 'number'; metric?: 'bac' | 'pv' | 'ev' | 'ac' | 'sv' | 'cv' | 'spi' | 'cpi'; digits?: number; editable?: boolean; editField?: string; render?: (task: GanttScheduledTask, ctx: { rawTask: GanttTask; depth: number }) => unknown }>;
496
492
  /**
497
- * A resource workload band beneath the split view (BACKLOG-0001281):
493
+ * A resource workload band beneath the split view:
498
494
  * one row per resource on the left and, on the right, that resource's
499
495
  * hours per time bucket — aligned column-for-column with the timeline's
500
496
  * scale header, scroll-locked to it horizontally (vertically it scrolls
@@ -502,7 +498,7 @@ interface Gantt {
502
498
  * plan changes. `true` takes the defaults below; an object overrides
503
499
  * them; omitted, no band is drawn.
504
500
  *
505
- * **Editing (BACKLOG-0001282).** A resource row expands (a disclosure
501
+ * **Editing.** A resource row expands (a disclosure
506
502
  * button, `aria-expanded`) into one sub-row per task it carries. The
507
503
  * resource's own cell is the read-only aggregate; a SUB-ROW cell accepts
508
504
  * a typed number of hours on a double-click whenever the view's
@@ -547,8 +543,7 @@ interface Gantt {
547
543
  */
548
544
  captureBaseline(): Array<{ id: string; baselineStart: number; baselineEnd: number; baselineDuration: number }>;
549
545
  /**
550
- * Compute earned-value (EVM) metrics for the current plan at a status date
551
- * (BACKLOG-0000958): PV/EV/AC and the derived SV/CV/SPI/CPI per task, rolled
546
+ * Compute earned-value (EVM) metrics for the current plan at a status date: PV/EV/AC and the derived SV/CV/SPI/CPI per task, rolled
552
547
  * up to summaries and the project. Budget (BAC) is the task's `cost`, or its
553
548
  * duration when no cost is given; AC comes from `actualCost`.
554
549
  */
@@ -576,7 +571,7 @@ export function createGantt(opts?: {
576
571
  deadline?: number | string | Date;
577
572
  /** A working-time calendar: skip weekends/holidays, durations in working days. */
578
573
  calendar?: GanttCalendar | null;
579
- /** Resource capacities for over-allocation detection and leveling (BACKLOG-0000948). */
574
+ /** Resource capacities for over-allocation detection and leveling. */
580
575
  resources?: GanttResourceSpec;
581
576
  /** The capacity for a resource with none stated (default 1 = one full-time booking). */
582
577
  defaultCapacity?: number;
@@ -601,8 +596,7 @@ export function createGantt(opts?: {
601
596
  * schedule.
602
597
  *
603
598
  * A mapping to a field NAME is two-way: `applyEdit` writes back to that
604
- * name, so an edit on a mapped plan lands instead of springing back
605
- * (BACKLOG-0001280). A mapping to a READER FUNCTION has no inverse, so an
599
+ * name, so an edit on a mapped plan lands instead of springing back. A mapping to a READER FUNCTION has no inverse, so an
606
600
  * edit to such a field writes the canonical property and says so once, and
607
601
  * `level()` refuses a mapped `start` outright rather than writing where
608
602
  * nothing reads. `assignee`, `cost` and `actualCost` belong to the resource
@@ -625,7 +619,7 @@ interface GanttMSPDIModel {
625
619
  }
626
620
 
627
621
  /**
628
- * Import a Microsoft Project (MSPDI) XML document (BACKLOG-0000950) into the
622
+ * Import a Microsoft Project (MSPDI) XML document into the
629
623
  * module's model: the task tree, typed dependencies with lag, constraints,
630
624
  * baseline, %complete, resources with capacity, the resource assignments, and
631
625
  * the working-time calendar. The result is ready to pass to {@link createGantt}.
@@ -641,7 +635,7 @@ export function importMSPDI(xml: string, opts?: { hoursPerDay?: number }): {
641
635
  };
642
636
 
643
637
  /**
644
- * Export a Gantt model to Microsoft Project (MSPDI) XML (BACKLOG-0000950). A
638
+ * Export a Gantt model to Microsoft Project (MSPDI) XML. A
645
639
  * scheduled model may be passed so start/finish dates are the computed ones.
646
640
  */
647
641
  export function exportMSPDI(model: GanttMSPDIModel, opts?: { hoursPerDay?: number; projectName?: string }): string;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, gantt module
2
+ * Lattice Grid 1.66.0, gantt module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
52
52
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
53
53
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
54
54
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
55
- const STAMPED_VERSION="1.64.0";
55
+ const STAMPED_VERSION="1.66.0";
56
56
  async function resolveVersion(){
57
57
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
58
58
  return STAMPED_VERSION;
59
59
  }
60
- const VERSION="1.64.0";
60
+ const VERSION="1.66.0";
61
61
  const warned=new Set();
62
62
  const WARNED_LIMIT=2000;
63
63
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, gantt module
2
+ * Lattice Grid 1.66.0, gantt module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.64.0";
57
+ const STAMPED_VERSION="1.66.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.64.0";
62
+ const VERSION="1.66.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, gantt module
2
+ * Lattice Grid 1.66.0, gantt module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
54
54
  Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
55
55
  Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
56
56
  Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
57
- const STAMPED_VERSION="1.64.0";
57
+ const STAMPED_VERSION="1.66.0";
58
58
  async function resolveVersion(){
59
59
  if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
60
60
  return STAMPED_VERSION;
61
61
  }
62
- const VERSION="1.64.0";
62
+ const VERSION="1.66.0";
63
63
  const warned=new Set();
64
64
  const WARNED_LIMIT=2000;
65
65
  function rememberWarned(key){
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-europe-nuts module type declarations
2
+ * Lattice Grid 1.66.0, geo-europe-nuts module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -8,7 +8,7 @@ import type {
8
8
  } from '../lattice-grid.js';
9
9
 
10
10
  /**
11
- * Europe by NUTS level 0–2 — an optional geometry pack (BACKLOG-0001321).
11
+ * Europe by NUTS level 0–2 — an optional geometry pack.
12
12
  * Generated from Eurostat GISCO; its licence requires the attribution line
13
13
  * the pack carries, which the map draws automatically.
14
14
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-europe-nuts module
2
+ * Lattice Grid 1.66.0, geo-europe-nuts module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-uk module type declarations
2
+ * Lattice Grid 1.66.0, geo-uk module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -9,7 +9,7 @@ import type {
9
9
 
10
10
  /**
11
11
  * United Kingdom: regions, local authorities and constituencies, in one
12
- * multi-layer pack — an optional geometry pack (BACKLOG-0001321). Generated
12
+ * multi-layer pack — an optional geometry pack. Generated
13
13
  * from the ONS Open Geography Portal (Open Government Licence v3.0), whose
14
14
  * required attribution the pack carries and the map draws automatically. Pick
15
15
  * the grain with `layer: 'regions' | 'local-authorities' | 'constituencies'`.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-uk module
2
+ * Lattice Grid 1.66.0, geo-uk module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-us-states module type declarations
2
+ * Lattice Grid 1.66.0, geo-us-states module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -8,7 +8,7 @@ import type {
8
8
  } from '../lattice-grid.js';
9
9
 
10
10
  /**
11
- * United States, states and DC — an optional geometry pack (BACKLOG-0001321).
11
+ * United States, states and DC — an optional geometry pack.
12
12
  * Generated from the US Census Bureau via `us-atlas` (public domain); joins on
13
13
  * USPS, FIPS or ISO codes.
14
14
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-us-states module
2
+ * Lattice Grid 1.66.0, geo-us-states module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-world-110m module type declarations
2
+ * Lattice Grid 1.66.0, geo-world-110m module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -8,7 +8,7 @@ import type {
8
8
  } from '../lattice-grid.js';
9
9
 
10
10
  /**
11
- * World countries at 1:110m — an optional geometry pack (BACKLOG-0001321).
11
+ * World countries at 1:110m — an optional geometry pack.
12
12
  * Generated from Natural Earth (public domain) by `tools/build-geo-packs.mjs`;
13
13
  * 177 countries. Pass as `shapes` on a `geomap` chart, or register it and name
14
14
  * it by id: `shapes: { pack: 'world-110m' }`.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-world-110m module
2
+ * Lattice Grid 1.66.0, geo-world-110m module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-world-50m module type declarations
2
+ * Lattice Grid 1.66.0, geo-world-50m module type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -8,7 +8,7 @@ import type {
8
8
  } from '../lattice-grid.js';
9
9
 
10
10
  /**
11
- * World countries at 1:50m — an optional geometry pack (BACKLOG-0001321).
11
+ * World countries at 1:50m — an optional geometry pack.
12
12
  * Generated from Natural Earth (public domain); 241 countries, including the
13
13
  * micro-states the 1:110m pack omits.
14
14
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.64.0, geo-world-50m module
2
+ * Lattice Grid 1.66.0, geo-world-50m module
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */