@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,200 @@
1
+ /**
2
+ * StatView — Match statistics bar chart (D3 v7)
3
+ *
4
+ * Renders an SVG "table" — one row per stat: name centered, player values
5
+ * on left/right, horizontal bars showing relative proportions.
6
+ *
7
+ * Ported from legacy statView.js to D3 v7 TypeScript.
8
+ */
9
+ import { computeMatchStats } from "../statistics/matchStatistics";
10
+ import { buildEpisodes } from "../episodes/buildEpisodes";
11
+ import { keyWalk } from "./utils/keyWalk";
12
+ import { generateId } from "./utils/generateId";
13
+ import { select, scaleLinear } from "d3";
14
+ function chart_width(opts) {
15
+ return opts.width - opts.margins.left - opts.margins.right;
16
+ }
17
+ function chart_rowHeight(opts) {
18
+ return opts.rowHeight - opts.margins.top - opts.margins.bottom;
19
+ }
20
+ export function statView() {
21
+ let data = [];
22
+ let updateFn;
23
+ const options = {
24
+ id: generateId(),
25
+ width: 400,
26
+ height: 300,
27
+ rowHeight: 30,
28
+ margins: { top: 2, bottom: 2, left: 10, right: 10 },
29
+ display: {
30
+ sizeToFit: { width: true, height: false },
31
+ transitionTime: 300,
32
+ },
33
+ colors: {
34
+ players: { 0: "#a55194", 1: "#6b6ecf" },
35
+ },
36
+ };
37
+ const events = {
38
+ update: {
39
+ begin: null,
40
+ end: null,
41
+ },
42
+ };
43
+ function chart(selection) {
44
+ selection.each(function (_, i, n) {
45
+ const domParent = select(n[i]);
46
+ const root = domParent.append("div").attr("id", options.id);
47
+ updateFn = function (opts) {
48
+ const fData = data.filter((d) => d.numerator && (d.numerator[0] || d.numerator[1]));
49
+ if (options.display.sizeToFit.width || opts?.sizeToFit?.width) {
50
+ const dims = domParent.node()?.getBoundingClientRect();
51
+ if (dims)
52
+ options.width = Math.max(dims.width, 100);
53
+ }
54
+ const w = chart_width(options);
55
+ const rh = chart_rowHeight(options);
56
+ const fontSize = rh * 0.5;
57
+ // Row containers — one <svg> per stat
58
+ const items = root
59
+ .selectAll("svg")
60
+ .data(fData, (d) => d.name)
61
+ .join("svg")
62
+ .attr("width", options.width)
63
+ .attr("height", options.rowHeight);
64
+ // Group per row
65
+ const itemG = items
66
+ .selectAll("g.stat-row")
67
+ .data((d) => [d])
68
+ .join("g")
69
+ .attr("class", "stat-row")
70
+ .attr("width", options.width)
71
+ .attr("height", rh)
72
+ .attr("transform", `translate(${options.margins.left},${options.margins.top})`);
73
+ // ── Text elements ──────────────────────────────────────
74
+ function formatValue(d, playerIdx) {
75
+ const num = d.numerator?.[playerIdx] ?? "";
76
+ const den = d.denominator?.[playerIdx];
77
+ const pctVal = d.pct?.[playerIdx];
78
+ let text = den !== undefined && den ? `${num}/${den}` : `${num}`;
79
+ if (pctVal !== undefined) {
80
+ text =
81
+ w > 400
82
+ ? `${Math.round(pctVal)}% (${text})`
83
+ : `${Math.round(pctVal)}%`;
84
+ }
85
+ return text;
86
+ }
87
+ function buildTextData(d) {
88
+ return [
89
+ { text: d.name, anchor: "middle", x: options.width / 2 },
90
+ { text: formatValue(d, 0), anchor: "start", x: 0 },
91
+ { text: formatValue(d, 1), anchor: "end", x: w },
92
+ ];
93
+ }
94
+ itemG
95
+ .selectAll("text")
96
+ .data(buildTextData)
97
+ .join("text")
98
+ .text((d) => d.text)
99
+ .style("text-anchor", (d) => d.anchor)
100
+ .style("dominant-baseline", "middle")
101
+ .style("font-size", `${fontSize}px`)
102
+ .style("fill", "black")
103
+ .attr("transform", (d) => `translate(${d.x},${options.rowHeight / 4})`);
104
+ // ── Bars ───────────────────────────────────────────────
105
+ const barScale = scaleLinear().domain([0, 100]).range([0, w]);
106
+ function calcBarData(d) {
107
+ if (d.numerator !== undefined) {
108
+ const total = d.numerator[0] + d.numerator[1];
109
+ if (total !== 0) {
110
+ let pct1 = Number.parseFloat((d.numerator[0] / total).toFixed(1)) * 100;
111
+ pct1 = Math.min(pct1, 100);
112
+ const pct2 = 100 - (Number.isNaN(pct1) ? 0 : pct1);
113
+ if (d.numerator[0] < 0 && d.numerator[1] < 0) {
114
+ return [pct2, pct1];
115
+ }
116
+ return [pct1, pct2];
117
+ }
118
+ else if (d.numerator[0] > d.numerator[1]) {
119
+ return [100, 0];
120
+ }
121
+ else if (d.numerator[1] > d.numerator[0]) {
122
+ return [0, 100];
123
+ }
124
+ }
125
+ return [];
126
+ }
127
+ itemG
128
+ .selectAll("rect")
129
+ .data(calcBarData)
130
+ .join("rect")
131
+ .transition()
132
+ .duration(options.display.transitionTime)
133
+ .attr("width", (d) => {
134
+ const s = Number.isNaN(d) ? 0 : barScale(d);
135
+ return s < 0 || Number.isNaN(s) ? 0 : s;
136
+ })
137
+ .attr("height", rh / 2)
138
+ .attr("fill", (_d, idx) => options.colors.players[idx])
139
+ .attr("transform", (d, idx) => {
140
+ const xoff = idx ? w - barScale(d) : 0;
141
+ return `translate(${Number.isFinite(xoff) ? xoff : 0},${options.rowHeight / 2})`;
142
+ });
143
+ };
144
+ });
145
+ }
146
+ // ── Accessors ──────────────────────────────────────────────────
147
+ chart.options = function (values) {
148
+ if (!arguments.length)
149
+ return options;
150
+ keyWalk(values, options);
151
+ return chart;
152
+ };
153
+ chart.events = function (functions) {
154
+ if (!arguments.length)
155
+ return events;
156
+ keyWalk(functions, events);
157
+ return chart;
158
+ };
159
+ chart.data = function (value) {
160
+ if (!arguments.length)
161
+ return data;
162
+ data = value || [];
163
+ return chart;
164
+ };
165
+ chart.matchUp = function (matchUpState) {
166
+ const episodes = buildEpisodes(matchUpState);
167
+ data = computeMatchStats(episodes);
168
+ return chart;
169
+ };
170
+ chart.update = function (opts) {
171
+ if (events.update.begin)
172
+ events.update.begin();
173
+ if (typeof updateFn === "function")
174
+ updateFn(opts);
175
+ setTimeout(() => {
176
+ if (events.update.end)
177
+ events.update.end();
178
+ }, options.display.transitionTime);
179
+ };
180
+ chart.width = function (value) {
181
+ if (!arguments.length)
182
+ return options.width;
183
+ options.width = value;
184
+ return chart;
185
+ };
186
+ chart.height = function (value) {
187
+ if (!arguments.length)
188
+ return options.height;
189
+ options.height = value;
190
+ return chart;
191
+ };
192
+ chart.colors = function (playerColors) {
193
+ if (!arguments.length)
194
+ return [options.colors.players[0], options.colors.players[1]];
195
+ options.colors.players = { 0: playerColors[0], 1: playerColors[1] };
196
+ return chart;
197
+ };
198
+ return chart;
199
+ }
200
+ //# sourceMappingURL=statView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statView.js","sourceRoot":"","sources":["../../src/visualizations/statView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function isFunction(fx: any): fx is (...args: any[]) => any;
2
+ export declare function isString(item: any): item is string;
3
+ export declare function isArray(item: any): item is any[];
4
+ export declare function isObject(item: any): item is object;
5
+ export declare function isNumeric(value: any): boolean;
6
+ //# sourceMappingURL=typeOf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeOf.d.ts","sourceRoot":"","sources":["../../src/visualizations/typeOf.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAEjE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,CAElD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAEhD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE7C"}
@@ -0,0 +1,18 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ export function isFunction(fx) {
4
+ return typeof fx === 'function';
5
+ }
6
+ export function isString(item) {
7
+ return typeof item === 'string';
8
+ }
9
+ export function isArray(item) {
10
+ return Array.isArray(item);
11
+ }
12
+ export function isObject(item) {
13
+ return typeof item === 'object' && !Array.isArray(item);
14
+ }
15
+ export function isNumeric(value) {
16
+ return !Number.isNaN(Number.parseFloat(value));
17
+ }
18
+ //# sourceMappingURL=typeOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeOf.js","sourceRoot":"","sources":["../../src/visualizations/typeOf.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc;AACd,MAAM,UAAU,UAAU,CAAC,EAAO;IAChC,OAAO,OAAO,EAAE,KAAK,UAAU,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAS;IAChC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAS;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAS;IAChC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAU;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,92 @@
1
+ type Handler<Args extends any[] = []> = ((...args: Args) => void) | null;
2
+ export interface PtsChartEvents {
3
+ update: {
4
+ begin: Handler;
5
+ end: Handler;
6
+ };
7
+ setBox: {
8
+ mouseover: Handler<[any, number]>;
9
+ mouseout: Handler<[any, number]>;
10
+ };
11
+ pointBars: {
12
+ mouseover: Handler<[any, number]>;
13
+ mouseout: Handler<[any, number]>;
14
+ click: Handler<[any, number, Node]>;
15
+ };
16
+ }
17
+ export interface GameFishEvents {
18
+ leftImage: {
19
+ click: Handler<[string]>;
20
+ };
21
+ rightImage: {
22
+ click: Handler<[string]>;
23
+ };
24
+ update: {
25
+ begin: Handler;
26
+ end: Handler;
27
+ };
28
+ point: {
29
+ mouseover: Handler<[any, any]>;
30
+ mouseout: Handler<[any, any]>;
31
+ click: Handler<[any, any]>;
32
+ };
33
+ }
34
+ export interface GameTreeEvents {
35
+ leftImage: {
36
+ click: Handler<[string]>;
37
+ };
38
+ rightImage: {
39
+ click: Handler<[string]>;
40
+ };
41
+ update: {
42
+ begin: Handler;
43
+ end: Handler;
44
+ };
45
+ point: {
46
+ mousemove: Handler<[any, any]>;
47
+ mouseout: Handler<[any, any]>;
48
+ click: Handler<[any, any]>;
49
+ };
50
+ node: {
51
+ mousemove: Handler<[any, number]>;
52
+ mouseout: Handler<[any, number]>;
53
+ click: Handler<[any, number]>;
54
+ };
55
+ score: {
56
+ mousemove: Handler<[any, number]>;
57
+ mouseout: Handler<[any, number]>;
58
+ click: Handler<[any, number]>;
59
+ };
60
+ label: {
61
+ mousemove: Handler<[any, any]>;
62
+ mouseout: Handler<[any, any]>;
63
+ click: Handler<[any, any, Element]>;
64
+ };
65
+ selector: {
66
+ mousemove: Handler<[any, any]>;
67
+ mouseout: Handler<[any, any]>;
68
+ click: Handler<[any, any, Element]>;
69
+ };
70
+ }
71
+ export interface MomentumChartEvents {
72
+ score: {
73
+ click: Handler<[any]>;
74
+ };
75
+ leftImage: {
76
+ click: Handler<[string]>;
77
+ };
78
+ rightImage: {
79
+ click: Handler<[string]>;
80
+ };
81
+ update: {
82
+ begin: Handler;
83
+ end: Handler;
84
+ };
85
+ point: {
86
+ mouseover: Handler<[any, any]>;
87
+ mouseout: Handler<[any, any]>;
88
+ click: Handler<[any, any]>;
89
+ };
90
+ }
91
+ export {};
92
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/visualizations/types/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/visualizations/types/events.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Type definitions for visualization data structures
3
+ * Based on Universal Match Object (UMO) data model
4
+ */
5
+ /**
6
+ * Point data structure from UMO
7
+ */
8
+ export interface Point {
9
+ index: number;
10
+ game: number;
11
+ set: number;
12
+ server: 0 | 1;
13
+ winner: 0 | 1;
14
+ notation?: string;
15
+ rally?: string;
16
+ rallyLength?: number;
17
+ result: string;
18
+ score?: string;
19
+ points?: [number, number];
20
+ tiebreak?: boolean;
21
+ isBreakpoint?: boolean | number;
22
+ }
23
+ /**
24
+ * Episode structure from UMO history
25
+ */
26
+ export interface Episode {
27
+ point: Point;
28
+ game: {
29
+ index: number;
30
+ complete: boolean;
31
+ games: [number, number];
32
+ };
33
+ set: {
34
+ index: number;
35
+ complete: boolean;
36
+ };
37
+ needed: {
38
+ pointsToGame: [number, number];
39
+ pointsToSet: [number, number];
40
+ gamesToSet: [number, number];
41
+ isBreakpoint?: boolean;
42
+ };
43
+ }
44
+ /**
45
+ * Game group structure (from groupGames utility)
46
+ */
47
+ export interface GameGroup {
48
+ points: Point[];
49
+ index: number;
50
+ set: number;
51
+ score: [number, number];
52
+ complete: boolean;
53
+ winner?: 0 | 1;
54
+ lastGame?: boolean;
55
+ }
56
+ /**
57
+ * Set structure for ptsChart
58
+ */
59
+ export interface SetData {
60
+ points: Episode[];
61
+ setNumber: number;
62
+ }
63
+ /**
64
+ * Player metadata
65
+ */
66
+ export interface Player {
67
+ index: 0 | 1;
68
+ firstName: string;
69
+ lastName: string;
70
+ name?: string;
71
+ }
72
+ /**
73
+ * Match metadata
74
+ */
75
+ export interface MatchMetadata {
76
+ players: Player[];
77
+ matchUpFormat?: string;
78
+ }
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/visualizations/types/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzB,CAAC;IACF,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,8 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /**
4
+ * Type definitions for visualization data structures
5
+ * Based on Universal Match Object (UMO) data model
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/visualizations/types/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc;AACd;;;GAGG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Array utilities
3
+ *
4
+ * Extracted from coronaChart.ts — helpers for slicing and indexing arrays.
5
+ */
6
+ /** Sum all values in a numeric array */
7
+ export declare function sum(arr: number[]): number;
8
+ /**
9
+ * Create ranges from a list of indices.
10
+ * Each range spans [indices[i], indices[i+1]], with the last range
11
+ * extending to the end of someArray.
12
+ */
13
+ export declare function createRanges(indices: number[], someArray: number[]): number[][];
14
+ /** Slice data into sub-arrays based on index ranges */
15
+ export declare function sliceData(ranges: number[][], data: number[]): number[][];
16
+ /** Find all indices of zero values in a data array */
17
+ export declare function indicesOf(_something: number, data: number[]): number[];
18
+ //# sourceMappingURL=arrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../src/visualizations/utils/arrays.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wCAAwC;AACxC,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAQ/E;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAOxE;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAUtE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Array utilities
3
+ *
4
+ * Extracted from coronaChart.ts — helpers for slicing and indexing arrays.
5
+ */
6
+ /** Sum all values in a numeric array */
7
+ export function sum(arr) {
8
+ return arr.reduce((total, val) => total + Number.parseFloat(val.toString()), 0);
9
+ }
10
+ /**
11
+ * Create ranges from a list of indices.
12
+ * Each range spans [indices[i], indices[i+1]], with the last range
13
+ * extending to the end of someArray.
14
+ */
15
+ export function createRanges(indices, someArray) {
16
+ const ranges = [];
17
+ for (let r = 0; r < indices.length - 1; r++) {
18
+ ranges.push([indices[r], indices[r + 1]]);
19
+ }
20
+ const lastIndex = indices.at(-1) ?? 0;
21
+ ranges.push([lastIndex, someArray.length]);
22
+ return ranges;
23
+ }
24
+ /** Slice data into sub-arrays based on index ranges */
25
+ export function sliceData(ranges, data) {
26
+ const slices = [];
27
+ for (const range of ranges) {
28
+ const slice = data.slice(range[0], range[1] + 1);
29
+ slices.push(slice);
30
+ }
31
+ return slices;
32
+ }
33
+ /** Find all indices of zero values in a data array */
34
+ export function indicesOf(_something, data) {
35
+ let next = 0;
36
+ let position = -1;
37
+ const indices = [];
38
+ while (next >= 0) {
39
+ next = data.slice(position + 1).indexOf(0);
40
+ position += next + 1;
41
+ if (next >= 0)
42
+ indices.push(position);
43
+ }
44
+ return indices;
45
+ }
46
+ //# sourceMappingURL=arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../src/visualizations/utils/arrays.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wCAAwC;AACxC,MAAM,UAAU,GAAG,CAAC,GAAa;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,SAAmB;IACjE,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAC,MAAkB,EAAE,IAAc;IAC1D,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,IAAc;IAC1D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;QACrB,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Color manipulation utilities
3
+ *
4
+ * Extracted from gameTree.ts — used for gradient calculations
5
+ * in game tree node coloring.
6
+ */
7
+ /**
8
+ * Shade a hex color by a percentage.
9
+ * Positive percent lightens, negative darkens.
10
+ */
11
+ export declare function shadeColor2(color: string, percent: number): string;
12
+ /**
13
+ * Shade an RGB color string by a percentage.
14
+ */
15
+ export declare function shadeRGBColor(color: string, percent: number): string;
16
+ /**
17
+ * Blend two hex colors by a percentage.
18
+ */
19
+ export declare function blendColors(c0: string, c1: string, p: number): string;
20
+ /**
21
+ * Blend two RGB color strings by a percentage.
22
+ */
23
+ export declare function blendRGBColors(c0: string, c1: string, p: number): string;
24
+ /**
25
+ * Auto-detect color format (hex vs RGB) and shade accordingly.
26
+ */
27
+ export declare function colorShade(color: string, percent: number): string;
28
+ /**
29
+ * Auto-detect color format and blend accordingly.
30
+ */
31
+ export declare function colorBlend(color1: string, color2: string, percent: number): string;
32
+ /**
33
+ * Convert a named CSS color to hex using a temporary DOM element.
34
+ */
35
+ export declare function getHexColor(colorStr: string): string | false;
36
+ //# sourceMappingURL=colorUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorUtils.d.ts","sourceRoot":"","sources":["../../../src/visualizations/utils/colorUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAexE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAU5D"}