{"version":3,"file":"static/js/6954.41ddd275.chunk.js","mappings":"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","sources":["shared/flight-search-bar-component/flight-search-bar-component.jsx","shared/flight-search-bar-component/flight-search-bar-module.jsx","shared/flight-search-hero/search-overlay.jsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\"\nimport * as dateHelper from \"../../booking/helpers/date\"\nimport * as endpoints from \"../../api/endpoints\"\nimport da from \"date-fns/locale/da\"\nimport enGB from \"date-fns/locale/en-GB\"\nimport Svg from \"../_svgs/svg\"\nimport SearchOverlay from \"../flight-search-hero/search-overlay\"\nimport OutsideClickTrigger from \"../../booking/components/common/OutsideClickTrigger\"\nimport * as SelectionFactoryHelper from \"../helpers/SelectionFactoryHelper\"\nimport { DateTime } from \"luxon\"\n\nexport default function FlightSearchBar(props) {\n  const dtLocale = dateHelper.luxonLocale(props.locale)\n  const zone = \"Europe/Copenhagen\"\n  const cphTimeConvert = DateTime.local().setLocale(dtLocale).setZone(zone) // gets local time and changes timezone to copenhagen to get correct time\n  const cphTime = cphTimeConvert.setZone(\"local\", { keepLocalTime: true }) // locks in copenhagen time and switches back to local timezone. This ensures the time will stay CPH time when we later converts the DateTime to a JS Date object.\n\n  const [q, setQ] = useState(\"\") //string that queries flights.\n  const [searchDate, setSearchDate] = useState(cphTime.set({ milliseconds: 0, seconds: 0, minutes: 60 }).minus({ hours: 1 }))\n  const [startDate, setStartDate] = useState(cphTime.set({ milliseconds: 0, seconds: 0, minutes: 60 }).minus({ hours: 1 }))\n  const [minDate, setMinDate] = useState(startDate.minus({ days: 1 }))\n\n  const [flights, setFlights] = useState([])\n  const [direction, setDirection] = useState(\"D\")\n  const [showOverlay, setShowOverlay] = useState(false)\n  const [datepickerOpen, setDatepickerOpen] = useState(false)\n  const [airports, setAirports] = useState([])\n  const [airlines, setAirlines] = useState([])\n  const [mobileInputFocus, setMobileInputFocus] = useState(false)\n  const [overInput, setOverInput] = useState(false)\n\n  // maxTime and minTime currently does not have use for a setter.\n  // reconsider if this should be in state or not.\n  const [minTime] = useState(cphTime.set({ hours: 0, minutes: 0, seconds: 0, milliseconds: 0 }))\n  const [maxTime] = useState(cphTime.set({ hours: 23, minutes: 0, seconds: 0, milliseconds: 0 }))\n\n  const initialState = {\n    flights,\n    direction,\n    q,\n    showOverlay,\n    searchDate,\n    minDate,\n    datepickerOpen,\n    minTime,\n    maxTime,\n    airports,\n    airlines,\n    mobileInputFocus,\n    startDate,\n    overInput,\n    search,\n  }\n\n  const [screenWidth, setScreenWidth] = useState(window.innerWidth)\n\n  useEffect(() => {\n    // Function to update the state with the current screen width\n    const updateScreenWidth = () => {\n      setScreenWidth(window.innerWidth)\n    }\n\n    // Add an event listener to the window's resize event\n    window.addEventListener(\"resize\", updateScreenWidth)\n\n    // Cleanup the event listener when the component unmounts\n    return () => {\n      window.removeEventListener(\"resize\", updateScreenWidth)\n    }\n  }, [])\n\n  useEffect(() => {\n    const handleFlightSearchRedirect = (event) => {\n      let flightId = document.getElementById(\"flight-search-input\")\n      let flightIsFocused = document.activeElement === flightId\n      if (event.key === \"Enter\" && q && flightIsFocused) {\n        window.location.href = `${direction === \"D\" ? props.departuresPage : props.arrivalsPage}?q=${q}&date=${searchDate.toFormat(\n          \"dd / MM / yyyy\",\n        )}&time=${searchDate.toFormat(\"HH\")}`\n      }\n    }\n    document.addEventListener(\"keydown\", handleFlightSearchRedirect)\n    return () => {\n      document.removeEventListener(\"keydown\", handleFlightSearchRedirect)\n    }\n  }, [q, searchDate, direction])\n\n  useEffect(() => {\n    const handleExitFlightSearchForm = (event) => {\n      if (event.key === \"Escape\") {\n        setShowOverlay(false)\n        const input = document.querySelector(\"#flight-search-input\")\n        if (input) {\n          input.blur()\n        }\n      }\n    }\n    document.addEventListener(\"keydown\", handleExitFlightSearchForm)\n    return () => {\n      document.removeEventListener(\"keydown\", handleExitFlightSearchForm)\n    }\n  }, [])\n\n  const handleDirectionChange = (direction, wasFocused) => {\n    if (screenWidth < 768) {\n      const input = document.getElementById(\"flight-search-input\")\n      if (input && wasFocused) {\n        input.focus()\n        setTimeout(() => {\n          setMobileInputFocus(true)\n        }, 20)\n      }\n    }\n    setDirection(direction)\n  }\n\n  //Calling search whenever Query, searchDate and Direction changes.\n  //Validation for if a search should occur happens in the search() method.\n  useEffect(() => {\n    search()\n  }, [q, searchDate, direction])\n\n  useEffect(() => {\n    const handleFlightSearchRedirect = (event) => {\n      let flightId = document.getElementById(\"flight-search-input\")\n      let flightIsFocused = document.activeElement === flightId\n\n      if (event.key === \"Enter\" && q && flightIsFocused) {\n        window.location.href = `${direction === \"D\" ? props.departuresPage : props.arrivalsPage}?q=${q}&date=${searchDate.toFormat(\n          \"dd / MM / yyyy\",\n        )}&time=${searchDate.toFormat(\"HH\")}`\n      }\n    }\n\n    document.addEventListener(\"keydown\", handleFlightSearchRedirect)\n\n    return () => {\n      document.removeEventListener(\"keydown\", handleFlightSearchRedirect)\n    }\n  }, [q, searchDate, direction])\n\n  useEffect(() => {\n    const handleExitFlightSearchForm = (event) => {\n      if (event.key === \"Escape\") {\n        setShowOverlay(false)\n        const input = document.querySelector(\"#flight-search-input\")\n        if (input) {\n          input.blur()\n        }\n      }\n    }\n\n    document.addEventListener(\"keydown\", handleExitFlightSearchForm)\n\n    return () => {\n      document.removeEventListener(\"keydown\", handleExitFlightSearchForm)\n    }\n  }, [])\n\n  const search = async () => {\n    if (q.length >= (props.minCharsBeforeSearch ?? 2)) {\n      const dt = searchDate\n      const zone = \"Europe/Copenhagen\"\n      const cphTime = dt.setZone(zone, { keepLocalTime: true }) // set zone to copenhagen and keep local time, which is already cph time\n      const start = cphTime.toUTC() // convert to UTC which is what Solr expects\n      const end = cphTime.endOf(\"day\").toUTC() // convert to UTC which is what Solr expects\n      const flightsData = { direction: direction, query: q, startDateTime: start, endDateTime: end, language: props.locale }\n\n      // use this data and call GetAirports endpoint to get airports from solr core instead of flightinfo\n      // const airportsData = { language: props.locale, query: q, limit: props.allFlightsLimit }\n      const returns = await Promise.all([getFlights(flightsData), getAirports(flightsData)])\n        .then((responses) => {\n          return Promise.all(\n            responses.map((response) => {\n              return response\n            }),\n          )\n        })\n        .then((data) => {\n          return data\n        })\n        .catch((err) => {\n          console.log(err)\n        })\n      const flights = returns[0]\n      const airports = returns[1]\n      const airlines = getAirlines(flights)\n      setFlights(flights)\n      setAirports(airports)\n      setAirlines(airlines)\n    }\n  }\n\n  const handleDateChange = async (dateInput) => {\n    let dateTime = DateTime.fromJSDate(dateInput)\n    const startOfMinDate = minDate.startOf(\"day\")\n    const startOfNewDate = dateTime.startOf(\"day\")\n    const time = dateTime.toFormat(\"HH:mm\")\n\n    setSearchDate((prevState) => {\n      const startOfPrevDate = prevState.startOf(\"day\")\n      const prevTime = prevState.toFormat(\"HH:mm\")\n\n      if (startOfMinDate.toMillis() === startOfNewDate.toMillis()) {\n        if (dateTime <= minDate || time === prevTime) {\n          setMinDate(dateTime)\n          return dateTime\n        }\n        return dateTime\n      } else {\n        if (startOfPrevDate.toMillis() !== startOfNewDate.toMillis()) {\n          dateTime = dateTime.set({ hours: 0, minutes: 0, seconds: 0, milliseconds: 0 })\n        }\n        return dateTime\n      }\n    })\n  }\n\n  const getAirlines = (flights) => {\n    let airlines = []\n    if (flights && flights.length > 0) {\n      const result = Array.from(new Set(flights.map((f) => f.IataAirline))).map((iata) => {\n        return {\n          iata: iata,\n          name: flights.find((f) => f.IataAirline === iata).Airline,\n          nameMobile: flights.find((f) => f.IataAirline === iata).AirlineMobile,\n        }\n      })\n      airlines = result\n    }\n    return airlines\n  }\n\n  const getAirports = async (data) => {\n    // return endpoints.getAirports(data)\n    try {\n      const res = await endpoints.getAirportsFromFlights(data)\n      const data_2 = res.data\n      let airports = []\n      if (data_2) {\n        airports = data_2\n      }\n      return airports\n    } catch (err) {\n      console.log(err)\n    }\n  }\n\n  const getFlights = async (data) => {\n    try {\n      const res = await endpoints.getFlightInfoTable(data)\n      const data_2 = res.data\n      let flights = []\n      if (data_2) {\n        flights = data_2\n      }\n      return flights\n    } catch (err) {\n      console.log(err)\n    }\n  }\n\n  const handleInputFocus = () => {\n    if (q.length > 0) {\n      setShowOverlay(true)\n    }\n  }\n\n  const handleInput = (event, inputSearch = true) => {\n    setQ(event.target.value)\n    if (event.target.value.length >= 1) {\n      setShowOverlay(true)\n    } else {\n      setShowOverlay(false)\n    }\n  }\n\n  const handleCloseOverlay = () => {\n    setShowOverlay(false)\n    setStartDate(startDate)\n  }\n\n  const handleDatepicker = () => {\n    setDatepickerOpen(!datepickerOpen)\n  }\n\n  const closeDatepicker = () => {\n    setDatepickerOpen(false)\n  }\n\n  const handleOutsideClick = () => {\n    if (!overInput) {\n      setShowOverlay(false)\n      setDatepickerOpen(false)\n    }\n  }\n\n  const icon = SelectionFactoryHelper.getFromSelectionFactory(props.icon)\n\n  return (\n    <section className={`deck--front`}>\n      <header className=\"section-header section-header-search\">\n        <div className=\"section-header__inner\">\n          <div className=\"w--normal\">\n            <div className=\"flight-searchbox\">\n              <div className=\"form\">\n                <div className=\"form__section form__section--light form__section--fat\">\n                  <div className={`form__section__inner ${screenWidth < 768 && showOverlay ? \"is-active\" : \"\"}`}>\n                    <div className=\"form__field form__field--text form__field--text-search form__field--text--no-label is-bound is-filled\">\n                      <span className=\"form__valid\"></span>\n                      <div className=\"headline-container\">\n                        {props.iconUpload ? <img src={props.iconUpload} alt={\"icon\"} /> : icon ? <Svg iconName={icon} /> : \"\"}\n                        <h2>{props.mainText}</h2>\n                      </div>\n                      <input\n                        className=\"form__item\"\n                        id=\"flight-search-input\"\n                        autoComplete=\"off\"\n                        autoCapitalize=\"none\"\n                        name=\"q\"\n                        type=\"text\"\n                        placeholder={screenWidth < 768 ? props.searchBoxPlaceholderMobile : props.searchBoxPlaceholder}\n                        value={q}\n                        onChange={(e) => handleInput(e, true)}\n                        onMouseEnter={() => setOverInput(true)}\n                        onMouseLeave={() => setOverInput(false)}\n                        onFocus={() => handleInputFocus()}\n                      />\n\n                      {screenWidth >= 768 ? (\n                        <button\n                          tabIndex={-1}\n                          className={`search-button ${showOverlay ? \"active\" : \"\"}`}\n                          onClick={showOverlay ? handleCloseOverlay : undefined}\n                        >\n                          <div className={`search-icon`}></div>\n                        </button>\n                      ) : (\n                        \"\"\n                      )}\n                      {screenWidth < 768 && showOverlay ? (\n                        <button\n                          tabIndex={-1}\n                          className={`search-button ${showOverlay ? \"active\" : \"\"}`}\n                          onClick={showOverlay ? handleCloseOverlay : undefined}\n                        >\n                          {/* <Svg iconName={\"close\"} fillColor={\"#071143\"} /> awaiting feedback from CPH on what to do with this. */}\n                        </button>\n                      ) : (\n                        \"\"\n                      )}\n                    </div>\n                    <OutsideClickTrigger onOutsideClick={() => (screenWidth >= 768 ? undefined : handleOutsideClick())}>\n                      <SearchOverlay\n                        {...initialState}\n                        {...props}\n                        handleDirectionChange={handleDirectionChange}\n                        handleDateChange={handleDateChange}\n                        locale={props.locale === \"da\" ? da : enGB}\n                        handleDatepicker={handleDatepicker}\n                        closeDatepicker={closeDatepicker}\n                      />\n                    </OutsideClickTrigger>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div className=\"clear\"></div>\n        </div>\n      </header>\n    </section>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport FlightSearchBar from \"./flight-search-bar-component\"\nimport { isMobile } from \"react-device-detect\"\n\nexport default class FlightSearchBarModule {\n  constructor(elem) {\n    const self = this\n    self.elem = elem\n    self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n    self.locale = (document.body && document.body.dataset.language) || \"da\"\n    self.tabIcons = elem.dataset.tabIcons && JSON.parse(elem.dataset.tabIcons)\n    self.init()\n    return self\n  }\n\n  init() {\n    const self = this\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<FlightSearchBar {...self.modelJson} {...self.tabIcons} locale={self.locale} showTime={isMobile ? false : true} />, self.elem)\n  }\n}\n","import React, { Component, forwardRef } from \"react\"\nimport DatePicker from \"react-datepicker\"\nimport Svg from \"../_svgs/svg\"\nimport { isMobile } from \"react-device-detect\"\n\nexport default class SearchOverlay extends Component {\n  constructor(props) {\n    super(props)\n\n    this.calendar = React.createRef()\n  }\n\n  componentDidMount() {\n    let vh = window.innerHeight * 0.01\n    document.documentElement.style.setProperty(\"--vh\", `${vh}px`)\n    window.addEventListener(\"resize\", () => {\n      let vh = window.innerHeight * 0.01\n      document.documentElement.style.setProperty(\"--vh\", `${vh}px`)\n    })\n  }\n\n  handleDatepicker = () => {\n    const openState = this.calendar.state.open\n    this.calendar.setOpen(!openState)\n    this.props.handleDatepicker()\n  }\n\n  handleOutsideClick = () => {\n    this.calendar.setOpen(false)\n    this.props.closeDatepicker()\n  }\n\n  render() {\n    const CustomInput = forwardRef(({ value }, ref) => (\n      <div className={\"react-datepicker-ignore-onclickoutside\"} onClick={this.handleDatepicker} ref={ref}>\n        {value}\n      </div>\n    ))\n    CustomInput.displayName = \"CustomInput\"\n\n    const shortDateOptions = {\n      month: \"short\",\n      day: \"2-digit\",\n    }\n\n    const shortSearchDate = new Date(this.props.searchDate).toLocaleDateString(this.props.locale.code, shortDateOptions)\n    const noResultsLabel =\n      this.props.noResultsLabel?.replace(\"{input}\", this.props.q).replace(\"{date}\", shortSearchDate) ??\n      `Ingen resultater matchede din søgning på \"${this.props.q}\"`\n    const renderSearchResults = this.props.q && this.props.q.length >= (this.props.minCharsBeforeSearch ?? 2)\n    const isOpen = this.props.q && this.props.q.length > 0\n\n    const formattedDate = this.props.searchDate.toFormat(\"dd / MM / yyyy\")\n    const formattedTime = this.props.searchDate.toFormat(\"HH\")\n\n    const departuresTabIconColor = this.props.direction === \"D\" ? \"#064FC2\" : \"#071143\"\n    const departuresTabIcon = (\n      <Svg\n        iconName={this.props.departuresTabIcon ? this.props.departuresTabIcon : \"planetakeoff\"}\n        fillColor={\"none\"}\n        stroke={departuresTabIconColor}\n      />\n    )\n    const arrivalsTabIconColor = this.props.direction === \"A\" ? \"#064FC2\" : \"#071143\"\n    const arrivalsTabIcon = (\n      <Svg iconName={this.props.arrivalsTabIcon ? this.props.arrivalsTabIcon : \"planelanding\"} fillColor={\"none\"} stroke={arrivalsTabIconColor} />\n    )\n\n    return (\n      <div className=\"form__section__inner\">\n        <div\n          className={`search-overlay ${!isMobile && isOpen && !renderSearchResults ? \"is-open\" : \"\"} ${\n            !isMobile && renderSearchResults ? \"has-results\" : !isMobile && !renderSearchResults ? \"is-closed\" : \"\"\n          } ${this.props.showOverlay ? \"\" : \"hide-overlay\"} ${isMobile && this.props.showOverlay ? \"mobile-open\" : \"\"}`}\n        >\n          {!isMobile && this.props.q.length < (this.props.minCharsBeforeSearch ?? 2) ? (\n            <div className=\"form__section__inner\">\n              <div className=\"search-results helper-text\">\n                <div className=\"flights__table stylish-table\">\n                  <div className=\"stylish-table__row stylish-table__row--body\">\n                    <p>\n                      {this.props.searchHelperText ||\n                        `Du skal minimum skrive ${this.props.minCharsBeforeSearch ?? 2} karakterer for at få resultater.`}\n                    </p>\n                  </div>\n                </div>\n              </div>\n            </div>\n          ) : (\n            <React.Fragment>\n              <div className={`tabs ${isOpen && !renderSearchResults ? \"is-round\" : \"\"} `}>\n                <a\n                  className={`button button--medium has-icon no-shadow ${this.props.direction === \"D\" ? \"is-active\" : \"\"}`}\n                  tabIndex=\"1\"\n                  onClick={() => this.props.handleDirectionChange(\"D\")}\n                  onTouchStart={() => this.props.handleDirectionChange(\"D\")}\n                >\n                  {departuresTabIcon}\n                  <span className=\"text\">{this.props.departuresTabLabel || \"Afgange\"}</span>\n                </a>\n                <a\n                  className={`button button--medium has-icon no-shadow ${this.props.direction === \"A\" ? \"is-active\" : \"\"}`}\n                  tabIndex=\"2\"\n                  onClick={() => this.props.handleDirectionChange(\"A\")}\n                  onTouchStart={() => this.props.handleDirectionChange(\"A\")}\n                >\n                  {arrivalsTabIcon}\n                  <span className=\"text\">{this.props.arrivalsTabLabel || \"Ankomster\"}</span>\n                </a>\n                <div className={`dateselect ${this.props.datepickerOpen ? \"datepicker-open\" : \"\"} ${!isMobile ? \"is-desktop\" : \"\"}`}>\n                  <DatePicker\n                    ref={(r) => (this.calendar = r)}\n                    selected={this.props.searchDate.toJSDate()}\n                    onChange={(date) => this.props.handleDateChange(date)}\n                    showTimeSelect={this.props.showTime || false}\n                    dateFormat=\"dd. MMM yyyy\"\n                    minDate={this.props.minDate.toJSDate()}\n                    minTime={this.props.minTime.toJSDate()}\n                    maxTime={this.props.maxTime.toJSDate()}\n                    locale={this.props.locale}\n                    customInput={<CustomInput calendar={this.calendar} />}\n                    timeCaption={this.props.timeLabel || \"Tidspunkt\"}\n                    timeIntervals={60}\n                    onClickOutside={this.handleOutsideClick}\n                    onCalendarClose={this.props.closeDatepicker}\n                  />\n                </div>\n                <div className=\"clear\"></div>\n              </div>\n              {(isMobile && renderSearchResults) || !isMobile ? (\n                <div\n                  className={`search-results ${isMobile && this.props.datepickerOpen ? \"datepicker-open\" : \"\"} ${\n                    isMobile && this.props.showOverlay ? \"make-sticky\" : \"\"\n                  }`}\n                >\n                  <div className=\"flights__table stylish-table\">\n                    {this.props.flights && this.props.flights.length > 0 ? (\n                      this.props.flights.map((flight, index) => {\n                        const currentUrl = this.props.direction === \"D\" ? this.props.departuresPage : this.props.arrivalsPage\n                        if (\n                          (isMobile && index < (this.props.numberOfFlightsMobile || 10)) ||\n                          (!isMobile && index < (this.props.numberOfFlights || 5))\n                        ) {\n                          const innerFlight = (\n                            <>\n                              <div className=\"stylish-table__cell flights__table__col--time\">\n                                <div>\n                                  {flight.Delayed ? (\n                                    <React.Fragment>\n                                      <span className=\"t--strike\">{`${flight.Time}`}</span>\n                                      <span>\n                                        <em>{`${flight.ExpectedTime}`}</em>\n                                      </span>\n                                    </React.Fragment>\n                                  ) : (\n                                    <span>\n                                      <em>{`${flight.Time}`}</em>\n                                    </span>\n                                  )}\n                                </div>\n                              </div>\n                              <div className=\"stylish-table__cell flights__table__col--destination\">\n                                <div>\n                                  <span className=\"v--desktop-only\">\n                                    <strong>\n                                      <span>{flight.Destination}</span>\n                                    </strong>\n                                  </span>\n                                  <span className=\"v--mobile-only\">\n                                    <strong>{flight.Destination}</strong> ({flight.IataDestination})\n                                  </span>\n                                  <span className=\"v--mobile-only\">{flight.AirlineMobile ? flight.AirlineMobile : flight.Airline}</span>\n                                </div>\n                              </div>\n                              <div className=\"stylish-table__cell flights__table__col--iataDestination v--desktop-only\">\n                                <div>\n                                  <span>{flight.IataDestination}</span>\n                                </div>\n                              </div>\n                              <div className=\"stylish-table__cell flights__table__col--carrier v--desktop-only\">\n                                <div>\n                                  <span>\n                                    <span>{flight.Airline}</span>\n                                  </span>\n                                </div>\n                              </div>\n                              <div className=\"stylish-table__cell flights__table__col--gate\">\n                                <div>\n                                  <span>{flight.Iata}</span>\n                                </div>\n                              </div>\n                            </>\n                          )\n                          if (this.props.flightClickHandler) {\n                            return (\n                              <a\n                                key={index}\n                                className=\"stylish-table__row stylish-table__row--body pointer\"\n                                onClick={(e) => this.props.flightClickHandler(e, flight)}\n                              >\n                                {innerFlight}\n                              </a>\n                            )\n                          } else {\n                            return (\n                              <a\n                                key={index}\n                                className=\"stylish-table__row stylish-table__row--body pointer\"\n                                href={`${currentUrl}/${flight.Iata}?id=${flight.FlightId}`}\n                              >\n                                {innerFlight}\n                              </a>\n                            )\n                          }\n                        }\n                        return\n                      })\n                    ) : (\n                      <div className=\"stylish-table__row stylish-table__row--body no-results\">{noResultsLabel}</div>\n                    )}\n                  </div>\n                  {this.props.flights && this.props.flights.length > 0 ? (\n                    <div className=\"see-more-link\">\n                      {(this.props.direction === \"D\" && this.props.seeMoreFlightsDepartures) ||\n                      (this.props.direction === \"A\" && this.props.seeMoreFlightsArrivals) ? (\n                        <a\n                          href={`${this.props.direction === \"D\" ? this.props.departuresPage : this.props.arrivalsPage}?q=${\n                            this.props.q\n                          }&date=${formattedDate}&time=${formattedTime}`}\n                        >\n                          <Svg iconName={\"arrowright-slim\"} fillColor={\"none\"} />\n                          {this.props.direction === \"D\"\n                            ? this.props.seeMoreFlightsDepartures.replace(\"{input}\", this.props.q)\n                            : this.props.seeMoreFlightsArrivals.replace(\"{input}\", this.props.q)}\n                        </a>\n                      ) : (\n                        \"\"\n                      )}\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                  {this.props.airports && this.props.airports.length > 0 ? (\n                    <div className={\"all-flights\"}>\n                      <h3>{this.props.direction === \"D\" ? this.props.allFlightsTo : this.props.allFlightsFrom}</h3>\n                      {this.props.airports.map((airport, index) => {\n                        if (index >= this.props.allFlightsLimit) return\n                        return (\n                          <a\n                            href={`${this.props.direction === \"D\" ? this.props.departuresPage : this.props.arrivalsPage}?q=${\n                              airport.Iata\n                            }&date=${formattedDate}&time=${formattedTime}`}\n                            key={airport.Iata + index}\n                          >{`${airport.Name} (${airport.Iata})`}</a>\n                        )\n                      })}\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                  {this.props.airlines && this.props.airlines.length > 0 ? (\n                    <div className={\"all-flights\"}>\n                      <h3>{this.props.allFlightsWithCarrier}</h3>\n                      {this.props.airlines.map((airline, index) => {\n                        if (index >= this.props.carriersLimit) return\n                        return (\n                          <a\n                            href={`${this.props.direction === \"D\" ? this.props.departuresPage : this.props.arrivalsPage}?q=${\n                              airline.iata\n                            }&date=${formattedDate}&time=${formattedTime}`}\n                            key={airline.iata + index}\n                          >{`${isMobile && airline.nameMobile ? airline.nameMobile : airline.name} (${airline.iata})`}</a>\n                        )\n                      })}\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n              ) : (\n                \"\"\n              )}\n            </React.Fragment>\n          )}\n        </div>\n      </div>\n    )\n  }\n}\n"],"names":["FlightSearchBar","props","dtLocale","dateHelper","locale","cphTime","DateTime","local","setLocale","setZone","keepLocalTime","_useState","useState","_useState2","_slicedToArray","q","setQ","_useState3","set","milliseconds","seconds","minutes","minus","hours","_useState4","searchDate","setSearchDate","_useState5","_useState6","startDate","setStartDate","_useState7","days","_useState8","minDate","setMinDate","_useState9","_useState10","flights","setFlights","_useState11","_useState12","direction","setDirection","_useState13","_useState14","showOverlay","setShowOverlay","_useState15","_useState16","datepickerOpen","setDatepickerOpen","_useState17","_useState18","airports","setAirports","_useState19","_useState20","airlines","setAirlines","_useState21","_useState22","mobileInputFocus","setMobileInputFocus","_useState23","_useState24","overInput","setOverInput","_useState25","minTime","_useState27","maxTime","initialState","search","_useState29","window","innerWidth","_useState30","screenWidth","setScreenWidth","useEffect","updateScreenWidth","addEventListener","removeEventListener","handleFlightSearchRedirect","event","flightId","document","getElementById","flightIsFocused","activeElement","key","location","href","concat","departuresPage","arrivalsPage","toFormat","handleExitFlightSearchForm","input","querySelector","blur","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_props$minCharsBefore","_cphTime","start","end","flightsData","returns","_flights","_airports","_airlines","wrap","_context","prev","next","length","minCharsBeforeSearch","toUTC","endOf","query","startDateTime","endDateTime","language","Promise","all","getFlights","getAirports","then","responses","map","response","data","catch","err","console","log","sent","getAirlines","stop","apply","arguments","handleDateChange","_ref2","_callee2","dateInput","dateTime","startOfMinDate","startOfNewDate","time","_context2","fromJSDate","startOf","prevState","startOfPrevDate","prevTime","toMillis","_x","Array","from","Set","f","IataAirline","iata","name","find","Airline","nameMobile","AirlineMobile","_ref3","_callee3","res","data_2","_airports2","_context3","endpoints","abrupt","t0","_x2","_ref4","_callee4","_flights2","_context4","_x3","handleCloseOverlay","icon","SelectionFactoryHelper","_jsx","className","children","_jsxs","iconUpload","src","alt","Svg","iconName","mainText","id","autoComplete","autoCapitalize","type","placeholder","searchBoxPlaceholderMobile","searchBoxPlaceholder","value","onChange","e","target","onMouseEnter","onMouseLeave","onFocus","tabIndex","onClick","undefined","OutsideClickTrigger","onOutsideClick","SearchOverlay","_objectSpread","handleDirectionChange","wasFocused","focus","setTimeout","da","enGB","handleDatepicker","closeDatepicker","FlightSearchBarModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","body","tabIcons","init","ReactDOM","showTime","isMobile","_Component","_this","_callSuper","openState","calendar","state","open","setOpen","handleOutsideClick","React","_inherits","vh","innerHeight","documentElement","style","setProperty","_this$props$noResults","_this$props$noResults2","_this$props$minCharsB","_this$props$minCharsB2","_this$props$minCharsB3","_this2","CustomInput","forwardRef","ref","displayName","shortSearchDate","Date","toLocaleDateString","code","month","day","noResultsLabel","replace","renderSearchResults","isOpen","formattedDate","formattedTime","departuresTabIconColor","departuresTabIcon","fillColor","stroke","arrivalsTabIconColor","arrivalsTabIcon","searchHelperText","onTouchStart","departuresTabLabel","arrivalsTabLabel","DatePicker","r","selected","toJSDate","date","showTimeSelect","dateFormat","customInput","timeCaption","timeLabel","timeIntervals","onClickOutside","onCalendarClose","flight","index","currentUrl","numberOfFlightsMobile","numberOfFlights","innerFlight","_Fragment","Delayed","Time","ExpectedTime","Destination","IataDestination","Iata","flightClickHandler","FlightId","seeMoreFlightsDepartures","seeMoreFlightsArrivals","allFlightsTo","allFlightsFrom","airport","allFlightsLimit","Name","allFlightsWithCarrier","airline","carriersLimit","Component"],"sourceRoot":""}