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 -->

66 lines (65 loc) 2.81 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); const styles_1 = require("app/styles"); const logger_1 = require("app/utilities/logger"); const DirectoryTree_1 = require("app/components/DirectoryTree"); const hooks_1 = require("app/utilities/hooks"); const outerStyle = { _extends: 'flexRow', transition: 'all 1s ease', overflow: 'scroll', }; exports.DirectoryDifferences = (props) => { const [expandedNodes, setExpandedNodes] = react_1.useState([]); const prevModifiedFiles = hooks_1.usePrevious({ modifiedFiles: props.modifiedFiles }); react_1.useEffect(() => { if (didModifiedFilesChange(prevModifiedFiles)) { logger_1.debug('componentDidUpdate modifiedFiles changed'); } }); const { leftTree, rightTree } = props; return (react_1.default.createElement("div", { style: styles_1.style(outerStyle, props.style) }, react_1.default.createElement(DirectoryTree_1.DirectoryTree, { fileTree: leftTree, expandedNodes: expandedNodes, onExpandNode: onExpandNode, onFileClick: onFileClick }), react_1.default.createElement(DirectoryTree_1.DirectoryTree, { fileTree: rightTree, expandedNodes: expandedNodes, onExpandNode: onExpandNode, onFileClick: onFileClick }))); function didModifiedFilesChange(prevModifiedFiles) { const { modifiedFiles } = props; if (!modifiedFiles || !prevModifiedFiles) { return modifiedFiles !== prevModifiedFiles; } if (modifiedFiles.length !== prevModifiedFiles.length) { return true; } return !modifiedFiles.every((file, index) => { const prevFile = prevModifiedFiles[index]; const result = file.path === prevFile.path && file.delta === prevFile.delta && file.status === prevFile.status; return result; }); } function onFileClick(fullPath) { props.onFileClick(fullPath); } function onExpandNode(fullPath) { const currentIndex = expandedNodes.indexOf(fullPath); let newExpandedNodes; if (currentIndex === -1) { newExpandedNodes = expandedNodes.slice(0); newExpandedNodes.push(fullPath); } else { newExpandedNodes = expandedNodes .slice(0, currentIndex) .concat(expandedNodes.slice(currentIndex + 1)); } setExpandedNodes(newExpandedNodes); } };