1- import React , { useState , useEffect } from 'react'
1+ import React , { useState , useEffect , useDeferredValue } from 'react'
22import styled from '@emotion/styled'
33import { Card , Input , Typography } from 'antd'
44import GitHubButton from 'react-github-btn'
@@ -10,7 +10,11 @@ import logo from '../../assets/logo.svg'
1010import { SHOW_LATEST_RCS } from '../../utils'
1111import { useGetLanguageFromURL } from '../../hooks/get-language-from-url'
1212import { useGetPackageNameFromURL } from '../../hooks/get-package-name-from-url'
13- import { DEFAULT_APP_NAME , PACKAGE_NAMES } from '../../constants'
13+ import {
14+ DEFAULT_APP_NAME ,
15+ DEFAULT_APP_PACKAGE ,
16+ PACKAGE_NAMES ,
17+ } from '../../constants'
1418import { TroubleshootingGuidesButton } from '../common/TroubleshootingGuidesButton'
1519import { updateURL } from '../../utils/update-url'
1620import { deviceSizes } from '../../utils/device-sizes'
@@ -59,6 +63,34 @@ const TitleContainer = styled.div`
5963 margin-bottom: 8px;
6064`
6165
66+ const AppNameField = styled . div `
67+ width: 100%;
68+
69+ @media ${ deviceSizes . tablet } {
70+ padding-right: 5px;
71+ }
72+ `
73+
74+ const AppPackageField = styled . div `
75+ width: 100%;
76+
77+ @media ${ deviceSizes . tablet } {
78+ padding-left: 5px;
79+ }
80+ `
81+
82+ const AppDetailsContainer = styled . div `
83+ display: flex;
84+ flex-direction: column;
85+ justify-content: space-between;
86+ gap: 15px;
87+
88+ @media ${ deviceSizes . tablet } {
89+ flex-direction: row;
90+ gap: 0;
91+ }
92+ `
93+
6294const SettingsContainer = styled . div `
6395 display: flex;
6496 align-items: center;
@@ -91,10 +123,12 @@ const Home = () => {
91123 [ `${ SHOW_LATEST_RCS } ` ] : false ,
92124 } )
93125
94- const [ appName , setAppName ] = useState ( {
95- input : '' ,
96- diff : DEFAULT_APP_NAME ,
97- } )
126+ const [ appName , setAppName ] = useState ( '' )
127+ const [ appPackage , setAppPackage ] = useState ( '' )
128+
129+ // Avoid UI lag when typing.
130+ const deferredAppName = useDeferredValue ( appName )
131+ const deferredAppPackage = useDeferredValue ( appPackage )
98132
99133 const homepageUrl = process . env . PUBLIC_URL
100134
@@ -110,11 +144,6 @@ const Home = () => {
110144 return
111145 }
112146
113- setAppName ( ( { input } ) => ( {
114- input : '' ,
115- diff : input || DEFAULT_APP_NAME ,
116- } ) )
117-
118147 setFromVersion ( fromVersion )
119148 setToVersion ( toVersion )
120149 setShouldShowDiff ( true )
@@ -190,17 +219,31 @@ const Home = () => {
190219 </ SettingsContainer >
191220 </ HeaderContainer >
192221
193- < Typography . Title level = { 5 } > What's your app name?</ Typography . Title >
222+ < AppDetailsContainer >
223+ < AppNameField >
224+ < Typography . Title level = { 5 } > What's your app name?</ Typography . Title >
194225
195- < Input
196- size = "large"
197- placeholder = { DEFAULT_APP_NAME }
198- value = { appName . input }
199- onChange = { ( { target } ) =>
200- setAppName ( ( { diff } ) => ( { input : target . value , diff } ) )
201- }
202- />
226+ < Input
227+ size = "large"
228+ placeholder = { DEFAULT_APP_NAME }
229+ value = { appName }
230+ onChange = { ( { target } ) => setAppName ( ( value ) => target . value ) }
231+ />
232+ </ AppNameField >
233+
234+ < AppPackageField >
235+ < Typography . Title level = { 5 } >
236+ What's your app package?
237+ </ Typography . Title >
203238
239+ < Input
240+ size = "large"
241+ placeholder = { DEFAULT_APP_PACKAGE }
242+ value = { appPackage }
243+ onChange = { ( { target } ) => setAppPackage ( ( value ) => target . value ) }
244+ />
245+ </ AppPackageField >
246+ </ AppDetailsContainer >
204247 < VersionSelector
205248 key = { packageName }
206249 showDiff = { handleShowDiff }
@@ -210,11 +253,19 @@ const Home = () => {
210253 isPackageNameDefinedInURL = { isPackageNameDefinedInURL }
211254 />
212255 </ Container >
256+ { /*
257+ Pass empty values for app name and package if they're the defaults to
258+ hint to diffing components they don't need to further patch the
259+ rn-diff-purge output.
260+ */ }
213261 < DiffViewer
214262 shouldShowDiff = { shouldShowDiff }
215263 fromVersion = { fromVersion }
216264 toVersion = { toVersion }
217- appName = { appName . diff }
265+ appName = { deferredAppName !== DEFAULT_APP_NAME ? deferredAppName : '' }
266+ appPackage = {
267+ deferredAppPackage !== DEFAULT_APP_PACKAGE ? deferredAppPackage : ''
268+ }
218269 packageName = { packageName }
219270 language = { language }
220271 />
0 commit comments