playball 3.0.0 → 3.1.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/.eslintrc.json +1 -1
- package/README.md +62 -0
- package/bin/playball.js +1 -1
- package/package.json +10 -6
- package/src/cli.js +46 -0
- package/src/components/AllPlays.jsx +14 -13
- package/src/components/App.jsx +6 -6
- package/src/components/AtBat.jsx +1 -1
- package/src/components/Bases.jsx +3 -2
- package/src/components/Count.jsx +5 -4
- package/src/components/FinishedGame.jsx +2 -2
- package/src/components/Game.jsx +5 -5
- package/src/components/GameList.jsx +8 -5
- package/src/components/Grid.jsx +1 -1
- package/src/components/HelpBar.jsx +1 -1
- package/src/components/InningDisplay.jsx +1 -1
- package/src/components/LineScore.jsx +1 -1
- package/src/components/LiveGame.jsx +7 -7
- package/src/components/LoadingSpinner.jsx +2 -2
- package/src/components/Matchup.jsx +1 -1
- package/src/components/PreviewGame.jsx +1 -1
- package/src/components/Standings.jsx +6 -3
- package/src/config.js +167 -0
- package/src/features/games.js +2 -1
- package/src/features/keys.js +5 -4
- package/src/features/schedule.js +2 -1
- package/src/features/standings.js +2 -1
- package/src/hooks/useKey.js +1 -1
- package/src/logger.js +4 -1
- package/src/main.js +19 -15
- package/src/package.js +7 -0
- package/src/screen.js +18 -10
- package/src/store/index.js +6 -5
- package/src/utils.js +10 -0
- package/dist/components/AllPlays.js +0 -133
- package/dist/components/App.js +0 -68
- package/dist/components/AtBat.js +0 -67
- package/dist/components/Bases.js +0 -38
- package/dist/components/Count.js +0 -36
- package/dist/components/FinishedGame.js +0 -124
- package/dist/components/Game.js +0 -82
- package/dist/components/GameList.js +0 -222
- package/dist/components/Grid.js +0 -115
- package/dist/components/HelpBar.js +0 -30
- package/dist/components/InningDisplay.js +0 -26
- package/dist/components/LineScore.js +0 -60
- package/dist/components/LiveGame.js +0 -70
- package/dist/components/LoadingSpinner.js +0 -55
- package/dist/components/Matchup.js +0 -58
- package/dist/components/PreviewGame.js +0 -76
- package/dist/components/Standings.js +0 -91
- package/dist/features/games.js +0 -135
- package/dist/features/keys.js +0 -63
- package/dist/features/schedule.js +0 -58
- package/dist/features/standings.js +0 -57
- package/dist/hooks/useKey.js +0 -23
- package/dist/logger.js +0 -22
- package/dist/main.js +0 -28
- package/dist/screen.js +0 -22
- package/dist/store/index.js +0 -32
- package/dist/style/index.js +0 -22
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
|
-
var _alternateRenderers = require("react-redux/lib/alternate-renderers");
|
|
13
|
-
|
|
14
|
-
var _games = require("../features/games");
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
const getRuns = (inning, homeAway, isFinal) => {
|
|
19
|
-
const runs = inning[homeAway].runs;
|
|
20
|
-
|
|
21
|
-
if (runs !== undefined) {
|
|
22
|
-
return runs;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return isFinal ? 'X' : '';
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const getTeamLine = (linescore, totalInnings, homeAway, final) => linescore.innings.map(inning => getRuns(inning, homeAway, final)).map(r => r.toString().padStart(2)).join(' ').padEnd(totalInnings * 3) + '{bold}' + linescore.teams[homeAway].runs.toString().padStart(3) + '{/bold}' + linescore.teams[homeAway].hits.toString().padStart(3) + linescore.teams[homeAway].errors.toString().padStart(3);
|
|
29
|
-
|
|
30
|
-
function LineScore({
|
|
31
|
-
align,
|
|
32
|
-
final
|
|
33
|
-
}) {
|
|
34
|
-
const linescore = (0, _alternateRenderers.useSelector)(_games.selectLineScore);
|
|
35
|
-
const teams = (0, _alternateRenderers.useSelector)(_games.selectTeams);
|
|
36
|
-
const currentInning = linescore.currentInning;
|
|
37
|
-
|
|
38
|
-
if (!currentInning) {
|
|
39
|
-
return '';
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const totalInnings = Math.max(currentInning, 9);
|
|
43
|
-
const home = teams.home.abbreviation;
|
|
44
|
-
const away = teams.away.abbreviation;
|
|
45
|
-
const teamNameLength = 3;
|
|
46
|
-
let str = ''.padEnd(teamNameLength) + Array.from(Array(totalInnings).keys()).map(i => (i + 1).toString().padStart(2)).join(' ') + ' {bold}R{/bold} H E\n' + away.padEnd(teamNameLength) + getTeamLine(linescore, totalInnings, 'away', final) + '\n' + home.padEnd(teamNameLength) + getTeamLine(linescore, totalInnings, 'home', final);
|
|
47
|
-
return /*#__PURE__*/_react.default.createElement("box", {
|
|
48
|
-
align: align,
|
|
49
|
-
content: str,
|
|
50
|
-
tags: true,
|
|
51
|
-
wrap: false
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
LineScore.propTypes = {
|
|
56
|
-
align: _propTypes.default.oneOf(['left', 'center', 'right']),
|
|
57
|
-
final: _propTypes.default.bool
|
|
58
|
-
};
|
|
59
|
-
var _default = LineScore;
|
|
60
|
-
exports.default = _default;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _Count = _interopRequireDefault(require("./Count"));
|
|
11
|
-
|
|
12
|
-
var _Bases = _interopRequireDefault(require("./Bases"));
|
|
13
|
-
|
|
14
|
-
var _LineScore = _interopRequireDefault(require("./LineScore"));
|
|
15
|
-
|
|
16
|
-
var _Matchup = _interopRequireDefault(require("./Matchup"));
|
|
17
|
-
|
|
18
|
-
var _AtBat = _interopRequireDefault(require("./AtBat"));
|
|
19
|
-
|
|
20
|
-
var _AllPlays = _interopRequireDefault(require("./AllPlays"));
|
|
21
|
-
|
|
22
|
-
var _InningDisplay = _interopRequireDefault(require("./InningDisplay"));
|
|
23
|
-
|
|
24
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
-
|
|
26
|
-
function LiveGame() {
|
|
27
|
-
return /*#__PURE__*/_react.default.createElement("element", null, /*#__PURE__*/_react.default.createElement("element", {
|
|
28
|
-
top: 0,
|
|
29
|
-
left: 1,
|
|
30
|
-
width: "100%-1",
|
|
31
|
-
height: 3
|
|
32
|
-
}, /*#__PURE__*/_react.default.createElement("element", {
|
|
33
|
-
left: 0,
|
|
34
|
-
width: 2
|
|
35
|
-
}, /*#__PURE__*/_react.default.createElement(_InningDisplay.default, null)), /*#__PURE__*/_react.default.createElement("element", {
|
|
36
|
-
left: 5,
|
|
37
|
-
width: "25%-5"
|
|
38
|
-
}, /*#__PURE__*/_react.default.createElement(_Count.default, null)), /*#__PURE__*/_react.default.createElement("element", {
|
|
39
|
-
left: "25%+1",
|
|
40
|
-
width: "25%"
|
|
41
|
-
}, /*#__PURE__*/_react.default.createElement(_Bases.default, null)), /*#__PURE__*/_react.default.createElement("element", {
|
|
42
|
-
left: "50%+2",
|
|
43
|
-
width: "50%-2"
|
|
44
|
-
}, /*#__PURE__*/_react.default.createElement(_LineScore.default, null))), /*#__PURE__*/_react.default.createElement("line", {
|
|
45
|
-
orientation: "horizontal",
|
|
46
|
-
type: "line",
|
|
47
|
-
top: 3,
|
|
48
|
-
width: "100%"
|
|
49
|
-
}), /*#__PURE__*/_react.default.createElement("element", {
|
|
50
|
-
top: 4,
|
|
51
|
-
left: 1
|
|
52
|
-
}, /*#__PURE__*/_react.default.createElement("element", {
|
|
53
|
-
width: "50%-1"
|
|
54
|
-
}, /*#__PURE__*/_react.default.createElement("element", {
|
|
55
|
-
top: 0,
|
|
56
|
-
height: 2
|
|
57
|
-
}, /*#__PURE__*/_react.default.createElement(_Matchup.default, null)), /*#__PURE__*/_react.default.createElement("element", {
|
|
58
|
-
top: 3
|
|
59
|
-
}, /*#__PURE__*/_react.default.createElement(_AtBat.default, null))), /*#__PURE__*/_react.default.createElement("line", {
|
|
60
|
-
orientation: "vertical",
|
|
61
|
-
type: "line",
|
|
62
|
-
left: "50%"
|
|
63
|
-
}), /*#__PURE__*/_react.default.createElement("element", {
|
|
64
|
-
left: "50%+2",
|
|
65
|
-
width: "50%-2"
|
|
66
|
-
}, /*#__PURE__*/_react.default.createElement(_AllPlays.default, null))));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var _default = LiveGame;
|
|
70
|
-
exports.default = _default;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
|
-
var _alternateRenderers = require("react-redux/lib/alternate-renderers");
|
|
11
|
-
|
|
12
|
-
var _schedule = require("../features/schedule");
|
|
13
|
-
|
|
14
|
-
var _games = require("../features/games");
|
|
15
|
-
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
|
-
const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
21
|
-
|
|
22
|
-
function LoadingSpinner() {
|
|
23
|
-
const [frame, setFrame] = (0, _react.useState)(0);
|
|
24
|
-
const [animating, setAnimating] = (0, _react.useState)(false);
|
|
25
|
-
const timerRef = (0, _react.useRef)(null);
|
|
26
|
-
const scheduleLoading = (0, _alternateRenderers.useSelector)(_schedule.selectLoading);
|
|
27
|
-
const gameLoading = (0, _alternateRenderers.useSelector)(_games.selectLoading);
|
|
28
|
-
|
|
29
|
-
const increment = () => {
|
|
30
|
-
setFrame(prevFrame => (prevFrame + 1) % frames.length);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const doUpdate = () => {
|
|
34
|
-
if (!animating && (gameLoading || scheduleLoading)) {
|
|
35
|
-
setAnimating(true);
|
|
36
|
-
increment();
|
|
37
|
-
timerRef.current = setInterval(increment, 50);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (!gameLoading && !scheduleLoading && frame === 0) {
|
|
41
|
-
setAnimating(false);
|
|
42
|
-
clearInterval(timerRef.current);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
(0, _react.useEffect)(() => {
|
|
47
|
-
doUpdate();
|
|
48
|
-
}, [gameLoading, scheduleLoading, frame]);
|
|
49
|
-
return /*#__PURE__*/_react.default.createElement("box", {
|
|
50
|
-
content: animating ? frames[frame] : ' '
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
var _default = LoadingSpinner;
|
|
55
|
-
exports.default = _default;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _alternateRenderers = require("react-redux/lib/alternate-renderers");
|
|
11
|
-
|
|
12
|
-
var _games = require("../features/games");
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
const getPlayerStats = (boxscore, teams, id) => {
|
|
17
|
-
const key = 'ID' + id;
|
|
18
|
-
const homePlayers = boxscore.home.players;
|
|
19
|
-
|
|
20
|
-
if (homePlayers[key]) {
|
|
21
|
-
return {
|
|
22
|
-
team: teams.home,
|
|
23
|
-
player: homePlayers[key]
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
team: teams.away,
|
|
29
|
-
player: boxscore.away.players[key]
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
function Matchup() {
|
|
34
|
-
var _currentPlay$matchup, _currentPlay$matchup$, _currentPlay$matchup2, _currentPlay$matchup3;
|
|
35
|
-
|
|
36
|
-
const boxscore = (0, _alternateRenderers.useSelector)(_games.selectBoxscore);
|
|
37
|
-
const currentPlay = (0, _alternateRenderers.useSelector)(_games.selectCurrentPlay);
|
|
38
|
-
const teams = (0, _alternateRenderers.useSelector)(_games.selectTeams);
|
|
39
|
-
const pitcherId = (_currentPlay$matchup = currentPlay.matchup) === null || _currentPlay$matchup === void 0 ? void 0 : (_currentPlay$matchup$ = _currentPlay$matchup.pitcher) === null || _currentPlay$matchup$ === void 0 ? void 0 : _currentPlay$matchup$.id;
|
|
40
|
-
const batterId = (_currentPlay$matchup2 = currentPlay.matchup) === null || _currentPlay$matchup2 === void 0 ? void 0 : (_currentPlay$matchup3 = _currentPlay$matchup2.batter) === null || _currentPlay$matchup3 === void 0 ? void 0 : _currentPlay$matchup3.id;
|
|
41
|
-
const {
|
|
42
|
-
team: pitchTeam,
|
|
43
|
-
player: pitcher
|
|
44
|
-
} = getPlayerStats(boxscore, teams, pitcherId);
|
|
45
|
-
const {
|
|
46
|
-
team: batTeam,
|
|
47
|
-
player: batter
|
|
48
|
-
} = getPlayerStats(boxscore, teams, batterId);
|
|
49
|
-
const display = `${pitchTeam.abbreviation} Pitching: ` + `{bold}${pitcher.person.fullName}{/bold} ${pitcher.stats.pitching.inningsPitched} IP, ${pitcher.stats.pitching.pitchesThrown || 0} P, ${pitcher.seasonStats.pitching.era} ERA\n` + `${batTeam.abbreviation} At Bat: ` + `{bold}${batter.person.fullName}{/bold} ${batter.stats.batting.hits}-${batter.stats.batting.atBats}, ${batter.seasonStats.batting.avg} AVG, ${batter.seasonStats.batting.homeRuns} HR`;
|
|
50
|
-
return /*#__PURE__*/_react.default.createElement("box", {
|
|
51
|
-
tags: true,
|
|
52
|
-
content: display,
|
|
53
|
-
wrap: false
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
var _default = Matchup;
|
|
58
|
-
exports.default = _default;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _alternateRenderers = require("react-redux/lib/alternate-renderers");
|
|
11
|
-
|
|
12
|
-
var _dateFns = require("date-fns");
|
|
13
|
-
|
|
14
|
-
var _games = require("../features/games");
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
const formatPitcherName = pitcher => {
|
|
19
|
-
let display = pitcher.person.fullName;
|
|
20
|
-
const number = pitcher.jerseyNumber;
|
|
21
|
-
|
|
22
|
-
if (number) {
|
|
23
|
-
display += `, #${number}`;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return display;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
const formatTeam = (teams, probables, boxscore, homeAway) => {
|
|
30
|
-
const pitcherId = probables[homeAway].id;
|
|
31
|
-
const pitcher = boxscore[homeAway].players['ID' + pitcherId];
|
|
32
|
-
let lines = [teams[homeAway].teamName, `(${teams[homeAway].record.wins}-${teams[homeAway].record.losses})`];
|
|
33
|
-
|
|
34
|
-
if (pitcher) {
|
|
35
|
-
var _pitcher$seasonStats, _pitcher$seasonStats$, _pitcher$seasonStats2, _pitcher$seasonStats3, _pitcher$seasonStats4, _pitcher$seasonStats5, _pitcher$seasonStats6, _pitcher$seasonStats7;
|
|
36
|
-
|
|
37
|
-
lines = lines.concat(['', formatPitcherName(pitcher), `${(_pitcher$seasonStats = pitcher.seasonStats) === null || _pitcher$seasonStats === void 0 ? void 0 : (_pitcher$seasonStats$ = _pitcher$seasonStats.pitching) === null || _pitcher$seasonStats$ === void 0 ? void 0 : _pitcher$seasonStats$.wins}-${(_pitcher$seasonStats2 = pitcher.seasonStats) === null || _pitcher$seasonStats2 === void 0 ? void 0 : (_pitcher$seasonStats3 = _pitcher$seasonStats2.pitching) === null || _pitcher$seasonStats3 === void 0 ? void 0 : _pitcher$seasonStats3.losses}`, `${(_pitcher$seasonStats4 = pitcher.seasonStats) === null || _pitcher$seasonStats4 === void 0 ? void 0 : (_pitcher$seasonStats5 = _pitcher$seasonStats4.pitching) === null || _pitcher$seasonStats5 === void 0 ? void 0 : _pitcher$seasonStats5.era} ERA ${(_pitcher$seasonStats6 = pitcher.seasonStats) === null || _pitcher$seasonStats6 === void 0 ? void 0 : (_pitcher$seasonStats7 = _pitcher$seasonStats6.pitching) === null || _pitcher$seasonStats7 === void 0 ? void 0 : _pitcher$seasonStats7.strikeOuts} K`]);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return lines;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
function PreviewGame() {
|
|
44
|
-
const boxscore = (0, _alternateRenderers.useSelector)(_games.selectBoxscore);
|
|
45
|
-
const probables = (0, _alternateRenderers.useSelector)(_games.selectProbablePitchers);
|
|
46
|
-
const startTime = (0, _alternateRenderers.useSelector)(_games.selectStartTime);
|
|
47
|
-
const status = (0, _alternateRenderers.useSelector)(_games.selectGameStatus);
|
|
48
|
-
const teams = (0, _alternateRenderers.useSelector)(_games.selectTeams);
|
|
49
|
-
const venue = (0, _alternateRenderers.useSelector)(_games.selectVenue);
|
|
50
|
-
const away = formatTeam(teams, probables, boxscore, 'away');
|
|
51
|
-
const home = formatTeam(teams, probables, boxscore, 'home');
|
|
52
|
-
const formattedStart = status.startTimeTBD ? 'Start time TBD' : (0, _dateFns.format)(new Date(startTime), 'MMMM d, yyy p');
|
|
53
|
-
return /*#__PURE__*/_react.default.createElement("element", null, /*#__PURE__*/_react.default.createElement("element", {
|
|
54
|
-
height: "60%"
|
|
55
|
-
}, /*#__PURE__*/_react.default.createElement("box", {
|
|
56
|
-
content: away.join('\n'),
|
|
57
|
-
width: "33%-1",
|
|
58
|
-
top: "50%",
|
|
59
|
-
align: "center"
|
|
60
|
-
}), /*#__PURE__*/_react.default.createElement("box", {
|
|
61
|
-
content: `\nvs.\n\n${formattedStart}\n${venue.name}\n${venue.location.city}, ${venue.location.stateAbbrev}`,
|
|
62
|
-
width: "33%-1",
|
|
63
|
-
left: "33%",
|
|
64
|
-
top: "50%",
|
|
65
|
-
align: "center"
|
|
66
|
-
}), /*#__PURE__*/_react.default.createElement("box", {
|
|
67
|
-
content: home.join('\n'),
|
|
68
|
-
width: "34%",
|
|
69
|
-
top: "50%",
|
|
70
|
-
left: "66%",
|
|
71
|
-
align: "center"
|
|
72
|
-
})));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
var _default = PreviewGame;
|
|
76
|
-
exports.default = _default;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
|
-
var _alternateRenderers = require("react-redux/lib/alternate-renderers");
|
|
13
|
-
|
|
14
|
-
var _standings = require("../features/standings");
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
|
-
function formatHeaderRow(record) {
|
|
23
|
-
return record.division.nameShort.padEnd(15) + ' W' + ' L' + ' PCT' + ' GB' + ' WCGB' + ' L10' + ' STRK';
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function formatTeamRow(record) {
|
|
27
|
-
const lastTen = record.records.splitRecords.find(o => o.type === 'lastTen');
|
|
28
|
-
return record.team.teamName.padEnd(15) + record.wins.toString().padStart(5) + record.losses.toString().padStart(5) + record.winningPercentage.padStart(7) + record.gamesBack.padStart(6) + record.wildCardGamesBack.padStart(6) + `${lastTen.wins}-${lastTen.losses}`.padStart(6) + record.streak.streakCode.padStart(5);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function Division({
|
|
32
|
-
record,
|
|
33
|
-
top,
|
|
34
|
-
left,
|
|
35
|
-
width
|
|
36
|
-
}) {
|
|
37
|
-
return /*#__PURE__*/_react.default.createElement("box", {
|
|
38
|
-
top: top,
|
|
39
|
-
left: left,
|
|
40
|
-
height: 6,
|
|
41
|
-
width: width
|
|
42
|
-
}, /*#__PURE__*/_react.default.createElement("box", {
|
|
43
|
-
top: 0,
|
|
44
|
-
left: 0,
|
|
45
|
-
height: 1,
|
|
46
|
-
fg: "black",
|
|
47
|
-
bg: "white",
|
|
48
|
-
content: formatHeaderRow(record),
|
|
49
|
-
wrap: false
|
|
50
|
-
}), /*#__PURE__*/_react.default.createElement("box", {
|
|
51
|
-
top: 1,
|
|
52
|
-
left: 0,
|
|
53
|
-
height: 5,
|
|
54
|
-
content: record.teamRecords.map(formatTeamRow).join('\n'),
|
|
55
|
-
wrap: false
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
Division.propTypes = {
|
|
60
|
-
record: _propTypes.default.object,
|
|
61
|
-
top: _propTypes.default.number,
|
|
62
|
-
left: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
63
|
-
width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
function Standings() {
|
|
67
|
-
const dispatch = (0, _alternateRenderers.useDispatch)();
|
|
68
|
-
const standings = (0, _alternateRenderers.useSelector)(_standings.selectData);
|
|
69
|
-
(0, _react.useEffect)(() => dispatch((0, _standings.fetchStandings)()), []);
|
|
70
|
-
|
|
71
|
-
if (!standings) {
|
|
72
|
-
return /*#__PURE__*/_react.default.createElement("element", null);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return /*#__PURE__*/_react.default.createElement("element", null, standings.records.filter(record => record.league.id === 103).map((record, idx) => /*#__PURE__*/_react.default.createElement(Division, {
|
|
76
|
-
top: idx * 7,
|
|
77
|
-
left: 0,
|
|
78
|
-
width: "50%-1",
|
|
79
|
-
key: record.division.id,
|
|
80
|
-
record: record
|
|
81
|
-
})), standings.records.filter(record => record.league.id === 104).map((record, idx) => /*#__PURE__*/_react.default.createElement(Division, {
|
|
82
|
-
top: idx * 7,
|
|
83
|
-
left: "50%+1",
|
|
84
|
-
width: "50%-1",
|
|
85
|
-
key: record.division.id,
|
|
86
|
-
record: record
|
|
87
|
-
})));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
var _default = Standings;
|
|
91
|
-
exports.default = _default;
|
package/dist/features/games.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.setSelectedId = exports.selectVenue = exports.selectTeams = exports.selectStartTime = exports.selectSelectedId = exports.selectProbablePitchers = exports.selectLoading = exports.selectLineScore = exports.selectGameStatus = exports.selectGame = exports.selectFullUpdateRequired = exports.selectError = exports.selectDecisions = exports.selectCurrentPlay = exports.selectBoxscore = exports.selectAllPlays = exports.gamesSlice = exports.fetchGame = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
-
|
|
10
|
-
var _toolkit = require("@reduxjs/toolkit");
|
|
11
|
-
|
|
12
|
-
var _jsonPatch = _interopRequireDefault(require("json-patch"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
const initialState = {
|
|
17
|
-
loading: false,
|
|
18
|
-
fullUpdateRequired: false,
|
|
19
|
-
error: null,
|
|
20
|
-
selectedId: null,
|
|
21
|
-
games: {}
|
|
22
|
-
};
|
|
23
|
-
const fetchGame = (0, _toolkit.createAsyncThunk)('games/fetch', async ({
|
|
24
|
-
id,
|
|
25
|
-
start
|
|
26
|
-
}) => {
|
|
27
|
-
const diffParams = start ? `/diffPatch?startTimecode=${start}` : '';
|
|
28
|
-
const url = `https://statsapi.mlb.com/api/v1.1/game/${id}/feed/live${diffParams}`;
|
|
29
|
-
const response = await _axios.default.get(url);
|
|
30
|
-
return response.data;
|
|
31
|
-
});
|
|
32
|
-
exports.fetchGame = fetchGame;
|
|
33
|
-
const gamesSlice = (0, _toolkit.createSlice)({
|
|
34
|
-
name: 'games',
|
|
35
|
-
initialState,
|
|
36
|
-
reducers: {
|
|
37
|
-
setSelectedId(state, action) {
|
|
38
|
-
state.selectedId = action.payload;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
},
|
|
42
|
-
extraReducers: builder => {
|
|
43
|
-
builder.addCase(fetchGame.pending, state => {
|
|
44
|
-
state.loading = true;
|
|
45
|
-
});
|
|
46
|
-
builder.addCase(fetchGame.fulfilled, (state, action) => {
|
|
47
|
-
const id = state.selectedId;
|
|
48
|
-
let game = state.games[id];
|
|
49
|
-
let patchError = false;
|
|
50
|
-
|
|
51
|
-
if (Array.isArray(action.payload)) {
|
|
52
|
-
action.payload.forEach(obj => {
|
|
53
|
-
if (patchError) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
try {
|
|
58
|
-
_jsonPatch.default.apply(game || {}, obj.diff);
|
|
59
|
-
} catch (e) {
|
|
60
|
-
patchError = true;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
} else {
|
|
65
|
-
game = action.payload;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (patchError) {
|
|
69
|
-
state.fullUpdateRequired = true;
|
|
70
|
-
} else {
|
|
71
|
-
state.fullUpdateRequired = false;
|
|
72
|
-
state.error = null;
|
|
73
|
-
state.games[id] = game;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
state.loading = false;
|
|
77
|
-
});
|
|
78
|
-
builder.addCase(fetchGame.rejected, (state, action) => {
|
|
79
|
-
state.fullUpdateRequired = true;
|
|
80
|
-
state.loading = false;
|
|
81
|
-
state.error = action.error;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
exports.gamesSlice = gamesSlice;
|
|
86
|
-
const {
|
|
87
|
-
setSelectedId
|
|
88
|
-
} = gamesSlice.actions;
|
|
89
|
-
exports.setSelectedId = setSelectedId;
|
|
90
|
-
|
|
91
|
-
const gamesRoot = state => state.games;
|
|
92
|
-
|
|
93
|
-
const selectLoading = (0, _toolkit.createSelector)(gamesRoot, root => root.loading);
|
|
94
|
-
exports.selectLoading = selectLoading;
|
|
95
|
-
const selectError = (0, _toolkit.createSelector)(gamesRoot, root => root.error);
|
|
96
|
-
exports.selectError = selectError;
|
|
97
|
-
const selectFullUpdateRequired = (0, _toolkit.createSelector)(gamesRoot, root => root.fullUpdateRequired);
|
|
98
|
-
exports.selectFullUpdateRequired = selectFullUpdateRequired;
|
|
99
|
-
const selectSelectedId = (0, _toolkit.createSelector)(gamesRoot, root => root.selectedId);
|
|
100
|
-
exports.selectSelectedId = selectSelectedId;
|
|
101
|
-
const selectGame = (0, _toolkit.createSelector)([gamesRoot, selectSelectedId], (root, id) => root.games[id]);
|
|
102
|
-
exports.selectGame = selectGame;
|
|
103
|
-
const selectLiveData = (0, _toolkit.createSelector)(selectGame, game => game.liveData);
|
|
104
|
-
const selectPlays = (0, _toolkit.createSelector)(selectLiveData, data => data.plays);
|
|
105
|
-
const selectCurrentPlay = (0, _toolkit.createSelector)(selectPlays, plays => plays.currentPlay);
|
|
106
|
-
exports.selectCurrentPlay = selectCurrentPlay;
|
|
107
|
-
const selectAllPlays = (0, _toolkit.createSelector)(selectPlays, plays => plays.allPlays);
|
|
108
|
-
exports.selectAllPlays = selectAllPlays;
|
|
109
|
-
const selectBoxscore = (0, _toolkit.createSelector)(selectLiveData, data => {
|
|
110
|
-
var _data$boxscore;
|
|
111
|
-
|
|
112
|
-
return (_data$boxscore = data.boxscore) === null || _data$boxscore === void 0 ? void 0 : _data$boxscore.teams;
|
|
113
|
-
});
|
|
114
|
-
exports.selectBoxscore = selectBoxscore;
|
|
115
|
-
const selectLineScore = (0, _toolkit.createSelector)(selectLiveData, data => data.linescore);
|
|
116
|
-
exports.selectLineScore = selectLineScore;
|
|
117
|
-
const selectDecisions = (0, _toolkit.createSelector)(selectLiveData, data => data.decisions);
|
|
118
|
-
exports.selectDecisions = selectDecisions;
|
|
119
|
-
const selectGameData = (0, _toolkit.createSelector)(selectGame, game => game.gameData);
|
|
120
|
-
const selectGameStatus = (0, _toolkit.createSelector)(selectGameData, game => game.status);
|
|
121
|
-
exports.selectGameStatus = selectGameStatus;
|
|
122
|
-
const selectTeams = (0, _toolkit.createSelector)(selectGameData, gameData => gameData.teams);
|
|
123
|
-
exports.selectTeams = selectTeams;
|
|
124
|
-
const selectVenue = (0, _toolkit.createSelector)(selectGameData, gameData => gameData.venue);
|
|
125
|
-
exports.selectVenue = selectVenue;
|
|
126
|
-
const selectStartTime = (0, _toolkit.createSelector)(selectGameData, gameData => {
|
|
127
|
-
var _gameData$datetime;
|
|
128
|
-
|
|
129
|
-
return (_gameData$datetime = gameData.datetime) === null || _gameData$datetime === void 0 ? void 0 : _gameData$datetime.dateTime;
|
|
130
|
-
});
|
|
131
|
-
exports.selectStartTime = selectStartTime;
|
|
132
|
-
const selectProbablePitchers = (0, _toolkit.createSelector)(selectGameData, gameData => gameData.probablePitchers);
|
|
133
|
-
exports.selectProbablePitchers = selectProbablePitchers;
|
|
134
|
-
var _default = gamesSlice.reducer;
|
|
135
|
-
exports.default = _default;
|
package/dist/features/keys.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.removeKeyListener = exports.keysSlice = exports.default = exports.addKeyListener = void 0;
|
|
7
|
-
|
|
8
|
-
var _toolkit = require("@reduxjs/toolkit");
|
|
9
|
-
|
|
10
|
-
var _screen = _interopRequireDefault(require("../screen"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
const keysSlice = (0, _toolkit.createSlice)({
|
|
15
|
-
name: 'keys',
|
|
16
|
-
initialState: [{
|
|
17
|
-
key: 'Q',
|
|
18
|
-
label: 'Quit'
|
|
19
|
-
}],
|
|
20
|
-
reducers: {
|
|
21
|
-
addKeyListener: {
|
|
22
|
-
reducer: (state, action) => {
|
|
23
|
-
if (action.payload) {
|
|
24
|
-
state.push(action.payload);
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
prepare: (key, listener, help) => {
|
|
28
|
-
_screen.default.key(key, listener);
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
payload: help
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
removeKeyListener: {
|
|
36
|
-
reducer: (state, action) => {
|
|
37
|
-
if (action.payload) {
|
|
38
|
-
const idx = state.findIndex(item => item.key === action.payload.key);
|
|
39
|
-
|
|
40
|
-
if (idx >= 0) {
|
|
41
|
-
state.splice(idx, 1);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
prepare: (key, listener, help) => {
|
|
46
|
-
_screen.default.unkey(key, listener);
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
payload: help
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
exports.keysSlice = keysSlice;
|
|
56
|
-
const {
|
|
57
|
-
addKeyListener,
|
|
58
|
-
removeKeyListener
|
|
59
|
-
} = keysSlice.actions;
|
|
60
|
-
exports.removeKeyListener = removeKeyListener;
|
|
61
|
-
exports.addKeyListener = addKeyListener;
|
|
62
|
-
var _default = keysSlice.reducer;
|
|
63
|
-
exports.default = _default;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.selectLoading = exports.selectError = exports.selectData = exports.scheduleSlice = exports.fetchSchedule = exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
-
|
|
10
|
-
var _toolkit = require("@reduxjs/toolkit");
|
|
11
|
-
|
|
12
|
-
var _dateFns = require("date-fns");
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
const initialState = {
|
|
17
|
-
loading: false,
|
|
18
|
-
error: null,
|
|
19
|
-
data: null
|
|
20
|
-
};
|
|
21
|
-
const fetchSchedule = (0, _toolkit.createAsyncThunk)('schedule/fetch', async date => {
|
|
22
|
-
const dateStr = (0, _dateFns.format)(date, 'MM/dd/yyyy');
|
|
23
|
-
const response = await _axios.default.get(`http://statsapi.mlb.com/api/v1/schedule?sportId=1&hydrate=team,linescore&date=${dateStr}`);
|
|
24
|
-
return response.data;
|
|
25
|
-
});
|
|
26
|
-
exports.fetchSchedule = fetchSchedule;
|
|
27
|
-
const scheduleSlice = (0, _toolkit.createSlice)({
|
|
28
|
-
name: 'schedule',
|
|
29
|
-
initialState,
|
|
30
|
-
reducers: {},
|
|
31
|
-
extraReducers: builder => {
|
|
32
|
-
builder.addCase(fetchSchedule.pending, state => {
|
|
33
|
-
state.loading = true;
|
|
34
|
-
});
|
|
35
|
-
builder.addCase(fetchSchedule.fulfilled, (state, action) => {
|
|
36
|
-
state.loading = false;
|
|
37
|
-
state.data = action.payload;
|
|
38
|
-
state.error = null;
|
|
39
|
-
});
|
|
40
|
-
builder.addCase(fetchSchedule.rejected, (state, action) => {
|
|
41
|
-
state.loading = false;
|
|
42
|
-
state.data = null;
|
|
43
|
-
state.error = action.error;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
exports.scheduleSlice = scheduleSlice;
|
|
48
|
-
|
|
49
|
-
const scheduleSelector = state => state.schedule;
|
|
50
|
-
|
|
51
|
-
const selectLoading = (0, _toolkit.createSelector)(scheduleSelector, schedule => schedule.loading);
|
|
52
|
-
exports.selectLoading = selectLoading;
|
|
53
|
-
const selectError = (0, _toolkit.createSelector)(scheduleSelector, schedule => schedule.error);
|
|
54
|
-
exports.selectError = selectError;
|
|
55
|
-
const selectData = (0, _toolkit.createSelector)(scheduleSelector, schedule => schedule.data);
|
|
56
|
-
exports.selectData = selectData;
|
|
57
|
-
var _default = scheduleSlice.reducer;
|
|
58
|
-
exports.default = _default;
|