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
@@ -1,5 +1,5 @@
1
1
  import { SurfaceOverlay, SurfaceProjection } from "./SurfaceBase.js";
2
- import "./SurfaceField.js";
2
+ import { SurfaceField } from "./SurfaceField.js";
3
3
  import "./GridSurfaceBase.js";
4
4
  import { ComplexFunction, ComplexHeight, ComplexSurface } from "./ComplexSurface.js";
5
5
  import { ContourLevels, ContourMode, ContourSurface } from "./ContourSurface.js";
@@ -46,4 +46,4 @@ var threesurfacesCatalog = [
46
46
  SliceSurface,
47
47
  DensitySurface
48
48
  ];
49
- export { ComplexFunction, ComplexHeight, ComplexSurface, ContourLevels, ContourMode, ContourSurface, DensitySurface, HeightBarBaseline, HeightBarLayout, HeightBarShape, HeightfieldBars, ImplicitClip, ImplicitSurface, ImplicitSurfaceForm, LayerArrangement, LayerMark, LayeredSurfaces, MeshBody, MeshPose, MeshSurface, MeshTile, ParametricCut, ParametricSurface, ParametricSurfaceForm, PhaseMarks, PhaseSeeding, PhaseSurface, PhaseSurfaceSystem, PolarAngleAxis, PolarSurface, RibbonForm, RibbonLayout, RibbonSmoothing, RibbonSurface, Ridge3DMark, Ridge3DOrder, Ridge3DProfile, Ridge3DScaling, Ridgeline3DChart, SaddleFootprint, SaddleModel, SaddleSurface, SliceAxis, SliceMark, SliceSurface, Spectrogram3DChart, SpectrogramMark, SpectrogramWindow, SpectrumAmplitude, SpectrumWaterfallMark, SurfaceChart, SurfaceDensityKernel, SurfaceDensityMark, SurfaceOverlay, SurfaceProjection, SurfaceShading, TerrainBase, TerrainChart, TriangulatedSurface, TriangulationMark, TriangulationTrim, Waterfall3DSpectrum, WireLines, WireframeSurface, threesurfacesCatalog };
49
+ export { ComplexFunction, ComplexHeight, ComplexSurface, ContourLevels, ContourMode, ContourSurface, DensitySurface, HeightBarBaseline, HeightBarLayout, HeightBarShape, HeightfieldBars, ImplicitClip, ImplicitSurface, ImplicitSurfaceForm, LayerArrangement, LayerMark, LayeredSurfaces, MeshBody, MeshPose, MeshSurface, MeshTile, ParametricCut, ParametricSurface, ParametricSurfaceForm, PhaseMarks, PhaseSeeding, PhaseSurface, PhaseSurfaceSystem, PolarAngleAxis, PolarSurface, RibbonForm, RibbonLayout, RibbonSmoothing, RibbonSurface, Ridge3DMark, Ridge3DOrder, Ridge3DProfile, Ridge3DScaling, Ridgeline3DChart, SaddleFootprint, SaddleModel, SaddleSurface, SliceAxis, SliceMark, SliceSurface, Spectrogram3DChart, SpectrogramMark, SpectrogramWindow, SpectrumAmplitude, SpectrumWaterfallMark, SurfaceChart, SurfaceDensityKernel, SurfaceDensityMark, SurfaceField, SurfaceOverlay, SurfaceProjection, SurfaceShading, TerrainBase, TerrainChart, TriangulatedSurface, TriangulationMark, TriangulationTrim, Waterfall3DSpectrum, WireLines, WireframeSurface, threesurfacesCatalog };
@@ -0,0 +1,171 @@
1
+ import { ChartFamily, DataShape, Dimension } from "../../core/enums.js";
2
+ import { Scales } from "../../core/Scales.js";
3
+ import { SampleData } from "../../data/SampleData.js";
4
+ import { PriceChart } from "../financial/PriceChart.js";
5
+ import { PriceMark, PriceScale } from "../financial/financeEnums.js";
6
+ import { Quotes } from "../financial/Quotes.js";
7
+ import { TradingInk } from "./TradingInk.js";
8
+ import { TradingMath } from "./TradingMath.js";
9
+ import { area } from "d3";
10
+ // src/charts/tradingcharts/KeltnerChannelChart.ts
11
+ var whole = (value, fallback) => Math.max(1, Math.round(Number(value)) || fallback);
12
+ /**
13
+ * Price inside a volatility channel: an EMA with bands a multiple of the average true range either side.
14
+ * Use it to see how far price sits from its trend in units of its own range, and where the range has tightened.
15
+ * It shows an indicator of the data given and is not advice.
16
+ */
17
+ var KeltnerChannelChart = class extends PriceChart {
18
+ static meta = {
19
+ id: "keltner-channels",
20
+ name: "Keltner channels",
21
+ family: ChartFamily.Financial,
22
+ dimension: Dimension.Two,
23
+ shape: DataShape.Table,
24
+ description: "Wraps price in bands set at a multiple of the average true range around an EMA, with an optional wider pair and shaded squeezes.",
25
+ tags: [
26
+ "keltner",
27
+ "atr",
28
+ "ema",
29
+ "volatility",
30
+ "envelope",
31
+ "channel",
32
+ "squeeze"
33
+ ],
34
+ sample: (seed) => SampleData.ohlc(seed, 110),
35
+ variants: {
36
+ mark: [
37
+ PriceMark.Candles,
38
+ PriceMark.Bars,
39
+ PriceMark.Line
40
+ ],
41
+ period: [
42
+ 20,
43
+ 10,
44
+ 50
45
+ ],
46
+ multiplier: [2, 1.5],
47
+ outerBands: [false, true],
48
+ squeeze: [false, true]
49
+ }
50
+ };
51
+ defaults() {
52
+ return {
53
+ ...super.defaults(),
54
+ mark: PriceMark.Candles,
55
+ period: 20,
56
+ atrPeriod: 10,
57
+ multiplier: 2,
58
+ outerBands: false,
59
+ outerMultiplier: 3,
60
+ squeeze: false,
61
+ squeezeShare: .25,
62
+ squeezeWindow: 40
63
+ };
64
+ }
65
+ twoTone() {
66
+ return this.options.mark !== PriceMark.Line;
67
+ }
68
+ /** The inner channel, then the outer one when it is on. A log axis cannot show a band at or below 0, so those points are dropped. */
69
+ channels(bars) {
70
+ const { period, atrPeriod, multiplier, outerBands, outerMultiplier, scale } = this.options;
71
+ const shown = (series) => scale === PriceScale.Log ? series.map((value) => value !== null && value > 0 ? value : null) : series;
72
+ return [multiplier, ...outerBands ? [outerMultiplier] : []].map((width) => {
73
+ const channel = TradingMath.keltner(bars, whole(period, 20), whole(atrPeriod, 10), width);
74
+ return {
75
+ ...channel,
76
+ upper: shown(channel.upper),
77
+ lower: shown(channel.lower)
78
+ };
79
+ });
80
+ }
81
+ squeezes(bars, inner) {
82
+ const { squeeze, squeezeWindow, squeezeShare } = this.options;
83
+ if (!squeeze) return [];
84
+ return TradingMath.squeezed(inner.range, whole(squeezeWindow, 40), squeezeShare).map((tight, i) => tight && inner.upper[i] != null && inner.lower[i] != null);
85
+ }
86
+ get channelName() {
87
+ const { period, multiplier, outerBands, outerMultiplier } = this.options;
88
+ return `Keltner ${whole(period, 20)}, ${multiplier}${outerBands ? ` and ${outerMultiplier}` : ""} ATR`;
89
+ }
90
+ /** The bands join the price domain; `drawStudies` draws them. */
91
+ studies(bars) {
92
+ return this.channels(bars).map(({ mid, upper, lower }) => ({
93
+ name: this.channelName,
94
+ mid,
95
+ upper,
96
+ lower
97
+ }));
98
+ }
99
+ barTip(bar) {
100
+ const tip = super.barTip(bar), bars = this.bars(), [inner, outer] = this.channels(bars), i = bar.index;
101
+ const percent = this.options.scale === PriceScale.Percent;
102
+ const show = (value) => value == null ? "n/a" : percent ? `${Quotes.signed(value, 1)}%` : Quotes.money(value);
103
+ const range = inner.range[i];
104
+ return {
105
+ ...tip,
106
+ rows: [
107
+ ...tip.rows ?? [],
108
+ [`EMA ${whole(this.options.period, 20)}`, show(inner.mid[i])],
109
+ [`Band, ${this.options.multiplier} ATR`, `${show(inner.lower[i])} to ${show(inner.upper[i])}`],
110
+ ...outer ? [[`Band, ${this.options.outerMultiplier} ATR`, `${show(outer.lower[i])} to ${show(outer.upper[i])}`]] : [],
111
+ [`ATR ${whole(this.options.atrPeriod, 10)}`, range == null ? "n/a" : percent ? `${range.toFixed(1)}%` : Quotes.money(range)],
112
+ ...this.squeezes(bars, inner)[i] ? [["Squeeze", "Yes"]] : []
113
+ ]
114
+ };
115
+ }
116
+ priceMarks(ctx, view, tones) {
117
+ this.drawPrice(ctx, view, tones, this.options.mark);
118
+ const { x, bars, step, main } = view;
119
+ const runs = [];
120
+ this.squeezes(bars, this.channels(bars)[0]).forEach((tight, i) => {
121
+ if (!tight) return;
122
+ const last = runs.at(-1);
123
+ if (last && last.to === i - 1) last.to = i;
124
+ else runs.push({
125
+ from: i,
126
+ to: i
127
+ });
128
+ });
129
+ const left = (run) => Math.max(0, x(run.from) - step / 2), right = (run) => Math.min(ctx.plot.width, x(run.to) + step / 2);
130
+ const strip = ctx.marks("squeeze", "rect", runs, (run) => run.from).attr("fill", ctx.theme.grid).attr("fill-opacity", .7);
131
+ ctx.set(strip, {
132
+ x: left,
133
+ width: (run) => Math.max(1, right(run) - left(run)),
134
+ y: main.top,
135
+ height: main.bottom - main.top
136
+ });
137
+ ctx.group("squeeze").lower();
138
+ ctx.group("grid").lower();
139
+ const named = [];
140
+ for (const run of runs) {
141
+ const at = Math.max(24, Math.min(ctx.plot.width - 24, (left(run) + right(run)) / 2));
142
+ if (named.every((kept) => Math.abs(kept.at - at) >= 52)) named.push({
143
+ ...run,
144
+ at
145
+ });
146
+ }
147
+ TradingInk.note(ctx, "squeeze-labels", named, (run) => ({
148
+ x: run.at,
149
+ y: main.top + 11,
150
+ text: "Squeeze",
151
+ anchor: "middle"
152
+ }), 10, "muted");
153
+ }
154
+ drawStudies(ctx, view) {
155
+ const { x, y, bars } = view;
156
+ const [inner, outer] = this.channels(bars);
157
+ const color = ctx.palette.color(this.channelName);
158
+ const between = ({ upper, lower }) => {
159
+ const band = area().curve(Scales.curve()).defined((value, i) => value !== null && lower[i] != null).x((_, i) => x(i)).y0((_, i) => y(lower[i])).y1((value) => y(value));
160
+ return upper.some((value, i) => value !== null && lower[i] != null) ? band(upper) : null;
161
+ };
162
+ TradingInk.fill(ctx, "outer-channel", outer ? between(outer) : null, color, .07);
163
+ TradingInk.fill(ctx, "channel", between(inner), color, .1);
164
+ TradingInk.series(ctx, "outer-upper", outer?.upper ?? [], x, y, color, 1.5, "5 4");
165
+ TradingInk.series(ctx, "outer-lower", outer?.lower ?? [], x, y, color, 1.5, "5 4");
166
+ TradingInk.series(ctx, "upper-band", inner.upper, x, y, color, 1.5);
167
+ TradingInk.series(ctx, "lower-band", inner.lower, x, y, color, 1.5);
168
+ TradingInk.series(ctx, "centre-line", inner.mid, x, y, color, 2);
169
+ }
170
+ };
171
+ export { KeltnerChannelChart };
@@ -72,6 +72,26 @@ var TradingMath = class {
72
72
  minus
73
73
  };
