prographs 0.12.0 → 0.13.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 (269) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +6 -4
  3. package/dist/AutoGraph-PDPEAIXL.cjs +145 -0
  4. package/dist/GraphType.js +19 -0
  5. package/dist/autograph/chartIndex.js +521 -0
  6. package/dist/autograph/chartModules.js +2 -1
  7. package/dist/autograph/index.cjs +98 -93
  8. package/dist/catalog-DI4XZ46L.cjs +142 -0
  9. package/dist/catalog.js +2 -1
  10. package/dist/charts/biologycharts/BiologySamples.js +59 -0
  11. package/dist/charts/biologycharts/PunnettSquare.js +342 -0
  12. package/dist/charts/biologycharts/biologyEnums.js +22 -1
  13. package/dist/charts/biologycharts/index.js +5 -3
  14. package/dist/charts/doecharts/DoeSamples.js +78 -0
  15. package/dist/charts/doecharts/SipocDiagram.js +453 -0
  16. package/dist/charts/doecharts/index.js +4 -2
  17. package/dist/charts/fieldcharts/SpeciesAccumulationCurve.js +350 -0
  18. package/dist/charts/fieldcharts/fieldEnums.js +8 -1
  19. package/dist/charts/fieldcharts/index.js +5 -3
  20. package/dist/charts/signals/AntennaPatternChart.js +492 -0
  21. package/dist/charts/signals/SignalSamples.js +17 -0
  22. package/dist/charts/signals/index.js +5 -3
  23. package/dist/charts/softwarediagrams/ComponentDiagram.js +504 -0
  24. package/dist/charts/softwarediagrams/DeploymentDiagram.js +419 -0
  25. package/dist/charts/softwarediagrams/SoftwareSamples.js +283 -1
  26. package/dist/charts/softwarediagrams/index.js +7 -3
  27. package/dist/charts/softwarediagrams/softwareEnums.js +45 -1
  28. package/dist/charts/sportscharts/PowerDurationCurve.js +301 -0
  29. package/dist/charts/sportscharts/SportsSamples.js +102 -0
  30. package/dist/charts/sportscharts/TrainingLoadChart.js +325 -0
  31. package/dist/charts/sportscharts/index.js +6 -2
  32. package/dist/charts/strategycharts/BassDiffusionChart.js +362 -0
  33. package/dist/charts/strategycharts/BassModel.js +96 -0
  34. package/dist/charts/strategycharts/BurnRunwayChart.js +284 -0
  35. package/dist/charts/strategycharts/CapTableChart.js +366 -0
  36. package/dist/charts/strategycharts/KanbanBoard.js +324 -0
  37. package/dist/charts/strategycharts/OkrTree.js +339 -0
  38. package/dist/charts/strategycharts/StrategyPane.js +27 -0
  39. package/dist/charts/strategycharts/StrategySamples.js +251 -0
  40. package/dist/charts/strategycharts/index.js +15 -3
  41. package/dist/charts/threefields/BsfcMap3DChart.js +231 -0
  42. package/dist/charts/threefields/CompressorMap3DChart.js +217 -0
  43. package/dist/charts/threefields/FieldGrid.js +50 -0
  44. package/dist/charts/threefields/LossLandscape3DChart.js +201 -0
  45. package/dist/charts/threefields/MapSheet.js +77 -0
  46. package/dist/charts/threefields/TerrainRoute3DChart.js +201 -0
  47. package/dist/charts/threefields/TerrainRouteMath.js +40 -0
  48. package/dist/charts/threefields/ThreeFieldBase.js +117 -0
  49. package/dist/charts/threefields/ThreeFieldsSamples.js +80 -0
  50. package/dist/charts/threefields/WaferMap3DChart.js +218 -0
  51. package/dist/charts/threefields/index.js +19 -0
  52. package/dist/charts/threesurfaces/index.js +2 -2
  53. package/dist/charts/tradingcharts/KeltnerChannelChart.js +171 -0
  54. package/dist/charts/tradingcharts/TradingMath.js +20 -0
  55. package/dist/charts/tradingcharts/index.js +4 -2
  56. package/dist/{chunk-ZL6XDXMK.cjs → chunk-26PSLEP4.cjs} +8 -8
  57. package/dist/{chunk-W3US6EFP.cjs → chunk-2BO5DZUP.cjs} +12 -12
  58. package/dist/{chunk-5DP7OUSE.cjs → chunk-2GG5YYSC.cjs} +6 -6
  59. package/dist/{chunk-7FG4JSVO.cjs → chunk-2GL2VNJU.cjs} +253 -33
  60. package/dist/{chunk-LCWMRCLF.cjs → chunk-2PYOI7OY.cjs} +21 -21
  61. package/dist/{chunk-JFWJAEBD.cjs → chunk-3U4MCSKI.cjs} +4 -4
  62. package/dist/{chunk-CUPLHZRR.cjs → chunk-3ZMM3FSK.cjs} +4 -4
  63. package/dist/{chunk-L2AV62DP.cjs → chunk-4767WQJ7.cjs} +6 -6
  64. package/dist/{chunk-DA2EYIIP.cjs → chunk-4E7FSSBF.cjs} +1210 -168
  65. package/dist/{chunk-VS5LQEZB.cjs → chunk-526STI2S.cjs} +5 -5
  66. package/dist/{chunk-RXIMEK6C.cjs → chunk-55767YPI.cjs} +20 -20
  67. package/dist/{chunk-JXLSKIUV.cjs → chunk-5FBQOMMT.cjs} +26 -26
  68. package/dist/{chunk-27PZV5BR.cjs → chunk-5N4Z7MTS.cjs} +4 -4
  69. package/dist/{chunk-KEWCUIQA.cjs → chunk-5WEV6YWA.cjs} +22 -22
  70. package/dist/chunk-5XOVVC5X.cjs +3281 -0
  71. package/dist/{chunk-HK5J7Q2W.cjs → chunk-6HLXVWXU.cjs} +9 -9
  72. package/dist/{chunk-7JG47RW4.cjs → chunk-6LQT4WJ5.cjs} +25 -25
  73. package/dist/{chunk-OCVTI6X4.cjs → chunk-6YTWOUFD.cjs} +329 -36
  74. package/dist/{chunk-W7IQCAVN.cjs → chunk-7F6W6HKL.cjs} +11 -11
  75. package/dist/{chunk-F2DCJXDM.cjs → chunk-7L6KYU5A.cjs} +21 -21
  76. package/dist/{chunk-GTGR6LPR.cjs → chunk-A4GIN4FE.cjs} +17 -17
  77. package/dist/{chunk-B2CETSR6.cjs → chunk-A4US7SA7.cjs} +5 -5
  78. package/dist/{chunk-3DIF2YYW.cjs → chunk-AOXPBLPW.cjs} +10 -10
  79. package/dist/{chunk-7TTR4UF5.cjs → chunk-ATI45Z4M.cjs} +2 -2
  80. package/dist/{chunk-5BFCIX2V.cjs → chunk-CPPMO4IQ.cjs} +434 -148
  81. package/dist/{chunk-AYZZQ6AC.cjs → chunk-CZ5KGF6Q.cjs} +9 -9
  82. package/dist/{chunk-7THJ3ZBK.cjs → chunk-D4I35MCE.cjs} +2 -2
  83. package/dist/{chunk-MCPPFRLN.cjs → chunk-DCGAAN3Z.cjs} +2 -2
  84. package/dist/{chunk-VABL6CVX.cjs → chunk-DEY36N37.cjs} +21 -21
  85. package/dist/{chunk-RNCKGJCC.cjs → chunk-DXHXD3DK.cjs} +3 -3
  86. package/dist/{chunk-A56ZGMVZ.cjs → chunk-E7B45DBZ.cjs} +11 -11
  87. package/dist/{chunk-DOR6L4MT.cjs → chunk-EJC6EAC5.cjs} +18 -18
  88. package/dist/{chunk-UPGNM7MA.cjs → chunk-EULJOOMA.cjs} +11 -11
  89. package/dist/{chunk-G4AZL4GO.cjs → chunk-EYM6LEIF.cjs} +474 -70
  90. package/dist/{chunk-NJ4X6XGV.cjs → chunk-EZTYX2GH.cjs} +5 -5
  91. package/dist/chunk-FDD4UP73.cjs +521 -0
  92. package/dist/{chunk-WJ3VH2Q4.cjs → chunk-GEAIGM3J.cjs} +110 -615
  93. package/dist/{chunk-P3SBHF43.cjs → chunk-GRUYVXTS.cjs} +2 -2
  94. package/dist/{chunk-NX4Z5LMS.cjs → chunk-H3SZXND5.cjs} +5 -5
  95. package/dist/{chunk-EE4S4TOE.cjs → chunk-HS45TOFJ.cjs} +21 -21
  96. package/dist/chunk-INGOG6OV.cjs +899 -0
  97. package/dist/{chunk-UDKA6DGT.cjs → chunk-J3CDXZHF.cjs} +4 -4
  98. package/dist/{chunk-YO6G7TKI.cjs → chunk-JAU5ADEU.cjs} +11 -11
  99. package/dist/{chunk-22LBK4GA.cjs → chunk-JQEBSHX3.cjs} +4 -4
  100. package/dist/{chunk-RXX3U7VQ.cjs → chunk-KLXGLMFU.cjs} +10 -10
  101. package/dist/chunk-KVOX36J3.cjs +327 -0
  102. package/dist/chunk-L6BGNHFL.cjs +139 -0
  103. package/dist/{chunk-GMER35L3.cjs → chunk-L7TB7PU5.cjs} +20 -20
  104. package/dist/{chunk-AFXYNBL2.cjs → chunk-LBTRYEM2.cjs} +4 -4
  105. package/dist/{chunk-WYYCKIOD.cjs → chunk-LLULNJSP.cjs} +11 -11
  106. package/dist/{chunk-J27XOSLP.cjs → chunk-LSO46AFV.cjs} +8 -8
  107. package/dist/{chunk-5XJO45ES.cjs → chunk-LZ2KJ7ZX.cjs} +11 -11
  108. package/dist/chunk-M4IQ5LIZ.cjs +422 -0
  109. package/dist/{chunk-Y2KIUKJF.cjs → chunk-MPDHDKYZ.cjs} +11 -11
  110. package/dist/{chunk-4EMPKRZU.cjs → chunk-MRQ42ZJE.cjs} +3 -3
  111. package/dist/{chunk-EU5D2MF4.cjs → chunk-MYV4KZWP.cjs} +9 -9
  112. package/dist/{chunk-XD7KN4UN.cjs → chunk-MZXVLC24.cjs} +6 -6
  113. package/dist/{chunk-PPSONARU.cjs → chunk-NLBVDFIR.cjs} +41 -2
  114. package/dist/{chunk-L3PEGMGM.cjs → chunk-NY3TBZY4.cjs} +33 -33
  115. package/dist/{chunk-6YNYXXB6.cjs → chunk-OGVVSFAR.cjs} +3 -3
  116. package/dist/{chunk-MLV7QLB6.cjs → chunk-OMTQIQMN.cjs} +6 -6
  117. package/dist/{chunk-BEEOSNK7.cjs → chunk-PEJJ6TXJ.cjs} +15 -144
  118. package/dist/{chunk-SOKOWUF5.cjs → chunk-PPGWHIU7.cjs} +2 -2
  119. package/dist/{chunk-IELWOM2J.cjs → chunk-PPO6SDAN.cjs} +6 -6
  120. package/dist/{chunk-6JTZZCSL.cjs → chunk-PUMKX5F2.cjs} +3 -3
  121. package/dist/{chunk-RFOXFY2U.cjs → chunk-PXBYWCNB.cjs} +190 -799
  122. package/dist/{chunk-3BYXOISI.cjs → chunk-Q3HB3IX6.cjs} +4 -4
  123. package/dist/{chunk-RXCOVONX.cjs → chunk-RBMUOIXE.cjs} +289 -34
  124. package/dist/{chunk-MSBNHCSE.cjs → chunk-RJHGCUUD.cjs} +6 -6
  125. package/dist/{chunk-I6VG7F6Z.cjs → chunk-RSONDMYW.cjs} +708 -141
  126. package/dist/{chunk-GZDNPHMT.cjs → chunk-SHMPFCUE.cjs} +19 -19
  127. package/dist/{chunk-ZIBVCOW6.cjs → chunk-SN4FCXFC.cjs} +19 -19
  128. package/dist/{chunk-7KM52NMN.cjs → chunk-SN5T7WYO.cjs} +2 -2
  129. package/dist/{chunk-7MSZR65Z.cjs → chunk-SQJZGVDR.cjs} +7 -7
  130. package/dist/chunk-SYABFMD7.cjs +633 -0
  131. package/dist/{chunk-2RRFEYFH.cjs → chunk-TICB3MAC.cjs} +16 -16
  132. package/dist/{chunk-AOOKHUV5.cjs → chunk-U7Z7XYR2.cjs} +5 -5
  133. package/dist/{chunk-JEWQAXVG.cjs → chunk-UA2THQFV.cjs} +6 -6
  134. package/dist/{chunk-LHZPAHU3.cjs → chunk-VIK4L2YF.cjs} +112 -521
  135. package/dist/{chunk-4YWMAQ4J.cjs → chunk-VM2Y6BDY.cjs} +4 -4
  136. package/dist/{chunk-IRRKE2ZE.cjs → chunk-VMS3KWYI.cjs} +21 -21
  137. package/dist/{chunk-4SLARW6F.cjs → chunk-VU5NUD46.cjs} +17 -17
  138. package/dist/{chunk-XHY6TVYG.cjs → chunk-VV5CVOF7.cjs} +13 -13
  139. package/dist/{chunk-CCIBPGPZ.cjs → chunk-VYSAWPSS.cjs} +57 -57
  140. package/dist/{chunk-TTNEMQ2A.cjs → chunk-W7YRWEWQ.cjs} +22 -22
  141. package/dist/{chunk-C7MUOGEW.cjs → chunk-X7R5SY62.cjs} +6 -6
  142. package/dist/{chunk-ILR5KBMB.cjs → chunk-XOK3KTSS.cjs} +6 -6
  143. package/dist/{chunk-2CZM2I3T.cjs → chunk-XUIX45VU.cjs} +19 -19
  144. package/dist/{chunk-TGRMPS3A.cjs → chunk-XWH46PVJ.cjs} +165 -43
  145. package/dist/{chunk-WQYXXECR.cjs → chunk-Y5XVMK3K.cjs} +6 -6
  146. package/dist/{chunk-AK4TX2WG.cjs → chunk-YCNKEDTG.cjs} +13 -13
  147. package/dist/{chunk-PJJB24DU.cjs → chunk-YEF7SE3X.cjs} +20 -20
  148. package/dist/{chunk-RVLV4XW6.cjs → chunk-YMTVPMU3.cjs} +22 -22
  149. package/dist/data/index.cjs +2 -2
  150. package/dist/entries/autograph-lazy.cjs +2 -2
  151. package/dist/entries/charts/acoustictransport.cjs +3 -3
  152. package/dist/entries/charts/analysischarts.cjs +3 -3
  153. package/dist/entries/charts/astrocharts.cjs +3 -3
  154. package/dist/entries/charts/bars.cjs +3 -3
  155. package/dist/entries/charts/bayesiancharts.cjs +3 -3
  156. package/dist/entries/charts/biocharts.cjs +3 -3
  157. package/dist/entries/charts/biologycharts.cjs +11 -3
  158. package/dist/entries/charts/biologycharts.d.ts +1 -1
  159. package/dist/entries/charts/biologycharts.js +3 -2
  160. package/dist/entries/charts/business.cjs +3 -3
  161. package/dist/entries/charts/carecharts.cjs +3 -3
  162. package/dist/entries/charts/chemistrycharts.cjs +3 -3
  163. package/dist/entries/charts/civicscharts.cjs +3 -3
  164. package/dist/entries/charts/clinicalcharts.cjs +3 -3
  165. package/dist/entries/charts/comparison.cjs +3 -3
  166. package/dist/entries/charts/demography.cjs +3 -3
  167. package/dist/entries/charts/density.cjs +3 -3
  168. package/dist/entries/charts/diagrams.cjs +3 -3
  169. package/dist/entries/charts/distribution.cjs +3 -3
  170. package/dist/entries/charts/doecharts.cjs +13 -3
  171. package/dist/entries/charts/doecharts.d.ts +1 -1
  172. package/dist/entries/charts/doecharts.js +2 -1
  173. package/dist/entries/charts/earthscience.cjs +3 -3
  174. package/dist/entries/charts/economicscharts.cjs +3 -3
  175. package/dist/entries/charts/energycharts.cjs +3 -3
  176. package/dist/entries/charts/engineering.cjs +3 -3
  177. package/dist/entries/charts/fieldcharts.cjs +7 -3
  178. package/dist/entries/charts/fieldcharts.d.ts +1 -1
  179. package/dist/entries/charts/fieldcharts.js +3 -2
  180. package/dist/entries/charts/financial.cjs +3 -3
  181. package/dist/entries/charts/flow.cjs +3 -3
  182. package/dist/entries/charts/frameworks.cjs +3 -3
  183. package/dist/entries/charts/genomics.cjs +3 -3
  184. package/dist/entries/charts/geoflows.cjs +3 -3
  185. package/dist/entries/charts/geomaps.cjs +3 -3
  186. package/dist/entries/charts/geosciencecharts.cjs +3 -3
  187. package/dist/entries/charts/hierarchy.cjs +3 -3
  188. package/dist/entries/charts/indicators.cjs +3 -3
  189. package/dist/entries/charts/inferencecharts.cjs +3 -3
  190. package/dist/entries/charts/layoutcharts.cjs +3 -3
  191. package/dist/entries/charts/lifescience.cjs +4 -4
  192. package/dist/entries/charts/linesareas.cjs +3 -3
  193. package/dist/entries/charts/logisticscharts.cjs +3 -3
  194. package/dist/entries/charts/machinecharts.cjs +7 -3
  195. package/dist/entries/charts/machinecharts.d.ts +1 -1
  196. package/dist/entries/charts/machinecharts.js +2 -1
  197. package/dist/entries/charts/massive.cjs +3 -3
  198. package/dist/entries/charts/mathematical.cjs +3 -3
  199. package/dist/entries/charts/matrix.cjs +3 -3
  200. package/dist/entries/charts/medicalcharts.cjs +4 -4
  201. package/dist/entries/charts/mlcharts.cjs +4 -4
  202. package/dist/entries/charts/modelcharts.cjs +6 -5
  203. package/dist/entries/charts/multivariate.cjs +3 -3
  204. package/dist/entries/charts/musiccharts.cjs +3 -3
  205. package/dist/entries/charts/network.cjs +3 -3
  206. package/dist/entries/charts/physicscharts.cjs +3 -3
  207. package/dist/entries/charts/pictorial.cjs +4 -4
  208. package/dist/entries/charts/portfoliocharts.cjs +3 -3
  209. package/dist/entries/charts/productcharts.cjs +3 -3
  210. package/dist/entries/charts/proportion.cjs +3 -3
  211. package/dist/entries/charts/qualitycharts.cjs +3 -3
  212. package/dist/entries/charts/radial.cjs +3 -3
  213. package/dist/entries/charts/reliabilitycharts.cjs +5 -3
  214. package/dist/entries/charts/scatter.cjs +3 -3
  215. package/dist/entries/charts/scientific.cjs +3 -3
  216. package/dist/entries/charts/seriescharts.cjs +3 -3
  217. package/dist/entries/charts/signals.cjs +7 -3
  218. package/dist/entries/charts/signals.d.ts +1 -1
  219. package/dist/entries/charts/signals.js +2 -1
  220. package/dist/entries/charts/softwarediagrams.cjs +21 -3
  221. package/dist/entries/charts/softwarediagrams.d.ts +1 -1
  222. package/dist/entries/charts/softwarediagrams.js +4 -2
  223. package/dist/entries/charts/sportscharts.cjs +13 -3
  224. package/dist/entries/charts/sportscharts.d.ts +1 -1
  225. package/dist/entries/charts/sportscharts.js +3 -1
  226. package/dist/entries/charts/statistics.cjs +6 -6
  227. package/dist/entries/charts/strategycharts.cjs +30 -3
  228. package/dist/entries/charts/strategycharts.d.ts +1 -1
  229. package/dist/entries/charts/strategycharts.js +6 -1
  230. package/dist/entries/charts/structure.cjs +3 -3
  231. package/dist/entries/charts/surveycharts.cjs +3 -3
  232. package/dist/entries/charts/systemscharts.cjs +3 -3
  233. package/dist/entries/charts/textcharts.cjs +5 -5
  234. package/dist/entries/charts/thematicmaps.cjs +4 -4
  235. package/dist/entries/charts/threebars.cjs +3 -3
  236. package/dist/entries/charts/threefields.cjs +53 -0
  237. package/dist/entries/charts/threefields.d.ts +1 -0
  238. package/dist/entries/charts/threefields.js +6 -0
  239. package/dist/entries/charts/threeglobe.cjs +3 -3
  240. package/dist/entries/charts/threenetwork.cjs +3 -3
  241. package/dist/entries/charts/threestrata.cjs +3 -3
  242. package/dist/entries/charts/threesurfaces.cjs +7 -3
  243. package/dist/entries/charts/threesurfaces.d.ts +1 -1
  244. package/dist/entries/charts/threesurfaces.js +2 -1
  245. package/dist/entries/charts/threevolume.cjs +4 -4
  246. package/dist/entries/charts/timeline.cjs +3 -3
  247. package/dist/entries/charts/tracecharts.cjs +3 -3
  248. package/dist/entries/charts/trackscharts.cjs +3 -3
  249. package/dist/entries/charts/tradingcharts.cjs +6 -4
  250. package/dist/entries/charts/tradingcharts.d.ts +1 -1
  251. package/dist/entries/charts/tradingcharts.js +2 -1
  252. package/dist/entries/three.cjs +60 -20
  253. package/dist/entries/three.d.ts +1 -1
  254. package/dist/entries/three.js +7 -1
  255. package/dist/index.cjs +258 -97
  256. package/dist/index.d.cts +1953 -10
  257. package/dist/index.d.ts +1953 -10
  258. package/dist/index.js +26 -5
  259. package/dist/page/index.cjs +2 -2
  260. package/dist/react/components.js +58 -1
  261. package/dist/react/index.cjs +135 -92
  262. package/dist/react/index.d.ts +1 -1
  263. package/dist/react/index.js +2 -2
  264. package/package.json +1 -1
  265. package/dist/AutoGraph-XLBJQDRB.cjs +0 -140
  266. package/dist/catalog-O7XGDD2H.cjs +0 -137
  267. package/dist/chunk-77K2HTRC.cjs +0 -3220
  268. package/dist/chunk-XEK47TVD.cjs +0 -323
  269. /package/dist/{chunk-UMEKIIHJ.cjs → chunk-LNWTC72Y.cjs} +0 -0
