@toclocoinc/lattice-grid 1.71.0 → 1.71.1

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 (200) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/angular/package.json +1 -1
  4. package/docs/API.html +35 -11
  5. package/docs/api/adapters.html +1 -1
  6. package/docs/api/ai.html +1 -1
  7. package/docs/api/alarms.html +1 -1
  8. package/docs/api/charts.html +32 -8
  9. package/docs/api/data-router.html +1 -1
  10. package/docs/api/gantt.html +1 -1
  11. package/docs/api/grid.html +2 -2
  12. package/docs/api/index.html +1 -1
  13. package/docs/api/kanban.html +1 -1
  14. package/docs/api/kpi.html +1 -1
  15. package/docs/api/layout.html +1 -1
  16. package/docs/api/mock-socket.html +1 -1
  17. package/docs/api/tabs.html +1 -1
  18. package/docs/api/types.html +1 -1
  19. package/docs/api-detail.html +4 -4
  20. package/docs/warnings.json +1 -1
  21. package/lattice-grid.d.ts +23 -1
  22. package/lattice-grid.esm.min.js +3 -3
  23. package/lattice-grid.min.cjs +3 -3
  24. package/lattice-grid.min.js +3 -3
  25. package/modules/ai.d.ts +1 -1
  26. package/modules/ai.esm.min.js +2 -2
  27. package/modules/ai.min.cjs +2 -2
  28. package/modules/ai.min.js +2 -2
  29. package/modules/alarms.d.ts +1 -1
  30. package/modules/alarms.esm.min.js +2 -2
  31. package/modules/alarms.min.cjs +2 -2
  32. package/modules/alarms.min.js +2 -2
  33. package/modules/angular.d.ts +1 -1
  34. package/modules/angular.esm.min.js +2 -2
  35. package/modules/angular.min.cjs +2 -2
  36. package/modules/angular.min.js +2 -2
  37. package/modules/chart-alluvial.d.ts +1 -1
  38. package/modules/chart-alluvial.esm.min.js +1 -1
  39. package/modules/chart-alluvial.min.cjs +1 -1
  40. package/modules/chart-alluvial.min.js +1 -1
  41. package/modules/chart-arc.d.ts +1 -1
  42. package/modules/chart-arc.esm.min.js +1 -1
  43. package/modules/chart-arc.min.cjs +1 -1
  44. package/modules/chart-arc.min.js +1 -1
  45. package/modules/chart-bubblemap.d.ts +1 -1
  46. package/modules/chart-bubblemap.esm.min.js +1 -1
  47. package/modules/chart-bubblemap.min.cjs +1 -1
  48. package/modules/chart-bubblemap.min.js +1 -1
  49. package/modules/chart-bump.d.ts +1 -1
  50. package/modules/chart-bump.esm.min.js +1 -1
  51. package/modules/chart-bump.min.cjs +1 -1
  52. package/modules/chart-bump.min.js +1 -1
  53. package/modules/chart-calendar.d.ts +1 -1
  54. package/modules/chart-calendar.esm.min.js +1 -1
  55. package/modules/chart-calendar.min.cjs +1 -1
  56. package/modules/chart-calendar.min.js +1 -1
  57. package/modules/chart-decomposition.d.ts +1 -1
  58. package/modules/chart-decomposition.esm.min.js +1 -1
  59. package/modules/chart-decomposition.min.cjs +1 -1
  60. package/modules/chart-decomposition.min.js +1 -1
  61. package/modules/chart-diverging.d.ts +1 -1
  62. package/modules/chart-diverging.esm.min.js +1 -1
  63. package/modules/chart-diverging.min.cjs +1 -1
  64. package/modules/chart-diverging.min.js +1 -1
  65. package/modules/chart-dumbbell.d.ts +1 -1
  66. package/modules/chart-dumbbell.esm.min.js +1 -1
  67. package/modules/chart-dumbbell.min.cjs +1 -1
  68. package/modules/chart-dumbbell.min.js +1 -1
  69. package/modules/chart-fan.d.ts +1 -1
  70. package/modules/chart-fan.esm.min.js +1 -1
  71. package/modules/chart-fan.min.cjs +1 -1
  72. package/modules/chart-fan.min.js +1 -1
  73. package/modules/chart-hexbin.d.ts +1 -1
  74. package/modules/chart-hexbin.esm.min.js +1 -1
  75. package/modules/chart-hexbin.min.cjs +1 -1
  76. package/modules/chart-hexbin.min.js +1 -1
  77. package/modules/chart-hexmap.d.ts +1 -1
  78. package/modules/chart-hexmap.esm.min.js +1 -1
  79. package/modules/chart-hexmap.min.cjs +1 -1
  80. package/modules/chart-hexmap.min.js +1 -1
  81. package/modules/chart-icicle.d.ts +1 -1
  82. package/modules/chart-icicle.esm.min.js +1 -1
  83. package/modules/chart-icicle.min.cjs +1 -1
  84. package/modules/chart-icicle.min.js +1 -1
  85. package/modules/chart-markermap.d.ts +1 -1
  86. package/modules/chart-markermap.esm.min.js +1 -1
  87. package/modules/chart-markermap.min.cjs +1 -1
  88. package/modules/chart-markermap.min.js +1 -1
  89. package/modules/chart-parallel.d.ts +1 -1
  90. package/modules/chart-parallel.esm.min.js +1 -1
  91. package/modules/chart-parallel.min.cjs +1 -1
  92. package/modules/chart-parallel.min.js +1 -1
  93. package/modules/chart-ridgeline.d.ts +1 -1
  94. package/modules/chart-ridgeline.esm.min.js +1 -1
  95. package/modules/chart-ridgeline.min.cjs +1 -1
  96. package/modules/chart-ridgeline.min.js +1 -1
  97. package/modules/chart-roc.d.ts +1 -1
  98. package/modules/chart-roc.esm.min.js +1 -1
  99. package/modules/chart-roc.min.cjs +1 -1
  100. package/modules/chart-roc.min.js +1 -1
  101. package/modules/chart-slope.d.ts +1 -1
  102. package/modules/chart-slope.esm.min.js +1 -1
  103. package/modules/chart-slope.min.cjs +1 -1
  104. package/modules/chart-slope.min.js +1 -1
  105. package/modules/chart-splom.d.ts +1 -1
  106. package/modules/chart-splom.esm.min.js +1 -1
  107. package/modules/chart-splom.min.cjs +1 -1
  108. package/modules/chart-splom.min.js +1 -1
  109. package/modules/chart-waffle.d.ts +1 -1
  110. package/modules/chart-waffle.esm.min.js +1 -1
  111. package/modules/chart-waffle.min.cjs +1 -1
  112. package/modules/chart-waffle.min.js +1 -1
  113. package/modules/charts.d.ts +1 -1
  114. package/modules/charts.esm.min.js +133 -133
  115. package/modules/charts.esm.min.js.map +2 -2
  116. package/modules/charts.min.cjs +133 -133
  117. package/modules/charts.min.js +133 -133
  118. package/modules/charts.min.js.map +2 -2
  119. package/modules/data-router.d.ts +1 -1
  120. package/modules/data-router.esm.min.js +2 -2
  121. package/modules/data-router.min.cjs +2 -2
  122. package/modules/data-router.min.js +2 -2
  123. package/modules/devtools.d.ts +1 -1
  124. package/modules/devtools.esm.min.js +1 -1
  125. package/modules/devtools.min.cjs +1 -1
  126. package/modules/devtools.min.js +1 -1
  127. package/modules/dhtmlx-compat.d.ts +1 -1
  128. package/modules/dhtmlx-compat.esm.min.js +2 -2
  129. package/modules/dhtmlx-compat.min.cjs +2 -2
  130. package/modules/dhtmlx-compat.min.js +2 -2
  131. package/modules/gantt.d.ts +1 -1
  132. package/modules/gantt.esm.min.js +2 -2
  133. package/modules/gantt.min.cjs +2 -2
  134. package/modules/gantt.min.js +2 -2
  135. package/modules/geo-europe-nuts.d.ts +1 -1
  136. package/modules/geo-europe-nuts.esm.min.js +1 -1
  137. package/modules/geo-europe-nuts.min.cjs +8 -0
  138. package/modules/geo-europe-nuts.min.js +8 -0
  139. package/modules/geo-europe-nuts.min.js.map +6 -0
  140. package/modules/geo-uk.d.ts +1 -1
  141. package/modules/geo-uk.esm.min.js +1 -1
  142. package/modules/geo-uk.min.cjs +8 -0
  143. package/modules/geo-uk.min.js +8 -0
  144. package/modules/geo-uk.min.js.map +6 -0
  145. package/modules/geo-us-states.d.ts +1 -1
  146. package/modules/geo-us-states.esm.min.js +1 -1
  147. package/modules/geo-us-states.min.cjs +8 -0
  148. package/modules/geo-us-states.min.js +8 -0
  149. package/modules/geo-us-states.min.js.map +6 -0
  150. package/modules/geo-world-110m.d.ts +1 -1
  151. package/modules/geo-world-110m.esm.min.js +1 -1
  152. package/modules/geo-world-110m.min.cjs +8 -0
  153. package/modules/geo-world-110m.min.js +8 -0
  154. package/modules/geo-world-110m.min.js.map +6 -0
  155. package/modules/geo-world-50m.d.ts +1 -1
  156. package/modules/geo-world-50m.esm.min.js +1 -1
  157. package/modules/geo-world-50m.min.cjs +8 -0
  158. package/modules/geo-world-50m.min.js +8 -0
  159. package/modules/geo-world-50m.min.js.map +6 -0
  160. package/modules/htmx.d.ts +1 -1
  161. package/modules/htmx.esm.min.js +3 -3
  162. package/modules/htmx.min.cjs +3 -3
  163. package/modules/htmx.min.js +3 -3
  164. package/modules/kanban.d.ts +1 -1
  165. package/modules/kanban.esm.min.js +2 -2
  166. package/modules/kanban.min.cjs +2 -2
  167. package/modules/kanban.min.js +2 -2
  168. package/modules/kpi.d.ts +1 -1
  169. package/modules/kpi.esm.min.js +2 -2
  170. package/modules/kpi.min.cjs +2 -2
  171. package/modules/kpi.min.js +2 -2
  172. package/modules/layout.d.ts +1 -1
  173. package/modules/layout.esm.min.js +2 -2
  174. package/modules/layout.min.cjs +2 -2
  175. package/modules/layout.min.js +2 -2
  176. package/modules/mock-socket.d.ts +1 -1
  177. package/modules/mock-socket.esm.min.js +1 -1
  178. package/modules/mock-socket.min.cjs +1 -1
  179. package/modules/mock-socket.min.js +1 -1
  180. package/modules/react.d.ts +1 -1
  181. package/modules/react.esm.min.js +2 -2
  182. package/modules/react.min.cjs +2 -2
  183. package/modules/react.min.js +2 -2
  184. package/modules/svelte.d.ts +1 -1
  185. package/modules/svelte.esm.min.js +2 -2
  186. package/modules/svelte.min.cjs +2 -2
  187. package/modules/svelte.min.js +2 -2
  188. package/modules/tabs.d.ts +1 -1
  189. package/modules/tabs.esm.min.js +2 -2
  190. package/modules/tabs.min.cjs +2 -2
  191. package/modules/tabs.min.js +2 -2
  192. package/modules/vue.d.ts +1 -1
  193. package/modules/vue.esm.min.js +2 -2
  194. package/modules/vue.min.cjs +2 -2
  195. package/modules/vue.min.js +2 -2
  196. package/modules/webcomponent.d.ts +1 -1
  197. package/modules/webcomponent.esm.min.js +3 -3
  198. package/modules/webcomponent.min.cjs +3 -3
  199. package/modules/webcomponent.min.js +3 -3
  200. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,18 @@ and what it means for a grid already in production.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.71.1] - 2026-09-24
