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