{"version":3,"file":"static/js/213.50a50e14.chunk.js","mappings":"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","sources":["components/search-box.js"],"sourcesContent":["import {\n openGoogleLogin,\n resetStore,\n setSearchQuery,\n setTransparency,\n setWAlletPoints,\n} from '../actions/main';\nimport {getStationList, getWalletPointsApi} from '../api/api';\nimport {capitalizeStnName, formatDate} from '../utils/common-methods';\nimport {Config} from '../utils/Config';\nimport {LOCALSTORAGE_KEY} from '../utils/constants.js';\nimport {CookieName, getCookie, setCookie} from '../utils/cookieManager';\n\nimport DateFnsUtils from '@date-io/date-fns';\nimport Button from '@material-ui/core/Button';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport {createTheme, MuiThemeProvider} from '@material-ui/core/styles';\nimport {withStyles} from '@material-ui/core/styles';\nimport {DatePicker, MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {format} from 'date-fns';\nimport addDays from 'date-fns/addDays';\nimport firebase from 'firebase/app';\nimport PropTypes from 'prop-types';\nimport query from 'query-string';\nimport React, {Component, lazy, Suspense} from 'react';\nimport {\n AsyncTypeahead,\n Highlighter,\n Menu,\n MenuItem,\n} from 'react-bootstrap-typeahead';\nimport {connect} from 'react-redux';\n\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\nimport 'firebase/analytics';\n\nconst HomePageContent = lazy(() => import('./homepage-content'));\nconst Footer = lazy(() => import('./footer'));\n\nconst theme = createTheme({\n typography: {\n useNextVariants: true,\n htmlFontSize: 10,\n },\n palette: {\n primary: {main: '#43a64e'},\n },\n});\n\nconst styles = {\n selected: {\n color: '#43A64E !important',\n '&:focus': {\n outline: 'none !important',\n },\n },\n title: {\n textAlign: 'center',\n color: '#333',\n },\n};\n\nlet source = {\n city: 'NEW DELHI',\n state: 'DELHI',\n stationCode: 'NDLS',\n stationName: 'NEW DELHI',\n};\n\nlet destination = {\n city: 'MUMBAI',\n state: 'MAHARASHTRA',\n stationCode: 'MMCT',\n stationName: 'MUMBAI CENTRAL',\n};\n\nclass SearchBox extends Component {\n constructor(props) {\n super(props);\n this.props.reset();\n this.props.setTransparency(true);\n\n // take default date tomorrow\n let doj = addDays(new Date(), 1);\n const today = new Date();\n\n const sQuery = localStorage.getItem(LOCALSTORAGE_KEY.SOURCE_STATION);\n const dQuery = localStorage.getItem(LOCALSTORAGE_KEY.DESTINATION_STATION);\n const dojQuery = localStorage.getItem(LOCALSTORAGE_KEY.DOJ);\n\n try {\n const sQueryJSON = JSON.parse(sQuery);\n if (sQuery && Object.keys(sQueryJSON.data).length > 2) {\n source = sQueryJSON.data;\n this.props.setSearchQuery(sQueryJSON);\n } else {\n const data = {type: 'source', data: source};\n localStorage.setItem(\n LOCALSTORAGE_KEY.SOURCE_STATION,\n JSON.stringify(data)\n );\n this.props.setSearchQuery(data);\n }\n\n const dQueryJSON = JSON.parse(dQuery);\n if (dQuery && Object.keys(dQueryJSON.data).length > 2) {\n destination = dQueryJSON.data;\n this.props.setSearchQuery(dQueryJSON);\n } else {\n const data = {type: 'destination', data: destination};\n localStorage.setItem(\n LOCALSTORAGE_KEY.DESTINATION_STATION,\n JSON.stringify(data)\n );\n this.props.setSearchQuery(data);\n }\n\n const dojObj = {\n type: 'doj',\n data: format(doj, 'dd-MM-yyyy'),\n };\n\n if (dojQuery) {\n const parsedJSON = JSON.parse(dojQuery);\n if (\n new Date(parsedJSON.data).setHours(0, 0, 0, 0) >=\n today.setHours(0, 0, 0, 0)\n ) {\n doj = new Date(parsedJSON.data.split('-').join('/'));\n dojObj.data = formatDate(parsedJSON.data, 'reverse');\n }\n }\n this.props.setSearchQuery(dojObj);\n } catch (error) {\n console.error(error);\n }\n\n this.state = {\n isSnackBarOpen: false,\n doj,\n source,\n destination,\n openSource: false,\n openDestination: false,\n isSwapStation: false,\n typeaheadConfig: {\n isLoading: false,\n multiple: false,\n options: [],\n minLength: 0,\n // isTypeaheadFocus: true,\n },\n maxSelectDate:\n Config?.firebaseRemoteConfig?.WebArpBookingDaysConfig\n ?.calendarArpDays || 60,\n };\n }\n\n fetchWalletPoints = (authToken) => {\n getWalletPointsApi(authToken)\n .then((res) => {\n const twoDecimal = Number(res.PromotionalWalletPointsTotalinRs);\n this.props.setWAlletPoints(twoDecimal);\n })\n .catch(() => {\n this.openSnackBar('Unable to get wallet points');\n });\n };\n\n componentDidMount() {\n const authToken = getCookie(CookieName.USERTOKEN);\n\n if (authToken) {\n this.fetchWalletPoints(authToken);\n }\n\n const parsedLocationQuery = query.parse(this.props.location.search, {\n ignoreQueryPrefix: true,\n });\n\n const utmSource = parsedLocationQuery.utm_source;\n if (utmSource) setCookie('ckt_utm_src', utmSource, 30);\n\n const amitadUid = parsedLocationQuery.admitad_uid;\n if (amitadUid) setCookie('admitad_uid', amitadUid, 30);\n setCookie('rBookingVisited', 1, 3);\n\n window.addEventListener('FirebaseConfigUpdated', this.handleConfigUpdate);\n }\n\n handleConfigUpdate = () => {\n // Update the state with the new configuration\n this.setState({\n maxSelectDate:\n Config?.firebaseRemoteConfig?.WebArpBookingDaysConfig?.calendarArpDays,\n });\n };\n\n componentWillUnmount = () => {\n this.props.setTransparency(false);\n // Clean up the event listener\n window.removeEventListener(\n 'FirebaseConfigUpdated',\n this.handleConfigUpdate\n );\n };\n\n _handleSearch = (query) => {\n const typeaheadConfig = this.state.typeaheadConfig;\n typeaheadConfig.isLoading = true;\n this.setState({typeaheadConfig});\n\n getStationList(query).then((res) => {\n if (res.Status === 'success') {\n typeaheadConfig.isLoading = false;\n typeaheadConfig.options = res.StationList;\n this.setState({\n typeaheadConfig,\n });\n }\n });\n };\n\n handleOnChange = (selected, type, a) => {\n const {openSource, openDestination} = this.state;\n if (selected) {\n const query = {\n type,\n data: selected,\n };\n\n this.props.setSearchQuery(query);\n\n if (type === 'source') {\n this.setState({\n source: selected,\n openSource: !openSource,\n });\n firebase.analytics().logEvent('ChangedFromStation');\n localStorage.setItem(\n LOCALSTORAGE_KEY.SOURCE_STATION,\n JSON.stringify(query)\n );\n } else {\n this.setState({\n destination: selected,\n openDestination: !openDestination,\n });\n firebase.analytics().logEvent('ChangedToStation');\n localStorage.setItem(\n LOCALSTORAGE_KEY.DESTINATION_STATION,\n JSON.stringify(query)\n );\n }\n }\n };\n\n openSnackBar = (message) => {\n const msg = (\n <div className=\"snackbar-msg\" id=\"message-id\">\n {message}\n </div>\n );\n this.setState({isSnackBarOpen: true, message: msg});\n };\n\n handleClose = () => {\n this.setState({isSnackBarOpen: false});\n };\n\n handleChange = (name) => (event) => {\n if (name === 'doj') {\n this.setState({[name]: new Date(event)});\n const dojObj = {\n type: 'doj',\n data: format(new Date(event), 'dd-MM-yyyy'),\n };\n this.props.setSearchQuery(dojObj);\n } else {\n this.setState({\n [name]: event.target.value,\n });\n }\n };\n\n handleOnClick = (type) => {\n if (type === 'search-trains') {\n const sQuery = this.props.searchQuery;\n if (this.verifyInput(sQuery)) {\n const source =\n sQuery.source.stationName + ' ' + sQuery.source.stationCode;\n const destination =\n sQuery.destination.stationName + ' ' + sQuery.destination.stationCode;\n const url = `${Config.URL}/trains/from/${source}/to/${destination}/${sQuery.doj}`;\n this.props.history.push(url);\n }\n firebase.analytics().logEvent('ClickedBookTickets');\n return;\n }\n\n if (type === 'source') {\n this.setState((prevState) => ({\n openSource: !prevState.openSource,\n }));\n } else {\n this.setState((prevState) => ({\n openDestination: !prevState.openDestination,\n }));\n }\n };\n\n swapStation = () => {\n const s = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY.SOURCE_STATION));\n const d = JSON.parse(\n localStorage.getItem(LOCALSTORAGE_KEY.DESTINATION_STATION)\n );\n\n const sQuery = {type: 'source', data: d.data};\n localStorage.setItem(\n LOCALSTORAGE_KEY.SOURCE_STATION,\n JSON.stringify(sQuery)\n );\n this.props.setSearchQuery(sQuery);\n\n const dQuery = {type: 'destination', data: s.data};\n this.props.setSearchQuery(dQuery);\n localStorage.setItem(\n LOCALSTORAGE_KEY.DESTINATION_STATION,\n JSON.stringify(dQuery)\n );\n\n this.setState({\n source: sQuery.data,\n destination: dQuery.data,\n isSwapStation: !this.state.isSwapStation,\n });\n };\n\n verifyInput = (sq) => {\n const dojPattern = /^([0-9]{2})\\/([0-9]{2})\\/([0-9]{4})$/;\n\n if (!sq?.source?.stationName) {\n this.openSnackBar('Please enter source station');\n return false;\n }\n\n if (!sq?.destination?.stationName) {\n this.openSnackBar('Please enter destination station');\n return false;\n }\n\n if (\n sq.source.stationName.toLowerCase() ===\n sq.destination.stationName.toLowerCase()\n ) {\n this.openSnackBar('Source and Destination cannot be same');\n return false;\n }\n\n if (!sq?.doj?.length > 1 && !dojPattern.test(sq.doj)) {\n this.openSnackBar('Please enter journey date');\n return false;\n }\n\n return true;\n };\n\n render() {\n const {\n openSource,\n openDestination,\n isSwapStation,\n source,\n destination,\n typeaheadConfig,\n doj,\n maxSelectDate,\n } = this.state;\n console.log('maxSelectDate', maxSelectDate, typeof maxSelectDate);\n const SearchBox = (\n <div className=\"search-form\">\n <div className=\"source\">\n <img\n width=\"40\"\n height=\"40\"\n src=\"https://www.confirmtkt.com/img/icons/ic-search-from-desktop.svg\"\n alt=\"search\"\n ></img>\n <div\n className=\"label-container\"\n onClick={() => this.handleOnClick('source')}\n >\n <label htmlFor=\"source-station\">From</label>\n <span>\n {capitalizeStnName(\n `${source.stationCode} - ${source.stationName}`\n )}\n </span>\n </div>\n\n {openSource && (\n <div className=\"search-input\">\n <AsyncTypeahead\n delay={400}\n autoFocus\n filterBy={() => true}\n id=\"source\"\n labelKey={(stn) =>\n capitalizeStnName(`${stn.stationCode} - ${stn.stationName}`)\n }\n // defaultSelected={source}\n {...typeaheadConfig}\n placeholder=\"Enter from\"\n onSearch={this._handleSearch}\n // onChange={(selected) => {\n // this.handleOnChange(selected[0], 'source', 'a');\n // }}\n renderMenu={(results, menuProps, props) => (\n <Menu {...menuProps}>\n {results.length === 0 && (\n <div className=\"dropdown-title\">No matches found.</div>\n )}\n {results.length > 0 && props.text === '' && (\n <div className=\"dropdown-title\">Popular Search </div>\n )}\n {results.map((stn, index) => (\n <MenuItem\n key={index}\n onClick={() => this.handleOnChange(stn, 'source')}\n option={stn}\n position={index}\n >\n <Highlighter search={props.text}>\n {capitalizeStnName(\n `${stn.stationCode} - ${stn.stationName}`\n )}\n </Highlighter>\n </MenuItem>\n ))}\n </Menu>\n )}\n onFocus={() => {\n getStationList().then((res) => {\n if (res.Status === 'success') {\n const typeaheadConfig = this.state.typeaheadConfig;\n typeaheadConfig.options = res.StationList;\n this.setState({\n typeaheadConfig,\n });\n }\n });\n }}\n onBlur={() =>\n this.setState((prevState) => ({\n openSource: !prevState.openSource,\n }))\n }\n inputProps={{\n autoCapitalize: 'none',\n autoComplete: 'off',\n spellCheck: 'false',\n autoCorrect: 'off',\n }}\n />\n </div>\n )}\n </div>\n <div className=\"swap-container\">\n <img\n onClick={this.swapStation}\n className={`swap-icon ${isSwapStation && 'rotate'}`}\n alt=\"calendar\"\n width=\"40\"\n height=\"40\"\n src=\"https://www.confirmtkt.com/img/icons/ic-switch-from-to.svg\"\n />\n </div>\n <div className=\"destination\">\n <img\n style={{marginLeft: '12px'}}\n width=\"40\"\n height=\"40\"\n src=\"https://www.confirmtkt.com/img/icons/ic-search-to-desktop.svg\"\n alt=\"search\"\n ></img>\n <div\n className=\"label-container\"\n onClick={() => this.handleOnClick('destination')}\n >\n <label htmlFor=\"destination-station\">To</label>\n <span>\n {capitalizeStnName(\n `${destination.stationCode} - ${destination.stationName}`\n )}\n </span>\n </div>\n {openDestination && (\n <div className=\"search-input\">\n <AsyncTypeahead\n delay={400}\n autoFocus\n filterBy={() => true}\n id=\"destination\"\n labelKey={(stn) =>\n capitalizeStnName(`${stn.stationCode} - ${stn.stationName}`)\n }\n // defaultSelected={destination}\n {...typeaheadConfig}\n placeholder=\"Enter to\"\n onSearch={this._handleSearch}\n // onChange={(selected) => {\n // this.handleOnChange(selected[0], 'destination');\n // }}\n renderMenu={(results, menuProps, props) => (\n <Menu {...menuProps}>\n {results.length === 0 && (\n <div className=\"dropdown-title\">No matches found.</div>\n )}\n {results.length > 0 && props.text === '' && (\n <div className=\"dropdown-title\">Popular Search </div>\n )}\n {results.map((stn, index) => (\n <MenuItem\n key={index}\n onClick={() => this.handleOnChange(stn, 'destination')}\n option={stn}\n position={index}\n >\n <Highlighter search={props.text}>\n {capitalizeStnName(\n `${stn.stationCode} - ${stn.stationName}`\n )}\n </Highlighter>\n </MenuItem>\n ))}\n </Menu>\n )}\n onBlur={() =>\n this.setState((prevState) => ({\n openDestination: !prevState.openDestination,\n }))\n }\n onFocus={() => {\n getStationList().then((res) => {\n if (res.Status === 'success') {\n const typeaheadConfig = this.state.typeaheadConfig;\n typeaheadConfig.options = res.StationList;\n this.setState({\n typeaheadConfig,\n });\n }\n });\n }}\n inputProps={{\n autoCapitalize: 'none',\n autoComplete: 'off',\n spellCheck: 'false',\n autoCorrect: 'off',\n }}\n />\n </div>\n )}\n </div>\n <div className=\"doj\">\n <img\n width=\"40\"\n height=\"40\"\n src=\"https://www.confirmtkt.com/img/icons/ic-search-calender-desktop.svg\"\n alt=\"calender\"\n />\n <div className=\"label-container\">\n <label htmlFor=\"dateOfJourney\">Departure Date</label>\n <MuiThemeProvider theme={theme}>\n <MuiPickersUtilsProvider utils={DateFnsUtils}>\n <DatePicker\n className=\"doj-input\"\n autoOk\n id=\"dateOfJourney\"\n fullWidth\n disableToolbar\n variant=\"inline\"\n name=\"dateOfJourney\"\n value={doj}\n onChange={this.handleChange('doj')}\n InputProps={{disableUnderline: true}}\n maxDate={addDays(new Date(), maxSelectDate)}\n minDate={new Date()}\n format=\"eee, dd MMM\"\n />\n </MuiPickersUtilsProvider>\n </MuiThemeProvider>\n </div>\n </div>\n <Button\n variant=\"contained\"\n className=\"ctkt-btn-success\"\n onClick={() => this.handleOnClick('search-trains')}\n >\n SEARCH\n </Button>\n </div>\n );\n\n // const PromotionBanner = (\n // <div className=\"promotion-banner\">\n // <img\n // onClick={() => {\n // window.open('https://www.confirmtkt.com/covid19india-react/');\n // }}\n // width=\"500\"\n // src=\"https://www.confirmtkt.com/img/covid-19/Live-tracking-banner.png\"\n // ></img>\n // </div>\n // );\n\n const HomeBlock = (\n <div className=\"search-container\">\n <div className=\"banner-text-container\">\n {/* <img\n width=\"149\"\n height=\"164\"\n alt=\"brand-ambassador\"\n src=\"https://cdn.confirmtkt.com/img/actor_rana/rana_image_home@3x.png\"\n ></img> */}\n <div>\n <h1 className=\"title\">Train Ticket Booking</h1>\n <h2 className=\"sub-text\">Easy IRCTC Login</h2>\n </div>\n </div>\n {SearchBox}\n <img\n className=\"rcb-banner\"\n width=\"320\"\n height=\"250\"\n alt=\"RCB_Banner\"\n src=\"https://cdn.confirmtkt.com/img/rcb_banners/desktop_rcb_banner.png\"\n ></img>\n </div>\n );\n\n return (\n <div className=\"home-block\">\n {HomeBlock}\n <div className=\"search-powered-by\">\n <img\n width=\"32\"\n height=\"32\"\n className=\"irctc-logo\"\n src=\"https://www.confirmtkt.com/img/icons/ic-search-irctc.png\"\n alt=\"IRCTC\"\n />\n <h2>IRCTC Authorised Partner</h2>\n </div>\n\n <Snackbar\n anchorOrigin={{vertical: 'bottom', horizontal: 'center'}}\n open={this.state.isSnackBarOpen}\n onClose={this.handleClose}\n ContentProps={{\n 'aria-describedby': 'message-id',\n }}\n autoHideDuration={6000}\n message={this.state.message}\n />\n\n <Suspense fallback={<div />}>\n <HomePageContent />\n </Suspense>\n\n <Suspense fallback={<div />}>\n <Footer history={this.props.history} />\n </Suspense>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n searchQuery: state.searchReducer,\n trainListingReducer: state.trainListingReducer,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setSearchQuery: (query) => {\n dispatch(setSearchQuery(query));\n },\n setTransparency: (flag) => {\n dispatch(setTransparency(flag));\n },\n reset: () => {\n dispatch(resetStore());\n },\n setWAlletPoints: (points) => {\n dispatch(setWAlletPoints(points));\n },\n openGoogleLogin: (config) => {\n dispatch(openGoogleLogin(config));\n },\n };\n};\n\nSearchBox.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SearchBox));\n"],"names":["HomePageContent","lazy","Footer","theme","createTheme","typography","useNextVariants","htmlFontSize","palette","primary","main","source","city","state","stationCode","stationName","destination","SearchBox","Component","constructor","props","_Config$firebaseRemot3","_Config$firebaseRemot4","super","fetchWalletPoints","authToken","getWalletPointsApi","then","res","twoDecimal","Number","PromotionalWalletPointsTotalinRs","this","setWAlletPoints","catch","openSnackBar","handleConfigUpdate","_Config$firebaseRemot","_Config$firebaseRemot2","setState","maxSelectDate","Config","firebaseRemoteConfig","WebArpBookingDaysConfig","calendarArpDays","componentWillUnmount","setTransparency","window","removeEventListener","_handleSearch","query","typeaheadConfig","isLoading","getStationList","Status","options","StationList","handleOnChange","selected","type","a","openSource","openDestination","data","setSearchQuery","firebase","logEvent","localStorage","setItem","LOCALSTORAGE_KEY","SOURCE_STATION","JSON","stringify","DESTINATION_STATION","message","msg","_jsx","className","id","children","isSnackBarOpen","handleClose","handleChange","name","event","Date","dojObj","format","target","value","handleOnClick","prevState","sQuery","searchQuery","verifyInput","url","concat","URL","doj","history","push","swapStation","s","parse","getItem","dQuery","isSwapStation","sq","_sq$source","_sq$destination","_sq$doj","toLowerCase","length","test","reset","addDays","today","dojQuery","DOJ","sQueryJSON","Object","keys","dQueryJSON","parsedJSON","setHours","split","join","formatDate","error","console","multiple","minLength","componentDidMount","getCookie","CookieName","USERTOKEN","parsedLocationQuery","location","search","ignoreQueryPrefix","utmSource","utm_source","setCookie","amitadUid","admitad_uid","addEventListener","render","log","_jsxs","width","height","src","alt","onClick","htmlFor","capitalizeStnName","AsyncTypeahead","delay","autoFocus","filterBy","labelKey","stn","placeholder","onSearch","renderMenu","results","menuProps","Menu","text","map","index","MenuItem","option","position","Highlighter","onFocus","onBlur","inputProps","autoCapitalize","autoComplete","spellCheck","autoCorrect","style","marginLeft","MuiThemeProvider","MuiPickersUtilsProvider","utils","DateFnsUtils","DatePicker","autoOk","fullWidth","disableToolbar","variant","onChange","InputProps","disableUnderline","maxDate","minDate","Button","HomeBlock","Snackbar","anchorOrigin","vertical","horizontal","open","onClose","ContentProps","autoHideDuration","Suspense","fallback","connect","searchReducer","trainListingReducer","dispatch","flag","resetStore","points","openGoogleLogin","config","withStyles","color","outline","title","textAlign"],"sourceRoot":""}