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
@@ -0,0 +1,139 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkDCGAAN3Zcjs = require('./chunk-DCGAAN3Z.cjs');
4
+
5
+
6
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
7
+
8
+ // src/charts/modelcharts/ModelSamples.ts
9
+ var _d3 = require('d3');
10
+ var SHAP_FEATURES = [
11
+ ["tenure_months", -1, 1, "saturating", 30, 16],
12
+ ["monthly_charges", 1, 0.78, "linear", 68, 22],
13
+ ["support_tickets", 1, 0.6, "count", 2, 1.8],
14
+ ["contract_months", -1, 0.5, "saturating", 14, 9],
15
+ ["payment_delay_days", 1, 0.4, "count", 4, 5],
16
+ ["data_usage_gb", -1, 0.3, "linear", 42, 18],
17
+ ["autopay_enrolled", -1, 0.24, "binary", 0, 1],
18
+ ["device_count", -1, 0.18, "count", 3, 1.4],
19
+ ["customer_age", -1, 0.13, "linear", 44, 13],
20
+ ["discount_rate", -1, 0.1, "linear", 8, 5],
21
+ ["region_index", 1, 0.06, "linear", 5, 3],
22
+ ["referral_count", -1, 0.05, "count", 1, 1.2]
23
+ ];
24
+ var SHAP_ROWS = 120;
25
+ var ALE_ROWS = 480;
26
+ var ALE_BINS = 12;
27
+ var ALE_SIDE = 6;
28
+ var GRID = 61;
29
+ var STEPS = 60;
30
+ var LAYER_UNITS = [[12, 24, 16, 8, 3], [16, 32, 16, 8, 4], [8, 20, 20, 10, 2]];
31
+ var round = (value, digits = 4) => +value.toFixed(digits);
32
+ var clamp = (value, low, high) => Math.max(low, Math.min(high, value));
33
+ var ModelSamples = class {
34
+ /** `{ score, actual }` for one classifier at 30% prevalence. */
35
+ static scores(seed) {
36
+ return _chunkDCGAAN3Zcjs.ClassifierCurveBase.scored(seed).filter((row) => row.model === "Logistic").map(({ score, actual }) => ({ score, actual }));
37
+ }
38
+ /**
39
+ * ALE of a debt-to-income feature at its quantile bin edges, `{ x, x2, effect, low, high, count }`: rows with no `x2` are the
40
+ * one-feature curve, rows with one are the nodes of its interaction surface with credit utilisation.
41
+ */
42
+ static ale(seed) {
43
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
44
+ const pairs = Array.from({ length: ALE_ROWS }, () => {
45
+ const debt = clamp(34 + 11 * n(), 4, 68);
46
+ return [debt, clamp(48 + 1.2 * (debt - 34) + 15 * n(), 0, 100)];
47
+ });
48
+ const edges = (values, bins) => {
49
+ const sorted = [...values].sort(_d3.ascending);
50
+ return [...new Set(Array.from({ length: bins + 1 }, (_, k) => Math.round(_d3.quantileSorted.call(void 0, sorted, k / bins))))];
51
+ };
52
+ const within = (value, grid, k) => (k === 1 ? value >= grid[0] : value > grid[k - 1]) && value <= grid[k];
53
+ const debts = edges(pairs.map((pair) => pair[0]), ALE_BINS), uses = edges(pairs.map((pair) => pair[1]), ALE_SIDE);
54
+ const counts = debts.map((_, k) => k ? pairs.filter(([debt]) => within(debt, debts, k)).length : 0);
55
+ const raw = debts.map((debt) => 0.17 * Math.tanh((debt - 36) / 9) + 6e-3 * n());
56
+ const total = counts.reduce((sum, count) => sum + count, 0) || 1;
57
+ const centre = counts.reduce((sum, count, k) => sum + (k ? count * (raw[k - 1] + raw[k]) / 2 : 0), 0) / total;
58
+ const curve = debts.map((x, k) => {
59
+ const effect = raw[k] - centre, reach = 0.012 + 16e-4 * Math.abs(x - 36);
60
+ return { x, x2: null, effect: round(effect), low: round(effect - reach), high: round(effect + reach), count: counts[k] };
61
+ });
62
+ const coarse = debts.filter((_, k) => k % 2 === 0);
63
+ const surface = coarse.flatMap((x, i) => uses.map((x2, j) => ({
64
+ x,
65
+ x2,
66
+ effect: round(0.05 * ((x - 34) / 11) * ((x2 - 48) / 20) + 4e-3 * n()),
67
+ low: null,
68
+ high: null,
69
+ count: i && j ? pairs.filter(([debt, use]) => within(debt, coarse, i) && within(use, uses, j)).length : 0
70
+ })));
71
+ return [...curve, ...surface];
72
+ }
73
+ /** `{ feature, shap, value }`, one row per customer and feature of a churn model, in log-odds. */
74
+ static shap(seed) {
75
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
76
+ return Array.from({ length: SHAP_ROWS }, () => SHAP_FEATURES.map(([feature, direction, strength, shape, centre, spread]) => {
77
+ const z = n();
78
+ const value = shape === "binary" ? +(z > 0.1) : shape === "count" ? Math.max(0, Math.round(centre + spread * z)) : round(centre + spread * z, 1);
79
+ const level = shape === "binary" ? value ? 0.8 : -0.7 : shape === "count" ? (value - centre) / spread : z;
80
+ const push = shape === "saturating" ? Math.tanh(1.3 * level) * 0.75 : level * 0.5;
81
+ return { feature, shap: round(direction * strength * push + 0.09 * strength * n()), value };
82
+ })).flat();
83
+ }
84
+ /** A curved valley of loss over two parameter directions, with the paths of three optimisers from one start. */
85
+ static lossSurface(seed) {
86
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
87
+ const steep = 4;
88
+ const loss = (x2, y2) => 0.05 + (1 - x2) ** 2 + steep * (y2 - x2 * x2) ** 2;
89
+ const slope = (x2, y2) => [-2 * (1 - x2) - 4 * steep * x2 * (y2 - x2 * x2), 2 * steep * (y2 - x2 * x2)];
90
+ const x = Array.from({ length: GRID }, (_, i) => round(-2 + 4 * i / (GRID - 1), 3)), y = x.map((value) => round(value + 1, 3));
91
+ const start = [-1.3 + 0.08 * n(), 2.55 + 0.08 * n()];
92
+ const walk = (name, step) => {
93
+ const points = [start];
94
+ for (let t = 1; t <= STEPS; t++) {
95
+ const [px, py] = step(points[t - 1], t);
96
+ points.push([clamp(px, -2, 2), clamp(py, -1, 3)]);
97
+ }
98
+ return { name, points: points.map(([px, py]) => [round(px, 3), round(py, 3)]) };
99
+ };
100
+ const speed = [0, 0], mean = [0, 0], square = [0, 0];
101
+ return {
102
+ x,
103
+ y,
104
+ z: y.map((row) => x.map((column) => round(loss(column, row)))),
105
+ paths: [
106
+ walk("SGD", ([px, py]) => {
107
+ const [gx, gy] = slope(px, py);
108
+ return [px - 0.03 * (gx + 0.6 * n()), py - 0.03 * (gy + 0.6 * n())];
109
+ }),
110
+ walk("Momentum", ([px, py]) => {
111
+ const grad = slope(px, py);
112
+ for (const axis of [0, 1]) speed[axis] = 0.85 * speed[axis] - 8e-3 * grad[axis];
113
+ return [px + speed[0], py + speed[1]];
114
+ }),
115
+ walk("Adam", ([px, py], t) => {
116
+ const grad = slope(px, py);
117
+ const move = [0, 1].map((axis) => {
118
+ mean[axis] = 0.9 * mean[axis] + 0.1 * grad[axis];
119
+ square[axis] = 0.999 * square[axis] + 1e-3 * grad[axis] ** 2;
120
+ return 0.15 * mean[axis] / (1 - 0.9 ** t) / (Math.sqrt(square[axis] / (1 - 0.999 ** t)) + 1e-8);
121
+ });
122
+ return [px - move[0], py - move[1]];
123
+ })
124
+ ]
125
+ };
126
+ }
127
+ /** `{ layer, kind, units }` for a small fully connected classifier. */
128
+ static network(seed) {
129
+ const units = LAYER_UNITS[Math.abs(Math.round(seed)) % LAYER_UNITS.length];
130
+ return units.map((count, i) => {
131
+ const last = i === units.length - 1;
132
+ return { layer: i === 0 ? "Input" : last ? "Output" : `Hidden ${i}`, kind: i === 0 ? "Input" : last ? "Softmax" : "Dense", units: count };
133
+ });
134
+ }
135
+ };
136
+
137
+
138
+
139
+ exports.ModelSamples = ModelSamples;
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk7KM52NMNcjs = require('./chunk-7KM52NMN.cjs');
5
+ var _chunkSN5T7WYOcjs = require('./chunk-SN5T7WYO.cjs');
6
6
 
