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.
- package/CHANGELOG.md +9 -1
- package/README.md +6 -4
- package/dist/AutoGraph-PDPEAIXL.cjs +145 -0
- package/dist/GraphType.js +19 -0
- package/dist/autograph/chartIndex.js +521 -0
- package/dist/autograph/chartModules.js +2 -1
- package/dist/autograph/index.cjs +98 -93
- package/dist/catalog-DI4XZ46L.cjs +142 -0
- package/dist/catalog.js +2 -1
- package/dist/charts/biologycharts/BiologySamples.js +59 -0
- package/dist/charts/biologycharts/PunnettSquare.js +342 -0
- package/dist/charts/biologycharts/biologyEnums.js +22 -1
- package/dist/charts/biologycharts/index.js +5 -3
- package/dist/charts/doecharts/DoeSamples.js +78 -0
- package/dist/charts/doecharts/SipocDiagram.js +453 -0
- package/dist/charts/doecharts/index.js +4 -2
- package/dist/charts/fieldcharts/SpeciesAccumulationCurve.js +350 -0
- package/dist/charts/fieldcharts/fieldEnums.js +8 -1
- package/dist/charts/fieldcharts/index.js +5 -3
- package/dist/charts/signals/AntennaPatternChart.js +492 -0
- package/dist/charts/signals/SignalSamples.js +17 -0
- package/dist/charts/signals/index.js +5 -3
- package/dist/charts/softwarediagrams/ComponentDiagram.js +504 -0
- package/dist/charts/softwarediagrams/DeploymentDiagram.js +419 -0
- package/dist/charts/softwarediagrams/SoftwareSamples.js +283 -1
- package/dist/charts/softwarediagrams/index.js +7 -3
- package/dist/charts/softwarediagrams/softwareEnums.js +45 -1
- package/dist/charts/sportscharts/PowerDurationCurve.js +301 -0
- package/dist/charts/sportscharts/SportsSamples.js +102 -0
- package/dist/charts/sportscharts/TrainingLoadChart.js +325 -0
- package/dist/charts/sportscharts/index.js +6 -2
- package/dist/charts/strategycharts/BassDiffusionChart.js +362 -0
- package/dist/charts/strategycharts/BassModel.js +96 -0
- package/dist/charts/strategycharts/BurnRunwayChart.js +284 -0
- package/dist/charts/strategycharts/CapTableChart.js +366 -0
- package/dist/charts/strategycharts/KanbanBoard.js +324 -0
- package/dist/charts/strategycharts/OkrTree.js +339 -0
- package/dist/charts/strategycharts/StrategyPane.js +27 -0
- package/dist/charts/strategycharts/StrategySamples.js +251 -0
- package/dist/charts/strategycharts/index.js +15 -3
- package/dist/charts/threefields/BsfcMap3DChart.js +231 -0
- package/dist/charts/threefields/CompressorMap3DChart.js +217 -0
- package/dist/charts/threefields/FieldGrid.js +50 -0
- package/dist/charts/threefields/LossLandscape3DChart.js +201 -0
- package/dist/charts/threefields/MapSheet.js +77 -0
- package/dist/charts/threefields/TerrainRoute3DChart.js +201 -0
- package/dist/charts/threefields/TerrainRouteMath.js +40 -0
- package/dist/charts/threefields/ThreeFieldBase.js +117 -0
- package/dist/charts/threefields/ThreeFieldsSamples.js +80 -0
- package/dist/charts/threefields/WaferMap3DChart.js +218 -0
- package/dist/charts/threefields/index.js +19 -0
- package/dist/charts/threesurfaces/index.js +2 -2
- package/dist/charts/tradingcharts/KeltnerChannelChart.js +171 -0
- package/dist/charts/tradingcharts/TradingMath.js +20 -0
- package/dist/charts/tradingcharts/index.js +4 -2
- package/dist/{chunk-ZL6XDXMK.cjs → chunk-26PSLEP4.cjs} +8 -8
- package/dist/{chunk-W3US6EFP.cjs → chunk-2BO5DZUP.cjs} +12 -12
- package/dist/{chunk-5DP7OUSE.cjs → chunk-2GG5YYSC.cjs} +6 -6
- package/dist/{chunk-7FG4JSVO.cjs → chunk-2GL2VNJU.cjs} +253 -33
- package/dist/{chunk-LCWMRCLF.cjs → chunk-2PYOI7OY.cjs} +21 -21
- package/dist/{chunk-JFWJAEBD.cjs → chunk-3U4MCSKI.cjs} +4 -4
- package/dist/{chunk-CUPLHZRR.cjs → chunk-3ZMM3FSK.cjs} +4 -4
- package/dist/{chunk-L2AV62DP.cjs → chunk-4767WQJ7.cjs} +6 -6
- package/dist/{chunk-DA2EYIIP.cjs → chunk-4E7FSSBF.cjs} +1210 -168
- package/dist/{chunk-VS5LQEZB.cjs → chunk-526STI2S.cjs} +5 -5
- package/dist/{chunk-RXIMEK6C.cjs → chunk-55767YPI.cjs} +20 -20
- package/dist/{chunk-JXLSKIUV.cjs → chunk-5FBQOMMT.cjs} +26 -26
- package/dist/{chunk-27PZV5BR.cjs → chunk-5N4Z7MTS.cjs} +4 -4
- package/dist/{chunk-KEWCUIQA.cjs → chunk-5WEV6YWA.cjs} +22 -22
- package/dist/chunk-5XOVVC5X.cjs +3281 -0
- package/dist/{chunk-HK5J7Q2W.cjs → chunk-6HLXVWXU.cjs} +9 -9
- package/dist/{chunk-7JG47RW4.cjs → chunk-6LQT4WJ5.cjs} +25 -25
- package/dist/{chunk-OCVTI6X4.cjs → chunk-6YTWOUFD.cjs} +329 -36
- package/dist/{chunk-W7IQCAVN.cjs → chunk-7F6W6HKL.cjs} +11 -11
- package/dist/{chunk-F2DCJXDM.cjs → chunk-7L6KYU5A.cjs} +21 -21
- package/dist/{chunk-GTGR6LPR.cjs → chunk-A4GIN4FE.cjs} +17 -17
- package/dist/{chunk-B2CETSR6.cjs → chunk-A4US7SA7.cjs} +5 -5
- package/dist/{chunk-3DIF2YYW.cjs → chunk-AOXPBLPW.cjs} +10 -10
- package/dist/{chunk-7TTR4UF5.cjs → chunk-ATI45Z4M.cjs} +2 -2
- package/dist/{chunk-5BFCIX2V.cjs → chunk-CPPMO4IQ.cjs} +434 -148
- package/dist/{chunk-AYZZQ6AC.cjs → chunk-CZ5KGF6Q.cjs} +9 -9
- package/dist/{chunk-7THJ3ZBK.cjs → chunk-D4I35MCE.cjs} +2 -2
- package/dist/{chunk-MCPPFRLN.cjs → chunk-DCGAAN3Z.cjs} +2 -2
- package/dist/{chunk-VABL6CVX.cjs → chunk-DEY36N37.cjs} +21 -21
- package/dist/{chunk-RNCKGJCC.cjs → chunk-DXHXD3DK.cjs} +3 -3
- package/dist/{chunk-A56ZGMVZ.cjs → chunk-E7B45DBZ.cjs} +11 -11
- package/dist/{chunk-DOR6L4MT.cjs → chunk-EJC6EAC5.cjs} +18 -18
- package/dist/{chunk-UPGNM7MA.cjs → chunk-EULJOOMA.cjs} +11 -11
- package/dist/{chunk-G4AZL4GO.cjs → chunk-EYM6LEIF.cjs} +474 -70
- package/dist/{chunk-NJ4X6XGV.cjs → chunk-EZTYX2GH.cjs} +5 -5
- package/dist/chunk-FDD4UP73.cjs +521 -0
- package/dist/{chunk-WJ3VH2Q4.cjs → chunk-GEAIGM3J.cjs} +110 -615
- package/dist/{chunk-P3SBHF43.cjs → chunk-GRUYVXTS.cjs} +2 -2
- package/dist/{chunk-NX4Z5LMS.cjs → chunk-H3SZXND5.cjs} +5 -5
- package/dist/{chunk-EE4S4TOE.cjs → chunk-HS45TOFJ.cjs} +21 -21
- package/dist/chunk-INGOG6OV.cjs +899 -0
- package/dist/{chunk-UDKA6DGT.cjs → chunk-J3CDXZHF.cjs} +4 -4
- package/dist/{chunk-YO6G7TKI.cjs → chunk-JAU5ADEU.cjs} +11 -11
- package/dist/{chunk-22LBK4GA.cjs → chunk-JQEBSHX3.cjs} +4 -4
- package/dist/{chunk-RXX3U7VQ.cjs → chunk-KLXGLMFU.cjs} +10 -10
- package/dist/chunk-KVOX36J3.cjs +327 -0
- package/dist/chunk-L6BGNHFL.cjs +139 -0
- package/dist/{chunk-GMER35L3.cjs → chunk-L7TB7PU5.cjs} +20 -20
- package/dist/{chunk-AFXYNBL2.cjs → chunk-LBTRYEM2.cjs} +4 -4
- package/dist/{chunk-WYYCKIOD.cjs → chunk-LLULNJSP.cjs} +11 -11
- package/dist/{chunk-J27XOSLP.cjs → chunk-LSO46AFV.cjs} +8 -8
- package/dist/{chunk-5XJO45ES.cjs → chunk-LZ2KJ7ZX.cjs} +11 -11
- package/dist/chunk-M4IQ5LIZ.cjs +422 -0
- package/dist/{chunk-Y2KIUKJF.cjs → chunk-MPDHDKYZ.cjs} +11 -11
- package/dist/{chunk-4EMPKRZU.cjs → chunk-MRQ42ZJE.cjs} +3 -3
- package/dist/{chunk-EU5D2MF4.cjs → chunk-MYV4KZWP.cjs} +9 -9
- package/dist/{chunk-XD7KN4UN.cjs → chunk-MZXVLC24.cjs} +6 -6
- package/dist/{chunk-PPSONARU.cjs → chunk-NLBVDFIR.cjs} +41 -2
- package/dist/{chunk-L3PEGMGM.cjs → chunk-NY3TBZY4.cjs} +33 -33
- package/dist/{chunk-6YNYXXB6.cjs → chunk-OGVVSFAR.cjs} +3 -3
- package/dist/{chunk-MLV7QLB6.cjs → chunk-OMTQIQMN.cjs} +6 -6
- package/dist/{chunk-BEEOSNK7.cjs → chunk-PEJJ6TXJ.cjs} +15 -144
- package/dist/{chunk-SOKOWUF5.cjs → chunk-PPGWHIU7.cjs} +2 -2
- package/dist/{chunk-IELWOM2J.cjs → chunk-PPO6SDAN.cjs} +6 -6
- package/dist/{chunk-6JTZZCSL.cjs → chunk-PUMKX5F2.cjs} +3 -3
- package/dist/{chunk-RFOXFY2U.cjs → chunk-PXBYWCNB.cjs} +190 -799
- package/dist/{chunk-3BYXOISI.cjs → chunk-Q3HB3IX6.cjs} +4 -4
- package/dist/{chunk-RXCOVONX.cjs → chunk-RBMUOIXE.cjs} +289 -34
- package/dist/{chunk-MSBNHCSE.cjs → chunk-RJHGCUUD.cjs} +6 -6
- package/dist/{chunk-I6VG7F6Z.cjs → chunk-RSONDMYW.cjs} +708 -141
- package/dist/{chunk-GZDNPHMT.cjs → chunk-SHMPFCUE.cjs} +19 -19
- package/dist/{chunk-ZIBVCOW6.cjs → chunk-SN4FCXFC.cjs} +19 -19
- package/dist/{chunk-7KM52NMN.cjs → chunk-SN5T7WYO.cjs} +2 -2
- package/dist/{chunk-7MSZR65Z.cjs → chunk-SQJZGVDR.cjs} +7 -7
- package/dist/chunk-SYABFMD7.cjs +633 -0
- package/dist/{chunk-2RRFEYFH.cjs → chunk-TICB3MAC.cjs} +16 -16
- package/dist/{chunk-AOOKHUV5.cjs → chunk-U7Z7XYR2.cjs} +5 -5
- package/dist/{chunk-JEWQAXVG.cjs → chunk-UA2THQFV.cjs} +6 -6
- package/dist/{chunk-LHZPAHU3.cjs → chunk-VIK4L2YF.cjs} +112 -521
- package/dist/{chunk-4YWMAQ4J.cjs → chunk-VM2Y6BDY.cjs} +4 -4
- package/dist/{chunk-IRRKE2ZE.cjs → chunk-VMS3KWYI.cjs} +21 -21
- package/dist/{chunk-4SLARW6F.cjs → chunk-VU5NUD46.cjs} +17 -17
- package/dist/{chunk-XHY6TVYG.cjs → chunk-VV5CVOF7.cjs} +13 -13
- package/dist/{chunk-CCIBPGPZ.cjs → chunk-VYSAWPSS.cjs} +57 -57
- package/dist/{chunk-TTNEMQ2A.cjs → chunk-W7YRWEWQ.cjs} +22 -22
- package/dist/{chunk-C7MUOGEW.cjs → chunk-X7R5SY62.cjs} +6 -6
- package/dist/{chunk-ILR5KBMB.cjs → chunk-XOK3KTSS.cjs} +6 -6
- package/dist/{chunk-2CZM2I3T.cjs → chunk-XUIX45VU.cjs} +19 -19
- package/dist/{chunk-TGRMPS3A.cjs → chunk-XWH46PVJ.cjs} +165 -43
- package/dist/{chunk-WQYXXECR.cjs → chunk-Y5XVMK3K.cjs} +6 -6
- package/dist/{chunk-AK4TX2WG.cjs → chunk-YCNKEDTG.cjs} +13 -13
- package/dist/{chunk-PJJB24DU.cjs → chunk-YEF7SE3X.cjs} +20 -20
- package/dist/{chunk-RVLV4XW6.cjs → chunk-YMTVPMU3.cjs} +22 -22
- package/dist/data/index.cjs +2 -2
- package/dist/entries/autograph-lazy.cjs +2 -2
- package/dist/entries/charts/acoustictransport.cjs +3 -3
- package/dist/entries/charts/analysischarts.cjs +3 -3
- package/dist/entries/charts/astrocharts.cjs +3 -3
- package/dist/entries/charts/bars.cjs +3 -3
- package/dist/entries/charts/bayesiancharts.cjs +3 -3
- package/dist/entries/charts/biocharts.cjs +3 -3
- package/dist/entries/charts/biologycharts.cjs +11 -3
- package/dist/entries/charts/biologycharts.d.ts +1 -1
- package/dist/entries/charts/biologycharts.js +3 -2
- package/dist/entries/charts/business.cjs +3 -3
- package/dist/entries/charts/carecharts.cjs +3 -3
- package/dist/entries/charts/chemistrycharts.cjs +3 -3
- package/dist/entries/charts/civicscharts.cjs +3 -3
- package/dist/entries/charts/clinicalcharts.cjs +3 -3
- package/dist/entries/charts/comparison.cjs +3 -3
- package/dist/entries/charts/demography.cjs +3 -3
- package/dist/entries/charts/density.cjs +3 -3
- package/dist/entries/charts/diagrams.cjs +3 -3
- package/dist/entries/charts/distribution.cjs +3 -3
- package/dist/entries/charts/doecharts.cjs +13 -3
- package/dist/entries/charts/doecharts.d.ts +1 -1
- package/dist/entries/charts/doecharts.js +2 -1
- package/dist/entries/charts/earthscience.cjs +3 -3
- package/dist/entries/charts/economicscharts.cjs +3 -3
- package/dist/entries/charts/energycharts.cjs +3 -3
- package/dist/entries/charts/engineering.cjs +3 -3
- package/dist/entries/charts/fieldcharts.cjs +7 -3
- package/dist/entries/charts/fieldcharts.d.ts +1 -1
- package/dist/entries/charts/fieldcharts.js +3 -2
- package/dist/entries/charts/financial.cjs +3 -3
- package/dist/entries/charts/flow.cjs +3 -3
- package/dist/entries/charts/frameworks.cjs +3 -3
- package/dist/entries/charts/genomics.cjs +3 -3
- package/dist/entries/charts/geoflows.cjs +3 -3
- package/dist/entries/charts/geomaps.cjs +3 -3
- package/dist/entries/charts/geosciencecharts.cjs +3 -3
- package/dist/entries/charts/hierarchy.cjs +3 -3
- package/dist/entries/charts/indicators.cjs +3 -3
- package/dist/entries/charts/inferencecharts.cjs +3 -3
- package/dist/entries/charts/layoutcharts.cjs +3 -3
- package/dist/entries/charts/lifescience.cjs +4 -4
- package/dist/entries/charts/linesareas.cjs +3 -3
- package/dist/entries/charts/logisticscharts.cjs +3 -3
- package/dist/entries/charts/machinecharts.cjs +7 -3
- package/dist/entries/charts/machinecharts.d.ts +1 -1
- package/dist/entries/charts/machinecharts.js +2 -1
- package/dist/entries/charts/massive.cjs +3 -3
- package/dist/entries/charts/mathematical.cjs +3 -3
- package/dist/entries/charts/matrix.cjs +3 -3
- package/dist/entries/charts/medicalcharts.cjs +4 -4
- package/dist/entries/charts/mlcharts.cjs +4 -4
- package/dist/entries/charts/modelcharts.cjs +6 -5
- package/dist/entries/charts/multivariate.cjs +3 -3
- package/dist/entries/charts/musiccharts.cjs +3 -3
- package/dist/entries/charts/network.cjs +3 -3
- package/dist/entries/charts/physicscharts.cjs +3 -3
- package/dist/entries/charts/pictorial.cjs +4 -4
- package/dist/entries/charts/portfoliocharts.cjs +3 -3
- package/dist/entries/charts/productcharts.cjs +3 -3
- package/dist/entries/charts/proportion.cjs +3 -3
- package/dist/entries/charts/qualitycharts.cjs +3 -3
- package/dist/entries/charts/radial.cjs +3 -3
- package/dist/entries/charts/reliabilitycharts.cjs +5 -3
- package/dist/entries/charts/scatter.cjs +3 -3
- package/dist/entries/charts/scientific.cjs +3 -3
- package/dist/entries/charts/seriescharts.cjs +3 -3
- package/dist/entries/charts/signals.cjs +7 -3
- package/dist/entries/charts/signals.d.ts +1 -1
- package/dist/entries/charts/signals.js +2 -1
- package/dist/entries/charts/softwarediagrams.cjs +21 -3
- package/dist/entries/charts/softwarediagrams.d.ts +1 -1
- package/dist/entries/charts/softwarediagrams.js +4 -2
- package/dist/entries/charts/sportscharts.cjs +13 -3
- package/dist/entries/charts/sportscharts.d.ts +1 -1
- package/dist/entries/charts/sportscharts.js +3 -1
- package/dist/entries/charts/statistics.cjs +6 -6
- package/dist/entries/charts/strategycharts.cjs +30 -3
- package/dist/entries/charts/strategycharts.d.ts +1 -1
- package/dist/entries/charts/strategycharts.js +6 -1
- package/dist/entries/charts/structure.cjs +3 -3
- package/dist/entries/charts/surveycharts.cjs +3 -3
- package/dist/entries/charts/systemscharts.cjs +3 -3
- package/dist/entries/charts/textcharts.cjs +5 -5
- package/dist/entries/charts/thematicmaps.cjs +4 -4
- package/dist/entries/charts/threebars.cjs +3 -3
- package/dist/entries/charts/threefields.cjs +53 -0
- package/dist/entries/charts/threefields.d.ts +1 -0
- package/dist/entries/charts/threefields.js +6 -0
- package/dist/entries/charts/threeglobe.cjs +3 -3
- package/dist/entries/charts/threenetwork.cjs +3 -3
- package/dist/entries/charts/threestrata.cjs +3 -3
- package/dist/entries/charts/threesurfaces.cjs +7 -3
- package/dist/entries/charts/threesurfaces.d.ts +1 -1
- package/dist/entries/charts/threesurfaces.js +2 -1
- package/dist/entries/charts/threevolume.cjs +4 -4
- package/dist/entries/charts/timeline.cjs +3 -3
- package/dist/entries/charts/tracecharts.cjs +3 -3
- package/dist/entries/charts/trackscharts.cjs +3 -3
- package/dist/entries/charts/tradingcharts.cjs +6 -4
- package/dist/entries/charts/tradingcharts.d.ts +1 -1
- package/dist/entries/charts/tradingcharts.js +2 -1
- package/dist/entries/three.cjs +60 -20
- package/dist/entries/three.d.ts +1 -1
- package/dist/entries/three.js +7 -1
- package/dist/index.cjs +258 -97
- package/dist/index.d.cts +1953 -10
- package/dist/index.d.ts +1953 -10
- package/dist/index.js +26 -5
- package/dist/page/index.cjs +2 -2
- package/dist/react/components.js +58 -1
- package/dist/react/index.cjs +135 -92
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.js +2 -2
- package/package.json +1 -1
- package/dist/AutoGraph-XLBJQDRB.cjs +0 -140
- package/dist/catalog-O7XGDD2H.cjs +0 -137
- package/dist/chunk-77K2HTRC.cjs +0 -3220
- package/dist/chunk-XEK47TVD.cjs +0 -323
- /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
|
|
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 } =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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) =>
|
|
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) =>
|
|
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
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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 } =
|
|
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" }];
|