74
74
  }
75
+ /** Keltner channel: an EMA of the close with a band `multiplier` average true ranges either side. */
76
+ static keltner(bars, period = 20, atrPeriod = 10, multiplier = 2) {
77
+ const mid = FinanceMath.ema(bars.map((bar) => bar.close), period), range = FinanceMath.atr(bars, atrPeriod);
78
+ const shift = (sign) => mid.map((value, i) => value === null || range[i] == null ? null : value + sign * multiplier * range[i]);
79
+ return {
80
+ mid,
81
+ upper: shift(1),
82
+ lower: shift(-1),
83
+ range
84
+ };
85
+ }
86
+ /** Sessions whose width sits in the bottom `share` of its own range over the last `window` sessions. False until the window fills and while the width has not moved. */
87
+ static squeezed(widths, window = 40, share = .25) {
88
+ return widths.map((width, i) => {
89
+ const recent = widths.slice(Math.max(0, i + 1 - window), i + 1).filter((value) => value !== null);
90
+ if (width === null || recent.length < window) return false;
91
+ const low = Math.min(...recent), high = Math.max(...recent);
92
+ return high > low && width - low < share * (high - low);
93
+ });
94
+ }
75
95
  /** Close averaged over `period` sessions with volume as the weight; a plain mean where no volume traded. */