7
7
 
8
8
 
@@ -12,7 +12,7 @@ var _chunkUXFWDEP6cjs = require('./chunk-UXFWDEP6.cjs');
12
12
  var _chunkAL4XQZH6cjs = require('./chunk-AL4XQZH6.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/medicalcharts/AlbatrossPlot.ts
18
18
  var _d3 = require('d3');
@@ -23,7 +23,7 @@ var expit = (x) => 1 / (1 + Math.exp(-x));
23
23
  var MedicalSamples = class {
24
24
  /** `{ study, treatmentEvents, treatmentTotal, controlEvents, controlTotal }`: two-arm trials with a protective odds ratio near 0.6. */
25
25
  static binaryTrials(seed, count = 16) {
26
- return _chunkUMEKIIHJcjs.SampleData.points(seed, count, 3).map((row, i) => {
26
+ return _chunkLNWTC72Ycjs.SampleData.points(seed, count, 3).map((row, i) => {
27
27
  const control = 0.06 + (+row.x - 4) / 80 * 0.5, noise = (+row.y - +row.x * 0.8 - 10) / 9;
28
28
  const pc = Math.min(0.85, Math.max(0.04, control)), pt = expit(logit(pc) - 0.5 + noise * 0.22);
29
29
  const controlTotal = Math.round(30 + +row.size * 9), treatmentTotal = Math.round(controlTotal * (0.9 + i % 3 * 0.1));
@@ -32,18 +32,18 @@ var MedicalSamples = class {
32
32
  }
33
33
  /** `{ study, effect, se, subgroup }` for heterogeneity plots, with two studies pulled away from the rest. */
34
34
  static heterogeneous(seed, count = 14) {
35
- return _chunk7KM52NMNcjs.MetaAnalysis.studies(seed, count).map((row, i) => i === 3 ? { ...row, effect: +(+row.effect + 0.55).toFixed(3) } : i === 8 ? { ...row, effect: +(+row.effect - 0.4).toFixed(3) } : row);
35
+ return _chunkSN5T7WYOcjs.MetaAnalysis.studies(seed, count).map((row, i) => i === 3 ? { ...row, effect: +(+row.effect + 0.55).toFixed(3) } : i === 8 ? { ...row, effect: +(+row.effect - 0.4).toFixed(3) } : row);
36
36
  }
37
37
  /** `{ study, p, n, effect, subgroup }`: P value, sample size and direction, as reported by studies too diverse to pool. */
38
38
  static albatross(seed, count = 30) {
39
- return _chunk7KM52NMNcjs.MetaAnalysis.studies(seed, count).map((row) => {
39
+ return _chunkSN5T7WYOcjs.MetaAnalysis.studies(seed, count).map((row) => {
40
40
  const se = +row.se, effect = +row.effect - 0.3;
41
41
  return { study: row.study, p: +_chunkAL4XQZH6cjs.StatMath.twoSided(effect / se).toPrecision(3), n: Math.round(4 / se ** 2), effect: +effect.toFixed(3), subgroup: row.subgroup };
42
42
  });
43
43
  }
44
44
  /** `{ time, stage }`: one row per stage change in minutes after lights out, scored W, N1, N2, N3 and R. */
45
45
  static night(seed) {
46
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
46
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
47
47
  const rows = [];
48
48
  let time = 0;
49
49
  const stay = (stage, minutes) => {
@@ -73,7 +73,7 @@ var MedicalSamples = class {
73
73
  * step of a preload reduction, as during a vena cava occlusion.
74
74
  */
75
75
  static pressureVolume(seed, beats = 5) {
76
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
76
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
77
77
  const ees = 2.1, ea = 1.8, v0 = 12, stiffness = 0.026, scale = 0.45;
78
78
  const edpvr = (v) => scale * (Math.exp(stiffness * (v - v0)) - 1);
79
79
  return Array.from({ length: beats }, (_, b) => {
@@ -97,7 +97,7 @@ var MedicalSamples = class {
97
97
  * palpable, fetal heart rate, and contractions per 10 minutes with their length in seconds.
98
98
  */
99
99
  static labour(seed) {
100
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
100
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
101
101
  const rows = [];
102
102
  const add = (hour, measure, value) => rows.push({ hour: +hour.toFixed(2), measure, value: +value.toFixed(1) });
103
103
  const rate = 0.62 + u() * 0.25;
@@ -122,7 +122,7 @@ var MedicalSamples = class {
122
122
  }
123
123
  /** `{ series, time, volume, flow }`: a forced expiration and inspiration, measured with mild obstruction, beside a predicted loop. */
124
124
  static spirometry(seed) {
125
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
125
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
126
126
  const loop = (series, fvc, pef, scoop, pif, noise) => {
127
127
  const steps = 60, peakAt = 0.1 * fvc, rows = [];
128
128
  const out = (v) => v < peakAt ? pef * Math.sin(Math.PI / 2 * (v / peakAt)) ** 0.8 : pef * ((fvc - v) / (fvc - peakAt)) ** scoop;
@@ -144,7 +144,7 @@ var MedicalSamples = class {
144
144
  }
145
145
  /** `{ reference, meter }`: paired glucose readings in mg/dL, mostly close, with a few dangerous misses. */
146
146
  static glucose(seed, count = 140) {
147
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
147
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
148
148
  const rows = Array.from({ length: count }, () => {
149
149
  const reference = 40 + u() ** 1.3 * 340;
150
150
  return { reference: Math.round(reference), meter: Math.round(Math.max(20, reference * (1 + n() * 0.11) + n() * 6)) };
@@ -296,7 +296,7 @@ var AlbatrossPlot = (_class = class _AlbatrossPlot extends _chunkUXFWDEP6cjs.Sta
296
296
 
297
297
  var MetaStudies = class _MetaStudies {
298
298
  static read(data, effect, se, study, group = study) {
299
- return _chunk7KM52NMNcjs.MetaAnalysis.read(Array.isArray(data) ? data.filter((row) => row && typeof row === "object") : [], { effect, se, study, subgroup: group });
299
+ return _chunkSN5T7WYOcjs.MetaAnalysis.read(Array.isArray(data) ? data.filter((row) => row && typeof row === "object") : [], { effect, se, study, subgroup: group });
300
300
  }
301
301
  /** Cochran's Q about the fixed-effect estimate, and Higgins' I² as a percentage. */
302
302
  static heterogeneity(studies) {
@@ -309,9 +309,9 @@ var MetaStudies = class _MetaStudies {
309
309
  /** Baujat's two coordinates for each study, under the pooling model for the influence axis. */
310
310
  static baujat(studies, model) {
311
311
  if (studies.length < 3) return [];
312
- const { centre } = _MetaStudies.heterogeneity(studies), pooled = _chunk7KM52NMNcjs.MetaAnalysis.pool(studies, model).effect;
312
+ const { centre } = _MetaStudies.heterogeneity(studies), pooled = _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies, model).effect;
313
313
  return studies.map((study, i) => {
314
- const rest = _chunk7KM52NMNcjs.MetaAnalysis.pool(studies.filter((_, j) => j !== i), model);
314
+ const rest = _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies.filter((_, j) => j !== i), model);
315
315
  return { ...study, contribution: (study.effect - centre) ** 2 / study.se ** 2, influence: rest.se > 0 ? (pooled - rest.effect) ** 2 / rest.se ** 2 : 0, without: rest.effect };
316
316
  });
317
317
  }
@@ -329,7 +329,7 @@ var BaujatPlot = (_class2 = class extends _chunkUXFWDEP6cjs.StatisticalChart {
329
329
  description: "Plots each study's contribution to Cochran's Q against its influence on the pooled estimate, to find the studies driving heterogeneity.",
330
330
  tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "influence", "sensitivity analysis"],
331
331
  sample: (seed) => MedicalSamples.heterogeneous(seed),
332
- variants: { model: Object.values(_chunk7KM52NMNcjs.PoolingModel), labels: [true, false], guides: [false, true] }
332
+ variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), labels: [true, false], guides: [false, true] }
333
333
  }}
334
334
  defaults() {
335
335
  return { effect: "effect", se: "se", study: "study", model: "fixed-effect" /* Fixed */, labels: true, guides: false };
@@ -688,7 +688,7 @@ var GalbraithPlot = (_class5 = class extends _chunkUXFWDEP6cjs.StatisticalChart
688
688
  description: "Plots each study z-statistic against its precision, so the pooled effect is a slope and heterogeneous studies fall outside the \xB12 band.",
689
689
  tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "radial plot", "outliers"],
690
690
  sample: (seed) => MedicalSamples.heterogeneous(seed),
691
- variants: { model: Object.values(_chunk7KM52NMNcjs.PoolingModel), arc: [true, false], band: [true, false] }
691
+ variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), arc: [true, false], band: [true, false] }
692
692
  }}
693
693
  defaults() {
694
694
  return { effect: "effect", se: "se", study: "study", model: "fixed-effect" /* Fixed */, arc: true, band: true };
@@ -699,7 +699,7 @@ var GalbraithPlot = (_class5 = class extends _chunkUXFWDEP6cjs.StatisticalChart
699
699
  #fit() {
700
700
  const { data, effect, se, study, model } = this.options;
701
701
  const read = MetaStudies.read(data, effect, se, study);
702
- const pooled = _chunk7KM52NMNcjs.MetaAnalysis.pool(read, model), slope = pooled.effect;
702
+ const pooled = _chunkSN5T7WYOcjs.MetaAnalysis.pool(read, model), slope = pooled.effect;
703
703
  const studies = read.map((d) => {
704
704
  const spread = Math.sqrt(d.se ** 2 + pooled.tau2), x = 1 / spread, y = d.effect / spread;
705
705
  return { name: d.name, effect: d.effect, x, y, outside: Math.abs(y - slope * x) > 2 };
@@ -800,7 +800,7 @@ var GoshPlot = (_class6 = class _GoshPlot extends _chunkUXFWDEP6cjs.StatisticalC
800
800
  description: "Plots the pooled effect against heterogeneity for every subset of studies, so separate clusters expose the studies that cause them.",
801
801
  tags: ["meta-analysis", "evidence synthesis", "heterogeneity", "subsets", "sensitivity analysis"],
802
802
  sample: (seed) => MedicalSamples.heterogeneous(seed, 10),
803
- variants: { model: Object.values(_chunk7KM52NMNcjs.PoolingModel), heterogeneity: Object.values(GoshHeterogeneity), marks: Object.values(GoshMarks), marginals: [true, false] }
803
+ variants: { model: Object.values(_chunkSN5T7WYOcjs.PoolingModel), heterogeneity: Object.values(GoshHeterogeneity), marks: Object.values(GoshMarks), marginals: [true, false] }
804
804
  }}
805
805
  #suspect = "";
806
806
  defaults() {
@@ -1151,7 +1151,7 @@ var LAbbePlot = (_class8 = class extends _chunkUXFWDEP6cjs.StatisticalChart {
1151
1151
  }[this.options.measure];
1152
1152
  return { name: d.study, effect, se: Math.sqrt(variance), subgroup: "All" };
1153
1153
  }).filter((d) => Number.isFinite(d.effect) && d.se > 0);
1154
- return studies.length ? _chunk7KM52NMNcjs.MetaAnalysis.pool(studies, "fixed-effect" /* Fixed */).effect : null;
1154
+ return studies.length ? _chunkSN5T7WYOcjs.MetaAnalysis.pool(studies, "fixed-effect" /* Fixed */).effect : null;
1155
1155
  }
1156
1156
  /** Treatment risk the pooled effect implies at a control risk. */
1157
1157
  #implied(pc, pooled) {
@@ -1422,7 +1422,7 @@ var PressureVolumeLoop = (_class10 = class _PressureVolumeLoop extends _chunkUXF
1422
1422
  /** Slope and dead volume of the line through the end-systolic corners. */
1423
1423
  static espvr(beats) {
1424
1424
  if (beats.length < 2) return null;
1425
- const fit = new (0, _chunk7KM52NMNcjs.RegressionFit)(beats.map((d) => d.points[d.es][0]), beats.map((d) => d.points[d.es][1]));
1425
+ const fit = new (0, _chunkSN5T7WYOcjs.RegressionFit)(beats.map((d) => d.points[d.es][0]), beats.map((d) => d.points[d.es][1]));
1426
1426
  const ees = fit.predict(1) - fit.predict(0);
1427
1427
  return ees > 0 ? { ees, v0: -fit.predict(0) / ees } : null;
1428
1428
  }
@@ -1430,7 +1430,7 @@ var PressureVolumeLoop = (_class10 = class _PressureVolumeLoop extends _chunkUXF
1430
1430
  static edpvr(beats) {
1431
1431
  const corners = beats.map((d) => d.points[d.ed]).filter((d) => d[1] > 0);
1432
1432
  if (corners.length < 2) return null;
1433
- const fit = new (0, _chunk7KM52NMNcjs.RegressionFit)(corners.map((d) => d[0]), corners.map((d) => Math.log(d[1])));
1433
+ const fit = new (0, _chunkSN5T7WYOcjs.RegressionFit)(corners.map((d) => d[0]), corners.map((d) => Math.log(d[1])));
1434
1434
  const b = fit.predict(1) - fit.predict(0);
1435
1435
  return b > 0 ? { a: Math.exp(fit.predict(0)), b } : null;
1436
1436
  }
@@ -18,7 +18,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
18
18
  var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
19
19
 
20
20
 
21
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
21
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
22
22
 
23
23
  // src/charts/distribution/BackToBackHistogram.ts
24
24
  var _d3 = require('d3');
@@ -285,7 +285,7 @@ var BinnedChart = class extends MeasureDistribution {
285
285
  // src/charts/distribution/DistributionSamples.ts
286
286
  var DistributionSamples = class {
287
287
  static uneven(seed, perGroup = 150, groups = 4) {
288
- const rows = _chunkUMEKIIHJcjs.SampleData.distribution(seed, perGroup, groups);
288
+ const rows = _chunkLNWTC72Ycjs.SampleData.distribution(seed, perGroup, groups);
289
289
  const names = [...new Set(rows.map((row) => String(row.group)))];
290
290
  const turn = [...names.filter((_, i) => i % 2).reverse(), ...names.filter((_, i) => !(i % 2))];
291
291
  return turn.flatMap((name, position) => rows.filter((row) => row.group === name).slice(0, Math.round(perGroup * (1 - position * 0.55 / groups))));
@@ -525,7 +525,7 @@ var BeeswarmChart = (_class7 = class extends BandDistribution {
525
525
  shape: "table" /* Table */,
526
526
  description: "Shifts each point sideways just enough to avoid overlap, showing every observation and the shape they build.",
527
527
  tags: ["swarm", "strip", "categorical scatter", "bubble"],
528
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.points(seed, 96, 3).map(({ group, y, size }) => ({ group, value: y, size })),
528
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 96, 3).map(({ group, y, size }) => ({ group, value: y, size })),
529
529
  variants: {
530
530
  orientation: ["horizontal" /* Horizontal */, "vertical" /* Vertical */],
531
531
  lanes: ["lanes" /* Grouped */, "shared-lane" /* Shared */],
@@ -1491,7 +1491,7 @@ var ParetoChart = (_class18 = class extends _chunkXX2YTCORcjs.CartesianChart {co
1491
1491
  shape: "table" /* Table */,
1492
1492
  description: "Sorts categories by size and adds their running share, showing which few account for most of the total.",
1493
1493
  tags: ["80/20", "quality", "cumulative"],
1494
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.categories(seed, 12, 1),
1494
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 12, 1),
1495
1495
  variants: {
1496
1496
  orientation: ["vertical" /* Vertical */, "horizontal" /* Horizontal */],
1497
1497
  cutoff: ["vital-few" /* Highlight */, "cutoff-line" /* Line */, "no-cutoff" /* None */],
@@ -3,7 +3,7 @@
3
3
  var _chunkXX2YTCORcjs = require('./chunk-XX2YTCOR.cjs');
4
4
 
5
5
 
6
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
6
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
7
7
 
8
8
  // src/charts/chemistrycharts/TanabeSuganoTerms.ts
9
9
  var TanabeSuganoConfiguration = /* @__PURE__ */ ((TanabeSuganoConfiguration2) => {
@@ -436,7 +436,7 @@ var BANDS = [
436
436
  var ChemSamples = class {
437
437
  /** `{ reaction, temperature, rate }`: rate constants in 1/s from 290 K to 350 K, from the Arrhenius equation. */
438
438
  static rateConstants(seed) {
439
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
439
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
440
440
  return REACTIONS.flatMap(({ reaction, energy, prefactor }) => {
441
441
  const ea = energy * (1 + 0.06 * n());
442
442
  return [290, 300, 310, 320, 330, 340, 350].map((temperature) => ({
@@ -448,7 +448,7 @@ var ChemSamples = class {
448
448
  }
449
449
  /** `{ electrode, overpotential, current }`: Butler-Volmer current densities in A/cm², bent over by a mass-transport limit. */
450
450
  static polarisation(seed) {
451
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed), thermal = ChemMath.F / (ChemMath.R * 298.15);
451
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), thermal = ChemMath.F / (ChemMath.R * 298.15);
452
452
  return ELECTRODES.flatMap(({ electrode, exchange, anodic, cathodic, limit }) => {
453
453
  const j0 = exchange * Math.exp(0.5 * n());
454
454
  return Array.from({ length: 81 }, (_, i) => round(-0.4 + i * 0.01, 2)).filter((eta) => eta !== 0).map((overpotential) => {
@@ -462,7 +462,7 @@ var ChemSamples = class {
462
462
  * explicit finite-difference solution of diffusion to a planar electrode with a Nernstian surface.
463
463
  */
464
464
  static voltammetry(seed) {
465
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
465
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
466
466
  const formal = round(0.25 + 0.04 * n()), diffusion = 76e-7, area = 0.071, bulk = 1e-6, thermal = ChemMath.F / (ChemMath.R * 298.15);
467
467
  const start = formal - 0.35, turn = formal + 0.35, steps = 2400, every = 8, lambda = 0.45;
468
468
  return [25, 100, 400].flatMap((rate) => {
@@ -482,7 +482,7 @@ var ChemSamples = class {
482
482
  }
483
483
  /** `{ titration, volume, ph }`: 25 mL of a 0.1 M diprotic acid titrated with 0.1 M strong base, from the exact charge balance. */
484
484
  static titration(seed) {
485
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
485
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
486
486
  const k1 = 10 ** -(3.1 + 0.3 * n()), k2 = 10 ** -(7.4 + 0.3 * n()), water = 1e-14, acid = 0.1, base = 0.1, sample = 25;
487
487
  const curve = Array.from({ length: 1201 }, (_, i) => {
488
488
  const ph = 1 + i * 12 / 1200, h = 10 ** -ph, oh = water / h, parts = h * h + k1 * h + k1 * k2;
@@ -494,7 +494,7 @@ var ChemSamples = class {
494
494
  }
495
495
  /** `{ pathway, step, state, kind, energy }` in kJ/mol: a one-step reaction, and the same reaction through a catalysed two-step route. */
496
496
  static pathways(seed) {
497
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
497
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
498
498
  const product = -Math.round(28 + 30 * u()), barrier = Math.round(118 + 30 * u()), first = Math.round(52 + 16 * u()), middle = Math.round(12 + 16 * u()), second = Math.round(first - 12 + 14 * u());
499
499
  return [
500
500
  { pathway: "Uncatalysed", step: 0, state: "Reactants", kind: "minimum", energy: 0 },
@@ -509,7 +509,7 @@ var ChemSamples = class {
509
509
  }
510
510
  /** `{ configuration, complex, band, delta, energy }`: the spin-allowed bands of one made-up complex per configuration, placed on its diagram. */
511
511
  static ligandFieldBands(seed) {
512
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
512
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
513
513
  const fields = {
514
514
  ["d2" /* D2 */]: 26,
515
515
  ["d3" /* D3 */]: 24,
@@ -525,12 +525,12 @@ var ChemSamples = class {
525
525
  }
526
526
  /** `{ shift, protons, multiplicity, coupling, assignment }`: the first-order proton peak list of a small ester or an alkylbenzene. */
527
527
  static protonPeaks(seed) {
528
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
528
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
529
529
  return pick(MOLECULES, seed).map((peak) => ({ ...peak, shift: round(peak.shift + 0.01 * n(), 2) }));
530
530
  }
531
531
  /** `{ sample, wavenumber, transmittance }`: percent transmittance every 4 cm⁻¹ from 4000 to 400, from Lorentzian absorption bands on a sloping baseline. */
532
532
  static infrared(seed) {
533
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed), { sample, bands } = pick(COMPOUNDS, seed);
533
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), { sample, bands } = pick(COMPOUNDS, seed);
534
534
  const shifted = bands.map(([centre, half, depth]) => [centre + 3 * n(), half, depth * (1 + 0.08 * n())]);
535
535
  return Array.from({ length: 901 }, (_, i) => 4e3 - i * 4).map((wavenumber) => {
536
536
  const absorbed = shifted.reduce((sum, [centre, half, depth]) => sum + depth * half * Math.PI * ChemMath.lorentz(wavenumber, centre, half), 0.02 + (4e3 - wavenumber) / 3600 * 0.03);
@@ -542,7 +542,7 @@ var ChemSamples = class {
542
542
  * reflections of each phase with their Miller indices. Peak positions come from the cubic lattice constants by Bragg's law.
543
543
  */
544
544
  static diffraction(seed) {
545
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed), wavelength = 1.5406, half = 0.09;
545
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), wavelength = 1.5406, half = 0.09;
546
546
  const phases = seed % 2 ? [PHASES[0], PHASES[1]] : [PHASES[2], PHASES[1]];
547
547
  const reflections = phases.flatMap(({ phase, cell, share, lines }) => lines.flatMap(([hkl, intensity]) => {
548
548
  const sine = wavelength * Math.hypot(...[...hkl].map(Number)) / (2 * cell);
@@ -559,7 +559,7 @@ var ChemSamples = class {
559
559
  * the submillimetre, with two bands as 3σ upper limits, then the stellar, warm dust and cold dust curves it was drawn from.
560
560
  */
561
561
  static photometry(seed) {
562
- const { n, u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
562
+ const { n, u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
563
563
  const planck = (wavelength, kelvin, beta = 0) => {
564
564
  const reduced = 14387.77 / (wavelength * kelvin);
565
565
  return wavelength ** -(3 + beta) / Math.expm1(Math.min(600, reduced));
@@ -9,7 +9,7 @@ var _chunkSGMB5HSQcjs = require('./chunk-SGMB5HSQ.cjs');
9
9
  var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
10
10
 
11
11
 
12
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
12
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
13
13
 
14
14
  // src/charts/structure/DependencyMatrix.ts
15
15
  var _d3 = require('d3');
@@ -130,7 +130,7 @@ var DependencyMatrix = (_class = class _DependencyMatrix extends _chunkEEF5WRRZc
130
130
  }}
131
131
  /** A vehicle's subsystems: the sample graph's clusters become systems, and stronger links inside a system run both ways. */
132
132
  static vehicle(seed) {
133
- const first = _chunkUMEKIIHJcjs.SampleData.graph(seed, 20, 4), second = _chunkUMEKIIHJcjs.SampleData.graph(seed + 1, 20, 4);
133
+ const first = _chunkLNWTC72Ycjs.SampleData.graph(seed, 20, 4), second = _chunkLNWTC72Ycjs.SampleData.graph(seed + 1, 20, 4);
134
134
  const count = {};
135
135
  const names = new Map(first.nodes.map((node) => {
136
136
  const taken = count[node.group] = (_nullishCoalesce(count[node.group], () => ( -1))) + 1;
@@ -408,8 +408,8 @@ var VERBS = ["Add", "Fix", "Rework", "Document", "Test", "Tidy"];
408
408
  var GitSample = class {
409
409
  /** Three finished feature branches and two still open, newest row first, with parents as comma-separated text. */
410
410
  static history(seed) {
411
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
412
- const words = _chunkUMEKIIHJcjs.SampleData.words(seed).sort((a, b) => +b.value - +a.value).map((row) => String(row.text));
411
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
412
+ const words = _chunkLNWTC72Ycjs.SampleData.words(seed).sort((a, b) => +b.value - +a.value).map((row) => String(row.text));
413
413
  const rows = [];
414
414
  const commit = (parents, message, ref) => {
415
415
  const id = Math.floor(u() * 268435455).toString(16).padStart(7, "0");
@@ -728,8 +728,8 @@ var MareyChart = (_class3 = class _MareyChart extends _chunkEEF5WRRZcjs.Chart2D
728
728
  }}
729
729
  /** A morning on an eight-station line: locals call everywhere, every third train runs express, trains are numbered even one way and odd the other. */
730
730
  static line(seed) {
731
- const legs = _chunkUMEKIIHJcjs.SampleData.categories(seed, 12, 1).slice(4);
732
- const wobble = _chunkUMEKIIHJcjs.SampleData.timeSeries(seed, 8, 2);
731
+ const legs = _chunkLNWTC72Ycjs.SampleData.categories(seed, 12, 1).slice(4);
732
+ const wobble = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 8, 2);
733
733
  let reach = 0;
734
734
  const stations = legs.map((row, i) => {
735
735
  if (i) reach += Math.round(6 + +row.value * 0.2);
@@ -1182,7 +1182,7 @@ var TournamentBracket = (_class5 = class _TournamentBracket extends _chunkEEF5WR
1182
1182
  }}
1183
1183
  /** Eight regional sides. Ratings set the seeds and pull scores toward form, so upsets stay possible but rare. */
1184
1184
  static sampleResults(seed) {
1185
- const rows = [..._chunkUMEKIIHJcjs.SampleData.categories(seed, 8, 8), ..._chunkUMEKIIHJcjs.SampleData.categories(seed + 1, 8, 2)];
1185
+ const rows = [..._chunkLNWTC72Ycjs.SampleData.categories(seed, 8, 8), ..._chunkLNWTC72Ycjs.SampleData.categories(seed + 1, 8, 2)];
1186
1186
  const teams = [...new Set(rows.map((row) => String(row.category)))];
1187
1187
  const rating = new Map(teams.map((team) => {
1188
1188
  const own = rows.filter((row) => row.category === team);
@@ -1348,7 +1348,7 @@ var UmlClassDiagram = (_class6 = class _UmlClassDiagram extends _chunkEEF5WRRZcj
1348
1348
  }}
1349
1349
  /** An order-taking domain model; the seed decides which optional payment type it includes. */
1350
1350
  static ordering(seed) {
1351
- const voucher = +_chunkUMEKIIHJcjs.SampleData.categories(seed, 1, 1)[0].value % 2 === 0;
1351
+ const voucher = +_chunkLNWTC72Ycjs.SampleData.categories(seed, 1, 1)[0].value % 2 === 0;
1352
1352
  const nodes = [
1353
1353
  { id: "Customer", fields: ["- id: UUID", "- email: string"], methods: ["+ placeOrder(): Order"] },
1354
1354
  { id: "Order", fields: ["- placedAt: Date", "- status: Status"], methods: ["+ total(): Money", "+ cancel(): void"] },
@@ -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/physicscharts/BlochSphere3D.ts
18
18
 
@@ -124,7 +124,7 @@ var BlochShell = /* @__PURE__ */ ((BlochShell2) => {
124
124
  var RADIUS = 0.9;
125
125
  var STEPS = 60;
126
126
  var sampleQubits = (seed) => {
127
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
127
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
128
128
  const tilt = Math.PI / 2 - 0.35;
129
129
  const free = Array.from({ length: STEPS }, (_, t) => {
130
130
  const coherence = Math.sin(tilt) * Math.exp(-t / 22), phase = 2 * Math.PI * t / 12;
@@ -304,7 +304,7 @@ var DalitzPlot = (_class2 = class _DalitzPlot extends _chunkXX2YTCORcjs.Cartesia
304
304
  }
305
305
  /** Phase-space events by accept-reject in the boundary, a third of them in a K*(892) Breit-Wigner band on each Kπ pair. */
306
306
  static sampleDecays(seed, count = 900) {
307
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
307
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
308
308
  const masses = [KAON, PION, PION];
309
309
  const [lo, hi] = [(KAON + PION) ** 2, (D_PLUS - PION) ** 2];
310
310
  const rows = [];
@@ -487,7 +487,7 @@ var FeynmanDiagram = (_class3 = class _FeynmanDiagram extends _chunkEEF5WRRZcjs.
487
487
  description: "Lays out particle lines and vertices in time order, drawing fermions, photons, gluons, weak bosons and scalars in standard notation.",
488
488
  tags: ["particle physics", "quantum field theory", "qed", "qcd", "interaction", "physics"],
489
489
  sample: (seed) => {
490
- const pick = _nullishCoalesce(PROCESSES[Math.floor(_chunkUMEKIIHJcjs.SampleData.rng(seed).u() * PROCESSES.length)], () => ( PROCESSES[0]));
490
+ const pick = _nullishCoalesce(PROCESSES[Math.floor(_chunkLNWTC72Ycjs.SampleData.rng(seed).u() * PROCESSES.length)], () => ( PROCESSES[0]));
491
491
  return pick.map(([from, to, particle, label]) => ({ from, to, particle, label }));
492
492
  },
493
493
  variants: {
@@ -771,7 +771,7 @@ var InfluenceLineChart = (_class4 = class extends _chunkXX2YTCORcjs.CartesianCha
771
771
  shape: "table" /* Table */,
772
772
  description: "Plots how a reaction, shear or moment changes as a unit load moves along a beam, and places an axle train at its worst position.",
773
773
  tags: ["structural", "bridge", "moving load", "muller-breslau", "beam", "civil engineering"],
774
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.categories(seed, 3, 1).map((row, i) => ({ axle: `Axle ${i + 1}`, offset: HS20_SPACING[i], load: Math.round(+row.value * (i ? 1.6 : 0.5)) })),
774
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row, i) => ({ axle: `Axle ${i + 1}`, offset: HS20_SPACING[i], load: Math.round(+row.value * (i ? 1.6 : 0.5)) })),
775
775
  variants: {
776
776
  quantity: Object.values(InfluenceQuantity),
777
777
  support: Object.values(BeamSupport),
@@ -910,7 +910,7 @@ var InteractionDiagram = (_class5 = class _InteractionDiagram extends _chunkXX2Y
910
910
  shape: "table" /* Table */,
911
911
  description: "Draws the axial load and moment capacity envelope of a reinforced concrete column by strain compatibility, and checks load cases against it.",
912
912
  tags: ["structural", "column", "reinforced concrete", "aci 318", "capacity", "civil engineering"],
913
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.points(seed, 10, 1).map((row, i) => ({ loadCase: `LC${i + 1}`, moment: Math.round(+row.x * 9), axial: Math.round(+row.y * 90 - 500) })),
913
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 10, 1).map((row, i) => ({ loadCase: `LC${i + 1}`, moment: Math.round(+row.x * 9), axial: Math.round(+row.y * 90 - 500) })),
914
914
  variants: {
915
915
  strength: Object.values(InteractionStrength),
916
916
  bars: Object.values(InteractionBars),
@@ -1086,7 +1086,7 @@ var CAPTION = 16;
1086
1086
  var FINE = 1200;
1087
1087
  var chainage = (metres) => `${Math.floor(metres / 1e3)}+${String(Math.round(metres % 1e3)).padStart(3, "0")}`;
1088
1088
  var sampleEarthworks = (seed) => {
1089
- const walk = _chunkUMEKIIHJcjs.SampleData.timeSeries(seed, 31, 1).map((row) => +row.value);
1089
+ const walk = _chunkLNWTC72Ycjs.SampleData.timeSeries(seed, 31, 1).map((row) => +row.value);
1090
1090
  const mean = walk.reduce((sum, v) => sum + v, 0) / walk.length;
1091
1091
  return walk.map((v, i) => {
1092
1092
  const net = i ? (v - mean) * 60 : 0;
@@ -1249,7 +1249,7 @@ var STARTS = [0, -0.6, 2.4];
1249
1249
  var NAMES2 = ["Earth", "Rocket", "Probe"];
1250
1250
  var clips = 0;
1251
1251
  var sampleEvents = (seed) => {
1252
- const rows = _chunkUMEKIIHJcjs.SampleData.points(seed, 12, 3);
1252
+ const rows = _chunkLNWTC72Ycjs.SampleData.points(seed, 12, 3);
1253
1253
  return NAMES2.flatMap((name, g) => {
1254
1254
  const ys = rows.filter((_, i) => i % 3 === g).map((row) => +row.y).sort((a, b) => a - b);
1255
1255
  const low = ys[0], high = ys[ys.length - 1];
@@ -1435,7 +1435,7 @@ var PenroseRegion = /* @__PURE__ */ ((PenroseRegion2) => {
1435
1435
  var HALF = Math.PI / 2;
1436
1436
  var MASS = 1;
1437
1437
  var RADIUS2 = 10;
1438
- var sampleWorldlines = (seed) => _chunkUMEKIIHJcjs.SampleData.points(seed, 3, 3).flatMap((row, g) => {
1438
+ var sampleWorldlines = (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 3, 3).flatMap((row, g) => {
1439
1439
  const r = +(2.8 + 2.4 * g + +row.size / 30).toFixed(1);
1440
1440
  return Array.from({ length: 81 }, (_, i) => ({ path: `r = ${r}`, time: i - 40, radius: r, region: "I" /* I */ }));
1441
1441
  });
@@ -1659,7 +1659,7 @@ var PlasticityChart = (_class9 = class _PlasticityChart extends _chunkXX2YTCORcj
1659
1659
  shape: "table" /* Table */,
1660
1660
  description: "Plots plasticity index against liquid limit on the Casagrande chart, classifying each specimen as clay or silt by the A-line.",
1661
1661
  tags: ["geotechnical", "soil", "atterberg limits", "uscs", "classification", "civil engineering"],
1662
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.points(seed, 36, 3).map((row, i) => ({
1662
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.points(seed, 36, 3).map((row, i) => ({
1663
1663
  specimen: `S${i + 1}`,
1664
1664
  borehole: `BH-${i % 3 + 1}`,
1665
1665
  liquidLimit: +Math.max(12, +row.x).toFixed(1),
@@ -1813,7 +1813,7 @@ var BEAM_BAND = 78;
1813
1813
  var GAP = 18;
1814
1814
  var GUTTER2 = 44;
1815
1815
  var sampleLoads = (seed) => {
1816
- const [a, b, c] = _chunkUMEKIIHJcjs.SampleData.categories(seed, 3, 1).map((row) => +row.value);
1816
+ const [a, b, c] = _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row) => +row.value);
1817
1817
  return [
1818
1818
  { label: "P1", position: 2.5, end: null, load: +(a / 4).toFixed(1) },
1819
1819
  { label: "P2", position: 9.5, end: null, load: +(b / 5).toFixed(1) },