13
+
14
+ ### Added
15
+
16
+ - A single-series `bar` or `horizontalBar` drew every mark in the scheme colour even when the value column already carried conditional-formatting rules, so a NOC panel and the topology it summarised disagreed about what a number meant (BACKLOG-0001451). A `bar`/`horizontalBar` with no `series` key now fills each mark from the y column's own rules — the same `styleFor` a cell, a network link and a marker map already answer to — and the legend names the rules that fired instead of the one, unnamed series. Without a rule on the column, or with `series` set, the scheme applies exactly as before.
17
+ - `horizontalBar` accepted `labels: true` and then warned it draws no data labels; it now draws one label per bar, at the bar's end, falling inside the bar rather than off the plot's right edge when the label would otherwise overflow — the same rescue a tall vertical bar already gets from the top of the plot.
18
+
19
+ ### Fixed
20
+
21
+ - A script-tag page could not load a geometry pack: the five packs under `modules/geo-*` shipped ESM only, so a plain `<script src>` page could draw every built-in chart type and every extension chart type but could not get a world, US, UK or European outline beside them without a bundler (BACKLOG-0001450). Each pack now also ships as UMD and CJS, on its own global (`LatticeGridGeoWorld110m`, `LatticeGridGeoWorld50m`, `LatticeGridGeoEuropeNuts`, `LatticeGridGeoUk`, `LatticeGridGeoUsStates`), carrying `.pack` and `.default` — never merged into `LatticeGrid`, since all five export the same two names and a second pack loaded the same way would otherwise overwrite the first's `pack` on a shared object.
22
+ - `tools/check.js` gained a format-parity gate: every optional module directory now has to ship both a UMD and a CJS artefact, named by module and by missing format when one does not, so the next module that ships ESM-only fails the build rather than needing its own card to notice.
23
+
12
24
  ## [1.71.0] - 2026-09-23
