Skip to content

Commit

Permalink
Add changes to version
Browse files Browse the repository at this point in the history
  • Loading branch information
pomber committed Mar 14, 2019
1 parent 76dc874 commit 708865f
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 50 deletions.
7 changes: 1 addition & 6 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,7 @@ function InnerApp({ gitProvider }) {
return <Error error={{ status: 404 }} gitProvider={gitProvider} />;
}

const commits = versions.map(v => v.commit);
const slideLines = versions.map(v => v.lines);

return (
<History commits={commits} slideLines={slideLines} loadMore={loadMore} />
);
return <History versions={versions} loadMore={loadMore} />;
}

function useVersionsLoader(gitProvider) {
Expand Down
23 changes: 23 additions & 0 deletions src/git-providers/differ.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,26 @@ export function getSlides(codes, language) {
.filter(line => line.middle || line.left || line.right);
});
}

export function getChanges(lines) {
const changes = [];
let currentChange = null;
let i = 0;
const isNewLine = i => !lines[i].left && lines[i].middle;
while (i < lines.length) {
if (isNewLine(i)) {
if (!currentChange) {
currentChange = { start: i };
}
} else {
if (currentChange) {
currentChange.end = i - 1;
changes.push(currentChange);
currentChange = null;
}
}
i++;
}

return changes;
}
8 changes: 6 additions & 2 deletions src/git-providers/versioner.worker.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getLanguage, loadLanguage } from "./language-detector";
import { getSlides } from "./differ";
import { getSlides, getChanges } from "./differ";

import github from "./github-commit-fetcher";
import gitlab from "./gitlab-commit-fetcher";
Expand All @@ -25,5 +25,9 @@ export async function getVersions(source, params) {

const codes = commits.map(commit => commit.content);
const slides = getSlides(codes, lang);
return commits.map((commit, i) => ({ commit, lines: slides[i] }));
return commits.map((commit, i) => ({
commit,
lines: slides[i],
changes: getChanges(slides[i])
}));
}
8 changes: 6 additions & 2 deletions src/git-providers/vscode-provider.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getLanguage, loadLanguage } from "./language-detector";
import { getSlides } from "./differ";
import { getSlides, getChanges } from "./differ";

const vscode = window.vscode;

Expand Down Expand Up @@ -43,7 +43,11 @@ async function getVersions(last) {

const codes = commits.map(commit => commit.content);
const slides = getSlides(codes, lang);
return commits.map((commit, i) => ({ commit, lines: slides[i] }));
return commits.map((commit, i) => ({
commit,
lines: slides[i],
changes: getChanges(slides[i])
}));
}

export default {
Expand Down
11 changes: 5 additions & 6 deletions src/history.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,13 @@ function CommitList({ commits, currentIndex, selectCommit }) {
);
}

export default function History({ commits, slideLines, loadMore }) {
return (
<Slides slideLines={slideLines} commits={commits} loadMore={loadMore} />
);
export default function History({ versions, loadMore }) {
return <Slides versions={versions} loadMore={loadMore} />;
}

function Slides({ commits, slideLines, loadMore }) {
function Slides({ versions, loadMore }) {
const [current, target, setTarget] = useSliderSpring(0);
const commits = versions.map(v => v.commit);
const setClampedTarget = newTarget => {
setTarget(Math.min(commits.length - 0.75, Math.max(-0.25, newTarget)));
if (newTarget >= commits.length - 5) {
Expand Down Expand Up @@ -140,7 +139,7 @@ function Slides({ commits, slideLines, loadMore }) {
onSwipedRight={prevSlide}
style={{ height: "100%" }}
>
<Slide time={index - current} lines={slideLines[index]} />
<Slide time={index - current} version={versions[index]} />
</Swipeable>
</React.Fragment>
);
Expand Down
2 changes: 1 addition & 1 deletion src/scroller.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export default function Scroller({
if (newTop === prevState.currentTop && !prevState.snap) {
return prevState;
}
console.log("manual scroll", newTop);
// console.log("manual scroll", newTop);
return {
...prevState,
snap: false,
Expand Down
35 changes: 2 additions & 33 deletions src/slide.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,39 +72,8 @@ function Slide({ lines, styles, changes }) {
);
}

let lastLines = null;
let lastChanges = null;
function getChanges(lines) {
if (lastLines === lines) {
return lastChanges;
}

const changes = [];
let currentChange = null;
let i = 0;
const isNewLine = i => !lines[i].left && lines[i].middle;
while (i < lines.length) {
if (isNewLine(i)) {
if (!currentChange) {
currentChange = { start: i };
}
} else {
if (currentChange) {
currentChange.end = i - 1;
changes.push(currentChange);
currentChange = null;
}
}
i++;
}

lastLines = lines;
console.log("changes", changes);
return changes;
}

export default function SlideWrapper({ time, lines }) {
export default function SlideWrapper({ time, version }) {
const { lines, changes } = version;
const styles = animation((time + 1) / 2, lines);
const changes = React.useMemo(() => getChanges(lines), [lines]);
return <Slide lines={lines} styles={styles} changes={changes} />;
}

0 comments on commit 708865f

Please sign in to comment.