@tennisvisuals/scoring-visualizations 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/__tests__/LiveEngine.test.d.ts +2 -0
  2. package/dist/__tests__/LiveEngine.test.d.ts.map +1 -0
  3. package/dist/__tests__/LiveEngine.test.js +142 -0
  4. package/dist/__tests__/LiveEngine.test.js.map +1 -0
  5. package/dist/__tests__/buildEpisodes.test.d.ts +2 -0
  6. package/dist/__tests__/buildEpisodes.test.d.ts.map +1 -0
  7. package/dist/__tests__/buildEpisodes.test.js +150 -0
  8. package/dist/__tests__/buildEpisodes.test.js.map +1 -0
  9. package/dist/__tests__/extractors.test.d.ts +2 -0
  10. package/dist/__tests__/extractors.test.d.ts.map +1 -0
  11. package/dist/__tests__/extractors.test.js +50 -0
  12. package/dist/__tests__/extractors.test.js.map +1 -0
  13. package/dist/__tests__/feedMatchUp.test.d.ts +2 -0
  14. package/dist/__tests__/feedMatchUp.test.d.ts.map +1 -0
  15. package/dist/__tests__/feedMatchUp.test.js +96 -0
  16. package/dist/__tests__/feedMatchUp.test.js.map +1 -0
  17. package/dist/engine/LiveEngine.d.ts +42 -0
  18. package/dist/engine/LiveEngine.d.ts.map +1 -0
  19. package/dist/engine/LiveEngine.js +82 -0
  20. package/dist/engine/LiveEngine.js.map +1 -0
  21. package/dist/engine/buildSetMap.d.ts +14 -0
  22. package/dist/engine/buildSetMap.d.ts.map +1 -0
  23. package/dist/engine/buildSetMap.js +42 -0
  24. package/dist/engine/buildSetMap.js.map +1 -0
  25. package/dist/engine/createPlaybackEngine.d.ts +34 -0
  26. package/dist/engine/createPlaybackEngine.d.ts.map +1 -0
  27. package/dist/engine/createPlaybackEngine.js +90 -0
  28. package/dist/engine/createPlaybackEngine.js.map +1 -0
  29. package/dist/engine/feedMatchUp.d.ts +82 -0
  30. package/dist/engine/feedMatchUp.d.ts.map +1 -0
  31. package/dist/engine/feedMatchUp.js +116 -0
  32. package/dist/engine/feedMatchUp.js.map +1 -0
  33. package/dist/episodes/buildEpisodes.d.ts +10 -0
  34. package/dist/episodes/buildEpisodes.d.ts.map +1 -0
  35. package/dist/episodes/buildEpisodes.js +166 -0
  36. package/dist/episodes/buildEpisodes.js.map +1 -0
  37. package/dist/episodes/types.d.ts +45 -0
  38. package/dist/episodes/types.d.ts.map +1 -0
  39. package/dist/episodes/types.js +2 -0
  40. package/dist/episodes/types.js.map +1 -0
  41. package/dist/index.d.ts +23 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +24 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/statistics/index.d.ts +3 -0
  46. package/dist/statistics/index.d.ts.map +1 -0
  47. package/dist/statistics/index.js +2 -0
  48. package/dist/statistics/index.js.map +1 -0
  49. package/dist/statistics/matchStatistics.d.ts +22 -0
  50. package/dist/statistics/matchStatistics.d.ts.map +1 -0
  51. package/dist/statistics/matchStatistics.js +59 -0
  52. package/dist/statistics/matchStatistics.js.map +1 -0
  53. package/dist/visualizations/coronaChart.d.ts +54 -0
  54. package/dist/visualizations/coronaChart.d.ts.map +1 -0
  55. package/dist/visualizations/coronaChart.js +254 -0
  56. package/dist/visualizations/coronaChart.js.map +1 -0
  57. package/dist/visualizations/data/mcpFixtures.json +13166 -0
  58. package/dist/visualizations/data/sampleGame.d.ts +37 -0
  59. package/dist/visualizations/data/sampleGame.d.ts.map +1 -0
  60. package/dist/visualizations/data/sampleGame.js +521 -0
  61. package/dist/visualizations/data/sampleGame.js.map +1 -0
  62. package/dist/visualizations/gameFish.d.ts +16 -0
  63. package/dist/visualizations/gameFish.d.ts.map +1 -0
  64. package/dist/visualizations/gameFish.js +692 -0
  65. package/dist/visualizations/gameFish.js.map +1 -0
  66. package/dist/visualizations/gameTree.d.ts +17 -0
  67. package/dist/visualizations/gameTree.d.ts.map +1 -0
  68. package/dist/visualizations/gameTree.js +837 -0
  69. package/dist/visualizations/gameTree.js.map +1 -0
  70. package/dist/visualizations/groupGames.d.ts +6 -0
  71. package/dist/visualizations/groupGames.d.ts.map +1 -0
  72. package/dist/visualizations/groupGames.js +35 -0
  73. package/dist/visualizations/groupGames.js.map +1 -0
  74. package/dist/visualizations/helpers/JsonViewer.d.ts +27 -0
  75. package/dist/visualizations/helpers/JsonViewer.d.ts.map +1 -0
  76. package/dist/visualizations/helpers/JsonViewer.js +276 -0
  77. package/dist/visualizations/helpers/JsonViewer.js.map +1 -0
  78. package/dist/visualizations/helpers/PlaybackControls.d.ts +12 -0
  79. package/dist/visualizations/helpers/PlaybackControls.d.ts.map +1 -0
  80. package/dist/visualizations/helpers/PlaybackControls.js +98 -0
  81. package/dist/visualizations/helpers/PlaybackControls.js.map +1 -0
  82. package/dist/visualizations/horizonChart.d.ts +59 -0
  83. package/dist/visualizations/horizonChart.d.ts.map +1 -0
  84. package/dist/visualizations/horizonChart.js +215 -0
  85. package/dist/visualizations/horizonChart.js.map +1 -0
  86. package/dist/visualizations/index.d.ts +21 -0
  87. package/dist/visualizations/index.d.ts.map +1 -0
  88. package/dist/visualizations/index.js +23 -0
  89. package/dist/visualizations/index.js.map +1 -0
  90. package/dist/visualizations/legacyRally.d.ts +3 -0
  91. package/dist/visualizations/legacyRally.d.ts.map +1 -0
  92. package/dist/visualizations/legacyRally.js +26 -0
  93. package/dist/visualizations/legacyRally.js.map +1 -0
  94. package/dist/visualizations/matchDashboard.d.ts +39 -0
  95. package/dist/visualizations/matchDashboard.d.ts.map +1 -0
  96. package/dist/visualizations/matchDashboard.js +235 -0
  97. package/dist/visualizations/matchDashboard.js.map +1 -0
  98. package/dist/visualizations/momentumChart.d.ts +12 -0
  99. package/dist/visualizations/momentumChart.d.ts.map +1 -0
  100. package/dist/visualizations/momentumChart.js +454 -0
  101. package/dist/visualizations/momentumChart.js.map +1 -0
  102. package/dist/visualizations/ptsChart.d.ts +14 -0
  103. package/dist/visualizations/ptsChart.d.ts.map +1 -0
  104. package/dist/visualizations/ptsChart.js +925 -0
  105. package/dist/visualizations/ptsChart.js.map +1 -0
  106. package/dist/visualizations/ptsHorizon.d.ts +83 -0
  107. package/dist/visualizations/ptsHorizon.d.ts.map +1 -0
  108. package/dist/visualizations/ptsHorizon.js +290 -0
  109. package/dist/visualizations/ptsHorizon.js.map +1 -0
  110. package/dist/visualizations/rallyTree.d.ts +78 -0
  111. package/dist/visualizations/rallyTree.d.ts.map +1 -0
  112. package/dist/visualizations/rallyTree.js +410 -0
  113. package/dist/visualizations/rallyTree.js.map +1 -0
  114. package/dist/visualizations/simpleChart.d.ts +6 -0
  115. package/dist/visualizations/simpleChart.d.ts.map +1 -0
  116. package/dist/visualizations/simpleChart.js +126 -0
  117. package/dist/visualizations/simpleChart.js.map +1 -0
  118. package/dist/visualizations/statView.d.ts +52 -0
  119. package/dist/visualizations/statView.d.ts.map +1 -0
  120. package/dist/visualizations/statView.js +200 -0
  121. package/dist/visualizations/statView.js.map +1 -0
  122. package/dist/visualizations/typeOf.d.ts +6 -0
  123. package/dist/visualizations/typeOf.d.ts.map +1 -0
  124. package/dist/visualizations/typeOf.js +18 -0
  125. package/dist/visualizations/typeOf.js.map +1 -0
  126. package/dist/visualizations/types/events.d.ts +92 -0
  127. package/dist/visualizations/types/events.d.ts.map +1 -0
  128. package/dist/visualizations/types/events.js +2 -0
  129. package/dist/visualizations/types/events.js.map +1 -0
  130. package/dist/visualizations/types/index.d.ts +79 -0
  131. package/dist/visualizations/types/index.d.ts.map +1 -0
  132. package/dist/visualizations/types/index.js +8 -0
  133. package/dist/visualizations/types/index.js.map +1 -0
  134. package/dist/visualizations/utils/arrays.d.ts +18 -0
  135. package/dist/visualizations/utils/arrays.d.ts.map +1 -0
  136. package/dist/visualizations/utils/arrays.js +46 -0
  137. package/dist/visualizations/utils/arrays.js.map +1 -0
  138. package/dist/visualizations/utils/colorUtils.d.ts +36 -0
  139. package/dist/visualizations/utils/colorUtils.d.ts.map +1 -0
  140. package/dist/visualizations/utils/colorUtils.js +112 -0
  141. package/dist/visualizations/utils/colorUtils.js.map +1 -0
  142. package/dist/visualizations/utils/generateId.d.ts +2 -0
  143. package/dist/visualizations/utils/generateId.d.ts.map +1 -0
  144. package/dist/visualizations/utils/generateId.js +3 -0
  145. package/dist/visualizations/utils/generateId.js.map +1 -0
  146. package/dist/visualizations/utils/keyWalk.d.ts +2 -0
  147. package/dist/visualizations/utils/keyWalk.d.ts.map +1 -0
  148. package/dist/visualizations/utils/keyWalk.js +19 -0
  149. package/dist/visualizations/utils/keyWalk.js.map +1 -0
  150. package/dist/visualizations/utils/math.d.ts +10 -0
  151. package/dist/visualizations/utils/math.d.ts.map +1 -0
  152. package/dist/visualizations/utils/math.js +14 -0
  153. package/dist/visualizations/utils/math.js.map +1 -0
  154. package/dist/visualizations/utils/setDev.d.ts +29 -0
  155. package/dist/visualizations/utils/setDev.d.ts.map +1 -0
  156. package/dist/visualizations/utils/setDev.js +35 -0
  157. package/dist/visualizations/utils/setDev.js.map +1 -0
  158. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizonChart.d.ts","sourceRoot":"","sources":["../../src/visualizations/horizonChart.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAMH,KAAK,kBAAkB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC1B,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,kBAAkB,CAAC;KACjC,CAAC;IACF,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;CAC3C;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IACjE,KAAK,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IAC/C,IAAI,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;CAC5G;AAED,wBAAgB,YAAY;gBA+BA,GAAG;qBA4GM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;uBAMjB,OAAO,CAAC,kBAAkB,CAAC;kBAMhC,MAAM;mBAML,MAAM;kBAMP,GAAG;mBAMF,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;;kBAcnB,MAAM;iBAOP,MAAM;qBAMF,MAAM;wBAMH,MAAM;wBAMN,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;EAQvE"}