@@ -21,7 +21,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
21
21
  var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
22
22
 
23
23
 
24
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
24
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
25
25
 
26
26
  // src/charts/astrocharts/RotationFit.ts
27
27
  var RotationHalo = /* @__PURE__ */ ((RotationHalo2) => {
@@ -169,7 +169,7 @@ function pulsation(phase) {
169
169
  var AstroSamples = class {
170
170
  /** An RR Lyrae star in two bands: `time` (days), `magnitude`, `error`, `band`. */
171
171
  static lightCurve(seed) {
172
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
172
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
173
173
  return Array.from({ length: OBSERVER_NIGHTS }, (_, night) => night).filter(() => u() > 0.2).flatMap((night) => {
174
174
  const hour = 0.08 + 0.34 * u();
175
175
  return BANDS.map(([band, mean, amplitude], i) => {
@@ -180,7 +180,7 @@ var AstroSamples = class {
180
180
  }
181
181
  /** A spiral with a small bulge: `radius` (kpc), `velocity`, `error`, `gas`, `disk`, `bulge` (km/s). */
182
182
  static rotation(seed) {
183
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
183
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
184
184
  const scale = 2.6 + 0.6 * u(), peak = 125 + 25 * u(), gasPeak = 42 + 12 * u(), haloV = 150 + 25 * u(), haloScale = 9 + 6 * u();
185
185
  return Array.from({ length: KPC_BINS }, (_, i) => {
186
186
  const radius = 0.6 + 0.92 * i, x = radius / (3.2 * scale);
@@ -194,7 +194,7 @@ var AstroSamples = class {
194
194
  }
195
195
  /** A horizon survey from a site: low hills, a tree line and one building. `azimuth`, `altitude` in degrees. */
196
196
  static horizon(seed) {
197
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
197
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
198
198
  const roll = 4 * u(), start = 110 + 20 * u();
199
199
  return Array.from({ length: 72 }, (_, i) => {
200
200
  const azimuth = i * 5, hills = 3 + 2 * Math.sin(azimuth / 40 + roll) + 1.2 * Math.sin(azimuth / 13 + roll);
@@ -205,7 +205,7 @@ var AstroSamples = class {
205
205
  }
206
206
  /** Survey tiles from one night programme, with a deep field near the zenith. `field`, `azimuth`, `altitude`, `exposures`. */
207
207
  static pointings(seed) {
208
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
208
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
209
209
  const survey = Array.from({ length: 170 }, (_, i) => {
210
210
  const azimuth = 180 + 62 * n(), altitude = Math.min(88, Math.max(18, 52 + 15 * n()));
211
211
  return { field: `S${String(i + 1).padStart(3, "0")}`, azimuth: +((azimuth % 360 + 360) % 360).toFixed(1), altitude: +altitude.toFixed(1), exposures: 1 + Math.floor(5 * u()) };
@@ -220,7 +220,7 @@ var AstroSamples = class {
220
220
  }
221
221
  /** Distance moduli drawn around flat ΛCDM with H0 = 70. `name`, `redshift`, `modulus`, `error`, `probe`. */
222
222
  static hubble(seed) {
223
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
223
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
224
224
  const model = new AstroCosmology(70, 0.3, 0.7);
225
225
  return PROBES.flatMap(([probe, count, low, high, scatter]) => Array.from({ length: count }, (_, i) => {
226
226
  const z = low * (high / low) ** u();
@@ -508,6 +508,7 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
508
508
  GraphType2["LogicAnalyzerChart"] = "signal-logic-analyzer";
509
509
  GraphType2["PhaseSpaceChart"] = "signal-phase-space";
510
510
  GraphType2["PhaseSpace3DChart"] = "signal-phase-space-3d";
511
+ GraphType2["AntennaPatternChart"] = "signal-antenna-pattern";
511
512
  GraphType2["MassiveScatterChart"] = "massive-scatter";
512
513
  GraphType2["MassiveLineChart"] = "massive-line";
513
514
  GraphType2["MassiveDensityChart"] = "massive-density";
@@ -660,6 +661,8 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
660
661
  GraphType2["PitchHeatmap"] = "pitch-heatmap";
661
662
  GraphType2["HockeyRinkShotMap"] = "hockey-rink-shot-map";
662
663
  GraphType2["GolfShotDispersion"] = "golf-shot-dispersion";
664
+ GraphType2["PowerDurationCurve"] = "power-duration-curve";
665
+ GraphType2["TrainingLoadChart"] = "training-load";
663
666
  GraphType2["SwimmerPlot"] = "swimmer-plot";
664
667
  GraphType2["OncologyWaterfallPlot"] = "oncology-waterfall";
665
668
  GraphType2["TumourSpiderPlot"] = "tumour-spider-plot";
@@ -744,6 +747,7 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
744
747
  GraphType2["PollenDiagram"] = "pollen-diagram";
745
748
  GraphType2["WhittakerBiomeDiagram"] = "whittaker-biome-diagram";
746
749
  GraphType2["KobePlot"] = "kobe-plot";
750
+ GraphType2["SpeciesAccumulationCurve"] = "species-accumulation-curve";
747
751
  GraphType2["LAbbePlot"] = "meta-labbe-plot";
748
752
  GraphType2["GalbraithPlot"] = "meta-galbraith-plot";
749
753
  GraphType2["BaujatPlot"] = "meta-baujat-plot";
@@ -836,6 +840,7 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
836
840
  GraphType2["VelocityChart"] = "velocity-chart";
837
841
  GraphType2["GageRRChart"] = "gage-rr";
838
842
  GraphType2["ProcessCapabilityChart"] = "process-capability";
843
+ GraphType2["SipocDiagram"] = "sipoc-diagram";
839
844
  GraphType2["HypeCycleChart"] = "hype-cycle";
840
845
  GraphType2["TechnologyAdoptionCurve"] = "technology-adoption-curve";
841
846
  GraphType2["KanoModelChart"] = "kano-model";
@@ -847,12 +852,18 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
847
852
  GraphType2["EisenhowerMatrix"] = "eisenhower-matrix";
848
853
  GraphType2["FootballFieldChart"] = "football-field";
849
854
  GraphType2["NineBoxGrid"] = "nine-box-grid";
855
+ GraphType2["CapTableChart"] = "cap-table";
856
+ GraphType2["BurnRunwayChart"] = "burn-runway";
857
+ GraphType2["KanbanBoard"] = "kanban-board";
858
+ GraphType2["OkrTree"] = "okr-tree";
859
+ GraphType2["BassDiffusionChart"] = "bass-diffusion";
850
860
  GraphType2["EquivolumeChart"] = "equivolume";
851
861
  GraphType2["ParabolicSARChart"] = "parabolic-sar";
852
862
  GraphType2["FibonacciRetracementChart"] = "fibonacci-retracement";
853
863
  GraphType2["ADXChart"] = "adx";
854
864
  GraphType2["AdvanceDeclineChart"] = "advance-decline-line";
855
865
  GraphType2["FootprintChart"] = "footprint";
866
+ GraphType2["KeltnerChannelChart"] = "keltner-channels";
856
867
  GraphType2["AlePlot"] = "ale-plot";
857
868
  GraphType2["KsChart"] = "ks-chart";
858
869
  GraphType2["DecisionCurveChart"] = "decision-curve";
@@ -871,6 +882,8 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
871
882
  GraphType2["SignalFlowGraph"] = "signal-flow-graph";
872
883
  GraphType2["ParseTree"] = "parse-tree";
873
884
  GraphType2["TrieDiagram"] = "trie-diagram";
885
+ GraphType2["ComponentDiagram"] = "uml-component-diagram";
886
+ GraphType2["DeploymentDiagram"] = "uml-deployment-diagram";
874
887
  GraphType2["FaultTreeDiagram"] = "fault-tree";
875
888
  GraphType2["EventTreeDiagram"] = "event-tree";
876
889
  GraphType2["BowTieDiagram"] = "bow-tie";
@@ -911,6 +924,7 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
911
924
  GraphType2["FoodWebChart"] = "food-web";
912
925
  GraphType2["EpidemicCurve"] = "epidemic-curve";
913
926
  GraphType2["PrismaFlowDiagram"] = "prisma-flow-diagram";
927
+ GraphType2["PunnettSquare"] = "punnett-square";
914
928
  GraphType2["Meteogram"] = "meteogram";
915
929
  GraphType2["FocalMechanismChart"] = "focal-mechanism";
916
930
  GraphType2["StratigraphicColumn"] = "stratigraphic-column";
@@ -951,6 +965,11 @@ var GraphType = /* @__PURE__ */ ((GraphType2) => {
951
965
  GraphType2["SparklineMap"] = "sparkline-map";
952
966
  GraphType2["ContiguousCartogram"] = "contiguous-cartogram";
953
967
  GraphType2["OdMap"] = "od-map";
968
+ GraphType2["LossLandscape3DChart"] = "loss-landscape-3d";
969
+ GraphType2["CompressorMap3DChart"] = "compressor-map-3d";
970
+ GraphType2["BsfcMap3DChart"] = "bsfc-map-3d";
971
+ GraphType2["TerrainRoute3DChart"] = "terrain-route-3d";
972
+ GraphType2["WaferMap3DChart"] = "wafer-map-3d";
954
973
  return GraphType2;
955
974
  })(GraphType || {});
956
975
 
@@ -1454,6 +1473,7 @@ var CHART_INDEX = {
1454
1473
  ["signal-logic-analyzer"]: { name: "Logic analyzer", module: "signals", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 240, perGroup: 48, slots: [["x", "t", "number"], ["y", "value", "number"], ["series", "series", "category"]] },
1455
1474
  ["signal-phase-space"]: { name: "Phase space plot", module: "signals", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 3200, perGroup: 1600, slots: [["x", "t", "number"], ["y", "value", "number"], ["series", "series", "category"]] },
1456
1475
  ["signal-phase-space-3d"]: { name: "3D phase space", module: "signals", family: "scientific", shape: "table", form: "table", dimension: 3, rows: 4800, perGroup: 1600, slots: [["x", "t", "number"], ["y", "value", "number"], ["series", "series", "category"]] },
1476
+ ["signal-antenna-pattern"]: { name: "Antenna radiation pattern", module: "signals", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 360, perGroup: 180, slots: [["x", "angle", "number"], ["y", "gain", "number"], ["series", "cut", "category"]] },
1457
1477
  ["massive-scatter"]: { name: "Massive scatter", module: "massive", family: "relationship", shape: "table", form: "table", dimension: 2, rows: 6e4, perGroup: 2e4, slots: [["x", "x", "number"], ["y", "y", "number"], ["series", "group", "category"]] },
1458
1478
  ["massive-line"]: { name: "Massive line", module: "massive", family: "trend", shape: "table", form: "table", dimension: 2, rows: 6e4, perGroup: 2e4, slots: [["x", "date", "date"], ["y", "value", "number"], ["series", "series", "category"]] },
1459
1479
  ["massive-density"]: { name: "Massive density", module: "massive", family: "distribution", shape: "table", form: "table", dimension: 2, rows: 6e4, perGroup: 2e4, slots: [["x", "x", "number"], ["y", "y", "number"]] },
@@ -1606,6 +1626,8 @@ var CHART_INDEX = {
1606
1626
  ["pitch-heatmap"]: { name: "Pitch heatmap", module: "sportscharts", family: "pictorial", shape: "table", form: "table", dimension: 2, rows: 360, perGroup: 90, slots: [["x", "x", "number"], ["y", "y", "number"]] },
1607
1627
  ["hockey-rink-shot-map"]: { name: "Hockey rink shot map", module: "sportscharts", family: "pictorial", shape: "table", form: "table", dimension: 2, rows: 61, perGroup: 31, slots: [["x", "x", "number"], ["y", "y", "number"], ["team", "team", "category"], ["player", "player", "category"], ["result", "result", "category"]] },
1608
1628
  ["golf-shot-dispersion"]: { name: "Golf shot dispersion", module: "sportscharts", family: "pictorial", shape: "table", form: "table", dimension: 2, rows: 72, perGroup: 18, slots: [["club", "club", "category"], ["carry", "carry", "number"], ["offline", "offline", "number"], ["target", "target", "number"]] },
1629
+ ["power-duration-curve"]: { name: "Power-duration curve", module: "sportscharts", family: "trend", shape: "table", form: "table", dimension: 2, rows: 84, perGroup: 28, slots: [["x", "duration", "number"], ["y", "power", "number"], ["period", "period", "category"], ["weight", "weight", "number"], ["athlete", "athlete", "category"]] },
1630
+ ["training-load"]: { name: "Training load chart", module: "sportscharts", family: "trend", shape: "table", form: "table", dimension: 2, rows: 94, perGroup: 1, slots: [["x", "date", "date"], ["y", "load", "number"], ["athlete", "athlete", "category"]] },
1609
1631
  ["swimmer-plot"]: { name: "Swimmer plot", module: "clinicalcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 49, perGroup: 16, slots: [["subject", "subject", "category"], ["phase", "phase", "category"], ["start", "start", "number"], ["end", "end", "number"], ["event", "event", "category"], ["time", "time", "number"], ["ongoing", "ongoing", "number"]] },
1610
1632
  ["oncology-waterfall"]: { name: "Oncology waterfall plot", module: "clinicalcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 28, perGroup: 1, slots: [["subject", "subject", "category"], ["change", "change", "number"], ["response", "response", "category"]] },
1611
1633
  ["tumour-spider-plot"]: { name: "Tumour spider plot", module: "clinicalcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 134, perGroup: 7, slots: [["subject", "subject", "category"], ["week", "week", "number"], ["change", "change", "number"], ["response", "response", "category"], ["ongoing", "ongoing", "number"]] },
@@ -1690,6 +1712,7 @@ var CHART_INDEX = {
1690
1712
  ["pollen-diagram"]: { name: "Pollen diagram", module: "fieldcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 300, perGroup: 30, slots: [["depth", "depth", "number"], ["taxon", "taxon", "category"], ["count", "count", "number"], ["group", "type", "category"]] },
1691
1713
  ["whittaker-biome-diagram"]: { name: "Whittaker biome diagram", module: "fieldcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 70, perGroup: 1, slots: [["x", "temperature", "number"], ["y", "precipitation", "number"], ["group", "network", "category"], ["label", "site", "category"]] },
1692
1714
  ["kobe-plot"]: { name: "Kobe plot", module: "fieldcharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 120, perGroup: 40, slots: [["biomass", "biomass", "number"], ["fishing", "fishing", "number"], ["year", "year", "date"], ["stock", "stock", "category"]] },
1715
+ ["species-accumulation-curve"]: { name: "Species accumulation curve", module: "fieldcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 339, perGroup: 113, slots: [["site", "site", "category"], ["sample", "sample", "category"], ["species", "species", "category"], ["count", "count", "number"]] },
1693
1716
  ["meta-labbe-plot"]: { name: "L'Abb\xE9 plot", module: "medicalcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 16, perGroup: 1, slots: [["study", "study", "category"], ["treatmentEvents", "treatmentEvents", "number"], ["treatmentTotal", "treatmentTotal", "number"], ["controlEvents", "controlEvents", "number"], ["controlTotal", "controlTotal", "number"]] },
1694
1717
  ["meta-galbraith-plot"]: { name: "Galbraith radial plot", module: "medicalcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 14, perGroup: 1, slots: [["effect", "effect", "number"], ["se", "se", "number"], ["study", "study", "category"]] },
1695
1718
  ["meta-baujat-plot"]: { name: "Baujat plot", module: "medicalcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 14, perGroup: 1, slots: [["effect", "effect", "number"], ["se", "se", "number"], ["study", "study", "category"]] },
@@ -1782,6 +1805,7 @@ var CHART_INDEX = {
1782
1805
  ["velocity-chart"]: { name: "Velocity chart", module: "doecharts", family: "project", shape: "table", form: "table", dimension: 2, rows: 10, perGroup: 1, slots: [["x", "sprint", "category"], ["y", "completed", "number"], ["committed", "committed", "number"]] },
1783
1806
  ["gage-rr"]: { name: "Gage R&R chart", module: "doecharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 90, perGroup: 9, slots: [["part", "part", "category"], ["operator", "operator", "category"], ["value", "value", "number"]] },
1784
1807
  ["process-capability"]: { name: "Process capability chart", module: "doecharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 125, perGroup: 1, slots: [["value", "value", "number"], ["subgroup", "subgroup", "number"], ["lsl", "lsl", "number"], ["usl", "usl", "number"], ["target", "target", "number"]] },
1808
+ ["sipoc-diagram"]: { name: "SIPOC diagram", module: "doecharts", family: "flow", shape: "table", form: "table", dimension: 2, rows: 25, perGroup: 5, slots: [["stage", "stage", "category"], ["item", "item", "category"], ["partner", "partner", "category"]] },
1785
1809
  ["hype-cycle"]: { name: "Hype cycle", module: "strategycharts", family: "temporal", shape: "table", form: "table", dimension: 2, rows: 12, perGroup: 1, slots: [["item", "technology", "category"], ["position", "position", "number"], ["plateau", "years", "category"]] },
1786
1810
  ["technology-adoption-curve"]: { name: "Technology adoption curve", module: "strategycharts", family: "distribution", shape: "table", form: "table", dimension: 2, rows: 5, perGroup: 1, slots: [["item", "technology", "category"], ["adoption", "adoption", "number"]] },
1787
1811
  ["kano-model"]: { name: "Kano model", module: "strategycharts", family: "relationship", shape: "table", form: "table", dimension: 2, rows: 11, perGroup: 1, slots: [["item", "feature", "category"], ["category", "category", "category"], ["implementation", "implementation", "number"], ["satisfaction", "satisfaction", "number"]] },
@@ -1793,12 +1817,18 @@ var CHART_INDEX = {
1793
1817
  ["eisenhower-matrix"]: { name: "Eisenhower matrix", module: "strategycharts", family: "matrix", shape: "table", form: "table", dimension: 2, rows: 12, perGroup: 1, slots: [["task", "task", "category"], ["urgent", "urgent", "category"], ["important", "important", "category"]] },
1794
1818
  ["football-field"]: { name: "Football field valuation chart", module: "strategycharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 6, perGroup: 1, slots: [["method", "method", "category"], ["low", "low", "number"], ["high", "high", "number"], ["group", "basis", "category"], ["current", "current", "number"]] },
1795
1819
  ["nine-box-grid"]: { name: "Nine-box grid", module: "strategycharts", family: "matrix", shape: "table", form: "table", dimension: 2, rows: 14, perGroup: 1, slots: [["item", "name", "category"], ["performance", "performance", "number"], ["potential", "potential", "number"], ["group", "team", "category"], ["size", "tenure", "number"]] },
1820
+ ["cap-table"]: { name: "Cap table chart", module: "strategycharts", family: "composition", shape: "table", form: "table", dimension: 2, rows: 17, perGroup: 4, slots: [["round", "round", "category"], ["holder", "holder", "category"], ["shares", "shares", "number"]] },
1821
+ ["burn-runway"]: { name: "Burn and runway chart", module: "strategycharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 12, perGroup: 1, slots: [["month", "month", "date"], ["balance", "balance", "number"], ["burn", "burn", "number"]] },
1822
+ ["kanban-board"]: { name: "Kanban board", module: "strategycharts", family: "project", shape: "table", form: "table", dimension: 2, rows: 17, perGroup: 1, slots: [["task", "task", "category"], ["stage", "stage", "category"], ["limit", "limit", "number"], ["lane", "lane", "category"], ["group", "kind", "category"], ["owner", "owner", "category"]] },
1823
+ ["okr-tree"]: { name: "OKR tree", module: "strategycharts", family: "hierarchy", shape: "table", form: "table", dimension: 2, rows: 10, perGroup: 3, slots: [["objective", "objective", "category"], ["keyResult", "keyResult", "category"], ["progress", "progress", "number"], ["confidence", "confidence", "number"]] },
1824
+ ["bass-diffusion"]: { name: "Bass diffusion curve", module: "strategycharts", family: "trend", shape: "table", form: "table", dimension: 2, rows: 8, perGroup: 1, slots: [["period", "period", "number"], ["adopters", "adopters", "number"]] },
1796
1825
  ["equivolume"]: { name: "Equivolume chart", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 44, perGroup: 1, slots: [["date", "date", "date"], ["open", "open", "number"], ["high", "high", "number"], ["low", "low", "number"], ["close", "close", "number"], ["volume", "volume", "number"]] },
1797
1826
  ["parabolic-sar"]: { name: "Parabolic SAR", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 72, perGroup: 1, slots: [["date", "date", "date"], ["open", "open", "number"], ["high", "high", "number"], ["low", "low", "number"], ["close", "close", "number"], ["volume", "volume", "number"]] },
1798
1827
  ["fibonacci-retracement"]: { name: "Fibonacci retracement", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 72, perGroup: 1, slots: [["date", "date", "date"], ["open", "open", "number"], ["high", "high", "number"], ["low", "low", "number"], ["close", "close", "number"], ["volume", "volume", "number"]] },
1799
1828
  ["adx"]: { name: "Average Directional Index", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 110, perGroup: 1, slots: [["date", "date", "date"], ["open", "open", "number"], ["high", "high", "number"], ["low", "low", "number"], ["close", "close", "number"], ["volume", "volume", "number"]] },
1800
1829
  ["advance-decline-line"]: { name: "Advance-decline line", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 90, perGroup: 1, slots: [["date", "date", "date"], ["advancing", "advancing", "number"], ["declining", "declining", "number"], ["index", "index", "number"]] },
1801
1830
  ["footprint"]: { name: "Footprint chart", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 31, perGroup: 1, slots: [["period", "period", "date"], ["price", "price", "number"], ["bid", "bid", "number"], ["ask", "ask", "number"], ["open", "open", "number"], ["close", "close", "number"]] },
1831
+ ["keltner-channels"]: { name: "Keltner channels", module: "tradingcharts", family: "financial", shape: "table", form: "table", dimension: 2, rows: 110, perGroup: 1, slots: [["date", "date", "date"], ["open", "open", "number"], ["high", "high", "number"], ["low", "low", "number"], ["close", "close", "number"], ["volume", "volume", "number"]] },
1802
1832
  ["ale-plot"]: { name: "ALE plot", module: "modelcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 62, perGroup: 1, slots: [["x", "x", "number"], ["x2", "x2", "number"], ["y", "effect", "number"], ["low", "low", "number"], ["high", "high", "number"], ["count", "count", "number"]] },
1803
1833
  ["ks-chart"]: { name: "KS chart", module: "modelcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 200, perGroup: 1, slots: [["score", "score", "number"], ["actual", "actual", "number"]] },
1804
1834
  ["decision-curve"]: { name: "Decision curve analysis", module: "modelcharts", family: "statistical", shape: "table", form: "table", dimension: 2, rows: 600, perGroup: 200, slots: [["score", "score", "number"], ["actual", "actual", "number"], ["model", "model", "category"]] },
@@ -1817,6 +1847,8 @@ var CHART_INDEX = {
1817
1847
  ["signal-flow-graph"]: { name: "Signal-flow graph", module: "softwarediagrams", family: "network", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1818
1848
  ["parse-tree"]: { name: "Parse tree", module: "softwarediagrams", family: "hierarchy", shape: "hierarchy", form: "hierarchy", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1819
1849
  ["trie-diagram"]: { name: "Trie", module: "softwarediagrams", family: "hierarchy", shape: "table", form: "table", dimension: 2, rows: 9, perGroup: 1, slots: [["word", "word", "category"], ["value", "count", "number"]] },
1850
+ ["uml-component-diagram"]: { name: "UML component diagram", module: "softwarediagrams", family: "network", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1851
+ ["uml-deployment-diagram"]: { name: "UML deployment diagram", module: "softwarediagrams", family: "network", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1820
1852
  ["fault-tree"]: { name: "Fault tree", module: "reliabilitycharts", family: "hierarchy", shape: "table", form: "table", dimension: 2, rows: 8, perGroup: 1, slots: [["id", "id", "category"], ["parent", "parent", "category"], ["label", "label", "category"], ["gate", "gate", "category"], ["probability", "probability", "number"]] },
1821
1853
  ["event-tree"]: { name: "Event tree", module: "reliabilitycharts", family: "hierarchy", shape: "table", form: "table", dimension: 2, rows: 9, perGroup: 1, slots: [["id", "id", "category"], ["parent", "parent", "category"], ["system", "system", "category"], ["branch", "branch", "category"], ["probability", "probability", "number"], ["outcome", "outcome", "category"]] },
1822
1854
  ["bow-tie"]: { name: "Bow-tie diagram", module: "reliabilitycharts", family: "flow", shape: "table", form: "table", dimension: 2, rows: 12, perGroup: 3, slots: [["side", "side", "category"], ["path", "path", "category"], ["barrier", "barrier", "category"]] },
@@ -1857,6 +1889,7 @@ var CHART_INDEX = {
1857
1889
  ["food-web"]: { name: "Food web", module: "biologycharts", family: "network", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1858
1890
  ["epidemic-curve"]: { name: "Epidemic curve", module: "biologycharts", family: "temporal", shape: "table", form: "table", dimension: 2, rows: 86, perGroup: 29, slots: [["x", "onset", "date"], ["series", "classification", "category"], ["marker", "intervention", "category"]] },
1859
1891
  ["prisma-flow-diagram"]: { name: "PRISMA flow diagram", module: "biologycharts", family: "flow", shape: "table", form: "table", dimension: 2, rows: 16, perGroup: 2, slots: [["stage", "stage", "category"], ["item", "item", "category"], ["n", "n", "number"]] },
1892
+ ["punnett-square"]: { name: "Punnett square", module: "biologycharts", family: "matrix", shape: "table", form: "table", dimension: 2, rows: 3, perGroup: 1, slots: [["gene", "gene", "category"], ["parent1", "parent1", "category"], ["parent2", "parent2", "category"], ["dominance", "dominance", "category"], ["dominantTrait", "dominantTrait", "category"], ["recessiveTrait", "recessiveTrait", "category"], ["mixedTrait", "mixedTrait", "category"]] },
1860
1893
  ["meteogram"]: { name: "Meteogram", module: "geosciencecharts", family: "temporal", shape: "table", form: "table", dimension: 2, rows: 72, perGroup: 1, slots: [["time", "time", "date"], ["temperature", "temperature", "number"], ["dewPoint", "dewPoint", "number"], ["precipitation", "precipitation", "number"], ["windSpeed", "windSpeed", "number"], ["windDirection", "windDirection", "number"], ["pressure", "pressure", "number"], ["cloud", "cloud", "number"]] },
1861
1894
  ["focal-mechanism"]: { name: "Focal mechanism (beachball)", module: "geosciencecharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 8, perGroup: 1, slots: [["event", "event", "category"], ["strike", "strike", "number"], ["dip", "dip", "number"], ["rake", "rake", "number"], ["magnitude", "magnitude", "number"], ["depth", "depth", "number"]] },
1862
1895
  ["stratigraphic-column"]: { name: "Stratigraphic column", module: "geosciencecharts", family: "scientific", shape: "table", form: "table", dimension: 2, rows: 12, perGroup: 1, slots: [["unit", "unit", "category"], ["lithology", "lithology", "category"], ["thickness", "thickness", "number"], ["grain", "grain", "category"], ["age", "age", "category"]] },
@@ -1896,7 +1929,12 @@ var CHART_INDEX = {
1896
1929
  ["ternary-choropleth"]: { name: "Ternary choropleth", module: "thematicmaps", family: "geospatial", shape: "geo", form: "geo", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1897
1930
  ["sparkline-map"]: { name: "Sparkline map", module: "thematicmaps", family: "geospatial", shape: "geo", form: "geo", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1898
1931
  ["contiguous-cartogram"]: { name: "Contiguous cartogram", module: "thematicmaps", family: "geospatial", shape: "geo", form: "geo", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1899
- ["od-map"]: { name: "OD map", module: "thematicmaps", family: "geospatial", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] }
1932
+ ["od-map"]: { name: "OD map", module: "thematicmaps", family: "geospatial", shape: "graph", form: "graph", dimension: 2, rows: 0, perGroup: 1, slots: [] },
1933
+ ["loss-landscape-3d"]: { name: "3D loss landscape", module: "threefields", family: "scientific", shape: "grid", form: "table", dimension: 3, rows: 61, perGroup: 1, slots: [] },
1934
+ ["compressor-map-3d"]: { name: "3D compressor map", module: "threefields", family: "scientific", shape: "table", form: "table", dimension: 3, rows: 54, perGroup: 9, slots: [["x", "flow", "number"], ["y", "pressureRatio", "number"], ["series", "speed", "category"], ["efficiency", "efficiency", "number"]] },
1935
+ ["bsfc-map-3d"]: { name: "3D engine BSFC map", module: "threefields", family: "scientific", shape: "table", form: "table", dimension: 3, rows: 110, perGroup: 1, slots: [["x", "speed", "number"], ["y", "torque", "number"], ["bsfc", "bsfc", "number"]] },
1936
+ ["terrain-route-3d"]: { name: "Terrain route profile", module: "threefields", family: "geospatial", shape: "grid", form: "table", dimension: 3, rows: 73, perGroup: 1, slots: [] },
1937
+ ["wafer-map-3d"]: { name: "3D wafer map", module: "threefields", family: "matrix", shape: "table", form: "table", dimension: 3, rows: 241, perGroup: 48, slots: [["x", "x", "number"], ["y", "y", "number"], ["bin", "bin", "category"], ["value", "value", "number"]] }
1900
1938
  };
1901
1939
 
1902
1940
  // src/autograph/chartModules.ts
@@ -1978,7 +2016,8 @@ var CHART_MODULES = {
1978
2016
  "carecharts": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/carecharts.cjs"))),
1979
2017
  "musiccharts": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/musiccharts.cjs"))),
1980
2018
  "layoutcharts": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/layoutcharts.cjs"))),
1981
- "thematicmaps": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/thematicmaps.cjs")))
2019
+ "thematicmaps": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/thematicmaps.cjs"))),
2020
+ "threefields": () => Promise.resolve().then(() => _interopRequireWildcard(require("./entries/charts/threefields.cjs")))
1982
2021
  };
1983
2022
 
1984
2023
  // src/autograph/DeferredChart.ts
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17; var _class18; var _class19; var _class20; var _class21; var _class22;
2
2
 
3
- var _chunk7THJ3ZBKcjs = require('./chunk-7THJ3ZBK.cjs');
3
+ var _chunkD4I35MCEcjs = require('./chunk-D4I35MCE.cjs');
4
4
 
5
5
 
6
6
  var _chunkXX2YTCORcjs = require('./chunk-XX2YTCOR.cjs');
@@ -12,7 +12,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
12
12
  var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
13
13
 
14
14
 
15
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
15
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
16
16
 
17
17
  // src/charts/pictorial/ArrowGlyphs.ts
18
18
  var _d3 = require('d3');
@@ -52,7 +52,7 @@ var ArrowGlyphs = (_class = class extends _chunkXX2YTCORcjs.CartesianChart {
52
52
  shape: "table" /* Table */,
53
53
  description: "Places an arrow at each position so its heading and size show direction and strength, as in a flow field.",
54
54
  tags: ["vector", "quiver", "direction", "glyph"],
55
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.points(seed, 90, 3).map((point) => {
55
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 90, 3).map((point) => {
56
56
  const x = Number(point.x), y = Number(point.y);
57
57
  return { x, y, angle: (Math.atan2(y - 40, x - 40) / degrees + 450) % 360, magnitude: point.size };
58
58
  }),
@@ -232,8 +232,8 @@ var BubbleText = (_class2 = class extends WordChart {
232
232
  description: "Sets each word inside a circle whose area shows its weight, packed, clustered, in rows or on a spiral.",
233
233
  tags: ["circle pack", "bubble cloud", "text"],
234
234
  sample: (seed) => {
235
- const groups = [...new Set(_chunkUMEKIIHJcjs.SampleData.categories(seed, 3, 1).map((row) => String(row.category)))];
236
- return _chunkUMEKIIHJcjs.SampleData.words(seed).map((word, i) => ({ ...word, group: groups[i % groups.length] }));
235
+ const groups = [...new Set(_chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row) => String(row.category)))];
236
+ return _chunkLNWTC72Ycjs.SampleData.words(seed).map((word, i) => ({ ...word, group: groups[i % groups.length] }));
237
237
  },
238
238
  variants: {
239
239
  layout: ["pack" /* Pack */, "clusters" /* Clusters */, "rows" /* Rows */, "spiral" /* Spiral */],
@@ -392,7 +392,7 @@ var ColorSwatchChart = (_class3 = class extends _chunkEEF5WRRZcjs.Chart2D {
392
392
  shape: "table" /* Table */,
393
393
  description: "Displays colours from the data as tiles, strips, bars or a hue wheel, sized by how much of each is used.",
394
394
  tags: ["palette", "colour", "color", "proportion"],
395
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.words(seed).slice(0, 14).map((word, i) => ({
395
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.words(seed).slice(0, 14).map((word, i) => ({
396
396
  name: word.text,
397
397
  value: word.value,
398
398
  color: _d3.hsl.call(void 0, i * 137.508 % 360, 0.5 + Number(word.value) % 3 * 0.1, 0.36 + i % 4 * 0.1).formatHex()
@@ -534,7 +534,7 @@ var ConcordanceChart = (_class4 = class extends _chunkEEF5WRRZcjs.Chart2D {
534
534
  shape: "text" /* Text */,
535
535
  description: "Aligns every occurrence of a word with its context, and plots where the top terms occur across the text.",
536
536
  tags: ["kwic", "keyword in context", "lexical dispersion", "text"],
537
- sample: (seed) => _chunk7THJ3ZBKcjs.Corpus.sample(seed),
537
+ sample: (seed) => _chunkD4I35MCEcjs.Corpus.sample(seed),
538
538
  variants: {
539
539
  view: ["lines" /* Lines */, "combined" /* Combined */, "dispersion" /* Dispersion */],
540
540
  sort: ["right" /* Right */, "left" /* Left */, "position" /* Position */],
@@ -567,14 +567,14 @@ var ConcordanceChart = (_class4 = class extends _chunkEEF5WRRZcjs.Chart2D {
567
567
  hit.right.forEach((text, i) => {
568
568
  const w = TextMetrics.width(text, SIZE);
569
569
  if (x + w > width) return;
570
- out.push({ key: `${hit.index}r${i}`, text, x, y, anchor: "start", near: i === 0 && !_chunk7THJ3ZBKcjs.Corpus.isStop(text) });
570
+ out.push({ key: `${hit.index}r${i}`, text, x, y, anchor: "start", near: i === 0 && !_chunkD4I35MCEcjs.Corpus.isStop(text) });
571
571
  x += w + SPACE;
572
572
  });
573
573
  x = center - half;
574
574
  [...hit.left].reverse().forEach((text, i) => {
575
575
  const w = TextMetrics.width(text, SIZE);
576
576
  if (x - w < 0) return;
577
- out.push({ key: `${hit.index}l${i}`, text, x, y, anchor: "end", near: i === 0 && !_chunk7THJ3ZBKcjs.Corpus.isStop(text) });
577
+ out.push({ key: `${hit.index}l${i}`, text, x, y, anchor: "end", near: i === 0 && !_chunkD4I35MCEcjs.Corpus.isStop(text) });
578
578
  x -= w + SPACE;
579
579
  });
580
580
  return out;
@@ -593,7 +593,7 @@ var ConcordanceChart = (_class4 = class extends _chunkEEF5WRRZcjs.Chart2D {
593
593
  ctx.hover(keys, (hit) => ({ title: word, rows: [["Line", Math.floor(hit.position) + 1], ["Before", hit.left.join(" ") || "\u2014"], ["After", hit.right.join(" ") || "\u2014"]] }));
594
594
  }
595
595
  drawDispersion(ctx, sentences, x0, width, height, foot) {
596
- const terms = _chunk7THJ3ZBKcjs.Corpus.keywords(sentences).slice(0, Math.max(1, Math.min(8, Math.floor(height / 24)))).map(([term]) => term);
596
+ const terms = _chunkD4I35MCEcjs.Corpus.keywords(sentences).slice(0, Math.max(1, Math.min(8, Math.floor(height / 24)))).map(([term]) => term);
597
597
  const gutter = Math.min(width * 0.42, Math.max(...terms.map((term) => TextMetrics.width(term, SIZE))) + 8);
598
598
  const span = sentences.length;
599
599
  const x = _d3.scaleLinear.call(void 0, [0, span], [x0 + gutter, x0 + width]);
@@ -617,9 +617,9 @@ var ConcordanceChart = (_class4 = class extends _chunkEEF5WRRZcjs.Chart2D {
617
617
  draw(ctx) {
618
618
  const { text, keyword, view } = this.options;
619
619
  const { width, height } = ctx.plot;
620
- const sentences = _chunk7THJ3ZBKcjs.Corpus.sentences(this.options.data, text);
620
+ const sentences = _chunkD4I35MCEcjs.Corpus.sentences(this.options.data, text);
621
621
  const wanted = _optionalChain([keyword, 'optionalAccess', _6 => _6.toLowerCase, 'call', _7 => _7()]);
622
- const word = wanted && sentences.some((tokens) => tokens.includes(wanted)) ? wanted : _optionalChain([_chunk7THJ3ZBKcjs.Corpus, 'access', _8 => _8.keywords, 'call', _9 => _9(sentences), 'access', _10 => _10[0], 'optionalAccess', _11 => _11[0]]);
622
+ const word = wanted && sentences.some((tokens) => tokens.includes(wanted)) ? wanted : _optionalChain([_chunkD4I35MCEcjs.Corpus, 'access', _8 => _8.keywords, 'call', _9 => _9(sentences), 'access', _10 => _10[0], 'optionalAccess', _11 => _11[0]]);
623
623
  if (!word) return;
624
624
  const combined = view === "combined" /* Combined */;
625
625
  if (view !== "dispersion" /* Dispersion */) this.drawLines(ctx, sentences, word, combined ? width * 0.62 : width, height);
@@ -650,7 +650,7 @@ var GlyphChart = class extends _chunkEEF5WRRZcjs.Chart2D {
650
650
  }
651
651
  /** Twelve named rows in six numeric columns, grouped by overall level. */
652
652
  static wideSample(seed) {
653
- const wide = _d3.rollups.call(void 0, _chunkUMEKIIHJcjs.SampleData.categories(seed, 12, 6), (rows) => Object.fromEntries(rows.map((row) => [String(row.series), row.value])), (row) => String(row.category));
653
+ const wide = _d3.rollups.call(void 0, _chunkLNWTC72Ycjs.SampleData.categories(seed, 12, 6), (rows) => Object.fromEntries(rows.map((row) => [String(row.series), row.value])), (row) => String(row.category));
654
654
  return wide.map(([category, values]) => {
655
655
  const total = _d3.sum.call(void 0, Object.values(values));
656
656
  return { category, group: total > 390 ? "High" : total > 340 ? "Middle" : "Low", ...values };
@@ -960,7 +960,7 @@ var IconArray = (_class7 = class extends UnitChart {
960
960
  shape: "table" /* Table */,
961
961
  description: "Shows shares of a fixed population as coloured icons, the clearest way to communicate risk and frequency.",
962
962
  tags: ["risk", "frequency", "unit chart", "waffle", "people"],
963
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.categories(seed, 3, 1),
963
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1),
964
964
  variants: {
965
965
  fillOrder: ["rows" /* Rows */, "columns" /* Columns */, "scatter" /* Scatter */, "center" /* Center */],
966
966
  shape: ["grid" /* Grid */, "staggered" /* Staggered */, "rings" /* Rings */],
@@ -1090,7 +1090,7 @@ var IsotypeChart = (_class8 = class extends UnitChart {
1090
1090
  shape: "table" /* Table */,
1091
1091
  description: "Shows quantities per category and series as counted whole icons, in the Isotype picture-statistics tradition.",
1092
1092
  tags: ["neurath", "picture statistics", "unit chart", "pyramid"],
1093
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.categories(seed, 5, 2),
1093
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 5, 2),
1094
1094
  variants: {
1095
1095
  layout: ["sequence" /* Sequence */, "lines" /* Lines */, "mirror" /* Mirror */],
1096
1096
  orientation: ["horizontal" /* Horizontal */, "vertical" /* Vertical */],
@@ -1195,7 +1195,7 @@ var PictogramChart = (_class9 = class extends UnitChart {
1195
1195
  shape: "table" /* Table */,
1196
1196
  description: "Compares category totals as rows of repeated icons, each icon worth a stated number of units.",
1197
1197
  tags: ["pictograph", "icon bar", "unit chart"],
1198
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.categories(seed, 6, 1),
1198
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 6, 1),
1199
1199
  variants: {
1200
1200
  orientation: ["horizontal" /* Horizontal */, "vertical" /* Vertical */],
1201
1201
  rounding: ["partial" /* Partial */, "whole" /* Whole */],
@@ -1288,7 +1288,7 @@ var PolarGlyphMatrix = (_class10 = class extends _chunkEEF5WRRZcjs.Chart2D {
1288
1288
  shape: "table" /* Table */,
1289
1289
  description: "Places a small rose, pie or radar in every cell of a matrix to compare profiles across two factors.",
1290
1290
  tags: ["small multiples", "rose", "pie matrix", "glyph"],
1291
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.timeSeries(seed, 48, 4).map((row) => {
1291
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 48, 4).map((row) => {
1292
1292
  const day = Math.round((+row.date - Date.UTC(2026, 0, 1)) / 864e5);
1293
1293
  return { row: row.series, column: `Week ${Math.floor(day / 8) + 1}`, slice: `Day ${day % 8 + 1}`, value: row.value };
1294
1294
  }),
@@ -1413,7 +1413,7 @@ var SankeyText = (_class11 = class extends _chunkEEF5WRRZcjs.Chart2D {
1413
1413
  shape: "text" /* Text */,
1414
1414
  description: "Links words that a chosen connector joins in the text, with link weight showing how often each pair occurs.",
1415
1415
  tags: ["phrase net", "word graph", "text sankey", "bigram"],
1416
- sample: (seed) => _chunk7THJ3ZBKcjs.Corpus.sample(seed, 120),
1416
+ sample: (seed) => _chunkD4I35MCEcjs.Corpus.sample(seed, 120),
1417
1417
  variants: {
1418
1418
  layout: ["flow" /* Flow */, "bipartite" /* Bipartite */, "arcs" /* Arcs */, "net" /* Net */],
1419
1419
  connector: ["of", "and", ANY_WORD],
@@ -1436,8 +1436,8 @@ var SankeyText = (_class11 = class extends _chunkEEF5WRRZcjs.Chart2D {
1436
1436
  if (hit) hit.value += 1;
1437
1437
  else counts.set(key, { source, target, value: 1 });
1438
1438
  };
1439
- for (const tokens of _chunk7THJ3ZBKcjs.Corpus.sentences(this.options.data, text)) {
1440
- const content = tokens.map((token, i) => ({ token, i })).filter(({ token }) => !_chunk7THJ3ZBKcjs.Corpus.isStop(token));
1439
+ for (const tokens of _chunkD4I35MCEcjs.Corpus.sentences(this.options.data, text)) {
1440
+ const content = tokens.map((token, i) => ({ token, i })).filter(({ token }) => !_chunkD4I35MCEcjs.Corpus.isStop(token));
1441
1441
  for (let n = 0; n + 1 < content.length; n++) {
1442
1442
  const left = content[n], right = content[n + 1];
1443
1443
  if (connector === ANY_WORD || tokens.slice(left.i + 1, right.i).includes(connector)) add(left.token, right.token);
@@ -1568,8 +1568,8 @@ var SentimentStrip = (_class12 = class extends _chunkEEF5WRRZcjs.Chart2D {
1568
1568
  description: "Runs polarity along a text as bars, tiles or a ribbon, showing how the tone rises and falls across it.",
1569
1569
  tags: ["polarity", "narrative arc", "text", "diverging"],
1570
1570
  sample: (seed) => {
1571
- const series = _chunkUMEKIIHJcjs.SampleData.timeSeries(seed, 40, 3);
1572
- const sentences = _chunk7THJ3ZBKcjs.Corpus.sample(seed, series.length);
1571
+ const series = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 40, 3);
1572
+ const sentences = _chunkD4I35MCEcjs.Corpus.sample(seed, series.length);
1573
1573
  return series.map((row, i) => {
1574
1574
  const previous = series[i - 1];
1575
1575
  const change = previous && previous.series === row.series ? Number(row.value) - Number(previous.value) : 0;
@@ -1697,7 +1697,7 @@ var ShapeGrid = (_class13 = class extends _chunkEEF5WRRZcjs.Chart2D {constructor
1697
1697
  shape: "matrix" /* Matrix */,
1698
1698
  description: "Encodes a matrix with the area, fill level, tilt or count of a shape in each cell, and sign with colour.",
1699
1699
  tags: ["bertin", "bubble matrix", "dot matrix", "glyph"],
1700
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.matrix(seed, 8, 10),
1700
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.matrix(seed, 8, 10),
1701
1701
  variants: {
1702
1702
  shape: ["circle" /* Circle */, "square" /* Square */, "diamond" /* Diamond */, "triangle" /* Triangle */, "star" /* Star */, "wye" /* Wye */, "cross" /* Cross */],
1703
1703
  encoding: ["area" /* Area */, "level" /* Level */, "tilt" /* Tilt */, "count" /* Count */],
@@ -1920,10 +1920,10 @@ var ShotRows = class {
1920
1920
  var RANGE = 24;
1921
1921
  var ShotSample = class {
1922
1922
  static rows(seed = 1, count = 180) {
1923
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed + 11);
1923
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed + 11);
1924
1924
  const court = BasketballCourt.of();
1925
1925
  const { rimY, width } = court.spec;
1926
- return _chunkUMEKIIHJcjs.SampleData.points(seed, count, 3).map((point) => {
1926
+ return _chunkLNWTC72Ycjs.SampleData.points(seed, count, 3).map((point) => {
1927
1927
  const px = Number(point.x), py = Number(point.y);
1928
1928
  const spread = Math.max(1, 3 + (px - 20) * 0.5);
1929
1929
  const range = spread > RANGE ? RANGE + (spread - RANGE) * 0.3 : spread;
@@ -2164,7 +2164,7 @@ var TagChart = (_class16 = class extends WordChart {
2164
2164
  shape: "text" /* Text */,
2165
2165
  description: "Flows weighted tags in reading order, so terms can be scanned and compared without a packed cloud.",
2166
2166
  tags: ["tag cloud", "labels", "chips", "text"],
2167
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.words(seed),
2167
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.words(seed),
2168
2168
  variants: {
2169
2169
  tagStyle: ["plain" /* Plain */, "pill" /* Pill */, "heat" /* Heat */, "meter" /* Meter */],
2170
2170
  sort: ["alphabetical" /* Alphabetical */, "weight" /* Weight */],
@@ -2274,8 +2274,8 @@ var TextTreemap = (_class17 = class extends WordChart {
2274
2274
  description: "Fills treemap cells with their own word at the largest size that fits, so area and text both show weight.",
2275
2275
  tags: ["word treemap", "text", "tile"],
2276
2276
  sample: (seed) => {
2277
- const groups = [...new Set(_chunkUMEKIIHJcjs.SampleData.categories(seed, 4, 1).map((row) => String(row.category)))];
2278
- return _chunkUMEKIIHJcjs.SampleData.words(seed).map((word, i) => ({ ...word, group: groups[i % groups.length] }));
2277
+ const groups = [...new Set(_chunkLNWTC72Ycjs.SampleData.categories(seed, 4, 1).map((row) => String(row.category)))];
2278
+ return _chunkLNWTC72Ycjs.SampleData.words(seed).map((word, i) => ({ ...word, group: groups[i % groups.length] }));
2279
2279
  },
2280
2280
  variants: {
2281
2281
  tile: ["squarify" /* Squarify */, "binary" /* Binary */, "slice" /* Slice */, "dice" /* Dice */, "slice-dice" /* SliceDice */],
@@ -2354,7 +2354,7 @@ var WeatherGlyphs = (_class18 = class extends GlyphChart {
2354
2354
  shape: "table" /* Table */,
2355
2355
  description: "Plots weather observations as station models, wind barbs or forecast icons, one glyph per site.",
2356
2356
  tags: ["station model", "wind barb", "meteorology", "glyph"],
2357
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.cities(seed).slice(0, 15).map((city) => {
2357
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.cities(seed).slice(0, 15).map((city) => {
2358
2358
  const value = Number(city.value), lat = Number(city.lat), lon = Number(city.lon);
2359
2359
  return {
2360
2360
  name: city.name,
@@ -3610,7 +3610,7 @@ var WordCloudChart = (_class21 = class extends WordChart {
3610
3610
  shape: "text" /* Text */,
3611
3611
  description: "Packs weighted words so the most frequent terms dominate, giving a quick gist of a body of text.",
3612
3612
  tags: ["tag cloud", "wordle", "text", "d3-cloud"],
3613
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.words(seed),
3613
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.words(seed),
3614
3614
  variants: {
3615
3615
  spiral: ["archimedean" /* Archimedean */, "rectangular" /* Rectangular */],
3616
3616
  rotation: ["level" /* Level */, "right-angle" /* RightAngle */, "diagonal" /* Diagonal */, "fan" /* Fan */],
@@ -3690,7 +3690,7 @@ var WordTreeChart = (_class22 = class extends _chunkEEF5WRRZcjs.Chart2D {
3690
3690
  shape: "text" /* Text */,
3691
3691
  description: "Branches from a chosen word into the phrases around it, showing how the word is actually used in context.",
3692
3692
  tags: ["text", "concordance", "phrases", "suffix tree"],
3693
- sample: (seed) => _chunk7THJ3ZBKcjs.Corpus.sample(seed),
3693
+ sample: (seed) => _chunkD4I35MCEcjs.Corpus.sample(seed),
3694
3694
  variants: {
3695
3695
  direction: ["after" /* After */, "before" /* Before */, "both" /* Both */],
3696
3696
  link: ["curve" /* Curve */, "elbow" /* Elbow */, "straight" /* Straight */],
@@ -3718,7 +3718,7 @@ var WordTreeChart = (_class22 = class extends _chunkEEF5WRRZcjs.Chart2D {
3718
3718
  }
3719
3719
  root(sentences) {
3720
3720
  const wanted = _optionalChain([this, 'access', _36 => _36.options, 'access', _37 => _37.root, 'optionalAccess', _38 => _38.toLowerCase, 'call', _39 => _39()]);
3721
- return wanted && sentences.some((tokens) => tokens.includes(wanted)) ? wanted : _nullishCoalesce(_optionalChain([_chunk7THJ3ZBKcjs.Corpus, 'access', _40 => _40.keywords, 'call', _41 => _41(sentences), 'access', _42 => _42[0], 'optionalAccess', _43 => _43[0]]), () => ( ""));
3721
+ return wanted && sentences.some((tokens) => tokens.includes(wanted)) ? wanted : _nullishCoalesce(_optionalChain([_chunkD4I35MCEcjs.Corpus, 'access', _40 => _40.keywords, 'call', _41 => _41(sentences), 'access', _42 => _42[0], 'optionalAccess', _43 => _43[0]]), () => ( ""));
3722
3722
  }
3723
3723
  font(count, top, largest) {
3724
3724
  return this.options.sizing === "uniform" /* Uniform */ ? 11 : 10 + (largest - 10) * Math.sqrt(count / top);
@@ -3769,7 +3769,7 @@ var WordTreeChart = (_class22 = class extends _chunkEEF5WRRZcjs.Chart2D {
3769
3769
  draw(ctx) {
3770
3770
  const { text, direction, depth } = this.options;
3771
3771
  const { width, height } = ctx.plot;
3772
- const sentences = _chunk7THJ3ZBKcjs.Corpus.sentences(this.options.data, text);
3772
+ const sentences = _chunkD4I35MCEcjs.Corpus.sentences(this.options.data, text);
3773
3773
  const word = this.root(sentences);
3774
3774
  if (!word) return;
3775
3775
  const contexts = sentences.flatMap((tokens) => tokens.flatMap((token, i) => token === word ? [{ before: tokens.slice(0, i).reverse(), after: tokens.slice(i + 1) }] : []));
@@ -17,7 +17,7 @@ var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
17
17
  var _chunk35CT4Q2Ecjs = require('./chunk-35CT4Q2E.cjs');
18
18
 
19
19
 
20
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
20
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
21
21
 
22
22
  // src/charts/business/SparkBar.ts
23
23
  var _d3 = require('d3');
@@ -48,7 +48,7 @@ var MAX_THICK = 16;
48
48
  var fix = (value) => +value.toFixed(2);
49
49
  var netAdds = (seed) => {
50
50
  const weeks = 27, regions = ["North", "South", "East", "West"];
51
- const rows = _chunkUMEKIIHJcjs.SampleData.timeSeries(seed, weeks, regions.length);
51
+ const rows = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, weeks, regions.length);
52
52
  return rows.flatMap((row, i) => i % weeks ? [{ date: row.date, series: regions[Math.floor(i / weeks)], value: Math.round((+row.value - +rows[i - 1].value) * 1.1 + 1.5) }] : []);
53
53
  };
54
54
  var SparkBar = (_class = class extends _chunkEEF5WRRZcjs.Chart2D {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
@@ -245,7 +245,7 @@ var npv = ({ price, volume, unitCost, fixedCost, capex, discount, tax, growth })
245
245
  return +(flows.reduce((total, flow) => total + flow, -capex) / 1e6).toFixed(3);
246
246
  };
247
247
  var sensitivities = (seed) => {
248
- const reach = _chunkUMEKIIHJcjs.SampleData.categories(seed, DRIVERS.length, 2).map((row) => 0.75 + +row.value / 100 * 0.5);
248
+ const reach = _chunkLNWTC72Ycjs.SampleData.categories(seed, DRIVERS.length, 2).map((row) => 0.75 + +row.value / 100 * 0.5);
249
249
  const base = npv(CASE);
250
250
  return DRIVERS.map(({ name, key, low, high, show }, i) => {
251
251
  const lowInput = CASE[key] + (low - CASE[key]) * reach[i * 2], highInput = CASE[key] + (high - CASE[key]) * reach[i * 2 + 1];
@@ -7,7 +7,7 @@ var _chunkXX2YTCORcjs = require('./chunk-XX2YTCOR.cjs');
7
7
  var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
8
8
 
9
9
 
10
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
10
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
11
11
 
12
12
  // src/charts/civicscharts/civicEnums.ts
13
13
  var SeatsVotesView = /* @__PURE__ */ ((SeatsVotesView2) => {
@@ -164,14 +164,14 @@ var PACKED = 5;
164
164
  var CivicSamples = class {
165
165
  /** `{ party, votes, seats }` for one first-past-the-post election, seats summing to about 300. */
166
166
  static parties(seed) {
167
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
167
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
168
168
  const shares = PARTIES.map(([party, share, pull]) => ({ party, share: share * (1 + n() * 0.05), pull }));
169
169
  const strength = shares.reduce((sum, { share, pull }) => sum + share ** 1.7 * pull, 0);
170
170
  return shares.map(({ party, share, pull }) => ({ party, votes: Math.round(share * ELECTORATE * 100), seats: Math.round(share ** 1.7 * pull / strength * SEATS) }));
171
171
  }
172
172
  /** `{ district, beforeA, beforeB, afterA, afterB, col, row }`, shares in percent, with a national swing to B. */
173
173
  static swings(seed) {
174
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
174
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
175
175
  return PLACES.map((district, index) => {
176
176
  const lean = n() * 11 + (index % 2 ? 3 : -3), third = 8 + Math.abs(n()) * 4;
177
177
  const beforeA = (100 - third - lean) / 2, beforeB = (100 - third + lean) / 2;
@@ -190,12 +190,12 @@ var CivicSamples = class {
190
190
  }
191
191
  /** `{ ranking, count }`, one row per distinct ballot, ranks joined with `>`. */
192
192
  static ballots(seed) {
193
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
193
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
194
194
  return SPREADS.map(([ranking, count2]) => ({ ranking, count: Math.round(count2 * (0.88 + u() * 0.24)) }));
195
195
  }
196
196
  /** `{ district, region, registered, cast, winnerVotes }`, with a few precincts near full turnout and a near-total vote. */
197
197
  static turnout(seed) {
198
- const { n, u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
198
+ const { n, u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
199
199
  return Array.from({ length: PRECINCTS }, (_, index) => {
200
200
  const [region, turnout, share, size] = REGIONS[index % REGIONS.length];
201
201
  const odd = index >= PRECINCTS - OUTLIERS;
@@ -208,7 +208,7 @@ var CivicSamples = class {
208
208
  }
209
209
  /** `{ district, votesA, votesB }`, with A packed into a few safe seats and narrowly behind in the rest. */
210
210
  static plan(seed) {
211
- const { n, u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
211
+ const { n, u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
212
212
  return Array.from({ length: DISTRICTS }, (_, index) => {
213
213
  const share = index < PACKED ? 0.64 + u() * 0.1 : 0.475 + n() * 0.04;
214
214
  const total = Math.round(31e4 * (1 + n() * 0.1));