From d8f4176181dd67498ef82f910b7adf189f3003af Mon Sep 17 00:00:00 2001 From: Mathieu Dutour Date: Wed, 19 Jul 2017 20:04:22 -0700 Subject: [PATCH 01/64] different modes to show image diffs --- app/src/lib/app-state.ts | 10 + app/src/lib/dispatcher/app-store.ts | 21 ++ app/src/lib/dispatcher/dispatcher.ts | 5 + app/src/ui/app.tsx | 1 + app/src/ui/changes/index.tsx | 3 + app/src/ui/diff/deleted-image-diff.tsx | 6 +- app/src/ui/diff/index.tsx | 10 + app/src/ui/diff/modified-image-diff.tsx | 329 +++++++++++++++++- app/src/ui/diff/new-image-diff.tsx | 6 +- app/src/ui/diff/render-image.tsx | 10 +- app/src/ui/history/index.tsx | 7 +- app/src/ui/repository.tsx | 4 + app/src/ui/tab-bar.tsx | 16 +- app/styles/_mixins.scss | 1 + app/styles/_variables.scss | 2 +- app/styles/mixins/_checkboard-background.scss | 7 + app/styles/ui/_diff.scss | 131 ++++++- app/styles/ui/_tab-bar.scss | 39 ++- 18 files changed, 589 insertions(+), 19 deletions(-) create mode 100644 app/styles/mixins/_checkboard-background.scss diff --git a/app/src/lib/app-state.ts b/app/src/lib/app-state.ts index 627e2fb0268..c0e551003d5 100644 --- a/app/src/lib/app-state.ts +++ b/app/src/lib/app-state.ts @@ -26,6 +26,13 @@ export enum SelectionType { MissingRepository, } +export enum ImageDiffType { + TwoUp, + Swipe, + OnionSkin, + Difference, +} + export type PossibleSelections = | { type: SelectionType.Repository @@ -132,6 +139,9 @@ export interface IAppState { /** Whether we should show a confirmation dialog */ readonly confirmRepoRemoval: boolean + + /** What type of visual diff mode we should use to compare images */ + readonly imageDiffType: ImageDiffType } export enum PopupType { diff --git a/app/src/lib/dispatcher/app-store.ts b/app/src/lib/dispatcher/app-store.ts index 262e2f042db..54cb94548da 100644 --- a/app/src/lib/dispatcher/app-store.ts +++ b/app/src/lib/dispatcher/app-store.ts @@ -15,6 +15,7 @@ import { SelectionType, ICheckoutProgress, Progress, + ImageDiffType, } from '../app-state' import { Account } from '../../models/account' import { Repository } from '../../models/repository' @@ -88,6 +89,9 @@ const commitSummaryWidthConfigKey: string = 'commit-summary-width' const confirmRepoRemovalDefault: boolean = true const confirmRepoRemovalKey: string = 'confirmRepoRemoval' +const imageDiffTypeDefault: ImageDiffType = ImageDiffType.TwoUp +const imageDiffTypeKey: string = 'imageDiffType' + export class AppStore { private emitter = new Emitter() @@ -152,6 +156,7 @@ export class AppStore { private windowZoomFactor: number = 1 private isUpdateAvailableBannerVisible: boolean = false private confirmRepoRemoval: boolean = confirmRepoRemovalDefault + private imageDiffType: ImageDiffType = imageDiffTypeDefault private readonly statsStore: StatsStore @@ -452,6 +457,7 @@ export class AppStore { highlightAccessKeys: this.highlightAccessKeys, isUpdateAvailableBannerVisible: this.isUpdateAvailableBannerVisible, confirmRepoRemoval: this.confirmRepoRemoval, + imageDiffType: this.imageDiffType, } } @@ -858,6 +864,13 @@ export class AppStore { ? confirmRepoRemovalDefault : confirmRepoRemovalValue === '1' + const imageDiffTypeValue = localStorage.getItem(imageDiffTypeKey) + + this.imageDiffType = + imageDiffTypeValue === null + ? imageDiffTypeDefault + : parseInt(imageDiffTypeValue) + if (initialLoad) { // For the intitial load, synchronously emit the update so that the window // is drawn with the initial state before we show it. @@ -2108,6 +2121,14 @@ export class AppStore { return Promise.resolve() } + public _changeImageDiffType(type: ImageDiffType): Promise { + this.imageDiffType = type + localStorage.setItem(imageDiffTypeKey, JSON.stringify(this.imageDiffType)) + this.emitUpdate() + + return Promise.resolve() + } + public _setUpdateBannerVisibility(visibility: boolean) { this.isUpdateAvailableBannerVisible = visibility diff --git a/app/src/lib/dispatcher/dispatcher.ts b/app/src/lib/dispatcher/dispatcher.ts index 728c3fdff37..62d5071c108 100644 --- a/app/src/lib/dispatcher/dispatcher.ts +++ b/app/src/lib/dispatcher/dispatcher.ts @@ -13,6 +13,7 @@ import { PopupType, Foldout, FoldoutType, + ImageDiffType, } from '../app-state' import { Action } from './actions' import { AppStore } from './app-store' @@ -1132,4 +1133,8 @@ export class Dispatcher { this.postError(e) } } + + public changeImageDiffType(type: ImageDiffType): Promise { + return this.appStore._changeImageDiffType(type) + } } diff --git a/app/src/ui/app.tsx b/app/src/ui/app.tsx index d7745b53435..c41555e3374 100644 --- a/app/src/ui/app.tsx +++ b/app/src/ui/app.tsx @@ -1354,6 +1354,7 @@ export class App extends React.Component { commitSummaryWidth={this.state.commitSummaryWidth} issuesStore={this.props.appStore.issuesStore} gitHubUserStore={this.props.appStore.gitHubUserStore} + imageDiffType={this.state.imageDiffType} /> ) } else if (selectedState.type === SelectionType.CloningRepository) { diff --git a/app/src/ui/changes/index.tsx b/app/src/ui/changes/index.tsx index d4b785a2af9..b70ad98f915 100644 --- a/app/src/ui/changes/index.tsx +++ b/app/src/ui/changes/index.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import { Diff } from '../diff' import { ChangedFileDetails } from './changed-file-details' +import { ImageDiffType } from '../../lib/app-state' import { DiffSelection, IDiff } from '../../models/diff' import { WorkingDirectoryFileChange } from '../../models/status' import { Repository } from '../../models/repository' @@ -15,6 +16,7 @@ interface IChangesProps { readonly file: WorkingDirectoryFileChange readonly diff: IDiff readonly dispatcher: Dispatcher + readonly imageDiffType: ImageDiffType } export class Changes extends React.Component { @@ -42,6 +44,7 @@ export class Changes extends React.Component {
-
this image will be removed
- {renderImage(this.props.previous)} +
+
Deleted
+ {renderImage(this.props.previous)} +
) } diff --git a/app/src/ui/diff/index.tsx b/app/src/ui/diff/index.tsx index 70d935c4253..64a214ec149 100644 --- a/app/src/ui/diff/index.tsx +++ b/app/src/ui/diff/index.tsx @@ -11,6 +11,7 @@ import { Editor } from 'codemirror' import { CodeMirrorHost } from './code-mirror-host' import { Repository } from '../../models/repository' +import { ImageDiffType } from '../../lib/app-state' import { FileChange, WorkingDirectoryFileChange, @@ -72,6 +73,9 @@ interface IDiffProps { /** propagate errors up to the main application */ readonly dispatcher: Dispatcher + + /** */ + readonly imageDiffType: number } /** A component which renders a diff for a file. */ @@ -554,10 +558,16 @@ export class Diff extends React.Component { this.restoreScrollPosition(cm) } + private onChangeImageDiffType = (type: ImageDiffType) => { + this.props.dispatcher.changeImageDiffType(type) + } + private renderImage(imageDiff: IImageDiff) { if (imageDiff.current && imageDiff.previous) { return ( diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/modified-image-diff.tsx index e2fd5fb809e..072370f749c 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/modified-image-diff.tsx @@ -1,25 +1,342 @@ import * as React from 'react' +import { ImageDiffType } from '../../lib/app-state' import { Image } from '../../models/diff' import { renderImage } from './render-image' +import { TabBar, TabBarType } from '../tab-bar' interface IModifiedImageDiffProps { readonly previous: Image readonly current: Image + readonly diffType: ImageDiffType + readonly onChangeDiffType: (type: number) => void +} + +const SIZE_CONTROLS = 60 +const PADDING = 20 + +const getDimensions = ( + naturalHeight: number | null, + naturalWidth: number | null, + _containerWidth: number, + _containerHeight: number +) => { + // keep some padding + const containerWidth = _containerWidth - PADDING + const containerHeight = _containerHeight - PADDING - SIZE_CONTROLS + + // check wether we will need to scale the images or not + const heightRatio = + containerHeight < (naturalHeight || 0) + ? (naturalHeight || 0) / containerHeight + : 1 + const widthRatio = + containerWidth < (naturalWidth || 0) + ? (naturalWidth || 0) / containerWidth + : 1 + + // Use max to prevent scaling up the image + let ratio = Math.max(1, widthRatio) + if (widthRatio < heightRatio) { + // fit to height + ratio = Math.max(1, heightRatio) + } + + return { + width: (naturalWidth || 0) / ratio, + height: (naturalHeight || 0) / ratio, + } } /** A component which renders the changes to an image in the repository */ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, - {} + { + value: number + naturalWidthBefore: number | null + naturalHeightBefore: number | null + naturalWidthAfter: number | null + naturalHeightAfter: number | null + } > { + private _container: HTMLDivElement | null + + public constructor(props: IModifiedImageDiffProps) { + super(props) + this.state = { + value: 1, + naturalWidthBefore: null, + naturalHeightBefore: null, + naturalWidthAfter: null, + naturalHeightAfter: null, + } + } + + private handleValueChange = (e: React.ChangeEvent) => { + this.setState({ + value: parseFloat(e.currentTarget.value), + }) + } + + private handleImgLoadBefore = (e: React.SyntheticEvent) => { + const { naturalHeight, naturalWidth } = e.target as HTMLImageElement + this.setState({ + naturalHeightBefore: naturalHeight, + naturalWidthBefore: naturalWidth, + }) + } + + private handleImgLoadAfter = (e: React.SyntheticEvent) => { + const { naturalHeight, naturalWidth } = e.target as HTMLImageElement + this.setState({ + naturalHeightAfter: naturalHeight, + naturalWidthAfter: naturalWidth, + }) + } + + private getScaledDimensions() { + const { + naturalWidthBefore, + naturalHeightBefore, + naturalWidthAfter, + naturalHeightAfter, + } = this.state + + const widthContainer = + (this._container && this._container.getBoundingClientRect().width) || 0 + const heightContainer = + (this._container && this._container.getBoundingClientRect().height) || 0 + + let height = 0 + let width = 0 + + if (naturalHeightBefore && naturalHeightAfter) { + const before = getDimensions( + naturalHeightBefore, + naturalWidthBefore, + widthContainer, + heightContainer + ) + const after = getDimensions( + naturalHeightAfter, + naturalWidthAfter, + widthContainer, + heightContainer + ) + + height = Math.max(before.height, after.height) + width = Math.max(before.width, after.height) + } + + return { + height, + width, + heightContainer, + widthContainer, + } + } + + private onContainerRef = (c: HTMLDivElement | null) => { + this._container = c + } + public render() { + const { height, width, widthContainer } = this.getScaledDimensions() + return ( +
+ {this.props.diffType === ImageDiffType.TwoUp && + this.render2Up(height, width, widthContainer)} + {this.props.diffType === ImageDiffType.Swipe && + this.renderSwipe(height, width, widthContainer)} + {this.props.diffType === ImageDiffType.OnionSkin && + this.renderFade(height, width, widthContainer)} + {this.props.diffType === ImageDiffType.Difference && + this.renderDifference(height, width, widthContainer)} + + 2-up + Swipe + Onion Skin + Difference + +
+ ) + } + + private render2Up(height: number, width: number, widthContainer: number) { + const style = { + maxHeight: height + SIZE_CONTROLS, + maxWidth: Math.min((widthContainer - 20) / 2, width), + } + return ( +
+
+
Deleted
+ {renderImage(this.props.previous, { + onLoad: this.handleImgLoadBefore, + style, + })} +
+ W: {this.state.naturalWidthBefore}px + | H:{' '} + {this.state.naturalHeightBefore}px +
+
+
+
Added
+ {renderImage(this.props.current, { + onLoad: this.handleImgLoadAfter, + style, + })} +
+ W: {this.state.naturalWidthAfter}px + | H: {this.state.naturalHeightAfter}px +
+
+
+ ) + } + + private renderDifference( + height: number, + width: number, + widthContainer: number + ) { + return ( +
+
+ {renderImage(this.props.previous, { + onLoad: this.handleImgLoadBefore, + style: { + maxHeight: height, + maxWidth: width, + }, + })} +
+
+ {renderImage(this.props.current, { + onLoad: this.handleImgLoadAfter, + style: { + maxHeight: height, + maxWidth: width, + mixBlendMode: 'difference', + }, + })} +
+
+ ) + } + + private renderFade(height: number, width: number, widthContainer: number) { + const style = { + height, + width, + } + return ( +
+
+ {renderImage(this.props.previous, { + onLoad: this.handleImgLoadBefore, + style: { + maxHeight: height, + maxWidth: width, + }, + })} +
+
+ {renderImage(this.props.current, { + onLoad: this.handleImgLoadAfter, + style: { + maxHeight: height, + maxWidth: width, + }, + })} +
+ +
+ ) + } + + private renderSwipe(height: number, width: number, widthContainer: number) { + const style = { + height, + width, + } return ( -
-
this image
- {renderImage(this.props.previous)} -
will be replaced with
- {renderImage(this.props.current)} +
+
+ {renderImage(this.props.current, { + onLoad: this.handleImgLoadAfter, + style: { + maxHeight: height, + maxWidth: width, + }, + })} +
+
+
+ {renderImage(this.props.previous, { + onLoad: this.handleImgLoadBefore, + style: { + maxHeight: height, + maxWidth: width, + }, + })} +
+
+
) } diff --git a/app/src/ui/diff/new-image-diff.tsx b/app/src/ui/diff/new-image-diff.tsx index b5546bca75f..c8240d64a33 100644 --- a/app/src/ui/diff/new-image-diff.tsx +++ b/app/src/ui/diff/new-image-diff.tsx @@ -12,8 +12,10 @@ export class NewImageDiff extends React.Component { public render() { return (
-
this new image will be committed
- {renderImage(this.props.current)} +
+
Added
+ {renderImage(this.props.current)} +
) } diff --git a/app/src/ui/diff/render-image.tsx b/app/src/ui/diff/render-image.tsx index 4877c8a22eb..0ccc4c2a023 100644 --- a/app/src/ui/diff/render-image.tsx +++ b/app/src/ui/diff/render-image.tsx @@ -2,12 +2,18 @@ import * as React from 'react' import { Image } from '../../models/diff' -export function renderImage(image: Image | undefined) { +export function renderImage( + image: Image | undefined, + props?: { + style?: {} + onLoad?: (e: React.SyntheticEvent) => void + } +) { if (!image) { return null } const imageSource = `data:${image.mediaType};base64,${image.contents}` - return + return } diff --git a/app/src/ui/history/index.tsx b/app/src/ui/history/index.tsx index 8322b7c2f39..7a8a63bafb2 100644 --- a/app/src/ui/history/index.tsx +++ b/app/src/ui/history/index.tsx @@ -6,7 +6,10 @@ import { Repository } from '../../models/repository' import { FileChange } from '../../models/status' import { Commit } from '../../models/commit' import { Dispatcher } from '../../lib/dispatcher' -import { IHistoryState as IAppHistoryState } from '../../lib/app-state' +import { + IHistoryState as IAppHistoryState, + ImageDiffType, +} from '../../lib/app-state' import { ThrottledScheduler } from '../lib/throttled-scheduler' import { IGitHubUser } from '../../lib/dispatcher' import { Resizable } from '../resizable' @@ -24,6 +27,7 @@ interface IHistoryProps { readonly localCommitSHAs: ReadonlyArray readonly commitSummaryWidth: number readonly gitHubUsers: Map + readonly imageDiffType: ImageDiffType } interface IHistoryState { @@ -81,6 +85,7 @@ export class History extends React.Component { return ( { dispatcher={this.props.dispatcher} file={selectedFile} diff={diff} + imageDiffType={this.props.imageDiffType} /> ) } @@ -174,6 +177,7 @@ export class RepositoryView extends React.Component { localCommitSHAs={this.props.state.localCommitSHAs} commitSummaryWidth={this.props.commitSummaryWidth} gitHubUsers={this.props.state.gitHubUsers} + imageDiffType={this.props.imageDiffType} /> ) } else { diff --git a/app/src/ui/tab-bar.tsx b/app/src/ui/tab-bar.tsx index bf2e8fb4c01..1960a248337 100644 --- a/app/src/ui/tab-bar.tsx +++ b/app/src/ui/tab-bar.tsx @@ -1,12 +1,20 @@ import * as React from 'react' import * as classNames from 'classnames' +export enum TabBarType { + Tabs, + Switch, +} + interface ITabBarProps { /** The currently selected tab. */ readonly selectedIndex: number /** A function which is called when a tab is clicked on. */ readonly onTabClicked: (index: number) => void + + /** The type of TabBar controlling its style */ + readonly type?: TabBarType } /** @@ -19,7 +27,13 @@ export class TabBar extends React.Component { public render() { return ( -
+
{this.renderItems()}
) diff --git a/app/styles/_mixins.scss b/app/styles/_mixins.scss index 1d036d4a5e4..c1429a1b134 100644 --- a/app/styles/_mixins.scss +++ b/app/styles/_mixins.scss @@ -2,3 +2,4 @@ @import "mixins/ellipsis"; @import "mixins/octicon-status"; @import "mixins/textboxish"; +@import "mixins/checkboard-background"; diff --git a/app/styles/_variables.scss b/app/styles/_variables.scss index e987abbc9d2..574386e8079 100644 --- a/app/styles/_variables.scss +++ b/app/styles/_variables.scss @@ -2,7 +2,7 @@ // // This files contains CSS variables accessible to all selectors -// Primer colors, see https://github.com/primer/primer-support/blob/master/lib/variables/color-system.scss +// Primer colors, see https://github.com/primer/primer-css/blob/master/modules/primer-support/lib/variables/color-system.scss @import '~primer-support/lib/variables/color-system.scss'; :root { diff --git a/app/styles/mixins/_checkboard-background.scss b/app/styles/mixins/_checkboard-background.scss new file mode 100644 index 00000000000..0fbf63c032b --- /dev/null +++ b/app/styles/mixins/_checkboard-background.scss @@ -0,0 +1,7 @@ +/** + * Draw a checkboard in the background + * (useful to see the transparent part of an image) + */ +@mixin checkboard-background { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUAQMAAAC3R49OAAAABlBMVEX5+fn///8pDrwNAAAAFElEQVQI12NgsP/AQAz+f4CBGAwAJIIdTTn0+w0AAAAASUVORK5CYII=); +} diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 019328fd749..79f4b06e0a4 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -36,7 +36,7 @@ // Add a little bit of space to the left of code diff // `padding-left` here means mouse move events are not raised padding-left: var(--spacing-half); - align-self: center; + align-self: center; } svg.no-newline { @@ -180,7 +180,7 @@ color: var(--diff-hover-text-color); &:last-child { - border-color: var(--diff-hover-gutter-color); + border-color: var(--diff-hover-gutter-color); } } } @@ -228,7 +228,7 @@ min-width: 0; min-height: 0; object-fit: contain; - padding: 0 var(--spacing); + padding: 0; } // *************************************************************************************************************************** #diff a { @@ -240,3 +240,128 @@ #diff a:link { color: (orange); } + +.panel.image { + padding-top: 10px; + + .tab-bar { + width: 350px; + margin: 10px auto 0; + } + + .image-diff__before { + color: var(--color-deleted); + } + .image-diff__after { + color: var(--color-new); + } + + .image-diff__before, + .image-diff__after { + text-align: center; + + img { + @include checkboard-background; + border: 1px solid currentColor; + } + } + + .image-diff__header { + font-weight: var(--font-weight-semibold); + padding-bottom: 10px; + } + + .image-diff__footer { + color: var(--text-secondary-color); + .strong { + font-weight: var(--font-weight-semibold); + } + } +} + +.image-diff_inner { + + &--two-up { + display: flex; + justify-content: center; + + .image-diff__before { + margin-right: 7.5px; + } + .image-diff__after { + margin-left: 7.5px; + } + } + + &--difference { + position: relative; + + .image-diff__before, + .image-diff__after { + position: absolute; + top: 0; + left: 0; + img : { + border: 0; + background: transparent; + } + } + } + + &--fade { + @include checkboard-background; + margin: 0; + position: relative; + + .image-diff__before, + .image-diff__after { + position: absolute; + margin: 0; + + img { + border: 0; + background: transparent; + } + } + + .image-diff__before { + border: 1px solid var(--color-deleted); + } + .image-diff__after { + border: 1px solid var(--color-new); + } + } + + &--swipe { + margin: 0; + position: relative; + + .image-diff__before, + .image-diff__after { + @include checkboard-background; + position: absolute; + margin: 0; + + img { + border: 0; + background: transparent; + } + } + + .image-diff__before { + border: 1px solid var(--color-deleted); + right: 0; + } + .image-diff__after { + border: 1px solid var(--color-new); + } + + .image-diff--swiper { + border-left: 1px solid var(--text-secondary-color); + margin: 0; + overflow: hidden; + position: absolute; + right: 0; + } + } +} diff --git a/app/styles/ui/_tab-bar.scss b/app/styles/ui/_tab-bar.scss index 7809294e223..1c0404626d9 100644 --- a/app/styles/ui/_tab-bar.scss +++ b/app/styles/ui/_tab-bar.scss @@ -5,7 +5,7 @@ background: var(--tab-bar-background-color); - &-item { + &.tabs &-item { // Reset styles from global buttons border: none; box-shadow: none; @@ -52,4 +52,41 @@ margin-top: 1px; } } + + &.switch &-item { + // Reset styles from global buttons + cursor: pointer; + border: none; + box-shadow: none; + border-radius: 0; + color: var(--text-color); + background: var(--background-color); + font-family: var(--font-family-sans-serif); + font-size: var(--font-size); + + // Give each item equal space + flex: 1; + + // Center item contest horizontally and vertically + display: flex; + align-items: center; + justify-content: center; + + border-right: 1px solid var(--box-border-color); + + // This makes it so that we never render a double-width item border. + // It has the unintended consequence of making it impossible to have a tab + // bar with just one item but we can live with that. + &:last-child { + border-right: none; + } + + // We intentionally swap foreground and background here to create + // a more intense selected state. The tab bar is kind of a special snowflake + // in so far that it doesn't have an active selection state, just a selected + // one. + &.selected { + font-weight: var(--font-weight-semibold); + } + } } From 14ea27d0dd810cf16e3e4c4c62cc8859b5d1d5db Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 12:28:35 -0400 Subject: [PATCH 02/64] More :book: --- app/src/lib/app-state.ts | 8 ++++++++ app/src/lib/dispatcher/dispatcher.ts | 1 + app/src/ui/diff/index.tsx | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/lib/app-state.ts b/app/src/lib/app-state.ts index c0e551003d5..bb89ebb81d6 100644 --- a/app/src/lib/app-state.ts +++ b/app/src/lib/app-state.ts @@ -26,10 +26,18 @@ export enum SelectionType { MissingRepository, } +/** The image diff type. */ export enum ImageDiffType { + /** Show the old and new images side by side. */ TwoUp, + + /** Swipe between the old and new image. */ Swipe, + + /** Onion skin. */ OnionSkin, + + /** Highlight differences. */ Difference, } diff --git a/app/src/lib/dispatcher/dispatcher.ts b/app/src/lib/dispatcher/dispatcher.ts index cb203b68ca8..2c6e91ff34e 100644 --- a/app/src/lib/dispatcher/dispatcher.ts +++ b/app/src/lib/dispatcher/dispatcher.ts @@ -895,6 +895,7 @@ export class Dispatcher { } } + /** Change the current image diff type. */ public changeImageDiffType(type: ImageDiffType): Promise { return this.appStore._changeImageDiffType(type) } diff --git a/app/src/ui/diff/index.tsx b/app/src/ui/diff/index.tsx index 64a214ec149..610812dee10 100644 --- a/app/src/ui/diff/index.tsx +++ b/app/src/ui/diff/index.tsx @@ -74,8 +74,8 @@ interface IDiffProps { /** propagate errors up to the main application */ readonly dispatcher: Dispatcher - /** */ readonly imageDiffType: number + /** The type of image diff to display. */ } /** A component which renders a diff for a file. */ From e271e6691213c04f33382653e4ca27f0bcd24909 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 12:28:49 -0400 Subject: [PATCH 03/64] Put some types on these --- app/src/ui/diff/index.tsx | 2 +- app/src/ui/diff/modified-image-diff.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/ui/diff/index.tsx b/app/src/ui/diff/index.tsx index 610812dee10..0d0f45cbaf3 100644 --- a/app/src/ui/diff/index.tsx +++ b/app/src/ui/diff/index.tsx @@ -74,8 +74,8 @@ interface IDiffProps { /** propagate errors up to the main application */ readonly dispatcher: Dispatcher - readonly imageDiffType: number /** The type of image diff to display. */ + readonly imageDiffType: ImageDiffType } /** A component which renders a diff for a file. */ diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/modified-image-diff.tsx index 072370f749c..1fbbb2db53a 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/modified-image-diff.tsx @@ -9,7 +9,7 @@ interface IModifiedImageDiffProps { readonly previous: Image readonly current: Image readonly diffType: ImageDiffType - readonly onChangeDiffType: (type: number) => void + readonly onChangeDiffType: (type: ImageDiffType) => void } const SIZE_CONTROLS = 60 @@ -64,7 +64,7 @@ export class ModifiedImageDiff extends React.Component< public constructor(props: IModifiedImageDiffProps) { super(props) this.state = { - value: 1, + value: ImageDiffType.Swipe, naturalWidthBefore: null, naturalHeightBefore: null, naturalWidthAfter: null, From eca0660ba1df82b54a7a736e8a4fab77667dc862 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 12:28:56 -0400 Subject: [PATCH 04/64] Pull the state out into a named interface --- app/src/ui/diff/modified-image-diff.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/modified-image-diff.tsx index 1fbbb2db53a..8eabbf3491f 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/modified-image-diff.tsx @@ -12,6 +12,14 @@ interface IModifiedImageDiffProps { readonly onChangeDiffType: (type: ImageDiffType) => void } +interface IModifiedImageDiffState { + readonly value: ImageDiffType + readonly naturalWidthBefore: number | null + readonly naturalHeightBefore: number | null + readonly naturalWidthAfter: number | null + readonly naturalHeightAfter: number | null +} + const SIZE_CONTROLS = 60 const PADDING = 20 @@ -51,13 +59,7 @@ const getDimensions = ( /** A component which renders the changes to an image in the repository */ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, - { - value: number - naturalWidthBefore: number | null - naturalHeightBefore: number | null - naturalWidthAfter: number | null - naturalHeightAfter: number | null - } + IModifiedImageDiffState > { private _container: HTMLDivElement | null From 36057d94ab1235a6d040f4a16a2df3f137d8ee21 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 12:30:04 -0400 Subject: [PATCH 05/64] That's not right actually --- app/src/ui/diff/modified-image-diff.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/modified-image-diff.tsx index 8eabbf3491f..c894071833e 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/modified-image-diff.tsx @@ -13,7 +13,7 @@ interface IModifiedImageDiffProps { } interface IModifiedImageDiffState { - readonly value: ImageDiffType + readonly value: number readonly naturalWidthBefore: number | null readonly naturalHeightBefore: number | null readonly naturalWidthAfter: number | null @@ -66,7 +66,7 @@ export class ModifiedImageDiff extends React.Component< public constructor(props: IModifiedImageDiffProps) { super(props) this.state = { - value: ImageDiffType.Swipe, + value: 1, naturalWidthBefore: null, naturalHeightBefore: null, naturalWidthAfter: null, From 259ee1ccd641a5de81b9aa62399bb4b32a0367a1 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 13:54:00 -0400 Subject: [PATCH 06/64] Use currentTarget so we don't have to cast --- app/src/ui/diff/modified-image-diff.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/modified-image-diff.tsx index c894071833e..4088e2ee48c 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/modified-image-diff.tsx @@ -81,7 +81,7 @@ export class ModifiedImageDiff extends React.Component< } private handleImgLoadBefore = (e: React.SyntheticEvent) => { - const { naturalHeight, naturalWidth } = e.target as HTMLImageElement + const { naturalHeight, naturalWidth } = e.currentTarget this.setState({ naturalHeightBefore: naturalHeight, naturalWidthBefore: naturalWidth, @@ -89,7 +89,7 @@ export class ModifiedImageDiff extends React.Component< } private handleImgLoadAfter = (e: React.SyntheticEvent) => { - const { naturalHeight, naturalWidth } = e.target as HTMLImageElement + const { naturalHeight, naturalWidth } = e.currentTarget this.setState({ naturalHeightAfter: naturalHeight, naturalWidthAfter: naturalWidth, From 3538f1b222dd6ac82a26f8e595e071a26da718ce Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 14:39:40 -0400 Subject: [PATCH 07/64] Move all the image diff components into their own directory --- app/src/ui/diff/{ => image-diffs}/deleted-image-diff.tsx | 2 +- app/src/ui/diff/image-diffs/index.ts | 3 +++ app/src/ui/diff/{ => image-diffs}/modified-image-diff.tsx | 6 +++--- app/src/ui/diff/{ => image-diffs}/new-image-diff.tsx | 2 +- app/src/ui/diff/{ => image-diffs}/render-image.tsx | 2 +- app/src/ui/diff/index.tsx | 8 +++++--- 6 files changed, 14 insertions(+), 9 deletions(-) rename app/src/ui/diff/{ => image-diffs}/deleted-image-diff.tsx (92%) create mode 100644 app/src/ui/diff/image-diffs/index.ts rename app/src/ui/diff/{ => image-diffs}/modified-image-diff.tsx (98%) rename app/src/ui/diff/{ => image-diffs}/new-image-diff.tsx (92%) rename app/src/ui/diff/{ => image-diffs}/render-image.tsx (88%) diff --git a/app/src/ui/diff/deleted-image-diff.tsx b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx similarity index 92% rename from app/src/ui/diff/deleted-image-diff.tsx rename to app/src/ui/diff/image-diffs/deleted-image-diff.tsx index 939cefac037..4bbaf3d5995 100644 --- a/app/src/ui/diff/deleted-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx @@ -1,6 +1,6 @@ import * as React from 'react' -import { Image } from '../../models/diff' +import { Image } from '../../../models/diff' import { renderImage } from './render-image' interface IDeletedImageDiffProps { diff --git a/app/src/ui/diff/image-diffs/index.ts b/app/src/ui/diff/image-diffs/index.ts new file mode 100644 index 00000000000..019fef25e68 --- /dev/null +++ b/app/src/ui/diff/image-diffs/index.ts @@ -0,0 +1,3 @@ +export { ModifiedImageDiff } from './modified-image-diff' +export { NewImageDiff } from './new-image-diff' +export { DeletedImageDiff } from './deleted-image-diff' diff --git a/app/src/ui/diff/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx similarity index 98% rename from app/src/ui/diff/modified-image-diff.tsx rename to app/src/ui/diff/image-diffs/modified-image-diff.tsx index 4088e2ee48c..be0abe87b46 100644 --- a/app/src/ui/diff/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -1,9 +1,9 @@ import * as React from 'react' -import { ImageDiffType } from '../../lib/app-state' -import { Image } from '../../models/diff' +import { ImageDiffType } from '../../../lib/app-state' +import { Image } from '../../../models/diff' import { renderImage } from './render-image' -import { TabBar, TabBarType } from '../tab-bar' +import { TabBar, TabBarType } from '../../tab-bar' interface IModifiedImageDiffProps { readonly previous: Image diff --git a/app/src/ui/diff/new-image-diff.tsx b/app/src/ui/diff/image-diffs/new-image-diff.tsx similarity index 92% rename from app/src/ui/diff/new-image-diff.tsx rename to app/src/ui/diff/image-diffs/new-image-diff.tsx index c8240d64a33..b73803b2cd6 100644 --- a/app/src/ui/diff/new-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/new-image-diff.tsx @@ -1,6 +1,6 @@ import * as React from 'react' -import { Image } from '../../models/diff' +import { Image } from '../../../models/diff' import { renderImage } from './render-image' interface INewImageDiffProps { diff --git a/app/src/ui/diff/render-image.tsx b/app/src/ui/diff/image-diffs/render-image.tsx similarity index 88% rename from app/src/ui/diff/render-image.tsx rename to app/src/ui/diff/image-diffs/render-image.tsx index 0ccc4c2a023..b7787532d18 100644 --- a/app/src/ui/diff/render-image.tsx +++ b/app/src/ui/diff/image-diffs/render-image.tsx @@ -1,6 +1,6 @@ import * as React from 'react' -import { Image } from '../../models/diff' +import { Image } from '../../../models/diff' export function renderImage( image: Image | undefined, diff --git a/app/src/ui/diff/index.tsx b/app/src/ui/diff/index.tsx index 0d0f45cbaf3..acb63cbf449 100644 --- a/app/src/ui/diff/index.tsx +++ b/app/src/ui/diff/index.tsx @@ -2,9 +2,11 @@ import * as React from 'react' import * as ReactDOM from 'react-dom' import { Disposable } from 'event-kit' -import { NewImageDiff } from './new-image-diff' -import { ModifiedImageDiff } from './modified-image-diff' -import { DeletedImageDiff } from './deleted-image-diff' +import { + NewImageDiff, + ModifiedImageDiff, + DeletedImageDiff, +} from './image-diffs' import { BinaryFile } from './binary-file' import { Editor } from 'codemirror' From ec0ff49a32e278fb4621daf15bd16fcc408d1427 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 15:01:43 -0400 Subject: [PATCH 08/64] :book: --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index be0abe87b46..d9bc97a6bdb 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -13,6 +13,10 @@ interface IModifiedImageDiffProps { } interface IModifiedImageDiffState { + /** + * The current value used as a parameter for whatever image diff mode is + * active. For example, for onion skin diffs, this is the alpha value. + */ readonly value: number readonly naturalWidthBefore: number | null readonly naturalHeightBefore: number | null From 8297a7e027617da3768b72614a48d20e757b0801 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 1 Aug 2017 16:58:11 -0400 Subject: [PATCH 09/64] Test --- app/static/common/default-avatar.png | Bin 43146 -> 194647 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/static/common/default-avatar.png b/app/static/common/default-avatar.png index a603c4de9e0d6a71c4b371fb4bf7219441d2ada1..f6d6ebde1ab666bdbb960ff0da6ec0039fbdc7dc 100644 GIT binary patch literal 194647 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 Date: Tue, 1 Aug 2017 17:35:38 -0400 Subject: [PATCH 10/64] Treat width/height as a pair with its own type --- .../diff/image-diffs/modified-image-diff.tsx | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index d9bc97a6bdb..5f352077168 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -12,16 +12,20 @@ interface IModifiedImageDiffProps { readonly onChangeDiffType: (type: ImageDiffType) => void } +interface IImageSize { + readonly width: number + readonly height: number +} + interface IModifiedImageDiffState { /** * The current value used as a parameter for whatever image diff mode is * active. For example, for onion skin diffs, this is the alpha value. */ readonly value: number - readonly naturalWidthBefore: number | null - readonly naturalHeightBefore: number | null - readonly naturalWidthAfter: number | null - readonly naturalHeightAfter: number | null + + readonly naturalSizeBefore: IImageSize | null + readonly naturalSizeAfter: IImageSize | null } const SIZE_CONTROLS = 60 @@ -71,10 +75,8 @@ export class ModifiedImageDiff extends React.Component< super(props) this.state = { value: 1, - naturalWidthBefore: null, - naturalHeightBefore: null, - naturalWidthAfter: null, - naturalHeightAfter: null, + naturalSizeBefore: null, + naturalSizeAfter: null, } } @@ -85,28 +87,23 @@ export class ModifiedImageDiff extends React.Component< } private handleImgLoadBefore = (e: React.SyntheticEvent) => { - const { naturalHeight, naturalWidth } = e.currentTarget - this.setState({ - naturalHeightBefore: naturalHeight, - naturalWidthBefore: naturalWidth, - }) + const size = { + width: e.currentTarget.naturalWidth, + height: e.currentTarget.naturalHeight, + } + this.setState({ naturalSizeBefore: size }) } private handleImgLoadAfter = (e: React.SyntheticEvent) => { - const { naturalHeight, naturalWidth } = e.currentTarget - this.setState({ - naturalHeightAfter: naturalHeight, - naturalWidthAfter: naturalWidth, - }) + const size = { + width: e.currentTarget.naturalWidth, + height: e.currentTarget.naturalHeight, + } + this.setState({ naturalSizeAfter: size }) } private getScaledDimensions() { - const { - naturalWidthBefore, - naturalHeightBefore, - naturalWidthAfter, - naturalHeightAfter, - } = this.state + const { naturalSizeBefore, naturalSizeAfter } = this.state const widthContainer = (this._container && this._container.getBoundingClientRect().width) || 0 @@ -116,16 +113,16 @@ export class ModifiedImageDiff extends React.Component< let height = 0 let width = 0 - if (naturalHeightBefore && naturalHeightAfter) { + if (naturalSizeBefore && naturalSizeAfter) { const before = getDimensions( - naturalHeightBefore, - naturalWidthBefore, + naturalSizeBefore.height, + naturalSizeBefore.width, widthContainer, heightContainer ) const after = getDimensions( - naturalHeightAfter, - naturalWidthAfter, + naturalSizeAfter.height, + naturalSizeAfter.width, widthContainer, heightContainer ) @@ -186,9 +183,10 @@ export class ModifiedImageDiff extends React.Component< style, })}

- W: {this.state.naturalWidthBefore}px - | H:{' '} - {this.state.naturalHeightBefore}px + W:{' '} + {this.state.naturalSizeBefore!.width}px |{' '} + H:{' '} + {this.state.naturalSizeBefore!.height}px
@@ -198,8 +196,10 @@ export class ModifiedImageDiff extends React.Component< style, })}
- W: {this.state.naturalWidthAfter}px - | H: {this.state.naturalHeightAfter}px + W:{' '} + {this.state.naturalSizeAfter!.width}px |{' '} + H:{' '} + {this.state.naturalSizeAfter!.height}px
From 060d15b56588bb476659875ae70e0b8ca54495f9 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 11:50:47 -0400 Subject: [PATCH 11/64] Rename these to fit our prop names --- .../diff/image-diffs/modified-image-diff.tsx | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 5f352077168..15ccbff076a 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -24,8 +24,8 @@ interface IModifiedImageDiffState { */ readonly value: number - readonly naturalSizeBefore: IImageSize | null - readonly naturalSizeAfter: IImageSize | null + readonly previousImageSize: IImageSize | null + readonly currentImageSize: IImageSize | null } const SIZE_CONTROLS = 60 @@ -75,8 +75,8 @@ export class ModifiedImageDiff extends React.Component< super(props) this.state = { value: 1, - naturalSizeBefore: null, - naturalSizeAfter: null, + previousImageSize: null, + currentImageSize: null, } } @@ -91,7 +91,7 @@ export class ModifiedImageDiff extends React.Component< width: e.currentTarget.naturalWidth, height: e.currentTarget.naturalHeight, } - this.setState({ naturalSizeBefore: size }) + this.setState({ previousImageSize: size }) } private handleImgLoadAfter = (e: React.SyntheticEvent) => { @@ -99,11 +99,11 @@ export class ModifiedImageDiff extends React.Component< width: e.currentTarget.naturalWidth, height: e.currentTarget.naturalHeight, } - this.setState({ naturalSizeAfter: size }) + this.setState({ currentImageSize: size }) } private getScaledDimensions() { - const { naturalSizeBefore, naturalSizeAfter } = this.state + const { previousImageSize, currentImageSize } = this.state const widthContainer = (this._container && this._container.getBoundingClientRect().width) || 0 @@ -113,16 +113,16 @@ export class ModifiedImageDiff extends React.Component< let height = 0 let width = 0 - if (naturalSizeBefore && naturalSizeAfter) { + if (previousImageSize && currentImageSize) { const before = getDimensions( - naturalSizeBefore.height, - naturalSizeBefore.width, + previousImageSize.height, + previousImageSize.width, widthContainer, heightContainer ) const after = getDimensions( - naturalSizeAfter.height, - naturalSizeAfter.width, + currentImageSize.height, + currentImageSize.width, widthContainer, heightContainer ) @@ -184,9 +184,9 @@ export class ModifiedImageDiff extends React.Component< })}
W:{' '} - {this.state.naturalSizeBefore!.width}px |{' '} + {this.state.previousImageSize!.width}px |{' '} H:{' '} - {this.state.naturalSizeBefore!.height}px + {this.state.previousImageSize!.height}px
@@ -197,9 +197,9 @@ export class ModifiedImageDiff extends React.Component< })}
W:{' '} - {this.state.naturalSizeAfter!.width}px |{' '} + {this.state.currentImageSize!.width}px |{' '} H:{' '} - {this.state.naturalSizeAfter!.height}px + {this.state.currentImageSize!.height}px
From 11470959cf164c4f1356dbff4f8be62069496923 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 11:53:31 -0400 Subject: [PATCH 12/64] Standardize more names --- .../diff/image-diffs/modified-image-diff.tsx | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 15ccbff076a..d798113f9c2 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -24,7 +24,10 @@ interface IModifiedImageDiffState { */ readonly value: number + /** The size of the previous image. */ readonly previousImageSize: IImageSize | null + + /** The size of the current image. */ readonly currentImageSize: IImageSize | null } @@ -80,13 +83,12 @@ export class ModifiedImageDiff extends React.Component< } } - private handleValueChange = (e: React.ChangeEvent) => { - this.setState({ - value: parseFloat(e.currentTarget.value), - }) + private onValueChange = (e: React.ChangeEvent) => { + const value = parseFloat(e.currentTarget.value) + this.setState({ value }) } - private handleImgLoadBefore = (e: React.SyntheticEvent) => { + private onPreviousImageLoad = (e: React.SyntheticEvent) => { const size = { width: e.currentTarget.naturalWidth, height: e.currentTarget.naturalHeight, @@ -94,7 +96,7 @@ export class ModifiedImageDiff extends React.Component< this.setState({ previousImageSize: size }) } - private handleImgLoadAfter = (e: React.SyntheticEvent) => { + private onCurrentImageLoad = (e: React.SyntheticEvent) => { const size = { width: e.currentTarget.naturalWidth, height: e.currentTarget.naturalHeight, @@ -179,7 +181,7 @@ export class ModifiedImageDiff extends React.Component<
Deleted
{renderImage(this.props.previous, { - onLoad: this.handleImgLoadBefore, + onLoad: this.onPreviousImageLoad, style, })}
@@ -192,7 +194,7 @@ export class ModifiedImageDiff extends React.Component<
Added
{renderImage(this.props.current, { - onLoad: this.handleImgLoadAfter, + onLoad: this.onCurrentImageLoad, style, })}
@@ -222,7 +224,7 @@ export class ModifiedImageDiff extends React.Component< >
{renderImage(this.props.previous, { - onLoad: this.handleImgLoadBefore, + onLoad: this.onPreviousImageLoad, style: { maxHeight: height, maxWidth: width, @@ -231,7 +233,7 @@ export class ModifiedImageDiff extends React.Component<
{renderImage(this.props.current, { - onLoad: this.handleImgLoadAfter, + onLoad: this.onCurrentImageLoad, style: { maxHeight: height, maxWidth: width, @@ -259,7 +261,7 @@ export class ModifiedImageDiff extends React.Component< >
{renderImage(this.props.previous, { - onLoad: this.handleImgLoadBefore, + onLoad: this.onPreviousImageLoad, style: { maxHeight: height, maxWidth: width, @@ -274,7 +276,7 @@ export class ModifiedImageDiff extends React.Component< }} > {renderImage(this.props.current, { - onLoad: this.handleImgLoadAfter, + onLoad: this.onCurrentImageLoad, style: { maxHeight: height, maxWidth: width, @@ -288,7 +290,7 @@ export class ModifiedImageDiff extends React.Component< min={0} value={this.state.value} step={0.001} - onChange={this.handleValueChange} + onChange={this.onValueChange} />
) @@ -310,7 +312,7 @@ export class ModifiedImageDiff extends React.Component< >
{renderImage(this.props.current, { - onLoad: this.handleImgLoadAfter, + onLoad: this.onCurrentImageLoad, style: { maxHeight: height, maxWidth: width, @@ -326,7 +328,7 @@ export class ModifiedImageDiff extends React.Component< >
{renderImage(this.props.previous, { - onLoad: this.handleImgLoadBefore, + onLoad: this.onPreviousImageLoad, style: { maxHeight: height, maxWidth: width, @@ -341,7 +343,7 @@ export class ModifiedImageDiff extends React.Component< min={0} value={this.state.value} step={0.001} - onChange={this.handleValueChange} + onChange={this.onValueChange} />
) From d25e410f9030f102d3830c67859c22f7b5ba5cb6 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 12:00:05 -0400 Subject: [PATCH 13/64] Don't accept nulls, rewrite as a function, use the types --- .../diff/image-diffs/modified-image-diff.tsx | 63 +++++++------------ 1 file changed, 24 insertions(+), 39 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index d798113f9c2..13e5d441b3a 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -34,25 +34,19 @@ interface IModifiedImageDiffState { const SIZE_CONTROLS = 60 const PADDING = 20 -const getDimensions = ( - naturalHeight: number | null, - naturalWidth: number | null, - _containerWidth: number, - _containerHeight: number -) => { +function getFittingSize( + imageSize: IImageSize, + containerSize: IImageSize +): IImageSize { // keep some padding - const containerWidth = _containerWidth - PADDING - const containerHeight = _containerHeight - PADDING - SIZE_CONTROLS + const containerWidth = containerSize.width - PADDING + const containerHeight = containerSize.height - PADDING - SIZE_CONTROLS // check wether we will need to scale the images or not const heightRatio = - containerHeight < (naturalHeight || 0) - ? (naturalHeight || 0) / containerHeight - : 1 + containerHeight < imageSize.height ? imageSize.height / containerHeight : 1 const widthRatio = - containerWidth < (naturalWidth || 0) - ? (naturalWidth || 0) / containerWidth - : 1 + containerWidth < imageSize.width ? imageSize.width / containerWidth : 1 // Use max to prevent scaling up the image let ratio = Math.max(1, widthRatio) @@ -62,8 +56,8 @@ const getDimensions = ( } return { - width: (naturalWidth || 0) / ratio, - height: (naturalHeight || 0) / ratio, + width: imageSize.width / ratio, + height: imageSize.height / ratio, } } @@ -107,37 +101,28 @@ export class ModifiedImageDiff extends React.Component< private getScaledDimensions() { const { previousImageSize, currentImageSize } = this.state - const widthContainer = + const containerWidth = (this._container && this._container.getBoundingClientRect().width) || 0 - const heightContainer = + const containerHeight = (this._container && this._container.getBoundingClientRect().height) || 0 + const containerSize = { width: containerWidth, height: containerHeight } let height = 0 let width = 0 if (previousImageSize && currentImageSize) { - const before = getDimensions( - previousImageSize.height, - previousImageSize.width, - widthContainer, - heightContainer - ) - const after = getDimensions( - currentImageSize.height, - currentImageSize.width, - widthContainer, - heightContainer - ) + const previousSize = getFittingSize(previousImageSize, containerSize) + const currentSize = getFittingSize(currentImageSize, containerSize) - height = Math.max(before.height, after.height) - width = Math.max(before.width, after.height) + height = Math.max(previousSize.height, currentSize.height) + width = Math.max(previousSize.width, currentSize.height) } return { height, width, - heightContainer, - widthContainer, + containerHeight, + containerWidth, } } @@ -146,17 +131,17 @@ export class ModifiedImageDiff extends React.Component< } public render() { - const { height, width, widthContainer } = this.getScaledDimensions() + const { height, width, containerWidth } = this.getScaledDimensions() return (
{this.props.diffType === ImageDiffType.TwoUp && - this.render2Up(height, width, widthContainer)} + this.render2Up(height, width, containerWidth)} {this.props.diffType === ImageDiffType.Swipe && - this.renderSwipe(height, width, widthContainer)} + this.renderSwipe(height, width, containerWidth)} {this.props.diffType === ImageDiffType.OnionSkin && - this.renderFade(height, width, widthContainer)} + this.renderFade(height, width, containerWidth)} {this.props.diffType === ImageDiffType.Difference && - this.renderDifference(height, width, widthContainer)} + this.renderDifference(height, width, containerWidth)} Date: Wed, 2 Aug 2017 12:58:52 -0400 Subject: [PATCH 14/64] Split these out into their own type --- app/src/ui/diff/image-diffs/render-image.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/ui/diff/image-diffs/render-image.tsx b/app/src/ui/diff/image-diffs/render-image.tsx index b7787532d18..5ce46d2b78d 100644 --- a/app/src/ui/diff/image-diffs/render-image.tsx +++ b/app/src/ui/diff/image-diffs/render-image.tsx @@ -2,12 +2,14 @@ import * as React from 'react' import { Image } from '../../../models/diff' +interface IRenderImageOptions { + readonly style?: {} + readonly onLoad?: (e: React.SyntheticEvent) => void +} + export function renderImage( image: Image | undefined, - props?: { - style?: {} - onLoad?: (e: React.SyntheticEvent) => void - } + options?: IRenderImageOptions ) { if (!image) { return null @@ -15,5 +17,5 @@ export function renderImage( const imageSource = `data:${image.mediaType};base64,${image.contents}` - return + return } From f41847a54e0021b29a0875f01cfcd53eaa948a49 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 13:00:11 -0400 Subject: [PATCH 15/64] Do some more standardization --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 13e5d441b3a..a1c6040d8be 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -66,7 +66,7 @@ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, IModifiedImageDiffState > { - private _container: HTMLDivElement | null + private container: HTMLDivElement | null public constructor(props: IModifiedImageDiffProps) { super(props) @@ -102,9 +102,9 @@ export class ModifiedImageDiff extends React.Component< const { previousImageSize, currentImageSize } = this.state const containerWidth = - (this._container && this._container.getBoundingClientRect().width) || 0 + (this.container && this.container.getBoundingClientRect().width) || 0 const containerHeight = - (this._container && this._container.getBoundingClientRect().height) || 0 + (this.container && this.container.getBoundingClientRect().height) || 0 const containerSize = { width: containerWidth, height: containerHeight } let height = 0 @@ -127,7 +127,7 @@ export class ModifiedImageDiff extends React.Component< } private onContainerRef = (c: HTMLDivElement | null) => { - this._container = c + this.container = c } public render() { From ba652014108d584cd451554ccd032122f47e7ac5 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 14:36:13 -0400 Subject: [PATCH 16/64] Split the diff types into their own components --- .../ui/diff/image-diffs/difference-blend.tsx | 64 +++++ .../diff/image-diffs/modified-image-diff.tsx | 231 ++++-------------- app/src/ui/diff/image-diffs/onion-skin.tsx | 101 ++++++++ app/src/ui/diff/image-diffs/swipe.tsx | 98 ++++++++ app/src/ui/diff/image-diffs/two-up.tsx | 64 +++++ app/static/common/default-avatar.png | Bin 194647 -> 43146 bytes 6 files changed, 381 insertions(+), 177 deletions(-) create mode 100644 app/src/ui/diff/image-diffs/difference-blend.tsx create mode 100644 app/src/ui/diff/image-diffs/onion-skin.tsx create mode 100644 app/src/ui/diff/image-diffs/swipe.tsx create mode 100644 app/src/ui/diff/image-diffs/two-up.tsx diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx new file mode 100644 index 00000000000..5519ba7bf2b --- /dev/null +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -0,0 +1,64 @@ +import * as React from 'react' +import { renderImage } from './render-image' +import { IImageSize, PADDING } from './modified-image-diff' +import { Image } from '../../../models/diff' + +interface IDifferenceBlendProps { + readonly maxSize: IImageSize + readonly containerWidth: number + + readonly previous: Image + readonly current: Image + + readonly onPreviousImageLoad: (img: HTMLImageElement) => void + readonly onCurrentImageLoad: (img: HTMLImageElement) => void +} + +export class DifferenceBlend extends React.Component< + IDifferenceBlendProps, + {} +> { + public render() { + return ( +
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + mixBlendMode: 'difference', + }, + })} +
+
+ ) + } + + private onPreviousImageLoad = (e: React.SyntheticEvent) => { + this.props.onPreviousImageLoad(e.currentTarget) + } + + private onCurrentImageLoad = (e: React.SyntheticEvent) => { + this.props.onCurrentImageLoad(e.currentTarget) + } +} diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index a1c6040d8be..a9633a3f595 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -2,8 +2,11 @@ import * as React from 'react' import { ImageDiffType } from '../../../lib/app-state' import { Image } from '../../../models/diff' -import { renderImage } from './render-image' import { TabBar, TabBarType } from '../../tab-bar' +import { TwoUp } from './two-up' +import { DifferenceBlend } from './difference-blend' +import { OnionSkin } from './onion-skin' +import { Swipe } from './swipe' interface IModifiedImageDiffProps { readonly previous: Image @@ -12,18 +15,12 @@ interface IModifiedImageDiffProps { readonly onChangeDiffType: (type: ImageDiffType) => void } -interface IImageSize { +export interface IImageSize { readonly width: number readonly height: number } interface IModifiedImageDiffState { - /** - * The current value used as a parameter for whatever image diff mode is - * active. For example, for onion skin diffs, this is the alpha value. - */ - readonly value: number - /** The size of the previous image. */ readonly previousImageSize: IImageSize | null @@ -32,7 +29,7 @@ interface IModifiedImageDiffState { } const SIZE_CONTROLS = 60 -const PADDING = 20 +export const PADDING = 20 function getFittingSize( imageSize: IImageSize, @@ -71,29 +68,23 @@ export class ModifiedImageDiff extends React.Component< public constructor(props: IModifiedImageDiffProps) { super(props) this.state = { - value: 1, previousImageSize: null, currentImageSize: null, } } - private onValueChange = (e: React.ChangeEvent) => { - const value = parseFloat(e.currentTarget.value) - this.setState({ value }) - } - - private onPreviousImageLoad = (e: React.SyntheticEvent) => { + private onPreviousImageLoad = (img: HTMLImageElement) => { const size = { - width: e.currentTarget.naturalWidth, - height: e.currentTarget.naturalHeight, + width: img.naturalWidth, + height: img.naturalHeight, } this.setState({ previousImageSize: size }) } - private onCurrentImageLoad = (e: React.SyntheticEvent) => { + private onCurrentImageLoad = (img: HTMLImageElement) => { const size = { - width: e.currentTarget.naturalWidth, - height: e.currentTarget.naturalHeight, + width: img.naturalWidth, + height: img.naturalHeight, } this.setState({ currentImageSize: size }) } @@ -157,180 +148,66 @@ export class ModifiedImageDiff extends React.Component< } private render2Up(height: number, width: number, widthContainer: number) { - const style = { - maxHeight: height + SIZE_CONTROLS, - maxWidth: Math.min((widthContainer - 20) / 2, width), + const maxSize = { + height: height + SIZE_CONTROLS, + width: Math.min((widthContainer - 20) / 2, width), } return ( -
-
-
Deleted
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style, - })} -
- W:{' '} - {this.state.previousImageSize!.width}px |{' '} - H:{' '} - {this.state.previousImageSize!.height}px -
-
-
-
Added
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style, - })} -
- W:{' '} - {this.state.currentImageSize!.width}px |{' '} - H:{' '} - {this.state.currentImageSize!.height}px -
-
-
+ ) } private renderDifference( height: number, width: number, - widthContainer: number + containerWidth: number ) { + const maxSize = { width, height } return ( -
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: height, - maxWidth: width, - }, - })} -
-
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: height, - maxWidth: width, - mixBlendMode: 'difference', - }, - })} -
-
+ ) } - private renderFade(height: number, width: number, widthContainer: number) { - const style = { - height, - width, - } + private renderFade(height: number, width: number, containerWidth: number) { + const maxSize = { height, width } return ( -
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: height, - maxWidth: width, - }, - })} -
-
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: height, - maxWidth: width, - }, - })} -
- -
+ ) } - private renderSwipe(height: number, width: number, widthContainer: number) { - const style = { - height, - width, - } + private renderSwipe(height: number, width: number, containerWidth: number) { + const maxSize = { width, height } return ( -
-
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: height, - maxWidth: width, - }, - })} -
-
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: height, - maxWidth: width, - }, - })} -
-
- -
+ ) } } diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx new file mode 100644 index 00000000000..37a8e625bd9 --- /dev/null +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -0,0 +1,101 @@ +import * as React from 'react' +import { PADDING, IImageSize } from './modified-image-diff' +import { renderImage } from './render-image' +import { Image } from '../../../models/diff' + +interface IOnionSkinProps { + readonly maxSize: IImageSize + readonly containerWidth: number + + readonly previous: Image + readonly current: Image + + readonly onPreviousImageLoad: (img: HTMLImageElement) => void + readonly onCurrentImageLoad: (img: HTMLImageElement) => void +} + +interface IOnionSkinState { + readonly crossfade: number +} + +export class OnionSkin extends React.Component< + IOnionSkinProps, + IOnionSkinState +> { + public constructor(props: IOnionSkinProps) { + super(props) + + this.state = { crossfade: 1 } + } + + public render() { + const style = { + height: this.props.maxSize.height, + width: this.props.maxSize.width, + } + return ( +
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+ +
+ ) + } + + private onPreviousImageLoad = (e: React.SyntheticEvent) => { + this.props.onPreviousImageLoad(e.currentTarget) + } + + private onCurrentImageLoad = (e: React.SyntheticEvent) => { + this.props.onCurrentImageLoad(e.currentTarget) + } + + private onValueChange = (e: React.ChangeEvent) => { + this.setState({ crossfade: e.currentTarget.valueAsNumber }) + } +} diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx new file mode 100644 index 00000000000..1305f9b78df --- /dev/null +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -0,0 +1,98 @@ +import * as React from 'react' +import { PADDING, IImageSize } from './modified-image-diff' +import { Image } from '../../../models/diff' +import { renderImage } from './render-image' + +interface ISwipeProps { + readonly maxSize: IImageSize + readonly containerWidth: number + + readonly previous: Image + readonly current: Image + + readonly onPreviousImageLoad: (img: HTMLImageElement) => void + readonly onCurrentImageLoad: (img: HTMLImageElement) => void +} + +interface ISwipeState { + readonly swipePercentage: number +} + +export class Swipe extends React.Component { + public constructor(props: ISwipeProps) { + super(props) + + this.state = { swipePercentage: 1 } + } + + public render() { + const style = { + height: this.props.maxSize.height, + width: this.props.maxSize.width, + } + return ( +
+
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
+ +
+ ) + } + + private onPreviousImageLoad = (e: React.SyntheticEvent) => { + this.props.onPreviousImageLoad(e.currentTarget) + } + + private onCurrentImageLoad = (e: React.SyntheticEvent) => { + this.props.onCurrentImageLoad(e.currentTarget) + } + + private onValueChange = (e: React.ChangeEvent) => { + this.setState({ swipePercentage: e.currentTarget.valueAsNumber }) + } +} diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx new file mode 100644 index 00000000000..f85fe2ffd7c --- /dev/null +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -0,0 +1,64 @@ +import * as React from 'react' +import { renderImage } from './render-image' +import { IImageSize } from './modified-image-diff' +import { Image } from '../../../models/diff' + +interface ITwoUpProps { + readonly maxSize: IImageSize + + readonly previous: Image + readonly current: Image + + readonly previousImageSize: IImageSize | null + readonly currentImageSize: IImageSize | null + + readonly onPreviousImageLoad: (img: HTMLImageElement) => void + readonly onCurrentImageLoad: (img: HTMLImageElement) => void +} + +export class TwoUp extends React.Component { + public render() { + const style = { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + } + return ( +
+
+
Deleted
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style, + })} +
+ W:{' '} + {this.props.previousImageSize!.width}px |{' '} + H:{' '} + {this.props.previousImageSize!.height}px +
+
+
+
Added
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style, + })} +
+ W:{' '} + {this.props.currentImageSize!.width}px |{' '} + H:{' '} + {this.props.currentImageSize!.height}px +
+
+
+ ) + } + + private onPreviousImageLoad = (e: React.SyntheticEvent) => { + this.props.onPreviousImageLoad(e.currentTarget) + } + + private onCurrentImageLoad = (e: React.SyntheticEvent) => { + this.props.onCurrentImageLoad(e.currentTarget) + } +} diff --git a/app/static/common/default-avatar.png b/app/static/common/default-avatar.png index f6d6ebde1ab666bdbb960ff0da6ec0039fbdc7dc..a603c4de9e0d6a71c4b371fb4bf7219441d2ada1 100644 GIT binary patch literal 43146 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 Date: Wed, 2 Aug 2017 14:42:44 -0400 Subject: [PATCH 17/64] Exhaustiveness checks are a great thing --- .../diff/image-diffs/modified-image-diff.tsx | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index a9633a3f595..ba3a731da39 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -7,6 +7,7 @@ import { TwoUp } from './two-up' import { DifferenceBlend } from './difference-blend' import { OnionSkin } from './onion-skin' import { Swipe } from './swipe' +import { assertNever } from '../../../lib/fatal-error' interface IModifiedImageDiffProps { readonly previous: Image @@ -67,6 +68,7 @@ export class ModifiedImageDiff extends React.Component< public constructor(props: IModifiedImageDiffProps) { super(props) + this.state = { previousImageSize: null, currentImageSize: null, @@ -122,17 +124,10 @@ export class ModifiedImageDiff extends React.Component< } public render() { - const { height, width, containerWidth } = this.getScaledDimensions() return (

- {this.props.diffType === ImageDiffType.TwoUp && - this.render2Up(height, width, containerWidth)} - {this.props.diffType === ImageDiffType.Swipe && - this.renderSwipe(height, width, containerWidth)} - {this.props.diffType === ImageDiffType.OnionSkin && - this.renderFade(height, width, containerWidth)} - {this.props.diffType === ImageDiffType.Difference && - this.renderDifference(height, width, containerWidth)} + {this.renderCurrentDiffType()} + Date: Wed, 2 Aug 2017 14:48:52 -0400 Subject: [PATCH 18/64] Avoid null sizes --- app/src/ui/diff/image-diffs/two-up.tsx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index f85fe2ffd7c..ac9cc133031 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -22,6 +22,11 @@ export class TwoUp extends React.Component { maxHeight: this.props.maxSize.height, maxWidth: this.props.maxSize.width, } + + const zeroSize = { width: 0, height: 0 } + const previousImageSize = this.props.previousImageSize || zeroSize + const currentImageSize = this.props.currentImageSize || zeroSize + return (
@@ -31,10 +36,8 @@ export class TwoUp extends React.Component { style, })}
- W:{' '} - {this.props.previousImageSize!.width}px |{' '} - H:{' '} - {this.props.previousImageSize!.height}px + W: {previousImageSize.width}px |{' '} + H: {previousImageSize.height}px
@@ -44,10 +47,8 @@ export class TwoUp extends React.Component { style, })}
- W:{' '} - {this.props.currentImageSize!.width}px |{' '} - H:{' '} - {this.props.currentImageSize!.height}px + W: {currentImageSize.width}px |{' '} + H: {currentImageSize.height}px
From d3725da0198ac2af4e978eaf24584c55d1e20477 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 14:49:04 -0400 Subject: [PATCH 19/64] Move all the offsets into one place --- .../diff/image-diffs/modified-image-diff.tsx | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index ba3a731da39..efd2a265f10 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -32,19 +32,19 @@ interface IModifiedImageDiffState { const SIZE_CONTROLS = 60 export const PADDING = 20 -function getFittingSize( +function getAspectFitSize( imageSize: IImageSize, containerSize: IImageSize ): IImageSize { - // keep some padding - const containerWidth = containerSize.width - PADDING - const containerHeight = containerSize.height - PADDING - SIZE_CONTROLS - // check wether we will need to scale the images or not const heightRatio = - containerHeight < imageSize.height ? imageSize.height / containerHeight : 1 + containerSize.height < imageSize.height + ? imageSize.height / containerSize.height + : 1 const widthRatio = - containerWidth < imageSize.width ? imageSize.width / containerWidth : 1 + containerSize.width < imageSize.width + ? imageSize.width / containerSize.width + : 1 // Use max to prevent scaling up the image let ratio = Math.max(1, widthRatio) @@ -95,17 +95,23 @@ export class ModifiedImageDiff extends React.Component< const { previousImageSize, currentImageSize } = this.state const containerWidth = - (this.container && this.container.getBoundingClientRect().width) || 0 + (this.container && + this.container.getBoundingClientRect().width - PADDING) || + 0 const containerHeight = - (this.container && this.container.getBoundingClientRect().height) || 0 + (this.container && + this.container.getBoundingClientRect().height - + PADDING - + SIZE_CONTROLS) || + 0 const containerSize = { width: containerWidth, height: containerHeight } let height = 0 let width = 0 if (previousImageSize && currentImageSize) { - const previousSize = getFittingSize(previousImageSize, containerSize) - const currentSize = getFittingSize(currentImageSize, containerSize) + const previousSize = getAspectFitSize(previousImageSize, containerSize) + const currentSize = getAspectFitSize(currentImageSize, containerSize) height = Math.max(previousSize.height, currentSize.height) width = Math.max(previousSize.width, currentSize.height) @@ -163,10 +169,10 @@ export class ModifiedImageDiff extends React.Component< } } - private render2Up(height: number, width: number, widthContainer: number) { + private render2Up(height: number, width: number, containerWidth: number) { const maxSize = { height: height + SIZE_CONTROLS, - width: Math.min((widthContainer - 20) / 2, width), + width: Math.min((containerWidth - 20) / 2, width), } return ( Date: Wed, 2 Aug 2017 14:53:41 -0400 Subject: [PATCH 20/64] Stop exporting PADDING --- app/src/ui/diff/image-diffs/difference-blend.tsx | 9 +++------ app/src/ui/diff/image-diffs/modified-image-diff.tsx | 11 +++++++---- app/src/ui/diff/image-diffs/onion-skin.tsx | 9 +++------ app/src/ui/diff/image-diffs/swipe.tsx | 9 +++------ 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 5519ba7bf2b..874cda3464b 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -1,11 +1,11 @@ import * as React from 'react' import { renderImage } from './render-image' -import { IImageSize, PADDING } from './modified-image-diff' +import { IImageSize } from './modified-image-diff' import { Image } from '../../../models/diff' interface IDifferenceBlendProps { readonly maxSize: IImageSize - readonly containerWidth: number + readonly left: number readonly previous: Image readonly current: Image @@ -25,10 +25,7 @@ export class DifferenceBlend extends React.Component< style={{ height: this.props.maxSize.height, width: this.props.maxSize.width, - left: - (this.props.containerWidth - PADDING - this.props.maxSize.width) / - 2 + - PADDING / 2, + left: this.props.left, }} >
diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index efd2a265f10..aca0c6b6f1c 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -30,7 +30,7 @@ interface IModifiedImageDiffState { } const SIZE_CONTROLS = 60 -export const PADDING = 20 +const PADDING = 20 function getAspectFitSize( imageSize: IImageSize, @@ -193,14 +193,15 @@ export class ModifiedImageDiff extends React.Component< containerWidth: number ) { const maxSize = { width, height } + const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } @@ -211,28 +212,30 @@ export class ModifiedImageDiff extends React.Component< containerWidth: number ) { const maxSize = { height, width } + const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } private renderSwipe(height: number, width: number, containerWidth: number) { const maxSize = { width, height } + const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 37a8e625bd9..c0567bb9766 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -1,11 +1,11 @@ import * as React from 'react' -import { PADDING, IImageSize } from './modified-image-diff' +import { IImageSize } from './modified-image-diff' import { renderImage } from './render-image' import { Image } from '../../../models/diff' interface IOnionSkinProps { readonly maxSize: IImageSize - readonly containerWidth: number + readonly left: number readonly previous: Image readonly current: Image @@ -39,10 +39,7 @@ export class OnionSkin extends React.Component< style={{ ...style, marginBottom: 30, - left: - (this.props.containerWidth - PADDING - this.props.maxSize.width) / - 2 + - PADDING / 2, + left: this.props.left, }} >
diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index 1305f9b78df..3592e3605bf 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -1,11 +1,11 @@ import * as React from 'react' -import { PADDING, IImageSize } from './modified-image-diff' +import { IImageSize } from './modified-image-diff' import { Image } from '../../../models/diff' import { renderImage } from './render-image' interface ISwipeProps { readonly maxSize: IImageSize - readonly containerWidth: number + readonly left: number readonly previous: Image readonly current: Image @@ -36,10 +36,7 @@ export class Swipe extends React.Component { style={{ ...style, marginBottom: 30, - left: - (this.props.containerWidth - PADDING - this.props.maxSize.width) / - 2 + - PADDING / 2, + left: this.props.left, }} >
From 6010aeb8c611c7e140de36cbe6ff9c9205cb5b71 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 14:58:16 -0400 Subject: [PATCH 21/64] Consolidate this too --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index aca0c6b6f1c..387168f67ae 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -94,16 +94,11 @@ export class ModifiedImageDiff extends React.Component< private getScaledDimensions() { const { previousImageSize, currentImageSize } = this.state - const containerWidth = - (this.container && - this.container.getBoundingClientRect().width - PADDING) || - 0 + const boundingRect = + this.container && this.container.getBoundingClientRect() + const containerWidth = (boundingRect && boundingRect.width - PADDING) || 0 const containerHeight = - (this.container && - this.container.getBoundingClientRect().height - - PADDING - - SIZE_CONTROLS) || - 0 + (boundingRect && boundingRect.height - PADDING - SIZE_CONTROLS) || 0 const containerSize = { width: containerWidth, height: containerHeight } let height = 0 From 1000499da9bd949a73813df87ad5a413491342c0 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 15:34:49 -0400 Subject: [PATCH 22/64] Just pass any ol' props through --- app/src/ui/diff/image-diffs/render-image.tsx | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/src/ui/diff/image-diffs/render-image.tsx b/app/src/ui/diff/image-diffs/render-image.tsx index 5ce46d2b78d..72a0e3ed359 100644 --- a/app/src/ui/diff/image-diffs/render-image.tsx +++ b/app/src/ui/diff/image-diffs/render-image.tsx @@ -2,14 +2,9 @@ import * as React from 'react' import { Image } from '../../../models/diff' -interface IRenderImageOptions { - readonly style?: {} - readonly onLoad?: (e: React.SyntheticEvent) => void -} - export function renderImage( image: Image | undefined, - options?: IRenderImageOptions + props?: React.HTMLProps ) { if (!image) { return null @@ -17,5 +12,5 @@ export function renderImage( const imageSource = `data:${image.mediaType};base64,${image.contents}` - return + return } From 4a9cad0ef4b0cabce15c2e2a2c6b3a112d198419 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 15:34:59 -0400 Subject: [PATCH 23/64] Type that --- app/src/ui/diff/image-diffs/two-up.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index ac9cc133031..6b09cbc3a11 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -18,9 +18,9 @@ interface ITwoUpProps { export class TwoUp extends React.Component { public render() { - const style = { - maxHeight: this.props.maxSize.height, + const style: React.CSSProperties = { maxWidth: this.props.maxSize.width, + maxHeight: this.props.maxSize.height, } const zeroSize = { width: 0, height: 0 } From 2d445617783518c3db70605769d3ec0f656fd8f0 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 15:38:10 -0400 Subject: [PATCH 24/64] Unrustle Prettier --- app/styles/ui/_diff.scss | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 79f4b06e0a4..0a42a66d02e 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -53,8 +53,9 @@ border-bottom: var(--base-border); } - &-focused &-selected, &-selected { - background: var(--diff-selected-background-color) + &-focused &-selected, + &-selected { + background: var(--diff-selected-background-color); } &-selectedtext { @@ -70,7 +71,7 @@ height: 100%; .before { - border-right: 1px solid var(--diff-border-color); + border-right: 1px solid var(--diff-border-color); } .after { @@ -159,7 +160,6 @@ } } - .diff-line-selected { .diff-line-number { background: var(--diff-selected-background-color); @@ -172,7 +172,6 @@ } } - .diff-line-hover { .diff-line-number { background: var(--diff-hover-background-color); @@ -185,7 +184,6 @@ } } - // Windows has custom scroll bars, see _scroll.scss @include win32-context { .CodeMirror { @@ -207,7 +205,9 @@ // This is a div that sits in the corner between the horizontal // and vertical scroll bar and has an opaque background by default. - &-scrollbar-filler { background: transparent; } + &-scrollbar-filler { + background: transparent; + } } } @@ -236,7 +236,6 @@ margin-left: var(--spacing-half); } - #diff a:link { color: (orange); } @@ -280,7 +279,6 @@ } .image-diff_inner { - &--two-up { display: flex; justify-content: center; From 07d5c623b0d0d7d27cde6ffdf0e445364751b598 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 16:07:49 -0400 Subject: [PATCH 25/64] Split this logic up even more --- .../diff/image-diffs/modified-image-diff.tsx | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 387168f67ae..0a6389070fc 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -59,6 +59,23 @@ function getAspectFitSize( } } +function getMaxFitSize( + previousImageSize: IImageSize, + currentImageSize: IImageSize, + containerSize: IImageSize +): IImageSize { + const previousSize = getAspectFitSize(previousImageSize, containerSize) + const currentSize = getAspectFitSize(currentImageSize, containerSize) + + const height = Math.max(previousSize.height, currentSize.height) + const width = Math.max(previousSize.width, currentSize.height) + + return { + height, + width, + } +} + /** A component which renders the changes to an image in the repository */ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, @@ -92,31 +109,25 @@ export class ModifiedImageDiff extends React.Component< } private getScaledDimensions() { - const { previousImageSize, currentImageSize } = this.state - - const boundingRect = - this.container && this.container.getBoundingClientRect() - const containerWidth = (boundingRect && boundingRect.width - PADDING) || 0 - const containerHeight = - (boundingRect && boundingRect.height - PADDING - SIZE_CONTROLS) || 0 - const containerSize = { width: containerWidth, height: containerHeight } - - let height = 0 - let width = 0 - - if (previousImageSize && currentImageSize) { - const previousSize = getAspectFitSize(previousImageSize, containerSize) - const currentSize = getAspectFitSize(currentImageSize, containerSize) + const zeroSize = { width: 0, height: 0, containerWidth: 0 } + const container = this.container + if (!container) { + return zeroSize + } - height = Math.max(previousSize.height, currentSize.height) - width = Math.max(previousSize.width, currentSize.height) + const { previousImageSize, currentImageSize } = this.state + if (!previousImageSize || !currentImageSize) { + return zeroSize } + const boundingRect = container.getBoundingClientRect() + const containerWidth = boundingRect.width - PADDING + const containerHeight = boundingRect.height - PADDING - SIZE_CONTROLS + const containerSize = { width: containerWidth, height: containerHeight } return { - height, - width, - containerHeight, + ...getMaxFitSize(previousImageSize, currentImageSize, containerSize), containerWidth, + containerHeight, } } @@ -166,7 +177,7 @@ export class ModifiedImageDiff extends React.Component< private render2Up(height: number, width: number, containerWidth: number) { const maxSize = { - height: height + SIZE_CONTROLS, + height: height - SIZE_CONTROLS, width: Math.min((containerWidth - 20) / 2, width), } return ( From 64aa80d70b155354282016b877f56738562675a6 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 16:10:37 -0400 Subject: [PATCH 26/64] :book: --- .../ui/diff/image-diffs/modified-image-diff.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 0a6389070fc..1ed21e02488 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -32,11 +32,14 @@ interface IModifiedImageDiffState { const SIZE_CONTROLS = 60 const PADDING = 20 +/** + * Get the size which fits in the container without scaling and maintaining + * aspect ratio. + */ function getAspectFitSize( imageSize: IImageSize, containerSize: IImageSize ): IImageSize { - // check wether we will need to scale the images or not const heightRatio = containerSize.height < imageSize.height ? imageSize.height / containerSize.height @@ -46,10 +49,8 @@ function getAspectFitSize( ? imageSize.width / containerSize.width : 1 - // Use max to prevent scaling up the image let ratio = Math.max(1, widthRatio) if (widthRatio < heightRatio) { - // fit to height ratio = Math.max(1, heightRatio) } @@ -59,6 +60,10 @@ function getAspectFitSize( } } +/** + * Get the size which will fit the bigger of the two images while maintaining + * aspect ratio. + */ function getMaxFitSize( previousImageSize: IImageSize, currentImageSize: IImageSize, @@ -67,12 +72,12 @@ function getMaxFitSize( const previousSize = getAspectFitSize(previousImageSize, containerSize) const currentSize = getAspectFitSize(currentImageSize, containerSize) + const width = Math.max(previousSize.width, currentSize.width) const height = Math.max(previousSize.height, currentSize.height) - const width = Math.max(previousSize.width, currentSize.height) return { - height, width, + height, } } From b3d0372e298dcb46342100d18b68a2b7e302274f Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 16:39:43 -0400 Subject: [PATCH 27/64] Make CSS do more heavy lifting --- .../diff/image-diffs/modified-image-diff.tsx | 24 +++++++++++++------ app/src/ui/diff/image-diffs/two-up.tsx | 8 ++++++- app/styles/ui/_diff.scss | 7 ++++++ 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 1ed21e02488..403e2435fa5 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -29,7 +29,6 @@ interface IModifiedImageDiffState { readonly currentImageSize: IImageSize | null } -const SIZE_CONTROLS = 60 const PADDING = 20 /** @@ -126,11 +125,20 @@ export class ModifiedImageDiff extends React.Component< } const boundingRect = container.getBoundingClientRect() - const containerWidth = boundingRect.width - PADDING - const containerHeight = boundingRect.height - PADDING - SIZE_CONTROLS + console.log(boundingRect) + console.log(container) + const containerWidth = boundingRect.width + const containerHeight = boundingRect.height const containerSize = { width: containerWidth, height: containerHeight } + + const maxFitSize = getMaxFitSize( + previousImageSize, + currentImageSize, + containerSize + ) + console.log(maxFitSize) return { - ...getMaxFitSize(previousImageSize, currentImageSize, containerSize), + ...maxFitSize, containerWidth, containerHeight, } @@ -142,8 +150,10 @@ export class ModifiedImageDiff extends React.Component< public render() { return ( -
- {this.renderCurrentDiffType()} +
+
+ {this.renderCurrentDiffType()} +
{ public render() { const style: React.CSSProperties = { maxWidth: this.props.maxSize.width, - maxHeight: this.props.maxSize.height, + maxHeight: this.props.maxSize.height - HeaderHeight, } const zeroSize = { width: 0, height: 0 } @@ -35,17 +38,20 @@ export class TwoUp extends React.Component { onLoad: this.onPreviousImageLoad, style, })} +
W: {previousImageSize.width}px |{' '} H: {previousImageSize.height}px
+
Added
{renderImage(this.props.current, { onLoad: this.onCurrentImageLoad, style, })} +
W: {currentImageSize.width}px |{' '} H: {currentImageSize.height}px diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 0a42a66d02e..47cb3e4c7b7 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -241,6 +241,7 @@ } .panel.image { + display: flex; padding-top: 10px; .tab-bar { @@ -278,9 +279,15 @@ } } +.image-diff-container { + display: flex; + flex: 1; +} + .image-diff_inner { &--two-up { display: flex; + flex: 1; justify-content: center; .image-diff__before { From 45a0c385decf5e8891c16709ab5640959d69f330 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 16:45:41 -0400 Subject: [PATCH 28/64] Stop logging the world --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 403e2435fa5..f18e69409e6 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -125,8 +125,6 @@ export class ModifiedImageDiff extends React.Component< } const boundingRect = container.getBoundingClientRect() - console.log(boundingRect) - console.log(container) const containerWidth = boundingRect.width const containerHeight = boundingRect.height const containerSize = { width: containerWidth, height: containerHeight } @@ -136,7 +134,7 @@ export class ModifiedImageDiff extends React.Component< currentImageSize, containerSize ) - console.log(maxFitSize) + return { ...maxFitSize, containerWidth, From 950bdeb1f9c20f7152ccbb82799b21a369b0ef3f Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:00:51 -0400 Subject: [PATCH 29/64] It's a lot of controls really --- app/src/ui/diff/image-diffs/two-up.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index 53861be229e..d3851cf8da4 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -3,8 +3,11 @@ import { renderImage } from './render-image' import { IImageSize } from './modified-image-diff' import { Image } from '../../../models/diff' -/** The height of the Deleted/Added labels at the top. */ -const HeaderHeight = 20 +/** + * The height of the Deleted/Added labels at the top and the image dimension + * labels. + */ +const ControlsHeight = 60 interface ITwoUpProps { readonly maxSize: IImageSize @@ -23,7 +26,7 @@ export class TwoUp extends React.Component { public render() { const style: React.CSSProperties = { maxWidth: this.props.maxSize.width, - maxHeight: this.props.maxSize.height - HeaderHeight, + maxHeight: this.props.maxSize.height - ControlsHeight, } const zeroSize = { width: 0, height: 0 } From d91e17b2ae102d81f3876360cee3628a3f54d799 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:07:31 -0400 Subject: [PATCH 30/64] Let CSS do the centering --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 6 ++---- app/styles/ui/_diff.scss | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index f18e69409e6..39e045010b5 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -175,7 +175,7 @@ export class ModifiedImageDiff extends React.Component< return this.render2Up(height, width, containerWidth) case ImageDiffType.Swipe: - return this.renderSwipe(height, width, containerWidth) + return this.renderSwipe(height, width) case ImageDiffType.OnionSkin: return this.renderOnionSkin(height, width, containerWidth) @@ -244,9 +244,8 @@ export class ModifiedImageDiff extends React.Component< ) } - private renderSwipe(height: number, width: number, containerWidth: number) { + private renderSwipe(height: number, width: number) { const maxSize = { width, height } - const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 47cb3e4c7b7..3bf19d21dc2 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -282,6 +282,7 @@ .image-diff-container { display: flex; flex: 1; + justify-content: center; } .image-diff_inner { @@ -339,6 +340,7 @@ &--swipe { margin: 0; + margin-bottom: 30px; position: relative; .image-diff__before, From 47bd8df683db9814fb8e8680c1a6a06fc93c098c Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:07:39 -0400 Subject: [PATCH 31/64] Fewer magic numbers --- app/src/ui/diff/image-diffs/swipe.tsx | 29 +++++++++++++-------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index 3592e3605bf..05e09cf833e 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -3,9 +3,14 @@ import { IImageSize } from './modified-image-diff' import { Image } from '../../../models/diff' import { renderImage } from './render-image' +/** The height of the controls. */ +const ControlHeight = 30 + +/** How much bigger the slider should be than the images. */ +const SliderOverflow = 14 + interface ISwipeProps { readonly maxSize: IImageSize - readonly left: number readonly previous: Image readonly current: Image @@ -26,24 +31,18 @@ export class Swipe extends React.Component { } public render() { + const height = this.props.maxSize.height - ControlHeight const style = { - height: this.props.maxSize.height, + height, width: this.props.maxSize.width, } return ( -
+
{renderImage(this.props.current, { onLoad: this.onCurrentImageLoad, style: { - maxHeight: this.props.maxSize.height, + maxHeight: height, maxWidth: this.props.maxSize.width, }, })} @@ -52,14 +51,14 @@ export class Swipe extends React.Component { className="image-diff--swiper" style={{ width: this.props.maxSize.width * (1 - this.state.swipePercentage), - height: this.props.maxSize.height + 10, + height: height, }} >
{renderImage(this.props.previous, { onLoad: this.onPreviousImageLoad, style: { - maxHeight: this.props.maxSize.height, + maxHeight: height, maxWidth: this.props.maxSize.width, }, })} @@ -67,8 +66,8 @@ export class Swipe extends React.Component {
Date: Wed, 2 Aug 2017 17:14:17 -0400 Subject: [PATCH 32/64] Clean up the onion skin --- .../diff/image-diffs/modified-image-diff.tsx | 10 ++---- app/src/ui/diff/image-diffs/onion-skin.tsx | 32 ++++++++++--------- app/styles/ui/_diff.scss | 1 + 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 39e045010b5..d4a2932a27f 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -178,7 +178,7 @@ export class ModifiedImageDiff extends React.Component< return this.renderSwipe(height, width) case ImageDiffType.OnionSkin: - return this.renderOnionSkin(height, width, containerWidth) + return this.renderOnionSkin(height, width) case ImageDiffType.Difference: return this.renderDifference(height, width, containerWidth) @@ -225,13 +225,8 @@ export class ModifiedImageDiff extends React.Component< ) } - private renderOnionSkin( - height: number, - width: number, - containerWidth: number - ) { + private renderOnionSkin(height: number, width: number) { const maxSize = { height, width } - const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index c0567bb9766..2c425cfe9f1 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -3,9 +3,17 @@ import { IImageSize } from './modified-image-diff' import { renderImage } from './render-image' import { Image } from '../../../models/diff' +/** The height of the controls. */ +const ControlHeight = 30 + +/** The amount the slider is inset on its X axis. */ +const SliderXInset = 129 + +/** The padding between the slider and the image on the Y axis. */ +const SliderYPadding = 10 + interface IOnionSkinProps { readonly maxSize: IImageSize - readonly left: number readonly previous: Image readonly current: Image @@ -29,24 +37,18 @@ export class OnionSkin extends React.Component< } public render() { + const height = this.props.maxSize.height - ControlHeight const style = { - height: this.props.maxSize.height, + height, width: this.props.maxSize.width, } return ( -
+
{renderImage(this.props.previous, { onLoad: this.onPreviousImageLoad, style: { - maxHeight: this.props.maxSize.height, + maxHeight: height, maxWidth: this.props.maxSize.width, }, })} @@ -61,16 +63,16 @@ export class OnionSkin extends React.Component< {renderImage(this.props.current, { onLoad: this.onCurrentImageLoad, style: { - maxHeight: this.props.maxSize.height, + maxHeight: height, maxWidth: this.props.maxSize.width, }, })}
Date: Wed, 2 Aug 2017 17:16:29 -0400 Subject: [PATCH 33/64] Give it some breathing space --- app/src/ui/diff/image-diffs/onion-skin.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 2c425cfe9f1..4536087fa37 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -53,6 +53,7 @@ export class OnionSkin extends React.Component< }, })}
+
+ Date: Wed, 2 Aug 2017 17:16:43 -0400 Subject: [PATCH 34/64] Remove Difference's dependence on `left` --- app/src/ui/diff/image-diffs/difference-blend.tsx | 3 +-- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 12 ++---------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 874cda3464b..e15b1a0697f 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -5,7 +5,6 @@ import { Image } from '../../../models/diff' interface IDifferenceBlendProps { readonly maxSize: IImageSize - readonly left: number readonly previous: Image readonly current: Image @@ -25,7 +24,6 @@ export class DifferenceBlend extends React.Component< style={{ height: this.props.maxSize.height, width: this.props.maxSize.width, - left: this.props.left, }} >
@@ -37,6 +35,7 @@ export class DifferenceBlend extends React.Component< }, })}
+
{renderImage(this.props.current, { onLoad: this.onCurrentImageLoad, diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index d4a2932a27f..7bcfe87b796 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -29,8 +29,6 @@ interface IModifiedImageDiffState { readonly currentImageSize: IImageSize | null } -const PADDING = 20 - /** * Get the size which fits in the container without scaling and maintaining * aspect ratio. @@ -181,7 +179,7 @@ export class ModifiedImageDiff extends React.Component< return this.renderOnionSkin(height, width) case ImageDiffType.Difference: - return this.renderDifference(height, width, containerWidth) + return this.renderDifference(height, width) default: return assertNever(type, `Unknown diff type: ${type}`) @@ -206,13 +204,8 @@ export class ModifiedImageDiff extends React.Component< ) } - private renderDifference( - height: number, - width: number, - containerWidth: number - ) { + private renderDifference(height: number, width: number) { const maxSize = { width, height } - const left = (containerWidth - PADDING - width) / 2 + PADDING / 2 return ( ) } From 94947e68ae02fe32246f65d60ba8c5b1d58e7437 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:17:33 -0400 Subject: [PATCH 35/64] Use some Y padding here too --- app/src/ui/diff/image-diffs/swipe.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index 05e09cf833e..ec3cdcd4df2 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -9,6 +9,9 @@ const ControlHeight = 30 /** How much bigger the slider should be than the images. */ const SliderOverflow = 14 +/** The padding between the slider and the image on the Y axis. */ +const SliderYPadding = 10 + interface ISwipeProps { readonly maxSize: IImageSize @@ -66,7 +69,7 @@ export class Swipe extends React.Component {
Date: Wed, 2 Aug 2017 17:28:54 -0400 Subject: [PATCH 36/64] Share more props --- .../diff/image-diffs/modified-image-diff.tsx | 69 +++++++------------ app/src/ui/diff/image-diffs/two-up.tsx | 8 ++- 2 files changed, 30 insertions(+), 47 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 7bcfe87b796..5f73711dc2c 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -170,76 +170,53 @@ export class ModifiedImageDiff extends React.Component< const type = this.props.diffType switch (type) { case ImageDiffType.TwoUp: - return this.render2Up(height, width, containerWidth) + return this.render2Up(width, height, containerWidth) case ImageDiffType.Swipe: - return this.renderSwipe(height, width) + return this.renderSwipe(width, height) case ImageDiffType.OnionSkin: - return this.renderOnionSkin(height, width) + return this.renderOnionSkin(width, height) case ImageDiffType.Difference: - return this.renderDifference(height, width) + return this.renderDifference(width, height) default: return assertNever(type, `Unknown diff type: ${type}`) } } - private render2Up(height: number, width: number, containerWidth: number) { - const maxSize = { - height, - width: Math.min((containerWidth - 20) / 2, width), + private getCommonProps(width: number, height: number) { + const maxSize = { width, height } + return { + maxSize, + previous: this.props.previous, + current: this.props.current, + onPreviousImageLoad: this.onPreviousImageLoad, + onCurrentImageLoad: this.onCurrentImageLoad, } + } + + private render2Up(width: number, height: number, containerWidth: number) { return ( ) } - private renderDifference(height: number, width: number) { - const maxSize = { width, height } - return ( - - ) + private renderDifference(width: number, height: number) { + return } - private renderOnionSkin(height: number, width: number) { - const maxSize = { height, width } - return ( - - ) + private renderOnionSkin(width: number, height: number) { + return } - private renderSwipe(height: number, width: number) { - const maxSize = { width, height } - return ( - - ) + private renderSwipe(width: number, height: number) { + return } } diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index d3851cf8da4..71cdc17a8da 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -9,8 +9,11 @@ import { Image } from '../../../models/diff' */ const ControlsHeight = 60 +const XPadding = 20 + interface ITwoUpProps { readonly maxSize: IImageSize + readonly containerWidth: number readonly previous: Image readonly current: Image @@ -25,7 +28,10 @@ interface ITwoUpProps { export class TwoUp extends React.Component { public render() { const style: React.CSSProperties = { - maxWidth: this.props.maxSize.width, + maxWidth: Math.min( + (this.props.containerWidth - XPadding) / 2, + this.props.maxSize.width + ), maxHeight: this.props.maxSize.height - ControlsHeight, } From 5d8708afad9fb0e65b4dd4d37d48240a37ad7d86 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:32:43 -0400 Subject: [PATCH 37/64] Share the type declaratios too --- .../ui/diff/image-diffs/difference-blend.tsx | 15 ++------------ .../diff/image-diffs/modified-image-diff.tsx | 15 +++++++++++++- app/src/ui/diff/image-diffs/onion-skin.tsx | 17 +++------------- app/src/ui/diff/image-diffs/swipe.tsx | 20 ++++++------------- app/src/ui/diff/image-diffs/two-up.tsx | 12 ++--------- 5 files changed, 27 insertions(+), 52 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index e15b1a0697f..856f727db63 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -1,20 +1,9 @@ import * as React from 'react' import { renderImage } from './render-image' -import { IImageSize } from './modified-image-diff' -import { Image } from '../../../models/diff' - -interface IDifferenceBlendProps { - readonly maxSize: IImageSize - - readonly previous: Image - readonly current: Image - - readonly onPreviousImageLoad: (img: HTMLImageElement) => void - readonly onCurrentImageLoad: (img: HTMLImageElement) => void -} +import { ICommonImageDiffProperties } from './modified-image-diff' export class DifferenceBlend extends React.Component< - IDifferenceBlendProps, + ICommonImageDiffProperties, {} > { public render() { diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 5f73711dc2c..5e6dbb16f6c 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -21,6 +21,16 @@ export interface IImageSize { readonly height: number } +export interface ICommonImageDiffProperties { + readonly maxSize: IImageSize + + readonly previous: Image + readonly current: Image + + readonly onPreviousImageLoad: (img: HTMLImageElement) => void + readonly onCurrentImageLoad: (img: HTMLImageElement) => void +} + interface IModifiedImageDiffState { /** The size of the previous image. */ readonly previousImageSize: IImageSize | null @@ -186,7 +196,10 @@ export class ModifiedImageDiff extends React.Component< } } - private getCommonProps(width: number, height: number) { + private getCommonProps( + width: number, + height: number + ): ICommonImageDiffProperties { const maxSize = { width, height } return { maxSize, diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 4536087fa37..cfdf934ab2d 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -1,7 +1,6 @@ import * as React from 'react' -import { IImageSize } from './modified-image-diff' +import { ICommonImageDiffProperties } from './modified-image-diff' import { renderImage } from './render-image' -import { Image } from '../../../models/diff' /** The height of the controls. */ const ControlHeight = 30 @@ -12,25 +11,15 @@ const SliderXInset = 129 /** The padding between the slider and the image on the Y axis. */ const SliderYPadding = 10 -interface IOnionSkinProps { - readonly maxSize: IImageSize - - readonly previous: Image - readonly current: Image - - readonly onPreviousImageLoad: (img: HTMLImageElement) => void - readonly onCurrentImageLoad: (img: HTMLImageElement) => void -} - interface IOnionSkinState { readonly crossfade: number } export class OnionSkin extends React.Component< - IOnionSkinProps, + ICommonImageDiffProperties, IOnionSkinState > { - public constructor(props: IOnionSkinProps) { + public constructor(props: ICommonImageDiffProperties) { super(props) this.state = { crossfade: 1 } diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index ec3cdcd4df2..b727976e3c4 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -1,6 +1,5 @@ import * as React from 'react' -import { IImageSize } from './modified-image-diff' -import { Image } from '../../../models/diff' +import { ICommonImageDiffProperties } from './modified-image-diff' import { renderImage } from './render-image' /** The height of the controls. */ @@ -12,22 +11,15 @@ const SliderOverflow = 14 /** The padding between the slider and the image on the Y axis. */ const SliderYPadding = 10 -interface ISwipeProps { - readonly maxSize: IImageSize - - readonly previous: Image - readonly current: Image - - readonly onPreviousImageLoad: (img: HTMLImageElement) => void - readonly onCurrentImageLoad: (img: HTMLImageElement) => void -} - interface ISwipeState { readonly swipePercentage: number } -export class Swipe extends React.Component { - public constructor(props: ISwipeProps) { +export class Swipe extends React.Component< + ICommonImageDiffProperties, + ISwipeState +> { + public constructor(props: ICommonImageDiffProperties) { super(props) this.state = { swipePercentage: 1 } diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index 71cdc17a8da..d8b1aac752e 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -1,7 +1,6 @@ import * as React from 'react' import { renderImage } from './render-image' -import { IImageSize } from './modified-image-diff' -import { Image } from '../../../models/diff' +import { IImageSize, ICommonImageDiffProperties } from './modified-image-diff' /** * The height of the Deleted/Added labels at the top and the image dimension @@ -11,18 +10,11 @@ const ControlsHeight = 60 const XPadding = 20 -interface ITwoUpProps { - readonly maxSize: IImageSize +interface ITwoUpProps extends ICommonImageDiffProperties { readonly containerWidth: number - readonly previous: Image - readonly current: Image - readonly previousImageSize: IImageSize | null readonly currentImageSize: IImageSize | null - - readonly onPreviousImageLoad: (img: HTMLImageElement) => void - readonly onCurrentImageLoad: (img: HTMLImageElement) => void } export class TwoUp extends React.Component { From ecbbb39a23985ab9cfa1f7d998f5b68b03d5bc56 Mon Sep 17 00:00:00 2001 From: joshaber Date: Wed, 2 Aug 2017 17:35:29 -0400 Subject: [PATCH 38/64] This isn't even my final form --- .../diff/image-diffs/modified-image-diff.tsx | 55 +++++-------------- 1 file changed, 14 insertions(+), 41 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 5e6dbb16f6c..da74243c0a6 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -81,11 +81,7 @@ function getMaxFitSize( const width = Math.max(previousSize.width, currentSize.width) const height = Math.max(previousSize.height, currentSize.height) - - return { - width, - height, - } + return { width, height } } /** A component which renders the changes to an image in the repository */ @@ -105,18 +101,12 @@ export class ModifiedImageDiff extends React.Component< } private onPreviousImageLoad = (img: HTMLImageElement) => { - const size = { - width: img.naturalWidth, - height: img.naturalHeight, - } + const size = { width: img.naturalWidth, height: img.naturalHeight } this.setState({ previousImageSize: size }) } private onCurrentImageLoad = (img: HTMLImageElement) => { - const size = { - width: img.naturalWidth, - height: img.naturalHeight, - } + const size = { width: img.naturalWidth, height: img.naturalHeight } this.setState({ currentImageSize: size }) } @@ -146,7 +136,6 @@ export class ModifiedImageDiff extends React.Component< return { ...maxFitSize, containerWidth, - containerHeight, } } @@ -180,16 +169,23 @@ export class ModifiedImageDiff extends React.Component< const type = this.props.diffType switch (type) { case ImageDiffType.TwoUp: - return this.render2Up(width, height, containerWidth) + return ( + + ) case ImageDiffType.Swipe: - return this.renderSwipe(width, height) + return case ImageDiffType.OnionSkin: - return this.renderOnionSkin(width, height) + return case ImageDiffType.Difference: - return this.renderDifference(width, height) + return default: return assertNever(type, `Unknown diff type: ${type}`) @@ -209,27 +205,4 @@ export class ModifiedImageDiff extends React.Component< onCurrentImageLoad: this.onCurrentImageLoad, } } - - private render2Up(width: number, height: number, containerWidth: number) { - return ( - - ) - } - - private renderDifference(width: number, height: number) { - return - } - - private renderOnionSkin(width: number, height: number) { - return - } - - private renderSwipe(width: number, height: number) { - return - } } From a878160c113b9a54ae918e41b74cb58d66cb2ea4 Mon Sep 17 00:00:00 2001 From: joshaber Date: Thu, 3 Aug 2017 10:51:50 -0400 Subject: [PATCH 39/64] Make CSS do more of the work --- .../diff/image-diffs/modified-image-diff.tsx | 11 ++- app/src/ui/diff/image-diffs/onion-skin.tsx | 82 +++++++++---------- app/styles/ui/_diff.scss | 55 ++++++++----- 3 files changed, 81 insertions(+), 67 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index da74243c0a6..0e48dd451bf 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -146,9 +146,7 @@ export class ModifiedImageDiff extends React.Component< public render() { return (
-
- {this.renderCurrentDiffType()} -
+ {this.renderCurrentDiffType()} case ImageDiffType.OnionSkin: - return + return ( + + ) case ImageDiffType.Difference: return diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index cfdf934ab2d..6a284939ceb 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -2,70 +2,70 @@ import * as React from 'react' import { ICommonImageDiffProperties } from './modified-image-diff' import { renderImage } from './render-image' -/** The height of the controls. */ -const ControlHeight = 30 - -/** The amount the slider is inset on its X axis. */ -const SliderXInset = 129 - -/** The padding between the slider and the image on the Y axis. */ -const SliderYPadding = 10 - interface IOnionSkinState { readonly crossfade: number } +interface IOnionSkinProps extends ICommonImageDiffProperties { + readonly onContainerRef: (e: HTMLElement | null) => void +} + export class OnionSkin extends React.Component< - ICommonImageDiffProperties, + IOnionSkinProps, IOnionSkinState > { - public constructor(props: ICommonImageDiffProperties) { + public constructor(props: IOnionSkinProps) { super(props) this.state = { crossfade: 1 } } public render() { - const height = this.props.maxSize.height - ControlHeight - const style = { - height, + const style: React.CSSProperties = { + height: this.props.maxSize.height, width: this.props.maxSize.width, } - return ( -
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: height, - maxWidth: this.props.maxSize.width, - }, - })} -
+ return ( +
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: height, - maxWidth: this.props.maxSize.width, - }, - })} +
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+ +
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
Date: Thu, 3 Aug 2017 11:04:55 -0400 Subject: [PATCH 40/64] Rework diff blend --- .../ui/diff/image-diffs/difference-blend.tsx | 60 ++++++++++++------- .../diff/image-diffs/modified-image-diff.tsx | 7 ++- app/styles/ui/_diff.scss | 36 +++++++---- 3 files changed, 67 insertions(+), 36 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 856f727db63..68f4cfdf54f 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -2,38 +2,52 @@ import * as React from 'react' import { renderImage } from './render-image' import { ICommonImageDiffProperties } from './modified-image-diff' +interface IDifferenceBlendProps extends ICommonImageDiffProperties { + readonly onContainerRef: (e: HTMLElement | null) => void +} + export class DifferenceBlend extends React.Component< - ICommonImageDiffProperties, + IDifferenceBlendProps, {} > { public render() { return (
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} -
+
+
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
-
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - mixBlendMode: 'difference', - }, - })} +
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + mixBlendMode: 'difference', + }, + })} +
+
) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 0e48dd451bf..c2f8442f825 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -188,7 +188,12 @@ export class ModifiedImageDiff extends React.Component< ) case ImageDiffType.Difference: - return + return ( + + ) default: return assertNever(type, `Unknown diff type: ${type}`) diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 351600b3a07..5c75fe1dcb1 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -311,6 +311,27 @@ } } +.diff-blend-sizing-container { + flex: 1; + display: flex; + justify-content: center; + + .image-container { + position: relative; + + .image-diff__before, + .image-diff__after { + position: absolute; + top: 0; + left: 0; + img : { + border: 0; + background: transparent; + } + } + } +} + .image-diff_inner { &--two-up { display: flex; @@ -326,18 +347,9 @@ } &--difference { - position: relative; - - .image-diff__before, - .image-diff__after { - position: absolute; - top: 0; - left: 0; - img : { - border: 0; - background: transparent; - } - } + display: flex; + flex-direction: column; + flex: 1; } &--fade { From e34895d616491a3695cc80efa05ee055d61b5868 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:10:20 -0400 Subject: [PATCH 41/64] Extract sizing into its own file --- .../diff/image-diffs/modified-image-diff.tsx | 51 +------------------ app/src/ui/diff/image-diffs/sizing.ts | 49 ++++++++++++++++++ 2 files changed, 50 insertions(+), 50 deletions(-) create mode 100644 app/src/ui/diff/image-diffs/sizing.ts diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index c2f8442f825..41273ce0a42 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -8,6 +8,7 @@ import { DifferenceBlend } from './difference-blend' import { OnionSkin } from './onion-skin' import { Swipe } from './swipe' import { assertNever } from '../../../lib/fatal-error' +import { IImageSize, getMaxFitSize } from './sizing' interface IModifiedImageDiffProps { readonly previous: Image @@ -16,11 +17,6 @@ interface IModifiedImageDiffProps { readonly onChangeDiffType: (type: ImageDiffType) => void } -export interface IImageSize { - readonly width: number - readonly height: number -} - export interface ICommonImageDiffProperties { readonly maxSize: IImageSize @@ -39,51 +35,6 @@ interface IModifiedImageDiffState { readonly currentImageSize: IImageSize | null } -/** - * Get the size which fits in the container without scaling and maintaining - * aspect ratio. - */ -function getAspectFitSize( - imageSize: IImageSize, - containerSize: IImageSize -): IImageSize { - const heightRatio = - containerSize.height < imageSize.height - ? imageSize.height / containerSize.height - : 1 - const widthRatio = - containerSize.width < imageSize.width - ? imageSize.width / containerSize.width - : 1 - - let ratio = Math.max(1, widthRatio) - if (widthRatio < heightRatio) { - ratio = Math.max(1, heightRatio) - } - - return { - width: imageSize.width / ratio, - height: imageSize.height / ratio, - } -} - -/** - * Get the size which will fit the bigger of the two images while maintaining - * aspect ratio. - */ -function getMaxFitSize( - previousImageSize: IImageSize, - currentImageSize: IImageSize, - containerSize: IImageSize -): IImageSize { - const previousSize = getAspectFitSize(previousImageSize, containerSize) - const currentSize = getAspectFitSize(currentImageSize, containerSize) - - const width = Math.max(previousSize.width, currentSize.width) - const height = Math.max(previousSize.height, currentSize.height) - return { width, height } -} - /** A component which renders the changes to an image in the repository */ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, diff --git a/app/src/ui/diff/image-diffs/sizing.ts b/app/src/ui/diff/image-diffs/sizing.ts new file mode 100644 index 00000000000..185618f7dc5 --- /dev/null +++ b/app/src/ui/diff/image-diffs/sizing.ts @@ -0,0 +1,49 @@ +export interface IImageSize { + readonly width: number + readonly height: number +} + +/** + * Get the size which fits in the container without scaling and maintaining + * aspect ratio. + */ +export function getAspectFitSize( + imageSize: IImageSize, + containerSize: IImageSize +): IImageSize { + const heightRatio = + containerSize.height < imageSize.height + ? imageSize.height / containerSize.height + : 1 + const widthRatio = + containerSize.width < imageSize.width + ? imageSize.width / containerSize.width + : 1 + + let ratio = Math.max(1, widthRatio) + if (widthRatio < heightRatio) { + ratio = Math.max(1, heightRatio) + } + + return { + width: imageSize.width / ratio, + height: imageSize.height / ratio, + } +} + +/** + * Get the size which will fit the bigger of the two images while maintaining + * aspect ratio. + */ +export function getMaxFitSize( + previousImageSize: IImageSize, + currentImageSize: IImageSize, + containerSize: IImageSize +): IImageSize { + const previousSize = getAspectFitSize(previousImageSize, containerSize) + const currentSize = getAspectFitSize(currentImageSize, containerSize) + + const width = Math.max(previousSize.width, currentSize.width) + const height = Math.max(previousSize.height, currentSize.height) + return { width, height } +} From d54aff9430a5416ff6bb18f34f69411596ec8982 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:12:11 -0400 Subject: [PATCH 42/64] Fix the import --- app/src/ui/diff/image-diffs/two-up.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index d8b1aac752e..2a0e800d763 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import { renderImage } from './render-image' -import { IImageSize, ICommonImageDiffProperties } from './modified-image-diff' +import { ICommonImageDiffProperties } from './modified-image-diff' +import { IImageSize } from './sizing' /** * The height of the Deleted/Added labels at the top and the image dimension From e20ae703fc672e79012bcf2e6099af3505b9fe5f Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:31:05 -0400 Subject: [PATCH 43/64] Fix up swipe --- .../diff/image-diffs/modified-image-diff.tsx | 7 +- app/src/ui/diff/image-diffs/swipe.tsx | 86 ++++++++++--------- app/styles/ui/_diff.scss | 74 +++++++++------- 3 files changed, 95 insertions(+), 72 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 41273ce0a42..8830619e804 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -128,7 +128,12 @@ export class ModifiedImageDiff extends React.Component< ) case ImageDiffType.Swipe: - return + return ( + + ) case ImageDiffType.OnionSkin: return ( diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index b727976e3c4..a4e5a8ad81e 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -2,72 +2,73 @@ import * as React from 'react' import { ICommonImageDiffProperties } from './modified-image-diff' import { renderImage } from './render-image' -/** The height of the controls. */ -const ControlHeight = 30 - /** How much bigger the slider should be than the images. */ const SliderOverflow = 14 /** The padding between the slider and the image on the Y axis. */ -const SliderYPadding = 10 +// const SliderYPadding = 10 interface ISwipeState { - readonly swipePercentage: number + readonly percentage: number +} + +interface ISwipeProps extends ICommonImageDiffProperties { + readonly onContainerRef: (e: HTMLElement | null) => void } -export class Swipe extends React.Component< - ICommonImageDiffProperties, - ISwipeState -> { - public constructor(props: ICommonImageDiffProperties) { +export class Swipe extends React.Component { + public constructor(props: ISwipeProps) { super(props) - this.state = { swipePercentage: 1 } + this.state = { percentage: 1 } } public render() { - const height = this.props.maxSize.height - ControlHeight - const style = { - height, + const style: React.CSSProperties = { + height: this.props.maxSize.height, width: this.props.maxSize.width, } return ( -
-
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: height, - maxWidth: this.props.maxSize.width, - }, - })} -
-
-
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: height, - maxWidth: this.props.maxSize.width, - }, - })} +
+
+
+
+ {renderImage(this.props.current, { + onLoad: this.onCurrentImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
+
+ {renderImage(this.props.previous, { + onLoad: this.onPreviousImageLoad, + style: { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + }, + })} +
+
@@ -84,6 +85,7 @@ export class Swipe extends React.Component< } private onValueChange = (e: React.ChangeEvent) => { - this.setState({ swipePercentage: e.currentTarget.valueAsNumber }) + const percentage = e.currentTarget.valueAsNumber + this.setState({ percentage }) } } diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 5c75fe1dcb1..a17c2d486b7 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -332,6 +332,46 @@ } } +.swipe-sizing-container { + margin: 0; + margin-bottom: var(--spacing-half); + flex: 1; + display: flex; + justify-content: center; + + .image-container { + position: relative; + + .image-diff__before, + .image-diff__after { + @include checkboard-background; + position: absolute; + margin: 0; + + img { + border: 0; + background: transparent; + } + } + + .image-diff__before { + border: 1px solid var(--color-deleted); + right: 0; + } + .image-diff__after { + border: 1px solid var(--color-new); + } + + .image-diff--swiper { + border-left: 1px solid var(--text-secondary-color); + margin: 0; + overflow: hidden; + position: absolute; + right: 0; + } + } +} + .image-diff_inner { &--two-up { display: flex; @@ -363,36 +403,12 @@ } &--swipe { - margin: 0; - margin-bottom: 30px; - position: relative; - - .image-diff__before, - .image-diff__after { - @include checkboard-background; - position: absolute; - margin: 0; - - img { - border: 0; - background: transparent; - } - } - - .image-diff__before { - border: 1px solid var(--color-deleted); - right: 0; - } - .image-diff__after { - border: 1px solid var(--color-new); - } + display: flex; + flex-direction: column; + flex: 1; - .image-diff--swiper { - border-left: 1px solid var(--text-secondary-color); - margin: 0; - overflow: hidden; - position: absolute; - right: 0; + .slider { + align-self: center; } } } From 421d506f40017d482b99f1236a719e2f4379d5b6 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:34:02 -0400 Subject: [PATCH 44/64] Standardize onContainerRef --- .../ui/diff/image-diffs/difference-blend.tsx | 6 +---- .../diff/image-diffs/modified-image-diff.tsx | 24 +++++-------------- app/src/ui/diff/image-diffs/onion-skin.tsx | 8 ++----- app/src/ui/diff/image-diffs/swipe.tsx | 11 ++++----- 4 files changed, 14 insertions(+), 35 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 68f4cfdf54f..74da22158e5 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -2,12 +2,8 @@ import * as React from 'react' import { renderImage } from './render-image' import { ICommonImageDiffProperties } from './modified-image-diff' -interface IDifferenceBlendProps extends ICommonImageDiffProperties { - readonly onContainerRef: (e: HTMLElement | null) => void -} - export class DifferenceBlend extends React.Component< - IDifferenceBlendProps, + ICommonImageDiffProperties, {} > { public render() { diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 8830619e804..7f670b53810 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -25,6 +25,8 @@ export interface ICommonImageDiffProperties { readonly onPreviousImageLoad: (img: HTMLImageElement) => void readonly onCurrentImageLoad: (img: HTMLImageElement) => void + + readonly onContainerRef: (e: HTMLElement | null) => void } interface IModifiedImageDiffState { @@ -128,28 +130,13 @@ export class ModifiedImageDiff extends React.Component< ) case ImageDiffType.Swipe: - return ( - - ) + return case ImageDiffType.OnionSkin: - return ( - - ) + return case ImageDiffType.Difference: - return ( - - ) + return default: return assertNever(type, `Unknown diff type: ${type}`) @@ -167,6 +154,7 @@ export class ModifiedImageDiff extends React.Component< current: this.props.current, onPreviousImageLoad: this.onPreviousImageLoad, onCurrentImageLoad: this.onCurrentImageLoad, + onContainerRef: this.onContainerRef, } } } diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 6a284939ceb..742981563c8 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -6,15 +6,11 @@ interface IOnionSkinState { readonly crossfade: number } -interface IOnionSkinProps extends ICommonImageDiffProperties { - readonly onContainerRef: (e: HTMLElement | null) => void -} - export class OnionSkin extends React.Component< - IOnionSkinProps, + ICommonImageDiffProperties, IOnionSkinState > { - public constructor(props: IOnionSkinProps) { + public constructor(props: ICommonImageDiffProperties) { super(props) this.state = { crossfade: 1 } diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index a4e5a8ad81e..e0460c550d1 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -12,12 +12,11 @@ interface ISwipeState { readonly percentage: number } -interface ISwipeProps extends ICommonImageDiffProperties { - readonly onContainerRef: (e: HTMLElement | null) => void -} - -export class Swipe extends React.Component { - public constructor(props: ISwipeProps) { +export class Swipe extends React.Component< + ICommonImageDiffProperties, + ISwipeState +> { + public constructor(props: ICommonImageDiffProperties) { super(props) this.state = { percentage: 1 } From 49d095b7c81023f9436787d2f61675e1118dce7c Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:34:06 -0400 Subject: [PATCH 45/64] Use it in two-up too --- app/src/ui/diff/image-diffs/two-up.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index 2a0e800d763..d7110e4c69b 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -33,7 +33,7 @@ export class TwoUp extends React.Component { const currentImageSize = this.props.currentImageSize || zeroSize return ( -
+
Deleted
{renderImage(this.props.previous, { From 01eaa7f8d0f09c0a3cb3eea163f459aa58bd4f96 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:48:40 -0400 Subject: [PATCH 46/64] :book: --- app/src/ui/diff/image-diffs/modified-image-diff.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 7f670b53810..5cabd58ef14 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -18,14 +18,26 @@ interface IModifiedImageDiffProps { } export interface ICommonImageDiffProperties { + /** The biggest size to fit both the previous and current images. */ readonly maxSize: IImageSize + /** The previous image. */ readonly previous: Image + + /** The current image. */ readonly current: Image + /** A function to call when the previous image has loaded. */ readonly onPreviousImageLoad: (img: HTMLImageElement) => void + + /** A function to call when the current image has loaded. */ readonly onCurrentImageLoad: (img: HTMLImageElement) => void + /** + * A function to call which provides the element that will contain the + * images. This container element is used to measure the available space for + * the images, which is then used to calculate the aspect fit size. + */ readonly onContainerRef: (e: HTMLElement | null) => void } From 27750b97a361ae320ae045ed7c0ca85a5512cb93 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:48:53 -0400 Subject: [PATCH 47/64] Provide a type declaration for ResizeObserver --- app/src/lib/globals.d.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/lib/globals.d.ts b/app/src/lib/globals.d.ts index d39293e8c9a..001e0f700d7 100644 --- a/app/src/lib/globals.d.ts +++ b/app/src/lib/globals.d.ts @@ -212,3 +212,16 @@ declare namespace Electron { ): AppleActionOnDoubleClickPref } } + +// https://wicg.github.io/ResizeObserver/#resizeobserverentry +interface IResizeObserverEntry { + readonly target: HTMLElement + readonly contentRect: ClientRect +} + +declare class ResizeObserver { + public constructor(cb: (entries: ReadonlyArray) => void) + + public disconnect(): void + public observe(e: HTMLElement): void +} From eb138ce0867794ef914949f0d17b74eafd52bbed Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 09:49:30 -0400 Subject: [PATCH 48/64] Use the types --- app/src/ui/history/commit-summary.tsx | 15 +++++---------- app/src/ui/list.tsx | 13 ++++--------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/app/src/ui/history/commit-summary.tsx b/app/src/ui/history/commit-summary.tsx index 6f084fbdf32..ca4887f8693 100644 --- a/app/src/ui/history/commit-summary.tsx +++ b/app/src/ui/history/commit-summary.tsx @@ -31,18 +31,12 @@ interface ICommitSummaryState { readonly isOverflowed: boolean } -// https://wicg.github.io/ResizeObserver/#resizeobserverentry -interface IResizeObserverEntry { - readonly target: Element - readonly contentRect: ClientRect -} - export class CommitSummary extends React.Component< ICommitSummaryProps, ICommitSummaryState > { private descriptionScrollViewRef: HTMLDivElement | null - private readonly resizeObserver: any | null = null + private readonly resizeObserver: ResizeObserver | null = null private updateOverflowTimeoutId: number | null = null public constructor(props: ICommitSummaryProps) { @@ -50,10 +44,11 @@ export class CommitSummary extends React.Component< this.state = { isOverflowed: false } - const ResizeObserver = (window as any).ResizeObserver + const ResizeObserverClass: typeof ResizeObserver = (window as any) + .ResizeObserver - if (ResizeObserver || false) { - this.resizeObserver = new ResizeObserver( + if (ResizeObserverClass || false) { + this.resizeObserver = new ResizeObserverClass( (entries: ReadonlyArray) => { for (const entry of entries) { if (entry.target === this.descriptionScrollViewRef) { diff --git a/app/src/ui/list.tsx b/app/src/ui/list.tsx index ba55bb90d58..afa9488ab19 100644 --- a/app/src/ui/list.tsx +++ b/app/src/ui/list.tsx @@ -179,12 +179,6 @@ interface IListState { readonly rowIdPrefix?: string } -// https://wicg.github.io/ResizeObserver/#resizeobserverentry -interface IResizeObserverEntry { - readonly target: HTMLElement - readonly contentRect: ClientRect -} - export class List extends React.Component { private focusItem: HTMLDivElement | null = null private fakeScroll: HTMLDivElement | null = null @@ -211,7 +205,7 @@ export class List extends React.Component { private list: HTMLDivElement | null = null private grid: React.Component | null - private readonly resizeObserver: any | null = null + private readonly resizeObserver: ResizeObserver | null = null private updateSizeTimeoutId: number | null = null public constructor(props: IListProps) { @@ -219,10 +213,11 @@ export class List extends React.Component { this.state = {} - const ResizeObserver = (window as any).ResizeObserver + const ResizeObserverClass: typeof ResizeObserver = (window as any) + .ResizeObserver if (ResizeObserver || false) { - this.resizeObserver = new ResizeObserver( + this.resizeObserver = new ResizeObserverClass( (entries: ReadonlyArray) => { for (const entry of entries) { if (entry.target === this.list) { From 6d04421a8c62afa59df2382a425ec295856cd419 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 10:12:13 -0400 Subject: [PATCH 49/64] Don't need the explicit type annotation anymore --- app/src/ui/history/commit-summary.tsx | 24 +++++++++----------- app/src/ui/list.tsx | 32 +++++++++++++-------------- 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/app/src/ui/history/commit-summary.tsx b/app/src/ui/history/commit-summary.tsx index ca4887f8693..f2626813dba 100644 --- a/app/src/ui/history/commit-summary.tsx +++ b/app/src/ui/history/commit-summary.tsx @@ -48,22 +48,20 @@ export class CommitSummary extends React.Component< .ResizeObserver if (ResizeObserverClass || false) { - this.resizeObserver = new ResizeObserverClass( - (entries: ReadonlyArray) => { - for (const entry of entries) { - if (entry.target === this.descriptionScrollViewRef) { - // We might end up causing a recursive update by updating the state - // when we're reacting to a resize so we'll defer it until after - // react is done with this frame. - if (this.updateOverflowTimeoutId !== null) { - clearImmediate(this.updateOverflowTimeoutId) - } - - this.updateOverflowTimeoutId = setImmediate(this.onResized) + this.resizeObserver = new ResizeObserverClass(entries => { + for (const entry of entries) { + if (entry.target === this.descriptionScrollViewRef) { + // We might end up causing a recursive update by updating the state + // when we're reacting to a resize so we'll defer it until after + // react is done with this frame. + if (this.updateOverflowTimeoutId !== null) { + clearImmediate(this.updateOverflowTimeoutId) } + + this.updateOverflowTimeoutId = setImmediate(this.onResized) } } - ) + }) } } diff --git a/app/src/ui/list.tsx b/app/src/ui/list.tsx index afa9488ab19..621e6797467 100644 --- a/app/src/ui/list.tsx +++ b/app/src/ui/list.tsx @@ -217,26 +217,24 @@ export class List extends React.Component { .ResizeObserver if (ResizeObserver || false) { - this.resizeObserver = new ResizeObserverClass( - (entries: ReadonlyArray) => { - for (const entry of entries) { - if (entry.target === this.list) { - // We might end up causing a recursive update by updating the state - // when we're reacting to a resize so we'll defer it until after - // react is done with this frame. - if (this.updateSizeTimeoutId !== null) { - clearImmediate(this.updateSizeTimeoutId) - } - - this.updateSizeTimeoutId = setImmediate( - this.onResized, - entry.target, - entry.contentRect - ) + this.resizeObserver = new ResizeObserverClass(entries => { + for (const entry of entries) { + if (entry.target === this.list) { + // We might end up causing a recursive update by updating the state + // when we're reacting to a resize so we'll defer it until after + // react is done with this frame. + if (this.updateSizeTimeoutId !== null) { + clearImmediate(this.updateSizeTimeoutId) } + + this.updateSizeTimeoutId = setImmediate( + this.onResized, + entry.target, + entry.contentRect + ) } } - ) + }) } } From b0adaf7f36da682ec075b81dc9b22bd9b2848915 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 10:13:14 -0400 Subject: [PATCH 50/64] s/IImageSize/ISize --- .../ui/diff/image-diffs/modified-image-diff.tsx | 8 ++++---- app/src/ui/diff/image-diffs/sizing.ts | 16 ++++++++-------- app/src/ui/diff/image-diffs/two-up.tsx | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index 5cabd58ef14..e25e3419f36 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -8,7 +8,7 @@ import { DifferenceBlend } from './difference-blend' import { OnionSkin } from './onion-skin' import { Swipe } from './swipe' import { assertNever } from '../../../lib/fatal-error' -import { IImageSize, getMaxFitSize } from './sizing' +import { ISize, getMaxFitSize } from './sizing' interface IModifiedImageDiffProps { readonly previous: Image @@ -19,7 +19,7 @@ interface IModifiedImageDiffProps { export interface ICommonImageDiffProperties { /** The biggest size to fit both the previous and current images. */ - readonly maxSize: IImageSize + readonly maxSize: ISize /** The previous image. */ readonly previous: Image @@ -43,10 +43,10 @@ export interface ICommonImageDiffProperties { interface IModifiedImageDiffState { /** The size of the previous image. */ - readonly previousImageSize: IImageSize | null + readonly previousImageSize: ISize | null /** The size of the current image. */ - readonly currentImageSize: IImageSize | null + readonly currentImageSize: ISize | null } /** A component which renders the changes to an image in the repository */ diff --git a/app/src/ui/diff/image-diffs/sizing.ts b/app/src/ui/diff/image-diffs/sizing.ts index 185618f7dc5..46396ea8db8 100644 --- a/app/src/ui/diff/image-diffs/sizing.ts +++ b/app/src/ui/diff/image-diffs/sizing.ts @@ -1,4 +1,4 @@ -export interface IImageSize { +export interface ISize { readonly width: number readonly height: number } @@ -8,9 +8,9 @@ export interface IImageSize { * aspect ratio. */ export function getAspectFitSize( - imageSize: IImageSize, - containerSize: IImageSize -): IImageSize { + imageSize: ISize, + containerSize: ISize +): ISize { const heightRatio = containerSize.height < imageSize.height ? imageSize.height / containerSize.height @@ -36,10 +36,10 @@ export function getAspectFitSize( * aspect ratio. */ export function getMaxFitSize( - previousImageSize: IImageSize, - currentImageSize: IImageSize, - containerSize: IImageSize -): IImageSize { + previousImageSize: ISize, + currentImageSize: ISize, + containerSize: ISize +): ISize { const previousSize = getAspectFitSize(previousImageSize, containerSize) const currentSize = getAspectFitSize(currentImageSize, containerSize) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index d7110e4c69b..7e4cfc07c3e 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { renderImage } from './render-image' import { ICommonImageDiffProperties } from './modified-image-diff' -import { IImageSize } from './sizing' +import { ISize } from './sizing' /** * The height of the Deleted/Added labels at the top and the image dimension @@ -14,8 +14,8 @@ const XPadding = 20 interface ITwoUpProps extends ICommonImageDiffProperties { readonly containerWidth: number - readonly previousImageSize: IImageSize | null - readonly currentImageSize: IImageSize | null + readonly previousImageSize: ISize | null + readonly currentImageSize: ISize | null } export class TwoUp extends React.Component { From e6d2449464aa957d620af4884229691aa059037f Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 10:15:57 -0400 Subject: [PATCH 51/64] Use a resize observer instead of getting the client rect in render --- .../diff/image-diffs/modified-image-diff.tsx | 82 +++++++++++++------ 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/app/src/ui/diff/image-diffs/modified-image-diff.tsx b/app/src/ui/diff/image-diffs/modified-image-diff.tsx index e25e3419f36..ab52d42ab5d 100644 --- a/app/src/ui/diff/image-diffs/modified-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/modified-image-diff.tsx @@ -47,6 +47,9 @@ interface IModifiedImageDiffState { /** The size of the current image. */ readonly currentImageSize: ISize | null + + /** The size of the container element. */ + readonly containerSize: ISize | null } /** A component which renders the changes to an image in the repository */ @@ -54,14 +57,37 @@ export class ModifiedImageDiff extends React.Component< IModifiedImageDiffProps, IModifiedImageDiffState > { - private container: HTMLDivElement | null + private container: HTMLElement | null + + private readonly resizeObserver: ResizeObserver + private resizedTimeoutID: number | null = null public constructor(props: IModifiedImageDiffProps) { super(props) + this.resizeObserver = new ResizeObserver(entries => { + for (const entry of entries) { + if (entry.target === this.container) { + // We might end up causing a recursive update by updating the state + // when we're reacting to a resize so we'll defer it until after + // react is done with this frame. + if (this.resizedTimeoutID !== null) { + clearImmediate(this.resizedTimeoutID) + } + + this.resizedTimeoutID = setImmediate( + this.onResized, + entry.target, + entry.contentRect + ) + } + } + }) + this.state = { previousImageSize: null, currentImageSize: null, + containerSize: null, } } @@ -75,10 +101,20 @@ export class ModifiedImageDiff extends React.Component< this.setState({ currentImageSize: size }) } - private getScaledDimensions() { + private onResized = (target: HTMLElement, contentRect: ClientRect) => { + this.resizedTimeoutID = null + + const containerSize = { + width: contentRect.width, + height: contentRect.height, + } + this.setState({ containerSize }) + } + + private getMaxSize(): ISize { const zeroSize = { width: 0, height: 0, containerWidth: 0 } - const container = this.container - if (!container) { + const containerSize = this.state.containerSize + if (!containerSize) { return zeroSize } @@ -87,25 +123,23 @@ export class ModifiedImageDiff extends React.Component< return zeroSize } - const boundingRect = container.getBoundingClientRect() - const containerWidth = boundingRect.width - const containerHeight = boundingRect.height - const containerSize = { width: containerWidth, height: containerHeight } - const maxFitSize = getMaxFitSize( previousImageSize, currentImageSize, containerSize ) - return { - ...maxFitSize, - containerWidth, - } + return maxFitSize } - private onContainerRef = (c: HTMLDivElement | null) => { + private onContainerRef = (c: HTMLElement | null) => { this.container = c + + this.resizeObserver.disconnect() + + if (c) { + this.resizeObserver.observe(c) + } } public render() { @@ -128,38 +162,36 @@ export class ModifiedImageDiff extends React.Component< } private renderCurrentDiffType() { - const { height, width, containerWidth } = this.getScaledDimensions() + const maxSize = this.getMaxSize() const type = this.props.diffType switch (type) { case ImageDiffType.TwoUp: return ( ) case ImageDiffType.Swipe: - return + return case ImageDiffType.OnionSkin: - return + return case ImageDiffType.Difference: - return + return default: return assertNever(type, `Unknown diff type: ${type}`) } } - private getCommonProps( - width: number, - height: number - ): ICommonImageDiffProperties { - const maxSize = { width, height } + private getCommonProps(maxSize: ISize): ICommonImageDiffProperties { return { maxSize, previous: this.props.previous, From 7f34c1e46df5e3669fd1eccef6cc702f15f848d0 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 12:53:59 -0400 Subject: [PATCH 52/64] Stay centered --- app/styles/ui/_diff.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index a17c2d486b7..2019c3f81af 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -286,6 +286,7 @@ flex: 1; display: flex; justify-content: center; + align-items: center; .image-diff__before, .image-diff__after { @@ -315,6 +316,7 @@ flex: 1; display: flex; justify-content: center; + align-items: center; .image-container { position: relative; @@ -338,6 +340,7 @@ flex: 1; display: flex; justify-content: center; + align-items: center; .image-container { position: relative; @@ -377,6 +380,7 @@ display: flex; flex: 1; justify-content: center; + align-items: center; .image-diff__before { margin-right: 7.5px; From 46e5e929955881ec4656e52caa4457b5c7aab4d9 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 13:09:12 -0400 Subject: [PATCH 53/64] Clip --- app/styles/ui/_diff.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index 2019c3f81af..ad383129502 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -292,6 +292,7 @@ .image-diff__after { position: absolute; margin: 0; + overflow: hidden; img { border: 0; @@ -350,6 +351,7 @@ @include checkboard-background; position: absolute; margin: 0; + overflow: hidden; img { border: 0; From a8587a9b4954457024b54a1b548489feb28dd420 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 13:09:19 -0400 Subject: [PATCH 54/64] :fire: --- app/src/ui/diff/image-diffs/swipe.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index e0460c550d1..937d20f1011 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -5,9 +5,6 @@ import { renderImage } from './render-image' /** How much bigger the slider should be than the images. */ const SliderOverflow = 14 -/** The padding between the slider and the image on the Y axis. */ -// const SliderYPadding = 10 - interface ISwipeState { readonly percentage: number } From 44abf81f83a2143dd687af149ea856ccb7c92aac Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 13:09:22 -0400 Subject: [PATCH 55/64] :book: --- app/src/lib/dispatcher/dispatcher.ts | 1 + app/src/ui/tab-bar.tsx | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/app/src/lib/dispatcher/dispatcher.ts b/app/src/lib/dispatcher/dispatcher.ts index 1992fdd1bad..faf32c60b06 100644 --- a/app/src/lib/dispatcher/dispatcher.ts +++ b/app/src/lib/dispatcher/dispatcher.ts @@ -941,6 +941,7 @@ export class Dispatcher { } } + /** Change the selected image diff type. */ public changeImageDiffType(type: ImageDiffType): Promise { return this.appStore._changeImageDiffType(type) } diff --git a/app/src/ui/tab-bar.tsx b/app/src/ui/tab-bar.tsx index 1960a248337..c1b383e13a6 100644 --- a/app/src/ui/tab-bar.tsx +++ b/app/src/ui/tab-bar.tsx @@ -1,8 +1,12 @@ import * as React from 'react' import * as classNames from 'classnames' +/** The tab bar type. */ export enum TabBarType { + /** Standard tabs */ Tabs, + + /** Simpler switch appearance */ Switch, } From 378b5dc5b102e00027e00690ef33877a651b9318 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 14:08:27 -0400 Subject: [PATCH 56/64] Use a real component for images --- .../diff/image-diffs/deleted-image-diff.tsx | 4 +- app/src/ui/diff/image-diffs/diff-image.tsx | 28 ++++++++++ .../ui/diff/image-diffs/difference-blend.tsx | 52 ++++++++----------- .../ui/diff/image-diffs/new-image-diff.tsx | 4 +- app/src/ui/diff/image-diffs/onion-skin.tsx | 39 ++++++-------- app/src/ui/diff/image-diffs/render-image.tsx | 16 ------ app/src/ui/diff/image-diffs/swipe.tsx | 40 ++++++-------- app/src/ui/diff/image-diffs/two-up.tsx | 28 ++++------ 8 files changed, 98 insertions(+), 113 deletions(-) create mode 100644 app/src/ui/diff/image-diffs/diff-image.tsx delete mode 100644 app/src/ui/diff/image-diffs/render-image.tsx diff --git a/app/src/ui/diff/image-diffs/deleted-image-diff.tsx b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx index 4bbaf3d5995..d4cc2ac4c25 100644 --- a/app/src/ui/diff/image-diffs/deleted-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { Image } from '../../../models/diff' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' interface IDeletedImageDiffProps { readonly previous: Image @@ -17,7 +17,7 @@ export class DeletedImageDiff extends React.Component<
Deleted
- {renderImage(this.props.previous)} +
) diff --git a/app/src/ui/diff/image-diffs/diff-image.tsx b/app/src/ui/diff/image-diffs/diff-image.tsx new file mode 100644 index 00000000000..67ff04efa95 --- /dev/null +++ b/app/src/ui/diff/image-diffs/diff-image.tsx @@ -0,0 +1,28 @@ +import * as React from 'react' + +import { Image } from '../../../models/diff' + +interface IImageProps { + readonly image: Image + + readonly style?: React.CSSProperties + + readonly onElementLoad?: (img: HTMLImageElement) => void +} + +export class DiffImage extends React.Component { + public render() { + const image = this.props.image + const imageSource = `data:${image.mediaType};base64,${image.contents}` + + return ( + + ) + } + + private onLoad = (e: React.SyntheticEvent) => { + if (this.props.onElementLoad) { + this.props.onElementLoad(e.currentTarget) + } + } +} diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 74da22158e5..8733f6b2ae3 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' import { ICommonImageDiffProperties } from './modified-image-diff' export class DifferenceBlend extends React.Component< @@ -7,6 +7,11 @@ export class DifferenceBlend extends React.Component< {} > { public render() { + const maxSize: React.CSSProperties = { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + } + return (
-
+
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} +
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, +
) } - - private onPreviousImageLoad = (e: React.SyntheticEvent) => { - this.props.onPreviousImageLoad(e.currentTarget) - } - - private onCurrentImageLoad = (e: React.SyntheticEvent) => { - this.props.onCurrentImageLoad(e.currentTarget) - } } diff --git a/app/src/ui/diff/image-diffs/new-image-diff.tsx b/app/src/ui/diff/image-diffs/new-image-diff.tsx index b73803b2cd6..4531868e6b8 100644 --- a/app/src/ui/diff/image-diffs/new-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/new-image-diff.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { Image } from '../../../models/diff' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' interface INewImageDiffProps { readonly current: Image @@ -14,7 +14,7 @@ export class NewImageDiff extends React.Component {
Added
- {renderImage(this.props.current)} +
) diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 742981563c8..484ba70be30 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { ICommonImageDiffProperties } from './modified-image-diff' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' interface IOnionSkinState { readonly crossfade: number @@ -22,6 +22,11 @@ export class OnionSkin extends React.Component< width: this.props.maxSize.width, } + const maxSize: React.CSSProperties = { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + } + return (
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} +
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} +
@@ -73,14 +74,6 @@ export class OnionSkin extends React.Component< ) } - private onPreviousImageLoad = (e: React.SyntheticEvent) => { - this.props.onPreviousImageLoad(e.currentTarget) - } - - private onCurrentImageLoad = (e: React.SyntheticEvent) => { - this.props.onCurrentImageLoad(e.currentTarget) - } - private onValueChange = (e: React.ChangeEvent) => { this.setState({ crossfade: e.currentTarget.valueAsNumber }) } diff --git a/app/src/ui/diff/image-diffs/render-image.tsx b/app/src/ui/diff/image-diffs/render-image.tsx deleted file mode 100644 index 72a0e3ed359..00000000000 --- a/app/src/ui/diff/image-diffs/render-image.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from 'react' - -import { Image } from '../../../models/diff' - -export function renderImage( - image: Image | undefined, - props?: React.HTMLProps -) { - if (!image) { - return null - } - - const imageSource = `data:${image.mediaType};base64,${image.contents}` - - return -} diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index 937d20f1011..72a9eb588d1 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { ICommonImageDiffProperties } from './modified-image-diff' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' /** How much bigger the slider should be than the images. */ const SliderOverflow = 14 @@ -24,18 +24,22 @@ export class Swipe extends React.Component< height: this.props.maxSize.height, width: this.props.maxSize.width, } + + const maxSize: React.CSSProperties = { + maxHeight: this.props.maxSize.height, + maxWidth: this.props.maxSize.width, + } + return (
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} +
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style: { - maxHeight: this.props.maxSize.height, - maxWidth: this.props.maxSize.width, - }, - })} +
@@ -72,14 +74,6 @@ export class Swipe extends React.Component< ) } - private onPreviousImageLoad = (e: React.SyntheticEvent) => { - this.props.onPreviousImageLoad(e.currentTarget) - } - - private onCurrentImageLoad = (e: React.SyntheticEvent) => { - this.props.onCurrentImageLoad(e.currentTarget) - } - private onValueChange = (e: React.ChangeEvent) => { const percentage = e.currentTarget.valueAsNumber this.setState({ percentage }) diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index 7e4cfc07c3e..c9ae7fe5b37 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { renderImage } from './render-image' +import { DiffImage } from './diff-image' import { ICommonImageDiffProperties } from './modified-image-diff' import { ISize } from './sizing' @@ -36,10 +36,11 @@ export class TwoUp extends React.Component {
Deleted
- {renderImage(this.props.previous, { - onLoad: this.onPreviousImageLoad, - style, - })} +
W: {previousImageSize.width}px |{' '} @@ -49,10 +50,11 @@ export class TwoUp extends React.Component {
Added
- {renderImage(this.props.current, { - onLoad: this.onCurrentImageLoad, - style, - })} +
W: {currentImageSize.width}px |{' '} @@ -62,12 +64,4 @@ export class TwoUp extends React.Component {
) } - - private onPreviousImageLoad = (e: React.SyntheticEvent) => { - this.props.onPreviousImageLoad(e.currentTarget) - } - - private onCurrentImageLoad = (e: React.SyntheticEvent) => { - this.props.onCurrentImageLoad(e.currentTarget) - } } From 43bef07e3183e5181cef036b6460fdc0c8c8c43e Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 14:09:48 -0400 Subject: [PATCH 57/64] Hwoops --- app/src/ui/diff/image-diffs/difference-blend.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 8733f6b2ae3..b83c4cf76d5 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -7,6 +7,11 @@ export class DifferenceBlend extends React.Component< {} > { public render() { + const style: React.CSSProperties = { + height: this.props.maxSize.height, + width: this.props.maxSize.width, + } + const maxSize: React.CSSProperties = { maxHeight: this.props.maxSize.height, maxWidth: this.props.maxSize.width, @@ -21,7 +26,7 @@ export class DifferenceBlend extends React.Component< className="diff-blend-sizing-container" ref={this.props.onContainerRef} > -
+
Date: Fri, 11 Aug 2017 14:16:41 -0400 Subject: [PATCH 58/64] Update CSS names --- .../diff/image-diffs/deleted-image-diff.tsx | 4 +-- .../ui/diff/image-diffs/difference-blend.tsx | 2 +- .../ui/diff/image-diffs/new-image-diff.tsx | 4 +-- app/src/ui/diff/image-diffs/onion-skin.tsx | 4 +-- app/src/ui/diff/image-diffs/swipe.tsx | 4 +-- app/src/ui/diff/image-diffs/two-up.tsx | 12 +++---- app/styles/ui/_diff.scss | 36 +++++++++---------- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/app/src/ui/diff/image-diffs/deleted-image-diff.tsx b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx index d4cc2ac4c25..100c204b222 100644 --- a/app/src/ui/diff/image-diffs/deleted-image-diff.tsx +++ b/app/src/ui/diff/image-diffs/deleted-image-diff.tsx @@ -15,8 +15,8 @@ export class DeletedImageDiff extends React.Component< public render() { return (
-
-
Deleted
+
+
Deleted
diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index b83c4cf76d5..126b5fb0482 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -27,7 +27,7 @@ export class DifferenceBlend extends React.Component< ref={this.props.onContainerRef} >
-
+
{ public render() { return (
-
-
Added
+
+
Added
diff --git a/app/src/ui/diff/image-diffs/onion-skin.tsx b/app/src/ui/diff/image-diffs/onion-skin.tsx index 484ba70be30..0357f8c2e12 100644 --- a/app/src/ui/diff/image-diffs/onion-skin.tsx +++ b/app/src/ui/diff/image-diffs/onion-skin.tsx @@ -34,7 +34,7 @@ export class OnionSkin extends React.Component< ref={this.props.onContainerRef} >
-
+
-
+
-
+
{ return (
-
-
Deleted
+
+
Deleted
-
+
W: {previousImageSize.width}px |{' '} H: {previousImageSize.height}px
-
-
Added
+
+
Added
-
+
W: {currentImageSize.width}px |{' '} H: {currentImageSize.height}px
diff --git a/app/styles/ui/_diff.scss b/app/styles/ui/_diff.scss index ad383129502..fa013922db3 100644 --- a/app/styles/ui/_diff.scss +++ b/app/styles/ui/_diff.scss @@ -250,15 +250,15 @@ margin: 10px auto 0; } - .image-diff__before { + .image-diff-previous { color: var(--color-deleted); } - .image-diff__after { + .image-diff-current { color: var(--color-new); } - .image-diff__before, - .image-diff__after { + .image-diff-previous, + .image-diff-current { text-align: center; img { @@ -267,12 +267,12 @@ } } - .image-diff__header { + .image-diff-header { font-weight: var(--font-weight-semibold); padding-bottom: 10px; } - .image-diff__footer { + .image-diff-footer { color: var(--text-secondary-color); .strong { font-weight: var(--font-weight-semibold); @@ -288,8 +288,8 @@ justify-content: center; align-items: center; - .image-diff__before, - .image-diff__after { + .image-diff-previous, + .image-diff-current { position: absolute; margin: 0; overflow: hidden; @@ -300,10 +300,10 @@ } } - .image-diff__before { + .image-diff-previous { border: 1px solid var(--color-deleted); } - .image-diff__after { + .image-diff-current { border: 1px solid var(--color-new); } @@ -322,8 +322,8 @@ .image-container { position: relative; - .image-diff__before, - .image-diff__after { + .image-diff-previous, + .image-diff-current { position: absolute; top: 0; left: 0; @@ -346,8 +346,8 @@ .image-container { position: relative; - .image-diff__before, - .image-diff__after { + .image-diff-previous, + .image-diff-current { @include checkboard-background; position: absolute; margin: 0; @@ -359,11 +359,11 @@ } } - .image-diff__before { + .image-diff-previous { border: 1px solid var(--color-deleted); right: 0; } - .image-diff__after { + .image-diff-current { border: 1px solid var(--color-new); } @@ -384,10 +384,10 @@ justify-content: center; align-items: center; - .image-diff__before { + .image-diff-previous { margin-right: 7.5px; } - .image-diff__after { + .image-diff-current { margin-left: 7.5px; } } From 20b24046551a714f4d2b126b1cda8e96c3b1d804 Mon Sep 17 00:00:00 2001 From: joshaber Date: Fri, 11 Aug 2017 14:19:51 -0400 Subject: [PATCH 59/64] Clean up more CSS names --- .../ui/diff/image-diffs/difference-blend.tsx | 7 +-- app/src/ui/diff/image-diffs/onion-skin.tsx | 2 +- app/src/ui/diff/image-diffs/swipe.tsx | 2 +- app/src/ui/diff/image-diffs/two-up.tsx | 2 +- app/styles/ui/_diff.scss | 60 +++++++++---------- 5 files changed, 34 insertions(+), 39 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 126b5fb0482..b270319d7f1 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -18,10 +18,7 @@ export class DifferenceBlend extends React.Component< } return ( -
+
-
+
+
+
diff --git a/app/src/ui/diff/image-diffs/two-up.tsx b/app/src/ui/diff/image-diffs/two-up.tsx index 7e16d7714e7..b7ddc388ed9 100644 --- a/app/src/ui/diff/image-diffs/two-up.tsx +++ b/app/src/ui/diff/image-diffs/two-up.tsx @@ -33,7 +33,7 @@ export class TwoUp extends React.Component { const currentImageSize = this.props.currentImageSize || zeroSize return ( -
+
Deleted
Date: Fri, 11 Aug 2017 14:21:52 -0400 Subject: [PATCH 60/64] Move things around --- .../ui/diff/image-diffs/difference-blend.tsx | 5 +- app/src/ui/diff/image-diffs/onion-skin.tsx | 5 +- app/src/ui/diff/image-diffs/swipe.tsx | 2 +- app/styles/ui/_diff.scss | 164 +++++++++--------- 4 files changed, 85 insertions(+), 91 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index b270319d7f1..0ecfe66e7a7 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -19,10 +19,7 @@ export class DifferenceBlend extends React.Component< return (
-
+
-
+
-
+
Date: Fri, 11 Aug 2017 14:22:55 -0400 Subject: [PATCH 61/64] Take a swipe --- app/src/ui/diff/image-diffs/swipe.tsx | 2 +- app/styles/ui/_diff.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/ui/diff/image-diffs/swipe.tsx b/app/src/ui/diff/image-diffs/swipe.tsx index 728f39884ba..3521bfb7f46 100644 --- a/app/src/ui/diff/image-diffs/swipe.tsx +++ b/app/src/ui/diff/image-diffs/swipe.tsx @@ -42,7 +42,7 @@ export class Swipe extends React.Component< />
Date: Fri, 11 Aug 2017 14:32:30 -0400 Subject: [PATCH 62/64] Fix difference blend --- app/src/ui/diff/image-diffs/difference-blend.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index 0ecfe66e7a7..a5942e4aa85 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -25,10 +25,7 @@ export class DifferenceBlend extends React.Component<
From 0ab6f2d1901288328eda93373db94b6771446879 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 15 Aug 2017 09:57:27 -0400 Subject: [PATCH 63/64] Only attach the ref to one element --- app/src/ui/diff/image-diffs/difference-blend.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/ui/diff/image-diffs/difference-blend.tsx b/app/src/ui/diff/image-diffs/difference-blend.tsx index a5942e4aa85..a2e1e7a2bd4 100644 --- a/app/src/ui/diff/image-diffs/difference-blend.tsx +++ b/app/src/ui/diff/image-diffs/difference-blend.tsx @@ -19,7 +19,7 @@ export class DifferenceBlend extends React.Component< return (
-
+
Date: Tue, 15 Aug 2017 09:58:08 -0400 Subject: [PATCH 64/64] Snakes tho --- app/src/lib/dispatcher/app-store.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/lib/dispatcher/app-store.ts b/app/src/lib/dispatcher/app-store.ts index 72f659b2329..75bef2c536a 100644 --- a/app/src/lib/dispatcher/app-store.ts +++ b/app/src/lib/dispatcher/app-store.ts @@ -107,7 +107,7 @@ const externalEditorDefault = ExternalEditor.Atom const externalEditorKey: string = 'externalEditor' const imageDiffTypeDefault = ImageDiffType.TwoUp -const imageDiffTypeKey: string = 'imageDiffType' +const imageDiffTypeKey = 'image-diff-type' export class AppStore { private emitter = new Emitter()