global.gitlist.ng.component('p3xGitlistCommitDiff', { template: require('./commit-diff.html'), bindings: { loopIndex: '@', }, controller: function ($scope, $timeout) { const $ctrl = this; $scope.diff = undefined; $scope.showNumber = (lineInfo) => { const first = lineInfo.line[0]; return first === ' ' || first === '@' || first === '-' || first === '+'; } let lines; let index = 0; const generateDiff = (diff) => { $scope.$apply(() => { if (diff.lines.length > 256) { lines = diff.lines; diff.lines = []; $scope.diff = diff; const addLine = () => { $timeout(() => { $scope.diff.lines.push(lines[index]) index++ if (index < lines.length - 1) { addLine(); } }) } addLine() } else { $scope.diff = diff; } }); } this.$onInit = () => { window.gitlist.generateDiff[this.loopIndex] = generateDiff; } }, })