{"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":""}