@@ -0,0 +1,215 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /**
4
+ * Horizon Chart — Single-set renderer (D3 v7)
5
+ *
6
+ * Renders one horizon chart for a single set's differential data.
7
+ * Takes sdata: [index, diff][] and renders colored area bands —
8
+ * positive values fan out in one color, negative in another,
9
+ * stacked by band count.
10
+ */
11
+ import { select, scaleLinear, area, curveBasis, curveLinear, range as d3Range } from 'd3';
12
+ import { keyWalk } from './utils/keyWalk';
13
+ import { generateId } from './utils/generateId';
14
+ export function horizonChart() {
15
+ let updateFn;
16
+ let data;
17
+ let sdata = [];
18
+ const options = {
19
+ id: generateId(),
20
+ width: 960,
21
+ height: 100,
22
+ position: { x: 0, y: 0 },
23
+ display: {
24
+ ppp: undefined,
25
+ bands: 1,
26
+ mode: 'mirror',
27
+ orientation: 'horizontal',
28
+ transitionTime: 0,
29
+ interpolate: 'basis',
30
+ },
31
+ bounds: { vRangeMax: undefined },
32
+ };
33
+ const colorScale = scaleLinear()
34
+ .domain([-options.display.bands, 0, 0, options.display.bands])
35
+ .range(['#08519c', '#bdd7e7', '#bae4b3', '#006d2c']);
36
+ const events = {
37
+ update: { begin: null, end: null },
38
+ chart: { click: null },
39
+ path: { mouseover: null, mouseout: null },
40
+ };
41
+ function chart(selection) {
42
+ selection.each(function (_, i, n) {
43
+ const root = select(n[i]).append('svg:g').attr('class', 'hcc').append('a');
44
+ updateFn = function () {
45
+ const horizontal = options.display.orientation === 'horizontal';
46
+ const bandRange = horizontal ? options.height : options.width;
47
+ const ppp = options.display.ppp ? options.display.ppp : bandRange / sdata.length;
48
+ const zwidth = horizontal ? ppp * sdata.length : options.width;
49
+ const zheight = horizontal ? options.height : ppp * sdata.length;
50
+ const bands = options.display.bands;
51
+ const curveType = options.display.interpolate === 'linear' ? curveLinear : curveBasis;
52
+ root
53
+ .attr('width', zwidth)
54
+ .attr('height', zheight)
55
+ .attr('transform', `translate(${+options.position.x},${+options.position.y})`)
56
+ .on('click', function () {
57
+ if (events.chart.click)
58
+ events.chart.click(data);
59
+ });
60
+ // Scales
61
+ const xExtent = [
62
+ Math.min(...sdata.map((d) => d[0])),
63
+ Math.max(...sdata.map((d) => d[0])),
64
+ ];
65
+ const x = scaleLinear().domain(xExtent).range([0, ppp * sdata.length]);
66
+ const yMax = options.bounds.vRangeMax ?? Math.max(...sdata.map((d) => Math.abs(d[1])));
67
+ const y = scaleLinear()
68
+ .domain([0, yMax])
69
+ .range([0, bandRange * bands]);
70
+ // Transform function for band positioning
71
+ let transform;
72
+ if (horizontal) {
73
+ transform =
74
+ options.display.mode === 'offset'
75
+ ? (d) => `translate(0,${(d + (d < 0 ? 1 : 0) - bands) * bandRange})`
76
+ : (d) => `${d < 0 ? 'scale(1,-1)' : ''}translate(0,${(d - bands) * bandRange})`;
77
+ }
78
+ else {
79
+ transform =
80
+ options.display.mode === 'offset'
81
+ ? (d) => `translate(${(d + (d < 0 ? 1 : 0) - bands) * bandRange},0)`
82
+ : (d) => `${d < 0 ? 'scale(-1,1)' : ''}translate(${(d - bands) * bandRange},0)`;
83
+ }
84
+ // Clip path
85
+ root.selectAll('defs').data([null]).join((enter) => {
86
+ const d = enter.append('defs');
87
+ d.append('clipPath').attr('id', `horizon_clip${options.id}`).append('rect');
88
+ return d;
89
+ });
90
+ root
91
+ .selectAll('defs')
92
+ .select('clipPath')
93
+ .select('rect')
94
+ .attr('width', zwidth)
95
+ .attr('height', zheight);
96
+ // Clip group
97
+ root.selectAll('g.horizon-clip').data([null]).join((enter) => enter.append('g')
98
+ .attr('class', 'horizon-clip')
99
+ .attr('clip-path', `url(#horizon_clip${options.id})`));
100
+ // Area generator
101
+ const horizonArea = horizontal
102
+ ? area()
103
+ .curve(curveType)
104
+ .x((d) => x(d[0]))
105
+ .y0(bandRange * bands)
106
+ .y1((d) => bandRange * bands - y(d[1]))
107
+ : area()
108
+ .curve(curveType)
109
+ .y((d) => x(d[0]))
110
+ .x0(bandRange * bands)
111
+ .x1((d) => bandRange * bands - y(d[1]));
112
+ const areaPath = horizonArea(sdata) ?? '';
113
+ // Band indices: [-1, -2, ..., -bands, 1, 2, ..., bands]
114
+ const bandIndices = d3Range(-1, -bands - 1, -1).concat(d3Range(1, bands + 1));
115
+ root.select('g.horizon-clip').selectAll('path').data(bandIndices, Number)
116
+ .join('path')
117
+ .on('mouseover', function () {
118
+ if (events.path.mouseover)
119
+ events.path.mouseover(data);
120
+ })
121
+ .on('mouseout', function (_event, d) {
122
+ if (events.path.mouseout)
123
+ events.path.mouseout(d, 0, this);
124
+ })
125
+ .transition()
126
+ .duration(options.display.transitionTime)
127
+ .style('fill', (d) => colorScale(d))
128
+ .attr('transform', (d) => transform(d))
129
+ .attr('d', areaPath);
130
+ };
131
+ });
132
+ }
133
+ // Accessors
134
+ chart.options = function (values) {
135
+ if (!arguments.length)
136
+ return options;
137
+ keyWalk(values, options);
138
+ return chart;
139
+ };
140
+ chart.events = function (functions) {
141
+ if (!arguments.length)
142
+ return events;
143
+ keyWalk(functions, events);
144
+ return chart;
145
+ };
146
+ chart.width = function (value) {
147
+ if (!arguments.length)
148
+ return options.width;
149
+ options.width = value;
150
+ return chart;
151
+ };
152
+ chart.height = function (value) {
153
+ if (!arguments.length)
154
+ return options.height;
155
+ options.height = value;
156
+ return chart;
157
+ };
158
+ chart.data = function (values) {
159
+ if (!arguments.length)
160
+ return data;
161
+ data = values;
162
+ return chart;
163
+ };
164
+ chart.sdata = function (values) {
165
+ if (!arguments.length)
166
+ return sdata;
167
+ if (Array.isArray(values))
168
+ sdata = values;
169
+ return chart;
170
+ };
171
+ chart.update = function () {
172
+ if (events.update.begin)
173
+ events.update.begin();
174
+ if (typeof updateFn === 'function')
175
+ updateFn();
176
+ setTimeout(function () {
177
+ if (events.update.end)
178
+ events.update.end();
179
+ }, options.display.transitionTime);
180
+ };
181
+ chart.bands = function (value) {
182
+ if (!arguments.length)
183
+ return options.display.bands;
184
+ options.display.bands = +value;
185
+ colorScale.domain([-options.display.bands, 0, 0, options.display.bands]);
186
+ return chart;
187
+ };
188
+ chart.mode = function (value) {
189
+ if (!arguments.length)
190
+ return options.display.mode;
191
+ options.display.mode = (value + '');
192
+ return chart;
193
+ };
194
+ chart.duration = function (value) {
195
+ if (!arguments.length)
196
+ return options.display.transitionTime;
197
+ options.display.transitionTime = +value;
198
+ return chart;
199
+ };
200
+ chart.orientation = function (value) {
201
+ if (!arguments.length)
202
+ return options.display.orientation;
203
+ options.display.orientation = (value + '');
204
+ return chart;
205
+ };
206
+ chart.colors = function (colorRange) {
207
+ if (!arguments.length)
208
+ return colorScale.range();
209
+ colorScale.domain([-options.display.bands, 0, 0, options.display.bands]);
210
+ colorScale.range(colorRange);
211
+ return chart;
212
+ };
213
+ return chart;
214
+ }
215
+ //# sourceMappingURL=horizonChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizonChart.js","sourceRoot":"","sources":["../../src/visualizations/horizonChart.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc;AACd;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA0BhD,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAkC,CAAC;IACvC,IAAI,IAAS,CAAC;IACd,IAAI,KAAK,GAAuB,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAwB;QACnC,EAAE,EAAE,UAAU,EAAE;QAChB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACxB,OAAO,EAAE;YACP,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,YAAY;YACzB,cAAc,EAAE,CAAC;YACjB,WAAW,EAAE,OAAO;SACrB;QACD,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;KACjC,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,EAAU;SACrC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC7D,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAuB;QACjC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;QAClC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QACtB,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC1C,CAAC;IAEF,SAAS,KAAK,CAAC,SAAc;QAC3B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAM,EAAE,CAAS,EAAE,CAAM;YAChD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE3E,QAAQ,GAAG;gBACT,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,YAAY,CAAC;gBAChE,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;gBACjF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;gBACjE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;gBAEtF,IAAI;qBACD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;qBACrB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;qBACvB,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;qBAC7E,EAAE,CAAC,OAAO,EAAE;oBACX,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK;wBAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBAEL,SAAS;gBACT,MAAM,OAAO,GAAqB;oBAChC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpC,CAAC;gBAEF,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvF,MAAM,CAAC,GAAG,WAAW,EAAE;qBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;qBACjB,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;gBAEjC,0CAA0C;gBAC1C,IAAI,SAAgC,CAAC;gBACrC,IAAI,UAAU,EAAE,CAAC;oBACf,SAAS;wBACP,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;4BAC/B,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG;4BAC5E,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACN,SAAS;wBACP,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;4BAC/B,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,KAAK;4BAC5E,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC;gBAC9F,CAAC;gBAED,YAAY;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACtC,CAAC,KAAK,EAAE,EAAE;oBACR,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC5E,OAAO,CAAC,CAAC;gBACX,CAAC,CACF,CAAC;gBAEF,IAAI;qBACD,SAAS,CAAC,MAAM,CAAC;qBACjB,MAAM,CAAC,UAAU,CAAC;qBAClB,MAAM,CAAC,MAAM,CAAC;qBACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;qBACrB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAE3B,aAAa;gBACb,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;qBACzB,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;qBAC7B,IAAI,CAAC,WAAW,EAAE,oBAAoB,OAAO,CAAC,EAAE,GAAG,CAAC,CACxD,CAAC;gBAEF,iBAAiB;gBACjB,MAAM,WAAW,GAAG,UAAU;oBAC5B,CAAC,CAAC,IAAI,EAAoB;yBACrB,KAAK,CAAC,SAAS,CAAC;yBAChB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;yBACrB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,CAAC,CAAC,IAAI,EAAoB;yBACrB,KAAK,CAAC,SAAS,CAAC;yBAChB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjB,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;yBACrB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAE1C,wDAAwD;gBACxD,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE9E,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAyB,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;qBAC9F,IAAI,CAAC,MAAM,CAAC;qBACZ,EAAE,CAAC,WAAW,EAAE;oBACf,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACzD,CAAC,CAAC;qBACD,EAAE,CAAC,UAAU,EAAE,UAAU,MAAW,EAAE,CAAS;oBAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ;wBAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC7D,CAAC,CAAC;qBACD,UAAU,EAAE;qBACZ,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;qBACxC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;qBAC3C,IAAI,CAAC,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBAC9C,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IAEZ,KAAK,CAAC,OAAO,GAAG,UAAU,MAA4B;QACpD,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC;QACtC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,GAAG,UAAU,SAAuC;QAC9D,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QACrC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,GAAG,UAAU,KAAc;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC;QAC5C,OAAO,CAAC,KAAK,GAAG,KAAM,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,GAAG,UAAU,KAAc;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC7C,OAAO,CAAC,MAAM,GAAG,KAAM,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,GAAG,UAAU,MAAY;QACjC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,GAAG,MAAM,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,GAAG,UAAU,MAA2B;QACjD,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,KAAK,GAAG,MAAM,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,GAAG;QACb,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/C,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,QAAQ,EAAE,CAAC;QAC/C,UAAU,CAAC;YACT,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG;gBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC7C,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,KAAK,CAAC,KAAK,GAAG,UAAU,KAAc;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QACpD,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,KAAM,CAAC;QAChC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,GAAG,UAAU,KAAc;QACnC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACnD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,CAAwB,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,QAAQ,GAAG,UAAU,KAAc;QACvC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QAC7D,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,KAAM,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,WAAW,GAAG,UAAU,KAAc;QAC1C,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,CAA8B,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,GAAG,UAAU,UAA6C;QACpE,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;QACjD,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,UAAU,CAAC,KAAK,CAAC,UAAW,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Visualizations Index
3
+ *
4
+ * Central export point for all D3 visualizations.
5
+ */
6
+ export { simpleChart } from './simpleChart';
7
+ export { gameFish } from './gameFish';
8
+ export { gameTree } from './gameTree';
9
+ export { momentumChart } from './momentumChart';
10
+ export { ptsMatch } from './ptsChart';
11
+ export { coronaChart, coronaChartFromMatchUp } from './coronaChart';
12
+ export { ptsHorizon, ptsHorizonFromMatchUp } from './ptsHorizon';
13
+ export { horizonChart } from './horizonChart';
14
+ export { rallyTree } from './rallyTree';
15
+ export { statView } from './statView';
16
+ export { matchDashboard } from './matchDashboard';
17
+ export { groupGames } from './groupGames';
18
+ export { rallyCount } from './legacyRally';
19
+ export { sampleGamePoints, deuceGamePoints, tiebreakGamePoints, sampleGameGroup, deuceGameGroup, tiebreakGameGroup, pointsToEpisodes, } from './data/sampleGame';
20
+ export type { Point, Episode, GameGroup, SetData, Player, MatchMetadata, } from './types';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visualizations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,KAAK,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Visualizations Index
3
+ *
4
+ * Central export point for all D3 visualizations.
5
+ */
6
+ // Visualizations
7
+ export { simpleChart } from './simpleChart';
8
+ export { gameFish } from './gameFish';
9
+ export { gameTree } from './gameTree';
10
+ export { momentumChart } from './momentumChart';
11
+ export { ptsMatch } from './ptsChart';
12
+ export { coronaChart, coronaChartFromMatchUp } from './coronaChart';
13
+ export { ptsHorizon, ptsHorizonFromMatchUp } from './ptsHorizon';
14
+ export { horizonChart } from './horizonChart';
15
+ export { rallyTree } from './rallyTree';
16
+ export { statView } from './statView';
17
+ export { matchDashboard } from './matchDashboard';
18
+ // Utilities
19
+ export { groupGames } from './groupGames';
20
+ export { rallyCount } from './legacyRally';
21
+ // Data generators
22
+ export { sampleGamePoints, deuceGamePoints, tiebreakGamePoints, sampleGameGroup, deuceGameGroup, tiebreakGameGroup, pointsToEpisodes, } from './data/sampleGame';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visualizations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function legacyRally(rally: any): any[];
2
+ export declare function rallyCount(rally: any): any;
3
+ //# sourceMappingURL=legacyRally.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacyRally.d.ts","sourceRoot":"","sources":["../../src/visualizations/legacyRally.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,KAAK,KAAA,SAIhC;AAED,wBAAgB,UAAU,CAAC,KAAK,KAAA,OAW/B"}
@@ -0,0 +1,26 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ import { isNumeric, isString } from './typeOf';
4
+ export function legacyRally(rally) {
5
+ if (Array.isArray(rally))
6
+ return rally;
7
+ if (isString(rally))
8
+ return new Array(rally);
9
+ return [];
10
+ }
11
+ export function rallyCount(rally) {
12
+ // Direct number (from point.rallyLength)
13
+ if (isNumeric(rally))
14
+ return rally;
15
+ // UMO v4 format: { notation: string, length: number }
16
+ if (rally && typeof rally === 'object' && 'length' in rally) {
17
+ return rally.length;
18
+ }
19
+ // Legacy formats
20
+ if (Array.isArray(rally))
21
+ return rally.length;
22
+ if (isString(rally))
23
+ return parseInt(rally);
24
+ return 0;
25
+ }
26
+ //# sourceMappingURL=legacyRally.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacyRally.js","sourceRoot":"","sources":["../../src/visualizations/legacyRally.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc;AACd,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAU,WAAW,CAAC,KAAK;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAK;IAC9B,yCAAyC;IACzC,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,sDAAsD;IACtD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,iBAAiB;IACjB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC9C,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Match Dashboard — Cross-visualization coordination layer (D3 v7)
3
+ *
4
+ * Creates a CSS-grid layout with ptsHorizon, coronaChart, statView,
5
+ * gameTree, and rallyTree. Wires ptsHorizon brush events to filter
6
+ * all sub-charts simultaneously.
7
+ *
8
+ * Inspired by legacy matchView.js displayPoints() coordination.
9
+ */
10
+ import { ptsHorizon } from "./ptsHorizon";
11
+ import { statView } from "./statView";
12
+ import { gameTree } from "./gameTree";
13
+ import { rallyTree } from "./rallyTree";
14
+ interface DashboardOptions {
15
+ colors: [string, string];
16
+ players: [string, string];
17
+ display: {
18
+ ptsHorizon: boolean;
19
+ coronaChart: boolean;
20
+ statView: boolean;
21
+ gameTree: boolean;
22
+ rallyTree: boolean;
23
+ };
24
+ }
25
+ interface DashboardCharts {
26
+ ptsHorizonChart: ReturnType<typeof ptsHorizon>;
27
+ statViewChart: ReturnType<typeof statView>;
28
+ gameTreeChart: ReturnType<typeof gameTree>;
29
+ rallyTreeChart: ReturnType<typeof rallyTree>;
30
+ }
31
+ export declare function matchDashboard(): {
32
+ (el: HTMLElement): void;
33
+ matchUp(state: any, players?: [string, string]): /*elided*/ any;
34
+ update(): void;
35
+ options(values?: Partial<DashboardOptions>): DashboardOptions | /*elided*/ any;
36
+ charts(): DashboardCharts;
37
+ };
38
+ export {};
39
+ //# sourceMappingURL=matchDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchDashboard.d.ts","sourceRoot":"","sources":["../../src/visualizations/matchDashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,UAAU,gBAAgB;IACxB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE;QACP,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,UAAU,eAAe;IACvB,eAAe,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC/C,aAAa,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;IAC3C,aAAa,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC9C;AAED,wBAAgB,cAAc;SAqCL,WAAW;mBA4KG,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;;qBAqC7B,OAAO,CAAC,gBAAgB,CAAC;cAUhC,eAAe;EAKhD"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Match Dashboard — Cross-visualization coordination layer (D3 v7)
3
+ *
4
+ * Creates a CSS-grid layout with ptsHorizon, coronaChart, statView,
5
+ * gameTree, and rallyTree. Wires ptsHorizon brush events to filter
6
+ * all sub-charts simultaneously.
7
+ *
8
+ * Inspired by legacy matchView.js displayPoints() coordination.
9
+ */
10
+ import { select } from "d3";
11
+ import { ptsHorizon } from "./ptsHorizon";
12
+ import { coronaChart, coronaChartFromMatchUp } from "./coronaChart";
13
+ import { statView } from "./statView";
14
+ import { gameTree } from "./gameTree";
15
+ import { rallyTree } from "./rallyTree";
16
+ import { buildEpisodes } from "../episodes/buildEpisodes";
17
+ import { computeMatchStats } from "../statistics/matchStatistics";
18
+ export function matchDashboard() {
19
+ let container;
20
+ let allEpisodes = [];
21
+ let matchUpState;
22
+ let mounted = false;
23
+ const options = {
24
+ colors: ["#a55194", "#6b6ecf"],
25
+ players: ["Player 1", "Player 2"],
26
+ display: {
27
+ ptsHorizon: true,
28
+ coronaChart: true,
29
+ statView: true,
30
+ gameTree: true,
31
+ rallyTree: true,
32
+ },
33
+ };
34
+ // ── Sub-chart instances ────────────────────────────────────────
35
+ const charts = {
36
+ ptsHorizonChart: ptsHorizon(),
37
+ statViewChart: statView(),
38
+ gameTreeChart: gameTree(),
39
+ rallyTreeChart: rallyTree(),
40
+ };
41
+ // ── DOM containers ─────────────────────────────────────────────
42
+ let horizonDiv;
43
+ let coronaDiv;
44
+ let statsDiv;
45
+ let gameTreeDiv;
46
+ let rallyTreeDiv;
47
+ // ── Create layout ──────────────────────────────────────────────
48
+ function dashboard(el) {
49
+ container = el;
50
+ container.innerHTML = "";
51
+ // CSS grid: ptsHorizon full width top; 3-column body below
52
+ container.style.cssText = `
53
+ display: grid;
54
+ grid-template-columns: 1fr 1fr 1fr;
55
+ grid-template-rows: auto minmax(500px, 1fr);
56
+ gap: 8px;
57
+ width: 100%;
58
+ `;
59
+ // Row 1: Horizon (full width)
60
+ horizonDiv = document.createElement("div");
61
+ horizonDiv.style.cssText = "grid-column: 1 / -1; min-height: 80px;";
62
+ container.appendChild(horizonDiv);
63
+ // Row 2, Col 1: Corona chart
64
+ coronaDiv = document.createElement("div");
65
+ coronaDiv.style.cssText =
66
+ "min-height: 300px; display: flex; align-items: center; justify-content: center;";
67
+ container.appendChild(coronaDiv);
68
+ // Row 2, Col 2: Stat view
69
+ statsDiv = document.createElement("div");
70
+ statsDiv.style.cssText = "min-height: 200px; overflow: hidden;";
71
+ container.appendChild(statsDiv);
72
+ // Row 2, Col 3: GameTree + RallyTree stacked
73
+ const rightCol = document.createElement("div");
74
+ rightCol.style.cssText =
75
+ "display: flex; flex-direction: column; align-items: center; gap: 12px; min-height: 500px;";
76
+ container.appendChild(rightCol);
77
+ gameTreeDiv = document.createElement("div");
78
+ gameTreeDiv.style.cssText = "flex: 1; width: 100%; min-height: 280px;";
79
+ rightCol.appendChild(gameTreeDiv);
80
+ rallyTreeDiv = document.createElement("div");
81
+ rallyTreeDiv.style.cssText = "flex: 1; width: 100%; min-height: 250px; display: flex; justify-content: center;";
82
+ rightCol.appendChild(rallyTreeDiv);
83
+ // ── Initialize sub-charts ─────────────────────────────────
84
+ // ptsHorizon
85
+ charts.ptsHorizonChart.options({
86
+ display: {
87
+ sizeToFit: true,
88
+ bands: 3,
89
+ mode: "mirror",
90
+ transitionTime: 0,
91
+ },
92
+ elements: { brush: true },
93
+ });
94
+ charts.ptsHorizonChart.colors(options.colors);
95
+ charts.ptsHorizonChart.events({
96
+ brush: { start: null, brushing: null, end: filterAll },
97
+ });
98
+ select(horizonDiv).call(charts.ptsHorizonChart);
99
+ // statView
100
+ charts.statViewChart.colors(options.colors);
101
+ select(statsDiv).call(charts.statViewChart);
102
+ // gameTree
103
+ charts.gameTreeChart.options({
104
+ display: { sizeToFit: true, showEmpty: false, noAd: false, showImages: false },
105
+ lines: {
106
+ points: { winners: 'green', errors: '#BA1212', unknown: '#2ed2db' },
107
+ colors: { underlines: 'black' },
108
+ },
109
+ nodes: { colors: { 0: options.colors[0], 1: options.colors[1], neutral: '#ecf0f1' } },
110
+ labels: { Player: options.players[0], Opponent: options.players[1] },
111
+ });
112
+ select(gameTreeDiv).call(charts.gameTreeChart);
113
+ // rallyTree
114
+ charts.rallyTreeChart.options({
115
+ display: { sizeToFit: true },
116
+ areas: { colors: { 0: options.colors[0], 1: options.colors[1] } },
117
+ });
118
+ select(rallyTreeDiv).call(charts.rallyTreeChart);
119
+ mounted = true;
120
+ }
121
+ // ── Brush filter handler ───────────────────────────────────────
122
+ function filterAll(extent) {
123
+ const start = Math.floor(extent[0]);
124
+ const end = Math.ceil(extent[1]);
125
+ // Slice episodes to selected range
126
+ const filtered = end - start > 1 ? allEpisodes.slice(start, end) : allEpisodes;
127
+ // Update gameTree
128
+ if (options.display.gameTree) {
129
+ charts.gameTreeChart.data(filtered);
130
+ charts.gameTreeChart.update();
131
+ }
132
+ // Update rallyTree
133
+ if (options.display.rallyTree) {
134
+ const pts = filtered.map((ep) => ({
135
+ winner: ep.point.winner,
136
+ result: ep.point.result,
137
+ rallyLength: ep.point.rallyLength ?? 2,
138
+ }));
139
+ charts.rallyTreeChart.data(pts);
140
+ charts.rallyTreeChart.update();
141
+ }
142
+ // Update statView
143
+ if (options.display.statView) {
144
+ charts.statViewChart.data(computeMatchStats(filtered));
145
+ charts.statViewChart.update();
146
+ }
147
+ // Update coronaChart (re-render from filtered data)
148
+ if (options.display.coronaChart && matchUpState) {
149
+ renderCorona(filtered);
150
+ }
151
+ }
152
+ // ── Corona re-render ──────────────────────────────────────────
153
+ function renderCorona(episodes) {
154
+ select(coronaDiv).selectAll("*").remove();
155
+ if (!episodes || episodes.length === 0)
156
+ return;
157
+ // Build a pseudo-setmap from filtered episodes
158
+ const diffs = [];
159
+ let diff = 0;
160
+ for (const ep of episodes) {
161
+ diff += ep.point.winner === 0 ? 1 : -1;
162
+ diffs.push(diff);
163
+ }
164
+ const size = Math.min(coronaDiv.clientWidth || 200, coronaDiv.clientHeight || 200);
165
+ const svg = select(coronaDiv)
166
+ .append("svg")
167
+ .attr("width", size)
168
+ .attr("height", size);
169
+ coronaChart(svg, [
170
+ {
171
+ p2sdiff: diffs,
172
+ gamesScore: [0, 0],
173
+ players: options.players,
174
+ winnerIndex: 0,
175
+ },
176
+ ], {
177
+ width: size,
178
+ height: size,
179
+ radius: size * 1.35,
180
+ colors: options.colors,
181
+ display: { info: false, badge: false },
182
+ });
183
+ }
184
+ // ── Public API ─────────────────────────────────────────────────
185
+ dashboard.matchUp = function (state, players) {
186
+ matchUpState = state;
187
+ if (players)
188
+ options.players = players;
189
+ allEpisodes = buildEpisodes(state);
190
+ // Feed each chart
191
+ charts.ptsHorizonChart.matchUp(state, options.players);
192
+ charts.statViewChart.data(computeMatchStats(allEpisodes));
193
+ charts.gameTreeChart.matchUp(state, options.players);
194
+ charts.rallyTreeChart.matchUp(state);
195
+ return dashboard;
196
+ };
197
+ dashboard.update = function () {
198
+ if (!mounted)
199
+ return;
200
+ // Defer to requestAnimationFrame so the browser has completed grid
201
+ // layout — sizeToFit measurements need accurate getBoundingClientRect.
202
+ requestAnimationFrame(() => {
203
+ charts.ptsHorizonChart.update();
204
+ charts.statViewChart.update();
205
+ charts.gameTreeChart.update();
206
+ charts.rallyTreeChart.update();
207
+ // Render corona
208
+ if (options.display.coronaChart && matchUpState && allEpisodes.length > 0) {
209
+ coronaChartFromMatchUp(coronaDiv, matchUpState, {
210
+ colors: options.colors,
211
+ players: options.players,
212
+ display: { info: true },
213
+ });
214
+ }
215
+ });
216
+ };
217
+ dashboard.options = function (values) {
218
+ if (!arguments.length)
219
+ return options;
220
+ if (values) {
221
+ if (values.colors)
222
+ options.colors = values.colors;
223
+ if (values.players)
224
+ options.players = values.players;
225
+ if (values.display)
226
+ Object.assign(options.display, values.display);
227
+ }
228
+ return dashboard;
229
+ };
230
+ dashboard.charts = function () {
231
+ return charts;
232
+ };
233
+ return dashboard;
234
+ }
235
+ //# sourceMappingURL=matchDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchDashboard.js","sourceRoot":"","sources":["../../src/visualizations/matchDashboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAsBlE,MAAM,UAAU,cAAc;IAC5B,IAAI,SAAsB,CAAC;IAC3B,IAAI,WAAW,GAAc,EAAE,CAAC;IAChC,IAAI,YAAiB,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,OAAO,GAAqB;QAChC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9B,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QACjC,OAAO,EAAE;YACP,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;SAChB;KACF,CAAC;IAEF,kEAAkE;IAElE,MAAM,MAAM,GAAoB;QAC9B,eAAe,EAAE,UAAU,EAAE;QAC7B,aAAa,EAAE,QAAQ,EAAE;QACzB,aAAa,EAAE,QAAQ,EAAE;QACzB,cAAc,EAAE,SAAS,EAAE;KAC5B,CAAC;IAEF,kEAAkE;IAElE,IAAI,UAA0B,CAAC;IAC/B,IAAI,SAAyB,CAAC;IAC9B,IAAI,QAAwB,CAAC;IAC7B,IAAI,WAA2B,CAAC;IAChC,IAAI,YAA4B,CAAC;IAEjC,kEAAkE;IAElE,SAAS,SAAS,CAAC,EAAe;QAChC,SAAS,GAAG,EAAE,CAAC;QACf,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QAEzB,2DAA2D;QAC3D,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;KAMzB,CAAC;QAEF,8BAA8B;QAC9B,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,wCAAwC,CAAC;QACpE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAElC,6BAA6B;QAC7B,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,SAAS,CAAC,KAAK,CAAC,OAAO;YACrB,iFAAiF,CAAC;QACpF,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEjC,0BAA0B;QAC1B,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,sCAAsC,CAAC;QAChE,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,OAAO;YACpB,2FAA2F,CAAC;QAC9F,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,0CAA0C,CAAC;QACvE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAElC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,kFAAkF,CAAC;QAChH,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEnC,6DAA6D;QAE7D,aAAa;QACb,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;YAC7B,OAAO,EAAE;gBACP,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,CAAC;aAClB;YACD,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YAC5B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;SACvD,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAsB,CAAC,CAAC;QAEvD,WAAW;QACX,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAoB,CAAC,CAAC;QAEnD,WAAW;QACX,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9E,KAAK,EAAE;gBACL,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;gBACnE,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;aAChC;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACrF,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;SACrE,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAoB,CAAC,CAAC;QAEtD,YAAY;QACZ,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5B,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAC5B,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;SAClE,CAAC,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAqB,CAAC,CAAC;QAExD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,kEAAkE;IAElE,SAAS,SAAS,CAAC,MAAwB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjC,mCAAmC;QACnC,MAAM,QAAQ,GACZ,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAEhE,kBAAkB;QAClB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAChC,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAe;gBAChC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;gBACvB,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;aACvC,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACjC,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAChC,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,EAAE,CAAC;YAChD,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE,SAAS,YAAY,CAAC,QAAoB;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/C,+CAA+C;QAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CACnB,SAAS,CAAC,WAAW,IAAI,GAAG,EAC5B,SAAS,CAAC,YAAY,IAAI,GAAG,CAC9B,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;aAC1B,MAAM,CAAC,KAAK,CAAC;aACb,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;aACnB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAExB,WAAW,CACT,GAAU,EACV;YACE;gBACE,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,CAAC;aACf;SACF,EACD;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,GAAG,IAAI;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SACvC,CACF,CAAC;IACJ,CAAC;IAED,kEAAkE;IAElE,SAAS,CAAC,OAAO,GAAG,UAAU,KAAU,EAAE,OAA0B;QAClE,YAAY,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEnC,kBAAkB;QAClB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,SAAS,CAAC,MAAM,GAAG;QACjB,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,mEAAmE;QACnE,uEAAuE;QACvE,qBAAqB,CAAC,GAAG,EAAE;YACzB,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAE/B,gBAAgB;YAChB,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE;oBAC9C,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,SAAS,CAAC,OAAO,GAAG,UAAU,MAAkC;QAC9D,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAClD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACrD,IAAI,MAAM,CAAC,OAAO;gBAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,SAAS,CAAC,MAAM,GAAG;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare function momentumChart(): {
2
+ (selection: any): void;
3
+ options(values: any): any;
4
+ events(functions: any): any;
5
+ width(value: any): any;
6
+ height(value: any): any;
7
+ data(value: any): any;
8
+ matchUp(matchUpState: any): /*elided*/ any;
9
+ update(opts: any): void;
10
+ colors(color3s: any): any;
11
+ };
12
+ //# sourceMappingURL=momentumChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentumChart.d.ts","sourceRoot":"","sources":["../../src/visualizations/momentumChart.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa;gBAoFD,GAAG;;;;;;0BA2VW,GAAG;;;EAgC5C"}