UNPKG

@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
"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)); } };