13
25
 
14
26
  ### Added
package/README.md CHANGED
@@ -5,7 +5,7 @@ dependencies, no build step required. Optional adapters for React, Vue, Svelte
5
5
  and Web Components ship alongside it, and Angular has compiled components of its
6
6
  own at `@toclocoinc/lattice-grid/angular` — inside this package, not beside it.
7
7
 
8
- Version 1.71.0 · [latticegrid.dev](https://www.latticegrid.dev) · TOCLOCO Inc
8
+ Version 1.71.1 · [latticegrid.dev](https://www.latticegrid.dev) · TOCLOCO Inc
9
9
 
10
10
  ---
11
11
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.71.0",
2
+ "version": "1.71.1",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
5
  "module": "./fesm2022/toclocoinc-lattice-grid-angular.mjs",
package/docs/API.html CHANGED
@@ -382,7 +382,7 @@
382
382
  <div class="shell">
383
383
  <aside class="rail">
384
384
  <p class="rail__brand">Lattice Grid</p>
385
- <p class="rail__sub">API reference · v1.71.0</p>
385
+ <p class="rail__sub">API reference · v1.71.1</p>
386
386
  <nav>
387
387
  <div class="rail__group">
388
388
  <span class="rail__label">Start</span>
@@ -553,7 +553,7 @@
553
553
  </header>
554
554
 
555
555
  <p class="chips">
556
- <span class="chip">Version 1.71.0</span>
556
+ <span class="chip">Version 1.71.1</span>
557
557
  <span class="chip">Zero dependencies</span>
558
558
  <span class="chip"><a href="api-detail.html">Developer guide &rarr;</a></span>
559
559
  </p>
@@ -2180,7 +2180,7 @@ grid.destroy();
2180
2180
  <table>
2181
2181
  <thead><tr><th>Member</th><th>Returns</th><th>Description</th></tr></thead>
2182
2182
  <tbody>
2183
- <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.71.0'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
2183
+ <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.71.1'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
2184
2184
  <tr><td class="sig">get(key)</td><td class="type">unknown</td><td class="desc">Read any configuration key.</td></tr>
2185
2185
  <tr><td class="sig">set(key, value)</td><td class="type">void</td><td class="desc">Write one key. Every key is live; nothing needs a rebuild.</td></tr>
2186
2186
  <tr><td class="sig">setAll(values)</td><td class="type">void</td><td class="desc">Write several in one pass. Emits one <code>config:changed</code> for the batch, not one per key.</td></tr>
@@ -5818,7 +5818,7 @@ const chart = createChart({
5818
5818
  <tr><td class="name">title</td><td class="type">string</td><td class="desc">Drawn above the plot.</td></tr>
5819
5819
  <tr><td class="name">scheme</td><td class="type">string | string[]</td><td class="desc">A named scheme or your own colours. <code>schemeNames()</code> lists the built-in ones, including a colour-blind-safe palette.</td></tr>
5820
5820
  <tr><td class="name">legend</td><td class="type">boolean | object</td><td class="desc"><code>position</code>, and <code>isolate</code> so a click shows only that series, which is what a reader with eight series wants, and what plain toggling makes them do in seven clicks.</td></tr>
5821
- <tr><td class="name">labels</td><td class="type">boolean | object</td><td class="desc">Values beside each mark. <code>position</code>, <code>format</code>, <code>minGap</code>. A label that would overlap one already placed is dropped rather than drawn over it.</td></tr>
5821
+ <tr><td class="name">labels</td><td class="type">boolean | object</td><td class="desc">Values beside each mark. <code>position</code>, <code>format</code>, <code>minGap</code>. A label that would overlap one already placed is dropped rather than drawn over it. <code>horizontalBar</code> draws them exactly as <code>bar</code> does: the figure sits past the end of the bar and, where that would spill past the plot's right edge, inside the bar instead (BACKLOG-0001451).</td></tr>
5822
5822
  <tr><td class="name">axis</td><td class="type">object</td><td class="desc">Titles, tick density and formatting per axis.</td></tr>
5823
5823
  <tr><td class="name">reference</td><td class="type">object[]</td><td class="desc">Horizontal lines: <code>{value, label}</code>.</td></tr>
5824
5824
  <tr><td class="name">multiples</td><td class="type">string</td><td class="desc">One chart per distinct value of this column, on a shared scale.</td></tr>
@@ -5928,6 +5928,16 @@ grid.destroy();
5928
5928
  after the plot has been laid out. <code>margin: { left }</code> is added to whatever the
5929
5929
  labels need rather than competing with it.
5930
5930
  </p>
5931
+ <p class="section-note">
5932
+ <strong>A rule on the column colours the bar</strong> (BACKLOG-0001451). A single-series
5933
+ <code>bar</code> or <code>horizontalBar</code> &mdash; no <code>series</code> key &mdash;
5934
+ takes each mark's fill from the <code>y</code> column's own conditional-formatting rules,
5935
+ the same <code>styleFor</code> a cell and a <a href="#network-map">network link</a> already
5936
+ answer to, and the legend names the rules that fired instead of the one, unnamed series.
5937
+ Without a rule on the column, or with <code>series</code> set, the bars keep the scheme
5938
+ exactly as before &mdash; a rule and a series both mean &ldquo;colour by something&rdquo;,
5939
+ and only one is read at a time.
5940
+ </p>
5931
5941
 
5932
5942
  <h3>The chart</h3>
5933
5943
  <div class="table-wrap">
@@ -6080,15 +6090,29 @@ createGrid(el, {
6080
6090
 
6081
6091
  createChart({ grid, container: '#map', type: 'geomap', code: 'iso', y: 'revenue',
6082
6092
  shapes: pack }); <span class="cmt">// Equal Earth, fitted to the pack</span></code></pre>
6093
+ <p><strong>No bundler? Every pack also ships UMD/CJS</strong> (BACKLOG-0001450), exactly as
6094
+ <code>chart-markermap</code> and the other extension chart types do: a plain <code>&lt;script
6095
+ src&gt;</code> page reaches the pack from its own global rather than an <code>import</code>. Each
6096
+ pack takes its own global — never merged into <code>LatticeGrid</code> — because all five export the
6097
+ same two names (<code>pack</code>, <code>default</code>), and a page loading more than one would have
6098
+ the second overwrite the first on a shared object.</p>
6099
+ <pre><code>&lt;script src="lattice-grid.min.js"&gt;&lt;/script&gt;
6100
+ &lt;script src="modules/charts.min.js"&gt;&lt;/script&gt;
6101
+ &lt;script src="modules/chart-markermap.min.js"&gt;&lt;/script&gt;
6102
+ &lt;script src="modules/geo-world-110m.min.js"&gt;&lt;/script&gt;
6103
+ &lt;script&gt;
6104
+ LatticeGrid.createChart({ grid, container: '#map', type: 'markermap', lon: 'lng', lat: 'lat',
6105
+ shapes: LatticeGridGeoWorld110m.pack });
6106
+ &lt;/script&gt;</code></pre>
6083
6107
  <div class="table-wrap">
6084
6108
  <table>
6085
- <thead><tr><th>Module</th><th>Regions</th><th>Source and licence</th><th>Size (gzipped)</th><th>Attribution required</th></tr></thead>
6109
+ <thead><tr><th>Module</th><th>Script-tag global</th><th>Regions</th><th>Source and licence</th><th>Size (gzipped)</th><th>Attribution required</th></tr></thead>
6086
6110
  <tbody>
6087
- <tr><td class="sig">modules/geo-world-110m</td><td>177 countries</td><td>Natural Earth 1:110m Admin 0, via world-atlas — public domain</td><td>39&nbsp;KB</td><td>None</td></tr>
6088
- <tr><td class="sig">modules/geo-world-50m</td><td>241 countries</td><td>Natural Earth 1:50m Admin 0, via world-atlas — public domain</td><td>225&nbsp;KB</td><td>None</td></tr>
6089
- <tr><td class="sig">modules/geo-us-states</td><td>50 states + DC</td><td>US Census cartographic boundaries, via us-atlas — public domain</td><td>36&nbsp;KB</td><td>None</td></tr>
6090
- <tr><td class="sig">modules/geo-europe-nuts</td><td>NUTS 0–2</td><td>Eurostat GISCO NUTS 2021 1:20m — free re-use with attribution</td><td>95&nbsp;KB</td><td><code>© EuroGeographics for the administrative boundaries</code></td></tr>
6091
- <tr><td class="sig">modules/geo-uk</td><td>9 regions, 361 local authorities, 650 constituencies</td><td>ONS Open Geography, generalised clipped — Open Government Licence v3.0</td><td>292&nbsp;KB</td><td><code>Contains OS data © Crown copyright and database right 2026; Source: Office for National Statistics licensed under the Open Government Licence v.3.0</code></td></tr>
6111
+ <tr><td class="sig">modules/geo-world-110m</td><td class="sig">LatticeGridGeoWorld110m</td><td>177 countries</td><td>Natural Earth 1:110m Admin 0, via world-atlas — public domain</td><td>39&nbsp;KB</td><td>None</td></tr>
6112
+ <tr><td class="sig">modules/geo-world-50m</td><td class="sig">LatticeGridGeoWorld50m</td><td>241 countries</td><td>Natural Earth 1:50m Admin 0, via world-atlas — public domain</td><td>225&nbsp;KB</td><td>None</td></tr>
6113
+ <tr><td class="sig">modules/geo-us-states</td><td class="sig">LatticeGridGeoUsStates</td><td>50 states + DC</td><td>US Census cartographic boundaries, via us-atlas — public domain</td><td>36&nbsp;KB</td><td>None</td></tr>
6114
+ <tr><td class="sig">modules/geo-europe-nuts</td><td class="sig">LatticeGridGeoEuropeNuts</td><td>NUTS 0–2</td><td>Eurostat GISCO NUTS 2021 1:20m — free re-use with attribution</td><td>95&nbsp;KB</td><td><code>© EuroGeographics for the administrative boundaries</code></td></tr>
6115
+ <tr><td class="sig">modules/geo-uk</td><td class="sig">LatticeGridGeoUk</td><td>9 regions, 361 local authorities, 650 constituencies</td><td>ONS Open Geography, generalised clipped — Open Government Licence v3.0</td><td>292&nbsp;KB</td><td><code>Contains OS data © Crown copyright and database right 2026; Source: Office for National Statistics licensed under the Open Government Licence v.3.0</code></td></tr>
6092
6116
  </tbody>
6093
6117
  </table>
6094
6118
  </div>
@@ -20313,7 +20337,7 @@ return `next ${p.mean.toFixed(1)}; r2 ${f.r2.toFixed(1)}; band ${p.upper - p.low
20313
20337
  <!-- END GENERATED TYPE REFERENCE -->
20314
20338
 
20315
20339
  <footer>
20316
- Lattice Grid 1.71.0 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
20340
+ Lattice Grid 1.71.1 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
20317
20341
  This document describes the behaviour of the shipped library. Where this guide and the code
20318
20342
  disagree, the code wins: please <a href="https://www.latticegrid.dev">tell us</a>.
20319
20343
  </footer>
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Adapters API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Adapters API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
package/docs/api/ai.html CHANGED
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>AI API Reference — Lattice Grid 1.71.0</title>
16
+ <title>AI API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Alarms API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Alarms API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Charts API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Charts API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -480,7 +480,7 @@ const chart = createChart({
480
480
  <tr><td class="name">title</td><td class="type">string</td><td class="desc">Drawn above the plot.</td></tr>
481
481
  <tr><td class="name">scheme</td><td class="type">string | string[]</td><td class="desc">A named scheme or your own colours. <code>schemeNames()</code> lists the built-in ones, including a colour-blind-safe palette.</td></tr>
482
482
  <tr><td class="name">legend</td><td class="type">boolean | object</td><td class="desc"><code>position</code>, and <code>isolate</code> so a click shows only that series, which is what a reader with eight series wants, and what plain toggling makes them do in seven clicks.</td></tr>
483
- <tr><td class="name">labels</td><td class="type">boolean | object</td><td class="desc">Values beside each mark. <code>position</code>, <code>format</code>, <code>minGap</code>. A label that would overlap one already placed is dropped rather than drawn over it.</td></tr>
483
+ <tr><td class="name">labels</td><td class="type">boolean | object</td><td class="desc">Values beside each mark. <code>position</code>, <code>format</code>, <code>minGap</code>. A label that would overlap one already placed is dropped rather than drawn over it. <code>horizontalBar</code> draws them exactly as <code>bar</code> does: the figure sits past the end of the bar and, where that would spill past the plot's right edge, inside the bar instead (BACKLOG-0001451).</td></tr>
484
484
  <tr><td class="name">axis</td><td class="type">object</td><td class="desc">Titles, tick density and formatting per axis.</td></tr>
485
485
  <tr><td class="name">reference</td><td class="type">object[]</td><td class="desc">Horizontal lines: <code>{value, label}</code>.</td></tr>
486
486
  <tr><td class="name">multiples</td><td class="type">string</td><td class="desc">One chart per distinct value of this column, on a shared scale.</td></tr>
@@ -590,6 +590,16 @@ grid.destroy();
590
590
  after the plot has been laid out. <code>margin: { left }</code> is added to whatever the
591
591
  labels need rather than competing with it.
592
592
  </p>
593
+ <p class="section-note">
594
+ <strong>A rule on the column colours the bar</strong> (BACKLOG-0001451). A single-series
595
+ <code>bar</code> or <code>horizontalBar</code> &mdash; no <code>series</code> key &mdash;
596
+ takes each mark's fill from the <code>y</code> column's own conditional-formatting rules,
597
+ the same <code>styleFor</code> a cell and a <a href="#network-map">network link</a> already
598
+ answer to, and the legend names the rules that fired instead of the one, unnamed series.
599
+ Without a rule on the column, or with <code>series</code> set, the bars keep the scheme
600
+ exactly as before &mdash; a rule and a series both mean &ldquo;colour by something&rdquo;,
601
+ and only one is read at a time.
602
+ </p>
593
603
 
594
604
  <h3>The chart</h3>
595
605
  <div class="table-wrap">
@@ -742,15 +752,29 @@ createGrid(el, {
742
752
 
743
753
  createChart({ grid, container: '#map', type: 'geomap', code: 'iso', y: 'revenue',
744
754
  shapes: pack }); <span class="cmt">// Equal Earth, fitted to the pack</span></code></pre>
755
+ <p><strong>No bundler? Every pack also ships UMD/CJS</strong> (BACKLOG-0001450), exactly as
756
+ <code>chart-markermap</code> and the other extension chart types do: a plain <code>&lt;script
757
+ src&gt;</code> page reaches the pack from its own global rather than an <code>import</code>. Each
758
+ pack takes its own global — never merged into <code>LatticeGrid</code> — because all five export the
759
+ same two names (<code>pack</code>, <code>default</code>), and a page loading more than one would have
760
+ the second overwrite the first on a shared object.</p>
761
+ <pre><code>&lt;script src="lattice-grid.min.js"&gt;&lt;/script&gt;
762
+ &lt;script src="modules/charts.min.js"&gt;&lt;/script&gt;
763
+ &lt;script src="modules/chart-markermap.min.js"&gt;&lt;/script&gt;
764
+ &lt;script src="modules/geo-world-110m.min.js"&gt;&lt;/script&gt;
765
+ &lt;script&gt;
766
+ LatticeGrid.createChart({ grid, container: '#map', type: 'markermap', lon: 'lng', lat: 'lat',
767
+ shapes: LatticeGridGeoWorld110m.pack });
768
+ &lt;/script&gt;</code></pre>
745
769
  <div class="table-wrap">
746
770
  <table>
747
- <thead><tr><th>Module</th><th>Regions</th><th>Source and licence</th><th>Size (gzipped)</th><th>Attribution required</th></tr></thead>
771
+ <thead><tr><th>Module</th><th>Script-tag global</th><th>Regions</th><th>Source and licence</th><th>Size (gzipped)</th><th>Attribution required</th></tr></thead>
748
772
  <tbody>
749
- <tr><td class="sig">modules/geo-world-110m</td><td>177 countries</td><td>Natural Earth 1:110m Admin 0, via world-atlas — public domain</td><td>39&nbsp;KB</td><td>None</td></tr>
750
- <tr><td class="sig">modules/geo-world-50m</td><td>241 countries</td><td>Natural Earth 1:50m Admin 0, via world-atlas — public domain</td><td>225&nbsp;KB</td><td>None</td></tr>
751
- <tr><td class="sig">modules/geo-us-states</td><td>50 states + DC</td><td>US Census cartographic boundaries, via us-atlas — public domain</td><td>36&nbsp;KB</td><td>None</td></tr>
752
- <tr><td class="sig">modules/geo-europe-nuts</td><td>NUTS 0–2</td><td>Eurostat GISCO NUTS 2021 1:20m — free re-use with attribution</td><td>95&nbsp;KB</td><td><code>© EuroGeographics for the administrative boundaries</code></td></tr>
753
- <tr><td class="sig">modules/geo-uk</td><td>9 regions, 361 local authorities, 650 constituencies</td><td>ONS Open Geography, generalised clipped — Open Government Licence v3.0</td><td>292&nbsp;KB</td><td><code>Contains OS data © Crown copyright and database right 2026; Source: Office for National Statistics licensed under the Open Government Licence v.3.0</code></td></tr>
773
+ <tr><td class="sig">modules/geo-world-110m</td><td class="sig">LatticeGridGeoWorld110m</td><td>177 countries</td><td>Natural Earth 1:110m Admin 0, via world-atlas — public domain</td><td>39&nbsp;KB</td><td>None</td></tr>
774
+ <tr><td class="sig">modules/geo-world-50m</td><td class="sig">LatticeGridGeoWorld50m</td><td>241 countries</td><td>Natural Earth 1:50m Admin 0, via world-atlas — public domain</td><td>225&nbsp;KB</td><td>None</td></tr>
775
+ <tr><td class="sig">modules/geo-us-states</td><td class="sig">LatticeGridGeoUsStates</td><td>50 states + DC</td><td>US Census cartographic boundaries, via us-atlas — public domain</td><td>36&nbsp;KB</td><td>None</td></tr>
776
+ <tr><td class="sig">modules/geo-europe-nuts</td><td class="sig">LatticeGridGeoEuropeNuts</td><td>NUTS 0–2</td><td>Eurostat GISCO NUTS 2021 1:20m — free re-use with attribution</td><td>95&nbsp;KB</td><td><code>© EuroGeographics for the administrative boundaries</code></td></tr>
777
+ <tr><td class="sig">modules/geo-uk</td><td class="sig">LatticeGridGeoUk</td><td>9 regions, 361 local authorities, 650 constituencies</td><td>ONS Open Geography, generalised clipped — Open Government Licence v3.0</td><td>292&nbsp;KB</td><td><code>Contains OS data © Crown copyright and database right 2026; Source: Office for National Statistics licensed under the Open Government Licence v.3.0</code></td></tr>
754
778
  </tbody>
755
779
  </table>
756
780
  </div>
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Data router API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Data router API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Gantt API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Gantt API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Grid API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Grid API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -1115,7 +1115,7 @@ grid.destroy();
1115
1115
  <table>
1116
1116
  <thead><tr><th>Member</th><th>Returns</th><th>Description</th></tr></thead>
1117
1117
  <tbody>
1118
- <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.71.0'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
1118
+ <tr><td class="sig">getVersion()</td><td class="type">string</td><td class="desc">The version this grid came from, e.g. <code>'1.71.1'</code>. Also on the module as <code>getVersion()</code>, for when you have no grid to hand.</td></tr>
1119
1119
  <tr><td class="sig">get(key)</td><td class="type">unknown</td><td class="desc">Read any configuration key.</td></tr>
1120
1120
  <tr><td class="sig">set(key, value)</td><td class="type">void</td><td class="desc">Write one key. Every key is live; nothing needs a rebuild.</td></tr>
1121
1121
  <tr><td class="sig">setAll(values)</td><td class="type">void</td><td class="desc">Write several in one pass. Emits one <code>config:changed</code> for the batch, not one per key.</td></tr>
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>API Reference — Lattice Grid 1.71.0</title>
16
+ <title>API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Kanban API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Kanban API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
package/docs/api/kpi.html CHANGED
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>KPI API Reference — Lattice Grid 1.71.0</title>
16
+ <title>KPI API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Layout API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Layout API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Mock socket API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Mock socket API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Tabs API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Tabs API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -13,7 +13,7 @@
13
13
  Self-contained: no stylesheet, script or font is fetched, so this opens from disk, from
14
14
  a file share or from behind a firewall with nothing else present.
15
15
  -->
16
- <title>Types API Reference — Lattice Grid 1.71.0</title>
16
+ <title>Types API Reference — Lattice Grid 1.71.1</title>
17
17
  <style>
18
18
  /* ---------------------------------------------------------------
19
19
  Palette lifted from the grid's own theme, so the reference reads as an
@@ -437,7 +437,7 @@
437
437
  <div class="shell">
438
438
  <aside class="rail">
439
439
  <p class="rail__brand">Lattice Grid</p>
440
- <p class="rail__sub">Developer guide · v1.71.0</p>
440
+ <p class="rail__sub">Developer guide · v1.71.1</p>
441
441
  <nav>
442
442
  <div class="rail__group">
443
443
  <span class="rail__label">Start here</span>
@@ -554,7 +554,7 @@
554
554
  <a href="API.html">reference tables</a> are the shorter version for when you already know.
555
555
  </p>
556
556
  <p class="chips">
557
- <span class="chip">Version 1.71.0</span>
557
+ <span class="chip">Version 1.71.1</span>
558
558
  <span class="chip">Zero dependencies</span>
559
559
  <span class="chip">No build step</span>
560
560
  </p>
@@ -1493,7 +1493,7 @@ off(); <span class="cmt">// every subscrip
1493
1493
  </p>
1494
1494
  <div class="example">
1495
1495
  <p class="example__label">Which version am I running?</p>
1496
- <pre><code>grid.getVersion(); <span class="cmt">// '1.71.0'</span>
1496
+ <pre><code>grid.getVersion(); <span class="cmt">// '1.71.1'</span>
1497
1497
  LatticeGrid.getVersion(); <span class="cmt">// the same, when you have no grid to hand</span></code></pre>
1498
1498
  </div>
1499
1499
  <p class="lead-in">
@@ -10175,7 +10175,7 @@ grid.licence.state(); <span class="cmt">// 'licensed' | 'localhost' | 'trial'<
10175
10175
 
10176
10176
  <footer>
10177
10177
  <p>
10178
- Lattice Grid 1.71.0 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
10178
+ Lattice Grid 1.71.1 · Copyright © 2026 TOCLOCO Inc. All rights reserved.
10179
10179
  Written against the shipped source. Where this guide and the code disagree, the code wins,
10180
10180
  please <a href="https://www.latticegrid.dev">tell us</a>.
10181
10181
  </p>
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.71.0",
2
+ "version": "1.71.1",
3
3
  "generated": "tools/build.js from docs/warnings/catalogue.json",
4
4
  "about": "Every developer-facing diagnostic Lattice Grid prints to the console, by the key it de-duplicates on. The key is the stable identifier: it is the `id` of every reported entry `grid.diagnostics.warnings()` hands back, what the devtools panel lists, and what to quote in a support conversation. A `*` in an id stands for a value filled in at runtime (a column id, a chart id, an event name), so `icon:*` is one entry covering every column the icon renderer refuses.",
5
5
  "fields": {
package/lattice-grid.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Lattice Grid 1.71.0, type declarations
2
+ * Lattice Grid 1.71.1, type declarations
3
3
  * Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
4
4
  * https://latticegrid.dev
5
5
  */
@@ -11636,6 +11636,28 @@ declare global {
11636
11636
  /** The alarms module's script-tag global. */
11637
11637
  // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11638
11638
  var LatticeGridAlarms: typeof import('lattice-grid/modules/alarms');
11639
+ /**
11640
+ * The five geometry packs' script-tag globals. Each is
11641
+ * data-only and takes its own global rather than merging into
11642
+ * `LatticeGrid`: all five export the same two names (`pack`, `default`), so
11643
+ * a page loading more than one — say `geo-uk` beside `geo-europe-nuts` —
11644
+ * reaches `LatticeGridGeoUk.pack` and `LatticeGridGeoEuropeNuts.pack`
11645
+ * rather than the second overwriting the first on a shared object.
11646
+ */
11647
+ // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11648
+ var LatticeGridGeoWorld110m: typeof import('lattice-grid/modules/geo-world-110m');
11649
+ /** The 1:50m world geometry pack's script-tag global. */
11650
+ // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11651
+ var LatticeGridGeoWorld50m: typeof import('lattice-grid/modules/geo-world-50m');
11652
+ /** The Europe NUTS geometry pack's script-tag global. */
11653
+ // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11654
+ var LatticeGridGeoEuropeNuts: typeof import('lattice-grid/modules/geo-europe-nuts');
11655
+ /** The UK geometry pack's script-tag global. */
11656
+ // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11657
+ var LatticeGridGeoUk: typeof import('lattice-grid/modules/geo-uk');
11658
+ /** The US states geometry pack's script-tag global. */
11659
+ // eslint-disable-next-line no-var -- an ambient global is only a global as a var
11660
+ var LatticeGridGeoUsStates: typeof import('lattice-grid/modules/geo-us-states');
11639
11661
  }
11640
11662
 
11641
11663
  /** The default British English catalogue. */