@git-temporal/git-temporal-react
Version:
<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
50 lines (49 loc) • 2.78 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const react_redux_1 = require("react-redux");
const actions_1 = require("app/actions");
const ActionTypes_1 = require("app/actions/ActionTypes");
const authors_1 = require("app/selectors/authors");
const stateVars_1 = require("app/selectors/stateVars");
const CollapsibleGroup_1 = require("app/components/CollapsibleGroup");
const AuthorCard_1 = require("app/components/AuthorCard");
const ExtendingList_1 = require("app/components/ExtendingList");
const AuthorsActionMenu_1 = __importDefault(require("app/containers/AuthorsActionMenu"));
const COLLAPSIBLE_GROUP = ActionTypes_1.CollapsibleSidePanelGroups.AUTHORS;
exports.Authors = () => {
const highlightedCommitIds = react_redux_1.useSelector(stateVars_1.getHighlightedCommitIds);
const authorStats = react_redux_1.useSelector(authors_1.getAuthorsStats);
const openGroup = react_redux_1.useSelector(stateVars_1.getOpenSidePanelGroup);
const dispatch = react_redux_1.useDispatch();
const groupTitle = `${authorStats.authors.length} Authors`;
const isOpen = openGroup === COLLAPSIBLE_GROUP;
return (react_1.default.createElement(CollapsibleGroup_1.CollapsibleGroup, { title: groupTitle, onOpenToggle: handleOpenGroupToggle, isOpen: isOpen },
react_1.default.createElement(AuthorsActionMenu_1.default, null),
react_1.default.createElement(ExtendingList_1.ExtendingList, { rowCount: authorStats.authors.length, rowRenderer: renderRow })));
function handleOpenGroupToggle() {
if (!isOpen) {
dispatch(actions_1.setOpenSidePanelGroup(COLLAPSIBLE_GROUP));
}
}
function renderRow(index, key) {
const author = authorStats.authors[index];
const isHighlighted = highlightedCommitIds &&
highlightedCommitIds.length > 0 &&
author.commits
.map(c => {
return c.id;
})
.includes(highlightedCommitIds[0]);
return (react_1.default.createElement(AuthorCard_1.AuthorCard, { key: key, index: index, author: author, totalLinesAdded: authorStats.totalLinesAdded, totalLinesDeleted: authorStats.totalLinesDeleted, totalCommits: authorStats.totalCommits, maxImpact: authorStats.maxImpact, maxCommits: authorStats.maxCommits, isHighlighted: isHighlighted, onClick: onAuthorClick }));
}
function onAuthorClick(_evt, author) {
const commitIds = author.commits.map(commit => {
return commit.id;
});
dispatch(actions_1.highlightCommits(commitIds));
}
};