76
96
  static vwma(bars, period) {
77
97
  return bars.map((_, i) => {
@@ -7,6 +7,7 @@ import { EquivolumeAxis, EquivolumeChart, EquivolumeForm } from "./EquivolumeCha
7
7
  import { FibonacciRetracementChart, RetracementLevels, RetracementReach, RetracementSwing } from "./FibonacciRetracementChart.js";
8
8
  import { FootprintMath } from "./FootprintMath.js";
9
9
  import { FootprintChart, FootprintLayout, FootprintMeasure } from "./FootprintChart.js";
10
+ import { KeltnerChannelChart } from "./KeltnerChannelChart.js";
10
11
  import { ParabolicSARChart, ParabolicSARTrail } from "./ParabolicSARChart.js";
11
12
  // src/charts/tradingcharts/index.ts
12
13
  var tradingchartsCatalog = [
@@ -15,6 +16,7 @@ var tradingchartsCatalog = [
15
16
  FibonacciRetracementChart,
16
17
  ADXChart,
17
18
  AdvanceDeclineChart,
18
- FootprintChart
19
+ FootprintChart,
20
+ KeltnerChannelChart
19
21
  ];
20
- export { ADXChart, ADXLineSet, ADXShade, AdvanceDeclineBreadth, AdvanceDeclineChart, AdvanceDeclineCompare, AdvanceDeclineMeasure, EquivolumeAxis, EquivolumeChart, EquivolumeForm, FibonacciRetracementChart, FootprintChart, FootprintLayout, FootprintMath, FootprintMeasure, ParabolicSARChart, ParabolicSARTrail, RetracementLevels, RetracementReach, RetracementSwing, TradingInk, TradingMath, TradingSamples, tradingchartsCatalog };
22
+ export { ADXChart, ADXLineSet, ADXShade, AdvanceDeclineBreadth, AdvanceDeclineChart, AdvanceDeclineCompare, AdvanceDeclineMeasure, EquivolumeAxis, EquivolumeChart, EquivolumeForm, FibonacciRetracementChart, FootprintChart, FootprintLayout, FootprintMath, FootprintMeasure, KeltnerChannelChart, ParabolicSARChart, ParabolicSARTrail, RetracementLevels, RetracementReach, RetracementSwing, TradingInk, TradingMath, TradingSamples, tradingchartsCatalog };
@@ -13,7 +13,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
13
13
  var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
14
14
 
15
15
 
16
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
16
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
17
17
 
18
18
  // src/charts/acoustictransport/Chromagram.ts
19
19
  var _d3 = require('d3');
@@ -116,7 +116,7 @@ var BAR = 4;
116
116
  var MusicSamples = class _MusicSamples {
117
117
  /** `{ pitch, start, duration, velocity, voice }` with MIDI pitches and times in beats. */
118
118
  static score(seed, bars = 8) {
119
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed), draws = Array.from({ length: bars * 16 }, () => u());
119
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed), draws = Array.from({ length: bars * 16 }, () => u());
120
120
  const choose = (i, n) => Math.floor(draws[i % draws.length] * n);
121
121
  const first = PROGRESSIONS[choose(0, PROGRESSIONS.length)], second = PROGRESSIONS[choose(1, PROGRESSIONS.length)];
122
122
  const chords = Array.from({ length: bars }, (_, bar) => DEGREES[(bar < 4 ? first : second)[bar % 4]]);
@@ -528,7 +528,7 @@ var SOURCES = [
528
528
  var SWEEP = 80;
529
529
  var AUDIBLE = 2e4;
530
530
  function sample(seed) {
531
- const values = _chunkUMEKIIHJcjs.SampleData.categories(seed, 9, 3).map((row) => +row.value);
531
+ const values = _chunkLNWTC72Ycjs.SampleData.categories(seed, 9, 3).map((row) => +row.value);
532
532
  return SOURCES.flatMap(([source, shape], s) => OCTAVES.map((frequency, k) => ({ frequency, source, spl: +(shape(k) + (values[k * 3 + s] - 60) / 8).toFixed(1) })));
533
533
  }
534
534
  var EqualLoudnessContours = (_class5 = class extends _chunkXX2YTCORcjs.CartesianChart {
@@ -640,7 +640,7 @@ var LABELS = {
640
640
  ["speed-flow" /* SpeedFlow */]: ["Flow (veh/h/lane)", "Speed (km/h)"]
641
641
  };
642
642
  function sample2(seed) {
643
- return _chunkUMEKIIHJcjs.SampleData.points(seed, 150, 3).map((row, i) => {
643
+ return _chunkLNWTC72Ycjs.SampleData.points(seed, 150, 3).map((row, i) => {
644
644
  const k = Math.max(3, Math.min(135, (+row.x - 2) * 1.6 + i % 5 * 3)), noise = (+row.y - +row.x * 0.8 - 10) / 9;
645
645
  const q = Math.max(60, Math.min(100 * k, 2200 * (140 - k) / (140 - 22)) * (1 + noise * 0.07));
646
646
  return { station: `Detector ${i % 3 + 1}`, density: +k.toFixed(1), flow: Math.round(q), speed: +(q / k).toFixed(1) };
@@ -758,7 +758,7 @@ var TYPES = [
758
758
  ["Widebody", 135, 254, 53, 109, 900, 0.53, 19]
759
759
  ];
760
760
  function sample3(seed) {
761
- const values = _chunkUMEKIIHJcjs.SampleData.categories(seed, 3, 1).map((row) => 1 + (+row.value - 60) / 600);
761
+ const values = _chunkLNWTC72Ycjs.SampleData.categories(seed, 3, 1).map((row) => 1 + (+row.value - 60) / 600);
762
762
  return TYPES.map(([aircraft, oew, mtow, payload, fuel, cruiseSpeed, tsfc, liftToDrag], i) => {
763
763
  const k = values[i];
764
764
  return { aircraft, oew: +(oew * k).toFixed(1), mtow: +(mtow * k).toFixed(1), maxPayload: +(payload * k).toFixed(1), maxFuel: +(fuel * k).toFixed(1), cruiseSpeed, tsfc, liftToDrag };
@@ -999,7 +999,7 @@ var TIMES = [[1e-6, "3.6 ms"], [1e-4, "0.36 s"], [0.01, "36 s"], [1, "1 h"], [10
999
999
  var SIGMA = 2;
1000
1000
  var fraction = (v) => v - Math.floor(v);
1001
1001
  function sample4(seed) {
1002
- return _chunkUMEKIIHJcjs.SampleData.points(seed, 72, 6).map((row, i) => {
1002
+ return _chunkLNWTC72Ycjs.SampleData.points(seed, 72, 6).map((row, i) => {
1003
1003
  const [technology, energy, power] = RANGES[i % RANGES.length];
1004
1004
  const a = fraction(+row.x * 0.1373 + +row.size * 0.31), b = fraction(+row.y * 0.1731 + a * 0.4);
1005
1005
  const lerp = ([lo, hi], t) => lo * (hi / lo) ** t;
@@ -1131,7 +1131,7 @@ var ONE_RADIAN = 180 / Math.PI;
1131
1131
  var IMO = { area30: 0.055, area40: 0.09, area3040: 0.03, gz30: 0.2, peakAngle: 25, gm: 0.15 };
1132
1132
  var SHAPES = [["Departure", 0.8, 72, 0.6], ["Arrival", 0.42, 60, 0.45]];
1133
1133
  function sample5(seed) {
1134
- const scale = _chunkUMEKIIHJcjs.SampleData.categories(seed, 2, 1).map((row) => 1 + (+row.value - 60) / 400);
1134
+ const scale = _chunkLNWTC72Ycjs.SampleData.categories(seed, 2, 1).map((row) => 1 + (+row.value - 60) / 400);
1135
1135
  return SHAPES.flatMap(([condition, gm, vanish, hump], i) => Array.from({ length: 19 }, (_, k) => {
1136
1136
  const heel = k * 5, wave = Math.sin(Math.PI * heel / vanish);
1137
1137
  return { condition, heel, gz: +(gm * scale[i] * vanish * RAD / Math.PI * wave * (1 + hump * Math.max(0, wave))).toFixed(3) };
@@ -1418,7 +1418,7 @@ var GUST_C = 15.24;
1418
1418
  var GUST_D = 7.62;
1419
1419
  var STEPS3 = 48;
1420
1420
  function sample6(seed) {
1421
- return _chunkUMEKIIHJcjs.SampleData.points(seed, 120, 3).map((row, i) => {
1421
+ return _chunkLNWTC72Ycjs.SampleData.points(seed, 120, 3).map((row, i) => {
1422
1422
  const speed = Math.max(50, Math.min(190, 56 + (+row.x - 4) * 1.5)), spread = (+row.y - +row.x * 0.8 - 10) / 9;
1423
1423
  return { speed: +speed.toFixed(1), load: +(1 + spread * 0.75 * (speed / 120) ** 1.3).toFixed(2), flight: `Flight ${i % 3 + 1}` };
1424
1424
  });
@@ -13,7 +13,7 @@ var _chunkXX2YTCORcjs = require('./chunk-XX2YTCOR.cjs');
13
13
  var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
14
14
 
15
15
 
16
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
16
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
17
17
 
18
18
  // src/charts/inferencecharts/InferenceMath.ts
19
19
  var _d3 = require('d3');
@@ -130,7 +130,7 @@ var SITES = ["Ashby", "Brook Lane", "Calder", "Dunmore", "Eastfield", "Fernhill"
130
130
  var InferenceSamples = class {
131
131
  /** `{ count, observed }`: clinic visits per member in a year, overdispersed so a Poisson fit visibly fails. */
132
132
  static counts(seed, members = 320) {
133
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
133
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
134
134
  const tally = /* @__PURE__ */ new Map();
135
135
  for (let i = 0; i < members; i++) {
136
136
  const rate = 2.1 * Math.exp(0.75 * n() - 0.28);
@@ -148,7 +148,7 @@ var InferenceSamples = class {
148
148
  }
149
149
  /** `{ curve, x, value }`: hourly electricity load for a set of days, with one day far too high and one peaking early. */
150
150
  static curves(seed, days = 34) {
151
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
151
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
152
152
  return Array.from({ length: days }, (_, d) => {
153
153
  const level = 52 + n() * 5, swing = 17 + n() * 2.5, drift = n() * 0.5;
154
154
  const surge = d === 6 ? 1.7 : 1, shift = d === 19 ? -6.5 : n() * 0.5;
@@ -162,7 +162,7 @@ var InferenceSamples = class {
162
162
  }
163
163
  /** `{ stratum, treatment, outcome, count }`: recovery by treatment arm at six made-up sites. */
164
164
  static strata(seed) {
165
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
165
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
166
166
  return SITES.flatMap((stratum, s) => {
167
167
  const base = 0.32 + u() * 0.2, lift = 0.04 + u() * 0.3 - (s === 3 ? 0.2 : 0);
168
168
  return [["Treated", base + lift], ["Control", base]].flatMap(([treatment, rate]) => {
@@ -173,7 +173,7 @@ var InferenceSamples = class {
173
173
  }
174
174
  /** `{ segment, tenure, support, status, count }`: subscription accounts by three predictors and whether they renewed. */
175
175
  static renewals(seed) {
176
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
176
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
177
177
  const segments = [["Consumer", 520, 0.28], ["Business", 300, 0.17]];
178
178
  const tenures = [["Under 1 yr", 0.42, 0.1], ["1 to 3 yrs", 0.36, 0], ["Over 3 yrs", 0.22, -0.08]];
179
179
  const supports = [["Self-serve", 0.62, 0.05], ["Assisted", 0.38, -0.06]];
@@ -184,7 +184,7 @@ var InferenceSamples = class {
184
184
  }
185
185
  /** `{ plan, region, seats, rating, renewed }`: one row per account, mixing categories with two small numeric scales. */
186
186
  static accounts(seed, count = 260) {
187
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
187
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
188
188
  const pick = (items, weights) => {
189
189
  let draw = u() * weights.reduce((a, b) => a + b, 0);
190
190
  return _nullishCoalesce(items[Math.max(0, weights.findIndex((weight) => (draw -= weight) < 0))], () => ( items[items.length - 1]));
@@ -200,7 +200,7 @@ var InferenceSamples = class {
200
200
  }
201
201
  /** `{ unit, events, volume }`: readmissions out of discharges for made-up hospital units, a few of them truly different. */
202
202
  static units(seed, count = 42) {
203
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
203
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
204
204
  return Array.from({ length: count }, (_, i) => {
205
205
  const volume = Math.round(Math.exp(5.6 + n() * 0.9)) + 25;
206
206
  const rate = 0.085 * Math.exp(n() * 0.24) + (i === 7 ? 0.05 : i === 21 ? -0.04 : i === 30 ? 0.035 : 0);
@@ -211,17 +211,17 @@ var InferenceSamples = class {
211
211
  }
212
212
  /** `{ value }`: right-skewed claim amounts, close to lognormal. */
213
213
  static skewed(seed, count = 180) {
214
- const { n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
214
+ const { n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
215
215
  return Array.from({ length: count }, () => ({ value: +Math.exp(5.4 + 0.42 * n()).toFixed(1) }));
216
216
  }
217
217
  /** `{ value }`: breaking strengths of test coupons in MPa, drawn from a Weibull law. */
218
218
  static strengths(seed, count = 40) {
219
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
219
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
220
220
  return Array.from({ length: count }, () => ({ value: +(310 * (-Math.log(1 - u() * 0.999)) ** (1 / 3.4)).toFixed(1) }));
221
221
  }
222
222
  /** `{ x, value }`: a response that grows multiplicatively with `x`, so its log is close to linear. */
223
223
  static response(seed, count = 70) {
224
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
224
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
225
225
  return Array.from({ length: count }, () => {
226
226
  const x = +(1 + u() * 9).toFixed(2);
227
227
  return { x, value: +Math.exp(1.1 + 0.19 * x + 0.34 * n()).toFixed(2) };
@@ -646,7 +646,7 @@ var EstimationPlot = (_class4 = class _EstimationPlot extends _chunkEEF5WRRZcjs.
646
646
  shape: "table" /* Table */,
647
647
  description: "Shows raw data for two or more groups with the effect size against a control, its bootstrap distribution and its 95% interval.",
648
648
  tags: ["gardner-altman", "cumming", "effect size", "bootstrap", "confidence interval", "estimation statistics"],
649
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.distribution(seed, 28, 3),
649
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.distribution(seed, 28, 3),
650
650
  variants: {
651
651
  layout: Object.values(EstimationLayout),
652
652
  effect: Object.values(EstimationEffect),
@@ -1484,7 +1484,7 @@ var PiratePlot = (_class9 = class _PiratePlot extends _chunkXX2YTCORcjs.Cartesia
1484
1484
  shape: "table" /* Table */,
1485
1485
  description: "Shows each group as jittered raw points, a density bean, a bar at the mean or median and a band for its uncertainty.",
1486
1486
  tags: ["raw data", "bean", "inference band", "group comparison", "confidence interval", "rdi plot"],
1487
- sample: (seed) => _chunkUMEKIIHJcjs.SampleData.distribution(seed, 36, 4),
1487
+ sample: (seed) => _chunkLNWTC72Ycjs.SampleData.distribution(seed, 36, 4),
1488
1488
  variants: {
1489
1489
  center: Object.values(PirateCenter),
1490
1490
  inference: Object.values(PirateInference),
@@ -13,7 +13,7 @@ var _chunkEEF5WRRZcjs = require('./chunk-EEF5WRRZ.cjs');
13
13
  var _chunkPY4R3IFFcjs = require('./chunk-PY4R3IFF.cjs');
14
14
 
15
15
 
16
- var _chunkUMEKIIHJcjs = require('./chunk-UMEKIIHJ.cjs');
16
+ var _chunkLNWTC72Ycjs = require('./chunk-LNWTC72Y.cjs');
17
17
 
18
18
  // src/charts/tracecharts/traceEnums.ts
19
19
  var TraceOrder = /* @__PURE__ */ ((TraceOrder2) => {
@@ -292,7 +292,7 @@ var STACKS = [
292
292
  var TraceSamples = class {
293
293
  /** `{ spanId, parentId, service, operation, start, duration, status }`: one checkout request, plus a consumer that runs after it replied. */
294
294
  static spans(seed) {
295
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed), rows = [];
295
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed), rows = [];
296
296
  const walk = (plan, start, parentId) => {
297
297
  const spanId = `s${(rows.length + 1).toString().padStart(2, "0")}`, row = { spanId, parentId, service: plan.service, operation: plan.operation, start: +start.toFixed(1), duration: 0, status: plan.failed ? "ERROR" : "OK" };
298
298
  rows.push(row);
@@ -310,7 +310,7 @@ var TraceSamples = class {
310
310
  }
311
311
  /** `{ url, type, status, connection, start, blocked, dns, connect, ssl, send, wait, receive, onContentLoad, onLoad }`, in the shape of HAR timings. */
312
312
  static requests(seed) {
313
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed), hosts = /* @__PURE__ */ new Set(), rows = [], ends = [], firstBytes = [];
313
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed), hosts = /* @__PURE__ */ new Set(), rows = [], ends = [], firstBytes = [];
314
314
  PAGE.forEach((item, i) => {
315
315
  const fresh = !hosts.has(item.host);
316
316
  hosts.add(item.host);
@@ -342,7 +342,7 @@ var TraceSamples = class {
342
342
  }
343
343
  /** `{ date, good, total }`: 75 days of hourly events under a low base error rate, with a few incidents. */
344
344
  static sloEvents(seed) {
345
- const { u, n } = _chunkUMEKIIHJcjs.SampleData.rng(seed), hours = 75 * 24, start = Date.UTC(2026, 5, 1);
345
+ const { u, n } = _chunkLNWTC72Ycjs.SampleData.rng(seed), hours = 75 * 24, start = Date.UTC(2026, 5, 1);
346
346
  const incidents = Array.from({ length: 7 }, () => ({ at: Math.floor(u() * hours), length: 1 + Math.floor(u() * 5), rate: 0.012 + u() * u() * 0.05 }));
347
347
  return Array.from({ length: hours }, (_, hour) => {
348
348
  const total = Math.round(5e3 + 2600 * Math.sin(2 * Math.PI * (hour % 24) / 24) + n() * 180);
@@ -353,7 +353,7 @@ var TraceSamples = class {
353
353
  }
354
354
  /** `{ name, start, duration, thread, category }`: a page's main thread, a worker and the compositor. Durations nest, as trace events do. */
355
355
  static calls(seed) {
356
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed), rows = [];
356
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed), rows = [];
357
357
  const frame = (thread, category, names, depth, start, duration) => {
358
358
  rows.push({ name: names[depth], start: +start.toFixed(2), duration: +duration.toFixed(2), thread, category });
359
359
  if (depth + 1 >= names.length || duration < 2) return;
@@ -381,7 +381,7 @@ var TraceSamples = class {
381
381
  }
382
382
  /** `{ test, commit, status }` over 40 commits. A flake that fails gets a retry row on the same commit, and a few tests really break for a stretch. */
383
383
  static testRuns(seed) {
384
- const { u } = _chunkUMEKIIHJcjs.SampleData.rng(seed);
384
+ const { u } = _chunkLNWTC72Ycjs.SampleData.rng(seed);
385
385
  const commits = Array.from({ length: 40 }, () => Array.from({ length: 40 }, () => SHA[Math.floor(u() * SHA.length)]).join(""));
386
386
  return commits.flatMap((commit, c) => TESTS.flatMap(({ test, flake, broken, skip }) => {
387
387
  if (skip && c >= skip[0] && c < skip[1]) return [{ test, commit, status: "skipped" }];